1@chapter Protocol Options 2@c man begin PROTOCOL OPTIONS 3 4The libavformat library provides some generic global options, which 5can be set on all the protocols. In addition each protocol may support 6so-called private options, which are specific for that component. 7 8Options may be set by specifying -@var{option} @var{value} in the 9FFmpeg tools, or by setting the value explicitly in the 10@code{AVFormatContext} options or using the @file{libavutil/opt.h} API 11for programmatic use. 12 13The list of supported options follows: 14 15@table @option 16@item protocol_whitelist @var{list} (@emph{input}) 17Set a ","-separated list of allowed protocols. "ALL" matches all protocols. Protocols 18prefixed by "-" are disabled. 19All protocols are allowed by default but protocols used by an another 20protocol (nested protocols) are restricted to a per protocol subset. 21@end table 22 23@c man end PROTOCOL OPTIONS 24 25@chapter Protocols 26@c man begin PROTOCOLS 27 28Protocols are configured elements in FFmpeg that enable access to 29resources that require specific protocols. 30 31When you configure your FFmpeg build, all the supported protocols are 32enabled by default. You can list all available ones using the 33configure option "--list-protocols". 34 35You can disable all the protocols using the configure option 36"--disable-protocols", and selectively enable a protocol using the 37option "--enable-protocol=@var{PROTOCOL}", or you can disable a 38particular protocol using the option 39"--disable-protocol=@var{PROTOCOL}". 40 41The option "-protocols" of the ff* tools will display the list of 42supported protocols. 43 44All protocols accept the following options: 45 46@table @option 47@item rw_timeout 48Maximum time to wait for (network) read/write operations to complete, 49in microseconds. 50@end table 51 52A description of the currently available protocols follows. 53 54@section amqp 55 56Advanced Message Queueing Protocol (AMQP) version 0-9-1 is a broker based 57publish-subscribe communication protocol. 58 59FFmpeg must be compiled with --enable-librabbitmq to support AMQP. A separate 60AMQP broker must also be run. An example open-source AMQP broker is RabbitMQ. 61 62After starting the broker, an FFmpeg client may stream data to the broker using 63the command: 64 65@example 66ffmpeg -re -i input -f mpegts amqp://[[user]:[password]@@]hostname[:port] 67@end example 68 69Where hostname and port (default is 5672) is the address of the broker. The 70client may also set a user/password for authentication. The default for both 71fields is "guest". 72 73Muliple subscribers may stream from the broker using the command: 74@example 75ffplay amqp://[[user]:[password]@@]hostname[:port] 76@end example 77 78In RabbitMQ all data published to the broker flows through a specific exchange, 79and each subscribing client has an assigned queue/buffer. When a packet arrives 80at an exchange, it may be copied to a client's queue depending on the exchange 81and routing_key fields. 82 83The following options are supported: 84 85@table @option 86 87@item exchange 88Sets the exchange to use on the broker. RabbitMQ has several predefined 89exchanges: "amq.direct" is the default exchange, where the publisher and 90subscriber must have a matching routing_key; "amq.fanout" is the same as a 91broadcast operation (i.e. the data is forwarded to all queues on the fanout 92exchange independent of the routing_key); and "amq.topic" is similar to 93"amq.direct", but allows for more complex pattern matching (refer to the RabbitMQ 94documentation). 95 96@item routing_key 97Sets the routing key. The default value is "amqp". The routing key is used on 98the "amq.direct" and "amq.topic" exchanges to decide whether packets are written 99to the queue of a subscriber. 100 101@item pkt_size 102Maximum size of each packet sent/received to the broker. Default is 131072. 103Minimum is 4096 and max is any large value (representable by an int). When 104receiving packets, this sets an internal buffer size in FFmpeg. It should be 105equal to or greater than the size of the published packets to the broker. Otherwise 106the received message may be truncated causing decoding errors. 107 108@item connection_timeout 109The timeout in seconds during the initial connection to the broker. The 110default value is rw_timeout, or 5 seconds if rw_timeout is not set. 111 112@end table 113 114@section async 115 116Asynchronous data filling wrapper for input stream. 117 118Fill data in a background thread, to decouple I/O operation from demux thread. 119 120@example 121async:@var{URL} 122async:http://host/resource 123async:cache:http://host/resource 124@end example 125 126@section bluray 127 128Read BluRay playlist. 129 130The accepted options are: 131@table @option 132 133@item angle 134BluRay angle 135 136@item chapter 137Start chapter (1...N) 138 139@item playlist 140Playlist to read (BDMV/PLAYLIST/?????.mpls) 141 142@end table 143 144Examples: 145 146Read longest playlist from BluRay mounted to /mnt/bluray: 147@example 148bluray:/mnt/bluray 149@end example 150 151Read angle 2 of playlist 4 from BluRay mounted to /mnt/bluray, start from chapter 2: 152@example 153-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray 154@end example 155 156@section cache 157 158Caching wrapper for input stream. 159 160Cache the input stream to temporary file. It brings seeking capability to live streams. 161 162@example 163cache:@var{URL} 164@end example 165 166@section concat 167 168Physical concatenation protocol. 169 170Read and seek from many resources in sequence as if they were 171a unique resource. 172 173A URL accepted by this protocol has the syntax: 174@example 175concat:@var{URL1}|@var{URL2}|...|@var{URLN} 176@end example 177 178where @var{URL1}, @var{URL2}, ..., @var{URLN} are the urls of the 179resource to be concatenated, each one possibly specifying a distinct 180protocol. 181 182For example to read a sequence of files @file{split1.mpeg}, 183@file{split2.mpeg}, @file{split3.mpeg} with @command{ffplay} use the 184command: 185@example 186ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg 187@end example 188 189Note that you may need to escape the character "|" which is special for 190many shells. 191 192@section crypto 193 194AES-encrypted stream reading protocol. 195 196The accepted options are: 197@table @option 198@item key 199Set the AES decryption key binary block from given hexadecimal representation. 200 201@item iv 202Set the AES decryption initialization vector binary block from given hexadecimal representation. 203@end table 204 205Accepted URL formats: 206@example 207crypto:@var{URL} 208crypto+@var{URL} 209@end example 210 211@section data 212 213Data in-line in the URI. See @url{http://en.wikipedia.org/wiki/Data_URI_scheme}. 214 215For example, to convert a GIF file given inline with @command{ffmpeg}: 216@example 217ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png 218@end example 219 220@section file 221 222File access protocol. 223 224Read from or write to a file. 225 226A file URL can have the form: 227@example 228file:@var{filename} 229@end example 230 231where @var{filename} is the path of the file to read. 232 233An URL that does not have a protocol prefix will be assumed to be a 234file URL. Depending on the build, an URL that looks like a Windows 235path with the drive letter at the beginning will also be assumed to be 236a file URL (usually not the case in builds for unix-like systems). 237 238For example to read from a file @file{input.mpeg} with @command{ffmpeg} 239use the command: 240@example 241ffmpeg -i file:input.mpeg output.mpeg 242@end example 243 244This protocol accepts the following options: 245 246@table @option 247@item truncate 248Truncate existing files on write, if set to 1. A value of 0 prevents 249truncating. Default value is 1. 250 251@item blocksize 252Set I/O operation maximum block size, in bytes. Default value is 253@code{INT_MAX}, which results in not limiting the requested block size. 254Setting this value reasonably low improves user termination request reaction 255time, which is valuable for files on slow medium. 256 257@item follow 258If set to 1, the protocol will retry reading at the end of the file, allowing 259reading files that still are being written. In order for this to terminate, 260you either need to use the rw_timeout option, or use the interrupt callback 261(for API users). 262 263@item seekable 264Controls if seekability is advertised on the file. 0 means non-seekable, -1 265means auto (seekable for normal files, non-seekable for named pipes). 266 267Many demuxers handle seekable and non-seekable resources differently, 268overriding this might speed up opening certain files at the cost of losing some 269features (e.g. accurate seeking). 270@end table 271 272@section ftp 273 274FTP (File Transfer Protocol). 275 276Read from or write to remote resources using FTP protocol. 277 278Following syntax is required. 279@example 280ftp://[user[:password]@@]server[:port]/path/to/remote/resource.mpeg 281@end example 282 283This protocol accepts the following options. 284 285@table @option 286@item timeout 287Set timeout in microseconds of socket I/O operations used by the underlying low level 288operation. By default it is set to -1, which means that the timeout is 289not specified. 290 291@item ftp-user 292Set a user to be used for authenticating to the FTP server. This is overridden by the 293user in the FTP URL. 294 295@item ftp-password 296Set a password to be used for authenticating to the FTP server. This is overridden by 297the password in the FTP URL, or by @option{ftp-anonymous-password} if no user is set. 298 299@item ftp-anonymous-password 300Password used when login as anonymous user. Typically an e-mail address 301should be used. 302 303@item ftp-write-seekable 304Control seekability of connection during encoding. If set to 1 the 305resource is supposed to be seekable, if set to 0 it is assumed not 306to be seekable. Default value is 0. 307@end table 308 309NOTE: Protocol can be used as output, but it is recommended to not do 310it, unless special care is taken (tests, customized server configuration 311etc.). Different FTP servers behave in different way during seek 312operation. ff* tools may produce incomplete content due to server limitations. 313 314@section gopher 315 316Gopher protocol. 317 318@section hls 319 320Read Apple HTTP Live Streaming compliant segmented stream as 321a uniform one. The M3U8 playlists describing the segments can be 322remote HTTP resources or local files, accessed using the standard 323file protocol. 324The nested protocol is declared by specifying 325"+@var{proto}" after the hls URI scheme name, where @var{proto} 326is either "file" or "http". 327 328@example 329hls+http://host/path/to/remote/resource.m3u8 330hls+file://path/to/local/resource.m3u8 331@end example 332 333Using this protocol is discouraged - the hls demuxer should work 334just as well (if not, please report the issues) and is more complete. 335To use the hls demuxer instead, simply use the direct URLs to the 336m3u8 files. 337 338@section http 339 340HTTP (Hyper Text Transfer Protocol). 341 342This protocol accepts the following options: 343 344@table @option 345@item seekable 346Control seekability of connection. If set to 1 the resource is 347supposed to be seekable, if set to 0 it is assumed not to be seekable, 348if set to -1 it will try to autodetect if it is seekable. Default 349value is -1. 350 351@item chunked_post 352If set to 1 use chunked Transfer-Encoding for posts, default is 1. 353 354@item content_type 355Set a specific content type for the POST messages or for listen mode. 356 357@item http_proxy 358set HTTP proxy to tunnel through e.g. http://example.com:1234 359 360@item headers 361Set custom HTTP headers, can override built in default headers. The 362value must be a string encoding the headers. 363 364@item multiple_requests 365Use persistent connections if set to 1, default is 0. 366 367@item post_data 368Set custom HTTP post data. 369 370@item referer 371Set the Referer header. Include 'Referer: URL' header in HTTP request. 372 373@item user_agent 374Override the User-Agent header. If not specified the protocol will use a 375string describing the libavformat build. ("Lavf/<version>") 376 377@item user-agent 378This is a deprecated option, you can use user_agent instead it. 379 380@item timeout 381Set timeout in microseconds of socket I/O operations used by the underlying low level 382operation. By default it is set to -1, which means that the timeout is 383not specified. 384 385@item reconnect_at_eof 386If set then eof is treated like an error and causes reconnection, this is useful 387for live / endless streams. 388 389@item reconnect_streamed 390If set then even streamed/non seekable streams will be reconnected on errors. 391 392@item reconnect_delay_max 393Sets the maximum delay in seconds after which to give up reconnecting 394 395@item mime_type 396Export the MIME type. 397 398@item http_version 399Exports the HTTP response version number. Usually "1.0" or "1.1". 400 401@item icy 402If set to 1 request ICY (SHOUTcast) metadata from the server. If the server 403supports this, the metadata has to be retrieved by the application by reading 404the @option{icy_metadata_headers} and @option{icy_metadata_packet} options. 405The default is 1. 406 407@item icy_metadata_headers 408If the server supports ICY metadata, this contains the ICY-specific HTTP reply 409headers, separated by newline characters. 410 411@item icy_metadata_packet 412If the server supports ICY metadata, and @option{icy} was set to 1, this 413contains the last non-empty metadata packet sent by the server. It should be 414polled in regular intervals by applications interested in mid-stream metadata 415updates. 416 417@item cookies 418Set the cookies to be sent in future requests. The format of each cookie is the 419same as the value of a Set-Cookie HTTP response field. Multiple cookies can be 420delimited by a newline character. 421 422@item offset 423Set initial byte offset. 424 425@item end_offset 426Try to limit the request to bytes preceding this offset. 427 428@item method 429When used as a client option it sets the HTTP method for the request. 430 431When used as a server option it sets the HTTP method that is going to be 432expected from the client(s). 433If the expected and the received HTTP method do not match the client will 434be given a Bad Request response. 435When unset the HTTP method is not checked for now. This will be replaced by 436autodetection in the future. 437 438@item listen 439If set to 1 enables experimental HTTP server. This can be used to send data when 440used as an output option, or read data from a client with HTTP POST when used as 441an input option. 442If set to 2 enables experimental multi-client HTTP server. This is not yet implemented 443in ffmpeg.c and thus must not be used as a command line option. 444@example 445# Server side (sending): 446ffmpeg -i somefile.ogg -c copy -listen 1 -f ogg http://@var{server}:@var{port} 447 448# Client side (receiving): 449ffmpeg -i http://@var{server}:@var{port} -c copy somefile.ogg 450 451# Client can also be done with wget: 452wget http://@var{server}:@var{port} -O somefile.ogg 453 454# Server side (receiving): 455ffmpeg -listen 1 -i http://@var{server}:@var{port} -c copy somefile.ogg 456 457# Client side (sending): 458ffmpeg -i somefile.ogg -chunked_post 0 -c copy -f ogg http://@var{server}:@var{port} 459 460# Client can also be done with wget: 461wget --post-file=somefile.ogg http://@var{server}:@var{port} 462@end example 463 464@item send_expect_100 465Send an Expect: 100-continue header for POST. If set to 1 it will send, if set 466to 0 it won't, if set to -1 it will try to send if it is applicable. Default 467value is -1. 468 469@end table 470 471@subsection HTTP Cookies 472 473Some HTTP requests will be denied unless cookie values are passed in with the 474request. The @option{cookies} option allows these cookies to be specified. At 475the very least, each cookie must specify a value along with a path and domain. 476HTTP requests that match both the domain and path will automatically include the 477cookie value in the HTTP Cookie header field. Multiple cookies can be delimited 478by a newline. 479 480The required syntax to play a stream specifying a cookie is: 481@example 482ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8 483@end example 484 485@section Icecast 486 487Icecast protocol (stream to Icecast servers) 488 489This protocol accepts the following options: 490 491@table @option 492@item ice_genre 493Set the stream genre. 494 495@item ice_name 496Set the stream name. 497 498@item ice_description 499Set the stream description. 500 501@item ice_url 502Set the stream website URL. 503 504@item ice_public 505Set if the stream should be public. 506The default is 0 (not public). 507 508@item user_agent 509Override the User-Agent header. If not specified a string of the form 510"Lavf/<version>" will be used. 511 512@item password 513Set the Icecast mountpoint password. 514 515@item content_type 516Set the stream content type. This must be set if it is different from 517audio/mpeg. 518 519@item legacy_icecast 520This enables support for Icecast versions < 2.4.0, that do not support the 521HTTP PUT method but the SOURCE method. 522 523@end table 524 525@example 526icecast://[@var{username}[:@var{password}]@@]@var{server}:@var{port}/@var{mountpoint} 527@end example 528 529@section mmst 530 531MMS (Microsoft Media Server) protocol over TCP. 532 533@section mmsh 534 535MMS (Microsoft Media Server) protocol over HTTP. 536 537The required syntax is: 538@example 539mmsh://@var{server}[:@var{port}][/@var{app}][/@var{playpath}] 540@end example 541 542@section md5 543 544MD5 output protocol. 545 546Computes the MD5 hash of the data to be written, and on close writes 547this to the designated output or stdout if none is specified. It can 548be used to test muxers without writing an actual file. 549 550Some examples follow. 551@example 552# Write the MD5 hash of the encoded AVI file to the file output.avi.md5. 553ffmpeg -i input.flv -f avi -y md5:output.avi.md5 554 555# Write the MD5 hash of the encoded AVI file to stdout. 556ffmpeg -i input.flv -f avi -y md5: 557@end example 558 559Note that some formats (typically MOV) require the output protocol to 560be seekable, so they will fail with the MD5 output protocol. 561 562@section pipe 563 564UNIX pipe access protocol. 565 566Read and write from UNIX pipes. 567 568The accepted syntax is: 569@example 570pipe:[@var{number}] 571@end example 572 573@var{number} is the number corresponding to the file descriptor of the 574pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr). If @var{number} 575is not specified, by default the stdout file descriptor will be used 576for writing, stdin for reading. 577 578For example to read from stdin with @command{ffmpeg}: 579@example 580cat test.wav | ffmpeg -i pipe:0 581# ...this is the same as... 582cat test.wav | ffmpeg -i pipe: 583@end example 584 585For writing to stdout with @command{ffmpeg}: 586@example 587ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi 588# ...this is the same as... 589ffmpeg -i test.wav -f avi pipe: | cat > test.avi 590@end example 591 592This protocol accepts the following options: 593 594@table @option 595@item blocksize 596Set I/O operation maximum block size, in bytes. Default value is 597@code{INT_MAX}, which results in not limiting the requested block size. 598Setting this value reasonably low improves user termination request reaction 599time, which is valuable if data transmission is slow. 600@end table 601 602Note that some formats (typically MOV), require the output protocol to 603be seekable, so they will fail with the pipe output protocol. 604 605@section prompeg 606 607Pro-MPEG Code of Practice #3 Release 2 FEC protocol. 608 609The Pro-MPEG CoP#3 FEC is a 2D parity-check forward error correction mechanism 610for MPEG-2 Transport Streams sent over RTP. 611 612This protocol must be used in conjunction with the @code{rtp_mpegts} muxer and 613the @code{rtp} protocol. 614 615The required syntax is: 616@example 617-f rtp_mpegts -fec prompeg=@var{option}=@var{val}... rtp://@var{hostname}:@var{port} 618@end example 619 620The destination UDP ports are @code{port + 2} for the column FEC stream 621and @code{port + 4} for the row FEC stream. 622 623This protocol accepts the following options: 624@table @option 625 626@item l=@var{n} 627The number of columns (4-20, LxD <= 100) 628 629@item d=@var{n} 630The number of rows (4-20, LxD <= 100) 631 632@end table 633 634Example usage: 635 636@example 637-f rtp_mpegts -fec prompeg=l=8:d=4 rtp://@var{hostname}:@var{port} 638@end example 639 640@section rtmp 641 642Real-Time Messaging Protocol. 643 644The Real-Time Messaging Protocol (RTMP) is used for streaming multimedia 645content across a TCP/IP network. 646 647The required syntax is: 648@example 649rtmp://[@var{username}:@var{password}@@]@var{server}[:@var{port}][/@var{app}][/@var{instance}][/@var{playpath}] 650@end example 651 652The accepted parameters are: 653@table @option 654 655@item username 656An optional username (mostly for publishing). 657 658@item password 659An optional password (mostly for publishing). 660 661@item server 662The address of the RTMP server. 663 664@item port 665The number of the TCP port to use (by default is 1935). 666 667@item app 668It is the name of the application to access. It usually corresponds to 669the path where the application is installed on the RTMP server 670(e.g. @file{/ondemand/}, @file{/flash/live/}, etc.). You can override 671the value parsed from the URI through the @code{rtmp_app} option, too. 672 673@item playpath 674It is the path or name of the resource to play with reference to the 675application specified in @var{app}, may be prefixed by "mp4:". You 676can override the value parsed from the URI through the @code{rtmp_playpath} 677option, too. 678 679@item listen 680Act as a server, listening for an incoming connection. 681 682@item timeout 683Maximum time to wait for the incoming connection. Implies listen. 684@end table 685 686Additionally, the following parameters can be set via command line options 687(or in code via @code{AVOption}s): 688@table @option 689 690@item rtmp_app 691Name of application to connect on the RTMP server. This option 692overrides the parameter specified in the URI. 693 694@item rtmp_buffer 695Set the client buffer time in milliseconds. The default is 3000. 696 697@item rtmp_conn 698Extra arbitrary AMF connection parameters, parsed from a string, 699e.g. like @code{B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0}. 700Each value is prefixed by a single character denoting the type, 701B for Boolean, N for number, S for string, O for object, or Z for null, 702followed by a colon. For Booleans the data must be either 0 or 1 for 703FALSE or TRUE, respectively. Likewise for Objects the data must be 0 or 7041 to end or begin an object, respectively. Data items in subobjects may 705be named, by prefixing the type with 'N' and specifying the name before 706the value (i.e. @code{NB:myFlag:1}). This option may be used multiple 707times to construct arbitrary AMF sequences. 708 709@item rtmp_flashver 710Version of the Flash plugin used to run the SWF player. The default 711is LNX 9,0,124,2. (When publishing, the default is FMLE/3.0 (compatible; 712<libavformat version>).) 713 714@item rtmp_flush_interval 715Number of packets flushed in the same request (RTMPT only). The default 716is 10. 717 718@item rtmp_live 719Specify that the media is a live stream. No resuming or seeking in 720live streams is possible. The default value is @code{any}, which means the 721subscriber first tries to play the live stream specified in the 722playpath. If a live stream of that name is not found, it plays the 723recorded stream. The other possible values are @code{live} and 724@code{recorded}. 725 726@item rtmp_pageurl 727URL of the web page in which the media was embedded. By default no 728value will be sent. 729 730@item rtmp_playpath 731Stream identifier to play or to publish. This option overrides the 732parameter specified in the URI. 733 734@item rtmp_subscribe 735Name of live stream to subscribe to. By default no value will be sent. 736It is only sent if the option is specified or if rtmp_live 737is set to live. 738 739@item rtmp_swfhash 740SHA256 hash of the decompressed SWF file (32 bytes). 741 742@item rtmp_swfsize 743Size of the decompressed SWF file, required for SWFVerification. 744 745@item rtmp_swfurl 746URL of the SWF player for the media. By default no value will be sent. 747 748@item rtmp_swfverify 749URL to player swf file, compute hash/size automatically. 750 751@item rtmp_tcurl 752URL of the target stream. Defaults to proto://host[:port]/app. 753 754@end table 755 756For example to read with @command{ffplay} a multimedia resource named 757"sample" from the application "vod" from an RTMP server "myserver": 758@example 759ffplay rtmp://myserver/vod/sample 760@end example 761 762To publish to a password protected server, passing the playpath and 763app names separately: 764@example 765ffmpeg -re -i <input> -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@@myserver/ 766@end example 767 768@section rtmpe 769 770Encrypted Real-Time Messaging Protocol. 771 772The Encrypted Real-Time Messaging Protocol (RTMPE) is used for 773streaming multimedia content within standard cryptographic primitives, 774consisting of Diffie-Hellman key exchange and HMACSHA256, generating 775a pair of RC4 keys. 776 777@section rtmps 778 779Real-Time Messaging Protocol over a secure SSL connection. 780 781The Real-Time Messaging Protocol (RTMPS) is used for streaming 782multimedia content across an encrypted connection. 783 784@section rtmpt 785 786Real-Time Messaging Protocol tunneled through HTTP. 787 788The Real-Time Messaging Protocol tunneled through HTTP (RTMPT) is used 789for streaming multimedia content within HTTP requests to traverse 790firewalls. 791 792@section rtmpte 793 794Encrypted Real-Time Messaging Protocol tunneled through HTTP. 795 796The Encrypted Real-Time Messaging Protocol tunneled through HTTP (RTMPTE) 797is used for streaming multimedia content within HTTP requests to traverse 798firewalls. 799 800@section rtmpts 801 802Real-Time Messaging Protocol tunneled through HTTPS. 803 804The Real-Time Messaging Protocol tunneled through HTTPS (RTMPTS) is used 805for streaming multimedia content within HTTPS requests to traverse 806firewalls. 807 808@section libsmbclient 809 810libsmbclient permits one to manipulate CIFS/SMB network resources. 811 812Following syntax is required. 813 814@example 815smb://[[domain:]user[:password@@]]server[/share[/path[/file]]] 816@end example 817 818This protocol accepts the following options. 819 820@table @option 821@item timeout 822Set timeout in milliseconds of socket I/O operations used by the underlying 823low level operation. By default it is set to -1, which means that the timeout 824is not specified. 825 826@item truncate 827Truncate existing files on write, if set to 1. A value of 0 prevents 828truncating. Default value is 1. 829 830@item workgroup 831Set the workgroup used for making connections. By default workgroup is not specified. 832 833@end table 834 835For more information see: @url{http://www.samba.org/}. 836 837@section libssh 838 839Secure File Transfer Protocol via libssh 840 841Read from or write to remote resources using SFTP protocol. 842 843Following syntax is required. 844 845@example 846sftp://[user[:password]@@]server[:port]/path/to/remote/resource.mpeg 847@end example 848 849This protocol accepts the following options. 850 851@table @option 852@item timeout 853Set timeout of socket I/O operations used by the underlying low level 854operation. By default it is set to -1, which means that the timeout 855is not specified. 856 857@item truncate 858Truncate existing files on write, if set to 1. A value of 0 prevents 859truncating. Default value is 1. 860 861@item private_key 862Specify the path of the file containing private key to use during authorization. 863By default libssh searches for keys in the @file{~/.ssh/} directory. 864 865@end table 866 867Example: Play a file stored on remote server. 868 869@example 870ffplay sftp://user:password@@server_address:22/home/user/resource.mpeg 871@end example 872 873@section librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte 874 875Real-Time Messaging Protocol and its variants supported through 876librtmp. 877 878Requires the presence of the librtmp headers and library during 879configuration. You need to explicitly configure the build with 880"--enable-librtmp". If enabled this will replace the native RTMP 881protocol. 882 883This protocol provides most client functions and a few server 884functions needed to support RTMP, RTMP tunneled in HTTP (RTMPT), 885encrypted RTMP (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled 886variants of these encrypted types (RTMPTE, RTMPTS). 887 888The required syntax is: 889@example 890@var{rtmp_proto}://@var{server}[:@var{port}][/@var{app}][/@var{playpath}] @var{options} 891@end example 892 893where @var{rtmp_proto} is one of the strings "rtmp", "rtmpt", "rtmpe", 894"rtmps", "rtmpte", "rtmpts" corresponding to each RTMP variant, and 895@var{server}, @var{port}, @var{app} and @var{playpath} have the same 896meaning as specified for the RTMP native protocol. 897@var{options} contains a list of space-separated options of the form 898@var{key}=@var{val}. 899 900See the librtmp manual page (man 3 librtmp) for more information. 901 902For example, to stream a file in real-time to an RTMP server using 903@command{ffmpeg}: 904@example 905ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream 906@end example 907 908To play the same stream using @command{ffplay}: 909@example 910ffplay "rtmp://myserver/live/mystream live=1" 911@end example 912 913@section rtp 914 915Real-time Transport Protocol. 916 917The required syntax for an RTP URL is: 918rtp://@var{hostname}[:@var{port}][?@var{option}=@var{val}...] 919 920@var{port} specifies the RTP port to use. 921 922The following URL options are supported: 923 924@table @option 925 926@item ttl=@var{n} 927Set the TTL (Time-To-Live) value (for multicast only). 928 929@item rtcpport=@var{n} 930Set the remote RTCP port to @var{n}. 931 932@item localrtpport=@var{n} 933Set the local RTP port to @var{n}. 934 935@item localrtcpport=@var{n}' 936Set the local RTCP port to @var{n}. 937 938@item pkt_size=@var{n} 939Set max packet size (in bytes) to @var{n}. 940 941@item connect=0|1 942Do a @code{connect()} on the UDP socket (if set to 1) or not (if set 943to 0). 944 945@item sources=@var{ip}[,@var{ip}] 946List allowed source IP addresses. 947 948@item block=@var{ip}[,@var{ip}] 949List disallowed (blocked) source IP addresses. 950 951@item write_to_source=0|1 952Send packets to the source address of the latest received packet (if 953set to 1) or to a default remote address (if set to 0). 954 955@item localport=@var{n} 956Set the local RTP port to @var{n}. 957 958This is a deprecated option. Instead, @option{localrtpport} should be 959used. 960 961@end table 962 963Important notes: 964 965@enumerate 966 967@item 968If @option{rtcpport} is not set the RTCP port will be set to the RTP 969port value plus 1. 970 971@item 972If @option{localrtpport} (the local RTP port) is not set any available 973port will be used for the local RTP and RTCP ports. 974 975@item 976If @option{localrtcpport} (the local RTCP port) is not set it will be 977set to the local RTP port value plus 1. 978@end enumerate 979 980@section rtsp 981 982Real-Time Streaming Protocol. 983 984RTSP is not technically a protocol handler in libavformat, it is a demuxer 985and muxer. The demuxer supports both normal RTSP (with data transferred 986over RTP; this is used by e.g. Apple and Microsoft) and Real-RTSP (with 987data transferred over RDT). 988 989The muxer can be used to send a stream using RTSP ANNOUNCE to a server 990supporting it (currently Darwin Streaming Server and Mischa Spiegelmock's 991@uref{https://github.com/revmischa/rtsp-server, RTSP server}). 992 993The required syntax for a RTSP url is: 994@example 995rtsp://@var{hostname}[:@var{port}]/@var{path} 996@end example 997 998Options can be set on the @command{ffmpeg}/@command{ffplay} command 999line, or set in code via @code{AVOption}s or in 1000@code{avformat_open_input}. 1001 1002The following options are supported. 1003 1004@table @option 1005@item initial_pause 1006Do not start playing the stream immediately if set to 1. Default value 1007is 0. 1008 1009@item rtsp_transport 1010Set RTSP transport protocols. 1011 1012It accepts the following values: 1013@table @samp 1014@item udp 1015Use UDP as lower transport protocol. 1016 1017@item tcp 1018Use TCP (interleaving within the RTSP control channel) as lower 1019transport protocol. 1020 1021@item udp_multicast 1022Use UDP multicast as lower transport protocol. 1023 1024@item http 1025Use HTTP tunneling as lower transport protocol, which is useful for 1026passing proxies. 1027@end table 1028 1029Multiple lower transport protocols may be specified, in that case they are 1030tried one at a time (if the setup of one fails, the next one is tried). 1031For the muxer, only the @samp{tcp} and @samp{udp} options are supported. 1032 1033@item rtsp_flags 1034Set RTSP flags. 1035 1036The following values are accepted: 1037@table @samp 1038@item filter_src 1039Accept packets only from negotiated peer address and port. 1040@item listen 1041Act as a server, listening for an incoming connection. 1042@item prefer_tcp 1043Try TCP for RTP transport first, if TCP is available as RTSP RTP transport. 1044@end table 1045 1046Default value is @samp{none}. 1047 1048@item allowed_media_types 1049Set media types to accept from the server. 1050 1051The following flags are accepted: 1052@table @samp 1053@item video 1054@item audio 1055@item data 1056@end table 1057 1058By default it accepts all media types. 1059 1060@item min_port 1061Set minimum local UDP port. Default value is 5000. 1062 1063@item max_port 1064Set maximum local UDP port. Default value is 65000. 1065 1066@item timeout 1067Set maximum timeout (in seconds) to wait for incoming connections. 1068 1069A value of -1 means infinite (default). This option implies the 1070@option{rtsp_flags} set to @samp{listen}. 1071 1072@item reorder_queue_size 1073Set number of packets to buffer for handling of reordered packets. 1074 1075@item stimeout 1076Set socket TCP I/O timeout in microseconds. 1077 1078@item user-agent 1079Override User-Agent header. If not specified, it defaults to the 1080libavformat identifier string. 1081@end table 1082 1083When receiving data over UDP, the demuxer tries to reorder received packets 1084(since they may arrive out of order, or packets may get lost totally). This 1085can be disabled by setting the maximum demuxing delay to zero (via 1086the @code{max_delay} field of AVFormatContext). 1087 1088When watching multi-bitrate Real-RTSP streams with @command{ffplay}, the 1089streams to display can be chosen with @code{-vst} @var{n} and 1090@code{-ast} @var{n} for video and audio respectively, and can be switched 1091on the fly by pressing @code{v} and @code{a}. 1092 1093@subsection Examples 1094 1095The following examples all make use of the @command{ffplay} and 1096@command{ffmpeg} tools. 1097 1098@itemize 1099@item 1100Watch a stream over UDP, with a max reordering delay of 0.5 seconds: 1101@example 1102ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4 1103@end example 1104 1105@item 1106Watch a stream tunneled over HTTP: 1107@example 1108ffplay -rtsp_transport http rtsp://server/video.mp4 1109@end example 1110 1111@item 1112Send a stream in realtime to a RTSP server, for others to watch: 1113@example 1114ffmpeg -re -i @var{input} -f rtsp -muxdelay 0.1 rtsp://server/live.sdp 1115@end example 1116 1117@item 1118Receive a stream in realtime: 1119@example 1120ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp @var{output} 1121@end example 1122@end itemize 1123 1124@section sap 1125 1126Session Announcement Protocol (RFC 2974). This is not technically a 1127protocol handler in libavformat, it is a muxer and demuxer. 1128It is used for signalling of RTP streams, by announcing the SDP for the 1129streams regularly on a separate port. 1130 1131@subsection Muxer 1132 1133The syntax for a SAP url given to the muxer is: 1134@example 1135sap://@var{destination}[:@var{port}][?@var{options}] 1136@end example 1137 1138The RTP packets are sent to @var{destination} on port @var{port}, 1139or to port 5004 if no port is specified. 1140@var{options} is a @code{&}-separated list. The following options 1141are supported: 1142 1143@table @option 1144 1145@item announce_addr=@var{address} 1146Specify the destination IP address for sending the announcements to. 1147If omitted, the announcements are sent to the commonly used SAP 1148announcement multicast address 224.2.127.254 (sap.mcast.net), or 1149ff0e::2:7ffe if @var{destination} is an IPv6 address. 1150 1151@item announce_port=@var{port} 1152Specify the port to send the announcements on, defaults to 11539875 if not specified. 1154 1155@item ttl=@var{ttl} 1156Specify the time to live value for the announcements and RTP packets, 1157defaults to 255. 1158 1159@item same_port=@var{0|1} 1160If set to 1, send all RTP streams on the same port pair. If zero (the 1161default), all streams are sent on unique ports, with each stream on a 1162port 2 numbers higher than the previous. 1163VLC/Live555 requires this to be set to 1, to be able to receive the stream. 1164The RTP stack in libavformat for receiving requires all streams to be sent 1165on unique ports. 1166@end table 1167 1168Example command lines follow. 1169 1170To broadcast a stream on the local subnet, for watching in VLC: 1171 1172@example 1173ffmpeg -re -i @var{input} -f sap sap://224.0.0.255?same_port=1 1174@end example 1175 1176Similarly, for watching in @command{ffplay}: 1177 1178@example 1179ffmpeg -re -i @var{input} -f sap sap://224.0.0.255 1180@end example 1181 1182And for watching in @command{ffplay}, over IPv6: 1183 1184@example 1185ffmpeg -re -i @var{input} -f sap sap://[ff0e::1:2:3:4] 1186@end example 1187 1188@subsection Demuxer 1189 1190The syntax for a SAP url given to the demuxer is: 1191@example 1192sap://[@var{address}][:@var{port}] 1193@end example 1194 1195@var{address} is the multicast address to listen for announcements on, 1196if omitted, the default 224.2.127.254 (sap.mcast.net) is used. @var{port} 1197is the port that is listened on, 9875 if omitted. 1198 1199The demuxers listens for announcements on the given address and port. 1200Once an announcement is received, it tries to receive that particular stream. 1201 1202Example command lines follow. 1203 1204To play back the first stream announced on the normal SAP multicast address: 1205 1206@example 1207ffplay sap:// 1208@end example 1209 1210To play back the first stream announced on one the default IPv6 SAP multicast address: 1211 1212@example 1213ffplay sap://[ff0e::2:7ffe] 1214@end example 1215 1216@section sctp 1217 1218Stream Control Transmission Protocol. 1219 1220The accepted URL syntax is: 1221@example 1222sctp://@var{host}:@var{port}[?@var{options}] 1223@end example 1224 1225The protocol accepts the following options: 1226@table @option 1227@item listen 1228If set to any value, listen for an incoming connection. Outgoing connection is done by default. 1229 1230@item max_streams 1231Set the maximum number of streams. By default no limit is set. 1232@end table 1233 1234@section srt 1235 1236Haivision Secure Reliable Transport Protocol via libsrt. 1237 1238The supported syntax for a SRT URL is: 1239@example 1240srt://@var{hostname}:@var{port}[?@var{options}] 1241@end example 1242 1243@var{options} contains a list of &-separated options of the form 1244@var{key}=@var{val}. 1245 1246or 1247 1248@example 1249@var{options} srt://@var{hostname}:@var{port} 1250@end example 1251 1252@var{options} contains a list of '-@var{key} @var{val}' 1253options. 1254 1255This protocol accepts the following options. 1256 1257@table @option 1258@item connect_timeout=@var{milliseconds} 1259Connection timeout; SRT cannot connect for RTT > 1500 msec 1260(2 handshake exchanges) with the default connect timeout of 12613 seconds. This option applies to the caller and rendezvous 1262connection modes. The connect timeout is 10 times the value 1263set for the rendezvous mode (which can be used as a 1264workaround for this connection problem with earlier versions). 1265 1266@item ffs=@var{bytes} 1267Flight Flag Size (Window Size), in bytes. FFS is actually an 1268internal parameter and you should set it to not less than 1269@option{recv_buffer_size} and @option{mss}. The default value 1270is relatively large, therefore unless you set a very large receiver buffer, 1271you do not need to change this option. Default value is 25600. 1272 1273@item inputbw=@var{bytes/seconds} 1274Sender nominal input rate, in bytes per seconds. Used along with 1275@option{oheadbw}, when @option{maxbw} is set to relative (0), to 1276calculate maximum sending rate when recovery packets are sent 1277along with the main media stream: 1278@option{inputbw} * (100 + @option{oheadbw}) / 100 1279if @option{inputbw} is not set while @option{maxbw} is set to 1280relative (0), the actual input rate is evaluated inside 1281the library. Default value is 0. 1282 1283@item iptos=@var{tos} 1284IP Type of Service. Applies to sender only. Default value is 0xB8. 1285 1286@item ipttl=@var{ttl} 1287IP Time To Live. Applies to sender only. Default value is 64. 1288 1289@item latency=@var{microseconds} 1290Timestamp-based Packet Delivery Delay. 1291Used to absorb bursts of missed packet retransmissions. 1292This flag sets both @option{rcvlatency} and @option{peerlatency} 1293to the same value. Note that prior to version 1.3.0 1294this is the only flag to set the latency, however 1295this is effectively equivalent to setting @option{peerlatency}, 1296when side is sender and @option{rcvlatency} 1297when side is receiver, and the bidirectional stream 1298sending is not supported. 1299 1300@item listen_timeout=@var{microseconds} 1301Set socket listen timeout. 1302 1303@item maxbw=@var{bytes/seconds} 1304Maximum sending bandwidth, in bytes per seconds. 1305-1 infinite (CSRTCC limit is 30mbps) 13060 relative to input rate (see @option{inputbw}) 1307>0 absolute limit value 1308Default value is 0 (relative) 1309 1310@item mode=@var{caller|listener|rendezvous} 1311Connection mode. 1312@option{caller} opens client connection. 1313@option{listener} starts server to listen for incoming connections. 1314@option{rendezvous} use Rendez-Vous connection mode. 1315Default value is caller. 1316 1317@item mss=@var{bytes} 1318Maximum Segment Size, in bytes. Used for buffer allocation 1319and rate calculation using a packet counter assuming fully 1320filled packets. The smallest MSS between the peers is 1321used. This is 1500 by default in the overall internet. 1322This is the maximum size of the UDP packet and can be 1323only decreased, unless you have some unusual dedicated 1324network settings. Default value is 1500. 1325 1326@item nakreport=@var{1|0} 1327If set to 1, Receiver will send `UMSG_LOSSREPORT` messages 1328periodically until a lost packet is retransmitted or 1329intentionally dropped. Default value is 1. 1330 1331@item oheadbw=@var{percents} 1332Recovery bandwidth overhead above input rate, in percents. 1333See @option{inputbw}. Default value is 25%. 1334 1335@item passphrase=@var{string} 1336HaiCrypt Encryption/Decryption Passphrase string, length 1337from 10 to 79 characters. The passphrase is the shared 1338secret between the sender and the receiver. It is used 1339to generate the Key Encrypting Key using PBKDF2 1340(Password-Based Key Derivation Function). It is used 1341only if @option{pbkeylen} is non-zero. It is used on 1342the receiver only if the received data is encrypted. 1343The configured passphrase cannot be recovered (write-only). 1344 1345@item enforced_encryption=@var{1|0} 1346If true, both connection parties must have the same password 1347set (including empty, that is, with no encryption). If the 1348password doesn't match or only one side is unencrypted, 1349the connection is rejected. Default is true. 1350 1351@item kmrefreshrate=@var{packets} 1352The number of packets to be transmitted after which the 1353encryption key is switched to a new key. Default is -1. 1354-1 means auto (0x1000000 in srt library). The range for 1355this option is integers in the 0 - @code{INT_MAX}. 1356 1357@item kmpreannounce=@var{packets} 1358The interval between when a new encryption key is sent and 1359when switchover occurs. This value also applies to the 1360subsequent interval between when switchover occurs and 1361when the old encryption key is decommissioned. Default is -1. 1362-1 means auto (0x1000 in srt library). The range for 1363this option is integers in the 0 - @code{INT_MAX}. 1364 1365@item payload_size=@var{bytes} 1366Sets the maximum declared size of a packet transferred 1367during the single call to the sending function in Live 1368mode. Use 0 if this value isn't used (which is default in 1369file mode). 1370Default is -1 (automatic), which typically means MPEG-TS; 1371if you are going to use SRT 1372to send any different kind of payload, such as, for example, 1373wrapping a live stream in very small frames, then you can 1374use a bigger maximum frame size, though not greater than 13751456 bytes. 1376 1377@item pkt_size=@var{bytes} 1378Alias for @samp{payload_size}. 1379 1380@item peerlatency=@var{microseconds} 1381The latency value (as described in @option{rcvlatency}) that is 1382set by the sender side as a minimum value for the receiver. 1383 1384@item pbkeylen=@var{bytes} 1385Sender encryption key length, in bytes. 1386Only can be set to 0, 16, 24 and 32. 1387Enable sender encryption if not 0. 1388Not required on receiver (set to 0), 1389key size obtained from sender in HaiCrypt handshake. 1390Default value is 0. 1391 1392@item rcvlatency=@var{microseconds} 1393The time that should elapse since the moment when the 1394packet was sent and the moment when it's delivered to 1395the receiver application in the receiving function. 1396This time should be a buffer time large enough to cover 1397the time spent for sending, unexpectedly extended RTT 1398time, and the time needed to retransmit the lost UDP 1399packet. The effective latency value will be the maximum 1400of this options' value and the value of @option{peerlatency} 1401set by the peer side. Before version 1.3.0 this option 1402is only available as @option{latency}. 1403 1404@item recv_buffer_size=@var{bytes} 1405Set UDP receive buffer size, expressed in bytes. 1406 1407@item send_buffer_size=@var{bytes} 1408Set UDP send buffer size, expressed in bytes. 1409 1410@item timeout=@var{microseconds} 1411Set raise error timeouts for read, write and connect operations. Note that the 1412SRT library has internal timeouts which can be controlled separately, the 1413value set here is only a cap on those. 1414 1415@item tlpktdrop=@var{1|0} 1416Too-late Packet Drop. When enabled on receiver, it skips 1417missing packets that have not been delivered in time and 1418delivers the following packets to the application when 1419their time-to-play has come. It also sends a fake ACK to 1420the sender. When enabled on sender and enabled on the 1421receiving peer, the sender drops the older packets that 1422have no chance of being delivered in time. It was 1423automatically enabled in the sender if the receiver 1424supports it. 1425 1426@item sndbuf=@var{bytes} 1427Set send buffer size, expressed in bytes. 1428 1429@item rcvbuf=@var{bytes} 1430Set receive buffer size, expressed in bytes. 1431 1432Receive buffer must not be greater than @option{ffs}. 1433 1434@item lossmaxttl=@var{packets} 1435The value up to which the Reorder Tolerance may grow. When 1436Reorder Tolerance is > 0, then packet loss report is delayed 1437until that number of packets come in. Reorder Tolerance 1438increases every time a "belated" packet has come, but it 1439wasn't due to retransmission (that is, when UDP packets tend 1440to come out of order), with the difference between the latest 1441sequence and this packet's sequence, and not more than the 1442value of this option. By default it's 0, which means that this 1443mechanism is turned off, and the loss report is always sent 1444immediately upon experiencing a "gap" in sequences. 1445 1446@item minversion 1447The minimum SRT version that is required from the peer. A connection 1448to a peer that does not satisfy the minimum version requirement 1449will be rejected. 1450 1451The version format in hex is 0xXXYYZZ for x.y.z in human readable 1452form. 1453 1454@item streamid=@var{string} 1455A string limited to 512 characters that can be set on the socket prior 1456to connecting. This stream ID will be able to be retrieved by the 1457listener side from the socket that is returned from srt_accept and 1458was connected by a socket with that set stream ID. SRT does not enforce 1459any special interpretation of the contents of this string. 1460This option doesn’t make sense in Rendezvous connection; the result 1461might be that simply one side will override the value from the other 1462side and it’s the matter of luck which one would win 1463 1464@item smoother=@var{live|file} 1465The type of Smoother used for the transmission for that socket, which 1466is responsible for the transmission and congestion control. The Smoother 1467type must be exactly the same on both connecting parties, otherwise 1468the connection is rejected. 1469 1470@item messageapi=@var{1|0} 1471When set, this socket uses the Message API, otherwise it uses Buffer 1472API. Note that in live mode (see @option{transtype}) there’s only 1473message API available. In File mode you can chose to use one of two modes: 1474 1475Stream API (default, when this option is false). In this mode you may 1476send as many data as you wish with one sending instruction, or even use 1477dedicated functions that read directly from a file. The internal facility 1478will take care of any speed and congestion control. When receiving, you 1479can also receive as many data as desired, the data not extracted will be 1480waiting for the next call. There is no boundary between data portions in 1481the Stream mode. 1482 1483Message API. In this mode your single sending instruction passes exactly 1484one piece of data that has boundaries (a message). Contrary to Live mode, 1485this message may span across multiple UDP packets and the only size 1486limitation is that it shall fit as a whole in the sending buffer. The 1487receiver shall use as large buffer as necessary to receive the message, 1488otherwise the message will not be given up. When the message is not 1489complete (not all packets received or there was a packet loss) it will 1490not be given up. 1491 1492@item transtype=@var{live|file} 1493Sets the transmission type for the socket, in particular, setting this 1494option sets multiple other parameters to their default values as required 1495for a particular transmission type. 1496 1497live: Set options as for live transmission. In this mode, you should 1498send by one sending instruction only so many data that fit in one UDP packet, 1499and limited to the value defined first in @option{payload_size} (1316 is 1500default in this mode). There is no speed control in this mode, only the 1501bandwidth control, if configured, in order to not exceed the bandwidth with 1502the overhead transmission (retransmitted and control packets). 1503 1504file: Set options as for non-live transmission. See @option{messageapi} 1505for further explanations 1506 1507@item linger=@var{seconds} 1508The number of seconds that the socket waits for unsent data when closing. 1509Default is -1. -1 means auto (off with 0 seconds in live mode, on with 180 1510seconds in file mode). The range for this option is integers in the 15110 - @code{INT_MAX}. 1512 1513@end table 1514 1515For more information see: @url{https://github.com/Haivision/srt}. 1516 1517@section srtp 1518 1519Secure Real-time Transport Protocol. 1520 1521The accepted options are: 1522@table @option 1523@item srtp_in_suite 1524@item srtp_out_suite 1525Select input and output encoding suites. 1526 1527Supported values: 1528@table @samp 1529@item AES_CM_128_HMAC_SHA1_80 1530@item SRTP_AES128_CM_HMAC_SHA1_80 1531@item AES_CM_128_HMAC_SHA1_32 1532@item SRTP_AES128_CM_HMAC_SHA1_32 1533@end table 1534 1535@item srtp_in_params 1536@item srtp_out_params 1537Set input and output encoding parameters, which are expressed by a 1538base64-encoded representation of a binary block. The first 16 bytes of 1539this binary block are used as master key, the following 14 bytes are 1540used as master salt. 1541@end table 1542 1543@section subfile 1544 1545Virtually extract a segment of a file or another stream. 1546The underlying stream must be seekable. 1547 1548Accepted options: 1549@table @option 1550@item start 1551Start offset of the extracted segment, in bytes. 1552@item end 1553End offset of the extracted segment, in bytes. 1554If set to 0, extract till end of file. 1555@end table 1556 1557Examples: 1558 1559Extract a chapter from a DVD VOB file (start and end sectors obtained 1560externally and multiplied by 2048): 1561@example 1562subfile,,start,153391104,end,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB 1563@end example 1564 1565Play an AVI file directly from a TAR archive: 1566@example 1567subfile,,start,183241728,end,366490624,,:archive.tar 1568@end example 1569 1570Play a MPEG-TS file from start offset till end: 1571@example 1572subfile,,start,32815239,end,0,,:video.ts 1573@end example 1574 1575@section tee 1576 1577Writes the output to multiple protocols. The individual outputs are separated 1578by | 1579 1580@example 1581tee:file://path/to/local/this.avi|file://path/to/local/that.avi 1582@end example 1583 1584@section tcp 1585 1586Transmission Control Protocol. 1587 1588The required syntax for a TCP url is: 1589@example 1590tcp://@var{hostname}:@var{port}[?@var{options}] 1591@end example 1592 1593@var{options} contains a list of &-separated options of the form 1594@var{key}=@var{val}. 1595 1596The list of supported options follows. 1597 1598@table @option 1599@item listen=@var{1|0} 1600Listen for an incoming connection. Default value is 0. 1601 1602@item timeout=@var{microseconds} 1603Set raise error timeout, expressed in microseconds. 1604 1605This option is only relevant in read mode: if no data arrived in more 1606than this time interval, raise error. 1607 1608@item listen_timeout=@var{milliseconds} 1609Set listen timeout, expressed in milliseconds. 1610 1611@item recv_buffer_size=@var{bytes} 1612Set receive buffer size, expressed bytes. 1613 1614@item send_buffer_size=@var{bytes} 1615Set send buffer size, expressed bytes. 1616 1617@item tcp_nodelay=@var{1|0} 1618Set TCP_NODELAY to disable Nagle's algorithm. Default value is 0. 1619 1620@item tcp_mss=@var{bytes} 1621Set maximum segment size for outgoing TCP packets, expressed in bytes. 1622@end table 1623 1624The following example shows how to setup a listening TCP connection 1625with @command{ffmpeg}, which is then accessed with @command{ffplay}: 1626@example 1627ffmpeg -i @var{input} -f @var{format} tcp://@var{hostname}:@var{port}?listen 1628ffplay tcp://@var{hostname}:@var{port} 1629@end example 1630 1631@section tls 1632 1633Transport Layer Security (TLS) / Secure Sockets Layer (SSL) 1634 1635The required syntax for a TLS/SSL url is: 1636@example 1637tls://@var{hostname}:@var{port}[?@var{options}] 1638@end example 1639 1640The following parameters can be set via command line options 1641(or in code via @code{AVOption}s): 1642 1643@table @option 1644 1645@item ca_file, cafile=@var{filename} 1646A file containing certificate authority (CA) root certificates to treat 1647as trusted. If the linked TLS library contains a default this might not 1648need to be specified for verification to work, but not all libraries and 1649setups have defaults built in. 1650The file must be in OpenSSL PEM format. 1651 1652@item tls_verify=@var{1|0} 1653If enabled, try to verify the peer that we are communicating with. 1654Note, if using OpenSSL, this currently only makes sure that the 1655peer certificate is signed by one of the root certificates in the CA 1656database, but it does not validate that the certificate actually 1657matches the host name we are trying to connect to. (With other backends, 1658the host name is validated as well.) 1659 1660This is disabled by default since it requires a CA database to be 1661provided by the caller in many cases. 1662 1663@item cert_file, cert=@var{filename} 1664A file containing a certificate to use in the handshake with the peer. 1665(When operating as server, in listen mode, this is more often required 1666by the peer, while client certificates only are mandated in certain 1667setups.) 1668 1669@item key_file, key=@var{filename} 1670A file containing the private key for the certificate. 1671 1672@item listen=@var{1|0} 1673If enabled, listen for connections on the provided port, and assume 1674the server role in the handshake instead of the client role. 1675 1676@end table 1677 1678Example command lines: 1679 1680To create a TLS/SSL server that serves an input stream. 1681 1682@example 1683ffmpeg -i @var{input} -f @var{format} tls://@var{hostname}:@var{port}?listen&cert=@var{server.crt}&key=@var{server.key} 1684@end example 1685 1686To play back a stream from the TLS/SSL server using @command{ffplay}: 1687 1688@example 1689ffplay tls://@var{hostname}:@var{port} 1690@end example 1691 1692@section udp 1693 1694User Datagram Protocol. 1695 1696The required syntax for an UDP URL is: 1697@example 1698udp://@var{hostname}:@var{port}[?@var{options}] 1699@end example 1700 1701@var{options} contains a list of &-separated options of the form @var{key}=@var{val}. 1702 1703In case threading is enabled on the system, a circular buffer is used 1704to store the incoming data, which allows one to reduce loss of data due to 1705UDP socket buffer overruns. The @var{fifo_size} and 1706@var{overrun_nonfatal} options are related to this buffer. 1707 1708The list of supported options follows. 1709 1710@table @option 1711@item buffer_size=@var{size} 1712Set the UDP maximum socket buffer size in bytes. This is used to set either 1713the receive or send buffer size, depending on what the socket is used for. 1714Default is 32 KB for output, 384 KB for input. See also @var{fifo_size}. 1715 1716@item bitrate=@var{bitrate} 1717If set to nonzero, the output will have the specified constant bitrate if the 1718input has enough packets to sustain it. 1719 1720@item burst_bits=@var{bits} 1721When using @var{bitrate} this specifies the maximum number of bits in 1722packet bursts. 1723 1724@item localport=@var{port} 1725Override the local UDP port to bind with. 1726 1727@item localaddr=@var{addr} 1728Local IP address of a network interface used for sending packets or joining 1729multicast groups. 1730 1731@item pkt_size=@var{size} 1732Set the size in bytes of UDP packets. 1733 1734@item reuse=@var{1|0} 1735Explicitly allow or disallow reusing UDP sockets. 1736 1737@item ttl=@var{ttl} 1738Set the time to live value (for multicast only). 1739 1740@item connect=@var{1|0} 1741Initialize the UDP socket with @code{connect()}. In this case, the 1742destination address can't be changed with ff_udp_set_remote_url later. 1743If the destination address isn't known at the start, this option can 1744be specified in ff_udp_set_remote_url, too. 1745This allows finding out the source address for the packets with getsockname, 1746and makes writes return with AVERROR(ECONNREFUSED) if "destination 1747unreachable" is received. 1748For receiving, this gives the benefit of only receiving packets from 1749the specified peer address/port. 1750 1751@item sources=@var{address}[,@var{address}] 1752Only receive packets sent from the specified addresses. In case of multicast, 1753also subscribe to multicast traffic coming from these addresses only. 1754 1755@item block=@var{address}[,@var{address}] 1756Ignore packets sent from the specified addresses. In case of multicast, also 1757exclude the source addresses in the multicast subscription. 1758 1759@item fifo_size=@var{units} 1760Set the UDP receiving circular buffer size, expressed as a number of 1761packets with size of 188 bytes. If not specified defaults to 7*4096. 1762 1763@item overrun_nonfatal=@var{1|0} 1764Survive in case of UDP receiving circular buffer overrun. Default 1765value is 0. 1766 1767@item timeout=@var{microseconds} 1768Set raise error timeout, expressed in microseconds. 1769 1770This option is only relevant in read mode: if no data arrived in more 1771than this time interval, raise error. 1772 1773@item broadcast=@var{1|0} 1774Explicitly allow or disallow UDP broadcasting. 1775 1776Note that broadcasting may not work properly on networks having 1777a broadcast storm protection. 1778@end table 1779 1780@subsection Examples 1781 1782@itemize 1783@item 1784Use @command{ffmpeg} to stream over UDP to a remote endpoint: 1785@example 1786ffmpeg -i @var{input} -f @var{format} udp://@var{hostname}:@var{port} 1787@end example 1788 1789@item 1790Use @command{ffmpeg} to stream in mpegts format over UDP using 188 1791sized UDP packets, using a large input buffer: 1792@example 1793ffmpeg -i @var{input} -f mpegts udp://@var{hostname}:@var{port}?pkt_size=188&buffer_size=65535 1794@end example 1795 1796@item 1797Use @command{ffmpeg} to receive over UDP from a remote endpoint: 1798@example 1799ffmpeg -i udp://[@var{multicast-address}]:@var{port} ... 1800@end example 1801@end itemize 1802 1803@section unix 1804 1805Unix local socket 1806 1807The required syntax for a Unix socket URL is: 1808 1809@example 1810unix://@var{filepath} 1811@end example 1812 1813The following parameters can be set via command line options 1814(or in code via @code{AVOption}s): 1815 1816@table @option 1817@item timeout 1818Timeout in ms. 1819@item listen 1820Create the Unix socket in listening mode. 1821@end table 1822 1823@section zmq 1824 1825ZeroMQ asynchronous messaging using the libzmq library. 1826 1827This library supports unicast streaming to multiple clients without relying on 1828an external server. 1829 1830The required syntax for streaming or connecting to a stream is: 1831@example 1832zmq:tcp://ip-address:port 1833@end example 1834 1835Example: 1836Create a localhost stream on port 5555: 1837@example 1838ffmpeg -re -i input -f mpegts zmq:tcp://127.0.0.1:5555 1839@end example 1840 1841Multiple clients may connect to the stream using: 1842@example 1843ffplay zmq:tcp://127.0.0.1:5555 1844@end example 1845 1846Streaming to multiple clients is implemented using a ZeroMQ Pub-Sub pattern. 1847The server side binds to a port and publishes data. Clients connect to the 1848server (via IP address/port) and subscribe to the stream. The order in which 1849the server and client start generally does not matter. 1850 1851ffmpeg must be compiled with the --enable-libzmq option to support 1852this protocol. 1853 1854Options can be set on the @command{ffmpeg}/@command{ffplay} command 1855line. The following options are supported: 1856 1857@table @option 1858 1859@item pkt_size 1860Forces the maximum packet size for sending/receiving data. The default value is 1861131,072 bytes. On the server side, this sets the maximum size of sent packets 1862via ZeroMQ. On the clients, it sets an internal buffer size for receiving 1863packets. Note that pkt_size on the clients should be equal to or greater than 1864pkt_size on the server. Otherwise the received message may be truncated causing 1865decoding errors. 1866 1867@end table 1868 1869 1870@c man end PROTOCOLS 1871