1\input texinfo @c -*- texinfo -*- 2 3@settitle ffserver Documentation 4@titlepage 5@center @titlefont{ffserver Documentation} 6@end titlepage 7 8@top 9 10@contents 11 12@chapter Synopsis 13 14ffserver [@var{options}] 15 16@chapter Description 17@c man begin DESCRIPTION 18 19@command{ffserver} is a streaming server for both audio and video. 20It supports several live feeds, streaming from files and time shifting 21on live feeds. You can seek to positions in the past on each live 22feed, provided you specify a big enough feed storage. 23 24@command{ffserver} is configured through a configuration file, which 25is read at startup. If not explicitly specified, it will read from 26@file{/etc/ffserver.conf}. 27 28@command{ffserver} receives prerecorded files or FFM streams from some 29@command{ffmpeg} instance as input, then streams them over 30RTP/RTSP/HTTP. 31 32An @command{ffserver} instance will listen on some port as specified 33in the configuration file. You can launch one or more instances of 34@command{ffmpeg} and send one or more FFM streams to the port where 35ffserver is expecting to receive them. Alternately, you can make 36@command{ffserver} launch such @command{ffmpeg} instances at startup. 37 38Input streams are called feeds, and each one is specified by a 39@code{<Feed>} section in the configuration file. 40 41For each feed you can have different output streams in various 42formats, each one specified by a @code{<Stream>} section in the 43configuration file. 44 45@chapter Detailed description 46 47@command{ffserver} works by forwarding streams encoded by 48@command{ffmpeg}, or pre-recorded streams which are read from disk. 49 50Precisely, @command{ffserver} acts as an HTTP server, accepting POST 51requests from @command{ffmpeg} to acquire the stream to publish, and 52serving RTSP clients or HTTP clients GET requests with the stream 53media content. 54 55A feed is an @ref{FFM} stream created by @command{ffmpeg}, and sent to 56a port where @command{ffserver} is listening. 57 58Each feed is identified by a unique name, corresponding to the name 59of the resource published on @command{ffserver}, and is configured by 60a dedicated @code{Feed} section in the configuration file. 61 62The feed publish URL is given by: 63@example 64http://@var{ffserver_ip_address}:@var{http_port}/@var{feed_name} 65@end example 66 67where @var{ffserver_ip_address} is the IP address of the machine where 68@command{ffserver} is installed, @var{http_port} is the port number of 69the HTTP server (configured through the @option{Port} option), and 70@var{feed_name} is the name of the corresponding feed defined in the 71configuration file. 72 73Each feed is associated to a file which is stored on disk. This stored 74file is used to allow to send pre-recorded data to a player as fast as 75possible when new content is added in real-time to the stream. 76 77A "live-stream" or "stream" is a resource published by 78@command{ffserver}, and made accessible through the HTTP protocol to 79clients. 80 81A stream can be connected to a feed, or to a file. In the first case, 82the published stream is forwarded from the corresponding feed 83generated by a running instance of @command{ffmpeg}, in the second 84case the stream is read from a pre-recorded file. 85 86Each stream is identified by a unique name, corresponding to the name 87of the resource served by @command{ffserver}, and is configured by 88a dedicated @code{Stream} section in the configuration file. 89 90The stream access HTTP URL is given by: 91@example 92http://@var{ffserver_ip_address}:@var{http_port}/@var{stream_name}[@var{options}] 93@end example 94 95The stream access RTSP URL is given by: 96@example 97http://@var{ffserver_ip_address}:@var{rtsp_port}/@var{stream_name}[@var{options}] 98@end example 99 100@var{stream_name} is the name of the corresponding stream defined in 101the configuration file. @var{options} is a list of options specified 102after the URL which affects how the stream is served by 103@command{ffserver}. @var{http_port} and @var{rtsp_port} are the HTTP 104and RTSP ports configured with the options @var{Port} and 105@var{RTSPPort} respectively. 106 107In case the stream is associated to a feed, the encoding parameters 108must be configured in the stream configuration. They are sent to 109@command{ffmpeg} when setting up the encoding. This allows 110@command{ffserver} to define the encoding parameters used by 111the @command{ffmpeg} encoders. 112 113The @command{ffmpeg} @option{override_ffserver} commandline option 114allows one to override the encoding parameters set by the server. 115 116Multiple streams can be connected to the same feed. 117 118For example, you can have a situation described by the following 119graph: 120@example 121 _________ __________ 122 | | | | 123ffmpeg 1 -----| feed 1 |-----| stream 1 | 124 \ |_________|\ |__________| 125 \ \ 126 \ \ __________ 127 \ \ | | 128 \ \| stream 2 | 129 \ |__________| 130 \ 131 \ _________ __________ 132 \ | | | | 133 \| feed 2 |-----| stream 3 | 134 |_________| |__________| 135 136 _________ __________ 137 | | | | 138ffmpeg 2 -----| feed 3 |-----| stream 4 | 139 |_________| |__________| 140 141 _________ __________ 142 | | | | 143 | file 1 |-----| stream 5 | 144 |_________| |__________| 145@end example 146 147@anchor{FFM} 148@section FFM, FFM2 formats 149 150FFM and FFM2 are formats used by ffserver. They allow storing a wide variety of 151video and audio streams and encoding options, and can store a moving time segment 152of an infinite movie or a whole movie. 153 154FFM is version specific, and there is limited compatibility of FFM files 155generated by one version of ffmpeg/ffserver and another version of 156ffmpeg/ffserver. It may work but it is not guaranteed to work. 157 158FFM2 is extensible while maintaining compatibility and should work between 159differing versions of tools. FFM2 is the default. 160 161@section Status stream 162 163@command{ffserver} supports an HTTP interface which exposes the 164current status of the server. 165 166Simply point your browser to the address of the special status stream 167specified in the configuration file. 168 169For example if you have: 170@example 171<Stream status.html> 172Format status 173 174# Only allow local people to get the status 175ACL allow localhost 176ACL allow 192.168.0.0 192.168.255.255 177</Stream> 178@end example 179 180then the server will post a page with the status information when 181the special stream @file{status.html} is requested. 182 183@section How do I make it work? 184 185As a simple test, just run the following two command lines where INPUTFILE 186is some file which you can decode with ffmpeg: 187 188@example 189ffserver -f doc/ffserver.conf & 190ffmpeg -i INPUTFILE http://localhost:8090/feed1.ffm 191@end example 192 193At this point you should be able to go to your Windows machine and fire up 194Windows Media Player (WMP). Go to Open URL and enter 195 196@example 197 http://<linuxbox>:8090/test.asf 198@end example 199 200You should (after a short delay) see video and hear audio. 201 202WARNING: trying to stream test1.mpg doesn't work with WMP as it tries to 203transfer the entire file before starting to play. 204The same is true of AVI files. 205 206@section What happens next? 207 208You should edit the ffserver.conf file to suit your needs (in terms of 209frame rates etc). Then install ffserver and ffmpeg, write a script to start 210them up, and off you go. 211 212@section What else can it do? 213 214You can replay video from .ffm files that was recorded earlier. 215However, there are a number of caveats, including the fact that the 216ffserver parameters must match the original parameters used to record the 217file. If they do not, then ffserver deletes the file before recording into it. 218(Now that I write this, it seems broken). 219 220You can fiddle with many of the codec choices and encoding parameters, and 221there are a bunch more parameters that you cannot control. Post a message 222to the mailing list if there are some 'must have' parameters. Look in 223ffserver.conf for a list of the currently available controls. 224 225It will automatically generate the ASX or RAM files that are often used 226in browsers. These files are actually redirections to the underlying ASF 227or RM file. The reason for this is that the browser often fetches the 228entire file before starting up the external viewer. The redirection files 229are very small and can be transferred quickly. [The stream itself is 230often 'infinite' and thus the browser tries to download it and never 231finishes.] 232 233@section Tips 234 235* When you connect to a live stream, most players (WMP, RA, etc) want to 236buffer a certain number of seconds of material so that they can display the 237signal continuously. However, ffserver (by default) starts sending data 238in realtime. This means that there is a pause of a few seconds while the 239buffering is being done by the player. The good news is that this can be 240cured by adding a '?buffer=5' to the end of the URL. This means that the 241stream should start 5 seconds in the past -- and so the first 5 seconds 242of the stream are sent as fast as the network will allow. It will then 243slow down to real time. This noticeably improves the startup experience. 244 245You can also add a 'Preroll 15' statement into the ffserver.conf that will 246add the 15 second prebuffering on all requests that do not otherwise 247specify a time. In addition, ffserver will skip frames until a key_frame 248is found. This further reduces the startup delay by not transferring data 249that will be discarded. 250 251@section Why does the ?buffer / Preroll stop working after a time? 252 253It turns out that (on my machine at least) the number of frames successfully 254grabbed is marginally less than the number that ought to be grabbed. This 255means that the timestamp in the encoded data stream gets behind realtime. 256This means that if you say 'Preroll 10', then when the stream gets 10 257or more seconds behind, there is no Preroll left. 258 259Fixing this requires a change in the internals of how timestamps are 260handled. 261 262@section Does the @code{?date=} stuff work. 263 264Yes (subject to the limitation outlined above). Also note that whenever you 265start ffserver, it deletes the ffm file (if any parameters have changed), 266thus wiping out what you had recorded before. 267 268The format of the @code{?date=xxxxxx} is fairly flexible. You should use one 269of the following formats (the 'T' is literal): 270 271@example 272* YYYY-MM-DDTHH:MM:SS (localtime) 273* YYYY-MM-DDTHH:MM:SSZ (UTC) 274@end example 275 276You can omit the YYYY-MM-DD, and then it refers to the current day. However 277note that @samp{?date=16:00:00} refers to 16:00 on the current day -- this 278may be in the future and so is unlikely to be useful. 279 280You use this by adding the ?date= to the end of the URL for the stream. 281For example: @samp{http://localhost:8080/test.asf?date=2002-07-26T23:05:00}. 282@c man end 283 284@chapter Options 285@c man begin OPTIONS 286 287@include fftools-common-opts.texi 288 289@section Main options 290 291@table @option 292@item -f @var{configfile} 293Read configuration file @file{configfile}. If not specified it will 294read by default from @file{/etc/ffserver.conf}. 295 296@item -n 297Enable no-launch mode. This option disables all the @code{Launch} 298directives within the various @code{<Feed>} sections. Since 299@command{ffserver} will not launch any @command{ffmpeg} instances, you 300will have to launch them manually. 301 302@item -d 303Enable debug mode. This option increases log verbosity, and directs 304log messages to stdout. When specified, the @option{CustomLog} option 305is ignored. 306@end table 307 308@chapter Configuration file syntax 309 310@command{ffserver} reads a configuration file containing global 311options and settings for each stream and feed. 312 313The configuration file consists of global options and dedicated 314sections, which must be introduced by "<@var{SECTION_NAME} 315@var{ARGS}>" on a separate line and must be terminated by a line in 316the form "</@var{SECTION_NAME}>". @var{ARGS} is optional. 317 318Currently the following sections are recognized: @samp{Feed}, 319@samp{Stream}, @samp{Redirect}. 320 321A line starting with @code{#} is ignored and treated as a comment. 322 323Name of options and sections are case-insensitive. 324 325@section ACL syntax 326An ACL (Access Control List) specifies the address which are allowed 327to access a given stream, or to write a given feed. 328 329It accepts the folling forms 330@itemize 331@item 332Allow/deny access to @var{address}. 333@example 334ACL ALLOW <address> 335ACL DENY <address> 336@end example 337 338@item 339Allow/deny access to ranges of addresses from @var{first_address} to 340@var{last_address}. 341@example 342ACL ALLOW <first_address> <last_address> 343ACL DENY <first_address> <last_address> 344@end example 345@end itemize 346 347You can repeat the ACL allow/deny as often as you like. It is on a per 348stream basis. The first match defines the action. If there are no matches, 349then the default is the inverse of the last ACL statement. 350 351Thus 'ACL allow localhost' only allows access from localhost. 352'ACL deny 1.0.0.0 1.255.255.255' would deny the whole of network 1 and 353allow everybody else. 354 355@section Global options 356@table @option 357@item Port @var{port_number} 358@item RTSPPort @var{port_number} 359 360Set TCP port number on which the HTTP/RTSP server is listening. You 361must select a different port from your standard HTTP web server if it 362is running on the same computer. 363 364If not specified, no corresponding server will be created. 365 366@item BindAddress @var{ip_address} 367@item RTSPBindAddress @var{ip_address} 368Set address on which the HTTP/RTSP server is bound. Only useful if you 369have several network interfaces. 370 371@item MaxHTTPConnections @var{n} 372Set number of simultaneous HTTP connections that can be handled. It 373has to be defined @emph{before} the @option{MaxClients} parameter, 374since it defines the @option{MaxClients} maximum limit. 375 376Default value is 2000. 377 378@item MaxClients @var{n} 379Set number of simultaneous requests that can be handled. Since 380@command{ffserver} is very fast, it is more likely that you will want 381to leave this high and use @option{MaxBandwidth}. 382 383Default value is 5. 384 385@item MaxBandwidth @var{kbps} 386Set the maximum amount of kbit/sec that you are prepared to consume 387when streaming to clients. 388 389Default value is 1000. 390 391@item CustomLog @var{filename} 392Set access log file (uses standard Apache log file format). '-' is the 393standard output. 394 395If not specified @command{ffserver} will produce no log. 396 397In case the commandline option @option{-d} is specified this option is 398ignored, and the log is written to standard output. 399 400@item NoDaemon 401Set no-daemon mode. This option is currently ignored since now 402@command{ffserver} will always work in no-daemon mode, and is 403deprecated. 404@end table 405 406@section Feed section 407 408A Feed section defines a feed provided to @command{ffserver}. 409 410Each live feed contains one video and/or audio sequence coming from an 411@command{ffmpeg} encoder or another @command{ffserver}. This sequence 412may be encoded simultaneously with several codecs at several 413resolutions. 414 415A feed instance specification is introduced by a line in the form: 416@example 417<Feed FEED_FILENAME> 418@end example 419 420where @var{FEED_FILENAME} specifies the unique name of the FFM stream. 421 422The following options are recognized within a Feed section. 423 424@table @option 425@item File @var{filename} 426@item ReadOnlyFile @var{filename} 427Set the path where the feed file is stored on disk. 428 429If not specified, the @file{/tmp/FEED.ffm} is assumed, where 430@var{FEED} is the feed name. 431 432If @option{ReadOnlyFile} is used the file is marked as read-only and 433it will not be deleted or updated. 434 435@item Truncate 436Truncate the feed file, rather than appending to it. By default 437@command{ffserver} will append data to the file, until the maximum 438file size value is reached (see @option{FileMaxSize} option). 439 440@item FileMaxSize @var{size} 441Set maximum size of the feed file in bytes. 0 means unlimited. The 442postfixes @code{K} (2^10), @code{M} (2^20), and @code{G} (2^30) are 443recognized. 444 445Default value is 5M. 446 447@item Launch @var{args} 448Launch an @command{ffmpeg} command when creating @command{ffserver}. 449 450@var{args} must be a sequence of arguments to be provided to an 451@command{ffmpeg} instance. The first provided argument is ignored, and 452it is replaced by a path with the same dirname of the @command{ffserver} 453instance, followed by the remaining argument and terminated with a 454path corresponding to the feed. 455 456When the launched process exits, @command{ffserver} will launch 457another program instance. 458 459In case you need a more complex @command{ffmpeg} configuration, 460e.g. if you need to generate multiple FFM feeds with a single 461@command{ffmpeg} instance, you should launch @command{ffmpeg} by hand. 462 463This option is ignored in case the commandline option @option{-n} is 464specified. 465 466@item ACL @var{spec} 467Specify the list of IP address which are allowed or denied to write 468the feed. Multiple ACL options can be specified. 469@end table 470 471@section Stream section 472 473A Stream section defines a stream provided by @command{ffserver}, and 474identified by a single name. 475 476The stream is sent when answering a request containing the stream 477name. 478 479A stream section must be introduced by the line: 480@example 481<Stream STREAM_NAME> 482@end example 483 484where @var{STREAM_NAME} specifies the unique name of the stream. 485 486The following options are recognized within a Stream section. 487 488Encoding options are marked with the @emph{encoding} tag, and they are 489used to set the encoding parameters, and are mapped to libavcodec 490encoding options. Not all encoding options are supported, in 491particular it is not possible to set encoder private options. In order 492to override the encoding options specified by @command{ffserver}, you 493can use the @command{ffmpeg} @option{override_ffserver} commandline 494option. 495 496Only one of the @option{Feed} and @option{File} options should be set. 497 498@table @option 499@item Feed @var{feed_name} 500Set the input feed. @var{feed_name} must correspond to an existing 501feed defined in a @code{Feed} section. 502 503When this option is set, encoding options are used to setup the 504encoding operated by the remote @command{ffmpeg} process. 505 506@item File @var{filename} 507Set the filename of the pre-recorded input file to stream. 508 509When this option is set, encoding options are ignored and the input 510file content is re-streamed as is. 511 512@item Format @var{format_name} 513Set the format of the output stream. 514 515Must be the name of a format recognized by FFmpeg. If set to 516@samp{status}, it is treated as a status stream. 517 518@item InputFormat @var{format_name} 519Set input format. If not specified, it is automatically guessed. 520 521@item Preroll @var{n} 522Set this to the number of seconds backwards in time to start. Note that 523most players will buffer 5-10 seconds of video, and also you need to allow 524for a keyframe to appear in the data stream. 525 526Default value is 0. 527 528@item StartSendOnKey 529Do not send stream until it gets the first key frame. By default 530@command{ffserver} will send data immediately. 531 532@item MaxTime @var{n} 533Set the number of seconds to run. This value set the maximum duration 534of the stream a client will be able to receive. 535 536A value of 0 means that no limit is set on the stream duration. 537 538@item ACL @var{spec} 539Set ACL for the stream. 540 541@item DynamicACL @var{spec} 542 543@item RTSPOption @var{option} 544 545@item MulticastAddress @var{address} 546 547@item MulticastPort @var{port} 548 549@item MulticastTTL @var{integer} 550 551@item NoLoop 552 553@item FaviconURL @var{url} 554Set favicon (favourite icon) for the server status page. It is ignored 555for regular streams. 556 557@item Author @var{value} 558@item Comment @var{value} 559@item Copyright @var{value} 560@item Title @var{value} 561Set metadata corresponding to the option. All these options are 562deprecated in favor of @option{Metadata}. 563 564@item Metadata @var{key} @var{value} 565Set metadata value on the output stream. 566 567@item NoAudio 568@item NoVideo 569Suppress audio/video. 570 571@item AudioCodec @var{codec_name} (@emph{encoding,audio}) 572Set audio codec. 573 574@item AudioBitRate @var{rate} (@emph{encoding,audio}) 575Set bitrate for the audio stream in kbits per second. 576 577@item AudioChannels @var{n} (@emph{encoding,audio}) 578Set number of audio channels. 579 580@item AudioSampleRate @var{n} (@emph{encoding,audio}) 581Set sampling frequency for audio. When using low bitrates, you should 582lower this frequency to 22050 or 11025. The supported frequencies 583depend on the selected audio codec. 584 585@item AVOptionAudio @var{option} @var{value} (@emph{encoding,audio}) 586Set generic option for audio stream. 587 588@item AVPresetAudio @var{preset} (@emph{encoding,audio}) 589Set preset for audio stream. 590 591@item VideoCodec @var{codec_name} (@emph{encoding,video}) 592Set video codec. 593 594@item VideoBitRate @var{n} (@emph{encoding,video}) 595Set bitrate for the video stream in kbits per second. 596 597@item VideoBitRateRange @var{range} (@emph{encoding,video}) 598Set video bitrate range. 599 600A range must be specified in the form @var{minrate}-@var{maxrate}, and 601specifies the @option{minrate} and @option{maxrate} encoding options 602expressed in kbits per second. 603 604@item VideoBitRateRangeTolerance @var{n} (@emph{encoding,video}) 605Set video bitrate tolerance in kbits per second. 606 607@item PixelFormat @var{pixel_format} (@emph{encoding,video}) 608Set video pixel format. 609 610@item Debug @var{integer} (@emph{encoding,video}) 611Set video @option{debug} encoding option. 612 613@item Strict @var{integer} (@emph{encoding,video}) 614Set video @option{strict} encoding option. 615 616@item VideoBufferSize @var{n} (@emph{encoding,video}) 617Set ratecontrol buffer size, expressed in KB. 618 619@item VideoFrameRate @var{n} (@emph{encoding,video}) 620Set number of video frames per second. 621 622@item VideoSize (@emph{encoding,video}) 623Set size of the video frame, must be an abbreviation or in the form 624@var{W}x@var{H}. See @ref{video size syntax,,the Video size section 625in the ffmpeg-utils(1) manual,ffmpeg-utils}. 626 627Default value is @code{160x128}. 628 629@item VideoIntraOnly (@emph{encoding,video}) 630Transmit only intra frames (useful for low bitrates, but kills frame rate). 631 632@item VideoGopSize @var{n} (@emph{encoding,video}) 633If non-intra only, an intra frame is transmitted every VideoGopSize 634frames. Video synchronization can only begin at an intra frame. 635 636@item VideoTag @var{tag} (@emph{encoding,video}) 637Set video tag. 638 639@item VideoHighQuality (@emph{encoding,video}) 640@item Video4MotionVector (@emph{encoding,video}) 641 642@item BitExact (@emph{encoding,video}) 643Set bitexact encoding flag. 644 645@item IdctSimple (@emph{encoding,video}) 646Set simple IDCT algorithm. 647 648@item Qscale @var{n} (@emph{encoding,video}) 649Enable constant quality encoding, and set video qscale (quantization 650scale) value, expressed in @var{n} QP units. 651 652@item VideoQMin @var{n} (@emph{encoding,video}) 653@item VideoQMax @var{n} (@emph{encoding,video}) 654Set video qmin/qmax. 655 656@item VideoQDiff @var{integer} (@emph{encoding,video}) 657Set video @option{qdiff} encoding option. 658 659@item LumiMask @var{float} (@emph{encoding,video}) 660@item DarkMask @var{float} (@emph{encoding,video}) 661Set @option{lumi_mask}/@option{dark_mask} encoding options. 662 663@item AVOptionVideo @var{option} @var{value} (@emph{encoding,video}) 664Set generic option for video stream. 665 666@item AVPresetVideo @var{preset} (@emph{encoding,video}) 667Set preset for video stream. 668 669@var{preset} must be the path of a preset file. 670@end table 671 672@subsection Server status stream 673 674A server status stream is a special stream which is used to show 675statistics about the @command{ffserver} operations. 676 677It must be specified setting the option @option{Format} to 678@samp{status}. 679 680@section Redirect section 681 682A redirect section specifies where to redirect the requested URL to 683another page. 684 685A redirect section must be introduced by the line: 686@example 687<Redirect NAME> 688@end example 689 690where @var{NAME} is the name of the page which should be redirected. 691 692It only accepts the option @option{URL}, which specify the redirection 693URL. 694 695@chapter Stream examples 696 697@itemize 698@item 699Multipart JPEG 700@example 701<Stream test.mjpg> 702Feed feed1.ffm 703Format mpjpeg 704VideoFrameRate 2 705VideoIntraOnly 706NoAudio 707Strict -1 708</Stream> 709@end example 710 711@item 712Single JPEG 713@example 714<Stream test.jpg> 715Feed feed1.ffm 716Format jpeg 717VideoFrameRate 2 718VideoIntraOnly 719VideoSize 352x240 720NoAudio 721Strict -1 722</Stream> 723@end example 724 725@item 726Flash 727@example 728<Stream test.swf> 729Feed feed1.ffm 730Format swf 731VideoFrameRate 2 732VideoIntraOnly 733NoAudio 734</Stream> 735@end example 736 737@item 738ASF compatible 739@example 740<Stream test.asf> 741Feed feed1.ffm 742Format asf 743VideoFrameRate 15 744VideoSize 352x240 745VideoBitRate 256 746VideoBufferSize 40 747VideoGopSize 30 748AudioBitRate 64 749StartSendOnKey 750</Stream> 751@end example 752 753@item 754MP3 audio 755@example 756<Stream test.mp3> 757Feed feed1.ffm 758Format mp2 759AudioCodec mp3 760AudioBitRate 64 761AudioChannels 1 762AudioSampleRate 44100 763NoVideo 764</Stream> 765@end example 766 767@item 768Ogg Vorbis audio 769@example 770<Stream test.ogg> 771Feed feed1.ffm 772Metadata title "Stream title" 773AudioBitRate 64 774AudioChannels 2 775AudioSampleRate 44100 776NoVideo 777</Stream> 778@end example 779 780@item 781Real with audio only at 32 kbits 782@example 783<Stream test.ra> 784Feed feed1.ffm 785Format rm 786AudioBitRate 32 787NoVideo 788</Stream> 789@end example 790 791@item 792Real with audio and video at 64 kbits 793@example 794<Stream test.rm> 795Feed feed1.ffm 796Format rm 797AudioBitRate 32 798VideoBitRate 128 799VideoFrameRate 25 800VideoGopSize 25 801</Stream> 802@end example 803 804@item 805For stream coming from a file: you only need to set the input filename 806and optionally a new format. 807 808@example 809<Stream file.rm> 810File "/usr/local/httpd/htdocs/tlive.rm" 811NoAudio 812</Stream> 813@end example 814 815@example 816<Stream file.asf> 817File "/usr/local/httpd/htdocs/test.asf" 818NoAudio 819Metadata author "Me" 820Metadata copyright "Super MegaCorp" 821Metadata title "Test stream from disk" 822Metadata comment "Test comment" 823</Stream> 824@end example 825@end itemize 826 827@c man end 828 829@include config.texi 830@ifset config-all 831@ifset config-avutil 832@include utils.texi 833@end ifset 834@ifset config-avcodec 835@include codecs.texi 836@include bitstream_filters.texi 837@end ifset 838@ifset config-avformat 839@include formats.texi 840@include protocols.texi 841@end ifset 842@ifset config-avdevice 843@include devices.texi 844@end ifset 845@ifset config-swresample 846@include resampler.texi 847@end ifset 848@ifset config-swscale 849@include scaler.texi 850@end ifset 851@ifset config-avfilter 852@include filters.texi 853@end ifset 854@end ifset 855 856@chapter See Also 857 858@ifhtml 859@ifset config-all 860@url{ffserver.html,ffserver}, 861@end ifset 862@ifset config-not-all 863@url{ffserver-all.html,ffserver-all}, 864@end ifset 865the @file{doc/ffserver.conf} example, 866@url{ffmpeg.html,ffmpeg}, @url{ffplay.html,ffplay}, @url{ffprobe.html,ffprobe}, 867@url{ffmpeg-utils.html,ffmpeg-utils}, 868@url{ffmpeg-scaler.html,ffmpeg-scaler}, 869@url{ffmpeg-resampler.html,ffmpeg-resampler}, 870@url{ffmpeg-codecs.html,ffmpeg-codecs}, 871@url{ffmpeg-bitstream-filters.html,ffmpeg-bitstream-filters}, 872@url{ffmpeg-formats.html,ffmpeg-formats}, 873@url{ffmpeg-devices.html,ffmpeg-devices}, 874@url{ffmpeg-protocols.html,ffmpeg-protocols}, 875@url{ffmpeg-filters.html,ffmpeg-filters} 876@end ifhtml 877 878@ifnothtml 879@ifset config-all 880ffserver(1), 881@end ifset 882@ifset config-not-all 883ffserver-all(1), 884@end ifset 885the @file{doc/ffserver.conf} example, ffmpeg(1), ffplay(1), ffprobe(1), 886ffmpeg-utils(1), ffmpeg-scaler(1), ffmpeg-resampler(1), 887ffmpeg-codecs(1), ffmpeg-bitstream-filters(1), ffmpeg-formats(1), 888ffmpeg-devices(1), ffmpeg-protocols(1), ffmpeg-filters(1) 889@end ifnothtml 890 891@include authors.texi 892 893@ignore 894 895@setfilename ffserver 896@settitle ffserver video server 897 898@end ignore 899 900@bye 901