1 All the numerical options, if not specified otherwise, accept a string
2 representing a number as input, which may be followed by one of the SI
3 unit prefixes, for example: 'K', 'M', or 'G'.
5 If 'i' is appended to the SI unit prefix, the complete prefix will be
6 interpreted as a unit prefix for binary multiples, which are based on
7 powers of 1024 instead of powers of 1000. Appending 'B' to the SI unit
8 prefix multiplies the value by 8. This allows using, for example:
9 'KB', 'MiB', 'G' and 'B' as number suffixes.
11 Options which do not take arguments are boolean options, and set the
12 corresponding value to true. They can be set to false by prefixing
13 the option name with "no". For example using "-nofoo"
14 will set the boolean option with name "foo" to false.
16 @anchor{Stream specifiers}
17 @section Stream specifiers
18 Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
19 are used to precisely specify which stream(s) a given option belongs to.
21 A stream specifier is a string generally appended to the option name and
22 separated from it by a colon. E.g. @code{-codec:a:1 ac3} contains the
23 @code{a:1} stream specifier, which matches the second audio stream. Therefore, it
24 would select the ac3 codec for the second audio stream.
26 A stream specifier can match several streams, so that the option is applied to all
27 of them. E.g. the stream specifier in @code{-b:a 128k} matches all audio
30 An empty stream specifier matches all streams. For example, @code{-codec copy}
31 or @code{-codec: copy} would copy all the streams without reencoding.
33 Possible forms of stream specifiers are:
35 @item @var{stream_index}
36 Matches the stream with this index. E.g. @code{-threads:1 4} would set the
37 thread count for the second stream to 4. If @var{stream_index} is used as an
38 additional stream specifier (see below), then it selects stream number
39 @var{stream_index} from the matching streams. Stream numbering is based on the
40 order of the streams as detected by libavformat except when a program ID is
41 also specified. In this case it is based on the ordering of the streams in the
43 @item @var{stream_type}[:@var{additional_stream_specifier}]
44 @var{stream_type} is one of following: 'v' or 'V' for video, 'a' for audio, 's'
45 for subtitle, 'd' for data, and 't' for attachments. 'v' matches all video
46 streams, 'V' only matches video streams which are not attached pictures, video
47 thumbnails or cover arts. If @var{additional_stream_specifier} is used, then
48 it matches streams which both have this type and match the
49 @var{additional_stream_specifier}. Otherwise, it matches all streams of the
51 @item p:@var{program_id}[:@var{additional_stream_specifier}]
52 Matches streams which are in the program with the id @var{program_id}. If
53 @var{additional_stream_specifier} is used, then it matches streams which both
54 are part of the program and match the @var{additional_stream_specifier}.
56 @item #@var{stream_id} or i:@var{stream_id}
57 Match the stream by stream id (e.g. PID in MPEG-TS container).
58 @item m:@var{key}[:@var{value}]
59 Matches streams with the metadata tag @var{key} having the specified value. If
60 @var{value} is not given, matches streams that contain the given tag with any
63 Matches streams with usable configuration, the codec must be defined and the
64 essential information such as video dimension or audio sample rate must be present.
66 Note that in @command{ffmpeg}, matching by metadata will only work properly for
70 @section Generic options
72 These options are shared amongst the ff* tools.
79 @item -h, -?, -help, --help [@var{arg}]
80 Show help. An optional parameter may be specified to print help about a specific
81 item. If no argument is specified, only basic (non advanced) tool
84 Possible values of @var{arg} are:
87 Print advanced tool options in addition to the basic tool options.
90 Print complete list of options, including shared and private options
91 for encoders, decoders, demuxers, muxers, filters, etc.
93 @item decoder=@var{decoder_name}
94 Print detailed information about the decoder named @var{decoder_name}. Use the
95 @option{-decoders} option to get a list of all decoders.
97 @item encoder=@var{encoder_name}
98 Print detailed information about the encoder named @var{encoder_name}. Use the
99 @option{-encoders} option to get a list of all encoders.
101 @item demuxer=@var{demuxer_name}
102 Print detailed information about the demuxer named @var{demuxer_name}. Use the
103 @option{-formats} option to get a list of all demuxers and muxers.
105 @item muxer=@var{muxer_name}
106 Print detailed information about the muxer named @var{muxer_name}. Use the
107 @option{-formats} option to get a list of all muxers and demuxers.
109 @item filter=@var{filter_name}
110 Print detailed information about the filter named @var{filter_name}. Use the
111 @option{-filters} option to get a list of all filters.
113 @item bsf=@var{bitstream_filter_name}
114 Print detailed information about the bitstream filter named @var{bitstream_filter_name}.
115 Use the @option{-bsfs} option to get a list of all bitstream filters.
117 @item protocol=@var{protocol_name}
118 Print detailed information about the protocol named @var{protocol_name}.
119 Use the @option{-protocols} option to get a list of all protocols.
126 Show the build configuration, one option per line.
129 Show available formats (including devices).
132 Show available demuxers.
135 Show available muxers.
138 Show available devices.
141 Show all codecs known to libavcodec.
143 Note that the term 'codec' is used throughout this documentation as a shortcut
144 for what is more correctly called a media bitstream format.
147 Show available decoders.
150 Show all available encoders.
153 Show available bitstream filters.
156 Show available protocols.
159 Show available libavfilter filters.
162 Show available pixel formats.
165 Show available sample formats.
168 Show channel names and standard channel layouts.
171 Show recognized color names.
173 @item -sources @var{device}[,@var{opt1}=@var{val1}[,@var{opt2}=@var{val2}]...]
174 Show autodetected sources of the input device.
175 Some devices may provide system-dependent source names that cannot be autodetected.
176 The returned list cannot be assumed to be always complete.
178 ffmpeg -sources pulse,server=192.168.0.4
181 @item -sinks @var{device}[,@var{opt1}=@var{val1}[,@var{opt2}=@var{val2}]...]
182 Show autodetected sinks of the output device.
183 Some devices may provide system-dependent sink names that cannot be autodetected.
184 The returned list cannot be assumed to be always complete.
186 ffmpeg -sinks pulse,server=192.168.0.4
189 @item -loglevel [@var{flags}+]@var{loglevel} | -v [@var{flags}+]@var{loglevel}
190 Set logging level and flags used by the library.
192 The optional @var{flags} prefix can consist of the following values:
195 Indicates that repeated log output should not be compressed to the first line
196 and the "Last message repeated n times" line will be omitted.
198 Indicates that log output should add a @code{[level]} prefix to each message
199 line. This can be used as an alternative to log coloring, e.g. when dumping the
202 Flags can also be used alone by adding a '+'/'-' prefix to set/reset a single
203 flag without affecting other @var{flags} or changing @var{loglevel}. When
204 setting both @var{flags} and @var{loglevel}, a '+' separator is expected
205 between the last @var{flags} value and before @var{loglevel}.
207 @var{loglevel} is a string or a number containing one of the following values:
210 Show nothing at all; be silent.
212 Only show fatal errors which could lead the process to crash, such as
213 an assertion failure. This is not currently used for anything.
215 Only show fatal errors. These are errors after which the process absolutely
218 Show all errors, including ones which can be recovered from.
220 Show all warnings and errors. Any message related to possibly
221 incorrect or unexpected events will be shown.
223 Show informative messages during processing. This is in addition to
224 warnings and errors. This is the default value.
226 Same as @code{info}, except more verbose.
228 Show everything, including debugging information.
232 For example to enable repeated log output, add the @code{level} prefix, and set
233 @var{loglevel} to @code{verbose}:
235 ffmpeg -loglevel repeat+level+verbose -i input output
237 Another example that enables repeated log output without affecting current
238 state of @code{level} prefix flag or @var{loglevel}:
240 ffmpeg [...] -loglevel +repeat
243 By default the program logs to stderr. If coloring is supported by the
244 terminal, colors are used to mark errors and warnings. Log coloring
245 can be disabled setting the environment variable
246 @env{AV_LOG_FORCE_NOCOLOR}, or can be forced setting
247 the environment variable @env{AV_LOG_FORCE_COLOR}.
250 Dump full command line and log output to a file named
251 @code{@var{program}-@var{YYYYMMDD}-@var{HHMMSS}.log} in the current
253 This file can be useful for bug reports.
254 It also implies @code{-loglevel debug}.
256 Setting the environment variable @env{FFREPORT} to any value has the
257 same effect. If the value is a ':'-separated key=value sequence, these
258 options will affect the report; option values must be escaped if they
259 contain special characters or the options delimiter ':' (see the
260 ``Quoting and escaping'' section in the ffmpeg-utils manual).
262 The following options are recognized:
265 set the file name to use for the report; @code{%p} is expanded to the name
266 of the program, @code{%t} is expanded to a timestamp, @code{%%} is expanded
269 set the log verbosity level using a numerical value (see @code{-loglevel}).
272 For example, to output a report to a file named @file{ffreport.log}
273 using a log level of @code{32} (alias for log level @code{info}):
276 FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
279 Errors in parsing the environment variable are not fatal, and will not
280 appear in the report.
283 Suppress printing banner.
285 All FFmpeg tools will normally show a copyright notice, build options
286 and library versions. This option can be used to suppress printing
289 @item -cpuflags flags (@emph{global})
290 Allows setting and clearing cpu flags. This option is intended
291 for testing. Do not use it unless you know what you're doing.
293 ffmpeg -cpuflags -sse+mmx ...
294 ffmpeg -cpuflags mmx ...
295 ffmpeg -cpuflags 0 ...
297 Possible flags for this option are:
343 @item Specific Processors
356 @item -max_alloc @var{bytes}
357 Set the maximum size limit for allocating a block on the heap by ffmpeg's
358 family of malloc functions. Exercise @strong{extreme caution} when using
359 this option. Don't use if you do not understand the full consequence of doing so.
365 These options are provided directly by the libavformat, libavdevice and
366 libavcodec libraries. To see the list of available AVOptions, use the
367 @option{-help} option. They are separated into two categories:
370 These options can be set for any container, codec or device. Generic options
371 are listed under AVFormatContext options for containers/devices and under
372 AVCodecContext options for codecs.
374 These options are specific to the given container, device or codec. Private
375 options are listed under their corresponding containers/devices/codecs.
378 For example to write an ID3v2.3 header instead of a default ID3v2.4 to
379 an MP3 file, use the @option{id3v2_version} private option of the MP3
382 ffmpeg -i input.flac -id3v2_version 3 out.mp3
385 All codec AVOptions are per-stream, and thus a stream specifier
386 should be attached to them:
388 ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
391 In the above example, a multichannel audio stream is mapped twice for output.
392 The first instance is encoded with codec ac3 and bitrate 640k.
393 The second instance is downmixed to 2 channels and encoded with codec aac. A bitrate of 128k is specified for it using
394 absolute index of the output stream.
396 Note: the @option{-nooption} syntax cannot be used for boolean
397 AVOptions, use @option{-option 0}/@option{-option 1}.
399 Note: the old undocumented way of specifying per-stream AVOptions by
400 prepending v/a/s to the options name is now obsolete and will be