Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ e1f4dd6d

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