Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ 6785e927

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