| 
									
										
										
										
											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. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | The command line interface is designed to be intuitive, in the sense | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | that FFmpeg tries to figure out all parameters that can possibly be | 
					
						
							|  |  |  | derived automatically. You usually only have to specify the target | 
					
						
							|  |  |  | bitrate you want. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | launching FFmpeg with any TV viewer such as xawtv | 
					
						
							|  |  |  | (@url{http://bytesex.org/xawtv/}) by Gerd Knorr. You also | 
					
						
							|  |  |  | have to set the audio recording levels correctly with a | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | * FFmpeg can use any supported file format and protocol as input: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Examples: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | * You can use YUV files as input: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | ffmpeg -i /tmp/test%d.Y /tmp/out.mpg | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | if FFmpeg cannot guess it. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | * You can input from a raw YUV420P file: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | test.yuv is a file containing raw YUV planar data. Each frame is composed | 
					
						
							|  |  |  | of the Y plane followed by the U and V planes at half vertical and | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | horizontal resolution. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | * You can output to a raw YUV420P file: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							| 
									
										
										
										
											2005-09-06 08:51:46 +00:00
										 |  |  | ffmpeg -i mydivx.avi 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Converts 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Converts a.wav to MPEG audio at 22050Hz sample rate. | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map | 
					
						
							|  |  |  | file:index' specifies which input stream is used for each output | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | stream, in the order of the definition of output streams. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | * You can transcode decrypted VOBs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							| 
									
										
										
										
											2006-09-15 11:15:55 +00:00
										 |  |  | ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | This is a typical DVD ripping example; the input is a VOB file, the | 
					
						
							|  |  |  | output 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, and | 
					
						
							|  |  |  | GOP size is 300 which means one intra frame every 10 seconds for 29.97fps | 
					
						
							|  |  |  | input video. Furthermore, the audio stream is MP3-encoded so you need | 
					
						
							|  |  |  | to enable LAME support by passing @code{--enable-mp3lame} to configure. | 
					
						
							|  |  |  | The mapping is particularly useful for DVD transcoding | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | to get the desired audio language. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | NOTE: To see the supported input formats, use @code{ffmpeg -formats}. | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | @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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | @c man begin SYNOPSIS | 
					
						
							| 
									
										
										
										
											2004-07-14 02:39:55 +00:00
										 |  |  | ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}... | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2006-11-20 18:44:33 +00:00
										 |  |  | file. Therefore, order is important, and you can have the same | 
					
						
							| 
									
										
										
										
											2006-11-20 19:16:06 +00:00
										 |  |  | option on the command line multiple times. Each occurence is | 
					
						
							| 
									
										
										
										
											2006-11-20 18:44:33 +00:00
										 |  |  | then applied to the next input or output file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * To set the video bitrate of the output file to 64Kbit/s: | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ffmpeg -i input.avi -b 64k output.avi | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * To force the frame rate of the input and output file to 24 fps: | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ffmpeg -r 24 -i input.avi output.avi | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * To force the frame rate of the output file to 24 fps: | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ffmpeg -i input.avi -r 24 output.avi | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * To force the frame rate of input file to 1 fps and the output file to 24 fps: | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ffmpeg -r 1 -i input.avi -r 24 output.avi | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The format option may be needed for raw input files. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | By default, FFmpeg tries to convert as losslessly as possible: It | 
					
						
							|  |  |  | uses the same audio and video parameters for the outputs as the one | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Show license. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @item -h | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Show help. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -version | 
					
						
							|  |  |  | Show version. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | @item -formats | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Show available formats, codecs, protocols, ... | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -f fmt | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Force format. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -i filename | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | input filename | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -y | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Overwrite output files. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -t duration | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set the recording time in seconds. | 
					
						
							|  |  |  | @code{hh:mm:ss[.xxx]} syntax is also supported. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -fs limit_size | 
					
						
							|  |  |  | Set the file size limit. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-08 19:13:23 +00:00
										 |  |  | @item -ss position | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Seek to given time position in seconds. | 
					
						
							|  |  |  | @code{hh:mm:ss[.xxx]} syntax is also supported. | 
					
						
							| 
									
										
										
										
											2004-03-08 19:13:23 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -itsoffset offset | 
					
						
							|  |  |  | Set the input time offset in seconds. | 
					
						
							|  |  |  | @code{[-]hh:mm:ss[.xxx]} syntax is also supported. | 
					
						
							|  |  |  | This option affects all the input files that follow it. | 
					
						
							|  |  |  | The offset is added to the timestamps of the input files. | 
					
						
							|  |  |  | Specifying a positive offset means that the corresponding | 
					
						
							|  |  |  | streams are delayed by 'offset' seconds. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -title string | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set the title. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -timestamp time | 
					
						
							|  |  |  | Set the timestamp. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -author string | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set the author. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -copyright string | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set the copyright. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -comment string | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set the comment. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -album string | 
					
						
							|  |  |  | Set the album. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-08 12:28:28 +00:00
										 |  |  | @item -track number | 
					
						
							|  |  |  | Set the track. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item -year number | 
					
						
							|  |  |  | Set the year. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -v verbose | 
					
						
							|  |  |  | Control amount of logging. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-10 19:17:15 +00:00
										 |  |  | @item -target type | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | "ntsc-svcd", ... ). All the format options (bitrate, codecs, | 
					
						
							|  |  |  | buffer sizes) are then set automatically. You can just type: | 
					
						
							| 
									
										
										
										
											2003-12-10 19:17:15 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Nevertheless you can specify additional options as long as you know | 
					
						
							|  |  |  | they do not conflict with the standard, as in: | 
					
						
							| 
									
										
										
										
											2004-10-07 03:20:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -dframes number | 
					
						
							|  |  |  | Set the number of data frames to record. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item -scodec codec | 
					
						
							|  |  |  | Force subtitle codec ('copy' to copy stream). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item -newsubtitle | 
					
						
							|  |  |  | Add a new subtitle stream to the current output stream. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item -slang code | 
					
						
							|  |  |  | Set the ISO 639 language code (3 letters) of the current subtitle stream. | 
					
						
							| 
									
										
										
										
											2004-06-24 18:39:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2006-09-15 11:15:55 +00:00
										 |  |  | Set the video bitrate in bit/s (default = 200 kb/s). | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -vframes number | 
					
						
							|  |  |  | Set the number of video frames to record. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -r fps | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | Set frame rate (Hz value, fraction or abbreviation), (default = 25). | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -s size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set frame size. The format is @samp{wxh} (default = 160x128). | 
					
						
							|  |  |  | The following abbreviations are recognized: | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -croptop size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set top crop band size (in pixels). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -cropbottom size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set bottom crop band size (in pixels). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -cropleft size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set left crop band size (in pixels). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -cropright size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set right crop band size (in pixels). | 
					
						
							| 
									
										
										
										
											2004-04-08 18:54:40 +00:00
										 |  |  | @item -padtop size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set top pad band size (in pixels). | 
					
						
							| 
									
										
										
										
											2004-04-08 18:54:40 +00:00
										 |  |  | @item -padbottom size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set bottom pad band size (in pixels). | 
					
						
							| 
									
										
										
										
											2004-04-08 18:54:40 +00:00
										 |  |  | @item -padleft size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set left pad band size (in pixels). | 
					
						
							| 
									
										
										
										
											2004-04-08 18:54:40 +00:00
										 |  |  | @item -padright size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set right pad band size (in pixels). | 
					
						
							| 
									
										
										
										
											2004-07-10 15:58:11 +00:00
										 |  |  | @item -padcolor (hex color) | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set color of padded bands. The value for padcolor is expressed | 
					
						
							|  |  |  | as a six digit hexadecimal number where the first two digits | 
					
						
							|  |  |  | represent red, the middle two digits green and last two digits | 
					
						
							|  |  |  | blue (default = 000000 (black)). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @item -vn | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Disable video recording. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -bt tolerance | 
					
						
							| 
									
										
										
										
											2006-09-15 22:32:30 +00:00
										 |  |  | Set video bitrate tolerance (in bit/s). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -maxrate bitrate | 
					
						
							| 
									
										
										
										
											2006-09-15 17:38:43 +00:00
										 |  |  | Set max video bitrate tolerance (in bit/s). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -minrate bitrate | 
					
						
							| 
									
										
										
										
											2006-09-15 17:38:43 +00:00
										 |  |  | Set min video bitrate tolerance (in bit/s). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -bufsize size | 
					
						
							| 
									
										
										
										
											2006-09-18 19:27:12 +00:00
										 |  |  | Set rate control buffer size (in bits). | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -vcodec codec | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Force video codec to @var{codec}. Use the @code{copy} special value to | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  | tell that the raw codec data must be copied as is. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -sameq | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Use same video quality as source (implies VBR). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -pass n | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +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 is generated at the exact requested bitrate | 
					
						
							|  |  |  | in the second pass. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -passlogfile file | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set two pass logfile name to @var{file}. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -newvideo | 
					
						
							|  |  |  | Add a new video stream to the current output stream. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -pix_fmt format | 
					
						
							|  |  |  | Set pixel format. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -g gop_size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set the group of pictures size. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -intra | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Use only intra frames. | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -vdt n | 
					
						
							|  |  |  | Discard threshold. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -qscale q | 
					
						
							| 
									
										
										
										
											2006-10-02 10:23:59 +00:00
										 |  |  | Use fixed video quantizer scale (VBR). | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -qmin q | 
					
						
							| 
									
										
										
										
											2006-10-02 10:23:59 +00:00
										 |  |  | minimum video quantizer scale (VBR) | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -qmax q | 
					
						
							| 
									
										
										
										
											2006-10-02 10:23:59 +00:00
										 |  |  | maximum video quantizer scale (VBR) | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -qdiff q | 
					
						
							| 
									
										
										
										
											2006-10-02 10:23:59 +00:00
										 |  |  | maximum difference between the quantizer scales (VBR) | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -qblur blur | 
					
						
							| 
									
										
										
										
											2006-10-02 10:23:59 +00:00
										 |  |  | video quantizer scale blur (VBR) | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -qcomp compression | 
					
						
							| 
									
										
										
										
											2006-10-02 10:23:59 +00:00
										 |  |  | video quantizer scale compression (VBR) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-10-02 10:19:39 +00:00
										 |  |  | @item -lmin lambda | 
					
						
							|  |  |  | minimum video lagrange factor (VBR) | 
					
						
							|  |  |  | @item -lmax lambda | 
					
						
							|  |  |  | max video lagrange factor (VBR) | 
					
						
							|  |  |  | @item -mblmin lambda | 
					
						
							|  |  |  | minimum macroblock quantizer scale (VBR) | 
					
						
							|  |  |  | @item -mblmax lambda | 
					
						
							|  |  |  | maximum macroblock quantizer scale (VBR) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units, | 
					
						
							|  |  |  | but you may use the QP2LAMBDA constant to easily convert from 'q' units: | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -rc_init_cplx complexity | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | initial complexity for single pass encoding | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -b_qfactor factor | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | qp factor between P- and B-frames | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -i_qfactor factor | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | qp factor between P- and I-frames | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -b_qoffset offset | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | qp offset between P- and B-frames | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -i_qoffset offset | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | qp offset between P- and I-frames | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -rc_eq equation | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set rate control equation (@pxref{FFmpeg formula | 
					
						
							|  |  |  | evaluator}) (default = @code{tex^qComp}). | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  | @item -rc_override override | 
					
						
							|  |  |  | rate control override for specific intervals | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -me method | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set motion estimation method to @var{method}. | 
					
						
							|  |  |  | Available methods are (from lowest 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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +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 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | FF_IDCT_INT | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 2 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | FF_IDCT_SIMPLE | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 3 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | FF_IDCT_SIMPLEMMX | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 4 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | FF_IDCT_LIBMPEG2MMX | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 5 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | FF_IDCT_PS2 | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 6 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | FF_IDCT_MLIB | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 7 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | FF_IDCT_ARM | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 8 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | FF_IDCT_ALTIVEC | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 9 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | FF_IDCT_SH4 | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 10 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | FF_IDCT_SIMPLEARM | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @end table | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item -er n | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set error resilience to @var{n}. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @table @samp | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item 1 | 
					
						
							| 
									
										
										
										
											2005-09-12 16:30:47 +00:00
										 |  |  | FF_ER_CAREFUL (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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  | the following values: | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @table @samp | 
					
						
							|  |  |  | @item 1 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | FF_EC_GUESS_MVS (default = enabled) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 2 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | FF_EC_DEBLOCK (default = enabled) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @end table | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item -bf frames | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in FFmpeg). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 1 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | FF_MB_DECISION_BITS: Choose the one which needs the fewest bits. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item 2 | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  | FF_MB_DECISION_RD: rate distortion | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @end table | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item -4mv | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Use four motion vector by macroblock (MPEG-4 only). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -part | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Use data partitioning (MPEG-4 only). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -bug param | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Work around encoder bugs that are not auto-detected. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -strict strictness | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | How strictly to follow the standards. | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  | @item -aic | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Enable Advanced intra coding (h263+). | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  | @item -umv | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Enable Unlimited Motion Vector (h263+) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @item -deinterlace | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Deinterlace pictures. | 
					
						
							| 
									
										
										
										
											2006-09-28 19:06:57 +00:00
										 |  |  | @item -ilme | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Force interlacing support in encoder (MPEG-2 and MPEG-4 only). | 
					
						
							|  |  |  | Use this option if your input file is interlaced and you want | 
					
						
							|  |  |  | to keep the interlaced format for minimum losses. | 
					
						
							|  |  |  | The alternative is to deinterlace the input stream with | 
					
						
							|  |  |  | @option{-deinterlace}, but deinterlacing introduces losses. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -psnr | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Calculate PSNR of compressed frames. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -vstats | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Dump video coding statistics to @file{vstats_HHMMSS.log}. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -vhook module | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Insert video processing @var{module}. @var{module} contains the module | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | name and its parameters separated by spaces. | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -top n | 
					
						
							|  |  |  | top=1/bottom=0/auto=-1 field first | 
					
						
							|  |  |  | @item -dc precision | 
					
						
							|  |  |  | Intra_dc_precision. | 
					
						
							|  |  |  | @item -vtag fourcc/tag | 
					
						
							|  |  |  | Force video tag/fourcc. | 
					
						
							|  |  |  | @item -qphist | 
					
						
							|  |  |  | Show QP histogram. | 
					
						
							|  |  |  | @item -vbsf bitstream filter | 
					
						
							|  |  |  | Bitstream filters available are "dump_extra", "remove_extra", "noise". | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @end table | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Audio Options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @table @option | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -aframes number | 
					
						
							|  |  |  | Set the number of audio frames to record. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -ar freq | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set the audio sampling frequency (default = 44100 Hz). | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -ab bitrate | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set the audio bitrate in kbit/s (default = 64). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -ac channels | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set the number of audio channels (default = 1). | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  | @item -an | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Disable audio recording. | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  | @item -acodec codec | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Force audio codec to @var{codec}. Use the @code{copy} special value to | 
					
						
							|  |  |  | specify that the raw codec data must be copied as is. | 
					
						
							| 
									
										
										
										
											2006-10-26 14:26:21 +00:00
										 |  |  | @item -newaudio | 
					
						
							| 
									
										
										
										
											2006-10-26 16:21:41 +00:00
										 |  |  | Add a new audio track to the output file. If you want to specify parameters, | 
					
						
							|  |  |  | do so before @code{-newaudio} (@code{-acodec}, @code{-ab}, etc..). | 
					
						
							| 
									
										
										
										
											2006-10-26 14:26:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-10-26 16:21:41 +00:00
										 |  |  | Mapping will be done automatically, if the number of output streams is equal to | 
					
						
							|  |  |  | the number of input streams, else it will pick the first one that matches. You | 
					
						
							| 
									
										
										
										
											2006-10-26 14:26:21 +00:00
										 |  |  | can override the mapping using @code{-map} as usual. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Example: | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384 test.mpg -acodec mp2 -ab 192 -newaudio | 
					
						
							|  |  |  | @end example | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -alang code | 
					
						
							|  |  |  | Set the ISO 639 language code (3 letters) of the current audio stream. | 
					
						
							|  |  |  | @end table | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Advanced Audio options: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @table @option | 
					
						
							|  |  |  | @item -atag fourcc/tag | 
					
						
							|  |  |  | Force audio tag/fourcc. | 
					
						
							|  |  |  | @item -absf bitstream filter | 
					
						
							|  |  |  | Bitstream filters available are "dump_extra", "remove_extra", "noise", "mp3comp", "mp3decomp". | 
					
						
							|  |  |  | @end table | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Subtitle options: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @table @option | 
					
						
							|  |  |  | @item -scodec codec | 
					
						
							|  |  |  | Force subtitle codec ('copy' to copy stream). | 
					
						
							|  |  |  | @item -newsubtitle | 
					
						
							|  |  |  | Add a new subtitle stream to the current output stream. | 
					
						
							|  |  |  | @item -slang code | 
					
						
							|  |  |  | Set the ISO 639 language code (3 letters) of the current subtitle stream. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @end table | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Audio/Video grab options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @table @option | 
					
						
							|  |  |  | @item -vd device | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | sEt video grab device (e.g. @file{/dev/video0}). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -vc channel | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set video grab channel (DV1394 only). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -tvstd standard | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set television standard (NTSC, PAL (SECAM)). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -dv1394 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set DV1394 grab. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -ad device | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set audio device (e.g. @file{/dev/dsp}). | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -grab format | 
					
						
							|  |  |  | Request grabbing using. | 
					
						
							|  |  |  | @item -gd device | 
					
						
							|  |  |  | Set grab device. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @end table | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Advanced options | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @table @option | 
					
						
							| 
									
										
										
										
											2006-08-30 17:10:56 +00:00
										 |  |  | @item -map input stream id[:input stream id] | 
					
						
							|  |  |  | Set stream mapping from input streams to output streams. | 
					
						
							|  |  |  | Just enumerate the input streams in the order you want them in the output. | 
					
						
							|  |  |  | [input stream id] sets the (input) stream to sync against. | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -map_meta_data outfile:infile | 
					
						
							|  |  |  | Set meta data information of outfile from infile. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -debug | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Print specific debug info. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item -benchmark | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Add timings for benchmarking. | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -dump | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Dump each input packet. | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -hex | 
					
						
							|  |  |  | When dumping packets, also dump the payload. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -bitexact | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Only use bit exact algorithms (for codec testing). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | @item -ps size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Set packet size in bits. | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  | @item -re | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Read input at native frame rate. Mainly used to simulate a grab device. | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -loop_input | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Loop over the input stream. Currently it works only for image | 
					
						
							|  |  |  | streams. This option is used for automatic FFserver testing. | 
					
						
							| 
									
										
										
										
											2005-06-18 01:52:24 +00:00
										 |  |  | @item -loop_output number_of_times | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  | Repeatedly loop output for formats that support looping such as animated GIF | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | (0 will loop the output infinitely). | 
					
						
							| 
									
										
										
										
											2006-11-12 23:19:26 +00:00
										 |  |  | @item -threads count | 
					
						
							|  |  |  | Thread count. | 
					
						
							| 
									
										
										
										
											2006-08-19 20:00:22 +00:00
										 |  |  | @item -vsync parameter | 
					
						
							| 
									
										
										
										
											2006-08-19 21:15:02 +00:00
										 |  |  | Video sync method. Video will be stretched/squeezed to match the timestamps, | 
					
						
							|  |  |  | it is done by duplicating and dropping frames. With -map you can select from | 
					
						
							|  |  |  | which stream the timestamps should be taken. You can leave either video or | 
					
						
							| 
									
										
										
										
											2006-08-19 20:00:22 +00:00
										 |  |  | audio unchanged and sync the remaining stream(s) to the unchanged one. | 
					
						
							|  |  |  | @item -async samples_per_second | 
					
						
							| 
									
										
										
										
											2006-08-19 21:15:02 +00:00
										 |  |  | Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps, | 
					
						
							| 
									
										
										
										
											2006-08-19 20:00:22 +00:00
										 |  |  | the parameter is the maximum samples per second by which the audio is changed. | 
					
						
							|  |  |  | -async 1 is a special case where only the start of the audio stream is corrected | 
					
						
							|  |  |  | without any later correction. | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | evaluator. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  | ffserver(1), ffplay(1) and the HTML documentation of @file{ffmpeg}. | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | @c man end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @c man begin AUTHOR | 
					
						
							|  |  |  | Fabrice Bellard | 
					
						
							|  |  |  | @c man end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @end ignore | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @section Protocols | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | The filename can be @file{-} to read from standard input or to write | 
					
						
							|  |  |  | to standard output. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | FFmpeg also handles many protocols specified with an URL syntax. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Use 'ffmpeg -formats' to see 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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | FFserver (see the FFserver documentation). When FFmpeg will be a | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | video player it will also be used for streaming :-) | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @chapter Tips | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @itemize | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item For streaming at very low bitrate application, use a low frame rate | 
					
						
							|  |  |  | and a small GOP size. This is especially true for RealVideo where | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2006-09-15 11:15:55 +00:00
										 |  |  | ffmpeg -g 3 -r 3 -t 10 -b 50k -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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | quantizer. The value 1 indicates that a very good quality could | 
					
						
							|  |  |  | be achieved. The value 31 indicates the worst quality. If q=31 appears | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | too often, it means that the encoder cannot compress enough to meet | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | your bitrate. You must either increase the bitrate, decrease the | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | motion estimation completely (you have only I-frames, which means it | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  | is about as good as JPEG compression). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item To have very low audio bitrates, reduce the sampling frequency | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | uses the same quality factor in the encoder as in the decoder. | 
					
						
							|  |  |  | It allows almost lossless encoding. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @end itemize | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-14 11:41:31 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @chapter external libraries | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | FFmpeg can be hooked up with a number of external libraries to add support | 
					
						
							|  |  |  | for more formats. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section AMR | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | AMR comes in two different flavors, WB and NB. FFmpeg can make use of the | 
					
						
							|  |  |  | AMR WB (floating-point mode) and the AMR NB (both floating-point and | 
					
						
							|  |  |  | fixed-point mode) reference decoders and encoders. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @itemize | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item For AMR WB floating-point download TS26.204 V5.1.0 from | 
					
						
							|  |  |  | @url{http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip} | 
					
						
							|  |  |  | and extract the source to @file{libavcodec/amrwb_float/}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item For AMR NB floating-point download TS26.104 REL-5 V5.1.0 from | 
					
						
							|  |  |  | @url{http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip} | 
					
						
							|  |  |  | and extract the source to @file{libavcodec/amr_float/}. | 
					
						
							|  |  |  | If you try this on Alpha, you may need to change @code{Word32} to | 
					
						
							|  |  |  | @code{int} in @file{amr/typedef.h}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item For AMR NB fixed-point download TS26.073 REL-5 V5.1.0 from | 
					
						
							|  |  |  | @url{http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip} | 
					
						
							|  |  |  | and extract the source to @file{libavcodec/amr}. | 
					
						
							|  |  |  | You must also add @code{-DMMS_IO} and remove @code{-pedantic-errors} | 
					
						
							|  |  |  | to/from @code{CFLAGS} in @file{libavcodec/amr/makefile}, i.e. | 
					
						
							|  |  |  | ``@code{CFLAGS = -Wall -I. \$(CFLAGS_\$(MODE)) -D\$(VAD) -DMMS_IO}''. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @end itemize | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-21 23:59:06 +00:00
										 |  |  | @multitable @columnfractions .4 .1 .1 .4 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @item Supported File Format @tab Encoding @tab Decoding @tab Comments | 
					
						
							|  |  |  | @item MPEG audio @tab X @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item MPEG-1 systems @tab X  @tab  X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @tab muxed audio and video | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item MPEG-2 PS @tab X  @tab  X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @tab also known as @code{VOB} file | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item MPEG-2 TS @tab    @tab  X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @tab also known as DVB Transport Stream | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item ASF@tab X @tab X | 
					
						
							|  |  |  | @item AVI@tab X @tab X | 
					
						
							|  |  |  | @item WAV@tab X @tab X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @item Macromedia Flash@tab X @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +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 | 
					
						
							|  |  |  | @item Raw CRI ADX audio @tab X  @tab  X | 
					
						
							|  |  |  | @item Raw Shorten audio @tab    @tab  X | 
					
						
							|  |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item QuickTime        @tab X @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item MPEG-4           @tab X @tab  X | 
					
						
							|  |  |  | @tab MPEG-4 is a variant of QuickTime. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in Quake III, Jedi Knight 2, other computer games. | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  | @item Interplay MVE    @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Format used in various Interplay computer games. | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  | @item WC3 Movie        @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in many Sega Saturn console games. | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  | @item Westwood Studios VQA/AUD  @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Multimedia formats used in Westwood Studios games. | 
					
						
							| 
									
										
										
										
											2003-10-03 05:43:03 +00:00
										 |  |  | @item Id Cinematic (.cin) @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in Sierra CD-ROM games. | 
					
						
							| 
									
										
										
										
											2004-09-28 03:09:49 +00:00
										 |  |  | @item Sierra Online    @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab .sol files used in Sierra Online games. | 
					
						
							| 
									
										
										
										
											2004-03-13 16:35:32 +00:00
										 |  |  | @item Matroska         @tab    @tab X | 
					
						
							| 
									
										
										
										
											2004-10-16 19:33:57 +00:00
										 |  |  | @item Electronic Arts Multimedia    @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in various EA games; files have extensions like WVE and UV2. | 
					
						
							| 
									
										
										
										
											2004-11-20 23:40:22 +00:00
										 |  |  | @item Nullsoft Video (NSV) format @tab    @tab X | 
					
						
							| 
									
										
										
										
											2006-02-08 01:11:48 +00:00
										 |  |  | @item ADTS AAC audio @tab X @tab X | 
					
						
							| 
									
										
										
										
											2006-02-09 22:52:23 +00:00
										 |  |  | @item Creative VOC @tab X @tab X @tab Created for the Sound Blaster Pro. | 
					
						
							| 
									
										
										
										
											2006-02-12 06:49:40 +00:00
										 |  |  | @item American Laser Games MM  @tab    @tab X | 
					
						
							|  |  |  | @tab Multimedia format used in games like Mad Dog McCree | 
					
						
							| 
									
										
										
										
											2006-02-17 03:17:42 +00:00
										 |  |  | @item AVS @tab    @tab X | 
					
						
							|  |  |  | @tab Multimedia format used by the Creature Shock game. | 
					
						
							| 
									
										
										
										
											2006-03-21 17:27:47 +00:00
										 |  |  | @item Smacker @tab    @tab X | 
					
						
							|  |  |  | @tab Multimedia format used by many games. | 
					
						
							| 
									
										
										
										
											2006-10-11 17:16:57 +00:00
										 |  |  | @item GXF @tab  X @tab X | 
					
						
							|  |  |  | @tab General eXchange Format SMPTE 360M, used by Thomson Grass Valley playout servers. | 
					
						
							| 
									
										
										
										
											2006-10-11 17:14:02 +00:00
										 |  |  | @item CIN @tab    @tab X | 
					
						
							|  |  |  | @tab Multimedia format used by Delphine Software games. | 
					
						
							| 
									
										
										
										
											2006-10-11 17:22:23 +00:00
										 |  |  | @item MXF @tab    @tab X | 
					
						
							|  |  |  | @tab Material eXchange Format SMPTE 377M, used by D-Cinema, broadcast industry. | 
					
						
							| 
									
										
										
										
											2006-10-12 12:02:58 +00:00
										 |  |  | @item SEQ @tab    @tab X | 
					
						
							|  |  |  | @tab Tiertex .seq files used in the DOS CDROM version of the game Flashback. | 
					
						
							| 
									
										
										
										
											2004-11-20 23:40:22 +00:00
										 |  |  | @end multitable | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-21 23:59:06 +00:00
										 |  |  | @multitable @columnfractions .4 .1 .1 .4 | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  | @item Supported Image Format @tab Encoding @tab Decoding @tab Comments | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item PGM, PPM     @tab X @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item PAM          @tab X @tab X @tab PAM is a PNM extension with alpha support. | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  | @item PGMYUV       @tab X @tab X @tab PGM with U and V components in YUV 4:2:0 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +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 | 
					
						
							|  |  |  | @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. | 
					
						
							| 
									
										
										
										
											2006-10-11 04:15:04 +00:00
										 |  |  | @item Targa        @tab   @tab X @tab Targa (.TGA) image format. | 
					
						
							| 
									
										
										
										
											2006-10-13 10:48:29 +00:00
										 |  |  | @item TIFF         @tab   @tab X @tab Only 24 bit/pixel images are supported. | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @section Video Codecs | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-21 23:59:06 +00:00
										 |  |  | @multitable @columnfractions .4 .1 .1 .4 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @item Supported Codec @tab Encoding @tab Decoding @tab Comments | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item MPEG-1 video           @tab  X  @tab  X | 
					
						
							|  |  |  | @item MPEG-2 video           @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2006-10-03 21:09:02 +00:00
										 |  |  | @item MPEG-4                 @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @item MSMPEG4 V1             @tab  X  @tab  X | 
					
						
							|  |  |  | @item MSMPEG4 V2             @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2006-10-03 21:09:02 +00:00
										 |  |  | @item MSMPEG4 V3             @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @item WMV7                   @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item WMV8                   @tab  X  @tab  X @tab not completely working | 
					
						
							| 
									
										
										
										
											2006-11-14 11:24:58 +00:00
										 |  |  | @item WMV9                   @tab     @tab  X @tab not completely working | 
					
						
							|  |  |  | @item VC1                    @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2004-10-28 19:40:57 +00:00
										 |  |  | @item H.261                  @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item H.263(+)               @tab  X  @tab  X @tab also known as RealVideo 1.0 | 
					
						
							| 
									
										
										
										
											2004-10-28 19:40:57 +00:00
										 |  |  | @item H.264                  @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2006-01-05 22:33:41 +00:00
										 |  |  | @item RealVideo 1.0          @tab  X  @tab  X | 
					
						
							|  |  |  | @item RealVideo 2.0          @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item MJPEG                  @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item lossless MJPEG         @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2006-03-01 07:42:55 +00:00
										 |  |  | @item JPEG-LS                @tab  X  @tab  X @tab fourcc: MJLS, lossless and near-lossless is supported | 
					
						
							| 
									
										
										
										
											2003-10-12 21:16:31 +00:00
										 |  |  | @item Apple MJPEG-B          @tab     @tab  X | 
					
						
							|  |  |  | @item Sunplus MJPEG          @tab     @tab  X @tab fourcc: SP5X | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item DV                     @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item HuffYUV                @tab  X  @tab  X | 
					
						
							|  |  |  | @item FFmpeg Video 1         @tab  X  @tab  X @tab experimental lossless codec (fourcc: FFV1) | 
					
						
							|  |  |  | @item FFmpeg Snow            @tab  X  @tab  X @tab experimental wavelet codec (fourcc: SNOW) | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2004-05-13 12:51:54 +00:00
										 |  |  | @item Sorenson Video 1       @tab  X  @tab  X @tab fourcc: SVQ1 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2006-09-09 17:19:37 +00:00
										 |  |  | @item On2 VP5                @tab     @tab  X @tab fourcc: VP50 | 
					
						
							|  |  |  | @item On2 VP6                @tab     @tab  X @tab fourcc: VP62 | 
					
						
							| 
									
										
										
										
											2003-10-12 21:16:31 +00:00
										 |  |  | @item Theora                 @tab     @tab  X @tab still experimental | 
					
						
							| 
									
										
										
										
											2005-02-27 23:43:24 +00:00
										 |  |  | @item Intel Indeo 3          @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2004-10-19 14:17:32 +00:00
										 |  |  | @item FLV                    @tab  X  @tab  X @tab Sorenson H.263 used in Flash | 
					
						
							| 
									
										
										
										
											2006-06-01 07:31:59 +00:00
										 |  |  | @item Flash Screen Video     @tab     @tab  X @tab fourcc: FSV1 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item 4X Video               @tab     @tab  X @tab Used in certain computer games. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item Sony Playstation MDEC  @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item Id RoQ                 @tab     @tab  X @tab Used in Quake III, Jedi Knight 2, other computer games. | 
					
						
							|  |  |  | @item Xan/WC3                @tab     @tab  X @tab Used in Wing Commander III .MVE files. | 
					
						
							|  |  |  | @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 | 
					
						
							| 
									
										
										
										
											2004-09-28 03:09:49 +00:00
										 |  |  | @item Apple QuickDraw        @tab     @tab  X @tab fourcc: qdrw | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-10-13 04:37:06 +00:00
										 |  |  | @item Duck TrueMotion v2     @tab     @tab  X @tab fourcc: TM20 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +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 | 
					
						
							| 
									
										
										
										
											2004-08-14 15:08:09 +00:00
										 |  |  | @item TechSmith Camtasia     @tab     @tab  X @tab fourcc: TSCC | 
					
						
							| 
									
										
										
										
											2004-09-16 03:31:41 +00:00
										 |  |  | @item IBM Ultimotion         @tab     @tab  X @tab fourcc: ULTI | 
					
						
							| 
									
										
										
										
											2004-10-27 04:30:48 +00:00
										 |  |  | @item Miro VideoXL           @tab     @tab  X @tab fourcc: VIXL | 
					
						
							| 
									
										
										
										
											2004-11-17 03:45:53 +00:00
										 |  |  | @item QPEG                   @tab     @tab  X @tab fourccs: QPEG, Q1.0, Q1.1 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item LOCO                   @tab     @tab  X @tab | 
					
						
							|  |  |  | @item Winnov WNV1            @tab     @tab  X @tab | 
					
						
							| 
									
										
										
										
											2005-04-03 05:02:08 +00:00
										 |  |  | @item Autodesk Animator Studio Codec  @tab     @tab  X @tab fourcc: AASC | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item Fraps FPS1             @tab     @tab  X @tab | 
					
						
							| 
									
										
										
										
											2006-01-14 01:30:54 +00:00
										 |  |  | @item CamStudio              @tab     @tab  X @tab fourcc: CSCD | 
					
						
							| 
									
										
										
										
											2006-02-12 06:49:40 +00:00
										 |  |  | @item American Laser Games Video  @tab    @tab X @tab Used in games like Mad Dog McCree | 
					
						
							| 
									
										
										
										
											2006-02-12 08:53:29 +00:00
										 |  |  | @item ZMBV                   @tab     @tab  X @tab | 
					
						
							| 
									
										
										
										
											2006-02-17 03:17:42 +00:00
										 |  |  | @item AVS Video              @tab     @tab  X @tab Video encoding used by the Creature Shock game. | 
					
						
							| 
									
										
										
										
											2006-03-21 17:27:47 +00:00
										 |  |  | @item Smacker Video          @tab     @tab  X @tab Video encoding used in Smacker. | 
					
						
							| 
									
										
										
										
											2006-03-27 22:22:50 +00:00
										 |  |  | @item RTjpeg                 @tab     @tab  X @tab Video encoding used in NuppelVideo files. | 
					
						
							| 
									
										
										
										
											2006-04-07 16:59:57 +00:00
										 |  |  | @item KMVC                   @tab     @tab  X @tab Codec used in Worms games. | 
					
						
							| 
									
										
										
										
											2006-09-05 04:37:14 +00:00
										 |  |  | @item VMware Video           @tab     @tab  X @tab Codec used in videos captured by VMware. | 
					
						
							| 
									
										
										
										
											2006-10-11 17:14:02 +00:00
										 |  |  | @item Cin Video              @tab     @tab  X @tab Codec used in Delphine Software games. | 
					
						
							| 
									
										
										
										
											2006-10-12 12:02:58 +00:00
										 |  |  | @item Tiertex Seq Video      @tab     @tab  X @tab Codec used in DOS CDROM FlashBack game. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @end multitable | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item MPEG audio layer 2     @tab  IX  @tab  IX | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @item MPEG audio layer 1/3   @tab IX   @tab  IX | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab MP3 encoding is supported through the external library LAME. | 
					
						
							| 
									
										
										
										
											2004-07-11 21:07:49 +00:00
										 |  |  | @item AC3                    @tab  IX  @tab  IX | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab liba52 is used internally for decoding. | 
					
						
							| 
									
										
										
										
											2002-12-21 20:43:40 +00:00
										 |  |  | @item Vorbis                 @tab  X   @tab  X | 
					
						
							| 
									
										
										
										
											2002-11-19 20:09:45 +00:00
										 |  |  | @item WMA V1/V2              @tab      @tab X | 
					
						
							| 
									
										
										
										
											2004-07-01 00:45:16 +00:00
										 |  |  | @item AAC                    @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Supported through the external library libfaac/libfaad. | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in some Sega Saturn console games. | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  | @item Duck DK4 IMA ADPCM     @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in some Sega Saturn console games. | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  | @item Westwood Studios IMA ADPCM @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in Sega Dreamcast games. | 
					
						
							| 
									
										
										
										
											2004-02-03 04:27:17 +00:00
										 |  |  | @item Electronic Arts ADPCM  @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in various EA titles. | 
					
						
							| 
									
										
										
										
											2004-10-12 12:47:49 +00:00
										 |  |  | @item Creative ADPCM         @tab      @tab X | 
					
						
							| 
									
										
										
										
											2006-02-16 00:09:23 +00:00
										 |  |  | @tab 16 -> 4, 8 -> 4, 8 -> 3, 8 -> 2 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2004-07-11 21:07:49 +00:00
										 |  |  | @item RADnet                 @tab X    @tab IX | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Real low bitrate AC3 codec, liba52 is used for decoding. | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  | @item AMR-NB                 @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Supported through an external library. | 
					
						
							| 
									
										
										
										
											2003-09-28 20:34:11 +00:00
										 |  |  | @item AMR-WB                 @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in Quake III, Jedi Knight 2, other computer games. | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  | @item Interplay MVE DPCM     @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in various Interplay computer games. | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  | @item Xan DPCM               @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in Origin's Wing Commander IV AVI files. | 
					
						
							| 
									
										
										
										
											2004-09-28 03:09:49 +00:00
										 |  |  | @item Sierra Online DPCM     @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab Used in Sierra Online game audio files. | 
					
						
							| 
									
										
										
										
											2003-10-12 21:16:31 +00:00
										 |  |  | @item Apple MACE 3           @tab      @tab X | 
					
						
							|  |  |  | @item Apple MACE 6           @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-02-26 14:30:04 +00:00
										 |  |  | @item FLAC lossless audio    @tab      @tab X | 
					
						
							|  |  |  | @item Shorten lossless audio @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-03-06 07:00:24 +00:00
										 |  |  | @item Apple lossless audio   @tab      @tab X | 
					
						
							|  |  |  | @tab QuickTime fourcc 'alac' | 
					
						
							| 
									
										
										
										
											2004-08-21 19:59:40 +00:00
										 |  |  | @item FFmpeg Sonic           @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @tab experimental lossy/lossless codec | 
					
						
							| 
									
										
										
										
											2005-10-18 20:16:43 +00:00
										 |  |  | @item Qdesign QDM2           @tab      @tab X | 
					
						
							|  |  |  | @tab there are still some distortions | 
					
						
							| 
									
										
										
										
											2005-12-09 16:56:16 +00:00
										 |  |  | @item Real COOK              @tab      @tab X | 
					
						
							|  |  |  | @tab All versions except 5.1 are supported | 
					
						
							| 
									
										
										
										
											2006-01-05 22:33:41 +00:00
										 |  |  | @item DSP Group TrueSpeech   @tab      @tab X | 
					
						
							| 
									
										
										
										
											2006-02-12 13:58:16 +00:00
										 |  |  | @item True Audio (TTA)       @tab      @tab X | 
					
						
							| 
									
										
										
										
											2006-03-21 17:27:47 +00:00
										 |  |  | @item Smacker Audio          @tab      @tab X | 
					
						
							| 
									
										
										
										
											2006-09-26 03:41:51 +00:00
										 |  |  | @item WavPack Audio          @tab      @tab X | 
					
						
							| 
									
										
										
										
											2006-10-11 17:14:02 +00:00
										 |  |  | @item Cin Audio              @tab      @tab X | 
					
						
							|  |  |  | @tab Codec used in Delphine Software games. | 
					
						
							| 
									
										
										
										
											2006-10-30 13:48:48 +00:00
										 |  |  | @item Intel Music Coder      @tab      @tab X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @end multitable | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @code{I} means that an integer-only version is available, too (ensures high | 
					
						
							|  |  |  | performance on systems without hardware floating point support). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  | @chapter Platform Specific information | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Linux | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | FFmpeg should be compiled with at least GCC 2.95.3. GCC 3.2 is the | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-02-04 11:43:22 +00:00
										 |  |  | BSD make will not build FFmpeg, you need to install and use GNU Make | 
					
						
							|  |  |  | (@file{gmake}). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  | @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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item If you want to test the FFplay, also download | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  | the MinGW development library of SDL 1.2.x | 
					
						
							|  |  |  | (@file{SDL-devel-1.2.x-mingw32.tar.gz}) from | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @url{http://www.libsdl.org}. Unpack it in a temporary directory, and | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  | 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-09-29 00:42:45 +00:00
										 |  |  | @item Extract the current version of FFmpeg. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  | @item Start the MSYS shell (file @file{msys.bat}). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item Change to the FFmpeg directory and follow | 
					
						
							|  |  |  |  the instructions of how to compile FFmpeg (file | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  | @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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +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} to the place | 
					
						
							|  |  |  | you launch @file{ffplay} from. | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  | @end itemize | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | Notes: | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  | @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} | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | must be copied to the FFmpeg directory in order to build the | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  | installer. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item By using @code{./configure --enable-shared} when configuring FFmpeg, | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  | you can build @file{avcodec.dll} and @file{avformat.dll}. With | 
					
						
							|  |  |  | @code{make install} you install the FFmpeg DLLs and the associated | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | headers in @file{Program Files/FFmpeg}. | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item Visual C++ compatibility: If you used @code{./configure --enable-shared} | 
					
						
							|  |  |  | when configuring FFmpeg, FFmpeg tries to use the Microsoft Visual | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  | C++ @code{lib} tool to build @code{avcodec.lib} and | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @code{avformat.lib}. With these libraries you can link your Visual C++ | 
					
						
							| 
									
										
										
										
											2005-09-28 21:18:11 +00:00
										 |  |  | code directly with the FFmpeg DLLs (see below). | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @end itemize | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-09-28 21:18:11 +00:00
										 |  |  | @subsection Visual C++ compatibility | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | FFmpeg will not compile under Visual C++ -- and it has too many | 
					
						
							|  |  |  | dependencies on the GCC compiler to make a port viable. However, | 
					
						
							|  |  |  | if you want to use the FFmpeg libraries in your own applications, | 
					
						
							|  |  |  | you can still compile those applications using Visual C++. An | 
					
						
							|  |  |  | important restriction to this is that you have to use the | 
					
						
							|  |  |  | dynamically linked versions of the FFmpeg libraries (i.e. the | 
					
						
							|  |  |  | DLLs), and you have to make sure that Visual-C++-compatible | 
					
						
							|  |  |  | import libraries are created during the FFmpeg build process. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This description of how to use the FFmpeg libraries with Visual C++ is | 
					
						
							|  |  |  | based on Visual C++ 2005 Express Edition Beta 2. If you have a different | 
					
						
							|  |  |  | version, you might have to modify the procedures slightly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Here are the step-by-step instructions for building the FFmpeg libraries | 
					
						
							|  |  |  | so they can be used with Visual C++: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @enumerate | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item Install Visual C++ (if you haven't done so already). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item Install MinGW and MSYS as described above. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item Add a call to @file{vcvars32.bat} (which sets up the environment | 
					
						
							|  |  |  | variables for the Visual C++ tools) as the first line of | 
					
						
							|  |  |  | @file{msys.bat}. The standard location for @file{vcvars32.bat} is | 
					
						
							|  |  |  | @file{C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat}, | 
					
						
							|  |  |  | and the standard location for @file{msys.bat} is | 
					
						
							|  |  |  | @file{C:\msys\1.0\msys.bat}. If this corresponds to your setup, add the | 
					
						
							|  |  |  | following line as the first line of @file{msys.bat}: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @code{call "C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item Start the MSYS shell (file @file{msys.bat}) and type @code{link.exe}. | 
					
						
							|  |  |  | If you get a help message with the command line options of @code{link.exe}, | 
					
						
							|  |  |  | this means your environment variables are set up correctly, the | 
					
						
							|  |  |  | Microsoft linker is on the path and will be used by FFmpeg to | 
					
						
							|  |  |  | create Visual-C++-compatible import libraries. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-09-29 00:42:45 +00:00
										 |  |  | @item Extract the current version of FFmpeg and change to the FFmpeg directory. | 
					
						
							| 
									
										
										
										
											2005-09-28 21:18:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @item Type the command | 
					
						
							| 
									
										
										
										
											2006-02-03 01:15:00 +00:00
										 |  |  | @code{./configure --enable-shared --disable-static --enable-memalign-hack} | 
					
						
							|  |  |  | to configure and, if that didn't produce any errors, | 
					
						
							|  |  |  | type @code{make} to build FFmpeg. | 
					
						
							| 
									
										
										
										
											2005-09-28 21:18:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @item The subdirectories @file{libavformat}, @file{libavcodec}, and | 
					
						
							|  |  |  | @file{libavutil} should now contain the files @file{avformat.dll}, | 
					
						
							|  |  |  | @file{avformat.lib}, @file{avcodec.dll}, @file{avcodec.lib}, | 
					
						
							|  |  |  | @file{avutil.dll}, and @file{avutil.lib}, respectively. Copy the three | 
					
						
							|  |  |  | DLLs to your System32 directory (typically @file{C:\Windows\System32}). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @end enumerate | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | And here is how to use these libraries with Visual C++: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @enumerate | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item Create a new console application ("File / New / Project") and then | 
					
						
							|  |  |  | select "Win32 Console Application". On the appropriate page of the | 
					
						
							|  |  |  | Application Wizard, uncheck the "Precompiled headers" option. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item Write the source code for your application, or, for testing, just | 
					
						
							|  |  |  | copy the code from an existing sample application into the source file | 
					
						
							|  |  |  | that Visual C++ has already created for you. (Note that your source | 
					
						
							|  |  |  | filehas to have a @code{.cpp} extension; otherwise, Visual C++ won't | 
					
						
							|  |  |  | compile the FFmpeg headers correctly because in C mode, it doesn't | 
					
						
							|  |  |  | recognize the @code{inline} keyword.)  For example, you can copy | 
					
						
							|  |  |  | @file{output_example.c} from the FFmpeg distribution (but you will | 
					
						
							|  |  |  | have to make minor modifications so the code will compile under | 
					
						
							|  |  |  | C++, see below). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item Open the "Project / Properties" dialog box. In the "Configuration" | 
					
						
							|  |  |  | combo box, select "All Configurations" so that the changes you make will | 
					
						
							|  |  |  | affect both debug and release builds. In the tree view on the left hand | 
					
						
							|  |  |  | side, select "C/C++ / General", then edit the "Additional Include | 
					
						
							|  |  |  | Directories" setting to contain the complete paths to the | 
					
						
							|  |  |  | @file{libavformat}, @file{libavcodec}, and @file{libavutil} | 
					
						
							|  |  |  | subdirectories of your FFmpeg directory. Note that the directories have | 
					
						
							|  |  |  | to be separated using semicolons. Now select "Linker / General" from the | 
					
						
							|  |  |  | tree view and edit the "Additional Library Directories" setting to | 
					
						
							|  |  |  | contain the same three directories. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item Still in the "Project / Properties" dialog box, select "Linker / Input" | 
					
						
							|  |  |  | from the tree view, then add the files @file{avformat.lib}, | 
					
						
							|  |  |  | @file{avcodec.lib}, and @file{avutil.lib} to the end of the "Additional | 
					
						
							|  |  |  | Dependencies". Note that the names of the libraries have to be separated | 
					
						
							|  |  |  | using spaces. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-12 00:48:42 +00:00
										 |  |  | @item Now, select "C/C++ / Code Generation" from the tree view. Select | 
					
						
							| 
									
										
										
										
											2005-09-28 21:18:11 +00:00
										 |  |  | "Debug" in the "Configuration" combo box. Make sure that "Runtime | 
					
						
							|  |  |  | Library" is set to "Multi-threaded Debug DLL". Then, select "Release" in | 
					
						
							|  |  |  | the "Configuration" combo box and make sure that "Runtime Library" is | 
					
						
							|  |  |  | set to "Multi-threaded DLL". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item Click "OK" to close the "Project / Properties" dialog box and build | 
					
						
							|  |  |  | the application. Hopefully, it should compile and run cleanly. If you | 
					
						
							|  |  |  | used @file{output_example.c} as your sample application, you will get a | 
					
						
							|  |  |  | few compiler errors, but they are easy to fix. The first type of error | 
					
						
							|  |  |  | occurs because Visual C++ doesn't allow an @code{int} to be converted to | 
					
						
							|  |  |  | an @code{enum} without a cast. To solve the problem, insert the required | 
					
						
							|  |  |  | casts (this error occurs once for a @code{CodecID} and once for a | 
					
						
							|  |  |  | @code{CodecType}).  The second type of error occurs because C++ requires | 
					
						
							|  |  |  | the return value of @code{malloc} to be cast to the exact type of the | 
					
						
							|  |  |  | pointer it is being assigned to. Visual C++ will complain that, for | 
					
						
							|  |  |  | example, @code{(void *)} is being assigned to @code{(uint8_t *)} without | 
					
						
							|  |  |  | an explicit cast. So insert an explicit cast in these places to silence | 
					
						
							|  |  |  | the compiler. The third type of error occurs because the @code{snprintf} | 
					
						
							|  |  |  | library function is called @code{_snprintf} under Visual C++.  So just | 
					
						
							|  |  |  | add an underscore to fix the problem. With these changes, | 
					
						
							|  |  |  | @file{output_example.c} should compile under Visual C++, and the | 
					
						
							|  |  |  | resulting executable should produce valid video files. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @end enumerate | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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/}. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Then configure FFmpeg with the following options: | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  | @example | 
					
						
							|  |  |  | ./configure --enable-mingw32 --cross-prefix=i386-mingw32msvc- | 
					
						
							|  |  |  | @end example | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  | (you can change the cross-prefix according to the prefix chosen for the | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  | MinGW tools). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Then you can easily test FFmpeg with Wine | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  | (@url{http://www.winehq.com/}). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-08-07 11:49:34 +00:00
										 |  |  | @subsection Compilation under Cygwin | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Cygwin works very much like Unix. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Just install your Cygwin with all the "Base" packages, plus the | 
					
						
							|  |  |  | following "Devel" ones: | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | binutils, gcc-core, make, subversion | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Do not install binutils-20060709-1 (they are buggy on shared builds); | 
					
						
							|  |  |  | use binutils-20050610-1 instead. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Then run | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ./configure --enable-static --disable-shared | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | to make a static build or | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ./configure --enable-shared --disable-static | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | to build shared libraries. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you want to build FFmpeg with additional libraries, download Cygwin | 
					
						
							|  |  |  | "Devel" packages for Ogg and Vorbis from any Cygwin packages repository | 
					
						
							|  |  |  | and/or SDL, xvid, faac, faad2 packages from Cygwin Ports, | 
					
						
							|  |  |  | (@url{http://cygwinports.dotsrc.org/}). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @subsection Crosscompilation for Windows under Cygwin | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | With Cygwin you can create Windows binaries that don't need the cygwin1.dll. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Just install your Cygwin as explained before, plus these additional | 
					
						
							|  |  |  | "Devel" packages: | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | gcc-mingw-core, mingw-runtime, mingw-zlib | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | and add some special flags to your configure invocation. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For a static build run | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ./configure --enable-mingw32 --enable-memalign-hack --enable-static --disable-shared --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | and for a build with shared libraries | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ./configure --enable-mingw32 --enable-memalign-hack --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  | @section BeOS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The configure script should guess the configuration itself. | 
					
						
							|  |  |  | Networking support is currently not finished. | 
					
						
							|  |  |  | errno issues fixed by Andrew Bachmann. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Old stuff: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-09-29 08:04:45 +00:00
										 |  |  | François Revol - revol at free dot fr - April 2002 | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | The configure script should guess the configuration itself, | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | however I still didn't test building on the net_server version of BeOS. | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | FFserver is broken (needs poll() implementation). | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | There are still issues with errno codes, which are negative in BeOS, and | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | that FFmpeg negates when returning. This ends up turning errors into | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2006-08-02 16:50:53 +00:00
										 |  |  | @itemize @bullet | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @item libavcodec is the library containing the codecs (both encoding and | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | decoding). Look at @file{libavcodec/apiexample.c} to see how to use it. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | @item libavformat is the library containing the file format handling (mux and | 
					
						
							|  |  |  | demux code for several formats). Look at @file{ffplay.c} to use it in a | 
					
						
							| 
									
										
										
										
											2003-07-22 13:08:52 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | to send your patches to the FFmpeg mailing list. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-14 13:07:23 +00:00
										 |  |  | @node Coding Rules | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @section Coding Rules | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | FFmpeg is programmed in the ISO C90 language with a few additional | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2004-12-23 21:33:53 +00:00
										 |  |  | compound literals (@samp{x = (struct s) @{ 17, 23 @};}) | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  | @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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | All code must compile with GCC 2.95 and GCC 3.3. Currently, FFmpeg also | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | additional C99 features or GCC extensions. Especially watch out for: | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  | GCC statement expressions (@samp{(x = (@{ int y = 4; y; @})}). | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  | @end itemize | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-01-29 23:43:29 +00:00
										 |  |  | Indent size is 4. | 
					
						
							| 
									
										
										
										
											2006-02-16 00:48:29 +00:00
										 |  |  | The presentation is the one specified by 'indent -i4 -kr -nut'. | 
					
						
							| 
									
										
										
										
											2006-01-29 23:43:29 +00:00
										 |  |  | The TAB character is forbidden outside of Makefiles as is any | 
					
						
							|  |  |  | form of trailing whitespace. Commits containing either will be | 
					
						
							| 
									
										
										
										
											2006-06-09 09:55:04 +00:00
										 |  |  | rejected by the Subversion repository. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Main priority in FFmpeg is simplicity and small code size (=less | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | bugs). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Comments: Use the JavaDoc/Doxygen | 
					
						
							|  |  |  | format (see examples below) so that code documentation | 
					
						
							|  |  |  | can be generated automatically. All nontrivial functions should have a comment | 
					
						
							|  |  |  | above them explaining what the function does, even if it's just one sentence. | 
					
						
							|  |  |  | All structures and their member variables should be documented, too. | 
					
						
							| 
									
										
										
										
											2004-07-15 12:54:38 +00:00
										 |  |  | @example | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2005-08-16 18:08:29 +00:00
										 |  |  |  * @@file mpeg.c | 
					
						
							|  |  |  |  * MPEG codec. | 
					
						
							|  |  |  |  * @@author ... | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2004-07-15 12:54:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2005-08-16 18:08:29 +00:00
										 |  |  |  * Summary sentence. | 
					
						
							|  |  |  |  * more text ... | 
					
						
							|  |  |  |  * ... | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2004-12-23 21:33:53 +00:00
										 |  |  | typedef struct Foobar@{ | 
					
						
							| 
									
										
										
										
											2005-08-16 18:08:29 +00:00
										 |  |  |     int var1; /**< var1 description */ | 
					
						
							|  |  |  |     int var2; ///< var2 description | 
					
						
							|  |  |  |     /** var3 description */ | 
					
						
							|  |  |  |     int var3; | 
					
						
							| 
									
										
										
										
											2004-12-23 21:33:53 +00:00
										 |  |  | @} Foobar; | 
					
						
							| 
									
										
										
										
											2004-07-15 12:54:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2005-08-16 18:08:29 +00:00
										 |  |  |  * Summary sentence. | 
					
						
							|  |  |  |  * more text ... | 
					
						
							|  |  |  |  * ... | 
					
						
							|  |  |  |  * @@param my_parameter description of my_parameter | 
					
						
							|  |  |  |  * @@return return value description | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2004-07-15 12:54:38 +00:00
										 |  |  | int myfunc(int my_parameter) | 
					
						
							|  |  |  | ... | 
					
						
							|  |  |  | @end example | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | fprintf and printf are forbidden in libavformat and libavcodec, | 
					
						
							| 
									
										
										
										
											2004-03-13 21:16:18 +00:00
										 |  |  | please use av_log() instead. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-09 09:55:04 +00:00
										 |  |  | @section Development Policy | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @enumerate | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |    You must not commit code which breaks FFmpeg! (Meaning unfinished but | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |    enabled code which breaks compilation or compiles but does not work or | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |    breaks the regression tests) | 
					
						
							|  |  |  |    You can commit unfinished stuff (for testing etc), but it must be disabled | 
					
						
							|  |  |  |    (#ifdef etc) by default so it does not interfere with other developers' | 
					
						
							|  |  |  |    work. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |    You don't have to over-test things. If it works for you, and you think it | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |    should work for others, then commit. If your code has problems | 
					
						
							|  |  |  |    (portability, triggers compiler bugs, unusual environment etc) they will be | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |    reported and eventually fixed. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | @item | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |    Do not commit unrelated changes together, split them into self-contained | 
					
						
							|  |  |  |    pieces. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    Do not change behavior of the program (renaming options etc) without | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |    first discussing it on the ffmpeg-devel mailing list. Do not remove | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |    functionality from the code. Just improve! | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |    Note: Redundant code can be removed. | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  | @item | 
					
						
							|  |  |  |    Do not commit changes to the build system (Makefiles, configure script) | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |    which change behavior, defaults etc, without asking first. The same | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |    applies to compiler warning fixes, trivial looking fixes and to code | 
					
						
							|  |  |  |    maintained by other developers. We usually have a reason for doing things | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |    the way we do. Send your changes as patches to the ffmpeg-devel mailing | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |    list, and if the code maintainers say OK, you may commit. This does not | 
					
						
							|  |  |  |    apply to files you wrote and/or maintain. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    We refuse source indentation and other cosmetic changes if they are mixed | 
					
						
							|  |  |  |    with functional changes, such commits will be rejected and removed. Every | 
					
						
							|  |  |  |    developer has his own indentation style, you should not change it. Of course | 
					
						
							|  |  |  |    if you (re)write something, you can use your own style, even though we would | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |    prefer if the indentation throughout FFmpeg was consistent (Many projects | 
					
						
							|  |  |  |    force a given indentation style - we don't.). If you really need to make | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |    indentation changes (try to avoid this), separate them strictly from real | 
					
						
							|  |  |  |    changes. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-23 21:33:53 +00:00
										 |  |  |    NOTE: If you had to put if()@{ .. @} over a large (> 5 lines) chunk of code, | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  |    then either do NOT change the indentation of the inner part within (don't | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |    move it to the right)! or do so in a separate commit | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  | @item | 
					
						
							|  |  |  |    Always fill out the commit log message. Describe in a few lines what you | 
					
						
							|  |  |  |    changed and why. You can refer to mailing list postings if you fix a | 
					
						
							|  |  |  |    particular bug. Comments such as "fixed!" or "Changed it." are unacceptable. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    If you apply a patch by someone else, include the name and email address in | 
					
						
							| 
									
										
										
										
											2006-06-09 09:55:04 +00:00
										 |  |  |    the log message. Since the ffmpeg-cvslog mailing list is publicly | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |    archived you should add some SPAM protection to the email address. Send an | 
					
						
							|  |  |  |    answer to ffmpeg-devel (or wherever you got the patch from) saying that | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |    you applied the patch. | 
					
						
							|  |  |  | @item | 
					
						
							| 
									
										
										
										
											2006-07-07 10:32:45 +00:00
										 |  |  |     Do NOT commit to code actively maintained by others without permission. | 
					
						
							|  |  |  |     Send a patch to ffmpeg-devel instead. If noone answers within a reasonable | 
					
						
							|  |  |  |     timeframe (12h for build failures and security fixes, 3 days small changes, | 
					
						
							|  |  |  |     1 week for big patches) then commit your patch if you think it's OK. | 
					
						
							|  |  |  |     Also note, the maintainer can simply ask for more time to review! | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  | @item | 
					
						
							| 
									
										
										
										
											2006-06-09 09:55:04 +00:00
										 |  |  |     Subscribe to the ffmpeg-cvslog mailing list. The diffs of all commits | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |     are sent there and reviewed by all the other developers. Bugs and possible | 
					
						
							|  |  |  |     improvements or general questions regarding commits are discussed there. We | 
					
						
							|  |  |  |     expect you to react if problems with your code are uncovered. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Update the documentation if you change behavior or add features. If you are | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |     unsure how best to do this, send a patch to ffmpeg-devel, the documentation | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |     maintainer(s) will review and commit your stuff. | 
					
						
							| 
									
										
										
										
											2005-01-12 01:20:18 +00:00
										 |  |  | @item | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |     Never write to unallocated memory, never write over the end of arrays, | 
					
						
							|  |  |  |     always check values read from some untrusted source before using them | 
					
						
							|  |  |  |     as array index or other risky things. | 
					
						
							| 
									
										
										
										
											2005-12-26 09:16:44 +00:00
										 |  |  | @item | 
					
						
							|  |  |  |     Remember to check if you need to bump versions for the specific libav | 
					
						
							| 
									
										
										
										
											2005-12-29 18:13:58 +00:00
										 |  |  |     parts (libavutil, libavcodec, libavformat) you are changing. You need | 
					
						
							| 
									
										
										
										
											2005-12-26 09:16:44 +00:00
										 |  |  |     to change the version integer and the version string. | 
					
						
							|  |  |  |     Incrementing the first component means no backward compatibility to | 
					
						
							| 
									
										
										
										
											2006-08-30 11:01:12 +00:00
										 |  |  |     previous versions (e.g. removal of a function from the public API). | 
					
						
							| 
									
										
										
										
											2005-12-26 09:16:44 +00:00
										 |  |  |     Incrementing the second component means backward compatible change | 
					
						
							| 
									
										
										
										
											2006-08-30 11:01:12 +00:00
										 |  |  |     (e.g. addition of a function to the public API). | 
					
						
							| 
									
										
										
										
											2005-12-26 09:16:44 +00:00
										 |  |  |     Incrementing the third component means a noteworthy binary compatible | 
					
						
							|  |  |  |     change (e.g. encoder bug fix that matters for the decoder). | 
					
						
							| 
									
										
										
										
											2006-01-14 01:31:23 +00:00
										 |  |  | @item | 
					
						
							| 
									
										
										
										
											2006-01-14 14:46:26 +00:00
										 |  |  |     If you add a new codec, remember to update the changelog, add it to | 
					
						
							|  |  |  |     the supported codecs table in the documentation and bump the second | 
					
						
							|  |  |  |     component of the @file{libavcodec} version number appropriately. If | 
					
						
							|  |  |  |     it has a fourcc, add it to @file{libavformat/avienc.c}, even if it | 
					
						
							|  |  |  |     is only a decoder. | 
					
						
							| 
									
										
										
										
											2004-12-23 21:33:53 +00:00
										 |  |  | @end enumerate | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | We think our rules are not too hard. If you have comments, contact us. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note, these rules are mostly borrowed from the MPlayer project. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @section Submitting patches | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-14 13:07:23 +00:00
										 |  |  | First, (@pxref{Coding Rules}) above if you didn't yet. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 :-) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-16 19:48:45 +00:00
										 |  |  | Also please do not submit patches which contain several unrelated changes. | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | Split them into individual self-contained patches; this makes reviewing | 
					
						
							| 
									
										
										
										
											2005-07-16 08:28:38 +00:00
										 |  |  | them much easier. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | encoding which ensures that the patch won't be trashed during | 
					
						
							| 
									
										
										
										
											2005-12-17 18:14:38 +00:00
										 |  |  | transmission) to the ffmpeg-devel mailing list, see | 
					
						
							| 
									
										
										
										
											2006-06-09 09:55:57 +00:00
										 |  |  | @url{http://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel} | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-27 15:21:17 +00:00
										 |  |  | It also helps quite a bit if you tell us what the patch does (for example | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | 'replaces lrint by lrintf'), and why (for example '*BSD isn't C99 compliant | 
					
						
							| 
									
										
										
										
											2003-12-27 15:21:17 +00:00
										 |  |  | and has no lrint()') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | We reply to all submitted patches and either apply or reject with some | 
					
						
							|  |  |  | explanation why, but sometimes we are quite busy so it can take a week or two. | 
					
						
							| 
									
										
										
										
											2004-09-08 10:22:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | @section Regression tests | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-09 09:55:04 +00:00
										 |  |  | Before submitting a patch (or committing to the repository), you should at least | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | test that you did not break anything. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | The regression tests build a synthetic video stream and a synthetic | 
					
						
							|  |  |  | audio stream. These are then encoded and 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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | result file. A 'diff' is launched to compare the reference results and | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | the result file. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | The regression tests then go on to test the FFserver code with a | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  | 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | Run 'make fulltest' to test all the codecs, formats and FFserver. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  | [Of course, some patches may change the results of the regression tests. In | 
					
						
							|  |  |  | this case, the reference results of the regression tests shall be modified | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  | accordingly]. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @bye |