| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | \input texinfo @c -*- texinfo -*- | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @settitle FFmpeg Documentation | 
					
						
							|  |  |  |  | @titlepage | 
					
						
							|  |  |  |  | @sp 7 | 
					
						
							|  |  |  |  | @center @titlefont{FFmpeg Documentation} | 
					
						
							|  |  |  |  | @sp 3 | 
					
						
							|  |  |  |  | @end titlepage | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @chapter Introduction | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | FFmpeg is a very fast video and audio converter. It can also grab from | 
					
						
							|  |  |  |  | a live audio/video source. | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  | The command line interface is designed to be intuitive, in the sense | 
					
						
							|  |  |  |  | that ffmpeg tries to figure out all the parameters, when | 
					
						
							|  |  |  |  | possible. You have usually to give only the target bitrate you want. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | FFmpeg can also convert from any sample rate to any other, and resize | 
					
						
							|  |  |  |  | video on the fly with a high quality polyphase filter. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @chapter Quick Start | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man begin EXAMPLES | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Video and Audio grabbing | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | FFmpeg can use a video4linux compatible video source and any Open Sound | 
					
						
							|  |  |  |  | System audio source: | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg /tmp/out.mpg  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | Note that you must activate the right video source and channel before | 
					
						
							|  |  |  |  | launching ffmpeg. You can use any TV viewer such as xawtv | 
					
						
							|  |  |  |  | (@url{http://bytesex.org/xawtv/}) by Gerd Knorr which I find very | 
					
						
							|  |  |  |  | good. You must also set correctly the audio recording levels with a | 
					
						
							|  |  |  |  | standard mixer. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | @section Video and Audio file format conversion | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | * ffmpeg can use any supported file format and protocol as input:  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Examples: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | * You can input from YUV files: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i /tmp/test%d.Y /tmp/out.mpg  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | It will use the files:  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | /tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, | 
					
						
							|  |  |  |  | /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc... | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | The Y files use twice the resolution of the U and V files. They are | 
					
						
							|  |  |  |  | raw files, without header. They can be generated by all decent video | 
					
						
							|  |  |  |  | decoders. You must specify the size of the image with the @option{-s} option | 
					
						
							|  |  |  |  | if ffmpeg cannot guess it. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | * You can input from a RAW YUV420P file: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i /tmp/test.yuv /tmp/out.avi | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | The RAW YUV420P is a file containing RAW YUV planar, for each frame first | 
					
						
							|  |  |  |  | come the Y plane followed by U and V planes, which are half vertical and | 
					
						
							|  |  |  |  | horizontal resolution. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | * You can output to a RAW YUV420P file: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i mydivx.avi -o hugefile.yuv | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | * You can set several input files and output files: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | Convert the audio file a.wav and the raw yuv video file a.yuv | 
					
						
							|  |  |  |  | to mpeg file a.mpg | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | * You can also do audio and video conversions at the same time: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | Convert the sample rate of a.wav to 22050 Hz and encode it to MPEG audio. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | * You can encode to several formats at the same time and define a | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | mapping from input stream to output streams: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | Convert a.wav to a.mp2 at 64 kbits and b.mp2 at 128 kbits. '-map | 
					
						
							|  |  |  |  | file:index' specify which input stream is used for each output | 
					
						
							|  |  |  |  | stream, in the order of the definition of output streams. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | * You can transcode decrypted VOBs | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | This is a typical DVD ripper example, input from a VOB file, output | 
					
						
							|  |  |  |  | to an AVI file with MPEG-4 video and MP3 audio, note that in this | 
					
						
							|  |  |  |  | command we use B frames so the MPEG-4 stream is DivX5 compatible, GOP | 
					
						
							|  |  |  |  | size is 300 that means an INTRA frame every 10 seconds for 29.97 fps | 
					
						
							|  |  |  |  | input video.  Also the audio stream is MP3 encoded so you need LAME | 
					
						
							|  |  |  |  | support which is enabled using @code{--enable-mp3lame} when | 
					
						
							|  |  |  |  | configuring.  The mapping is particularly useful for DVD transcoding | 
					
						
							|  |  |  |  | to get the desired audio language. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | NOTE: to see the supported input formats, use @code{ffmpeg -formats}. | 
					
						
							|  |  |  |  | @c man end | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @chapter Invocation | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Syntax | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | The generic syntax is: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example  | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man begin SYNOPSIS | 
					
						
							|  |  |  |  | ffmpeg [[options][@option{-i} @var{input_file}]]... @{[options] @var{output_file}@}... | 
					
						
							|  |  |  |  | @c man end | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man begin DESCRIPTION | 
					
						
							|  |  |  |  | If no input file is given, audio/video grabbing is done. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | As a general rule, options are applied to the next specified | 
					
						
							|  |  |  |  | file. For example, if you give the @option{-b 64} option, it sets the video | 
					
						
							|  |  |  |  | bitrate of the next file. Format option may be needed for raw input | 
					
						
							|  |  |  |  | files. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | By default, ffmpeg tries to convert as losslessly as possible: it | 
					
						
							|  |  |  |  | uses the same audio and video parameter for the outputs as the one | 
					
						
							|  |  |  |  | specified for the inputs. | 
					
						
							|  |  |  |  | @c man end | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man begin OPTIONS | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Main options | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @table @option | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -L | 
					
						
							|  |  |  |  | show license | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -h | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | show help | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @item -formats | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | show available formats, codecs, protocols, ... | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -f fmt               | 
					
						
							|  |  |  |  | force format | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -i filename          | 
					
						
							|  |  |  |  | input file name | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -y                   | 
					
						
							|  |  |  |  | overwrite output files | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -t duration          | 
					
						
							|  |  |  |  | set the recording time in seconds. @code{hh:mm:ss[.xxx]} syntax is also | 
					
						
							|  |  |  |  | supported. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-08 19:13:23 +00:00
										 |  |  |  | @item -ss position | 
					
						
							|  |  |  |  | seek to given time position. @code{hh:mm:ss[.xxx]} syntax is also | 
					
						
							|  |  |  |  | supported. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -title string        | 
					
						
							|  |  |  |  | set the title | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -author string       | 
					
						
							|  |  |  |  | set the author | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -copyright string    | 
					
						
							|  |  |  |  | set the copyright | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -comment string      | 
					
						
							|  |  |  |  | set the comment | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-10 19:17:15 +00:00
										 |  |  |  | @item -target type | 
					
						
							|  |  |  |  | specify target file type ("vcd", "svcd" or "dvd"). All the format | 
					
						
							|  |  |  |  | options (bitrate, codecs, buffer sizes) are automatically set by this | 
					
						
							|  |  |  |  | option. You can just type: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							|  |  |  |  | ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg | 
					
						
							|  |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -hq | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | activate high quality settings | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Video Options | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @table @option | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -b bitrate | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | set the video bitrate in kbit/s (default = 200 kb/s) | 
					
						
							|  |  |  |  | @item -r fps            | 
					
						
							|  |  |  |  | set frame rate (default = 25) | 
					
						
							|  |  |  |  | @item -s size              | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | set frame size. The format is @samp{WxH} (default 160x128).  The | 
					
						
							|  |  |  |  | following abbreviations are recognized: | 
					
						
							|  |  |  |  | @table @samp | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item sqcif | 
					
						
							|  |  |  |  | 128x96 | 
					
						
							|  |  |  |  | @item qcif | 
					
						
							|  |  |  |  | 176x144 | 
					
						
							|  |  |  |  | @item cif | 
					
						
							|  |  |  |  | 352x288 | 
					
						
							|  |  |  |  | @item 4cif | 
					
						
							|  |  |  |  | 704x576 | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -aspect aspect | 
					
						
							|  |  |  |  | set aspect ratio (4:3, 16:9 or 1.3333, 1.7777) | 
					
						
							|  |  |  |  | @item -croptop size | 
					
						
							|  |  |  |  | set top crop band size (in pixels) | 
					
						
							|  |  |  |  | @item -cropbottom size | 
					
						
							|  |  |  |  | set bottom crop band size (in pixels) | 
					
						
							|  |  |  |  | @item -cropleft size | 
					
						
							|  |  |  |  | set left crop band size (in pixels) | 
					
						
							|  |  |  |  | @item -cropright size | 
					
						
							|  |  |  |  | set right crop band size (in pixels) | 
					
						
							| 
									
										
										
										
											2004-04-08 18:54:40 +00:00
										 |  |  |  | @item -padtop size | 
					
						
							|  |  |  |  | set top pad band size (in pixels) | 
					
						
							|  |  |  |  | @item -padbottom size | 
					
						
							|  |  |  |  | set bottom pad band size (in pixels) | 
					
						
							|  |  |  |  | @item -padleft size | 
					
						
							|  |  |  |  | set left pad band size (in pixels) | 
					
						
							|  |  |  |  | @item -padright size | 
					
						
							|  |  |  |  | set right pad band size (in pixels) | 
					
						
							|  |  |  |  | @item -padcolor color | 
					
						
							|  |  |  |  | set right pad band size (hex). The value for pad color is expressed  | 
					
						
							|  |  |  |  | as a six digit hexidecimal number where the first two digits represent red,  | 
					
						
							|  |  |  |  | middle two digits green and last two digits blue. Defaults to 000000 (black) | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -vn | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | disable video recording | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -bt tolerance        | 
					
						
							|  |  |  |  | set video bitrate tolerance (in kbit/s) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -maxrate bitrate | 
					
						
							|  |  |  |  | set max video bitrate tolerance (in kbit/s) | 
					
						
							|  |  |  |  | @item -minrate bitrate | 
					
						
							|  |  |  |  | set min video bitrate tolerance (in kbit/s) | 
					
						
							|  |  |  |  | @item -bufsize size | 
					
						
							|  |  |  |  | set ratecontrol buffere size (in kbit) | 
					
						
							|  |  |  |  | @item -vcodec codec        | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | force video codec to @var{codec}. Use the @code{copy} special value to | 
					
						
							|  |  |  |  | tell that the raw codec data must be copied as is. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -sameq | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | use same video quality as source (implies VBR) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -pass n   | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | select the pass number (1 or 2). It is useful to do two pass | 
					
						
							|  |  |  |  | encoding. The statistics of the video are recorded in the first pass and | 
					
						
							|  |  |  |  | the video at the exact requested bit rate is generated in the second | 
					
						
							|  |  |  |  | pass. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -passlogfile file    | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | select two pass log file name to @var{file}. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @section Advanced Video Options | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @table @option | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -g gop_size          | 
					
						
							|  |  |  |  | set the group of picture size | 
					
						
							|  |  |  |  | @item -intra               | 
					
						
							|  |  |  |  | use only intra frames | 
					
						
							|  |  |  |  | @item -qscale q            | 
					
						
							|  |  |  |  | use fixed video quantiser scale (VBR) | 
					
						
							|  |  |  |  | @item -qmin q              | 
					
						
							|  |  |  |  | min video quantiser scale (VBR) | 
					
						
							|  |  |  |  | @item -qmax q              | 
					
						
							|  |  |  |  | max video quantiser scale (VBR) | 
					
						
							|  |  |  |  | @item -qdiff q             | 
					
						
							|  |  |  |  | max difference between the quantiser scale (VBR) | 
					
						
							|  |  |  |  | @item -qblur blur          | 
					
						
							|  |  |  |  | video quantiser scale blur (VBR) | 
					
						
							|  |  |  |  | @item -qcomp compression   | 
					
						
							|  |  |  |  | video quantiser scale compression (VBR) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -rc_init_cplx complexity | 
					
						
							|  |  |  |  | initial complexity for 1-pass encoding | 
					
						
							|  |  |  |  | @item -b_qfactor factor | 
					
						
							|  |  |  |  | qp factor between p and b frames | 
					
						
							|  |  |  |  | @item -i_qfactor factor | 
					
						
							|  |  |  |  | qp factor between p and i frames | 
					
						
							|  |  |  |  | @item -b_qoffset offset | 
					
						
							|  |  |  |  | qp offset between p and b frames | 
					
						
							|  |  |  |  | @item -i_qoffset offset | 
					
						
							|  |  |  |  | qp offset between p and i frames | 
					
						
							|  |  |  |  | @item -rc_eq equation | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | set rate control equation (@pxref{FFmpeg formula | 
					
						
							|  |  |  |  | evaluator}). Default is @code{tex^qComp}. | 
					
						
							|  |  |  |  | @item -rc_override override | 
					
						
							|  |  |  |  | rate control override for specific intervals | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -me method | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | set motion estimation method to @var{method}. Available methods are | 
					
						
							|  |  |  |  | (from lower to best quality): | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item zero | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | Try just the (0, 0) vector. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item phods | 
					
						
							|  |  |  |  | @item log | 
					
						
							|  |  |  |  | @item x1 | 
					
						
							|  |  |  |  | @item epzs | 
					
						
							|  |  |  |  | (default method) | 
					
						
							|  |  |  |  | @item full | 
					
						
							|  |  |  |  | exhaustive search (slow and marginally better than epzs) | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -dct_algo algo | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | set dct algorithm to @var{algo}. Available values are: | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item 0 | 
					
						
							|  |  |  |  | FF_DCT_AUTO (default) | 
					
						
							|  |  |  |  | @item 1 | 
					
						
							|  |  |  |  | FF_DCT_FASTINT | 
					
						
							|  |  |  |  | @item 2 | 
					
						
							|  |  |  |  | FF_DCT_INT | 
					
						
							|  |  |  |  | @item 3 | 
					
						
							|  |  |  |  | FF_DCT_MMX | 
					
						
							|  |  |  |  | @item 4 | 
					
						
							|  |  |  |  | FF_DCT_MLIB | 
					
						
							|  |  |  |  | @item 5 | 
					
						
							|  |  |  |  | FF_DCT_ALTIVEC | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -idct_algo algo | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | set idct algorithm to @var{algo}. Available values are: | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item 0 | 
					
						
							|  |  |  |  | FF_IDCT_AUTO (default) | 
					
						
							|  |  |  |  | @item 1 | 
					
						
							|  |  |  |  | FF_IDCT_INT           | 
					
						
							|  |  |  |  | @item 2 | 
					
						
							|  |  |  |  | FF_IDCT_SIMPLE        | 
					
						
							|  |  |  |  | @item 3 | 
					
						
							|  |  |  |  | FF_IDCT_SIMPLEMMX     | 
					
						
							|  |  |  |  | @item 4 | 
					
						
							|  |  |  |  | FF_IDCT_LIBMPEG2MMX   | 
					
						
							|  |  |  |  | @item 5 | 
					
						
							|  |  |  |  | FF_IDCT_PS2           | 
					
						
							|  |  |  |  | @item 6 | 
					
						
							|  |  |  |  | FF_IDCT_MLIB          | 
					
						
							|  |  |  |  | @item 7 | 
					
						
							|  |  |  |  | FF_IDCT_ARM           | 
					
						
							|  |  |  |  | @item 8 | 
					
						
							|  |  |  |  | FF_IDCT_ALTIVEC       | 
					
						
							|  |  |  |  | @item 9 | 
					
						
							|  |  |  |  | FF_IDCT_SH4           | 
					
						
							|  |  |  |  | @item 10 | 
					
						
							|  |  |  |  | FF_IDCT_SIMPLEARM     | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -er n | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | set error resilience to @var{n}. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item 1  | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | FF_ER_CAREFULL (default) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item 2 | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | FF_ER_COMPLIANT | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item 3 | 
					
						
							|  |  |  |  | FF_ER_AGGRESSIVE | 
					
						
							|  |  |  |  | @item 4 | 
					
						
							|  |  |  |  | FF_ER_VERY_AGGRESSIVE | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -ec bit_mask | 
					
						
							|  |  |  |  | set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of | 
					
						
							|  |  |  |  | the following values: | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item 1 | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | FF_EC_GUESS_MVS (default=enabled) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item 2 | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | FF_EC_DEBLOCK (default=enabled) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -bf frames | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | use 'frames' B frames (supported for MPEG-1, MPEG-2 and MPEG-4) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -mbd mode | 
					
						
							|  |  |  |  | macroblock decision | 
					
						
							|  |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item 0 | 
					
						
							|  |  |  |  | FF_MB_DECISION_SIMPLE: use mb_cmp (cannot change it yet in ffmpeg) | 
					
						
							|  |  |  |  | @item 1 | 
					
						
							|  |  |  |  | FF_MB_DECISION_BITS: chooses the one which needs the fewest bits | 
					
						
							|  |  |  |  | @item 2 | 
					
						
							|  |  |  |  | FF_MB_DECISION_RD: rate distoration | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -4mv | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | use four motion vector by macroblock (only MPEG-4) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -part | 
					
						
							|  |  |  |  | use data partitioning (only MPEG-4) | 
					
						
							|  |  |  |  | @item -bug param | 
					
						
							|  |  |  |  | workaround not auto detected encoder bugs | 
					
						
							|  |  |  |  | @item -strict strictness | 
					
						
							|  |  |  |  | how strictly to follow the standarts | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -aic | 
					
						
							|  |  |  |  | enable Advanced intra coding (h263+) | 
					
						
							|  |  |  |  | @item -umv | 
					
						
							|  |  |  |  | enable Unlimited Motion Vector (h263+) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -deinterlace | 
					
						
							|  |  |  |  | deinterlace pictures | 
					
						
							| 
									
										
										
										
											2003-12-10 19:17:15 +00:00
										 |  |  |  | @item -interlace | 
					
						
							|  |  |  |  | force interlacing support in encoder (only MPEG-2 and MPEG-4). Use this option | 
					
						
							|  |  |  |  | if your input file is interlaced and if you want to keep the interlaced | 
					
						
							|  |  |  |  | format for minimum losses. The alternative is to deinterlace the input | 
					
						
							|  |  |  |  | stream with @option{-deinterlace}, but deinterlacing introduces more | 
					
						
							|  |  |  |  | losses. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -psnr | 
					
						
							|  |  |  |  | calculate PSNR of compressed frames | 
					
						
							|  |  |  |  | @item -vstats | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | dump video coding statistics to @file{vstats_HHMMSS.log}. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -vhook module | 
					
						
							|  |  |  |  | insert video processing @var{module}. @var{module} contains the module | 
					
						
							|  |  |  |  | name and its parameters separated by spaces. | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Audio Options | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @table @option | 
					
						
							|  |  |  |  | @item -ab bitrate          | 
					
						
							|  |  |  |  | set audio bitrate (in kbit/s) | 
					
						
							|  |  |  |  | @item -ar freq     | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | set the audio sampling freq (default = 44100 Hz) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -ab bitrate  | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | set the audio bitrate in kbit/s (default = 64) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -ac channels | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | set the number of audio channels (default = 1) | 
					
						
							|  |  |  |  | @item -an | 
					
						
							|  |  |  |  | disable audio recording | 
					
						
							|  |  |  |  | @item -acodec codec | 
					
						
							|  |  |  |  | force audio codec to @var{codec}. Use the @code{copy} special value to | 
					
						
							|  |  |  |  | tell that the raw codec data must be copied as is. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Audio/Video grab options | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @table @option | 
					
						
							|  |  |  |  | @item -vd device | 
					
						
							|  |  |  |  | set video grab device (e.g. @file{/dev/video0}) | 
					
						
							|  |  |  |  | @item -vc channel | 
					
						
							|  |  |  |  | set video grab channel (DV1394 only) | 
					
						
							|  |  |  |  | @item -tvstd standard | 
					
						
							|  |  |  |  | set television standard (NTSC, PAL (SECAM)) | 
					
						
							|  |  |  |  | @item -dv1394 | 
					
						
							|  |  |  |  | set DV1394 grab | 
					
						
							|  |  |  |  | @item -ad device | 
					
						
							|  |  |  |  | set audio device (e.g. @file{/dev/dsp}) | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Advanced options | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @table @option | 
					
						
							|  |  |  |  | @item -map file:stream     | 
					
						
							|  |  |  |  | set input stream mapping | 
					
						
							|  |  |  |  | @item -debug | 
					
						
							|  |  |  |  | print specific debug info | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -benchmark           | 
					
						
							|  |  |  |  | add timings for benchmarking | 
					
						
							|  |  |  |  | @item -hex                 | 
					
						
							|  |  |  |  | dump each input packet | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -bitexact | 
					
						
							|  |  |  |  | only use bit exact algorithms (for codec testing) | 
					
						
							|  |  |  |  | @item -ps size | 
					
						
							|  |  |  |  | set packet size in bits | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -re | 
					
						
							|  |  |  |  | read input at native frame rate. Mainly used to simulate a grab device. | 
					
						
							|  |  |  |  | @item -loop | 
					
						
							|  |  |  |  | loop over the input stream. Currently it works only for image | 
					
						
							|  |  |  |  | streams. This option is used for ffserver automatic testing. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end table | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @node FFmpeg formula evaluator | 
					
						
							|  |  |  |  | @section FFmpeg formula evaluator | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | When evaluating a rate control string, FFmpeg uses an internal formula | 
					
						
							|  |  |  |  | evaluator.  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The following binary operators are available: @code{+}, @code{-}, | 
					
						
							|  |  |  |  | @code{*}, @code{/}, @code{^}. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The following unary operators are available: @code{+}, @code{-}, | 
					
						
							|  |  |  |  | @code{(...)}. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The following functions are available: | 
					
						
							|  |  |  |  | @table @var | 
					
						
							|  |  |  |  | @item sinh(x) | 
					
						
							|  |  |  |  | @item cosh(x) | 
					
						
							|  |  |  |  | @item tanh(x) | 
					
						
							|  |  |  |  | @item sin(x) | 
					
						
							|  |  |  |  | @item cos(x) | 
					
						
							|  |  |  |  | @item tan(x) | 
					
						
							|  |  |  |  | @item exp(x) | 
					
						
							|  |  |  |  | @item log(x) | 
					
						
							|  |  |  |  | @item squish(x) | 
					
						
							|  |  |  |  | @item gauss(x) | 
					
						
							|  |  |  |  | @item abs(x) | 
					
						
							|  |  |  |  | @item max(x, y) | 
					
						
							|  |  |  |  | @item min(x, y) | 
					
						
							|  |  |  |  | @item gt(x, y) | 
					
						
							|  |  |  |  | @item lt(x, y) | 
					
						
							|  |  |  |  | @item eq(x, y) | 
					
						
							|  |  |  |  | @item bits2qp(bits) | 
					
						
							|  |  |  |  | @item qp2bits(qp) | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The following constants are available: | 
					
						
							|  |  |  |  | @table @var | 
					
						
							|  |  |  |  | @item PI | 
					
						
							|  |  |  |  | @item E | 
					
						
							|  |  |  |  | @item iTex | 
					
						
							|  |  |  |  | @item pTex | 
					
						
							|  |  |  |  | @item tex | 
					
						
							|  |  |  |  | @item mv | 
					
						
							|  |  |  |  | @item fCode | 
					
						
							|  |  |  |  | @item iCount | 
					
						
							|  |  |  |  | @item mcVar | 
					
						
							|  |  |  |  | @item var | 
					
						
							|  |  |  |  | @item isI | 
					
						
							|  |  |  |  | @item isP | 
					
						
							|  |  |  |  | @item isB | 
					
						
							|  |  |  |  | @item avgQP | 
					
						
							|  |  |  |  | @item qComp | 
					
						
							|  |  |  |  | @item avgIITex | 
					
						
							|  |  |  |  | @item avgPITex | 
					
						
							|  |  |  |  | @item avgPPTex | 
					
						
							|  |  |  |  | @item avgBPTex | 
					
						
							|  |  |  |  | @item avgTex | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man end | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @ignore | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @setfilename ffmpeg | 
					
						
							|  |  |  |  | @settitle FFmpeg video converter | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @c man begin SEEALSO | 
					
						
							|  |  |  |  | ffserver(1), ffplay(1) and the html documentation of @file{ffmpeg}. | 
					
						
							|  |  |  |  | @c man end | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @c man begin AUTHOR | 
					
						
							|  |  |  |  | Fabrice Bellard | 
					
						
							|  |  |  |  | @c man end | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @end ignore | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Protocols | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  |  | The filename can be @file{-} to read from the standard input or to write | 
					
						
							|  |  |  |  | to the standard output. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | ffmpeg handles also many protocols specified with the URL syntax. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | Use 'ffmpeg -formats' to have a list of the supported protocols. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | The protocol @code{http:} is currently used only to communicate with | 
					
						
							|  |  |  |  | ffserver (see the ffserver documentation). When ffmpeg will be a | 
					
						
							|  |  |  |  | video player it will also be used for streaming :-) | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @chapter Tips | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @itemize | 
					
						
							|  |  |  |  | @item For streaming at very low bit rate application, use a low frame rate | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | and a small gop size. This is especially true for real video where | 
					
						
							|  |  |  |  | the Linux player does not seem to be very fast, so it can miss | 
					
						
							|  |  |  |  | frames. An example is: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -g 3 -r 3 -t 10 -b 50 -s qcif -f rv10 /tmp/b.rm | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item  The parameter 'q' which is displayed while encoding is the current | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | quantizer. The value of 1 indicates that a very good quality could | 
					
						
							|  |  |  |  | be achieved. The value of 31 indicates the worst quality. If q=31 | 
					
						
							|  |  |  |  | too often, it means that the encoder cannot compress enough to meet | 
					
						
							|  |  |  |  | your bit rate. You must either increase the bit rate, decrease the | 
					
						
							|  |  |  |  | frame rate or decrease the frame size. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item If your computer is not fast enough, you can speed up the | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | compression at the expense of the compression ratio. You can use | 
					
						
							|  |  |  |  | '-me zero' to speed up motion estimation, and '-intra' to disable | 
					
						
							|  |  |  |  | completely motion estimation (you have only I frames, which means it | 
					
						
							|  |  |  |  | is about as good as JPEG compression). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item To have very low bitrates in audio, reduce the sampling frequency | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | (down to 22050 kHz for mpeg audio, 22050 or 11025 for ac3). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item To have a constant quality (but a variable bitrate), use the option | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | '-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst | 
					
						
							|  |  |  |  | quality). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item When converting video files, you can use the '-sameq' option which | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | uses in the encoder the same quality factor than in the decoder. It | 
					
						
							|  |  |  |  | allows to be almost lossless in encoding. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @end itemize | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @chapter Supported File Formats and Codecs | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | You can use the @code{-formats} option to have an exhaustive list. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section File Formats | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | FFmpeg supports the following file formats through the @code{libavformat} | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | library: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @multitable @columnfractions .4 .1 .1 | 
					
						
							|  |  |  |  | @item Supported File Format @tab Encoding @tab Decoding @tab Comments | 
					
						
							|  |  |  |  | @item MPEG audio @tab X @tab X | 
					
						
							|  |  |  |  | @item MPEG1 systems @tab X  @tab  X  | 
					
						
							|  |  |  |  | @tab muxed audio and video | 
					
						
							|  |  |  |  | @item MPEG2 PS @tab X  @tab  X  | 
					
						
							|  |  |  |  | @tab also known as @code{VOB} file | 
					
						
							|  |  |  |  | @item MPEG2 TS @tab    @tab  X  | 
					
						
							|  |  |  |  | @tab also known as DVB Transport Stream | 
					
						
							|  |  |  |  | @item ASF@tab X @tab X  | 
					
						
							|  |  |  |  | @item AVI@tab X @tab X  | 
					
						
							|  |  |  |  | @item WAV@tab X @tab X  | 
					
						
							|  |  |  |  | @item Macromedia Flash@tab X @tab X | 
					
						
							|  |  |  |  | @tab Only embedded audio is decoded | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item FLV              @tab  X @tab X | 
					
						
							|  |  |  |  | @tab Macromedia Flash video files | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item Real Audio and Video @tab X @tab X  | 
					
						
							|  |  |  |  | @item Raw AC3 @tab X  @tab  X  | 
					
						
							|  |  |  |  | @item Raw MJPEG @tab X  @tab  X  | 
					
						
							|  |  |  |  | @item Raw MPEG video @tab X  @tab  X  | 
					
						
							|  |  |  |  | @item Raw PCM8/16 bits, mulaw/Alaw@tab X  @tab  X  | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @item Raw CRI ADX audio @tab X  @tab  X  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item SUN AU format @tab X  @tab  X  | 
					
						
							| 
									
										
										
										
											2003-10-02 14:29:24 +00:00
										 |  |  |  | @item NUT @tab X @tab X @tab NUT Open Container Format | 
					
						
							| 
									
										
										
										
											2003-09-02 04:52:16 +00:00
										 |  |  |  | @item Quicktime        @tab X @tab  X  | 
					
						
							|  |  |  |  | @item MPEG4            @tab X @tab  X  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @tab MPEG4 is a variant of Quicktime | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | @item Raw MPEG4 video  @tab  X @tab  X  | 
					
						
							| 
									
										
										
										
											2003-10-01 23:34:46 +00:00
										 |  |  |  | @item DV               @tab  X @tab  X | 
					
						
							| 
									
										
										
										
											2003-05-29 23:39:42 +00:00
										 |  |  |  | @item 4xm              @tab    @tab X | 
					
						
							|  |  |  |  | @tab 4X Technologies format, used in some games | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Playstation STR  @tab    @tab X | 
					
						
							|  |  |  |  | @item Id RoQ           @tab    @tab X | 
					
						
							|  |  |  |  | @tab used in Quake III, Jedi Knight 2, other computer games | 
					
						
							|  |  |  |  | @item Interplay MVE    @tab    @tab X | 
					
						
							|  |  |  |  | @tab format used in various Interplay computer games | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  |  | @item WC3 Movie        @tab    @tab X | 
					
						
							|  |  |  |  | @tab multimedia format used in Origin's Wing Commander III computer game | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  |  | @item Sega FILM/CPK    @tab    @tab X | 
					
						
							|  |  |  |  | @tab used in many Sega Saturn console games | 
					
						
							|  |  |  |  | @item Westwood Studios VQA/AUD  @tab    @tab X | 
					
						
							|  |  |  |  | @tab Multimedia formats used in Westwood Studios games | 
					
						
							| 
									
										
										
										
											2003-10-03 05:43:03 +00:00
										 |  |  |  | @item Id Cinematic (.cin) @tab    @tab X | 
					
						
							|  |  |  |  | @tab Used in Quake II | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @item FLIC format      @tab    @tab X | 
					
						
							|  |  |  |  | @tab .fli/.flc files | 
					
						
							| 
									
										
										
										
											2004-01-02 04:50:08 +00:00
										 |  |  |  | @item Sierra VMD       @tab    @tab X | 
					
						
							|  |  |  |  | @tab used in Sierra CD-ROM games | 
					
						
							| 
									
										
										
										
											2004-03-13 16:35:32 +00:00
										 |  |  |  | @item Matroska         @tab    @tab X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end multitable | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @code{X} means that the encoding (resp. decoding) is supported. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | @section Image Formats | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | FFmpeg can read and write images for each frame of a video sequence. The | 
					
						
							|  |  |  |  | following image formats are supported: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @multitable @columnfractions .4 .1 .1 | 
					
						
							|  |  |  |  | @item Supported Image Format @tab Encoding @tab Decoding @tab Comments | 
					
						
							|  |  |  |  | @item PGM, PPM     @tab X @tab X  | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item PAM          @tab X @tab X @tab PAM is a PNM extension with alpha support | 
					
						
							|  |  |  |  | @item PGMYUV       @tab X @tab X @tab PGM with U and V components in YUV 4:2:0 | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | @item JPEG         @tab X @tab X @tab Progressive JPEG is not supported | 
					
						
							|  |  |  |  | @item .Y.U.V       @tab X @tab X @tab One raw file per component | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item Animated GIF @tab X @tab X @tab Only uncompressed GIFs are generated | 
					
						
							|  |  |  |  | @item PNG          @tab X @tab X @tab 2 bit and 4 bit/pixel not supported yet | 
					
						
							| 
									
										
										
										
											2004-03-13 17:30:37 +00:00
										 |  |  |  | @item SGI          @tab X @tab X @tab SGI RGB image format | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | @end multitable | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @code{X} means that the encoding (resp. decoding) is supported. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Video Codecs | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @multitable @columnfractions .4 .1 .1 .7 | 
					
						
							|  |  |  |  | @item Supported Codec @tab Encoding @tab Decoding @tab Comments | 
					
						
							| 
									
										
										
										
											2002-11-19 20:09:45 +00:00
										 |  |  |  | @item MPEG1 video            @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | @item MPEG2 video            @tab  X  @tab  X  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item MPEG4                  @tab  X  @tab  X @tab Also known as DIVX4/5 | 
					
						
							|  |  |  |  | @item MSMPEG4 V1             @tab  X  @tab  X | 
					
						
							|  |  |  |  | @item MSMPEG4 V2             @tab  X  @tab  X | 
					
						
							|  |  |  |  | @item MSMPEG4 V3             @tab  X  @tab  X @tab Also known as DIVX3 | 
					
						
							|  |  |  |  | @item WMV7                   @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2003-05-29 23:39:42 +00:00
										 |  |  |  | @item WMV8                   @tab  X  @tab  X @tab Not completely working | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item H263(+)                @tab  X  @tab  X @tab Also known as Real Video 1.0 | 
					
						
							|  |  |  |  | @item MJPEG                  @tab  X  @tab  X  | 
					
						
							| 
									
										
										
										
											2003-10-12 21:16:31 +00:00
										 |  |  |  | @item Lossless MJPEG         @tab  X  @tab  X | 
					
						
							|  |  |  |  | @item Apple MJPEG-B          @tab     @tab  X | 
					
						
							|  |  |  |  | @item Sunplus MJPEG          @tab     @tab  X @tab fourcc: SP5X | 
					
						
							| 
									
										
										
										
											2003-10-01 23:34:46 +00:00
										 |  |  |  | @item DV                     @tab  X  @tab  X  | 
					
						
							| 
									
										
										
										
											2002-11-19 20:09:45 +00:00
										 |  |  |  | @item Huff YUV               @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2003-10-12 21:16:31 +00:00
										 |  |  |  | @item FFmpeg Video 1         @tab  X  @tab  X @tab Lossless codec (fourcc: FFV1) | 
					
						
							| 
									
										
										
										
											2003-05-29 23:39:42 +00:00
										 |  |  |  | @item Asus v1                @tab  X  @tab  X @tab fourcc: ASV1 | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Asus v2                @tab  X  @tab  X @tab fourcc: ASV2 | 
					
						
							| 
									
										
										
										
											2003-05-29 23:39:42 +00:00
										 |  |  |  | @item Creative YUV           @tab     @tab  X @tab fourcc: CYUV | 
					
						
							|  |  |  |  | @item H.264                  @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2004-05-12 12:28:15 +00:00
										 |  |  |  | @item Sorenson Video 1       @tab  X  @tab  X @tab fourcc: SVQ1; note: use '-pix_fmt yuv410p' option for encoding | 
					
						
							| 
									
										
										
										
											2003-05-29 23:39:42 +00:00
										 |  |  |  | @item Sorenson Video 3       @tab     @tab  X @tab fourcc: SVQ3 | 
					
						
							|  |  |  |  | @item On2 VP3                @tab     @tab  X @tab still experimental | 
					
						
							| 
									
										
										
										
											2003-10-12 21:16:31 +00:00
										 |  |  |  | @item Theora                 @tab     @tab  X @tab still experimental | 
					
						
							| 
									
										
										
										
											2003-05-29 23:39:42 +00:00
										 |  |  |  | @item Intel Indeo 3          @tab     @tab  X @tab only works on i386 right now | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item FLV                    @tab  X  @tab  X @tab Flash H263 variant | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item ATI VCR1               @tab     @tab  X @tab fourcc: VCR1 | 
					
						
							| 
									
										
										
										
											2003-10-02 14:29:24 +00:00
										 |  |  |  | @item ATI VCR2               @tab     @tab  X @tab fourcc: VCR2 | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Cirrus Logic AccuPak   @tab     @tab  X @tab fourcc: CLJR | 
					
						
							|  |  |  |  | @item 4X Video               @tab     @tab  X @tab used in certain computer games | 
					
						
							|  |  |  |  | @item Sony Playstation MDEC  @tab     @tab  X  | 
					
						
							|  |  |  |  | @item Id RoQ                 @tab     @tab  X @tab used in Quake III, Jedi Knight 2, other computer games | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  |  | @item Xan/WC3                @tab     @tab  X @tab used in Wing Commander III .MVE files | 
					
						
							| 
									
										
										
										
											2003-09-14 19:39:18 +00:00
										 |  |  |  | @item Interplay Video        @tab     @tab  X @tab used in Interplay .MVE files | 
					
						
							| 
									
										
										
										
											2004-02-05 05:22:44 +00:00
										 |  |  |  | @item Apple Animation        @tab     @tab  X @tab fourcc: 'rle ' | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @item Apple Graphics         @tab     @tab  X @tab fourcc: 'smc ' | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  |  | @item Apple Video            @tab     @tab  X @tab fourcc: rpza | 
					
						
							|  |  |  |  | @item Cinepak                @tab     @tab  X | 
					
						
							|  |  |  |  | @item Microsoft RLE          @tab     @tab  X | 
					
						
							|  |  |  |  | @item Microsoft Video-1      @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2003-10-03 05:43:03 +00:00
										 |  |  |  | @item Westwood VQA           @tab     @tab  X | 
					
						
							|  |  |  |  | @item Id Cinematic Video     @tab     @tab  X @tab used in Quake II | 
					
						
							| 
									
										
										
										
											2003-11-07 22:39:18 +00:00
										 |  |  |  | @item Planar RGB             @tab     @tab  X @tab fourcc: 8BPS | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @item FLIC video             @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2003-12-03 04:22:15 +00:00
										 |  |  |  | @item Duck TrueMotion v1     @tab     @tab  X @tab fourcc: DUCK | 
					
						
							| 
									
										
										
										
											2004-01-02 04:50:08 +00:00
										 |  |  |  | @item VMD Video              @tab     @tab  X @tab used in Sierra VMD files | 
					
						
							| 
									
										
										
										
											2004-01-12 22:14:45 +00:00
										 |  |  |  | @item MSZH                   @tab     @tab  X @tab Part of LCL | 
					
						
							|  |  |  |  | @item ZLIB                   @tab  X  @tab  X @tab Part of LCL, encoder experimental | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end multitable | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @code{X} means that the encoding (resp. decoding) is supported. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:07:56 +00:00
										 |  |  |  | Check at @url{http://www.mplayerhq.hu/~michael/codec-features.html} to | 
					
						
							|  |  |  |  | get a precise comparison of FFmpeg MPEG4 codec compared to the other | 
					
						
							|  |  |  |  | solutions. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Audio Codecs | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @multitable @columnfractions .4 .1 .1 .1 .7 | 
					
						
							|  |  |  |  | @item Supported Codec @tab Encoding @tab Decoding @tab Comments | 
					
						
							|  |  |  |  | @item MPEG audio layer 2     @tab  IX  @tab  IX  | 
					
						
							|  |  |  |  | @item MPEG audio layer 1/3   @tab IX   @tab  IX | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | @tab MP3 encoding is supported through the external library LAME | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item AC3                    @tab  IX  @tab  X | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @tab liba52 is used internally for decoding | 
					
						
							| 
									
										
										
										
											2002-12-21 20:43:40 +00:00
										 |  |  |  | @item Vorbis                 @tab  X   @tab  X | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @tab supported through the external library libvorbis | 
					
						
							| 
									
										
										
										
											2002-11-19 20:09:45 +00:00
										 |  |  |  | @item WMA V1/V2              @tab      @tab X | 
					
						
							| 
									
										
										
										
											2004-02-14 15:11:20 +00:00
										 |  |  |  | @item Microsoft ADPCM        @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item MS IMA ADPCM           @tab X    @tab X | 
					
						
							|  |  |  |  | @item QT IMA ADPCM           @tab      @tab X | 
					
						
							|  |  |  |  | @item 4X IMA ADPCM           @tab      @tab X | 
					
						
							| 
									
										
										
										
											2004-02-07 08:24:24 +00:00
										 |  |  |  | @item G.726  ADPCM           @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  |  | @item Duck DK3 IMA ADPCM     @tab      @tab X | 
					
						
							|  |  |  |  | @tab used in some Sega Saturn console games | 
					
						
							|  |  |  |  | @item Duck DK4 IMA ADPCM     @tab      @tab X | 
					
						
							|  |  |  |  | @tab used in some Sega Saturn console games | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  |  | @item Westwood Studios IMA ADPCM @tab      @tab X | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @tab used in Westwood Studios games like Command and Conquer | 
					
						
							| 
									
										
										
										
											2004-02-03 04:27:17 +00:00
										 |  |  |  | @item SMJPEG IMA ADPCM       @tab      @tab X | 
					
						
							|  |  |  |  | @tab used in certain Loki game ports | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @item CD-ROM XA ADPCM        @tab      @tab X | 
					
						
							|  |  |  |  | @item CRI ADX ADPCM          @tab X    @tab X | 
					
						
							|  |  |  |  | @tab used in Sega Dreamcast games | 
					
						
							| 
									
										
										
										
											2004-02-03 04:27:17 +00:00
										 |  |  |  | @item Electronic Arts ADPCM  @tab      @tab X | 
					
						
							|  |  |  |  | @tab used in various EA titles | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item RA144                  @tab      @tab X | 
					
						
							|  |  |  |  | @tab Real 14400 bit/s codec | 
					
						
							|  |  |  |  | @item RA288                  @tab      @tab X | 
					
						
							|  |  |  |  | @tab Real 28800 bit/s codec | 
					
						
							|  |  |  |  | @item AMR-NB                 @tab X    @tab X | 
					
						
							|  |  |  |  | @tab supported through an external library | 
					
						
							| 
									
										
										
										
											2003-09-28 20:34:11 +00:00
										 |  |  |  | @item AMR-WB                 @tab X    @tab X | 
					
						
							|  |  |  |  | @tab supported through an external library | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item DV audio               @tab      @tab X | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Id RoQ DPCM            @tab      @tab X | 
					
						
							|  |  |  |  | @tab used in Quake III, Jedi Knight 2, other computer games | 
					
						
							|  |  |  |  | @item Interplay MVE DPCM     @tab      @tab X | 
					
						
							|  |  |  |  | @tab used in various Interplay computer games | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  |  | @item Xan DPCM               @tab      @tab X | 
					
						
							|  |  |  |  | @tab used in Origin's Wing Commander IV AVI files | 
					
						
							| 
									
										
										
										
											2003-10-12 21:16:31 +00:00
										 |  |  |  | @item Apple MACE 3           @tab      @tab X | 
					
						
							|  |  |  |  | @item Apple MACE 6           @tab      @tab X | 
					
						
							| 
									
										
										
										
											2004-02-18 12:51:56 +00:00
										 |  |  |  | @item FLAC                   @tab      @tab X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end multitable | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @code{X} means that the encoding (resp. decoding) is supported. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @code{I} means that an integer only version is available too (ensures highest | 
					
						
							|  |  |  |  | performances on systems without hardware floating point support). | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  |  | @chapter Platform Specific information | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Linux | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ffmpeg should be compiled with at least GCC 2.95.3. GCC 3.2 is the | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | preferred compiler now for ffmpeg. All future optimizations will depend on | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  |  | features only found in GCC 3.2. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section BSD | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Windows | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  | @subsection Native Windows compilation | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @itemize | 
					
						
							|  |  |  |  | @item Install the current versions of MSYS and MinGW from | 
					
						
							|  |  |  |  | @url{http://www.mingw.org/}. You can find detailed installation | 
					
						
							|  |  |  |  | instructions in the download section and the FAQ. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | @item If you want to test the FFmpeg Simple Media Player, also download  | 
					
						
							|  |  |  |  | the MinGW development library of SDL 1.2.x | 
					
						
							|  |  |  |  | (@file{SDL-devel-1.2.x-mingw32.tar.gz}) from | 
					
						
							|  |  |  |  | @url{http://www.libsdl.org}. Unpack it in a temporary place, and | 
					
						
							|  |  |  |  | unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | directory. Edit the @file{sdl-config} script so that it gives the | 
					
						
							|  |  |  |  | correct SDL directory when invoked. | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item Extract the current version of FFmpeg (the latest release version or the current CVS snapshot whichever is recommended). | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  |   | 
					
						
							|  |  |  |  | @item Start the MSYS shell (file @file{msys.bat}). | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | @item Change to the FFMPEG directory and follow | 
					
						
							|  |  |  |  |  the instructions of how to compile ffmpeg (file | 
					
						
							|  |  |  |  | @file{INSTALL}). Usually, launching @file{./configure} and @file{make} | 
					
						
							|  |  |  |  | suffices. If you have problems using SDL, verify that | 
					
						
							|  |  |  |  | @file{sdl-config} can be launched from the MSYS command line. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | @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  | 
					
						
							|  |  |  |  | @file{ffplay}. | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  | @end itemize | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | Notes:  | 
					
						
							|  |  |  |  | @itemize | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | @item The target @file{make wininstaller} can be used to create a | 
					
						
							|  |  |  |  | Nullsoft based Windows installer for FFmpeg and FFplay. @file{SDL.dll} | 
					
						
							|  |  |  |  | must be copied in the ffmpeg directory in order to build the | 
					
						
							|  |  |  |  | installer. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item By using @code{./configure --enable-shared} when configuring ffmpeg,  | 
					
						
							|  |  |  |  | you can build @file{avcodec.dll} and @file{avformat.dll}. With | 
					
						
							|  |  |  |  | @code{make install} you install the FFmpeg DLLs and the associated | 
					
						
							|  |  |  |  | headers in @file{Program Files/FFmpeg}.  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item Visual C++ compatibility: if you used @code{./configure --enable-shared}  | 
					
						
							|  |  |  |  | when configuring FFmpeg, then FFmpeg tries to use the Microsoft Visual | 
					
						
							|  |  |  |  | C++ @code{lib} tool to build @code{avcodec.lib} and | 
					
						
							|  |  |  |  | @code{avformat.lib}. With these libraries, you can link your Visual C++ | 
					
						
							|  |  |  |  | code directly with the FFmpeg DLLs. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @end itemize | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @subsection Cross compilation for Windows with Linux | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | You must use the MinGW cross compilation tools available at | 
					
						
							|  |  |  |  | @url{http://www.mingw.org/}. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Then configure ffmpeg with the following options: | 
					
						
							|  |  |  |  | @example | 
					
						
							|  |  |  |  | ./configure --enable-mingw32 --cross-prefix=i386-mingw32msvc- | 
					
						
							|  |  |  |  | @end example | 
					
						
							|  |  |  |  | (you can change the cross-prefix according to the prefix choosen for the | 
					
						
							|  |  |  |  | MinGW tools). | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Then you can easily test ffmpeg with wine | 
					
						
							|  |  |  |  | (@url{http://www.winehq.com/}). | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  |  | @section MacOS X | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section BeOS | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The configure script should guess the configuration itself. | 
					
						
							|  |  |  |  | Networking support is currently not finished. | 
					
						
							|  |  |  |  | errno issues fixed by Andrew Bachmann. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Old stuff: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Fran<EFBFBD>ois Revol - revol at free dot fr - April 2002 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The configure script should guess the configuration itself,  | 
					
						
							|  |  |  |  | however I still didn't tested building on net_server version of BeOS. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ffserver is broken (needs poll() implementation). | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | There is still issues with errno codes, which are negative in BeOs, and | 
					
						
							|  |  |  |  | that ffmpeg negates when returning. This ends up turning errors into  | 
					
						
							|  |  |  |  | valid results, then crashes. | 
					
						
							|  |  |  |  | (To be fixed) | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-21 20:43:40 +00:00
										 |  |  |  | @chapter Developers Guide | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @section API | 
					
						
							|  |  |  |  | @itemize | 
					
						
							|  |  |  |  | @item libavcodec is the library containing the codecs (both encoding and | 
					
						
							|  |  |  |  |   decoding). See @file{libavcodec/apiexample.c} to see how to use it. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item libavformat is the library containing the file formats handling (mux and | 
					
						
							| 
									
										
										
										
											2003-07-22 13:08:52 +00:00
										 |  |  |  |   demux code for several formats). See @file{ffplay.c} to use it in a | 
					
						
							|  |  |  |  | player. See @file{output_example.c} to use it to generate audio or video | 
					
						
							|  |  |  |  | streams. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end itemize | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Integrating libavcodec or libavformat in your program | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | You can integrate all the source code of the libraries to link them | 
					
						
							|  |  |  |  | statically to avoid any version problem. All you need is to provide a | 
					
						
							|  |  |  |  | 'config.mak' and a 'config.h' in the parent directory. See the defines | 
					
						
							|  |  |  |  | generated by ./configure to understand what is needed. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | You can use libavcodec or libavformat in your commercial program, but | 
					
						
							|  |  |  |  | @emph{any patch you make must be published}. The best way to proceed is | 
					
						
							|  |  |  |  | to send your patches to the ffmpeg mailing list. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Coding Rules | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  |  | ffmpeg is programmed in the ISO C90 language with a few additional | 
					
						
							|  |  |  |  | features from ISO C99, namely: | 
					
						
							|  |  |  |  | @itemize @bullet | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  | the @samp{inline} keyword; | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  | @samp{//} comments; | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  | designated struct initializers (@samp{struct s x = @{ .i = 17 @};}) | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  | compound literals (@samp{x = (struct s) { 17, 23 @};}) | 
					
						
							|  |  |  |  | @end itemize | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | These features are supported by all compilers we care about, so we won't | 
					
						
							|  |  |  |  | accept patches to remove their use unless they absolutely don't impair | 
					
						
							|  |  |  |  | clarity and performance. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | All code must compile with gcc 2.95 and gcc 3.3. Currently, ffmpeg also | 
					
						
							|  |  |  |  | compiles with several other compilers, such as the Compaq ccc compiler | 
					
						
							|  |  |  |  | or Sun Studio 9, and we would like to keep it that way unless it would | 
					
						
							|  |  |  |  | be exceedingly involved. To ensure compatibility, please don't use any | 
					
						
							|  |  |  |  | additional C99 features or gcc extensions. Watch out especially for: | 
					
						
							|  |  |  |  | @itemize @bullet | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  | mixing statements and declarations; | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  | @samp{long long} (use @samp{int64_t} instead); | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  | @samp{__attribute__} not protected by @samp{#ifdef __GNUC__} or similar; | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  | gcc statement expressions (@samp{(x = (@{ int y = 4; y; @})}). | 
					
						
							|  |  |  |  | @end itemize | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  |  | Indent size is 4. The TAB character should not be used. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | The presentation is the one specified by 'indent -i4 -kr'. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Main priority in ffmpeg is simplicity and small code size (=less | 
					
						
							|  |  |  |  | bugs). | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Comments: for functions visible from other modules, use the JavaDoc | 
					
						
							|  |  |  |  | format (see examples in @file{libav/utils.c}) so that a documentation | 
					
						
							|  |  |  |  | can be generated automatically. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-13 21:16:18 +00:00
										 |  |  |  | fprintf and printf are forbidden in libavformat and libavcodec,  | 
					
						
							|  |  |  |  | please use av_log() instead. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Submitting patches | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-10-25 00:35:25 +00:00
										 |  |  |  | When you submit your patch, try to send a unified diff (diff '-up' | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | option). I cannot read other diffs :-) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Run the regression tests before submitting a patch so that you can | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | verify that there are no big problems. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | Patches should be posted as base64 encoded attachments (or any other | 
					
						
							|  |  |  |  | encoding which ensures that the patch wont be trashed during  | 
					
						
							|  |  |  |  | transmission) to the ffmpeg-devel mailinglist, see  | 
					
						
							|  |  |  |  | @url{http://lists.sourceforge.net/lists/listinfo/ffmpeg-devel} | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-27 15:21:17 +00:00
										 |  |  |  | It also helps quite a bit if you tell us what the patch does (for example | 
					
						
							|  |  |  |  | 'replaces lrint by lrintf') , and why (for example '*bsd isnt c99 compliant | 
					
						
							|  |  |  |  | and has no lrint()') | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Regression tests | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | Before submitting a patch (or committing with CVS), you should at least | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | test that you did not break anything. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The regression test build a synthetic video stream and a synthetic | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | audio stream. Then these are encoded then decoded with all codecs or | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | formats. The CRC (or MD5) of each generated file is recorded in a | 
					
						
							|  |  |  |  | result file. Then a 'diff' is launched with the reference results and | 
					
						
							|  |  |  |  | the result file. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | The regression test then goes on to test the ffserver code with a  | 
					
						
							|  |  |  |  | limited set of streams. It is important that this step runs correctly | 
					
						
							|  |  |  |  | as well. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-13 21:16:18 +00:00
										 |  |  |  | Run 'make test' to test all the codecs and formats. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | Run 'make fulltest' to test all the codecs, formats and ffserver. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | [Of course, some patches may change the regression tests results. In | 
					
						
							|  |  |  |  | this case, the regression tests reference results shall be modified | 
					
						
							|  |  |  |  | accordingly]. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @bye |