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