Commit | Line | Data |
---|---|---|
9181577c FB |
1 | \input texinfo @c -*- texinfo -*- |
2 | ||
3 | @settitle FFmpeg Documentation | |
4 | @titlepage | |
5 | @sp 7 | |
6 | @center @titlefont{FFmpeg Documentation} | |
7 | @sp 3 | |
8 | @end titlepage | |
9 | ||
a66d8cd9 SS |
10 | @chapter Synopsis |
11 | ||
12 | The generic syntax is: | |
13 | ||
14 | @example | |
15 | @c man begin SYNOPSIS | |
16 | ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}... | |
17 | @c man end | |
18 | @end example | |
19 | ||
12f8341a SS |
20 | @chapter Description |
21 | @c man begin DESCRIPTION | |
9181577c FB |
22 | |
23 | FFmpeg is a very fast video and audio converter. It can also grab from | |
24 | a live audio/video source. | |
115329f1 | 25 | |
9181577c | 26 | The command line interface is designed to be intuitive, in the sense |
4c5f7207 DB |
27 | that FFmpeg tries to figure out all parameters that can possibly be |
28 | derived automatically. You usually only have to specify the target | |
29 | bitrate you want. | |
9181577c FB |
30 | |
31 | FFmpeg can also convert from any sample rate to any other, and resize | |
32 | video on the fly with a high quality polyphase filter. | |
33 | ||
12f8341a SS |
34 | As a general rule, options are applied to the next specified |
35 | file. Therefore, order is important, and you can have the same | |
36 | option on the command line multiple times. Each occurrence is | |
37 | then applied to the next input or output file. | |
38 | ||
39 | * To set the video bitrate of the output file to 64kbit/s: | |
40 | @example | |
41 | ffmpeg -i input.avi -b 64k output.avi | |
42 | @end example | |
43 | ||
44 | * To force the frame rate of the output file to 24 fps: | |
45 | @example | |
46 | ffmpeg -i input.avi -r 24 output.avi | |
47 | @end example | |
48 | ||
49 | * To force the frame rate of the input file (valid for raw formats only) | |
50 | to 1 fps and the frame rate of the output file to 24 fps: | |
51 | @example | |
52 | ffmpeg -r 1 -i input.m2v -r 24 output.avi | |
53 | @end example | |
54 | ||
55 | The format option may be needed for raw input files. | |
56 | ||
57 | By default, FFmpeg tries to convert as losslessly as possible: It | |
58 | uses the same audio and video parameters for the outputs as the one | |
59 | specified for the inputs. | |
60 | ||
61 | @c man end DESCRIPTION | |
62 | ||
a66d8cd9 | 63 | @chapter Options |
e99c4e10 | 64 | @c man begin OPTIONS |
8b9da8b5 SS |
65 | |
66 | @include fftools-common-opts.texi | |
67 | ||
9181577c FB |
68 | @section Main options |
69 | ||
e99c4e10 | 70 | @table @option |
62d75662 | 71 | |
a19caa0f | 72 | @item -f @var{fmt} |
4c5f7207 | 73 | Force format. |
18bff752 | 74 | |
a19caa0f | 75 | @item -i @var{filename} |
831ec935 | 76 | input file name |
9181577c | 77 | |
115329f1 | 78 | @item -y |
4c5f7207 | 79 | Overwrite output files. |
9181577c | 80 | |
a19caa0f | 81 | @item -t @var{duration} |
250c5317 GS |
82 | Restrict the transcoded/captured video sequence |
83 | to the duration specified in seconds. | |
4c5f7207 | 84 | @code{hh:mm:ss[.xxx]} syntax is also supported. |
9181577c | 85 | |
a19caa0f | 86 | @item -fs @var{limit_size} |
4386f941 DB |
87 | Set the file size limit. |
88 | ||
a19caa0f | 89 | @item -ss @var{position} |
4c5f7207 DB |
90 | Seek to given time position in seconds. |
91 | @code{hh:mm:ss[.xxx]} syntax is also supported. | |
e83a84ac | 92 | |
a19caa0f | 93 | @item -itsoffset @var{offset} |
4386f941 DB |
94 | Set the input time offset in seconds. |
95 | @code{[-]hh:mm:ss[.xxx]} syntax is also supported. | |
96 | This option affects all the input files that follow it. | |
97 | The offset is added to the timestamps of the input files. | |
98 | Specifying a positive offset means that the corresponding | |
99 | streams are delayed by 'offset' seconds. | |
100 | ||
a19caa0f | 101 | @item -timestamp @var{time} |
a2e47338 SS |
102 | Set the recording timestamp in the container. |
103 | The syntax for @var{time} is: | |
104 | @example | |
105 | now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH[:MM[:SS[.m...]]])|(HH[MM[SS[.m...]]]))[Z|z]) | |
106 | @end example | |
107 | If the value is "now" it takes the current time. | |
108 | Time is local time unless 'Z' or 'z' is appended, in which case it is | |
109 | interpreted as UTC. | |
110 | If the year-month-day part is not specified it takes the current | |
111 | year-month-day. | |
4386f941 | 112 | |
39a4f146 | 113 | @item -metadata @var{key}=@var{value} |
5227bd63 | 114 | Set a metadata key/value pair. |
4386f941 | 115 | |
edb501c4 | 116 | For example, for setting the title in the output file: |
39a4f146 | 117 | @example |
edb501c4 | 118 | ffmpeg -i in.avi -metadata title="my title" out.flv |
39a4f146 | 119 | @end example |
ec1b10f4 | 120 | |
a19caa0f | 121 | @item -v @var{number} |
53d1bdba | 122 | Set the logging verbosity level. |
4386f941 | 123 | |
a19caa0f | 124 | @item -target @var{type} |
4386f941 | 125 | Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", |
4c5f7207 DB |
126 | "ntsc-svcd", ... ). All the format options (bitrate, codecs, |
127 | buffer sizes) are then set automatically. You can just type: | |
99db6420 FB |
128 | |
129 | @example | |
130 | ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg | |
131 | @end example | |
132 | ||
4c5f7207 DB |
133 | Nevertheless you can specify additional options as long as you know |
134 | they do not conflict with the standard, as in: | |
791d8d1d MB |
135 | |
136 | @example | |
137 | ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg | |
138 | @end example | |
139 | ||
a19caa0f | 140 | @item -dframes @var{number} |
4386f941 DB |
141 | Set the number of data frames to record. |
142 | ||
a19caa0f | 143 | @item -scodec @var{codec} |
4386f941 DB |
144 | Force subtitle codec ('copy' to copy stream). |
145 | ||
146 | @item -newsubtitle | |
147 | Add a new subtitle stream to the current output stream. | |
148 | ||
a19caa0f | 149 | @item -slang @var{code} |
4386f941 | 150 | Set the ISO 639 language code (3 letters) of the current subtitle stream. |
401fbdde | 151 | |
9181577c FB |
152 | @end table |
153 | ||
154 | @section Video Options | |
155 | ||
e99c4e10 | 156 | @table @option |
a19caa0f | 157 | @item -b @var{bitrate} |
3c0ba870 | 158 | Set the video bitrate in bit/s (default = 200 kb/s). |
a19caa0f | 159 | @item -vframes @var{number} |
4386f941 | 160 | Set the number of video frames to record. |
a19caa0f | 161 | @item -r @var{fps} |
4386f941 | 162 | Set frame rate (Hz value, fraction or abbreviation), (default = 25). |
a19caa0f | 163 | @item -s @var{size} |
67053c30 | 164 | Set frame size. The format is @samp{wxh} (ffserver default = 160x128, ffmpeg default = same as source). |
4c5f7207 | 165 | The following abbreviations are recognized: |
5ee03c86 | 166 | @table @samp |
18bff752 FB |
167 | @item sqcif |
168 | 128x96 | |
169 | @item qcif | |
170 | 176x144 | |
171 | @item cif | |
172 | 352x288 | |
173 | @item 4cif | |
174 | 704x576 | |
41913a35 GB |
175 | @item 16cif |
176 | 1408x1152 | |
7d88b5ca BF |
177 | @item qqvga |
178 | 160x120 | |
179 | @item qvga | |
180 | 320x240 | |
181 | @item vga | |
182 | 640x480 | |
183 | @item svga | |
184 | 800x600 | |
185 | @item xga | |
186 | 1024x768 | |
187 | @item uxga | |
188 | 1600x1200 | |
189 | @item qxga | |
190 | 2048x1536 | |
191 | @item sxga | |
192 | 1280x1024 | |
193 | @item qsxga | |
194 | 2560x2048 | |
195 | @item hsxga | |
196 | 5120x4096 | |
197 | @item wvga | |
198 | 852x480 | |
199 | @item wxga | |
200 | 1366x768 | |
201 | @item wsxga | |
202 | 1600x1024 | |
203 | @item wuxga | |
204 | 1920x1200 | |
205 | @item woxga | |
206 | 2560x1600 | |
207 | @item wqsxga | |
208 | 3200x2048 | |
209 | @item wquxga | |
210 | 3840x2400 | |
211 | @item whsxga | |
212 | 6400x4096 | |
213 | @item whuxga | |
214 | 7680x4800 | |
215 | @item cga | |
216 | 320x200 | |
217 | @item ega | |
218 | 640x350 | |
219 | @item hd480 | |
220 | 852x480 | |
221 | @item hd720 | |
222 | 1280x720 | |
223 | @item hd1080 | |
224 | 1920x1080 | |
18bff752 FB |
225 | @end table |
226 | ||
a19caa0f | 227 | @item -aspect @var{aspect} |
4c5f7207 | 228 | Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777). |
0461367c | 229 | @item -croptop @var{size} (deprecated - use -vf crop=x:y:width:height instead) |
4c5f7207 | 230 | Set top crop band size (in pixels). |
0461367c | 231 | @item -cropbottom @var{size} (deprecated - use -vf crop=x:y:width:height instead) |
4c5f7207 | 232 | Set bottom crop band size (in pixels). |
0461367c | 233 | @item -cropleft @var{size} (deprecated - use -vf crop=x:y:width:height instead) |
4c5f7207 | 234 | Set left crop band size (in pixels). |
0461367c | 235 | @item -cropright @var{size} (deprecated - use -vf crop=x:y:width:height instead) |
4c5f7207 | 236 | Set right crop band size (in pixels). |
a19caa0f | 237 | @item -padtop @var{size} |
a19caa0f | 238 | @item -padbottom @var{size} |
a19caa0f | 239 | @item -padleft @var{size} |
a19caa0f | 240 | @item -padright @var{size} |
a19caa0f | 241 | @item -padcolor @var{hex_color} |
74dc99f2 SS |
242 | All the pad options have been removed. Use -vf |
243 | pad=width:height:x:y:color instead. | |
9181577c | 244 | @item -vn |
4c5f7207 | 245 | Disable video recording. |
a19caa0f | 246 | @item -bt @var{tolerance} |
e3576e25 JGG |
247 | Set video bitrate tolerance (in bits, default 4000k). |
248 | Has a minimum value of: (target_bitrate/target_framerate). | |
249 | In 1-pass mode, bitrate tolerance specifies how far ratecontrol is | |
250 | willing to deviate from the target average bitrate value. This is | |
251 | not related to min/max bitrate. Lowering tolerance too much has | |
252 | an adverse effect on quality. | |
a19caa0f | 253 | @item -maxrate @var{bitrate} |
f754bfb9 | 254 | Set max video bitrate (in bit/s). |
bbc35f51 | 255 | Requires -bufsize to be set. |
a19caa0f | 256 | @item -minrate @var{bitrate} |
f754bfb9 | 257 | Set min video bitrate (in bit/s). |
bbc35f51 | 258 | Most useful in setting up a CBR encode: |
259 | @example | |
260 | ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v | |
261 | @end example | |
262 | It is of little use elsewise. | |
a19caa0f | 263 | @item -bufsize @var{size} |
fa78d895 | 264 | Set video buffer verifier buffer size (in bits). |
a19caa0f | 265 | @item -vcodec @var{codec} |
4c5f7207 | 266 | Force video codec to @var{codec}. Use the @code{copy} special value to |
5ee03c86 | 267 | tell that the raw codec data must be copied as is. |
18bff752 | 268 | @item -sameq |
4c5f7207 | 269 | Use same video quality as source (implies VBR). |
9181577c | 270 | |
a19caa0f | 271 | @item -pass @var{n} |
c2902c9c SS |
272 | Select the pass number (1 or 2). It is used to do two-pass |
273 | video encoding. The statistics of the video are recorded in the first | |
274 | pass into a log file (see also the option -passlogfile), | |
275 | and in the second pass that log file is used to generate the video | |
276 | at the exact requested bitrate. | |
850a8d42 ED |
277 | On pass 1, you may just deactivate audio and set output to null, |
278 | examples for Windows and Unix: | |
279 | @example | |
280 | ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y NUL | |
281 | ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null | |
282 | @end example | |
9181577c | 283 | |
44fe7113 SS |
284 | @item -passlogfile @var{prefix} |
285 | Set two-pass log file name prefix to @var{prefix}, the default file name | |
286 | prefix is ``ffmpeg2pass''. The complete file name will be | |
287 | @file{PREFIX-N.log}, where N is a number specific to the output | |
c2902c9c | 288 | stream. |
9181577c | 289 | |
4386f941 DB |
290 | @item -newvideo |
291 | Add a new video stream to the current output stream. | |
292 | ||
0fc2c0f6 MC |
293 | @item -vlang @var{code} |
294 | Set the ISO 639 language code (3 letters) of the current video stream. | |
295 | ||
3275ac6a SS |
296 | @item -vf @var{filter_graph} |
297 | @var{filter_graph} is a description of the filter graph to apply to | |
298 | the input video. | |
299 | Use the option "-filters" to show all the available filters (including | |
300 | also sources and sinks). | |
301 | ||
9181577c FB |
302 | @end table |
303 | ||
18bff752 | 304 | @section Advanced Video Options |
9181577c | 305 | |
e99c4e10 | 306 | @table @option |
a19caa0f | 307 | @item -pix_fmt @var{format} |
c3b95b1d SS |
308 | Set pixel format. Use 'list' as parameter to show all the supported |
309 | pixel formats. | |
a19caa0f | 310 | @item -sws_flags @var{flags} |
35a3bd84 | 311 | Set SwScaler flags. |
a19caa0f | 312 | @item -g @var{gop_size} |
4c5f7207 | 313 | Set the group of pictures size. |
115329f1 | 314 | @item -intra |
4c5f7207 | 315 | Use only intra frames. |
a19caa0f | 316 | @item -vdt @var{n} |
4386f941 | 317 | Discard threshold. |
a19caa0f | 318 | @item -qscale @var{q} |
4bef236b | 319 | Use fixed video quantizer scale (VBR). |
a19caa0f | 320 | @item -qmin @var{q} |
4bef236b | 321 | minimum video quantizer scale (VBR) |
a19caa0f | 322 | @item -qmax @var{q} |
4bef236b | 323 | maximum video quantizer scale (VBR) |
a19caa0f | 324 | @item -qdiff @var{q} |
4bef236b | 325 | maximum difference between the quantizer scales (VBR) |
a19caa0f | 326 | @item -qblur @var{blur} |
3a9b190c | 327 | video quantizer scale blur (VBR) (range 0.0 - 1.0) |
a19caa0f | 328 | @item -qcomp @var{compression} |
3a9b190c | 329 | video quantizer scale compression (VBR) (default 0.5). |
330 | Constant of ratecontrol equation. Recommended range for default rc_eq: 0.0-1.0 | |
18bff752 | 331 | |
a19caa0f | 332 | @item -lmin @var{lambda} |
9ae711e1 | 333 | minimum video lagrange factor (VBR) |
a19caa0f | 334 | @item -lmax @var{lambda} |
9ae711e1 | 335 | max video lagrange factor (VBR) |
a19caa0f | 336 | @item -mblmin @var{lambda} |
9ae711e1 | 337 | minimum macroblock quantizer scale (VBR) |
a19caa0f | 338 | @item -mblmax @var{lambda} |
9ae711e1 VP |
339 | maximum macroblock quantizer scale (VBR) |
340 | ||
341 | These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units, | |
342 | but you may use the QP2LAMBDA constant to easily convert from 'q' units: | |
343 | @example | |
344 | ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext | |
345 | @end example | |
346 | ||
a19caa0f | 347 | @item -rc_init_cplx @var{complexity} |
4c5f7207 | 348 | initial complexity for single pass encoding |
a19caa0f | 349 | @item -b_qfactor @var{factor} |
4c5f7207 | 350 | qp factor between P- and B-frames |
a19caa0f | 351 | @item -i_qfactor @var{factor} |
4c5f7207 | 352 | qp factor between P- and I-frames |
a19caa0f | 353 | @item -b_qoffset @var{offset} |
4c5f7207 | 354 | qp offset between P- and B-frames |
a19caa0f | 355 | @item -i_qoffset @var{offset} |
4c5f7207 | 356 | qp offset between P- and I-frames |
a19caa0f | 357 | @item -rc_eq @var{equation} |
4c5f7207 DB |
358 | Set rate control equation (@pxref{FFmpeg formula |
359 | evaluator}) (default = @code{tex^qComp}). | |
a19caa0f | 360 | @item -rc_override @var{override} |
5ee03c86 | 361 | rate control override for specific intervals |
a19caa0f | 362 | @item -me_method @var{method} |
4c5f7207 DB |
363 | Set motion estimation method to @var{method}. |
364 | Available methods are (from lowest to best quality): | |
18bff752 FB |
365 | @table @samp |
366 | @item zero | |
5ee03c86 | 367 | Try just the (0, 0) vector. |
18bff752 FB |
368 | @item phods |
369 | @item log | |
370 | @item x1 | |
c0de00da SS |
371 | @item hex |
372 | @item umh | |
18bff752 FB |
373 | @item epzs |
374 | (default method) | |
375 | @item full | |
376 | exhaustive search (slow and marginally better than epzs) | |
377 | @end table | |
378 | ||
a19caa0f | 379 | @item -dct_algo @var{algo} |
4c5f7207 | 380 | Set DCT algorithm to @var{algo}. Available values are: |
18bff752 FB |
381 | @table @samp |
382 | @item 0 | |
383 | FF_DCT_AUTO (default) | |
384 | @item 1 | |
385 | FF_DCT_FASTINT | |
386 | @item 2 | |
387 | FF_DCT_INT | |
388 | @item 3 | |
389 | FF_DCT_MMX | |
390 | @item 4 | |
391 | FF_DCT_MLIB | |
392 | @item 5 | |
393 | FF_DCT_ALTIVEC | |
394 | @end table | |
395 | ||
a19caa0f | 396 | @item -idct_algo @var{algo} |
4c5f7207 | 397 | Set IDCT algorithm to @var{algo}. Available values are: |
18bff752 FB |
398 | @table @samp |
399 | @item 0 | |
400 | FF_IDCT_AUTO (default) | |
401 | @item 1 | |
115329f1 | 402 | FF_IDCT_INT |
18bff752 | 403 | @item 2 |
115329f1 | 404 | FF_IDCT_SIMPLE |
18bff752 | 405 | @item 3 |
115329f1 | 406 | FF_IDCT_SIMPLEMMX |
18bff752 | 407 | @item 4 |
115329f1 | 408 | FF_IDCT_LIBMPEG2MMX |
18bff752 | 409 | @item 5 |
115329f1 | 410 | FF_IDCT_PS2 |
18bff752 | 411 | @item 6 |
115329f1 | 412 | FF_IDCT_MLIB |
18bff752 | 413 | @item 7 |
115329f1 | 414 | FF_IDCT_ARM |
18bff752 | 415 | @item 8 |
115329f1 | 416 | FF_IDCT_ALTIVEC |
18bff752 | 417 | @item 9 |
115329f1 | 418 | FF_IDCT_SH4 |
18bff752 | 419 | @item 10 |
115329f1 | 420 | FF_IDCT_SIMPLEARM |
18bff752 FB |
421 | @end table |
422 | ||
a19caa0f | 423 | @item -er @var{n} |
4c5f7207 | 424 | Set error resilience to @var{n}. |
18bff752 | 425 | @table @samp |
115329f1 | 426 | @item 1 |
1471c6c2 | 427 | FF_ER_CAREFUL (default) |
18bff752 | 428 | @item 2 |
5ee03c86 | 429 | FF_ER_COMPLIANT |
18bff752 FB |
430 | @item 3 |
431 | FF_ER_AGGRESSIVE | |
432 | @item 4 | |
433 | FF_ER_VERY_AGGRESSIVE | |
434 | @end table | |
435 | ||
a19caa0f | 436 | @item -ec @var{bit_mask} |
4c5f7207 | 437 | Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of |
5ee03c86 | 438 | the following values: |
18bff752 FB |
439 | @table @samp |
440 | @item 1 | |
4c5f7207 | 441 | FF_EC_GUESS_MVS (default = enabled) |
18bff752 | 442 | @item 2 |
4c5f7207 | 443 | FF_EC_DEBLOCK (default = enabled) |
18bff752 FB |
444 | @end table |
445 | ||
a19caa0f | 446 | @item -bf @var{frames} |
4c5f7207 | 447 | Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4). |
a19caa0f | 448 | @item -mbd @var{mode} |
18bff752 FB |
449 | macroblock decision |
450 | @table @samp | |
451 | @item 0 | |
4c5f7207 | 452 | FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in FFmpeg). |
18bff752 | 453 | @item 1 |
4c5f7207 | 454 | FF_MB_DECISION_BITS: Choose the one which needs the fewest bits. |
18bff752 | 455 | @item 2 |
019c8838 | 456 | FF_MB_DECISION_RD: rate distortion |
18bff752 FB |
457 | @end table |
458 | ||
459 | @item -4mv | |
4c5f7207 | 460 | Use four motion vector by macroblock (MPEG-4 only). |
18bff752 | 461 | @item -part |
4c5f7207 | 462 | Use data partitioning (MPEG-4 only). |
a19caa0f | 463 | @item -bug @var{param} |
4c5f7207 | 464 | Work around encoder bugs that are not auto-detected. |
a19caa0f | 465 | @item -strict @var{strictness} |
4c5f7207 | 466 | How strictly to follow the standards. |
5ee03c86 | 467 | @item -aic |
4c5f7207 | 468 | Enable Advanced intra coding (h263+). |
5ee03c86 | 469 | @item -umv |
4c5f7207 | 470 | Enable Unlimited Motion Vector (h263+) |
18bff752 FB |
471 | |
472 | @item -deinterlace | |
4c5f7207 | 473 | Deinterlace pictures. |
3841e813 | 474 | @item -ilme |
4c5f7207 DB |
475 | Force interlacing support in encoder (MPEG-2 and MPEG-4 only). |
476 | Use this option if your input file is interlaced and you want | |
477 | to keep the interlaced format for minimum losses. | |
478 | The alternative is to deinterlace the input stream with | |
479 | @option{-deinterlace}, but deinterlacing introduces losses. | |
18bff752 | 480 | @item -psnr |
4c5f7207 | 481 | Calculate PSNR of compressed frames. |
18bff752 | 482 | @item -vstats |
4c5f7207 | 483 | Dump video coding statistics to @file{vstats_HHMMSS.log}. |
a19caa0f | 484 | @item -vstats_file @var{file} |
b60d1379 | 485 | Dump video coding statistics to @var{file}. |
a19caa0f | 486 | @item -top @var{n} |
4386f941 | 487 | top=1/bottom=0/auto=-1 field first |
a19caa0f | 488 | @item -dc @var{precision} |
4386f941 | 489 | Intra_dc_precision. |
a19caa0f | 490 | @item -vtag @var{fourcc/tag} |
4386f941 DB |
491 | Force video tag/fourcc. |
492 | @item -qphist | |
493 | Show QP histogram. | |
a19caa0f | 494 | @item -vbsf @var{bitstream_filter} |
5ad2b4c6 | 495 | Bitstream filters available are "dump_extra", "remove_extra", "noise", "h264_mp4toannexb", "imxdump", "mjpegadump". |
496 | @example | |
497 | ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264 | |
498 | @end example | |
18bff752 FB |
499 | @end table |
500 | ||
501 | @section Audio Options | |
502 | ||
503 | @table @option | |
a19caa0f | 504 | @item -aframes @var{number} |
4386f941 | 505 | Set the number of audio frames to record. |
a19caa0f | 506 | @item -ar @var{freq} |
4c5f7207 | 507 | Set the audio sampling frequency (default = 44100 Hz). |
a19caa0f | 508 | @item -ab @var{bitrate} |
5438308f | 509 | Set the audio bitrate in bit/s (default = 64k). |
385e1658 JVS |
510 | @item -aq @var{q} |
511 | Set the audio quality (codec-specific, VBR). | |
a19caa0f | 512 | @item -ac @var{channels} |
4c5f7207 | 513 | Set the number of audio channels (default = 1). |
5ee03c86 | 514 | @item -an |
4c5f7207 | 515 | Disable audio recording. |
a19caa0f | 516 | @item -acodec @var{codec} |
4c5f7207 DB |
517 | Force audio codec to @var{codec}. Use the @code{copy} special value to |
518 | specify that the raw codec data must be copied as is. | |
de62a89d | 519 | @item -newaudio |
18fd519f DB |
520 | Add a new audio track to the output file. If you want to specify parameters, |
521 | do so before @code{-newaudio} (@code{-acodec}, @code{-ab}, etc..). | |
de62a89d | 522 | |
18fd519f DB |
523 | Mapping will be done automatically, if the number of output streams is equal to |
524 | the number of input streams, else it will pick the first one that matches. You | |
de62a89d VP |
525 | can override the mapping using @code{-map} as usual. |
526 | ||
527 | Example: | |
528 | @example | |
5438308f | 529 | ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio |
de62a89d | 530 | @end example |
a19caa0f | 531 | @item -alang @var{code} |
4386f941 DB |
532 | Set the ISO 639 language code (3 letters) of the current audio stream. |
533 | @end table | |
534 | ||
535 | @section Advanced Audio options: | |
536 | ||
537 | @table @option | |
a19caa0f | 538 | @item -atag @var{fourcc/tag} |
4386f941 | 539 | Force audio tag/fourcc. |
a19caa0f | 540 | @item -absf @var{bitstream_filter} |
4386f941 DB |
541 | Bitstream filters available are "dump_extra", "remove_extra", "noise", "mp3comp", "mp3decomp". |
542 | @end table | |
543 | ||
544 | @section Subtitle options: | |
545 | ||
546 | @table @option | |
a19caa0f | 547 | @item -scodec @var{codec} |
4386f941 DB |
548 | Force subtitle codec ('copy' to copy stream). |
549 | @item -newsubtitle | |
550 | Add a new subtitle stream to the current output stream. | |
a19caa0f | 551 | @item -slang @var{code} |
4386f941 | 552 | Set the ISO 639 language code (3 letters) of the current subtitle stream. |
f0ef7bee DB |
553 | @item -sn |
554 | Disable subtitle recording. | |
5ad2b4c6 | 555 | @item -sbsf @var{bitstream_filter} |
556 | Bitstream filters available are "mov2textsub", "text2movsub". | |
557 | @example | |
558 | ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt | |
559 | @end example | |
18bff752 FB |
560 | @end table |
561 | ||
562 | @section Audio/Video grab options | |
563 | ||
564 | @table @option | |
a19caa0f | 565 | @item -vc @var{channel} |
4c5f7207 | 566 | Set video grab channel (DV1394 only). |
a19caa0f | 567 | @item -tvstd @var{standard} |
4c5f7207 | 568 | Set television standard (NTSC, PAL (SECAM)). |
cc58300e RP |
569 | @item -isync |
570 | Synchronize read on input. | |
18bff752 FB |
571 | @end table |
572 | ||
573 | @section Advanced options | |
574 | ||
575 | @table @option | |
bb89b0bc | 576 | @item -map @var{input_stream_id}[:@var{sync_stream_id}] |
e645a733 BL |
577 | Set stream mapping from input streams to output streams. |
578 | Just enumerate the input streams in the order you want them in the output. | |
bb89b0bc SS |
579 | @var{sync_stream_id} if specified sets the input stream to sync |
580 | against. | |
a19caa0f SS |
581 | @item -map_meta_data @var{outfile}:@var{infile} |
582 | Set meta data information of @var{outfile} from @var{infile}. | |
18bff752 | 583 | @item -debug |
4c5f7207 | 584 | Print specific debug info. |
115329f1 | 585 | @item -benchmark |
fc5607f8 RD |
586 | Show benchmarking information at the end of an encode. |
587 | Shows CPU time used and maximum memory consumption. | |
588 | Maximum memory consumption is not supported on all systems, | |
589 | it will usually display as 0 if not supported. | |
4386f941 | 590 | @item -dump |
4c5f7207 | 591 | Dump each input packet. |
4386f941 DB |
592 | @item -hex |
593 | When dumping packets, also dump the payload. | |
18bff752 | 594 | @item -bitexact |
4c5f7207 | 595 | Only use bit exact algorithms (for codec testing). |
a19caa0f | 596 | @item -ps @var{size} |
2b12317a | 597 | Set RTP payload size in bytes. |
5ee03c86 | 598 | @item -re |
4c5f7207 | 599 | Read input at native frame rate. Mainly used to simulate a grab device. |
4386f941 | 600 | @item -loop_input |
4c5f7207 DB |
601 | Loop over the input stream. Currently it works only for image |
602 | streams. This option is used for automatic FFserver testing. | |
a19caa0f | 603 | @item -loop_output @var{number_of_times} |
019c8838 | 604 | Repeatedly loop output for formats that support looping such as animated GIF |
4c5f7207 | 605 | (0 will loop the output infinitely). |
a19caa0f | 606 | @item -threads @var{count} |
4386f941 | 607 | Thread count. |
a19caa0f | 608 | @item -vsync @var{parameter} |
49553ec8 MN |
609 | Video sync method. |
610 | 0 Each frame is passed with its timestamp from the demuxer to the muxer | |
c7512f6b | 611 | 1 Frames will be duplicated and dropped to achieve exactly the requested |
49553ec8 | 612 | constant framerate. |
c7512f6b JM |
613 | 2 Frames are passed through with their timestamp or dropped so as to prevent |
614 | 2 frames from having the same timestamp | |
615 | -1 Chooses between 1 and 2 depending on muxer capabilities. This is the default method. | |
49553ec8 MN |
616 | |
617 | With -map you can select from | |
29c9183c | 618 | which stream the timestamps should be taken. You can leave either video or |
c52e13f1 | 619 | audio unchanged and sync the remaining stream(s) to the unchanged one. |
a19caa0f | 620 | @item -async @var{samples_per_second} |
29c9183c | 621 | Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps, |
c52e13f1 BL |
622 | the parameter is the maximum samples per second by which the audio is changed. |
623 | -async 1 is a special case where only the start of the audio stream is corrected | |
624 | without any later correction. | |
43399718 VP |
625 | @item -copyts |
626 | Copy timestamps from input to output. | |
627 | @item -shortest | |
628 | Finish encoding when the shortest input stream ends. | |
629 | @item -dts_delta_threshold | |
630 | Timestamp discontinuity delta threshold. | |
a19caa0f | 631 | @item -muxdelay @var{seconds} |
43399718 | 632 | Set the maximum demux-decode delay. |
a19caa0f | 633 | @item -muxpreload @var{seconds} |
43399718 | 634 | Set the initial demux-decode delay. |
006e8108 MS |
635 | @item -streamid @var{output-stream-index}:@var{new-value} |
636 | Assign a new value to a stream's stream-id field in the next output file. | |
637 | All stream-id fields are reset to default for each output file. | |
638 | ||
639 | For example, to set the stream 0 PID to 33 and the stream 1 PID to 36 for | |
640 | an output mpegts file: | |
641 | @example | |
642 | ffmpeg -i infile -streamid 0:33 -streamid 1:36 out.ts | |
643 | @end example | |
9181577c | 644 | @end table |
18bff752 | 645 | |
4a60e574 SS |
646 | @section Preset files |
647 | ||
648 | A preset file contains a sequence of @var{option}=@var{value} pairs, | |
649 | one for each line, specifying a sequence of options which would be | |
650 | awkward to specify on the command line. Lines starting with the hash | |
651 | ('#') character are ignored and are used to provide comments. Check | |
652 | the @file{ffpresets} directory in the FFmpeg source tree for examples. | |
653 | ||
35c504b6 RP |
654 | Preset files are specified with the @code{vpre}, @code{apre}, |
655 | @code{spre}, and @code{fpre} options. The @code{fpre} option takes the | |
656 | filename of the preset instead of a preset name as input and can be | |
657 | used for any kind of codec. For the @code{vpre}, @code{apre}, and | |
658 | @code{spre} options, the options specified in a preset file are | |
66e9aa74 SS |
659 | applied to the currently selected codec of the same type as the preset |
660 | option. | |
4a60e574 | 661 | |
35c504b6 RP |
662 | The argument passed to the @code{vpre}, @code{apre}, and @code{spre} |
663 | preset options identifies the preset file to use according to the | |
664 | following rules: | |
4a60e574 SS |
665 | |
666 | First ffmpeg searches for a file named @var{arg}.ffpreset in the | |
2328e5a2 RK |
667 | directories @file{$FFMPEG_DATADIR} (if set), and @file{$HOME/.ffmpeg}, and in |
668 | the datadir defined at configuration time (usually @file{PREFIX/share/ffmpeg}) | |
669 | in that order. For example, if the argument is @code{libx264-max}, it will | |
bd591ead | 670 | search for the file @file{libx264-max.ffpreset}. |
4a60e574 SS |
671 | |
672 | If no such file is found, then ffmpeg will search for a file named | |
673 | @var{codec_name}-@var{arg}.ffpreset in the above-mentioned | |
674 | directories, where @var{codec_name} is the name of the codec to which | |
675 | the preset file options will be applied. For example, if you select | |
676 | the video codec with @code{-vcodec libx264} and use @code{-vpre max}, | |
677 | then it will search for the file @file{libx264-max.ffpreset}. | |
678 | ||
72cdcc0b | 679 | @anchor{FFmpeg formula evaluator} |
18bff752 FB |
680 | @section FFmpeg formula evaluator |
681 | ||
682 | When evaluating a rate control string, FFmpeg uses an internal formula | |
115329f1 | 683 | evaluator. |
18bff752 FB |
684 | |
685 | The following binary operators are available: @code{+}, @code{-}, | |
686 | @code{*}, @code{/}, @code{^}. | |
687 | ||
688 | The following unary operators are available: @code{+}, @code{-}, | |
689 | @code{(...)}. | |
690 | ||
17bdc290 VP |
691 | The following statements are available: @code{ld}, @code{st}, |
692 | @code{while}. | |
693 | ||
18bff752 FB |
694 | The following functions are available: |
695 | @table @var | |
696 | @item sinh(x) | |
697 | @item cosh(x) | |
698 | @item tanh(x) | |
699 | @item sin(x) | |
700 | @item cos(x) | |
701 | @item tan(x) | |
593b3219 VP |
702 | @item atan(x) |
703 | @item asin(x) | |
704 | @item acos(x) | |
18bff752 FB |
705 | @item exp(x) |
706 | @item log(x) | |
593b3219 | 707 | @item abs(x) |
18bff752 FB |
708 | @item squish(x) |
709 | @item gauss(x) | |
593b3219 | 710 | @item mod(x, y) |
18bff752 FB |
711 | @item max(x, y) |
712 | @item min(x, y) | |
593b3219 VP |
713 | @item eq(x, y) |
714 | @item gte(x, y) | |
18bff752 | 715 | @item gt(x, y) |
593b3219 | 716 | @item lte(x, y) |
18bff752 | 717 | @item lt(x, y) |
18bff752 FB |
718 | @item bits2qp(bits) |
719 | @item qp2bits(qp) | |
720 | @end table | |
721 | ||
722 | The following constants are available: | |
723 | @table @var | |
724 | @item PI | |
725 | @item E | |
726 | @item iTex | |
727 | @item pTex | |
728 | @item tex | |
729 | @item mv | |
730 | @item fCode | |
731 | @item iCount | |
732 | @item mcVar | |
733 | @item var | |
734 | @item isI | |
735 | @item isP | |
736 | @item isB | |
737 | @item avgQP | |
738 | @item qComp | |
739 | @item avgIITex | |
740 | @item avgPITex | |
741 | @item avgPPTex | |
742 | @item avgBPTex | |
743 | @item avgTex | |
744 | @end table | |
745 | ||
e99c4e10 FB |
746 | @c man end |
747 | ||
9181577c | 748 | @chapter Tips |
9f41ed5a | 749 | @c man begin TIPS |
9181577c FB |
750 | |
751 | @itemize | |
9f41ed5a SS |
752 | @item |
753 | For streaming at very low bitrate application, use a low frame rate | |
4c5f7207 | 754 | and a small GOP size. This is especially true for RealVideo where |
e99c4e10 FB |
755 | the Linux player does not seem to be very fast, so it can miss |
756 | frames. An example is: | |
9181577c FB |
757 | |
758 | @example | |
3c0ba870 | 759 | ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm |
9181577c FB |
760 | @end example |
761 | ||
9f41ed5a SS |
762 | @item |
763 | The parameter 'q' which is displayed while encoding is the current | |
4c5f7207 DB |
764 | quantizer. The value 1 indicates that a very good quality could |
765 | be achieved. The value 31 indicates the worst quality. If q=31 appears | |
e99c4e10 | 766 | too often, it means that the encoder cannot compress enough to meet |
4c5f7207 | 767 | your bitrate. You must either increase the bitrate, decrease the |
e99c4e10 | 768 | frame rate or decrease the frame size. |
9181577c | 769 | |
9f41ed5a SS |
770 | @item |
771 | If your computer is not fast enough, you can speed up the | |
e99c4e10 FB |
772 | compression at the expense of the compression ratio. You can use |
773 | '-me zero' to speed up motion estimation, and '-intra' to disable | |
4c5f7207 | 774 | motion estimation completely (you have only I-frames, which means it |
e99c4e10 | 775 | is about as good as JPEG compression). |
9181577c | 776 | |
9f41ed5a SS |
777 | @item |
778 | To have very low audio bitrates, reduce the sampling frequency | |
c27c66c3 | 779 | (down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3). |
9181577c | 780 | |
9f41ed5a SS |
781 | @item |
782 | To have a constant quality (but a variable bitrate), use the option | |
e99c4e10 FB |
783 | '-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst |
784 | quality). | |
9181577c | 785 | |
9f41ed5a SS |
786 | @item |
787 | When converting video files, you can use the '-sameq' option which | |
4c5f7207 DB |
788 | uses the same quality factor in the encoder as in the decoder. |
789 | It allows almost lossless encoding. | |
9181577c FB |
790 | |
791 | @end itemize | |
9f41ed5a | 792 | @c man end TIPS |
9181577c | 793 | |
76561924 SS |
794 | @chapter Examples |
795 | @c man begin EXAMPLES | |
796 | ||
797 | @section Video and Audio grabbing | |
798 | ||
799 | FFmpeg can grab video and audio from devices given that you specify the input | |
800 | format and device. | |
801 | ||
802 | @example | |
803 | ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg | |
804 | @end example | |
805 | ||
806 | Note that you must activate the right video source and channel before | |
807 | launching FFmpeg with any TV viewer such as xawtv | |
808 | (@url{http://linux.bytesex.org/xawtv/}) by Gerd Knorr. You also | |
809 | have to set the audio recording levels correctly with a | |
810 | standard mixer. | |
811 | ||
812 | @section X11 grabbing | |
813 | ||
814 | FFmpeg can grab the X11 display. | |
815 | ||
816 | @example | |
817 | ffmpeg -f x11grab -s cif -i :0.0 /tmp/out.mpg | |
818 | @end example | |
819 | ||
820 | 0.0 is display.screen number of your X11 server, same as | |
821 | the DISPLAY environment variable. | |
822 | ||
823 | @example | |
824 | ffmpeg -f x11grab -s cif -i :0.0+10,20 /tmp/out.mpg | |
825 | @end example | |
826 | ||
827 | 0.0 is display.screen number of your X11 server, same as the DISPLAY environment | |
828 | variable. 10 is the x-offset and 20 the y-offset for the grabbing. | |
829 | ||
830 | @section Video and Audio file format conversion | |
831 | ||
832 | * FFmpeg can use any supported file format and protocol as input: | |
833 | ||
834 | Examples: | |
835 | ||
836 | * You can use YUV files as input: | |
837 | ||
838 | @example | |
839 | ffmpeg -i /tmp/test%d.Y /tmp/out.mpg | |
840 | @end example | |
841 | ||
842 | It will use the files: | |
843 | @example | |
844 | /tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, | |
845 | /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc... | |
846 | @end example | |
847 | ||
848 | The Y files use twice the resolution of the U and V files. They are | |
849 | raw files, without header. They can be generated by all decent video | |
850 | decoders. You must specify the size of the image with the @option{-s} option | |
851 | if FFmpeg cannot guess it. | |
852 | ||
853 | * You can input from a raw YUV420P file: | |
854 | ||
855 | @example | |
856 | ffmpeg -i /tmp/test.yuv /tmp/out.avi | |
857 | @end example | |
858 | ||
859 | test.yuv is a file containing raw YUV planar data. Each frame is composed | |
860 | of the Y plane followed by the U and V planes at half vertical and | |
861 | horizontal resolution. | |
862 | ||
863 | * You can output to a raw YUV420P file: | |
864 | ||
865 | @example | |
866 | ffmpeg -i mydivx.avi hugefile.yuv | |
867 | @end example | |
868 | ||
869 | * You can set several input files and output files: | |
870 | ||
871 | @example | |
872 | ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg | |
873 | @end example | |
874 | ||
875 | Converts the audio file a.wav and the raw YUV video file a.yuv | |
876 | to MPEG file a.mpg. | |
877 | ||
878 | * You can also do audio and video conversions at the same time: | |
879 | ||
880 | @example | |
881 | ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2 | |
882 | @end example | |
883 | ||
884 | Converts a.wav to MPEG audio at 22050 Hz sample rate. | |
885 | ||
886 | * You can encode to several formats at the same time and define a | |
887 | mapping from input stream to output streams: | |
888 | ||
889 | @example | |
890 | ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0 | |
891 | @end example | |
892 | ||
893 | Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map | |
894 | file:index' specifies which input stream is used for each output | |
895 | stream, in the order of the definition of output streams. | |
896 | ||
897 | * You can transcode decrypted VOBs: | |
898 | ||
899 | @example | |
900 | ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi | |
901 | @end example | |
902 | ||
903 | This is a typical DVD ripping example; the input is a VOB file, the | |
904 | output an AVI file with MPEG-4 video and MP3 audio. Note that in this | |
905 | command we use B-frames so the MPEG-4 stream is DivX5 compatible, and | |
906 | GOP size is 300 which means one intra frame every 10 seconds for 29.97fps | |
907 | input video. Furthermore, the audio stream is MP3-encoded so you need | |
908 | to enable LAME support by passing @code{--enable-libmp3lame} to configure. | |
909 | The mapping is particularly useful for DVD transcoding | |
910 | to get the desired audio language. | |
911 | ||
912 | NOTE: To see the supported input formats, use @code{ffmpeg -formats}. | |
913 | ||
914 | * You can extract images from a video, or create a video from many images: | |
915 | ||
916 | For extracting images from a video: | |
917 | @example | |
918 | ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg | |
919 | @end example | |
920 | ||
921 | This will extract one video frame per second from the video and will | |
922 | output them in files named @file{foo-001.jpeg}, @file{foo-002.jpeg}, | |
923 | etc. Images will be rescaled to fit the new WxH values. | |
924 | ||
925 | If you want to extract just a limited number of frames, you can use the | |
926 | above command in combination with the -vframes or -t option, or in | |
927 | combination with -ss to start extracting from a certain point in time. | |
928 | ||
929 | For creating a video from many images: | |
930 | @example | |
931 | ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi | |
932 | @end example | |
933 | ||
934 | The syntax @code{foo-%03d.jpeg} specifies to use a decimal number | |
935 | composed of three digits padded with zeroes to express the sequence | |
936 | number. It is the same syntax supported by the C printf function, but | |
937 | only formats accepting a normal integer are suitable. | |
938 | ||
939 | * You can put many streams of the same type in the output: | |
940 | ||
941 | @example | |
942 | ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio | |
943 | @end example | |
944 | ||
945 | In addition to the first video and audio streams, the resulting | |
946 | output file @file{test12.avi} will contain the second video | |
947 | and the second audio stream found in the input streams list. | |
948 | ||
949 | The @code{-newvideo}, @code{-newaudio} and @code{-newsubtitle} | |
950 | options have to be specified immediately after the name of the output | |
951 | file to which you want to add them. | |
952 | @c man end EXAMPLES | |
953 | ||
4419c8bf SS |
954 | @include indevs.texi |
955 | @include outdevs.texi | |
1de4cfe6 | 956 | @include protocols.texi |
3275ac6a SS |
957 | @include filters.texi |
958 | ||
cadbccb6 SS |
959 | @ignore |
960 | ||
961 | @setfilename ffmpeg | |
962 | @settitle FFmpeg video converter | |
963 | ||
964 | @c man begin SEEALSO | |
b26247ed | 965 | ffplay(1), ffprobe(1), ffserver(1) and the FFmpeg HTML documentation |
cadbccb6 SS |
966 | @c man end |
967 | ||
aeadb328 SS |
968 | @c man begin AUTHORS |
969 | The FFmpeg developers | |
cadbccb6 SS |
970 | @c man end |
971 | ||
972 | @end ignore | |
973 | ||
9181577c | 974 | @bye |