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