X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=doc%2Fprotocols.texi;h=883c2e46c13fb8f8736beb9e182ab6839159cdc1;hb=74419fcf45359a9afc5a26b340ffb41d0edb746c;hp=75a597627023c999624be7c8d1ce63f984266891;hpb=ff2fda57dfb6164346bf1abd5c9c0525df915dbd;p=ffmpeg diff --git a/doc/protocols.texi b/doc/protocols.texi index 75a59762702..883c2e46c13 100644 --- a/doc/protocols.texi +++ b/doc/protocols.texi @@ -218,6 +218,11 @@ application specified in @var{app}, may be prefixed by "mp4:". You can override the value parsed from the URI through the @code{rtmp_playpath} option, too. +@item listen +Act as a server, listening for an incoming connection. + +@item timeout +Maximum time to wait for the incoming connection. Implies listen. @end table Additionally, the following parameters can be set via command line options @@ -259,15 +264,33 @@ playpath. If a live stream of that name is not found, it plays the recorded stream. The other possible values are @code{live} and @code{recorded}. +@item rtmp_pageurl +URL of the web page in which the media was embedded. By default no +value will be sent. + @item rtmp_playpath Stream identifier to play or to publish. This option overrides the parameter specified in the URI. +@item rtmp_subscribe +Name of live stream to subscribe to. By default no value will be sent. +It is only sent if the option is specified or if rtmp_live +is set to live. + +@item rtmp_swfhash +SHA256 hash of the decompressed SWF file (32 bytes). + +@item rtmp_swfsize +Size of the decompressed SWF file, required for SWFVerification. + @item rtmp_swfurl URL of the SWF player for the media. By default no value will be sent. +@item rtmp_swfverify +URL to player swf file, compute hash/size automatically. + @item rtmp_tcurl -URL of the target stream. +URL of the target stream. Defaults to proto://host[:port]/app. @end table @@ -277,6 +300,22 @@ For example to read with @command{ffplay} a multimedia resource named ffplay rtmp://myserver/vod/sample @end example +@section rtmpe + +Encrypted Real-Time Messaging Protocol. + +The Encrypted Real-Time Messaging Protocol (RTMPE) is used for +streaming multimedia content within standard cryptographic primitives, +consisting of Diffie-Hellman key exchange and HMACSHA256, generating +a pair of RC4 keys. + +@section rtmps + +Real-Time Messaging Protocol over a secure SSL connection. + +The Real-Time Messaging Protocol (RTMPS) is used for streaming +multimedia content across an encrypted connection. + @section rtmpt Real-Time Messaging Protocol tunneled through HTTP. @@ -285,6 +324,22 @@ The Real-Time Messaging Protocol tunneled through HTTP (RTMPT) is used for streaming multimedia content within HTTP requests to traverse firewalls. +@section rtmpte + +Encrypted Real-Time Messaging Protocol tunneled through HTTP. + +The Encrypted Real-Time Messaging Protocol tunneled through HTTP (RTMPTE) +is used for streaming multimedia content within HTTP requests to traverse +firewalls. + +@section rtmpts + +Real-Time Messaging Protocol tunneled through HTTPS. + +The Real-Time Messaging Protocol tunneled through HTTPS (RTMPTS) is used +for streaming multimedia content within HTTPS requests to traverse +firewalls. + @section rtmp, rtmpe, rtmps, rtmpt, rtmpte Real-Time Messaging Protocol and its variants supported through @@ -530,6 +585,48 @@ ffplay tcp://@var{hostname}:@var{port} @end table +@section tls + +Transport Layer Security/Secure Sockets Layer + +The required syntax for a TLS/SSL url is: +@example +tls://@var{hostname}:@var{port}[?@var{options}] +@end example + +@table @option + +@item listen +Act as a server, listening for an incoming connection. + +@item cafile=@var{filename} +Certificate authority file. The file must be in OpenSSL PEM format. + +@item cert=@var{filename} +Certificate file. The file must be in OpenSSL PEM format. + +@item key=@var{filename} +Private key file. + +@item verify=@var{0|1} +Verify the peer's certificate. + +@end table + +Example command lines: + +To create a TLS/SSL server that serves an input stream. + +@example +ffmpeg -i @var{input} -f @var{format} tls://@var{hostname}:@var{port}?listen&cert=@var{server.crt}&key=@var{server.key} +@end example + +To play back a stream from the TLS/SSL server using @command{ffplay}: + +@example +ffplay tls://@var{hostname}:@var{port} +@end example + @section udp User Datagram Protocol. @@ -539,16 +636,23 @@ The required syntax for a UDP url is: udp://@var{hostname}:@var{port}[?@var{options}] @end example -@var{options} contains a list of &-seperated options of the form @var{key}=@var{val}. -Follow the list of supported options. +@var{options} contains a list of &-separated options of the form @var{key}=@var{val}. + +In case threading is enabled on the system, a circular buffer is used +to store the incoming data, which allows to reduce loss of data due to +UDP socket buffer overruns. The @var{fifo_size} and +@var{overrun_nonfatal} options are related to this buffer. + +The list of supported options follows. @table @option @item buffer_size=@var{size} -set the UDP buffer size in bytes +Set the UDP socket buffer size in bytes. This is used both for the +receiving and the sending buffer size. @item localport=@var{port} -override the local UDP port to bind with +Override the local UDP port to bind with. @item localaddr=@var{addr} Choose the local IP address. This is useful e.g. if sending multicast @@ -556,13 +660,13 @@ and the host has multiple interfaces, where the user can choose which interface to send on by specifying the IP address of that interface. @item pkt_size=@var{size} -set the size in bytes of UDP packets +Set the size in bytes of UDP packets. @item reuse=@var{1|0} -explicitly allow or disallow reusing UDP sockets +Explicitly allow or disallow reusing UDP sockets. @item ttl=@var{ttl} -set the time to live value (for multicast only) +Set the time to live value (for multicast only). @item connect=@var{1|0} Initialize the UDP socket with @code{connect()}. In this case, the @@ -582,9 +686,17 @@ specified sender IP addresses. @item block=@var{address}[,@var{address}] Ignore packets sent to the multicast group from the specified sender IP addresses. + +@item fifo_size=@var{units} +Set the UDP receiving circular buffer size, expressed as a number of +packets with size of 188 bytes. If not specified defaults to 7*4096. + +@item overrun_nonfatal=@var{1|0} +Survive in case of UDP receiving circular buffer overrun. Default +value is 0. @end table -Some usage examples of the udp protocol with @command{ffmpeg} follow. +Some usage examples of the UDP protocol with @command{ffmpeg} follow. To stream over UDP to a remote endpoint: @example