]> git.sesse.net Git - ffmpeg/blob - doc/fftools-common-opts.texi
vaapi_encode: Refactor encode misc parameter buffer creation
[ffmpeg] / doc / fftools-common-opts.texi
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'.
4
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.
10
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.
15
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.
20
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.
25
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
28 streams.
29
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.
32
33 Possible forms of stream specifiers are:
34 @table @option
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
42 program.
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
50 specified type.
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}.
55
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
61 value.
62 @item u
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.
65
66 Note that in @command{ffmpeg}, matching by metadata will only work properly for
67 input files.
68 @end table
69
70 @section Generic options
71
72 These options are shared amongst the ff* tools.
73
74 @table @option
75
76 @item -L
77 Show license.
78
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
82 options are shown.
83
84 Possible values of @var{arg} are:
85 @table @option
86 @item long
87 Print advanced tool options in addition to the basic tool options.
88
89 @item full
90 Print complete list of options, including shared and private options
91 for encoders, decoders, demuxers, muxers, filters, etc.
92
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.
96
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.
100
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.
104
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.
108
109 @item filter=@var{filter_name}
110 Print detailed information about the filter name @var{filter_name}. Use the
111 @option{-filters} option to get a list of all filters.
112 @end table
113
114 @item -version
115 Show version.
116
117 @item -formats
118 Show available formats (including devices).
119
120 @item -demuxers
121 Show available demuxers.
122
123 @item -muxers
124 Show available muxers.
125
126 @item -devices
127 Show available devices.
128
129 @item -codecs
130 Show all codecs known to libavcodec.
131
132 Note that the term 'codec' is used throughout this documentation as a shortcut
133 for what is more correctly called a media bitstream format.
134
135 @item -decoders
136 Show available decoders.
137
138 @item -encoders
139 Show all available encoders.
140
141 @item -bsfs
142 Show available bitstream filters.
143
144 @item -protocols
145 Show available protocols.
146
147 @item -filters
148 Show available libavfilter filters.
149
150 @item -pix_fmts
151 Show available pixel formats.
152
153 @item -sample_fmts
154 Show available sample formats.
155
156 @item -layouts
157 Show channel names and standard channel layouts.
158
159 @item -colors
160 Show recognized color names.
161
162 @item -sources @var{device}[,@var{opt1}=@var{val1}[,@var{opt2}=@var{val2}]...]
163 Show autodetected sources of the input device.
164 Some devices may provide system-dependent source names that cannot be autodetected.
165 The returned list cannot be assumed to be always complete.
166 @example
167 ffmpeg -sources pulse,server=192.168.0.4
168 @end example
169
170 @item -sinks @var{device}[,@var{opt1}=@var{val1}[,@var{opt2}=@var{val2}]...]
171 Show autodetected sinks of the output device.
172 Some devices may provide system-dependent sink names that cannot be autodetected.
173 The returned list cannot be assumed to be always complete.
174 @example
175 ffmpeg -sinks pulse,server=192.168.0.4
176 @end example
177
178 @item -loglevel [@var{flags}+]@var{loglevel} | -v [@var{flags}+]@var{loglevel}
179 Set logging level and flags used by the library.
180
181 The optional @var{flags} prefix can consist of the following values:
182 @table @samp
183 @item repeat
184 Indicates that repeated log output should not be compressed to the first line
185 and the "Last message repeated n times" line will be omitted.
186 @item level
187 Indicates that log output should add a @code{[level]} prefix to each message
188 line. This can be used as an alternative to log coloring, e.g. when dumping the
189 log to file.
190 @end table
191 Flags can also be used alone by adding a '+'/'-' prefix to set/reset a single
192 flag without affecting other @var{flags} or changing @var{loglevel}. When
193 setting both @var{flags} and @var{loglevel}, a '+' separator is expected
194 between the last @var{flags} value and before @var{loglevel}.
195
196 @var{loglevel} is a string or a number containing one of the following values:
197 @table @samp
198 @item quiet, -8
199 Show nothing at all; be silent.
200 @item panic, 0
201 Only show fatal errors which could lead the process to crash, such as
202 an assertion failure. This is not currently used for anything.
203 @item fatal, 8
204 Only show fatal errors. These are errors after which the process absolutely
205 cannot continue.
206 @item error, 16
207 Show all errors, including ones which can be recovered from.
208 @item warning, 24
209 Show all warnings and errors. Any message related to possibly
210 incorrect or unexpected events will be shown.
211 @item info, 32
212 Show informative messages during processing. This is in addition to
213 warnings and errors. This is the default value.
214 @item verbose, 40
215 Same as @code{info}, except more verbose.
216 @item debug, 48
217 Show everything, including debugging information.
218 @item trace, 56
219 @end table
220
221 For example to enable repeated log output, add the @code{level} prefix, and set
222 @var{loglevel} to @code{verbose}:
223 @example
224 ffmpeg -loglevel repeat+level+verbose -i input output
225 @end example
226 Another example that enables repeated log output without affecting current
227 state of @code{level} prefix flag or @var{loglevel}:
228 @example
229 ffmpeg [...] -loglevel +repeat
230 @end example
231
232 By default the program logs to stderr. If coloring is supported by the
233 terminal, colors are used to mark errors and warnings. Log coloring
234 can be disabled setting the environment variable
235 @env{AV_LOG_FORCE_NOCOLOR} or @env{NO_COLOR}, or can be forced setting
236 the environment variable @env{AV_LOG_FORCE_COLOR}.
237 The use of the environment variable @env{NO_COLOR} is deprecated and
238 will be dropped in a future FFmpeg version.
239
240 @item -report
241 Dump full command line and console output to a file named
242 @code{@var{program}-@var{YYYYMMDD}-@var{HHMMSS}.log} in the current
243 directory.
244 This file can be useful for bug reports.
245 It also implies @code{-loglevel debug}.
246
247 Setting the environment variable @env{FFREPORT} to any value has the
248 same effect. If the value is a ':'-separated key=value sequence, these
249 options will affect the report; option values must be escaped if they
250 contain special characters or the options delimiter ':' (see the
251 ``Quoting and escaping'' section in the ffmpeg-utils manual).
252
253 The following options are recognized:
254 @table @option
255 @item file
256 set the file name to use for the report; @code{%p} is expanded to the name
257 of the program, @code{%t} is expanded to a timestamp, @code{%%} is expanded
258 to a plain @code{%}
259 @item level
260 set the log verbosity level using a numerical value (see @code{-loglevel}).
261 @end table
262
263 For example, to output a report to a file named @file{ffreport.log}
264 using a log level of @code{32} (alias for log level @code{info}):
265
266 @example
267 FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
268 @end example
269
270 Errors in parsing the environment variable are not fatal, and will not
271 appear in the report.
272
273 @item -hide_banner
274 Suppress printing banner.
275
276 All FFmpeg tools will normally show a copyright notice, build options
277 and library versions. This option can be used to suppress printing
278 this information.
279
280 @item -cpuflags flags (@emph{global})
281 Allows setting and clearing cpu flags. This option is intended
282 for testing. Do not use it unless you know what you're doing.
283 @example
284 ffmpeg -cpuflags -sse+mmx ...
285 ffmpeg -cpuflags mmx ...
286 ffmpeg -cpuflags 0 ...
287 @end example
288 Possible flags for this option are:
289 @table @samp
290 @item x86
291 @table @samp
292 @item mmx
293 @item mmxext
294 @item sse
295 @item sse2
296 @item sse2slow
297 @item sse3
298 @item sse3slow
299 @item ssse3
300 @item atom
301 @item sse4.1
302 @item sse4.2
303 @item avx
304 @item avx2
305 @item xop
306 @item fma3
307 @item fma4
308 @item 3dnow
309 @item 3dnowext
310 @item bmi1
311 @item bmi2
312 @item cmov
313 @end table
314 @item ARM
315 @table @samp
316 @item armv5te
317 @item armv6
318 @item armv6t2
319 @item vfp
320 @item vfpv3
321 @item neon
322 @item setend
323 @end table
324 @item AArch64
325 @table @samp
326 @item armv8
327 @item vfp
328 @item neon
329 @end table
330 @item PowerPC
331 @table @samp
332 @item altivec
333 @end table
334 @item Specific Processors
335 @table @samp
336 @item pentium2
337 @item pentium3
338 @item pentium4
339 @item k6
340 @item k62
341 @item athlon
342 @item athlonxp
343 @item k8
344 @end table
345 @end table
346 @end table
347
348 @section AVOptions
349
350 These options are provided directly by the libavformat, libavdevice and
351 libavcodec libraries. To see the list of available AVOptions, use the
352 @option{-help} option. They are separated into two categories:
353 @table @option
354 @item generic
355 These options can be set for any container, codec or device. Generic options
356 are listed under AVFormatContext options for containers/devices and under
357 AVCodecContext options for codecs.
358 @item private
359 These options are specific to the given container, device or codec. Private
360 options are listed under their corresponding containers/devices/codecs.
361 @end table
362
363 For example to write an ID3v2.3 header instead of a default ID3v2.4 to
364 an MP3 file, use the @option{id3v2_version} private option of the MP3
365 muxer:
366 @example
367 ffmpeg -i input.flac -id3v2_version 3 out.mp3
368 @end example
369
370 All codec AVOptions are per-stream, and thus a stream specifier
371 should be attached to them:
372 @example
373 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
374 @end example
375
376 In the above example, a multichannel audio stream is mapped twice for output.
377 The first instance is encoded with codec ac3 and bitrate 640k.
378 The second instance is downmixed to 2 channels and encoded with codec aac. A bitrate of 128k is specified for it using
379 absolute index of the output stream.
380
381 Note: the @option{-nooption} syntax cannot be used for boolean
382 AVOptions, use @option{-option 0}/@option{-option 1}.
383
384 Note: the old undocumented way of specifying per-stream AVOptions by
385 prepending v/a/s to the options name is now obsolete and will be
386 removed soon.