|
|
|
@@ -90,6 +90,7 @@ typedef struct RTMPContext { |
|
|
|
char* tcurl; ///< url of the target stream |
|
|
|
char* flashver; ///< version of the flash plugin |
|
|
|
char* swfurl; ///< url of the swf player |
|
|
|
char* pageurl; ///< url of the web page |
|
|
|
int server_bw; ///< server bandwidth |
|
|
|
int client_buffer_time; ///< client buffer time in ms |
|
|
|
int flush_interval; ///< number of packets flushed in the same request (RTMPT only) |
|
|
|
@@ -232,6 +233,11 @@ static int gen_connect(URLContext *s, RTMPContext *rt) |
|
|
|
ff_amf_write_number(&p, 252.0); |
|
|
|
ff_amf_write_field_name(&p, "videoFunction"); |
|
|
|
ff_amf_write_number(&p, 1.0); |
|
|
|
|
|
|
|
if (rt->pageurl) { |
|
|
|
ff_amf_write_field_name(&p, "pageUrl"); |
|
|
|
ff_amf_write_string(&p, rt->pageurl); |
|
|
|
} |
|
|
|
} |
|
|
|
ff_amf_write_object_end(&p); |
|
|
|
|
|
|
|
@@ -1498,9 +1504,10 @@ static const AVOption rtmp_options[] = { |
|
|
|
{"any", "both", 0, AV_OPT_TYPE_CONST, {-2}, 0, 0, DEC, "rtmp_live"}, |
|
|
|
{"live", "live stream", 0, AV_OPT_TYPE_CONST, {-1}, 0, 0, DEC, "rtmp_live"}, |
|
|
|
{"recorded", "recorded stream", 0, AV_OPT_TYPE_CONST, {0}, 0, 0, DEC, "rtmp_live"}, |
|
|
|
{"rtmp_pageurl", "URL of the web page in which the media was embedded. By default no value will be sent.", OFFSET(pageurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC}, |
|
|
|
{"rtmp_playpath", "Stream identifier to play or to publish", OFFSET(playpath), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, |
|
|
|
{"rtmp_swfurl", "URL of the SWF player. By default no value will be sent", OFFSET(swfurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, |
|
|
|
{"rtmp_tcurl", "URL of the target stream. Defaults to rtmp://host[:port]/app.", OFFSET(tcurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, |
|
|
|
{"rtmp_tcurl", "URL of the target stream. Defaults to proto://host[:port]/app.", OFFSET(tcurl), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC}, |
|
|
|
{ NULL }, |
|
|
|
}; |
|
|
|
|
|
|
|
|