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