Commit | Line | Data |
---|---|---|
9181577c FB |
1 | \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 | ||
16 | The command line interface is designed to be intuitive, in the sense | |
17 | that ffmpeg tries to figure out all the parameters, when | |
18 | possible. You have usually to give only the target bitrate you want. | |
19 | ||
20 | FFmpeg can also convert from any sample rate to any other, and resize | |
21 | video on the fly with a high quality polyphase filter. | |
22 | ||
23 | @chapter Quick Start | |
24 | ||
e99c4e10 | 25 | @c man begin EXAMPLES |
9181577c FB |
26 | @section Video and Audio grabbing |
27 | ||
e99c4e10 FB |
28 | FFmpeg can use a video4linux compatible video source and any Open Sound |
29 | System audio source: | |
30 | ||
9181577c | 31 | @example |
e99c4e10 | 32 | ffmpeg /tmp/out.mpg |
9181577c FB |
33 | @end example |
34 | ||
e99c4e10 FB |
35 | Note that you must activate the right video source and channel before |
36 | launching ffmpeg. You can use any TV viewer such as xawtv | |
37 | (@url{http://bytesex.org/xawtv/}) by Gerd Knorr which I find very | |
38 | good. You must also set correctly the audio recording levels with a | |
39 | standard mixer. | |
9181577c | 40 | |
6bf40f39 | 41 | @section Video and Audio file format conversion |
9181577c FB |
42 | |
43 | * ffmpeg can use any supported file format and protocol as input: | |
44 | ||
45 | Examples: | |
46 | ||
47 | * You can input from YUV files: | |
48 | ||
49 | @example | |
e99c4e10 | 50 | ffmpeg -i /tmp/test%d.Y /tmp/out.mpg |
9181577c FB |
51 | @end example |
52 | ||
e99c4e10 | 53 | It will use the files: |
9181577c | 54 | @example |
e99c4e10 FB |
55 | /tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, |
56 | /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc... | |
9181577c FB |
57 | @end example |
58 | ||
e99c4e10 FB |
59 | The Y files use twice the resolution of the U and V files. They are |
60 | raw files, without header. They can be generated by all decent video | |
61 | decoders. You must specify the size of the image with the @option{-s} option | |
62 | if ffmpeg cannot guess it. | |
9181577c FB |
63 | |
64 | * You can input from a RAW YUV420P file: | |
65 | ||
66 | @example | |
e99c4e10 | 67 | ffmpeg -i /tmp/test.yuv /tmp/out.avi |
9181577c FB |
68 | @end example |
69 | ||
e99c4e10 FB |
70 | The RAW YUV420P is a file containing RAW YUV planar, for each frame first |
71 | come the Y plane followed by U and V planes, which are half vertical and | |
72 | horizontal resolution. | |
9181577c FB |
73 | |
74 | * You can output to a RAW YUV420P file: | |
75 | ||
76 | @example | |
e99c4e10 | 77 | ffmpeg -i mydivx.avi -o hugefile.yuv |
9181577c FB |
78 | @end example |
79 | ||
80 | * You can set several input files and output files: | |
81 | ||
82 | @example | |
e99c4e10 | 83 | ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg |
9181577c FB |
84 | @end example |
85 | ||
e99c4e10 FB |
86 | Convert the audio file a.wav and the raw yuv video file a.yuv |
87 | to mpeg file a.mpg | |
9181577c | 88 | |
6bf40f39 | 89 | * You can also do audio and video conversions at the same time: |
9181577c FB |
90 | |
91 | @example | |
e99c4e10 | 92 | ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2 |
9181577c FB |
93 | @end example |
94 | ||
e99c4e10 | 95 | Convert the sample rate of a.wav to 22050 Hz and encode it to MPEG audio. |
9181577c FB |
96 | |
97 | * You can encode to several formats at the same time and define a | |
e99c4e10 | 98 | mapping from input stream to output streams: |
9181577c FB |
99 | |
100 | @example | |
e99c4e10 | 101 | ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0 |
9181577c FB |
102 | @end example |
103 | ||
e99c4e10 FB |
104 | Convert a.wav to a.mp2 at 64 kbits and b.mp2 at 128 kbits. '-map |
105 | file:index' specify which input stream is used for each output | |
106 | stream, in the order of the definition of output streams. | |
9181577c FB |
107 | |
108 | * You can transcode decrypted VOBs | |
109 | ||
110 | @example | |
e99c4e10 | 111 | ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi |
9181577c FB |
112 | @end example |
113 | ||
e99c4e10 FB |
114 | This is a typical DVD ripper example, input from a VOB file, output |
115 | to an AVI file with MPEG-4 video and MP3 audio, note that in this | |
116 | command we use B frames so the MPEG-4 stream is DivX5 compatible, GOP | |
117 | size is 300 that means an INTRA frame every 10 seconds for 29.97 fps | |
118 | input video. Also the audio stream is MP3 encoded so you need LAME | |
119 | support which is enabled using @code{--enable-mp3lame} when | |
120 | configuring. The mapping is particularly useful for DVD transcoding | |
121 | to get the desired audio language. | |
9181577c | 122 | |
e99c4e10 FB |
123 | NOTE: to see the supported input formats, use @code{ffmpeg -formats}. |
124 | @c man end | |
9181577c FB |
125 | |
126 | @chapter Invocation | |
127 | ||
128 | @section Syntax | |
129 | ||
e99c4e10 | 130 | The generic syntax is: |
9181577c FB |
131 | |
132 | @example | |
e99c4e10 | 133 | @c man begin SYNOPSIS |
28f88dc8 | 134 | ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}... |
e99c4e10 | 135 | @c man end |
9181577c | 136 | @end example |
e99c4e10 FB |
137 | @c man begin DESCRIPTION |
138 | If no input file is given, audio/video grabbing is done. | |
9181577c | 139 | |
e99c4e10 FB |
140 | As a general rule, options are applied to the next specified |
141 | file. For example, if you give the @option{-b 64} option, it sets the video | |
142 | bitrate of the next file. Format option may be needed for raw input | |
143 | files. | |
9181577c | 144 | |
e99c4e10 FB |
145 | By default, ffmpeg tries to convert as losslessly as possible: it |
146 | uses the same audio and video parameter for the outputs as the one | |
147 | specified for the inputs. | |
148 | @c man end | |
9181577c | 149 | |
e99c4e10 | 150 | @c man begin OPTIONS |
9181577c FB |
151 | @section Main options |
152 | ||
e99c4e10 | 153 | @table @option |
9181577c FB |
154 | @item -L |
155 | show license | |
18bff752 | 156 | |
9181577c | 157 | @item -h |
e99c4e10 | 158 | show help |
18bff752 | 159 | |
e99c4e10 | 160 | @item -formats |
9181577c | 161 | show available formats, codecs, protocols, ... |
18bff752 | 162 | |
9181577c FB |
163 | @item -f fmt |
164 | force format | |
18bff752 | 165 | |
9181577c FB |
166 | @item -i filename |
167 | input file name | |
168 | ||
169 | @item -y | |
170 | overwrite output files | |
171 | ||
172 | @item -t duration | |
173 | set the recording time in seconds. @code{hh:mm:ss[.xxx]} syntax is also | |
174 | supported. | |
175 | ||
e83a84ac BL |
176 | @item -ss position |
177 | seek to given time position. @code{hh:mm:ss[.xxx]} syntax is also | |
178 | supported. | |
179 | ||
9181577c FB |
180 | @item -title string |
181 | set the title | |
182 | ||
183 | @item -author string | |
184 | set the author | |
185 | ||
186 | @item -copyright string | |
187 | set the copyright | |
188 | ||
189 | @item -comment string | |
190 | set the comment | |
191 | ||
99db6420 | 192 | @item -target type |
791d8d1d | 193 | specify target file type ("vcd", "svcd", "dvd", "pal-vcd", "ntsc-svcd", ... ). All the format |
99db6420 FB |
194 | options (bitrate, codecs, buffer sizes) are automatically set by this |
195 | option. You can just type: | |
196 | ||
197 | @example | |
198 | ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg | |
199 | @end example | |
200 | ||
791d8d1d MB |
201 | Nevertheless you can specify additional options as long as you know they do not compromise the |
202 | standard, as in: | |
203 | ||
204 | @example | |
205 | ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg | |
206 | @end example | |
207 | ||
99db6420 | 208 | @item -hq |
18bff752 FB |
209 | activate high quality settings |
210 | ||
401fbdde MN |
211 | @item -itsoffset offset |
212 | set the input time offset in seconds. @code{[-]hh:mm:ss[.xxx]} syntax | |
213 | is also supported. This option affects all the input files that | |
214 | follow it. The offset is added to the input files' timestamps; | |
215 | specifying a positive offset means that the corresponding streams are | |
216 | delayed by 'offset' seconds. | |
217 | ||
9181577c FB |
218 | @end table |
219 | ||
220 | @section Video Options | |
221 | ||
e99c4e10 | 222 | @table @option |
9181577c | 223 | @item -b bitrate |
18bff752 FB |
224 | set the video bitrate in kbit/s (default = 200 kb/s) |
225 | @item -r fps | |
226 | set frame rate (default = 25) | |
227 | @item -s size | |
5ee03c86 FB |
228 | set frame size. The format is @samp{WxH} (default 160x128). The |
229 | following abbreviations are recognized: | |
230 | @table @samp | |
18bff752 FB |
231 | @item sqcif |
232 | 128x96 | |
233 | @item qcif | |
234 | 176x144 | |
235 | @item cif | |
236 | 352x288 | |
237 | @item 4cif | |
238 | 704x576 | |
239 | @end table | |
240 | ||
241 | @item -aspect aspect | |
242 | set aspect ratio (4:3, 16:9 or 1.3333, 1.7777) | |
243 | @item -croptop size | |
244 | set top crop band size (in pixels) | |
245 | @item -cropbottom size | |
246 | set bottom crop band size (in pixels) | |
247 | @item -cropleft size | |
248 | set left crop band size (in pixels) | |
249 | @item -cropright size | |
250 | set right crop band size (in pixels) | |
1ff93ffc TK |
251 | @item -padtop size |
252 | set top pad band size (in pixels) | |
253 | @item -padbottom size | |
254 | set bottom pad band size (in pixels) | |
255 | @item -padleft size | |
256 | set left pad band size (in pixels) | |
257 | @item -padright size | |
258 | set right pad band size (in pixels) | |
5b79a73e TK |
259 | @item -padcolor (hex color) |
260 | set color of padded bands. The value for pad color is expressed | |
1ff93ffc TK |
261 | as a six digit hexidecimal number where the first two digits represent red, |
262 | middle two digits green and last two digits blue. Defaults to 000000 (black) | |
9181577c | 263 | @item -vn |
18bff752 | 264 | disable video recording |
9181577c FB |
265 | @item -bt tolerance |
266 | set video bitrate tolerance (in kbit/s) | |
18bff752 FB |
267 | @item -maxrate bitrate |
268 | set max video bitrate tolerance (in kbit/s) | |
269 | @item -minrate bitrate | |
270 | set min video bitrate tolerance (in kbit/s) | |
271 | @item -bufsize size | |
272 | set ratecontrol buffere size (in kbit) | |
273 | @item -vcodec codec | |
5ee03c86 FB |
274 | force video codec to @var{codec}. Use the @code{copy} special value to |
275 | tell that the raw codec data must be copied as is. | |
18bff752 | 276 | @item -sameq |
9181577c FB |
277 | use same video quality as source (implies VBR) |
278 | ||
279 | @item -pass n | |
5ee03c86 FB |
280 | select the pass number (1 or 2). It is useful to do two pass |
281 | encoding. The statistics of the video are recorded in the first pass and | |
282 | the video at the exact requested bit rate is generated in the second | |
283 | pass. | |
9181577c FB |
284 | |
285 | @item -passlogfile file | |
5ee03c86 | 286 | select two pass log file name to @var{file}. |
9181577c FB |
287 | |
288 | @end table | |
289 | ||
18bff752 | 290 | @section Advanced Video Options |
9181577c | 291 | |
e99c4e10 | 292 | @table @option |
9181577c FB |
293 | @item -g gop_size |
294 | set the group of picture size | |
295 | @item -intra | |
296 | use only intra frames | |
297 | @item -qscale q | |
298 | use fixed video quantiser scale (VBR) | |
299 | @item -qmin q | |
300 | min video quantiser scale (VBR) | |
301 | @item -qmax q | |
302 | max video quantiser scale (VBR) | |
303 | @item -qdiff q | |
304 | max difference between the quantiser scale (VBR) | |
305 | @item -qblur blur | |
306 | video quantiser scale blur (VBR) | |
307 | @item -qcomp compression | |
308 | video quantiser scale compression (VBR) | |
18bff752 FB |
309 | |
310 | @item -rc_init_cplx complexity | |
311 | initial complexity for 1-pass encoding | |
312 | @item -b_qfactor factor | |
313 | qp factor between p and b frames | |
314 | @item -i_qfactor factor | |
315 | qp factor between p and i frames | |
316 | @item -b_qoffset offset | |
317 | qp offset between p and b frames | |
318 | @item -i_qoffset offset | |
319 | qp offset between p and i frames | |
320 | @item -rc_eq equation | |
5ee03c86 FB |
321 | set rate control equation (@pxref{FFmpeg formula |
322 | evaluator}). Default is @code{tex^qComp}. | |
323 | @item -rc_override override | |
324 | rate control override for specific intervals | |
18bff752 | 325 | @item -me method |
5ee03c86 FB |
326 | set motion estimation method to @var{method}. Available methods are |
327 | (from lower to best quality): | |
18bff752 FB |
328 | @table @samp |
329 | @item zero | |
5ee03c86 | 330 | Try just the (0, 0) vector. |
18bff752 FB |
331 | @item phods |
332 | @item log | |
333 | @item x1 | |
334 | @item epzs | |
335 | (default method) | |
336 | @item full | |
337 | exhaustive search (slow and marginally better than epzs) | |
338 | @end table | |
339 | ||
340 | @item -dct_algo algo | |
5ee03c86 | 341 | set dct algorithm to @var{algo}. Available values are: |
18bff752 FB |
342 | @table @samp |
343 | @item 0 | |
344 | FF_DCT_AUTO (default) | |
345 | @item 1 | |
346 | FF_DCT_FASTINT | |
347 | @item 2 | |
348 | FF_DCT_INT | |
349 | @item 3 | |
350 | FF_DCT_MMX | |
351 | @item 4 | |
352 | FF_DCT_MLIB | |
353 | @item 5 | |
354 | FF_DCT_ALTIVEC | |
355 | @end table | |
356 | ||
357 | @item -idct_algo algo | |
5ee03c86 | 358 | set idct algorithm to @var{algo}. Available values are: |
18bff752 FB |
359 | @table @samp |
360 | @item 0 | |
361 | FF_IDCT_AUTO (default) | |
362 | @item 1 | |
363 | FF_IDCT_INT | |
364 | @item 2 | |
365 | FF_IDCT_SIMPLE | |
366 | @item 3 | |
367 | FF_IDCT_SIMPLEMMX | |
368 | @item 4 | |
369 | FF_IDCT_LIBMPEG2MMX | |
370 | @item 5 | |
371 | FF_IDCT_PS2 | |
372 | @item 6 | |
373 | FF_IDCT_MLIB | |
374 | @item 7 | |
375 | FF_IDCT_ARM | |
376 | @item 8 | |
377 | FF_IDCT_ALTIVEC | |
378 | @item 9 | |
379 | FF_IDCT_SH4 | |
380 | @item 10 | |
381 | FF_IDCT_SIMPLEARM | |
382 | @end table | |
383 | ||
384 | @item -er n | |
5ee03c86 | 385 | set error resilience to @var{n}. |
18bff752 FB |
386 | @table @samp |
387 | @item 1 | |
5ee03c86 | 388 | FF_ER_CAREFULL (default) |
18bff752 | 389 | @item 2 |
5ee03c86 | 390 | FF_ER_COMPLIANT |
18bff752 FB |
391 | @item 3 |
392 | FF_ER_AGGRESSIVE | |
393 | @item 4 | |
394 | FF_ER_VERY_AGGRESSIVE | |
395 | @end table | |
396 | ||
5ee03c86 FB |
397 | @item -ec bit_mask |
398 | set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of | |
399 | the following values: | |
18bff752 FB |
400 | @table @samp |
401 | @item 1 | |
5ee03c86 | 402 | FF_EC_GUESS_MVS (default=enabled) |
18bff752 | 403 | @item 2 |
5ee03c86 | 404 | FF_EC_DEBLOCK (default=enabled) |
18bff752 FB |
405 | @end table |
406 | ||
407 | @item -bf frames | |
50f52fcd | 408 | use 'frames' B frames (supported for MPEG-1, MPEG-2 and MPEG-4) |
18bff752 FB |
409 | @item -mbd mode |
410 | macroblock decision | |
411 | @table @samp | |
412 | @item 0 | |
413 | FF_MB_DECISION_SIMPLE: use mb_cmp (cannot change it yet in ffmpeg) | |
414 | @item 1 | |
415 | FF_MB_DECISION_BITS: chooses the one which needs the fewest bits | |
416 | @item 2 | |
417 | FF_MB_DECISION_RD: rate distoration | |
418 | @end table | |
419 | ||
420 | @item -4mv | |
9181577c | 421 | use four motion vector by macroblock (only MPEG-4) |
18bff752 FB |
422 | @item -part |
423 | use data partitioning (only MPEG-4) | |
424 | @item -bug param | |
425 | workaround not auto detected encoder bugs | |
426 | @item -strict strictness | |
427 | how strictly to follow the standarts | |
5ee03c86 FB |
428 | @item -aic |
429 | enable Advanced intra coding (h263+) | |
430 | @item -umv | |
431 | enable Unlimited Motion Vector (h263+) | |
18bff752 FB |
432 | |
433 | @item -deinterlace | |
434 | deinterlace pictures | |
99db6420 FB |
435 | @item -interlace |
436 | force interlacing support in encoder (only MPEG-2 and MPEG-4). Use this option | |
437 | if your input file is interlaced and if you want to keep the interlaced | |
438 | format for minimum losses. The alternative is to deinterlace the input | |
439 | stream with @option{-deinterlace}, but deinterlacing introduces more | |
440 | losses. | |
18bff752 FB |
441 | @item -psnr |
442 | calculate PSNR of compressed frames | |
443 | @item -vstats | |
5ee03c86 | 444 | dump video coding statistics to @file{vstats_HHMMSS.log}. |
18bff752 FB |
445 | @item -vhook module |
446 | insert video processing @var{module}. @var{module} contains the module | |
447 | name and its parameters separated by spaces. | |
18bff752 FB |
448 | @end table |
449 | ||
450 | @section Audio Options | |
451 | ||
452 | @table @option | |
18bff752 | 453 | @item -ar freq |
5ee03c86 | 454 | set the audio sampling freq (default = 44100 Hz) |
18bff752 | 455 | @item -ab bitrate |
5ee03c86 | 456 | set the audio bitrate in kbit/s (default = 64) |
18bff752 | 457 | @item -ac channels |
5ee03c86 FB |
458 | set the number of audio channels (default = 1) |
459 | @item -an | |
460 | disable audio recording | |
461 | @item -acodec codec | |
462 | force audio codec to @var{codec}. Use the @code{copy} special value to | |
463 | tell that the raw codec data must be copied as is. | |
18bff752 FB |
464 | @end table |
465 | ||
466 | @section Audio/Video grab options | |
467 | ||
468 | @table @option | |
469 | @item -vd device | |
470 | set video grab device (e.g. @file{/dev/video0}) | |
471 | @item -vc channel | |
472 | set video grab channel (DV1394 only) | |
473 | @item -tvstd standard | |
474 | set television standard (NTSC, PAL (SECAM)) | |
475 | @item -dv1394 | |
476 | set DV1394 grab | |
477 | @item -ad device | |
478 | set audio device (e.g. @file{/dev/dsp}) | |
479 | @end table | |
480 | ||
481 | @section Advanced options | |
482 | ||
483 | @table @option | |
484 | @item -map file:stream | |
485 | set input stream mapping | |
486 | @item -debug | |
487 | print specific debug info | |
9181577c FB |
488 | @item -benchmark |
489 | add timings for benchmarking | |
490 | @item -hex | |
491 | dump each input packet | |
18bff752 FB |
492 | @item -bitexact |
493 | only use bit exact algorithms (for codec testing) | |
494 | @item -ps size | |
495 | set packet size in bits | |
5ee03c86 FB |
496 | @item -re |
497 | read input at native frame rate. Mainly used to simulate a grab device. | |
498 | @item -loop | |
499 | loop over the input stream. Currently it works only for image | |
500 | streams. This option is used for ffserver automatic testing. | |
9181577c | 501 | @end table |
18bff752 FB |
502 | |
503 | @node FFmpeg formula evaluator | |
504 | @section FFmpeg formula evaluator | |
505 | ||
506 | When evaluating a rate control string, FFmpeg uses an internal formula | |
507 | evaluator. | |
508 | ||
509 | The following binary operators are available: @code{+}, @code{-}, | |
510 | @code{*}, @code{/}, @code{^}. | |
511 | ||
512 | The following unary operators are available: @code{+}, @code{-}, | |
513 | @code{(...)}. | |
514 | ||
515 | The following functions are available: | |
516 | @table @var | |
517 | @item sinh(x) | |
518 | @item cosh(x) | |
519 | @item tanh(x) | |
520 | @item sin(x) | |
521 | @item cos(x) | |
522 | @item tan(x) | |
523 | @item exp(x) | |
524 | @item log(x) | |
525 | @item squish(x) | |
526 | @item gauss(x) | |
527 | @item abs(x) | |
528 | @item max(x, y) | |
529 | @item min(x, y) | |
530 | @item gt(x, y) | |
531 | @item lt(x, y) | |
532 | @item eq(x, y) | |
533 | @item bits2qp(bits) | |
534 | @item qp2bits(qp) | |
535 | @end table | |
536 | ||
537 | The following constants are available: | |
538 | @table @var | |
539 | @item PI | |
540 | @item E | |
541 | @item iTex | |
542 | @item pTex | |
543 | @item tex | |
544 | @item mv | |
545 | @item fCode | |
546 | @item iCount | |
547 | @item mcVar | |
548 | @item var | |
549 | @item isI | |
550 | @item isP | |
551 | @item isB | |
552 | @item avgQP | |
553 | @item qComp | |
554 | @item avgIITex | |
555 | @item avgPITex | |
556 | @item avgPPTex | |
557 | @item avgBPTex | |
558 | @item avgTex | |
559 | @end table | |
560 | ||
e99c4e10 FB |
561 | @c man end |
562 | ||
563 | @ignore | |
564 | ||
565 | @setfilename ffmpeg | |
566 | @settitle FFmpeg video converter | |
567 | ||
568 | @c man begin SEEALSO | |
569 | ffserver(1), ffplay(1) and the html documentation of @file{ffmpeg}. | |
570 | @c man end | |
571 | ||
572 | @c man begin AUTHOR | |
573 | Fabrice Bellard | |
574 | @c man end | |
575 | ||
576 | @end ignore | |
9181577c FB |
577 | |
578 | @section Protocols | |
579 | ||
47d944d2 FB |
580 | The filename can be @file{-} to read from the standard input or to write |
581 | to the standard output. | |
9181577c FB |
582 | |
583 | ffmpeg handles also many protocols specified with the URL syntax. | |
584 | ||
e99c4e10 | 585 | Use 'ffmpeg -formats' to have a list of the supported protocols. |
9181577c | 586 | |
e99c4e10 FB |
587 | The protocol @code{http:} is currently used only to communicate with |
588 | ffserver (see the ffserver documentation). When ffmpeg will be a | |
589 | video player it will also be used for streaming :-) | |
9181577c FB |
590 | |
591 | @chapter Tips | |
592 | ||
593 | @itemize | |
594 | @item For streaming at very low bit rate application, use a low frame rate | |
e99c4e10 FB |
595 | and a small gop size. This is especially true for real video where |
596 | the Linux player does not seem to be very fast, so it can miss | |
597 | frames. An example is: | |
9181577c FB |
598 | |
599 | @example | |
e99c4e10 | 600 | ffmpeg -g 3 -r 3 -t 10 -b 50 -s qcif -f rv10 /tmp/b.rm |
9181577c FB |
601 | @end example |
602 | ||
603 | @item The parameter 'q' which is displayed while encoding is the current | |
e99c4e10 FB |
604 | quantizer. The value of 1 indicates that a very good quality could |
605 | be achieved. The value of 31 indicates the worst quality. If q=31 | |
606 | too often, it means that the encoder cannot compress enough to meet | |
607 | your bit rate. You must either increase the bit rate, decrease the | |
608 | frame rate or decrease the frame size. | |
9181577c FB |
609 | |
610 | @item If your computer is not fast enough, you can speed up the | |
e99c4e10 FB |
611 | compression at the expense of the compression ratio. You can use |
612 | '-me zero' to speed up motion estimation, and '-intra' to disable | |
613 | completely motion estimation (you have only I frames, which means it | |
614 | is about as good as JPEG compression). | |
9181577c FB |
615 | |
616 | @item To have very low bitrates in audio, reduce the sampling frequency | |
e99c4e10 | 617 | (down to 22050 kHz for mpeg audio, 22050 or 11025 for ac3). |
9181577c FB |
618 | |
619 | @item To have a constant quality (but a variable bitrate), use the option | |
e99c4e10 FB |
620 | '-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst |
621 | quality). | |
9181577c FB |
622 | |
623 | @item When converting video files, you can use the '-sameq' option which | |
e99c4e10 FB |
624 | uses in the encoder the same quality factor than in the decoder. It |
625 | allows to be almost lossless in encoding. | |
9181577c FB |
626 | |
627 | @end itemize | |
628 | ||
629 | @chapter Supported File Formats and Codecs | |
630 | ||
631 | You can use the @code{-formats} option to have an exhaustive list. | |
632 | ||
633 | @section File Formats | |
634 | ||
6bf40f39 | 635 | FFmpeg supports the following file formats through the @code{libavformat} |
0699d2fe | 636 | library: |
9181577c FB |
637 | |
638 | @multitable @columnfractions .4 .1 .1 | |
639 | @item Supported File Format @tab Encoding @tab Decoding @tab Comments | |
640 | @item MPEG audio @tab X @tab X | |
641 | @item MPEG1 systems @tab X @tab X | |
642 | @tab muxed audio and video | |
643 | @item MPEG2 PS @tab X @tab X | |
644 | @tab also known as @code{VOB} file | |
645 | @item MPEG2 TS @tab @tab X | |
646 | @tab also known as DVB Transport Stream | |
647 | @item ASF@tab X @tab X | |
648 | @item AVI@tab X @tab X | |
649 | @item WAV@tab X @tab X | |
650 | @item Macromedia Flash@tab X @tab X | |
651 | @tab Only embedded audio is decoded | |
2eb5d024 FB |
652 | @item FLV @tab X @tab X |
653 | @tab Macromedia Flash video files | |
9181577c | 654 | @item Real Audio and Video @tab X @tab X |
9181577c FB |
655 | @item Raw AC3 @tab X @tab X |
656 | @item Raw MJPEG @tab X @tab X | |
657 | @item Raw MPEG video @tab X @tab X | |
658 | @item Raw PCM8/16 bits, mulaw/Alaw@tab X @tab X | |
42cad81a | 659 | @item Raw CRI ADX audio @tab X @tab X |
9181577c | 660 | @item SUN AU format @tab X @tab X |
7fe4c823 | 661 | @item NUT @tab X @tab X @tab NUT Open Container Format |
8a5483e7 MM |
662 | @item Quicktime @tab X @tab X |
663 | @item MPEG4 @tab X @tab X | |
9181577c | 664 | @tab MPEG4 is a variant of Quicktime |
0699d2fe | 665 | @item Raw MPEG4 video @tab X @tab X |
4fa1c4fa | 666 | @item DV @tab X @tab X |
701b603d MM |
667 | @item 4xm @tab @tab X |
668 | @tab 4X Technologies format, used in some games | |
4d3b1f8d MM |
669 | @item Playstation STR @tab @tab X |
670 | @item Id RoQ @tab @tab X | |
671 | @tab used in Quake III, Jedi Knight 2, other computer games | |
672 | @item Interplay MVE @tab @tab X | |
673 | @tab format used in various Interplay computer games | |
b17e9c99 MM |
674 | @item WC3 Movie @tab @tab X |
675 | @tab multimedia format used in Origin's Wing Commander III computer game | |
2fdf638b MM |
676 | @item Sega FILM/CPK @tab @tab X |
677 | @tab used in many Sega Saturn console games | |
678 | @item Westwood Studios VQA/AUD @tab @tab X | |
679 | @tab Multimedia formats used in Westwood Studios games | |
4120a53a MM |
680 | @item Id Cinematic (.cin) @tab @tab X |
681 | @tab Used in Quake II | |
42cad81a MM |
682 | @item FLIC format @tab @tab X |
683 | @tab .fli/.flc files | |
da00f30e MM |
684 | @item Sierra VMD @tab @tab X |
685 | @tab used in Sierra CD-ROM games | |
d08d7142 MM |
686 | @item Sierra Online @tab @tab X |
687 | @tab .sol files used in Sierra Online games | |
38088adf | 688 | @item Matroska @tab @tab X |
ad81a9fe MM |
689 | @item Electronic Arts Multimedia @tab @tab X |
690 | @tab used in various EA games; files have extensions like WVE and UV2 | |
353147ed MM |
691 | @item Nullsoft Video (NSV) format @tab @tab X |
692 | @end multitable | |
9181577c FB |
693 | |
694 | @code{X} means that the encoding (resp. decoding) is supported. | |
695 | ||
0699d2fe FB |
696 | @section Image Formats |
697 | ||
698 | FFmpeg can read and write images for each frame of a video sequence. The | |
699 | following image formats are supported: | |
700 | ||
701 | @multitable @columnfractions .4 .1 .1 | |
702 | @item Supported Image Format @tab Encoding @tab Decoding @tab Comments | |
703 | @item PGM, PPM @tab X @tab X | |
2eb5d024 FB |
704 | @item PAM @tab X @tab X @tab PAM is a PNM extension with alpha support |
705 | @item PGMYUV @tab X @tab X @tab PGM with U and V components in YUV 4:2:0 | |
0699d2fe FB |
706 | @item JPEG @tab X @tab X @tab Progressive JPEG is not supported |
707 | @item .Y.U.V @tab X @tab X @tab One raw file per component | |
2eb5d024 FB |
708 | @item Animated GIF @tab X @tab X @tab Only uncompressed GIFs are generated |
709 | @item PNG @tab X @tab X @tab 2 bit and 4 bit/pixel not supported yet | |
6a91ec51 | 710 | @item SGI @tab X @tab X @tab SGI RGB image format |
0699d2fe FB |
711 | @end multitable |
712 | ||
713 | @code{X} means that the encoding (resp. decoding) is supported. | |
714 | ||
9181577c FB |
715 | @section Video Codecs |
716 | ||
717 | @multitable @columnfractions .4 .1 .1 .7 | |
718 | @item Supported Codec @tab Encoding @tab Decoding @tab Comments | |
4745b5bf | 719 | @item MPEG1 video @tab X @tab X |
50f52fcd | 720 | @item MPEG2 video @tab X @tab X |
9181577c FB |
721 | @item MPEG4 @tab X @tab X @tab Also known as DIVX4/5 |
722 | @item MSMPEG4 V1 @tab X @tab X | |
723 | @item MSMPEG4 V2 @tab X @tab X | |
724 | @item MSMPEG4 V3 @tab X @tab X @tab Also known as DIVX3 | |
725 | @item WMV7 @tab X @tab X | |
701b603d | 726 | @item WMV8 @tab X @tab X @tab Not completely working |
b06b45c4 MM |
727 | @item H.261 @tab X @tab X |
728 | @item H.263(+) @tab X @tab X @tab Also known as Real Video 1.0 | |
729 | @item H.264 @tab @tab X | |
9181577c | 730 | @item MJPEG @tab X @tab X |
d6896c49 AB |
731 | @item Lossless MJPEG @tab X @tab X |
732 | @item Apple MJPEG-B @tab @tab X | |
733 | @item Sunplus MJPEG @tab @tab X @tab fourcc: SP5X | |
4fa1c4fa | 734 | @item DV @tab X @tab X |
4745b5bf | 735 | @item Huff YUV @tab X @tab X |
33a4d8b1 AB |
736 | @item FFmpeg Video 1 @tab X @tab X @tab Experimental lossless codec (fourcc: FFV1) |
737 | @item FFmpeg Snow @tab X @tab X @tab Experimental wavelet codec (fourcc: SNOW) | |
701b603d | 738 | @item Asus v1 @tab X @tab X @tab fourcc: ASV1 |
4d3b1f8d | 739 | @item Asus v2 @tab X @tab X @tab fourcc: ASV2 |
701b603d | 740 | @item Creative YUV @tab @tab X @tab fourcc: CYUV |
d2bfadc0 | 741 | @item Sorenson Video 1 @tab X @tab X @tab fourcc: SVQ1 |
701b603d MM |
742 | @item Sorenson Video 3 @tab @tab X @tab fourcc: SVQ3 |
743 | @item On2 VP3 @tab @tab X @tab still experimental | |
d6896c49 | 744 | @item Theora @tab @tab X @tab still experimental |
701b603d | 745 | @item Intel Indeo 3 @tab @tab X @tab only works on i386 right now |
9303d49c | 746 | @item FLV @tab X @tab X @tab Sorenson H.263 used in Flash |
4d3b1f8d | 747 | @item ATI VCR1 @tab @tab X @tab fourcc: VCR1 |
7fe4c823 | 748 | @item ATI VCR2 @tab @tab X @tab fourcc: VCR2 |
4d3b1f8d MM |
749 | @item Cirrus Logic AccuPak @tab @tab X @tab fourcc: CLJR |
750 | @item 4X Video @tab @tab X @tab used in certain computer games | |
751 | @item Sony Playstation MDEC @tab @tab X | |
752 | @item Id RoQ @tab @tab X @tab used in Quake III, Jedi Knight 2, other computer games | |
b17e9c99 | 753 | @item Xan/WC3 @tab @tab X @tab used in Wing Commander III .MVE files |
186447f8 | 754 | @item Interplay Video @tab @tab X @tab used in Interplay .MVE files |
070ed1bc | 755 | @item Apple Animation @tab @tab X @tab fourcc: 'rle ' |
42cad81a | 756 | @item Apple Graphics @tab @tab X @tab fourcc: 'smc ' |
2fdf638b | 757 | @item Apple Video @tab @tab X @tab fourcc: rpza |
d08d7142 | 758 | @item Apple QuickDraw @tab @tab X @tab fourcc: qdrw |
2fdf638b MM |
759 | @item Cinepak @tab @tab X |
760 | @item Microsoft RLE @tab @tab X | |
761 | @item Microsoft Video-1 @tab @tab X | |
4120a53a MM |
762 | @item Westwood VQA @tab @tab X |
763 | @item Id Cinematic Video @tab @tab X @tab used in Quake II | |
1dc1ed99 | 764 | @item Planar RGB @tab @tab X @tab fourcc: 8BPS |
42cad81a | 765 | @item FLIC video @tab @tab X |
9a4117d5 | 766 | @item Duck TrueMotion v1 @tab @tab X @tab fourcc: DUCK |
da00f30e | 767 | @item VMD Video @tab @tab X @tab used in Sierra VMD files |
a273bbfb RT |
768 | @item MSZH @tab @tab X @tab Part of LCL |
769 | @item ZLIB @tab X @tab X @tab Part of LCL, encoder experimental | |
9d53d58e | 770 | @item TechSmith Camtasia @tab @tab X @tab fourcc: TSCC |
d0a0bbd2 | 771 | @item IBM Ultimotion @tab @tab X @tab fourcc: ULTI |
ab711b3c | 772 | @item Miro VideoXL @tab @tab X @tab fourcc: VIXL |
acfd8f0f | 773 | @item QPEG @tab @tab X @tab fourccs: QPEG, Q1.0, Q1.1 |
9181577c FB |
774 | @end multitable |
775 | ||
776 | @code{X} means that the encoding (resp. decoding) is supported. | |
777 | ||
60837265 FB |
778 | Check at @url{http://www.mplayerhq.hu/~michael/codec-features.html} to |
779 | get a precise comparison of FFmpeg MPEG4 codec compared to the other | |
780 | solutions. | |
781 | ||
9181577c FB |
782 | @section Audio Codecs |
783 | ||
784 | @multitable @columnfractions .4 .1 .1 .1 .7 | |
785 | @item Supported Codec @tab Encoding @tab Decoding @tab Comments | |
786 | @item MPEG audio layer 2 @tab IX @tab IX | |
787 | @item MPEG audio layer 1/3 @tab IX @tab IX | |
6bf40f39 | 788 | @tab MP3 encoding is supported through the external library LAME |
37776c3b | 789 | @item AC3 @tab IX @tab IX |
2eb5d024 | 790 | @tab liba52 is used internally for decoding |
34d7008d | 791 | @item Vorbis @tab X @tab X |
2eb5d024 | 792 | @tab supported through the external library libvorbis |
4745b5bf | 793 | @item WMA V1/V2 @tab @tab X |
f6fa7a6c BL |
794 | @item AAC @tab X @tab X |
795 | @tab supported through the external library libfaac/libfaad | |
d4c3c5a6 | 796 | @item Microsoft ADPCM @tab X @tab X |
4d3b1f8d MM |
797 | @item MS IMA ADPCM @tab X @tab X |
798 | @item QT IMA ADPCM @tab @tab X | |
799 | @item 4X IMA ADPCM @tab @tab X | |
d4e437df | 800 | @item G.726 ADPCM @tab X @tab X |
b17e9c99 MM |
801 | @item Duck DK3 IMA ADPCM @tab @tab X |
802 | @tab used in some Sega Saturn console games | |
803 | @item Duck DK4 IMA ADPCM @tab @tab X | |
804 | @tab used in some Sega Saturn console games | |
2fdf638b | 805 | @item Westwood Studios IMA ADPCM @tab @tab X |
42cad81a | 806 | @tab used in Westwood Studios games like Command and Conquer |
7d8379f2 MM |
807 | @item SMJPEG IMA ADPCM @tab @tab X |
808 | @tab used in certain Loki game ports | |
42cad81a MM |
809 | @item CD-ROM XA ADPCM @tab @tab X |
810 | @item CRI ADX ADPCM @tab X @tab X | |
811 | @tab used in Sega Dreamcast games | |
7d8379f2 MM |
812 | @item Electronic Arts ADPCM @tab @tab X |
813 | @tab used in various EA titles | |
b3bfb299 | 814 | @item Creative ADPCM @tab @tab X |
2eb5d024 FB |
815 | @item RA144 @tab @tab X |
816 | @tab Real 14400 bit/s codec | |
817 | @item RA288 @tab @tab X | |
818 | @tab Real 28800 bit/s codec | |
37776c3b BL |
819 | @item RADnet @tab X @tab IX |
820 | @tab Real lowbitrate AC3 codec, liba52 is used for decoding | |
2eb5d024 FB |
821 | @item AMR-NB @tab X @tab X |
822 | @tab supported through an external library | |
d663a1fd MN |
823 | @item AMR-WB @tab X @tab X |
824 | @tab supported through an external library | |
2eb5d024 | 825 | @item DV audio @tab @tab X |
4d3b1f8d MM |
826 | @item Id RoQ DPCM @tab @tab X |
827 | @tab used in Quake III, Jedi Knight 2, other computer games | |
828 | @item Interplay MVE DPCM @tab @tab X | |
829 | @tab used in various Interplay computer games | |
b17e9c99 MM |
830 | @item Xan DPCM @tab @tab X |
831 | @tab used in Origin's Wing Commander IV AVI files | |
d08d7142 MM |
832 | @item Sierra Online DPCM @tab @tab X |
833 | @tab used in Sierra Online game audio files | |
d6896c49 AB |
834 | @item Apple MACE 3 @tab @tab X |
835 | @item Apple MACE 6 @tab @tab X | |
f8d58f4d | 836 | @item FLAC @tab @tab X |
33a4d8b1 AB |
837 | @item FFmpeg Sonic @tab X @tab X |
838 | @tab Experimental lossy/lossless codec | |
9181577c FB |
839 | @end multitable |
840 | ||
841 | @code{X} means that the encoding (resp. decoding) is supported. | |
842 | ||
843 | @code{I} means that an integer only version is available too (ensures highest | |
844 | performances on systems without hardware floating point support). | |
845 | ||
47d944d2 FB |
846 | @chapter Platform Specific information |
847 | ||
848 | @section Linux | |
849 | ||
850 | ffmpeg should be compiled with at least GCC 2.95.3. GCC 3.2 is the | |
6bf40f39 | 851 | preferred compiler now for ffmpeg. All future optimizations will depend on |
47d944d2 FB |
852 | features only found in GCC 3.2. |
853 | ||
854 | @section BSD | |
855 | ||
856 | @section Windows | |
857 | ||
b030b284 FB |
858 | @subsection Native Windows compilation |
859 | ||
860 | @itemize | |
861 | @item Install the current versions of MSYS and MinGW from | |
862 | @url{http://www.mingw.org/}. You can find detailed installation | |
863 | instructions in the download section and the FAQ. | |
864 | ||
50f52fcd FB |
865 | @item If you want to test the FFmpeg Simple Media Player, also download |
866 | the MinGW development library of SDL 1.2.x | |
867 | (@file{SDL-devel-1.2.x-mingw32.tar.gz}) from | |
868 | @url{http://www.libsdl.org}. Unpack it in a temporary place, and | |
869 | unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool | |
988a9f9e FB |
870 | directory. Edit the @file{sdl-config} script so that it gives the |
871 | correct SDL directory when invoked. | |
50f52fcd FB |
872 | |
873 | @item Extract the current version of FFmpeg (the latest release version or the current CVS snapshot whichever is recommended). | |
b030b284 FB |
874 | |
875 | @item Start the MSYS shell (file @file{msys.bat}). | |
876 | ||
50f52fcd FB |
877 | @item Change to the FFMPEG directory and follow |
878 | the instructions of how to compile ffmpeg (file | |
879 | @file{INSTALL}). Usually, launching @file{./configure} and @file{make} | |
880 | suffices. If you have problems using SDL, verify that | |
881 | @file{sdl-config} can be launched from the MSYS command line. | |
882 | ||
988a9f9e FB |
883 | @item You can install FFmpeg in @file{Program Files/FFmpeg} by typing @file{make install}. Don't forget to copy @file{SDL.dll} at the place you launch |
884 | @file{ffplay}. | |
50f52fcd | 885 | |
b030b284 FB |
886 | @end itemize |
887 | ||
988a9f9e FB |
888 | Notes: |
889 | @itemize | |
50f52fcd | 890 | |
988a9f9e FB |
891 | @item The target @file{make wininstaller} can be used to create a |
892 | Nullsoft based Windows installer for FFmpeg and FFplay. @file{SDL.dll} | |
893 | must be copied in the ffmpeg directory in order to build the | |
894 | installer. | |
895 | ||
896 | @item By using @code{./configure --enable-shared} when configuring ffmpeg, | |
897 | you can build @file{avcodec.dll} and @file{avformat.dll}. With | |
898 | @code{make install} you install the FFmpeg DLLs and the associated | |
899 | headers in @file{Program Files/FFmpeg}. | |
900 | ||
901 | @item Visual C++ compatibility: if you used @code{./configure --enable-shared} | |
902 | when configuring FFmpeg, then FFmpeg tries to use the Microsoft Visual | |
903 | C++ @code{lib} tool to build @code{avcodec.lib} and | |
904 | @code{avformat.lib}. With these libraries, you can link your Visual C++ | |
905 | code directly with the FFmpeg DLLs. | |
906 | ||
907 | @end itemize | |
b030b284 FB |
908 | |
909 | @subsection Cross compilation for Windows with Linux | |
910 | ||
911 | You must use the MinGW cross compilation tools available at | |
912 | @url{http://www.mingw.org/}. | |
913 | ||
914 | Then configure ffmpeg with the following options: | |
915 | @example | |
916 | ./configure --enable-mingw32 --cross-prefix=i386-mingw32msvc- | |
917 | @end example | |
918 | (you can change the cross-prefix according to the prefix choosen for the | |
919 | MinGW tools). | |
920 | ||
921 | Then you can easily test ffmpeg with wine | |
922 | (@url{http://www.winehq.com/}). | |
923 | ||
47d944d2 FB |
924 | @section MacOS X |
925 | ||
926 | @section BeOS | |
927 | ||
928 | The configure script should guess the configuration itself. | |
929 | Networking support is currently not finished. | |
930 | errno issues fixed by Andrew Bachmann. | |
931 | ||
932 | Old stuff: | |
933 | ||
934 |