yading@10: .\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14) yading@10: .\" yading@10: .\" Standard preamble: yading@10: .\" ======================================================================== yading@10: .de Sp \" Vertical space (when we can't use .PP) yading@10: .if t .sp .5v yading@10: .if n .sp yading@10: .. yading@10: .de Vb \" Begin verbatim text yading@10: .ft CW yading@10: .nf yading@10: .ne \\$1 yading@10: .. yading@10: .de Ve \" End verbatim text yading@10: .ft R yading@10: .fi yading@10: .. yading@10: .\" Set up some character translations and predefined strings. \*(-- will yading@10: .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left yading@10: .\" double quote, and \*(R" will give a right double quote. \*(C+ will yading@10: .\" give a nicer C++. Capital omega is used to do unbreakable dashes and yading@10: .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, yading@10: .\" nothing in troff, for use with C<>. yading@10: .tr \(*W- yading@10: .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' yading@10: .ie n \{\ yading@10: . ds -- \(*W- yading@10: . ds PI pi yading@10: . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch yading@10: . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch yading@10: . ds L" "" yading@10: . ds R" "" yading@10: . ds C` "" yading@10: . ds C' "" yading@10: 'br\} yading@10: .el\{\ yading@10: . ds -- \|\(em\| yading@10: . ds PI \(*p yading@10: . ds L" `` yading@10: . ds R" '' yading@10: 'br\} yading@10: .\" yading@10: .\" Escape single quotes in literal strings from groff's Unicode transform. yading@10: .ie \n(.g .ds Aq \(aq yading@10: .el .ds Aq ' yading@10: .\" yading@10: .\" If the F register is turned on, we'll generate index entries on stderr for yading@10: .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index yading@10: .\" entries marked with X<> in POD. Of course, you'll have to process the yading@10: .\" output yourself in some meaningful fashion. yading@10: .ie \nF \{\ yading@10: . de IX yading@10: . tm Index:\\$1\t\\n%\t"\\$2" yading@10: .. yading@10: . nr % 0 yading@10: . rr F yading@10: .\} yading@10: .el \{\ yading@10: . de IX yading@10: .. yading@10: .\} yading@10: .\" yading@10: .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). yading@10: .\" Fear. Run. Save yourself. No user-serviceable parts. yading@10: . \" fudge factors for nroff and troff yading@10: .if n \{\ yading@10: . ds #H 0 yading@10: . ds #V .8m yading@10: . ds #F .3m yading@10: . ds #[ \f1 yading@10: . ds #] \fP yading@10: .\} yading@10: .if t \{\ yading@10: . ds #H ((1u-(\\\\n(.fu%2u))*.13m) yading@10: . ds #V .6m yading@10: . ds #F 0 yading@10: . ds #[ \& yading@10: . ds #] \& yading@10: .\} yading@10: . \" simple accents for nroff and troff yading@10: .if n \{\ yading@10: . ds ' \& yading@10: . ds ` \& yading@10: . ds ^ \& yading@10: . ds , \& yading@10: . ds ~ ~ yading@10: . ds / yading@10: .\} yading@10: .if t \{\ yading@10: . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" yading@10: . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' yading@10: . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' yading@10: . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' yading@10: . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' yading@10: . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' yading@10: .\} yading@10: . \" troff and (daisy-wheel) nroff accents yading@10: .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' yading@10: .ds 8 \h'\*(#H'\(*b\h'-\*(#H' yading@10: .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] yading@10: .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' yading@10: .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' yading@10: .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] yading@10: .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] yading@10: .ds ae a\h'-(\w'a'u*4/10)'e yading@10: .ds Ae A\h'-(\w'A'u*4/10)'E yading@10: . \" corrections for vroff yading@10: .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' yading@10: .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' yading@10: . \" for low resolution devices (crt and lpr) yading@10: .if \n(.H>23 .if \n(.V>19 \ yading@10: \{\ yading@10: . ds : e yading@10: . ds 8 ss yading@10: . ds o a yading@10: . ds d- d\h'-1'\(ga yading@10: . ds D- D\h'-1'\(hy yading@10: . ds th \o'bp' yading@10: . ds Th \o'LP' yading@10: . ds ae ae yading@10: . ds Ae AE yading@10: .\} yading@10: .rm #[ #] #H #V #F C yading@10: .\" ======================================================================== yading@10: .\" yading@10: .IX Title "FFSERVER 1" yading@10: .TH FFSERVER 1 "2013-04-21" " " " " yading@10: .\" For nroff, turn off justification. Always turn off hyphenation; it makes yading@10: .\" way too many mistakes in technical documents. yading@10: .if n .ad l yading@10: .nh yading@10: .SH "NAME" yading@10: ffserver \- ffserver video server yading@10: .SH "SYNOPSIS" yading@10: .IX Header "SYNOPSIS" yading@10: ffserver [\fIoptions\fR] yading@10: .SH "DESCRIPTION" yading@10: .IX Header "DESCRIPTION" yading@10: \&\fBffserver\fR is a streaming server for both audio and video. It yading@10: supports several live feeds, streaming from files and time shifting on yading@10: live feeds (you can seek to positions in the past on each live feed, yading@10: provided you specify a big enough feed storage in yading@10: \&\fIffserver.conf\fR). yading@10: .PP yading@10: \&\fBffserver\fR receives prerecorded files or \s-1FFM\s0 streams from some yading@10: \&\fBffmpeg\fR instance as input, then streams them over yading@10: \&\s-1RTP/RTSP/HTTP\s0. yading@10: .PP yading@10: An \fBffserver\fR instance will listen on some port as specified yading@10: in the configuration file. You can launch one or more instances of yading@10: \&\fBffmpeg\fR and send one or more \s-1FFM\s0 streams to the port where yading@10: ffserver is expecting to receive them. Alternately, you can make yading@10: \&\fBffserver\fR launch such \fBffmpeg\fR instances at startup. yading@10: .PP yading@10: Input streams are called feeds, and each one is specified by a yading@10: \&\f(CW\*(C`\*(C'\fR section in the configuration file. yading@10: .PP yading@10: For each feed you can have different output streams in various yading@10: formats, each one specified by a \f(CW\*(C`\*(C'\fR section in the yading@10: configuration file. yading@10: .SS "Status stream" yading@10: .IX Subsection "Status stream" yading@10: ffserver supports an \s-1HTTP\s0 interface which exposes the current status yading@10: of the server. yading@10: .PP yading@10: Simply point your browser to the address of the special status stream yading@10: specified in the configuration file. yading@10: .PP yading@10: For example if you have: yading@10: .PP yading@10: .Vb 2 yading@10: \& yading@10: \& Format status yading@10: \& yading@10: \& # Only allow local people to get the status yading@10: \& ACL allow localhost yading@10: \& ACL allow 192.168.0.0 192.168.255.255 yading@10: \& yading@10: .Ve yading@10: .PP yading@10: then the server will post a page with the status information when yading@10: the special stream \fIstatus.html\fR is requested. yading@10: .SS "What can this do?" yading@10: .IX Subsection "What can this do?" yading@10: When properly configured and running, you can capture video and audio in real yading@10: time from a suitable capture card, and stream it out over the Internet to yading@10: either Windows Media Player or RealAudio player (with some restrictions). yading@10: .PP yading@10: It can also stream from files, though that is currently broken. Very often, a yading@10: web server can be used to serve up the files just as well. yading@10: .PP yading@10: It can stream prerecorded video from .ffm files, though it is somewhat tricky yading@10: to make it work correctly. yading@10: .SS "How do I make it work?" yading@10: .IX Subsection "How do I make it work?" yading@10: First, build the kit. It *really* helps to have installed \s-1LAME\s0 first. Then when yading@10: you run the ffserver ./configure, make sure that you have the yading@10: \&\f(CW\*(C`\-\-enable\-libmp3lame\*(C'\fR flag turned on. yading@10: .PP yading@10: \&\s-1LAME\s0 is important as it allows for streaming audio to Windows Media Player. yading@10: Don't ask why the other audio types do not work. yading@10: .PP yading@10: As a simple test, just run the following two command lines where \s-1INPUTFILE\s0 yading@10: is some file which you can decode with ffmpeg: yading@10: .PP yading@10: .Vb 2 yading@10: \& ffserver \-f doc/ffserver.conf & yading@10: \& ffmpeg \-i INPUTFILE http://localhost:8090/feed1.ffm yading@10: .Ve yading@10: .PP yading@10: At this point you should be able to go to your Windows machine and fire up yading@10: Windows Media Player (\s-1WMP\s0). Go to Open \s-1URL\s0 and enter yading@10: .PP yading@10: .Vb 1 yading@10: \& http://:8090/test.asf yading@10: .Ve yading@10: .PP yading@10: You should (after a short delay) see video and hear audio. yading@10: .PP yading@10: \&\s-1WARNING:\s0 trying to stream test1.mpg doesn't work with \s-1WMP\s0 as it tries to yading@10: transfer the entire file before starting to play. yading@10: The same is true of \s-1AVI\s0 files. yading@10: .SS "What happens next?" yading@10: .IX Subsection "What happens next?" yading@10: You should edit the ffserver.conf file to suit your needs (in terms of yading@10: frame rates etc). Then install ffserver and ffmpeg, write a script to start yading@10: them up, and off you go. yading@10: .SS "Troubleshooting" yading@10: .IX Subsection "Troubleshooting" yading@10: \fII don't hear any audio, but video is fine.\fR yading@10: .IX Subsection "I don't hear any audio, but video is fine." yading@10: .PP yading@10: Maybe you didn't install \s-1LAME\s0, or got your ./configure statement wrong. Check yading@10: the ffmpeg output to see if a line referring to \s-1MP3\s0 is present. If not, then yading@10: your configuration was incorrect. If it is, then maybe your wiring is not yading@10: set up correctly. Maybe the sound card is not getting data from the right yading@10: input source. Maybe you have a really awful audio interface (like I do) yading@10: that only captures in stereo and also requires that one channel be flipped. yading@10: If you are one of these people, then export 'AUDIO_FLIP_LEFT=1' before yading@10: starting ffmpeg. yading@10: .PP yading@10: \fIThe audio and video lose sync after a while.\fR yading@10: .IX Subsection "The audio and video lose sync after a while." yading@10: .PP yading@10: Yes, they do. yading@10: .PP yading@10: \fIAfter a long while, the video update rate goes way down in \s-1WMP\s0.\fR yading@10: .IX Subsection "After a long while, the video update rate goes way down in WMP." yading@10: .PP yading@10: Yes, it does. Who knows why? yading@10: .PP yading@10: \fI\s-1WMP\s0 6.4 behaves differently to \s-1WMP\s0 7.\fR yading@10: .IX Subsection "WMP 6.4 behaves differently to WMP 7." yading@10: .PP yading@10: Yes, it does. Any thoughts on this would be gratefully received. These yading@10: differences extend to embedding \s-1WMP\s0 into a web page. [There are two yading@10: object IDs that you can use: The old one, which does not play well, and yading@10: the new one, which does (both tested on the same system). However, yading@10: I suspect that the new one is not available unless you have installed \s-1WMP\s0 7]. yading@10: .SS "What else can it do?" yading@10: .IX Subsection "What else can it do?" yading@10: You can replay video from .ffm files that was recorded earlier. yading@10: However, there are a number of caveats, including the fact that the yading@10: ffserver parameters must match the original parameters used to record the yading@10: file. If they do not, then ffserver deletes the file before recording into it. yading@10: (Now that I write this, it seems broken). yading@10: .PP yading@10: You can fiddle with many of the codec choices and encoding parameters, and yading@10: there are a bunch more parameters that you cannot control. Post a message yading@10: to the mailing list if there are some 'must have' parameters. Look in yading@10: ffserver.conf for a list of the currently available controls. yading@10: .PP yading@10: It will automatically generate the \s-1ASX\s0 or \s-1RAM\s0 files that are often used yading@10: in browsers. These files are actually redirections to the underlying \s-1ASF\s0 yading@10: or \s-1RM\s0 file. The reason for this is that the browser often fetches the yading@10: entire file before starting up the external viewer. The redirection files yading@10: are very small and can be transferred quickly. [The stream itself is yading@10: often 'infinite' and thus the browser tries to download it and never yading@10: finishes.] yading@10: .SS "Tips" yading@10: .IX Subsection "Tips" yading@10: * When you connect to a live stream, most players (\s-1WMP\s0, \s-1RA\s0, etc) want to yading@10: buffer a certain number of seconds of material so that they can display the yading@10: signal continuously. However, ffserver (by default) starts sending data yading@10: in realtime. This means that there is a pause of a few seconds while the yading@10: buffering is being done by the player. The good news is that this can be yading@10: cured by adding a '?buffer=5' to the end of the \s-1URL\s0. This means that the yading@10: stream should start 5 seconds in the past \*(-- and so the first 5 seconds yading@10: of the stream are sent as fast as the network will allow. It will then yading@10: slow down to real time. This noticeably improves the startup experience. yading@10: .PP yading@10: You can also add a 'Preroll 15' statement into the ffserver.conf that will yading@10: add the 15 second prebuffering on all requests that do not otherwise yading@10: specify a time. In addition, ffserver will skip frames until a key_frame yading@10: is found. This further reduces the startup delay by not transferring data yading@10: that will be discarded. yading@10: .PP yading@10: * You may want to adjust the MaxBandwidth in the ffserver.conf to limit yading@10: the amount of bandwidth consumed by live streams. yading@10: .SS "Why does the ?buffer / Preroll stop working after a time?" yading@10: .IX Subsection "Why does the ?buffer / Preroll stop working after a time?" yading@10: It turns out that (on my machine at least) the number of frames successfully yading@10: grabbed is marginally less than the number that ought to be grabbed. This yading@10: means that the timestamp in the encoded data stream gets behind realtime. yading@10: This means that if you say 'Preroll 10', then when the stream gets 10 yading@10: or more seconds behind, there is no Preroll left. yading@10: .PP yading@10: Fixing this requires a change in the internals of how timestamps are yading@10: handled. yading@10: .ie n .SS "Does the ""?date="" stuff work." yading@10: .el .SS "Does the \f(CW?date=\fP stuff work." yading@10: .IX Subsection "Does the ?date= stuff work." yading@10: Yes (subject to the limitation outlined above). Also note that whenever you yading@10: start ffserver, it deletes the ffm file (if any parameters have changed), yading@10: thus wiping out what you had recorded before. yading@10: .PP yading@10: The format of the \f(CW\*(C`?date=xxxxxx\*(C'\fR is fairly flexible. You should use one yading@10: of the following formats (the 'T' is literal): yading@10: .PP yading@10: .Vb 2 yading@10: \& * YYYY\-MM\-DDTHH:MM:SS (localtime) yading@10: \& * YYYY\-MM\-DDTHH:MM:SSZ (UTC) yading@10: .Ve yading@10: .PP yading@10: You can omit the YYYY-MM-DD, and then it refers to the current day. However yading@10: note that \fB?date=16:00:00\fR refers to 16:00 on the current day \*(-- this yading@10: may be in the future and so is unlikely to be useful. yading@10: .PP yading@10: You use this by adding the ?date= to the end of the \s-1URL\s0 for the stream. yading@10: For example: \fBhttp://localhost:8080/test.asf?date=2002\-07\-26T23:05:00\fR. yading@10: .SS "What is \s-1FFM\s0, \s-1FFM2\s0" yading@10: .IX Subsection "What is FFM, FFM2" yading@10: \&\s-1FFM\s0 and \s-1FFM2\s0 are formats used by ffserver. They allow storing a wide variety of yading@10: video and audio streams and encoding options, and can store a moving time segment yading@10: of an infinite movie or a whole movie. yading@10: .PP yading@10: \&\s-1FFM\s0 is version specific, and there is limited compatibility of \s-1FFM\s0 files yading@10: generated by one version of ffmpeg/ffserver and another version of yading@10: ffmpeg/ffserver. It may work but it is not guaranteed to work. yading@10: .PP yading@10: \&\s-1FFM2\s0 is extensible while maintaining compatibility and should work between yading@10: differing versions of tools. \s-1FFM2\s0 is the default. yading@10: .SH "OPTIONS" yading@10: .IX Header "OPTIONS" yading@10: All the numerical options, if not specified otherwise, accept a string yading@10: representing a number as input, which may be followed by one of the \s-1SI\s0 yading@10: unit prefixes, for example: 'K', 'M', or 'G'. yading@10: .PP yading@10: If 'i' is appended to the \s-1SI\s0 unit prefix, the complete prefix will be yading@10: interpreted as a unit prefix for binary multiplies, which are based on yading@10: powers of 1024 instead of powers of 1000. Appending 'B' to the \s-1SI\s0 unit yading@10: prefix multiplies the value by 8. This allows using, for example: yading@10: \&'\s-1KB\s0', 'MiB', 'G' and 'B' as number suffixes. yading@10: .PP yading@10: Options which do not take arguments are boolean options, and set the yading@10: corresponding value to true. They can be set to false by prefixing yading@10: the option name with \*(L"no\*(R". For example using \*(L"\-nofoo\*(R" yading@10: will set the boolean option with name \*(L"foo\*(R" to false. yading@10: .SS "Stream specifiers" yading@10: .IX Subsection "Stream specifiers" yading@10: Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers yading@10: are used to precisely specify which stream(s) a given option belongs to. yading@10: .PP yading@10: A stream specifier is a string generally appended to the option name and yading@10: separated from it by a colon. E.g. \f(CW\*(C`\-codec:a:1 ac3\*(C'\fR contains the yading@10: \&\f(CW\*(C`a:1\*(C'\fR stream specifier, which matches the second audio stream. Therefore, it yading@10: would select the ac3 codec for the second audio stream. yading@10: .PP yading@10: A stream specifier can match several streams, so that the option is applied to all yading@10: of them. E.g. the stream specifier in \f(CW\*(C`\-b:a 128k\*(C'\fR matches all audio yading@10: streams. yading@10: .PP yading@10: An empty stream specifier matches all streams. For example, \f(CW\*(C`\-codec copy\*(C'\fR yading@10: or \f(CW\*(C`\-codec: copy\*(C'\fR would copy all the streams without reencoding. yading@10: .PP yading@10: Possible forms of stream specifiers are: yading@10: .IP "\fIstream_index\fR" 4 yading@10: .IX Item "stream_index" yading@10: Matches the stream with this index. E.g. \f(CW\*(C`\-threads:1 4\*(C'\fR would set the yading@10: thread count for the second stream to 4. yading@10: .IP "\fIstream_type\fR\fB[:\fR\fIstream_index\fR\fB]\fR" 4 yading@10: .IX Item "stream_type[:stream_index]" yading@10: \&\fIstream_type\fR is one of following: 'v' for video, 'a' for audio, 's' for subtitle, yading@10: \&'d' for data, and 't' for attachments. If \fIstream_index\fR is given, then it matches yading@10: stream number \fIstream_index\fR of this type. Otherwise, it matches all yading@10: streams of this type. yading@10: .IP "\fBp:\fR\fIprogram_id\fR\fB[:\fR\fIstream_index\fR\fB]\fR" 4 yading@10: .IX Item "p:program_id[:stream_index]" yading@10: If \fIstream_index\fR is given, then it matches the stream with number \fIstream_index\fR yading@10: in the program with the id \fIprogram_id\fR. Otherwise, it matches all streams in the yading@10: program. yading@10: .IP "\fB#\fR\fIstream_id\fR" 4 yading@10: .IX Item "#stream_id" yading@10: Matches the stream by a format-specific \s-1ID\s0. yading@10: .SS "Generic options" yading@10: .IX Subsection "Generic options" yading@10: These options are shared amongst the ff* tools. yading@10: .IP "\fB\-L\fR" 4 yading@10: .IX Item "-L" yading@10: Show license. yading@10: .IP "\fB\-h, \-?, \-help, \-\-help [\fR\fIarg\fR\fB]\fR" 4 yading@10: .IX Item "-h, -?, -help, --help [arg]" yading@10: Show help. An optional parameter may be specified to print help about a specific yading@10: item. yading@10: .Sp yading@10: Possible values of \fIarg\fR are: yading@10: .RS 4 yading@10: .IP "\fBdecoder=\fR\fIdecoder_name\fR" 4 yading@10: .IX Item "decoder=decoder_name" yading@10: Print detailed information about the decoder named \fIdecoder_name\fR. Use the yading@10: \&\fB\-decoders\fR option to get a list of all decoders. yading@10: .IP "\fBencoder=\fR\fIencoder_name\fR" 4 yading@10: .IX Item "encoder=encoder_name" yading@10: Print detailed information about the encoder named \fIencoder_name\fR. Use the yading@10: \&\fB\-encoders\fR option to get a list of all encoders. yading@10: .IP "\fBdemuxer=\fR\fIdemuxer_name\fR" 4 yading@10: .IX Item "demuxer=demuxer_name" yading@10: Print detailed information about the demuxer named \fIdemuxer_name\fR. Use the yading@10: \&\fB\-formats\fR option to get a list of all demuxers and muxers. yading@10: .IP "\fBmuxer=\fR\fImuxer_name\fR" 4 yading@10: .IX Item "muxer=muxer_name" yading@10: Print detailed information about the muxer named \fImuxer_name\fR. Use the yading@10: \&\fB\-formats\fR option to get a list of all muxers and demuxers. yading@10: .IP "\fBfilter=\fR\fIfilter_name\fR" 4 yading@10: .IX Item "filter=filter_name" yading@10: Print detailed information about the filter name \fIfilter_name\fR. Use the yading@10: \&\fB\-filters\fR option to get a list of all filters. yading@10: .RE yading@10: .RS 4 yading@10: .RE yading@10: .IP "\fB\-version\fR" 4 yading@10: .IX Item "-version" yading@10: Show version. yading@10: .IP "\fB\-formats\fR" 4 yading@10: .IX Item "-formats" yading@10: Show available formats. yading@10: .IP "\fB\-codecs\fR" 4 yading@10: .IX Item "-codecs" yading@10: Show all codecs known to libavcodec. yading@10: .Sp yading@10: Note that the term 'codec' is used throughout this documentation as a shortcut yading@10: for what is more correctly called a media bitstream format. yading@10: .IP "\fB\-decoders\fR" 4 yading@10: .IX Item "-decoders" yading@10: Show available decoders. yading@10: .IP "\fB\-encoders\fR" 4 yading@10: .IX Item "-encoders" yading@10: Show all available encoders. yading@10: .IP "\fB\-bsfs\fR" 4 yading@10: .IX Item "-bsfs" yading@10: Show available bitstream filters. yading@10: .IP "\fB\-protocols\fR" 4 yading@10: .IX Item "-protocols" yading@10: Show available protocols. yading@10: .IP "\fB\-filters\fR" 4 yading@10: .IX Item "-filters" yading@10: Show available libavfilter filters. yading@10: .IP "\fB\-pix_fmts\fR" 4 yading@10: .IX Item "-pix_fmts" yading@10: Show available pixel formats. yading@10: .IP "\fB\-sample_fmts\fR" 4 yading@10: .IX Item "-sample_fmts" yading@10: Show available sample formats. yading@10: .IP "\fB\-layouts\fR" 4 yading@10: .IX Item "-layouts" yading@10: Show channel names and standard channel layouts. yading@10: .IP "\fB\-loglevel [repeat+]\fR\fIloglevel\fR \fB| \-v [repeat+]\fR\fIloglevel\fR" 4 yading@10: .IX Item "-loglevel [repeat+]loglevel | -v [repeat+]loglevel" yading@10: Set the logging level used by the library. yading@10: Adding \*(L"repeat+\*(R" indicates that repeated log output should not be compressed yading@10: to the first line and the \*(L"Last message repeated n times\*(R" line will be yading@10: omitted. \*(L"repeat\*(R" can also be used alone. yading@10: If \*(L"repeat\*(R" is used alone, and with no prior loglevel set, the default yading@10: loglevel will be used. If multiple loglevel parameters are given, using yading@10: \&'repeat' will not change the loglevel. yading@10: \&\fIloglevel\fR is a number or a string containing one of the following values: yading@10: .RS 4 yading@10: .IP "\fBquiet\fR" 4 yading@10: .IX Item "quiet" yading@10: Show nothing at all; be silent. yading@10: .IP "\fBpanic\fR" 4 yading@10: .IX Item "panic" yading@10: Only show fatal errors which could lead the process to crash, such as yading@10: and assert failure. This is not currently used for anything. yading@10: .IP "\fBfatal\fR" 4 yading@10: .IX Item "fatal" yading@10: Only show fatal errors. These are errors after which the process absolutely yading@10: cannot continue after. yading@10: .IP "\fBerror\fR" 4 yading@10: .IX Item "error" yading@10: Show all errors, including ones which can be recovered from. yading@10: .IP "\fBwarning\fR" 4 yading@10: .IX Item "warning" yading@10: Show all warnings and errors. Any message related to possibly yading@10: incorrect or unexpected events will be shown. yading@10: .IP "\fBinfo\fR" 4 yading@10: .IX Item "info" yading@10: Show informative messages during processing. This is in addition to yading@10: warnings and errors. This is the default value. yading@10: .IP "\fBverbose\fR" 4 yading@10: .IX Item "verbose" yading@10: Same as \f(CW\*(C`info\*(C'\fR, except more verbose. yading@10: .IP "\fBdebug\fR" 4 yading@10: .IX Item "debug" yading@10: Show everything, including debugging information. yading@10: .RE yading@10: .RS 4 yading@10: .Sp yading@10: By default the program logs to stderr, if coloring is supported by the yading@10: terminal, colors are used to mark errors and warnings. Log coloring yading@10: can be disabled setting the environment variable yading@10: \&\fB\s-1AV_LOG_FORCE_NOCOLOR\s0\fR or \fB\s-1NO_COLOR\s0\fR, or can be forced setting yading@10: the environment variable \fB\s-1AV_LOG_FORCE_COLOR\s0\fR. yading@10: The use of the environment variable \fB\s-1NO_COLOR\s0\fR is deprecated and yading@10: will be dropped in a following FFmpeg version. yading@10: .RE yading@10: .IP "\fB\-report\fR" 4 yading@10: .IX Item "-report" yading@10: Dump full command line and console output to a file named yading@10: \&\f(CW\*(C`\f(CIprogram\f(CW\-\f(CIYYYYMMDD\f(CW\-\f(CIHHMMSS\f(CW.log\*(C'\fR in the current yading@10: directory. yading@10: This file can be useful for bug reports. yading@10: It also implies \f(CW\*(C`\-loglevel verbose\*(C'\fR. yading@10: .Sp yading@10: Setting the environment variable \f(CW\*(C`FFREPORT\*(C'\fR to any value has the yading@10: same effect. If the value is a ':'\-separated key=value sequence, these yading@10: options will affect the report; options values must be escaped if they yading@10: contain special characters or the options delimiter ':' (see the yading@10: ``Quoting and escaping'' section in the ffmpeg-utils manual). The yading@10: following option is recognized: yading@10: .RS 4 yading@10: .IP "\fBfile\fR" 4 yading@10: .IX Item "file" yading@10: set the file name to use for the report; \f(CW%p\fR is expanded to the name yading@10: of the program, \f(CW%t\fR is expanded to a timestamp, \f(CW\*(C`%%\*(C'\fR is expanded yading@10: to a plain \f(CW\*(C`%\*(C'\fR yading@10: .RE yading@10: .RS 4 yading@10: .Sp yading@10: Errors in parsing the environment variable are not fatal, and will not yading@10: appear in the report. yading@10: .RE yading@10: .IP "\fB\-cpuflags flags (\fR\fIglobal\fR\fB)\fR" 4 yading@10: .IX Item "-cpuflags flags (global)" yading@10: Allows setting and clearing cpu flags. This option is intended yading@10: for testing. Do not use it unless you know what you're doing. yading@10: .Sp yading@10: .Vb 3 yading@10: \& ffmpeg \-cpuflags \-sse+mmx ... yading@10: \& ffmpeg \-cpuflags mmx ... yading@10: \& ffmpeg \-cpuflags 0 ... yading@10: .Ve yading@10: .Sp yading@10: Possible flags for this option are: yading@10: .RS 4 yading@10: .IP "\fBx86\fR" 4 yading@10: .IX Item "x86" yading@10: .RS 4 yading@10: .PD 0 yading@10: .IP "\fBmmx\fR" 4 yading@10: .IX Item "mmx" yading@10: .IP "\fBmmxext\fR" 4 yading@10: .IX Item "mmxext" yading@10: .IP "\fBsse\fR" 4 yading@10: .IX Item "sse" yading@10: .IP "\fBsse2\fR" 4 yading@10: .IX Item "sse2" yading@10: .IP "\fBsse2slow\fR" 4 yading@10: .IX Item "sse2slow" yading@10: .IP "\fBsse3\fR" 4 yading@10: .IX Item "sse3" yading@10: .IP "\fBsse3slow\fR" 4 yading@10: .IX Item "sse3slow" yading@10: .IP "\fBssse3\fR" 4 yading@10: .IX Item "ssse3" yading@10: .IP "\fBatom\fR" 4 yading@10: .IX Item "atom" yading@10: .IP "\fBsse4.1\fR" 4 yading@10: .IX Item "sse4.1" yading@10: .IP "\fBsse4.2\fR" 4 yading@10: .IX Item "sse4.2" yading@10: .IP "\fBavx\fR" 4 yading@10: .IX Item "avx" yading@10: .IP "\fBxop\fR" 4 yading@10: .IX Item "xop" yading@10: .IP "\fBfma4\fR" 4 yading@10: .IX Item "fma4" yading@10: .IP "\fB3dnow\fR" 4 yading@10: .IX Item "3dnow" yading@10: .IP "\fB3dnowext\fR" 4 yading@10: .IX Item "3dnowext" yading@10: .IP "\fBcmov\fR" 4 yading@10: .IX Item "cmov" yading@10: .RE yading@10: .RS 4 yading@10: .RE yading@10: .IP "\fB\s-1ARM\s0\fR" 4 yading@10: .IX Item "ARM" yading@10: .RS 4 yading@10: .IP "\fBarmv5te\fR" 4 yading@10: .IX Item "armv5te" yading@10: .IP "\fBarmv6\fR" 4 yading@10: .IX Item "armv6" yading@10: .IP "\fBarmv6t2\fR" 4 yading@10: .IX Item "armv6t2" yading@10: .IP "\fBvfp\fR" 4 yading@10: .IX Item "vfp" yading@10: .IP "\fBvfpv3\fR" 4 yading@10: .IX Item "vfpv3" yading@10: .IP "\fBneon\fR" 4 yading@10: .IX Item "neon" yading@10: .RE yading@10: .RS 4 yading@10: .RE yading@10: .IP "\fBPowerPC\fR" 4 yading@10: .IX Item "PowerPC" yading@10: .RS 4 yading@10: .IP "\fBaltivec\fR" 4 yading@10: .IX Item "altivec" yading@10: .RE yading@10: .RS 4 yading@10: .RE yading@10: .IP "\fBSpecific Processors\fR" 4 yading@10: .IX Item "Specific Processors" yading@10: .RS 4 yading@10: .IP "\fBpentium2\fR" 4 yading@10: .IX Item "pentium2" yading@10: .IP "\fBpentium3\fR" 4 yading@10: .IX Item "pentium3" yading@10: .IP "\fBpentium4\fR" 4 yading@10: .IX Item "pentium4" yading@10: .IP "\fBk6\fR" 4 yading@10: .IX Item "k6" yading@10: .IP "\fBk62\fR" 4 yading@10: .IX Item "k62" yading@10: .IP "\fBathlon\fR" 4 yading@10: .IX Item "athlon" yading@10: .IP "\fBathlonxp\fR" 4 yading@10: .IX Item "athlonxp" yading@10: .IP "\fBk8\fR" 4 yading@10: .IX Item "k8" yading@10: .RE yading@10: .RS 4 yading@10: .RE yading@10: .RE yading@10: .RS 4 yading@10: .RE yading@10: .IP "\fB\-opencl_options options (\fR\fIglobal\fR\fB)\fR" 4 yading@10: .IX Item "-opencl_options options (global)" yading@10: .PD yading@10: Set OpenCL environment options. This option is only available when yading@10: FFmpeg has been compiled with \f(CW\*(C`\-\-enable\-opencl\*(C'\fR. yading@10: .Sp yading@10: \&\fIoptions\fR must be a list of \fIkey\fR=\fIvalue\fR option pairs yading@10: separated by ':'. See the ``OpenCL Options'' section in the yading@10: ffmpeg-utils manual for the list of supported options. yading@10: .SS "AVOptions" yading@10: .IX Subsection "AVOptions" yading@10: These options are provided directly by the libavformat, libavdevice and yading@10: libavcodec libraries. To see the list of available AVOptions, use the yading@10: \&\fB\-help\fR option. They are separated into two categories: yading@10: .IP "\fBgeneric\fR" 4 yading@10: .IX Item "generic" yading@10: These options can be set for any container, codec or device. Generic options yading@10: are listed under AVFormatContext options for containers/devices and under yading@10: AVCodecContext options for codecs. yading@10: .IP "\fBprivate\fR" 4 yading@10: .IX Item "private" yading@10: These options are specific to the given container, device or codec. Private yading@10: options are listed under their corresponding containers/devices/codecs. yading@10: .PP yading@10: For example to write an ID3v2.3 header instead of a default ID3v2.4 to yading@10: an \s-1MP3\s0 file, use the \fBid3v2_version\fR private option of the \s-1MP3\s0 yading@10: muxer: yading@10: .PP yading@10: .Vb 1 yading@10: \& ffmpeg \-i input.flac \-id3v2_version 3 out.mp3 yading@10: .Ve yading@10: .PP yading@10: All codec AVOptions are obviously per-stream, so the chapter on stream yading@10: specifiers applies to them yading@10: .PP yading@10: Note \fB\-nooption\fR syntax cannot be used for boolean AVOptions, yading@10: use \fB\-option 0\fR/\fB\-option 1\fR. yading@10: .PP yading@10: Note2 old undocumented way of specifying per-stream AVOptions by prepending yading@10: v/a/s to the options name is now obsolete and will be removed soon. yading@10: .SS "Main options" yading@10: .IX Subsection "Main options" yading@10: .IP "\fB\-f\fR \fIconfigfile\fR" 4 yading@10: .IX Item "-f configfile" yading@10: Use \fIconfigfile\fR instead of \fI/etc/ffserver.conf\fR. yading@10: .IP "\fB\-n\fR" 4 yading@10: .IX Item "-n" yading@10: Enable no-launch mode. This option disables all the Launch directives yading@10: within the various sections. Since ffserver will not launch yading@10: any ffmpeg instances, you will have to launch them manually. yading@10: .IP "\fB\-d\fR" 4 yading@10: .IX Item "-d" yading@10: Enable debug mode. This option increases log verbosity, directs log yading@10: messages to stdout. yading@10: .SH "SEE ALSO" yading@10: .IX Header "SEE ALSO" yading@10: \&\fIffserver\-all\fR\|(1), yading@10: the \fIdoc/ffserver.conf\fR example, \fIffmpeg\fR\|(1), \fIffplay\fR\|(1), \fIffprobe\fR\|(1), yading@10: \&\fIffmpeg\-utils\fR\|(1), \fIffmpeg\-scaler\fR\|(1), \fIffmpeg\-resampler\fR\|(1), yading@10: \&\fIffmpeg\-codecs\fR\|(1), \fIffmpeg\-bitstream\-filters\fR\|(1), \fIffmpeg\-formats\fR\|(1), yading@10: \&\fIffmpeg\-devices\fR\|(1), \fIffmpeg\-protocols\fR\|(1), \fIffmpeg\-filters\fR\|(1) yading@10: .SH "AUTHORS" yading@10: .IX Header "AUTHORS" yading@10: The FFmpeg developers. yading@10: .PP yading@10: For details about the authorship, see the Git history of the project yading@10: (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command yading@10: \&\fBgit log\fR in the FFmpeg source directory, or browsing the yading@10: online repository at <\fBhttp://source.ffmpeg.org\fR>. yading@10: .PP yading@10: Maintainers for the specific components are listed in the file yading@10: \&\fI\s-1MAINTAINERS\s0\fR in the source code tree.