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