Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ d370e3e9

History | View | Annotate | Download (28.1 KB)

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