Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ 3275ac6a

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