1All the numerical options, if not specified otherwise, accept a string 2representing a number as input, which may be followed by one of the SI 3unit prefixes, for example: 'K', 'M', or 'G'. 4 5If 'i' is appended to the SI unit prefix, the complete prefix will be 6interpreted as a unit prefix for binary multiples, which are based on 7powers of 1024 instead of powers of 1000. Appending 'B' to the SI unit 8prefix multiplies the value by 8. This allows using, for example: 9'KB', 'MiB', 'G' and 'B' as number suffixes. 10 11Options which do not take arguments are boolean options, and set the 12corresponding value to true. They can be set to false by prefixing 13the option name with "no". For example using "-nofoo" 14will set the boolean option with name "foo" to false. 15 16@anchor{Stream specifiers} 17@section Stream specifiers 18Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers 19are used to precisely specify which stream(s) a given option belongs to. 20 21A stream specifier is a string generally appended to the option name and 22separated 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 24would select the ac3 codec for the second audio stream. 25 26A stream specifier can match several streams, so that the option is applied to all 27of them. E.g. the stream specifier in @code{-b:a 128k} matches all audio 28streams. 29 30An empty stream specifier matches all streams. For example, @code{-codec copy} 31or @code{-codec: copy} would copy all the streams without reencoding. 32 33Possible forms of stream specifiers are: 34@table @option 35@item @var{stream_index} 36Matches the stream with this index. E.g. @code{-threads:1 4} would set the 37thread count for the second stream to 4. If @var{stream_index} is used as an 38additional stream specifier (see below), then it selects stream number 39@var{stream_index} from the matching streams. Stream numbering is based on the 40order of the streams as detected by libavformat except when a program ID is 41also specified. In this case it is based on the ordering of the streams in the 42program. 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' 45for subtitle, 'd' for data, and 't' for attachments. 'v' matches all video 46streams, 'V' only matches video streams which are not attached pictures, video 47thumbnails or cover arts. If @var{additional_stream_specifier} is used, then 48it matches streams which both have this type and match the 49@var{additional_stream_specifier}. Otherwise, it matches all streams of the 50specified type. 51@item p:@var{program_id}[:@var{additional_stream_specifier}] 52Matches 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 54are part of the program and match the @var{additional_stream_specifier}. 55 56@item #@var{stream_id} or i:@var{stream_id} 57Match the stream by stream id (e.g. PID in MPEG-TS container). 58@item m:@var{key}[:@var{value}] 59Matches 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 61value. 62@item u 63Matches streams with usable configuration, the codec must be defined and the 64essential information such as video dimension or audio sample rate must be present. 65 66Note that in @command{ffmpeg}, matching by metadata will only work properly for 67input files. 68@end table 69 70@section Generic options 71 72These options are shared amongst the ff* tools. 73 74@table @option 75 76@item -L 77Show license. 78 79@item -h, -?, -help, --help [@var{arg}] 80Show help. An optional parameter may be specified to print help about a specific 81item. If no argument is specified, only basic (non advanced) tool 82options are shown. 83 84Possible values of @var{arg} are: 85@table @option 86@item long 87Print advanced tool options in addition to the basic tool options. 88 89@item full 90Print complete list of options, including shared and private options 91for encoders, decoders, demuxers, muxers, filters, etc. 92 93@item decoder=@var{decoder_name} 94Print detailed information about the decoder named @var{decoder_name}. Use the 95@option{-decoders} option to get a list of all decoders. 96 97@item encoder=@var{encoder_name} 98Print detailed information about the encoder named @var{encoder_name}. Use the 99@option{-encoders} option to get a list of all encoders. 100 101@item demuxer=@var{demuxer_name} 102Print detailed information about the demuxer named @var{demuxer_name}. Use the 103@option{-formats} option to get a list of all demuxers and muxers. 104 105@item muxer=@var{muxer_name} 106Print detailed information about the muxer named @var{muxer_name}. Use the 107@option{-formats} option to get a list of all muxers and demuxers. 108 109@item filter=@var{filter_name} 110Print detailed information about the filter named @var{filter_name}. Use the 111@option{-filters} option to get a list of all filters. 112 113@item bsf=@var{bitstream_filter_name} 114Print detailed information about the bitstream filter named @var{bitstream_filter_name}. 115Use the @option{-bsfs} option to get a list of all bitstream filters. 116 117@item protocol=@var{protocol_name} 118Print detailed information about the protocol named @var{protocol_name}. 119Use the @option{-protocols} option to get a list of all protocols. 120@end table 121 122@item -version 123Show version. 124 125@item -buildconf 126Show the build configuration, one option per line. 127 128@item -formats 129Show available formats (including devices). 130 131@item -demuxers 132Show available demuxers. 133 134@item -muxers 135Show available muxers. 136 137@item -devices 138Show available devices. 139 140@item -codecs 141Show all codecs known to libavcodec. 142 143Note that the term 'codec' is used throughout this documentation as a shortcut 144for what is more correctly called a media bitstream format. 145 146@item -decoders 147Show available decoders. 148 149@item -encoders 150Show all available encoders. 151 152@item -bsfs 153Show available bitstream filters. 154 155@item -protocols 156Show available protocols. 157 158@item -filters 159Show available libavfilter filters. 160 161@item -pix_fmts 162Show available pixel formats. 163 164@item -sample_fmts 165Show available sample formats. 166 167@item -layouts 168Show channel names and standard channel layouts. 169 170@item -colors 171Show recognized color names. 172 173@item -sources @var{device}[,@var{opt1}=@var{val1}[,@var{opt2}=@var{val2}]...] 174Show autodetected sources of the input device. 175Some devices may provide system-dependent source names that cannot be autodetected. 176The returned list cannot be assumed to be always complete. 177@example 178ffmpeg -sources pulse,server=192.168.0.4 179@end example 180 181@item -sinks @var{device}[,@var{opt1}=@var{val1}[,@var{opt2}=@var{val2}]...] 182Show autodetected sinks of the output device. 183Some devices may provide system-dependent sink names that cannot be autodetected. 184The returned list cannot be assumed to be always complete. 185@example 186ffmpeg -sinks pulse,server=192.168.0.4 187@end example 188 189@item -loglevel [@var{flags}+]@var{loglevel} | -v [@var{flags}+]@var{loglevel} 190Set logging level and flags used by the library. 191 192The optional @var{flags} prefix can consist of the following values: 193@table @samp 194@item repeat 195Indicates that repeated log output should not be compressed to the first line 196and the "Last message repeated n times" line will be omitted. 197@item level 198Indicates that log output should add a @code{[level]} prefix to each message 199line. This can be used as an alternative to log coloring, e.g. when dumping the 200log to file. 201@end table 202Flags can also be used alone by adding a '+'/'-' prefix to set/reset a single 203flag without affecting other @var{flags} or changing @var{loglevel}. When 204setting both @var{flags} and @var{loglevel}, a '+' separator is expected 205between the last @var{flags} value and before @var{loglevel}. 206 207@var{loglevel} is a string or a number containing one of the following values: 208@table @samp 209@item quiet, -8 210Show nothing at all; be silent. 211@item panic, 0 212Only show fatal errors which could lead the process to crash, such as 213an assertion failure. This is not currently used for anything. 214@item fatal, 8 215Only show fatal errors. These are errors after which the process absolutely 216cannot continue. 217@item error, 16 218Show all errors, including ones which can be recovered from. 219@item warning, 24 220Show all warnings and errors. Any message related to possibly 221incorrect or unexpected events will be shown. 222@item info, 32 223Show informative messages during processing. This is in addition to 224warnings and errors. This is the default value. 225@item verbose, 40 226Same as @code{info}, except more verbose. 227@item debug, 48 228Show everything, including debugging information. 229@item trace, 56 230@end table 231 232For example to enable repeated log output, add the @code{level} prefix, and set 233@var{loglevel} to @code{verbose}: 234@example 235ffmpeg -loglevel repeat+level+verbose -i input output 236@end example 237Another example that enables repeated log output without affecting current 238state of @code{level} prefix flag or @var{loglevel}: 239@example 240ffmpeg [...] -loglevel +repeat 241@end example 242 243By default the program logs to stderr. If coloring is supported by the 244terminal, colors are used to mark errors and warnings. Log coloring 245can be disabled setting the environment variable 246@env{AV_LOG_FORCE_NOCOLOR}, or can be forced setting 247the environment variable @env{AV_LOG_FORCE_COLOR}. 248 249@item -report 250Dump full command line and log output to a file named 251@code{@var{program}-@var{YYYYMMDD}-@var{HHMMSS}.log} in the current 252directory. 253This file can be useful for bug reports. 254It also implies @code{-loglevel debug}. 255 256Setting the environment variable @env{FFREPORT} to any value has the 257same effect. If the value is a ':'-separated key=value sequence, these 258options will affect the report; option values must be escaped if they 259contain special characters or the options delimiter ':' (see the 260``Quoting and escaping'' section in the ffmpeg-utils manual). 261 262The following options are recognized: 263@table @option 264@item file 265set the file name to use for the report; @code{%p} is expanded to the name 266of the program, @code{%t} is expanded to a timestamp, @code{%%} is expanded 267to a plain @code{%} 268@item level 269set the log verbosity level using a numerical value (see @code{-loglevel}). 270@end table 271 272For example, to output a report to a file named @file{ffreport.log} 273using a log level of @code{32} (alias for log level @code{info}): 274 275@example 276FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output 277@end example 278 279Errors in parsing the environment variable are not fatal, and will not 280appear in the report. 281 282@item -hide_banner 283Suppress printing banner. 284 285All FFmpeg tools will normally show a copyright notice, build options 286and library versions. This option can be used to suppress printing 287this information. 288 289@item -cpuflags flags (@emph{global}) 290Allows setting and clearing cpu flags. This option is intended 291for testing. Do not use it unless you know what you're doing. 292@example 293ffmpeg -cpuflags -sse+mmx ... 294ffmpeg -cpuflags mmx ... 295ffmpeg -cpuflags 0 ... 296@end example 297Possible flags for this option are: 298@table @samp 299@item x86 300@table @samp 301@item mmx 302@item mmxext 303@item sse 304@item sse2 305@item sse2slow 306@item sse3 307@item sse3slow 308@item ssse3 309@item atom 310@item sse4.1 311@item sse4.2 312@item avx 313@item avx2 314@item xop 315@item fma3 316@item fma4 317@item 3dnow 318@item 3dnowext 319@item bmi1 320@item bmi2 321@item cmov 322@end table 323@item ARM 324@table @samp 325@item armv5te 326@item armv6 327@item armv6t2 328@item vfp 329@item vfpv3 330@item neon 331@item setend 332@end table 333@item AArch64 334@table @samp 335@item armv8 336@item vfp 337@item neon 338@end table 339@item PowerPC 340@table @samp 341@item altivec 342@end table 343@item Specific Processors 344@table @samp 345@item pentium2 346@item pentium3 347@item pentium4 348@item k6 349@item k62 350@item athlon 351@item athlonxp 352@item k8 353@end table 354@end table 355 356@item -max_alloc @var{bytes} 357Set the maximum size limit for allocating a block on the heap by ffmpeg's 358family of malloc functions. Exercise @strong{extreme caution} when using 359this option. Don't use if you do not understand the full consequence of doing so. 360Default is INT_MAX. 361@end table 362 363@section AVOptions 364 365These options are provided directly by the libavformat, libavdevice and 366libavcodec libraries. To see the list of available AVOptions, use the 367@option{-help} option. They are separated into two categories: 368@table @option 369@item generic 370These options can be set for any container, codec or device. Generic options 371are listed under AVFormatContext options for containers/devices and under 372AVCodecContext options for codecs. 373@item private 374These options are specific to the given container, device or codec. Private 375options are listed under their corresponding containers/devices/codecs. 376@end table 377 378For example to write an ID3v2.3 header instead of a default ID3v2.4 to 379an MP3 file, use the @option{id3v2_version} private option of the MP3 380muxer: 381@example 382ffmpeg -i input.flac -id3v2_version 3 out.mp3 383@end example 384 385All codec AVOptions are per-stream, and thus a stream specifier 386should be attached to them: 387@example 388ffmpeg -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 389@end example 390 391In the above example, a multichannel audio stream is mapped twice for output. 392The first instance is encoded with codec ac3 and bitrate 640k. 393The second instance is downmixed to 2 channels and encoded with codec aac. A bitrate of 128k is specified for it using 394absolute index of the output stream. 395 396Note: the @option{-nooption} syntax cannot be used for boolean 397AVOptions, use @option{-option 0}/@option{-option 1}. 398 399Note: the old undocumented way of specifying per-stream AVOptions by 400prepending v/a/s to the options name is now obsolete and will be 401removed soon. 402