| 
							- \input texinfo @c -*- texinfo -*-
 - @documentencoding UTF-8
 - 
 - @settitle ffserver Documentation
 - @titlepage
 - @center @titlefont{ffserver Documentation}
 - @end titlepage
 - 
 - @top
 - 
 - @contents
 - 
 - @chapter Synopsis
 - 
 - ffserver [@var{options}]
 - 
 - @chapter Description
 - @c man begin DESCRIPTION
 - 
 - @command{ffserver} is a streaming server for both audio and video.
 - It supports several live feeds, streaming from files and time shifting
 - on live feeds. You can seek to positions in the past on each live
 - feed, provided you specify a big enough feed storage.
 - 
 - @command{ffserver} is configured through a configuration file, which
 - is read at startup. If not explicitly specified, it will read from
 - @file{/etc/ffserver.conf}.
 - 
 - @command{ffserver} receives prerecorded files or FFM streams from some
 - @command{ffmpeg} instance as input, then streams them over
 - RTP/RTSP/HTTP.
 - 
 - An @command{ffserver} instance will listen on some port as specified
 - in the configuration file. You can launch one or more instances of
 - @command{ffmpeg} and send one or more FFM streams to the port where
 - ffserver is expecting to receive them. Alternately, you can make
 - @command{ffserver} launch such @command{ffmpeg} instances at startup.
 - 
 - Input streams are called feeds, and each one is specified by a
 - @code{<Feed>} section in the configuration file.
 - 
 - For each feed you can have different output streams in various
 - formats, each one specified by a @code{<Stream>} section in the
 - configuration file.
 - 
 - @chapter Detailed description
 - 
 - @command{ffserver} works by forwarding streams encoded by
 - @command{ffmpeg}, or pre-recorded streams which are read from disk.
 - 
 - Precisely, @command{ffserver} acts as an HTTP server, accepting POST
 - requests from @command{ffmpeg} to acquire the stream to publish, and
 - serving RTSP clients or HTTP clients GET requests with the stream
 - media content.
 - 
 - A feed is an @ref{FFM} stream created by @command{ffmpeg}, and sent to
 - a port where @command{ffserver} is listening.
 - 
 - Each feed is identified by a unique name, corresponding to the name
 - of the resource published on @command{ffserver}, and is configured by
 - a dedicated @code{Feed} section in the configuration file.
 - 
 - The feed publish URL is given by:
 - @example
 - http://@var{ffserver_ip_address}:@var{http_port}/@var{feed_name}
 - @end example
 - 
 - where @var{ffserver_ip_address} is the IP address of the machine where
 - @command{ffserver} is installed, @var{http_port} is the port number of
 - the HTTP server (configured through the @option{HTTPPort} option), and
 - @var{feed_name} is the name of the corresponding feed defined in the
 - configuration file.
 - 
 - Each feed is associated to a file which is stored on disk. This stored
 - file is used to send pre-recorded data to a player as fast as
 - possible when new content is added in real-time to the stream.
 - 
 - A "live-stream" or "stream" is a resource published by
 - @command{ffserver}, and made accessible through the HTTP protocol to
 - clients.
 - 
 - A stream can be connected to a feed, or to a file. In the first case,
 - the published stream is forwarded from the corresponding feed
 - generated by a running instance of @command{ffmpeg}, in the second
 - case the stream is read from a pre-recorded file.
 - 
 - Each stream is identified by a unique name, corresponding to the name
 - of the resource served by @command{ffserver}, and is configured by
 - a dedicated @code{Stream} section in the configuration file.
 - 
 - The stream access HTTP URL is given by:
 - @example
 - http://@var{ffserver_ip_address}:@var{http_port}/@var{stream_name}[@var{options}]
 - @end example
 - 
 - The stream access RTSP URL is given by:
 - @example
 - http://@var{ffserver_ip_address}:@var{rtsp_port}/@var{stream_name}[@var{options}]
 - @end example
 - 
 - @var{stream_name} is the name of the corresponding stream defined in
 - the configuration file. @var{options} is a list of options specified
 - after the URL which affects how the stream is served by
 - @command{ffserver}. @var{http_port} and @var{rtsp_port} are the HTTP
 - and RTSP ports configured with the options @var{HTTPPort} and
 - @var{RTSPPort} respectively.
 - 
 - In case the stream is associated to a feed, the encoding parameters
 - must be configured in the stream configuration. They are sent to
 - @command{ffmpeg} when setting up the encoding. This allows
 - @command{ffserver} to define the encoding parameters used by
 - the @command{ffmpeg} encoders.
 - 
 - The @command{ffmpeg} @option{override_ffserver} commandline option
 - allows one to override the encoding parameters set by the server.
 - 
 - Multiple streams can be connected to the same feed.
 - 
 - For example, you can have a situation described by the following
 - graph:
 - 
 - @verbatim
 -                _________       __________
 -               |         |     |          |
 - ffmpeg 1 -----| feed 1  |-----| stream 1 |
 -     \         |_________|\    |__________|
 -      \                    \
 -       \                    \   __________
 -        \                    \ |          |
 -         \                    \| stream 2 |
 -          \                    |__________|
 -           \
 -            \   _________       __________
 -             \ |         |     |          |
 -              \| feed 2  |-----| stream 3 |
 -               |_________|     |__________|
 - 
 -                _________       __________
 -               |         |     |          |
 - ffmpeg 2 -----| feed 3  |-----| stream 4 |
 -               |_________|     |__________|
 - 
 -                _________       __________
 -               |         |     |          |
 -               | file 1  |-----| stream 5 |
 -               |_________|     |__________|
 - 
 - @end verbatim
 - 
 - @anchor{FFM}
 - @section FFM, FFM2 formats
 - 
 - FFM and FFM2 are formats used by ffserver. They allow storing a wide variety of
 - video and audio streams and encoding options, and can store a moving time segment
 - of an infinite movie or a whole movie.
 - 
 - FFM is version specific, and there is limited compatibility of FFM files
 - generated by one version of ffmpeg/ffserver and another version of
 - ffmpeg/ffserver. It may work but it is not guaranteed to work.
 - 
 - FFM2 is extensible while maintaining compatibility and should work between
 - differing versions of tools. FFM2 is the default.
 - 
 - @section Status stream
 - 
 - @command{ffserver} supports an HTTP interface which exposes the
 - current status of the server.
 - 
 - Simply point your browser to the address of the special status stream
 - specified in the configuration file.
 - 
 - For example if you have:
 - @example
 - <Stream status.html>
 - Format status
 - 
 - # Only allow local people to get the status
 - ACL allow localhost
 - ACL allow 192.168.0.0 192.168.255.255
 - </Stream>
 - @end example
 - 
 - then the server will post a page with the status information when
 - the special stream @file{status.html} is requested.
 - 
 - @section How do I make it work?
 - 
 - As a simple test, just run the following two command lines where INPUTFILE
 - is some file which you can decode with ffmpeg:
 - 
 - @example
 - ffserver -f doc/ffserver.conf &
 - ffmpeg -i INPUTFILE http://localhost:8090/feed1.ffm
 - @end example
 - 
 - At this point you should be able to go to your Windows machine and fire up
 - Windows Media Player (WMP). Go to Open URL and enter
 - 
 - @example
 -     http://<linuxbox>:8090/test.asf
 - @end example
 - 
 - You should (after a short delay) see video and hear audio.
 - 
 - WARNING: trying to stream test1.mpg doesn't work with WMP as it tries to
 - transfer the entire file before starting to play.
 - The same is true of AVI files.
 - 
 - You should edit the @file{ffserver.conf} file to suit your needs (in
 - terms of frame rates etc). Then install @command{ffserver} and
 - @command{ffmpeg}, write a script to start them up, and off you go.
 - 
 - @section What else can it do?
 - 
 - You can replay video from .ffm files that was recorded earlier.
 - However, there are a number of caveats, including the fact that the
 - ffserver parameters must match the original parameters used to record the
 - file. If they do not, then ffserver deletes the file before recording into it.
 - (Now that I write this, it seems broken).
 - 
 - You can fiddle with many of the codec choices and encoding parameters, and
 - there are a bunch more parameters that you cannot control. Post a message
 - to the mailing list if there are some 'must have' parameters. Look in
 - ffserver.conf for a list of the currently available controls.
 - 
 - It will automatically generate the ASX or RAM files that are often used
 - in browsers. These files are actually redirections to the underlying ASF
 - or RM file. The reason for this is that the browser often fetches the
 - entire file before starting up the external viewer. The redirection files
 - are very small and can be transferred quickly. [The stream itself is
 - often 'infinite' and thus the browser tries to download it and never
 - finishes.]
 - 
 - @section Tips
 - 
 - * When you connect to a live stream, most players (WMP, RA, etc) want to
 - buffer a certain number of seconds of material so that they can display the
 - signal continuously. However, ffserver (by default) starts sending data
 - in realtime. This means that there is a pause of a few seconds while the
 - buffering is being done by the player. The good news is that this can be
 - cured by adding a '?buffer=5' to the end of the URL. This means that the
 - stream should start 5 seconds in the past -- and so the first 5 seconds
 - of the stream are sent as fast as the network will allow. It will then
 - slow down to real time. This noticeably improves the startup experience.
 - 
 - You can also add a 'Preroll 15' statement into the ffserver.conf that will
 - add the 15 second prebuffering on all requests that do not otherwise
 - specify a time. In addition, ffserver will skip frames until a key_frame
 - is found. This further reduces the startup delay by not transferring data
 - that will be discarded.
 - 
 - @section Why does the ?buffer / Preroll stop working after a time?
 - 
 - It turns out that (on my machine at least) the number of frames successfully
 - grabbed is marginally less than the number that ought to be grabbed. This
 - means that the timestamp in the encoded data stream gets behind realtime.
 - This means that if you say 'Preroll 10', then when the stream gets 10
 - or more seconds behind, there is no Preroll left.
 - 
 - Fixing this requires a change in the internals of how timestamps are
 - handled.
 - 
 - @section Does the @code{?date=} stuff work.
 - 
 - Yes (subject to the limitation outlined above). Also note that whenever you
 - start ffserver, it deletes the ffm file (if any parameters have changed),
 - thus wiping out what you had recorded before.
 - 
 - The format of the @code{?date=xxxxxx} is fairly flexible. You should use one
 - of the following formats (the 'T' is literal):
 - 
 - @example
 - * YYYY-MM-DDTHH:MM:SS     (localtime)
 - * YYYY-MM-DDTHH:MM:SSZ    (UTC)
 - @end example
 - 
 - You can omit the YYYY-MM-DD, and then it refers to the current day. However
 - note that @samp{?date=16:00:00} refers to 16:00 on the current day -- this
 - may be in the future and so is unlikely to be useful.
 - 
 - You use this by adding the ?date= to the end of the URL for the stream.
 - For example:   @samp{http://localhost:8080/test.asf?date=2002-07-26T23:05:00}.
 - @c man end
 - 
 - @chapter Options
 - @c man begin OPTIONS
 - 
 - @include fftools-common-opts.texi
 - 
 - @section Main options
 - 
 - @table @option
 - @item -f @var{configfile}
 - Read configuration file @file{configfile}. If not specified it will
 - read by default from @file{/etc/ffserver.conf}.
 - 
 - @item -n
 - Enable no-launch mode. This option disables all the @code{Launch}
 - directives within the various @code{<Feed>} sections. Since
 - @command{ffserver} will not launch any @command{ffmpeg} instances, you
 - will have to launch them manually.
 - 
 - @item -d
 - Enable debug mode. This option increases log verbosity, and directs
 - log messages to stdout. When specified, the @option{CustomLog} option
 - is ignored.
 - @end table
 - 
 - @chapter Configuration file syntax
 - 
 - @command{ffserver} reads a configuration file containing global
 - options and settings for each stream and feed.
 - 
 - The configuration file consists of global options and dedicated
 - sections, which must be introduced by "<@var{SECTION_NAME}
 - @var{ARGS}>" on a separate line and must be terminated by a line in
 - the form "</@var{SECTION_NAME}>". @var{ARGS} is optional.
 - 
 - Currently the following sections are recognized: @samp{Feed},
 - @samp{Stream}, @samp{Redirect}.
 - 
 - A line starting with @code{#} is ignored and treated as a comment.
 - 
 - Name of options and sections are case-insensitive.
 - 
 - @section ACL syntax
 - An ACL (Access Control List) specifies the address which are allowed
 - to access a given stream, or to write a given feed.
 - 
 - It accepts the folling forms
 - @itemize
 - @item
 - Allow/deny access to @var{address}.
 - @example
 - ACL ALLOW <address>
 - ACL DENY <address>
 - @end example
 - 
 - @item
 - Allow/deny access to ranges of addresses from @var{first_address} to
 - @var{last_address}.
 - @example
 - ACL ALLOW <first_address> <last_address>
 - ACL DENY <first_address> <last_address>
 - @end example
 - @end itemize
 - 
 - You can repeat the ACL allow/deny as often as you like. It is on a per
 - stream basis. The first match defines the action. If there are no matches,
 - then the default is the inverse of the last ACL statement.
 - 
 - Thus 'ACL allow localhost' only allows access from localhost.
 - 'ACL deny 1.0.0.0 1.255.255.255' would deny the whole of network 1 and
 - allow everybody else.
 - 
 - @section Global options
 - @table @option
 - @item HTTPPort @var{port_number}
 - @item Port @var{port_number}
 - @item RTSPPort @var{port_number}
 - 
 - @var{HTTPPort} sets the HTTP server listening TCP port number,
 - @var{RTSPPort} sets the RTSP server listening TCP port number.
 - 
 - @var{Port} is the equivalent of @var{HTTPPort} and is deprecated.
 - 
 - You must select a different port from your standard HTTP web server if
 - it is running on the same computer.
 - 
 - If not specified, no corresponding server will be created.
 - 
 - @item HTTPBindAddress @var{ip_address}
 - @item BindAddress @var{ip_address}
 - @item RTSPBindAddress @var{ip_address}
 - Set address on which the HTTP/RTSP server is bound. Only useful if you
 - have several network interfaces.
 - 
 - @var{BindAddress} is the equivalent of @var{HTTPBindAddress} and is
 - deprecated.
 - 
 - @item MaxHTTPConnections @var{n}
 - Set number of simultaneous HTTP connections that can be handled. It
 - has to be defined @emph{before} the @option{MaxClients} parameter,
 - since it defines the @option{MaxClients} maximum limit.
 - 
 - Default value is 2000.
 - 
 - @item MaxClients @var{n}
 - Set number of simultaneous requests that can be handled. Since
 - @command{ffserver} is very fast, it is more likely that you will want
 - to leave this high and use @option{MaxBandwidth}.
 - 
 - Default value is 5.
 - 
 - @item MaxBandwidth @var{kbps}
 - Set the maximum amount of kbit/sec that you are prepared to consume
 - when streaming to clients.
 - 
 - Default value is 1000.
 - 
 - @item CustomLog @var{filename}
 - Set access log file (uses standard Apache log file format). '-' is the
 - standard output.
 - 
 - If not specified @command{ffserver} will produce no log.
 - 
 - In case the commandline option @option{-d} is specified this option is
 - ignored, and the log is written to standard output.
 - 
 - @item NoDaemon
 - Set no-daemon mode. This option is currently ignored since now
 - @command{ffserver} will always work in no-daemon mode, and is
 - deprecated.
 - 
 - @item UseDefaults
 - @item NoDefaults
 - Control whether default codec options are used for the all streams or not.
 - Each stream may overwrite this setting for its own. Default is @var{UseDefaults}.
 - The lastest occurrence overrides previous if multiple definitions.
 - @end table
 - 
 - @section Feed section
 - 
 - A Feed section defines a feed provided to @command{ffserver}.
 - 
 - Each live feed contains one video and/or audio sequence coming from an
 - @command{ffmpeg} encoder or another @command{ffserver}. This sequence
 - may be encoded simultaneously with several codecs at several
 - resolutions.
 - 
 - A feed instance specification is introduced by a line in the form:
 - @example
 - <Feed FEED_FILENAME>
 - @end example
 - 
 - where @var{FEED_FILENAME} specifies the unique name of the FFM stream.
 - 
 - The following options are recognized within a Feed section.
 - 
 - @table @option
 - @item File @var{filename}
 - @item ReadOnlyFile @var{filename}
 - Set the path where the feed file is stored on disk.
 - 
 - If not specified, the @file{/tmp/FEED.ffm} is assumed, where
 - @var{FEED} is the feed name.
 - 
 - If @option{ReadOnlyFile} is used the file is marked as read-only and
 - it will not be deleted or updated.
 - 
 - @item Truncate
 - Truncate the feed file, rather than appending to it. By default
 - @command{ffserver} will append data to the file, until the maximum
 - file size value is reached (see @option{FileMaxSize} option).
 - 
 - @item FileMaxSize @var{size}
 - Set maximum size of the feed file in bytes. 0 means unlimited. The
 - postfixes @code{K} (2^10), @code{M} (2^20), and @code{G} (2^30) are
 - recognized.
 - 
 - Default value is 5M.
 - 
 - @item Launch @var{args}
 - Launch an @command{ffmpeg} command when creating @command{ffserver}.
 - 
 - @var{args} must be a sequence of arguments to be provided to an
 - @command{ffmpeg} instance. The first provided argument is ignored, and
 - it is replaced by a path with the same dirname of the @command{ffserver}
 - instance, followed by the remaining argument and terminated with a
 - path corresponding to the feed.
 - 
 - When the launched process exits, @command{ffserver} will launch
 - another program instance.
 - 
 - In case you need a more complex @command{ffmpeg} configuration,
 - e.g. if you need to generate multiple FFM feeds with a single
 - @command{ffmpeg} instance, you should launch @command{ffmpeg} by hand.
 - 
 - This option is ignored in case the commandline option @option{-n} is
 - specified.
 - 
 - @item ACL @var{spec}
 - Specify the list of IP address which are allowed or denied to write
 - the feed. Multiple ACL options can be specified.
 - @end table
 - 
 - @section Stream section
 - 
 - A Stream section defines a stream provided by @command{ffserver}, and
 - identified by a single name.
 - 
 - The stream is sent when answering a request containing the stream
 - name.
 - 
 - A stream section must be introduced by the line:
 - @example
 - <Stream STREAM_NAME>
 - @end example
 - 
 - where @var{STREAM_NAME} specifies the unique name of the stream.
 - 
 - The following options are recognized within a Stream section.
 - 
 - Encoding options are marked with the @emph{encoding} tag, and they are
 - used to set the encoding parameters, and are mapped to libavcodec
 - encoding options. Not all encoding options are supported, in
 - particular it is not possible to set encoder private options. In order
 - to override the encoding options specified by @command{ffserver}, you
 - can use the @command{ffmpeg} @option{override_ffserver} commandline
 - option.
 - 
 - Only one of the @option{Feed} and @option{File} options should be set.
 - 
 - @table @option
 - @item Feed @var{feed_name}
 - Set the input feed. @var{feed_name} must correspond to an existing
 - feed defined in a @code{Feed} section.
 - 
 - When this option is set, encoding options are used to setup the
 - encoding operated by the remote @command{ffmpeg} process.
 - 
 - @item File @var{filename}
 - Set the filename of the pre-recorded input file to stream.
 - 
 - When this option is set, encoding options are ignored and the input
 - file content is re-streamed as is.
 - 
 - @item Format @var{format_name}
 - Set the format of the output stream.
 - 
 - Must be the name of a format recognized by FFmpeg. If set to
 - @samp{status}, it is treated as a status stream.
 - 
 - @item InputFormat @var{format_name}
 - Set input format. If not specified, it is automatically guessed.
 - 
 - @item Preroll @var{n}
 - Set this to the number of seconds backwards in time to start. Note that
 - most players will buffer 5-10 seconds of video, and also you need to allow
 - for a keyframe to appear in the data stream.
 - 
 - Default value is 0.
 - 
 - @item StartSendOnKey
 - Do not send stream until it gets the first key frame. By default
 - @command{ffserver} will send data immediately.
 - 
 - @item MaxTime @var{n}
 - Set the number of seconds to run. This value set the maximum duration
 - of the stream a client will be able to receive.
 - 
 - A value of 0 means that no limit is set on the stream duration.
 - 
 - @item ACL @var{spec}
 - Set ACL for the stream.
 - 
 - @item DynamicACL @var{spec}
 - 
 - @item RTSPOption @var{option}
 - 
 - @item MulticastAddress @var{address}
 - 
 - @item MulticastPort @var{port}
 - 
 - @item MulticastTTL @var{integer}
 - 
 - @item NoLoop
 - 
 - @item FaviconURL @var{url}
 - Set favicon (favourite icon) for the server status page. It is ignored
 - for regular streams.
 - 
 - @item Author @var{value}
 - @item Comment @var{value}
 - @item Copyright @var{value}
 - @item Title @var{value}
 - Set metadata corresponding to the option. All these options are
 - deprecated in favor of @option{Metadata}.
 - 
 - @item Metadata @var{key} @var{value}
 - Set metadata value on the output stream.
 - 
 - @item UseDefaults
 - @item NoDefaults
 - Control whether default codec options are used for the stream or not.
 - Default is @var{UseDefaults} unless disabled globally.
 - 
 - @item NoAudio
 - @item NoVideo
 - Suppress audio/video.
 - 
 - @item AudioCodec @var{codec_name} (@emph{encoding,audio})
 - Set audio codec.
 - 
 - @item AudioBitRate @var{rate} (@emph{encoding,audio})
 - Set bitrate for the audio stream in kbits per second.
 - 
 - @item AudioChannels @var{n} (@emph{encoding,audio})
 - Set number of audio channels.
 - 
 - @item AudioSampleRate @var{n} (@emph{encoding,audio})
 - Set sampling frequency for audio. When using low bitrates, you should
 - lower this frequency to 22050 or 11025. The supported frequencies
 - depend on the selected audio codec.
 - 
 - @item AVOptionAudio [@var{codec}:]@var{option} @var{value} (@emph{encoding,audio})
 - Set generic or private option for audio stream.
 - Private option must be prefixed with codec name or codec must be defined before.
 - 
 - @item AVPresetAudio @var{preset} (@emph{encoding,audio})
 - Set preset for audio stream.
 - 
 - @item VideoCodec @var{codec_name} (@emph{encoding,video})
 - Set video codec.
 - 
 - @item VideoBitRate @var{n} (@emph{encoding,video})
 - Set bitrate for the video stream in kbits per second.
 - 
 - @item VideoBitRateRange @var{range} (@emph{encoding,video})
 - Set video bitrate range.
 - 
 - A range must be specified in the form @var{minrate}-@var{maxrate}, and
 - specifies the @option{minrate} and @option{maxrate} encoding options
 - expressed in kbits per second.
 - 
 - @item VideoBitRateRangeTolerance @var{n} (@emph{encoding,video})
 - Set video bitrate tolerance in kbits per second.
 - 
 - @item PixelFormat @var{pixel_format} (@emph{encoding,video})
 - Set video pixel format.
 - 
 - @item Debug @var{integer} (@emph{encoding,video})
 - Set video @option{debug} encoding option.
 - 
 - @item Strict @var{integer} (@emph{encoding,video})
 - Set video @option{strict} encoding option.
 - 
 - @item VideoBufferSize @var{n} (@emph{encoding,video})
 - Set ratecontrol buffer size, expressed in KB.
 - 
 - @item VideoFrameRate @var{n} (@emph{encoding,video})
 - Set number of video frames per second.
 - 
 - @item VideoSize (@emph{encoding,video})
 - Set size of the video frame, must be an abbreviation or in the form
 - @var{W}x@var{H}.  See @ref{video size syntax,,the Video size section
 - in the ffmpeg-utils(1) manual,ffmpeg-utils}.
 - 
 - Default value is @code{160x128}.
 - 
 - @item VideoIntraOnly (@emph{encoding,video})
 - Transmit only intra frames (useful for low bitrates, but kills frame rate).
 - 
 - @item VideoGopSize @var{n} (@emph{encoding,video})
 - If non-intra only, an intra frame is transmitted every VideoGopSize
 - frames. Video synchronization can only begin at an intra frame.
 - 
 - @item VideoTag @var{tag} (@emph{encoding,video})
 - Set video tag.
 - 
 - @item VideoHighQuality (@emph{encoding,video})
 - @item Video4MotionVector (@emph{encoding,video})
 - 
 - @item BitExact (@emph{encoding,video})
 - Set bitexact encoding flag.
 - 
 - @item IdctSimple (@emph{encoding,video})
 - Set simple IDCT algorithm.
 - 
 - @item Qscale @var{n} (@emph{encoding,video})
 - Enable constant quality encoding, and set video qscale (quantization
 - scale) value, expressed in @var{n} QP units.
 - 
 - @item VideoQMin @var{n} (@emph{encoding,video})
 - @item VideoQMax @var{n} (@emph{encoding,video})
 - Set video qmin/qmax.
 - 
 - @item VideoQDiff @var{integer} (@emph{encoding,video})
 - Set video @option{qdiff} encoding option.
 - 
 - @item LumiMask @var{float} (@emph{encoding,video})
 - @item DarkMask @var{float} (@emph{encoding,video})
 - Set @option{lumi_mask}/@option{dark_mask} encoding options.
 - 
 - @item AVOptionVideo [@var{codec}:]@var{option} @var{value} (@emph{encoding,video})
 - Set generic or private option for video stream.
 - Private option must be prefixed with codec name or codec must be defined before.
 - 
 - @item AVPresetVideo @var{preset} (@emph{encoding,video})
 - Set preset for video stream.
 - 
 - @var{preset} must be the path of a preset file.
 - @end table
 - 
 - @subsection Server status stream
 - 
 - A server status stream is a special stream which is used to show
 - statistics about the @command{ffserver} operations.
 - 
 - It must be specified setting the option @option{Format} to
 - @samp{status}.
 - 
 - @section Redirect section
 - 
 - A redirect section specifies where to redirect the requested URL to
 - another page.
 - 
 - A redirect section must be introduced by the line:
 - @example
 - <Redirect NAME>
 - @end example
 - 
 - where @var{NAME} is the name of the page which should be redirected.
 - 
 - It only accepts the option @option{URL}, which specify the redirection
 - URL.
 - 
 - @chapter Stream examples
 - 
 - @itemize
 - @item
 - Multipart JPEG
 - @example
 - <Stream test.mjpg>
 - Feed feed1.ffm
 - Format mpjpeg
 - VideoFrameRate 2
 - VideoIntraOnly
 - NoAudio
 - Strict -1
 - </Stream>
 - @end example
 - 
 - @item
 - Single JPEG
 - @example
 - <Stream test.jpg>
 - Feed feed1.ffm
 - Format jpeg
 - VideoFrameRate 2
 - VideoIntraOnly
 - VideoSize 352x240
 - NoAudio
 - Strict -1
 - </Stream>
 - @end example
 - 
 - @item
 - Flash
 - @example
 - <Stream test.swf>
 - Feed feed1.ffm
 - Format swf
 - VideoFrameRate 2
 - VideoIntraOnly
 - NoAudio
 - </Stream>
 - @end example
 - 
 - @item
 - ASF compatible
 - @example
 - <Stream test.asf>
 - Feed feed1.ffm
 - Format asf
 - VideoFrameRate 15
 - VideoSize 352x240
 - VideoBitRate 256
 - VideoBufferSize 40
 - VideoGopSize 30
 - AudioBitRate 64
 - StartSendOnKey
 - </Stream>
 - @end example
 - 
 - @item
 - MP3 audio
 - @example
 - <Stream test.mp3>
 - Feed feed1.ffm
 - Format mp2
 - AudioCodec mp3
 - AudioBitRate 64
 - AudioChannels 1
 - AudioSampleRate 44100
 - NoVideo
 - </Stream>
 - @end example
 - 
 - @item
 - Ogg Vorbis audio
 - @example
 - <Stream test.ogg>
 - Feed feed1.ffm
 - Metadata title "Stream title"
 - AudioBitRate 64
 - AudioChannels 2
 - AudioSampleRate 44100
 - NoVideo
 - </Stream>
 - @end example
 - 
 - @item
 - Real with audio only at 32 kbits
 - @example
 - <Stream test.ra>
 - Feed feed1.ffm
 - Format rm
 - AudioBitRate 32
 - NoVideo
 - </Stream>
 - @end example
 - 
 - @item
 - Real with audio and video at 64 kbits
 - @example
 - <Stream test.rm>
 - Feed feed1.ffm
 - Format rm
 - AudioBitRate 32
 - VideoBitRate 128
 - VideoFrameRate 25
 - VideoGopSize 25
 - </Stream>
 - @end example
 - 
 - @item
 - For stream coming from a file: you only need to set the input filename
 - and optionally a new format.
 - 
 - @example
 - <Stream file.rm>
 - File "/usr/local/httpd/htdocs/tlive.rm"
 - NoAudio
 - </Stream>
 - @end example
 - 
 - @example
 - <Stream file.asf>
 - File "/usr/local/httpd/htdocs/test.asf"
 - NoAudio
 - Metadata author "Me"
 - Metadata copyright "Super MegaCorp"
 - Metadata title "Test stream from disk"
 - Metadata comment "Test comment"
 - </Stream>
 - @end example
 - @end itemize
 - 
 - @c man end
 - 
 - @include config.texi
 - @ifset config-all
 - @ifset config-avutil
 - @include utils.texi
 - @end ifset
 - @ifset config-avcodec
 - @include codecs.texi
 - @include bitstream_filters.texi
 - @end ifset
 - @ifset config-avformat
 - @include formats.texi
 - @include protocols.texi
 - @end ifset
 - @ifset config-avdevice
 - @include devices.texi
 - @end ifset
 - @ifset config-swresample
 - @include resampler.texi
 - @end ifset
 - @ifset config-swscale
 - @include scaler.texi
 - @end ifset
 - @ifset config-avfilter
 - @include filters.texi
 - @end ifset
 - @end ifset
 - 
 - @chapter See Also
 - 
 - @ifhtml
 - @ifset config-all
 - @url{ffserver.html,ffserver},
 - @end ifset
 - @ifset config-not-all
 - @url{ffserver-all.html,ffserver-all},
 - @end ifset
 - the @file{doc/ffserver.conf} example,
 - @url{ffmpeg.html,ffmpeg}, @url{ffplay.html,ffplay}, @url{ffprobe.html,ffprobe},
 - @url{ffmpeg-utils.html,ffmpeg-utils},
 - @url{ffmpeg-scaler.html,ffmpeg-scaler},
 - @url{ffmpeg-resampler.html,ffmpeg-resampler},
 - @url{ffmpeg-codecs.html,ffmpeg-codecs},
 - @url{ffmpeg-bitstream-filters.html,ffmpeg-bitstream-filters},
 - @url{ffmpeg-formats.html,ffmpeg-formats},
 - @url{ffmpeg-devices.html,ffmpeg-devices},
 - @url{ffmpeg-protocols.html,ffmpeg-protocols},
 - @url{ffmpeg-filters.html,ffmpeg-filters}
 - @end ifhtml
 - 
 - @ifnothtml
 - @ifset config-all
 - ffserver(1),
 - @end ifset
 - @ifset config-not-all
 - ffserver-all(1),
 - @end ifset
 - the @file{doc/ffserver.conf} example, ffmpeg(1), ffplay(1), ffprobe(1),
 - ffmpeg-utils(1), ffmpeg-scaler(1), ffmpeg-resampler(1),
 - ffmpeg-codecs(1), ffmpeg-bitstream-filters(1), ffmpeg-formats(1),
 - ffmpeg-devices(1), ffmpeg-protocols(1), ffmpeg-filters(1)
 - @end ifnothtml
 - 
 - @include authors.texi
 - 
 - @ignore
 - 
 - @setfilename ffserver
 - @settitle ffserver video server
 - 
 - @end ignore
 - 
 - @bye
 
 
  |