Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ 831ec935

History | View | Annotate | Download (21.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
11
@chapter Introduction
12
13
FFmpeg is a very fast video and audio converter. It can also grab from
14
a live audio/video source.
15 115329f1 Diego Biurrun
16 9181577c Fabrice Bellard
The command line interface is designed to be intuitive, in the sense
17 4c5f7207 Diego Biurrun
that FFmpeg tries to figure out all parameters that can possibly be
18
derived automatically. You usually only have to specify the target
19
bitrate you want.
20 9181577c Fabrice Bellard
21
FFmpeg can also convert from any sample rate to any other, and resize
22
video on the fly with a high quality polyphase filter.
23
24
@chapter Quick Start
25
26 e99c4e10 Fabrice Bellard
@c man begin EXAMPLES
27 9181577c Fabrice Bellard
@section Video and Audio grabbing
28
29 cc58300e Ramiro Polla
FFmpeg can grab video and audio from devices given that you specify the input
30
format and device.
31 e99c4e10 Fabrice Bellard
32 9181577c Fabrice Bellard
@example
33 1156c6b0 Ramiro Polla
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
34 9181577c Fabrice Bellard
@end example
35
36 e99c4e10 Fabrice Bellard
Note that you must activate the right video source and channel before
37 4c5f7207 Diego Biurrun
launching FFmpeg with any TV viewer such as xawtv
38
(@url{http://bytesex.org/xawtv/}) by Gerd Knorr. You also
39
have to set the audio recording levels correctly with a
40 e99c4e10 Fabrice Bellard
standard mixer.
41 9181577c Fabrice Bellard
42 76d2efda Baptiste Coudurier
@section X11 grabbing
43
44 913e4081 Diego Biurrun
FFmpeg can grab the X11 display.
45 76d2efda Baptiste Coudurier
46
@example
47 9e0ab666 Benoit Fouet
ffmpeg -f x11grab -s cif -i :0.0 /tmp/out.mpg
48 76d2efda Baptiste Coudurier
@end example
49
50 913e4081 Diego Biurrun
0.0 is display.screen number of your X11 server, same as
51
the DISPLAY environment variable.
52 76d2efda Baptiste Coudurier
53 0cd4faf9 Panagiotis Issaris
@example
54 9e0ab666 Benoit Fouet
ffmpeg -f x11grab -s cif -i :0.0+10,20 /tmp/out.mpg
55 0cd4faf9 Panagiotis Issaris
@end example
56
57
0.0 is display.screen number of your X11 server, same as the DISPLAY environment
58
variable. 10 is the x-offset and 20 the y-offset for the grabbing.
59
60 6bf40f39 Philip Gladstone
@section Video and Audio file format conversion
61 9181577c Fabrice Bellard
62 4c5f7207 Diego Biurrun
* FFmpeg can use any supported file format and protocol as input:
63 9181577c Fabrice Bellard
64
Examples:
65
66 4c5f7207 Diego Biurrun
* You can use YUV files as input:
67 9181577c Fabrice Bellard
68
@example
69 115329f1 Diego Biurrun
ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
70 9181577c Fabrice Bellard
@end example
71
72 115329f1 Diego Biurrun
It will use the files:
73 9181577c Fabrice Bellard
@example
74 e99c4e10 Fabrice Bellard
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
75
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
76 9181577c Fabrice Bellard
@end example
77
78 e99c4e10 Fabrice Bellard
The Y files use twice the resolution of the U and V files. They are
79
raw files, without header. They can be generated by all decent video
80
decoders. You must specify the size of the image with the @option{-s} option
81 4c5f7207 Diego Biurrun
if FFmpeg cannot guess it.
82 9181577c Fabrice Bellard
83 4c5f7207 Diego Biurrun
* You can input from a raw YUV420P file:
84 9181577c Fabrice Bellard
85
@example
86 e99c4e10 Fabrice Bellard
ffmpeg -i /tmp/test.yuv /tmp/out.avi
87 9181577c Fabrice Bellard
@end example
88
89 4c5f7207 Diego Biurrun
test.yuv is a file containing raw YUV planar data. Each frame is composed
90
of the Y plane followed by the U and V planes at half vertical and
91 e99c4e10 Fabrice Bellard
horizontal resolution.
92 9181577c Fabrice Bellard
93 4c5f7207 Diego Biurrun
* You can output to a raw YUV420P file:
94 9181577c Fabrice Bellard
95
@example
96 f926cbe7 Michel Bardiaux
ffmpeg -i mydivx.avi hugefile.yuv
97 9181577c Fabrice Bellard
@end example
98
99
* You can set several input files and output files:
100
101
@example
102 e99c4e10 Fabrice Bellard
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
103 9181577c Fabrice Bellard
@end example
104
105 4c5f7207 Diego Biurrun
Converts the audio file a.wav and the raw YUV video file a.yuv
106
to MPEG file a.mpg.
107 9181577c Fabrice Bellard
108 6bf40f39 Philip Gladstone
* You can also do audio and video conversions at the same time:
109 9181577c Fabrice Bellard
110
@example
111 e99c4e10 Fabrice Bellard
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
112 9181577c Fabrice Bellard
@end example
113
114 4c5f7207 Diego Biurrun
Converts a.wav to MPEG audio at 22050Hz sample rate.
115 9181577c Fabrice Bellard
116
* You can encode to several formats at the same time and define a
117 e99c4e10 Fabrice Bellard
mapping from input stream to output streams:
118 9181577c Fabrice Bellard
119
@example
120 5438308f Panagiotis Issaris
ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0
121 9181577c Fabrice Bellard
@end example
122
123 4c5f7207 Diego Biurrun
Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map
124
file:index' specifies which input stream is used for each output
125 e99c4e10 Fabrice Bellard
stream, in the order of the definition of output streams.
126 9181577c Fabrice Bellard
127 831ec935 Diego Biurrun
* You can transcode decrypted VOBs:
128 9181577c Fabrice Bellard
129
@example
130 7b900f2d Diego Biurrun
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi
131 9181577c Fabrice Bellard
@end example
132
133 4c5f7207 Diego Biurrun
This is a typical DVD ripping example; the input is a VOB file, the
134
output an AVI file with MPEG-4 video and MP3 audio. Note that in this
135
command we use B-frames so the MPEG-4 stream is DivX5 compatible, and
136
GOP size is 300 which means one intra frame every 10 seconds for 29.97fps
137
input video. Furthermore, the audio stream is MP3-encoded so you need
138 1cc60c47 Diego Biurrun
to enable LAME support by passing @code{--enable-libmp3lame} to configure.
139 4c5f7207 Diego Biurrun
The mapping is particularly useful for DVD transcoding
140 e99c4e10 Fabrice Bellard
to get the desired audio language.
141 9181577c Fabrice Bellard
142 4c5f7207 Diego Biurrun
NOTE: To see the supported input formats, use @code{ffmpeg -formats}.
143 e99c4e10 Fabrice Bellard
@c man end
144 9181577c Fabrice Bellard
145
@chapter Invocation
146
147
@section Syntax
148
149 e99c4e10 Fabrice Bellard
The generic syntax is:
150 9181577c Fabrice Bellard
151 115329f1 Diego Biurrun
@example
152 e99c4e10 Fabrice Bellard
@c man begin SYNOPSIS
153 28f88dc8 Michael Niedermayer
ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}...
154 e99c4e10 Fabrice Bellard
@c man end
155 9181577c Fabrice Bellard
@end example
156 e99c4e10 Fabrice Bellard
@c man begin DESCRIPTION
157
As a general rule, options are applied to the next specified
158 699e77b1 Víctor Paesa
file. Therefore, order is important, and you can have the same
159 8cc62264 Diego Biurrun
option on the command line multiple times. Each occurrence is
160 699e77b1 Víctor Paesa
then applied to the next input or output file.
161
162 eb10acec Diego Biurrun
* To set the video bitrate of the output file to 64kbit/s:
163 699e77b1 Víctor Paesa
@example
164
ffmpeg -i input.avi -b 64k output.avi
165
@end example
166
167
* To force the frame rate of the input and output file to 24 fps:
168
@example
169
ffmpeg -r 24 -i input.avi output.avi
170
@end example
171
172
* To force the frame rate of the output file to 24 fps:
173
@example
174
ffmpeg -i input.avi -r 24 output.avi
175
@end example
176
177
* To force the frame rate of input file to 1 fps and the output file to 24 fps:
178
@example
179
ffmpeg -r 1 -i input.avi -r 24 output.avi
180
@end example
181
182
The format option may be needed for raw input files.
183 9181577c Fabrice Bellard
184 4c5f7207 Diego Biurrun
By default, FFmpeg tries to convert as losslessly as possible: It
185
uses the same audio and video parameters for the outputs as the one
186 e99c4e10 Fabrice Bellard
specified for the inputs.
187
@c man end
188 9181577c Fabrice Bellard
189 e99c4e10 Fabrice Bellard
@c man begin OPTIONS
190 9181577c Fabrice Bellard
@section Main options
191
192 e99c4e10 Fabrice Bellard
@table @option
193 9181577c Fabrice Bellard
@item -L
194 4c5f7207 Diego Biurrun
Show license.
195 18bff752 Fabrice Bellard
196 9181577c Fabrice Bellard
@item -h
197 4c5f7207 Diego Biurrun
Show help.
198 18bff752 Fabrice Bellard
199 4386f941 Diego Biurrun
@item -version
200
Show version.
201
202 e99c4e10 Fabrice Bellard
@item -formats
203 4c5f7207 Diego Biurrun
Show available formats, codecs, protocols, ...
204 18bff752 Fabrice Bellard
205 a19caa0f Stefano Sabatini
@item -f @var{fmt}
206 4c5f7207 Diego Biurrun
Force format.
207 18bff752 Fabrice Bellard
208 a19caa0f Stefano Sabatini
@item -i @var{filename}
209 831ec935 Diego Biurrun
input file name
210 9181577c Fabrice Bellard
211 115329f1 Diego Biurrun
@item -y
212 4c5f7207 Diego Biurrun
Overwrite output files.
213 9181577c Fabrice Bellard
214 a19caa0f Stefano Sabatini
@item -t @var{duration}
215 250c5317 Godwin Stewart
Restrict the transcoded/captured video sequence
216
to the duration specified in seconds.
217 4c5f7207 Diego Biurrun
@code{hh:mm:ss[.xxx]} syntax is also supported.
218 9181577c Fabrice Bellard
219 a19caa0f Stefano Sabatini
@item -fs @var{limit_size}
220 4386f941 Diego Biurrun
Set the file size limit.
221
222 a19caa0f Stefano Sabatini
@item -ss @var{position}
223 4c5f7207 Diego Biurrun
Seek to given time position in seconds.
224
@code{hh:mm:ss[.xxx]} syntax is also supported.
225 e83a84ac Benjamin Larsson
226 a19caa0f Stefano Sabatini
@item -itsoffset @var{offset}
227 4386f941 Diego Biurrun
Set the input time offset in seconds.
228
@code{[-]hh:mm:ss[.xxx]} syntax is also supported.
229
This option affects all the input files that follow it.
230
The offset is added to the timestamps of the input files.
231
Specifying a positive offset means that the corresponding
232
streams are delayed by 'offset' seconds.
233
234 a19caa0f Stefano Sabatini
@item -title @var{string}
235 4c5f7207 Diego Biurrun
Set the title.
236 9181577c Fabrice Bellard
237 a19caa0f Stefano Sabatini
@item -timestamp @var{time}
238 4386f941 Diego Biurrun
Set the timestamp.
239
240 a19caa0f Stefano Sabatini
@item -author @var{string}
241 4c5f7207 Diego Biurrun
Set the author.
242 9181577c Fabrice Bellard
243 a19caa0f Stefano Sabatini
@item -copyright @var{string}
244 4c5f7207 Diego Biurrun
Set the copyright.
245 9181577c Fabrice Bellard
246 a19caa0f Stefano Sabatini
@item -comment @var{string}
247 4c5f7207 Diego Biurrun
Set the comment.
248 9181577c Fabrice Bellard
249 a19caa0f Stefano Sabatini
@item -album @var{string}
250 4386f941 Diego Biurrun
Set the album.
251
252 a19caa0f Stefano Sabatini
@item -track @var{number}
253 ec1b10f4 Panagiotis Issaris
Set the track.
254
255 a19caa0f Stefano Sabatini
@item -year @var{number}
256 ec1b10f4 Panagiotis Issaris
Set the year.
257
258 a19caa0f Stefano Sabatini
@item -v @var{number}
259 53d1bdba Stefano Sabatini
Set the logging verbosity level.
260 4386f941 Diego Biurrun
261 a19caa0f Stefano Sabatini
@item -target @var{type}
262 4386f941 Diego Biurrun
Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd",
263 4c5f7207 Diego Biurrun
"ntsc-svcd", ... ). All the format options (bitrate, codecs,
264
buffer sizes) are then set automatically. You can just type:
265 99db6420 Fabrice Bellard
266
@example
267
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
268
@end example
269
270 4c5f7207 Diego Biurrun
Nevertheless you can specify additional options as long as you know
271
they do not conflict with the standard, as in:
272 791d8d1d Michel Bardiaux
273
@example
274
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
275
@end example
276
277 a19caa0f Stefano Sabatini
@item -dframes @var{number}
278 4386f941 Diego Biurrun
Set the number of data frames to record.
279
280 a19caa0f Stefano Sabatini
@item -scodec @var{codec}
281 4386f941 Diego Biurrun
Force subtitle codec ('copy' to copy stream).
282
283
@item -newsubtitle
284
Add a new subtitle stream to the current output stream.
285
286 a19caa0f Stefano Sabatini
@item -slang @var{code}
287 4386f941 Diego Biurrun
Set the ISO 639 language code (3 letters) of the current subtitle stream.
288 401fbdde Michael Niedermayer
289 9181577c Fabrice Bellard
@end table
290
291
@section Video Options
292
293 e99c4e10 Fabrice Bellard
@table @option
294 a19caa0f Stefano Sabatini
@item -b @var{bitrate}
295 3c0ba870 Panagiotis Issaris
Set the video bitrate in bit/s (default = 200 kb/s).
296 a19caa0f Stefano Sabatini
@item -vframes @var{number}
297 4386f941 Diego Biurrun
Set the number of video frames to record.
298 a19caa0f Stefano Sabatini
@item -r @var{fps}
299 4386f941 Diego Biurrun
Set frame rate (Hz value, fraction or abbreviation), (default = 25).
300 a19caa0f Stefano Sabatini
@item -s @var{size}
301 67053c30 Ivan Kalvachev
Set frame size. The format is @samp{wxh} (ffserver default = 160x128, ffmpeg default = same as source).
302 4c5f7207 Diego Biurrun
The following abbreviations are recognized:
303 5ee03c86 Fabrice Bellard
@table @samp
304 18bff752 Fabrice Bellard
@item sqcif
305
128x96
306
@item qcif
307
176x144
308
@item cif
309
352x288
310
@item 4cif
311
704x576
312 7d88b5ca Benoit Fouet
@item qqvga
313
160x120
314
@item qvga
315
320x240
316
@item vga
317
640x480
318
@item svga
319
800x600
320
@item xga
321
1024x768
322
@item uxga
323
1600x1200
324
@item qxga
325
2048x1536
326
@item sxga
327
1280x1024
328
@item qsxga
329
2560x2048
330
@item hsxga
331
5120x4096
332
@item wvga
333
852x480
334
@item wxga
335
1366x768
336
@item wsxga
337
1600x1024
338
@item wuxga
339
1920x1200
340
@item woxga
341
2560x1600
342
@item wqsxga
343
3200x2048
344
@item wquxga
345
3840x2400
346
@item whsxga
347
6400x4096
348
@item whuxga
349
7680x4800
350
@item cga
351
320x200
352
@item ega
353
640x350
354
@item hd480
355
852x480
356
@item hd720
357
1280x720
358
@item hd1080
359
1920x1080
360 18bff752 Fabrice Bellard
@end table
361
362 a19caa0f Stefano Sabatini
@item -aspect @var{aspect}
363 4c5f7207 Diego Biurrun
Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777).
364 a19caa0f Stefano Sabatini
@item -croptop @var{size}
365 4c5f7207 Diego Biurrun
Set top crop band size (in pixels).
366 a19caa0f Stefano Sabatini
@item -cropbottom @var{size}
367 4c5f7207 Diego Biurrun
Set bottom crop band size (in pixels).
368 a19caa0f Stefano Sabatini
@item -cropleft @var{size}
369 4c5f7207 Diego Biurrun
Set left crop band size (in pixels).
370 a19caa0f Stefano Sabatini
@item -cropright @var{size}
371 4c5f7207 Diego Biurrun
Set right crop band size (in pixels).
372 a19caa0f Stefano Sabatini
@item -padtop @var{size}
373 4c5f7207 Diego Biurrun
Set top pad band size (in pixels).
374 a19caa0f Stefano Sabatini
@item -padbottom @var{size}
375 4c5f7207 Diego Biurrun
Set bottom pad band size (in pixels).
376 a19caa0f Stefano Sabatini
@item -padleft @var{size}
377 4c5f7207 Diego Biurrun
Set left pad band size (in pixels).
378 a19caa0f Stefano Sabatini
@item -padright @var{size}
379 4c5f7207 Diego Biurrun
Set right pad band size (in pixels).
380 a19caa0f Stefano Sabatini
@item -padcolor @var{hex_color}
381 4c5f7207 Diego Biurrun
Set color of padded bands. The value for padcolor is expressed
382
as a six digit hexadecimal number where the first two digits
383
represent red, the middle two digits green and last two digits
384
blue (default = 000000 (black)).
385 9181577c Fabrice Bellard
@item -vn
386 4c5f7207 Diego Biurrun
Disable video recording.
387 a19caa0f Stefano Sabatini
@item -bt @var{tolerance}
388 dc5ee8bc Panagiotis Issaris
Set video bitrate tolerance (in bit/s).
389 a19caa0f Stefano Sabatini
@item -maxrate @var{bitrate}
390 f754bfb9 Michael Niedermayer
Set max video bitrate (in bit/s).
391 a19caa0f Stefano Sabatini
@item -minrate @var{bitrate}
392 f754bfb9 Michael Niedermayer
Set min video bitrate (in bit/s).
393 a19caa0f Stefano Sabatini
@item -bufsize @var{size}
394 fa78d895 Diego Biurrun
Set video buffer verifier buffer size (in bits).
395 a19caa0f Stefano Sabatini
@item -vcodec @var{codec}
396 4c5f7207 Diego Biurrun
Force video codec to @var{codec}. Use the @code{copy} special value to
397 5ee03c86 Fabrice Bellard
tell that the raw codec data must be copied as is.
398 18bff752 Fabrice Bellard
@item -sameq
399 4c5f7207 Diego Biurrun
Use same video quality as source (implies VBR).
400 9181577c Fabrice Bellard
401 a19caa0f Stefano Sabatini
@item -pass @var{n}
402 4c5f7207 Diego Biurrun
Select the pass number (1 or 2). It is useful to do two pass
403
encoding. The statistics of the video are recorded in the first
404
pass and the video is generated at the exact requested bitrate
405
in the second pass.
406 9181577c Fabrice Bellard
407 a19caa0f Stefano Sabatini
@item -passlogfile @var{file}
408 4c5f7207 Diego Biurrun
Set two pass logfile name to @var{file}.
409 9181577c Fabrice Bellard
410 4386f941 Diego Biurrun
@item -newvideo
411
Add a new video stream to the current output stream.
412
413 9181577c Fabrice Bellard
@end table
414
415 18bff752 Fabrice Bellard
@section Advanced Video Options
416 9181577c Fabrice Bellard
417 e99c4e10 Fabrice Bellard
@table @option
418 a19caa0f Stefano Sabatini
@item -pix_fmt @var{format}
419 c3b95b1d Stefano Sabatini
Set pixel format. Use 'list' as parameter to show all the supported
420
pixel formats.
421 a19caa0f Stefano Sabatini
@item -sws_flags @var{flags}
422 831ec935 Diego Biurrun
Set SwScaler flags (only available when compiled with swscale support).
423 a19caa0f Stefano Sabatini
@item -g @var{gop_size}
424 4c5f7207 Diego Biurrun
Set the group of pictures size.
425 115329f1 Diego Biurrun
@item -intra
426 4c5f7207 Diego Biurrun
Use only intra frames.
427 a19caa0f Stefano Sabatini
@item -vdt @var{n}
428 4386f941 Diego Biurrun
Discard threshold.
429 a19caa0f Stefano Sabatini
@item -qscale @var{q}
430 4bef236b Diego Biurrun
Use fixed video quantizer scale (VBR).
431 a19caa0f Stefano Sabatini
@item -qmin @var{q}
432 4bef236b Diego Biurrun
minimum video quantizer scale (VBR)
433 a19caa0f Stefano Sabatini
@item -qmax @var{q}
434 4bef236b Diego Biurrun
maximum video quantizer scale (VBR)
435 a19caa0f Stefano Sabatini
@item -qdiff @var{q}
436 4bef236b Diego Biurrun
maximum difference between the quantizer scales (VBR)
437 a19caa0f Stefano Sabatini
@item -qblur @var{blur}
438 4bef236b Diego Biurrun
video quantizer scale blur (VBR)
439 a19caa0f Stefano Sabatini
@item -qcomp @var{compression}
440 4bef236b Diego Biurrun
video quantizer scale compression (VBR)
441 18bff752 Fabrice Bellard
442 a19caa0f Stefano Sabatini
@item -lmin @var{lambda}
443 9ae711e1 Víctor Paesa
minimum video lagrange factor (VBR)
444 a19caa0f Stefano Sabatini
@item -lmax @var{lambda}
445 9ae711e1 Víctor Paesa
max video lagrange factor (VBR)
446 a19caa0f Stefano Sabatini
@item -mblmin @var{lambda}
447 9ae711e1 Víctor Paesa
minimum macroblock quantizer scale (VBR)
448 a19caa0f Stefano Sabatini
@item -mblmax @var{lambda}
449 9ae711e1 Víctor Paesa
maximum macroblock quantizer scale (VBR)
450
451
These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units,
452
but you may use the QP2LAMBDA constant to easily convert from 'q' units:
453
@example
454
ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
455
@end example
456
457 a19caa0f Stefano Sabatini
@item -rc_init_cplx @var{complexity}
458 4c5f7207 Diego Biurrun
initial complexity for single pass encoding
459 a19caa0f Stefano Sabatini
@item -b_qfactor @var{factor}
460 4c5f7207 Diego Biurrun
qp factor between P- and B-frames
461 a19caa0f Stefano Sabatini
@item -i_qfactor @var{factor}
462 4c5f7207 Diego Biurrun
qp factor between P- and I-frames
463 a19caa0f Stefano Sabatini
@item -b_qoffset @var{offset}
464 4c5f7207 Diego Biurrun
qp offset between P- and B-frames
465 a19caa0f Stefano Sabatini
@item -i_qoffset @var{offset}
466 4c5f7207 Diego Biurrun
qp offset between P- and I-frames
467 a19caa0f Stefano Sabatini
@item -rc_eq @var{equation}
468 4c5f7207 Diego Biurrun
Set rate control equation (@pxref{FFmpeg formula
469
evaluator}) (default = @code{tex^qComp}).
470 a19caa0f Stefano Sabatini
@item -rc_override @var{override}
471 5ee03c86 Fabrice Bellard
rate control override for specific intervals
472 a19caa0f Stefano Sabatini
@item -me_method @var{method}
473 4c5f7207 Diego Biurrun
Set motion estimation method to @var{method}.
474
Available methods are (from lowest to best quality):
475 18bff752 Fabrice Bellard
@table @samp
476
@item zero
477 5ee03c86 Fabrice Bellard
Try just the (0, 0) vector.
478 18bff752 Fabrice Bellard
@item phods
479
@item log
480
@item x1
481 c0de00da Stefano Sabatini
@item hex
482
@item umh
483 18bff752 Fabrice Bellard
@item epzs
484
(default method)
485
@item full
486
exhaustive search (slow and marginally better than epzs)
487
@end table
488
489 a19caa0f Stefano Sabatini
@item -dct_algo @var{algo}
490 4c5f7207 Diego Biurrun
Set DCT algorithm to @var{algo}. Available values are:
491 18bff752 Fabrice Bellard
@table @samp
492
@item 0
493
FF_DCT_AUTO (default)
494
@item 1
495
FF_DCT_FASTINT
496
@item 2
497
FF_DCT_INT
498
@item 3
499
FF_DCT_MMX
500
@item 4
501
FF_DCT_MLIB
502
@item 5
503
FF_DCT_ALTIVEC
504
@end table
505
506 a19caa0f Stefano Sabatini
@item -idct_algo @var{algo}
507 4c5f7207 Diego Biurrun
Set IDCT algorithm to @var{algo}. Available values are:
508 18bff752 Fabrice Bellard
@table @samp
509
@item 0
510
FF_IDCT_AUTO (default)
511
@item 1
512 115329f1 Diego Biurrun
FF_IDCT_INT
513 18bff752 Fabrice Bellard
@item 2
514 115329f1 Diego Biurrun
FF_IDCT_SIMPLE
515 18bff752 Fabrice Bellard
@item 3
516 115329f1 Diego Biurrun
FF_IDCT_SIMPLEMMX
517 18bff752 Fabrice Bellard
@item 4
518 115329f1 Diego Biurrun
FF_IDCT_LIBMPEG2MMX
519 18bff752 Fabrice Bellard
@item 5
520 115329f1 Diego Biurrun
FF_IDCT_PS2
521 18bff752 Fabrice Bellard
@item 6
522 115329f1 Diego Biurrun
FF_IDCT_MLIB
523 18bff752 Fabrice Bellard
@item 7
524 115329f1 Diego Biurrun
FF_IDCT_ARM
525 18bff752 Fabrice Bellard
@item 8
526 115329f1 Diego Biurrun
FF_IDCT_ALTIVEC
527 18bff752 Fabrice Bellard
@item 9
528 115329f1 Diego Biurrun
FF_IDCT_SH4
529 18bff752 Fabrice Bellard
@item 10
530 115329f1 Diego Biurrun
FF_IDCT_SIMPLEARM
531 18bff752 Fabrice Bellard
@end table
532
533 a19caa0f Stefano Sabatini
@item -er @var{n}
534 4c5f7207 Diego Biurrun
Set error resilience to @var{n}.
535 18bff752 Fabrice Bellard
@table @samp
536 115329f1 Diego Biurrun
@item 1
537 1471c6c2 Diego Biurrun
FF_ER_CAREFUL (default)
538 18bff752 Fabrice Bellard
@item 2
539 5ee03c86 Fabrice Bellard
FF_ER_COMPLIANT
540 18bff752 Fabrice Bellard
@item 3
541
FF_ER_AGGRESSIVE
542
@item 4
543
FF_ER_VERY_AGGRESSIVE
544
@end table
545
546 a19caa0f Stefano Sabatini
@item -ec @var{bit_mask}
547 4c5f7207 Diego Biurrun
Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of
548 5ee03c86 Fabrice Bellard
the following values:
549 18bff752 Fabrice Bellard
@table @samp
550
@item 1
551 4c5f7207 Diego Biurrun
FF_EC_GUESS_MVS (default = enabled)
552 18bff752 Fabrice Bellard
@item 2
553 4c5f7207 Diego Biurrun
FF_EC_DEBLOCK (default = enabled)
554 18bff752 Fabrice Bellard
@end table
555
556 a19caa0f Stefano Sabatini
@item -bf @var{frames}
557 4c5f7207 Diego Biurrun
Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4).
558 a19caa0f Stefano Sabatini
@item -mbd @var{mode}
559 18bff752 Fabrice Bellard
macroblock decision
560
@table @samp
561
@item 0
562 4c5f7207 Diego Biurrun
FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in FFmpeg).
563 18bff752 Fabrice Bellard
@item 1
564 4c5f7207 Diego Biurrun
FF_MB_DECISION_BITS: Choose the one which needs the fewest bits.
565 18bff752 Fabrice Bellard
@item 2
566 019c8838 Diego Biurrun
FF_MB_DECISION_RD: rate distortion
567 18bff752 Fabrice Bellard
@end table
568
569
@item -4mv
570 4c5f7207 Diego Biurrun
Use four motion vector by macroblock (MPEG-4 only).
571 18bff752 Fabrice Bellard
@item -part
572 4c5f7207 Diego Biurrun
Use data partitioning (MPEG-4 only).
573 a19caa0f Stefano Sabatini
@item -bug @var{param}
574 4c5f7207 Diego Biurrun
Work around encoder bugs that are not auto-detected.
575 a19caa0f Stefano Sabatini
@item -strict @var{strictness}
576 4c5f7207 Diego Biurrun
How strictly to follow the standards.
577 5ee03c86 Fabrice Bellard
@item -aic
578 4c5f7207 Diego Biurrun
Enable Advanced intra coding (h263+).
579 5ee03c86 Fabrice Bellard
@item -umv
580 4c5f7207 Diego Biurrun
Enable Unlimited Motion Vector (h263+)
581 18bff752 Fabrice Bellard
582
@item -deinterlace
583 4c5f7207 Diego Biurrun
Deinterlace pictures.
584 3841e813 Benjamin Larsson
@item -ilme
585 4c5f7207 Diego Biurrun
Force interlacing support in encoder (MPEG-2 and MPEG-4 only).
586
Use this option if your input file is interlaced and you want
587
to keep the interlaced format for minimum losses.
588
The alternative is to deinterlace the input stream with
589
@option{-deinterlace}, but deinterlacing introduces losses.
590 18bff752 Fabrice Bellard
@item -psnr
591 4c5f7207 Diego Biurrun
Calculate PSNR of compressed frames.
592 18bff752 Fabrice Bellard
@item -vstats
593 4c5f7207 Diego Biurrun
Dump video coding statistics to @file{vstats_HHMMSS.log}.
594 a19caa0f Stefano Sabatini
@item -vstats_file @var{file}
595 b60d1379 Stefano Sabatini
Dump video coding statistics to @var{file}.
596 a19caa0f Stefano Sabatini
@item -vhook @var{module}
597 4c5f7207 Diego Biurrun
Insert video processing @var{module}. @var{module} contains the module
598 18bff752 Fabrice Bellard
name and its parameters separated by spaces.
599 a19caa0f Stefano Sabatini
@item -top @var{n}
600 4386f941 Diego Biurrun
top=1/bottom=0/auto=-1 field first
601 a19caa0f Stefano Sabatini
@item -dc @var{precision}
602 4386f941 Diego Biurrun
Intra_dc_precision.
603 a19caa0f Stefano Sabatini
@item -vtag @var{fourcc/tag}
604 4386f941 Diego Biurrun
Force video tag/fourcc.
605
@item -qphist
606
Show QP histogram.
607 a19caa0f Stefano Sabatini
@item -vbsf @var{bitstream_filter}
608 4386f941 Diego Biurrun
Bitstream filters available are "dump_extra", "remove_extra", "noise".
609 18bff752 Fabrice Bellard
@end table
610
611
@section Audio Options
612
613
@table @option
614 a19caa0f Stefano Sabatini
@item -aframes @var{number}
615 4386f941 Diego Biurrun
Set the number of audio frames to record.
616 a19caa0f Stefano Sabatini
@item -ar @var{freq}
617 4c5f7207 Diego Biurrun
Set the audio sampling frequency (default = 44100 Hz).
618 a19caa0f Stefano Sabatini
@item -ab @var{bitrate}
619 5438308f Panagiotis Issaris
Set the audio bitrate in bit/s (default = 64k).
620 a19caa0f Stefano Sabatini
@item -ac @var{channels}
621 4c5f7207 Diego Biurrun
Set the number of audio channels (default = 1).
622 5ee03c86 Fabrice Bellard
@item -an
623 4c5f7207 Diego Biurrun
Disable audio recording.
624 a19caa0f Stefano Sabatini
@item -acodec @var{codec}
625 4c5f7207 Diego Biurrun
Force audio codec to @var{codec}. Use the @code{copy} special value to
626
specify that the raw codec data must be copied as is.
627 de62a89d Víctor Paesa
@item -newaudio
628 18fd519f Diego Biurrun
Add a new audio track to the output file. If you want to specify parameters,
629
do so before @code{-newaudio} (@code{-acodec}, @code{-ab}, etc..).
630 de62a89d Víctor Paesa
631 18fd519f Diego Biurrun
Mapping will be done automatically, if the number of output streams is equal to
632
the number of input streams, else it will pick the first one that matches. You
633 de62a89d Víctor Paesa
can override the mapping using @code{-map} as usual.
634
635
Example:
636
@example
637 5438308f Panagiotis Issaris
ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio
638 de62a89d Víctor Paesa
@end example
639 a19caa0f Stefano Sabatini
@item -alang @var{code}
640 4386f941 Diego Biurrun
Set the ISO 639 language code (3 letters) of the current audio stream.
641
@end table
642
643
@section Advanced Audio options:
644
645
@table @option
646 a19caa0f Stefano Sabatini
@item -atag @var{fourcc/tag}
647 4386f941 Diego Biurrun
Force audio tag/fourcc.
648 a19caa0f Stefano Sabatini
@item -absf @var{bitstream_filter}
649 4386f941 Diego Biurrun
Bitstream filters available are "dump_extra", "remove_extra", "noise", "mp3comp", "mp3decomp".
650
@end table
651
652
@section Subtitle options:
653
654
@table @option
655 a19caa0f Stefano Sabatini
@item -scodec @var{codec}
656 4386f941 Diego Biurrun
Force subtitle codec ('copy' to copy stream).
657
@item -newsubtitle
658
Add a new subtitle stream to the current output stream.
659 a19caa0f Stefano Sabatini
@item -slang @var{code}
660 4386f941 Diego Biurrun
Set the ISO 639 language code (3 letters) of the current subtitle stream.
661 18bff752 Fabrice Bellard
@end table
662
663
@section Audio/Video grab options
664
665
@table @option
666 a19caa0f Stefano Sabatini
@item -vc @var{channel}
667 4c5f7207 Diego Biurrun
Set video grab channel (DV1394 only).
668 a19caa0f Stefano Sabatini
@item -tvstd @var{standard}
669 4c5f7207 Diego Biurrun
Set television standard (NTSC, PAL (SECAM)).
670 cc58300e Ramiro Polla
@item -isync
671
Synchronize read on input.
672 18bff752 Fabrice Bellard
@end table
673
674
@section Advanced options
675
676
@table @option
677 e645a733 Benjamin Larsson
@item -map input stream id[:input stream id]
678
Set stream mapping from input streams to output streams.
679
Just enumerate the input streams in the order you want them in the output.
680
[input stream id] sets the (input) stream to sync against.
681 a19caa0f Stefano Sabatini
@item -map_meta_data @var{outfile}:@var{infile}
682
Set meta data information of @var{outfile} from @var{infile}.
683 18bff752 Fabrice Bellard
@item -debug
684 4c5f7207 Diego Biurrun
Print specific debug info.
685 115329f1 Diego Biurrun
@item -benchmark
686 4c5f7207 Diego Biurrun
Add timings for benchmarking.
687 4386f941 Diego Biurrun
@item -dump
688 4c5f7207 Diego Biurrun
Dump each input packet.
689 4386f941 Diego Biurrun
@item -hex
690
When dumping packets, also dump the payload.
691 18bff752 Fabrice Bellard
@item -bitexact
692 4c5f7207 Diego Biurrun
Only use bit exact algorithms (for codec testing).
693 a19caa0f Stefano Sabatini
@item -ps @var{size}
694 4c5f7207 Diego Biurrun
Set packet size in bits.
695 5ee03c86 Fabrice Bellard
@item -re
696 4c5f7207 Diego Biurrun
Read input at native frame rate. Mainly used to simulate a grab device.
697 4386f941 Diego Biurrun
@item -loop_input
698 4c5f7207 Diego Biurrun
Loop over the input stream. Currently it works only for image
699
streams. This option is used for automatic FFserver testing.
700 a19caa0f Stefano Sabatini
@item -loop_output @var{number_of_times}
701 019c8838 Diego Biurrun
Repeatedly loop output for formats that support looping such as animated GIF
702 4c5f7207 Diego Biurrun
(0 will loop the output infinitely).
703 a19caa0f Stefano Sabatini
@item -threads @var{count}
704 4386f941 Diego Biurrun
Thread count.
705 a19caa0f Stefano Sabatini
@item -vsync @var{parameter}
706 29c9183c Diego Biurrun
Video sync method. Video will be stretched/squeezed to match the timestamps,
707
it is done by duplicating and dropping frames. With -map you can select from
708
which stream the timestamps should be taken. You can leave either video or
709 c52e13f1 Benjamin Larsson
audio unchanged and sync the remaining stream(s) to the unchanged one.
710 a19caa0f Stefano Sabatini
@item -async @var{samples_per_second}
711 29c9183c Diego Biurrun
Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps,
712 c52e13f1 Benjamin Larsson
the parameter is the maximum samples per second by which the audio is changed.
713
-async 1 is a special case where only the start of the audio stream is corrected
714
without any later correction.
715 43399718 Víctor Paesa
@item -copyts
716
Copy timestamps from input to output.
717
@item -shortest
718
Finish encoding when the shortest input stream ends.
719
@item -dts_delta_threshold
720
Timestamp discontinuity delta threshold.
721 a19caa0f Stefano Sabatini
@item -muxdelay @var{seconds}
722 43399718 Víctor Paesa
Set the maximum demux-decode delay.
723 a19caa0f Stefano Sabatini
@item -muxpreload @var{seconds}
724 43399718 Víctor Paesa
Set the initial demux-decode delay.
725 9181577c Fabrice Bellard
@end table
726 18bff752 Fabrice Bellard
727
@node FFmpeg formula evaluator
728
@section FFmpeg formula evaluator
729
730
When evaluating a rate control string, FFmpeg uses an internal formula
731 115329f1 Diego Biurrun
evaluator.
732 18bff752 Fabrice Bellard
733
The following binary operators are available: @code{+}, @code{-},
734
@code{*}, @code{/}, @code{^}.
735
736
The following unary operators are available: @code{+}, @code{-},
737
@code{(...)}.
738
739
The following functions are available:
740
@table @var
741
@item sinh(x)
742
@item cosh(x)
743
@item tanh(x)
744
@item sin(x)
745
@item cos(x)
746
@item tan(x)
747
@item exp(x)
748
@item log(x)
749
@item squish(x)
750
@item gauss(x)
751
@item abs(x)
752
@item max(x, y)
753
@item min(x, y)
754
@item gt(x, y)
755
@item lt(x, y)
756
@item eq(x, y)
757
@item bits2qp(bits)
758
@item qp2bits(qp)
759
@end table
760
761
The following constants are available:
762
@table @var
763
@item PI
764
@item E
765
@item iTex
766
@item pTex
767
@item tex
768
@item mv
769
@item fCode
770
@item iCount
771
@item mcVar
772
@item var
773
@item isI
774
@item isP
775
@item isB
776
@item avgQP
777
@item qComp
778
@item avgIITex
779
@item avgPITex
780
@item avgPPTex
781
@item avgBPTex
782
@item avgTex
783
@end table
784
785 e99c4e10 Fabrice Bellard
@c man end
786
787
@ignore
788
789
@setfilename ffmpeg
790
@settitle FFmpeg video converter
791
792
@c man begin SEEALSO
793 019c8838 Diego Biurrun
ffserver(1), ffplay(1) and the HTML documentation of @file{ffmpeg}.
794 e99c4e10 Fabrice Bellard
@c man end
795
796
@c man begin AUTHOR
797
Fabrice Bellard
798
@c man end
799
800
@end ignore
801 9181577c Fabrice Bellard
802
@section Protocols
803
804 831ec935 Diego Biurrun
The file name can be @file{-} to read from standard input or to write
805 4c5f7207 Diego Biurrun
to standard output.
806 9181577c Fabrice Bellard
807 4c5f7207 Diego Biurrun
FFmpeg also handles many protocols specified with an URL syntax.
808 9181577c Fabrice Bellard
809 4c5f7207 Diego Biurrun
Use 'ffmpeg -formats' to see a list of the supported protocols.
810 9181577c Fabrice Bellard
811 e99c4e10 Fabrice Bellard
The protocol @code{http:} is currently used only to communicate with
812 4c5f7207 Diego Biurrun
FFserver (see the FFserver documentation). When FFmpeg will be a
813 e99c4e10 Fabrice Bellard
video player it will also be used for streaming :-)
814 9181577c Fabrice Bellard
815
@chapter Tips
816
817
@itemize
818 4c5f7207 Diego Biurrun
@item For streaming at very low bitrate application, use a low frame rate
819
and a small GOP size. This is especially true for RealVideo where
820 e99c4e10 Fabrice Bellard
the Linux player does not seem to be very fast, so it can miss
821
frames. An example is:
822 9181577c Fabrice Bellard
823
@example
824 3c0ba870 Panagiotis Issaris
ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
825 9181577c Fabrice Bellard
@end example
826
827
@item  The parameter 'q' which is displayed while encoding is the current
828 4c5f7207 Diego Biurrun
quantizer. The value 1 indicates that a very good quality could
829
be achieved. The value 31 indicates the worst quality. If q=31 appears
830 e99c4e10 Fabrice Bellard
too often, it means that the encoder cannot compress enough to meet
831 4c5f7207 Diego Biurrun
your bitrate. You must either increase the bitrate, decrease the
832 e99c4e10 Fabrice Bellard
frame rate or decrease the frame size.
833 9181577c Fabrice Bellard
834
@item If your computer is not fast enough, you can speed up the
835 e99c4e10 Fabrice Bellard
compression at the expense of the compression ratio. You can use
836
'-me zero' to speed up motion estimation, and '-intra' to disable
837 4c5f7207 Diego Biurrun
motion estimation completely (you have only I-frames, which means it
838 e99c4e10 Fabrice Bellard
is about as good as JPEG compression).
839 9181577c Fabrice Bellard
840 4c5f7207 Diego Biurrun
@item To have very low audio bitrates, reduce the sampling frequency
841 019c8838 Diego Biurrun
(down to 22050 kHz for MPEG audio, 22050 or 11025 for AC3).
842 9181577c Fabrice Bellard
843
@item To have a constant quality (but a variable bitrate), use the option
844 e99c4e10 Fabrice Bellard
'-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst
845
quality).
846 9181577c Fabrice Bellard
847
@item When converting video files, you can use the '-sameq' option which
848 4c5f7207 Diego Biurrun
uses the same quality factor in the encoder as in the decoder.
849
It allows almost lossless encoding.
850 9181577c Fabrice Bellard
851
@end itemize
852
853
@bye