have to set the audio recording levels correctly with a
standard mixer.
+@section X11 grabbing
+
+FFmpeg can grab the X11 display.
+
+@example
+ffmpeg -f x11grab -vd x11:0.0 /tmp/out.mpg
+@end example
+
+0.0 is display.screen number of your X11 server, same as
+the DISPLAY environment variable.
+
+@example
+ffmpeg -f x11grab -vd x11:0.0+10,20 /tmp/out.mpg
+@end example
+
+0.0 is display.screen number of your X11 server, same as the DISPLAY environment
+variable. 10 is the x-offset and 20 the y-offset for the grabbing.
+
@section Video and Audio file format conversion
* FFmpeg can use any supported file format and protocol as input:
If no input file is given, audio/video grabbing is done.
As a general rule, options are applied to the next specified
-file. For example, if you give the @option{-b 64k} option, it sets the video
-bitrate of the next file. The format option may be needed for raw input
-files.
+file. Therefore, order is important, and you can have the same
+option on the command line multiple times. Each occurrence is
+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.
By default, FFmpeg tries to convert as losslessly as possible: It
uses the same audio and video parameters for the outputs as the one
@item -h
Show help.
+@item -version
+Show version.
+
@item -formats
Show available formats, codecs, protocols, ...
Set the recording time in seconds.
@code{hh:mm:ss[.xxx]} syntax is also supported.
+@item -fs limit_size
+Set the file size limit.
+
@item -ss position
Seek to given time position in seconds.
@code{hh:mm:ss[.xxx]} syntax is also supported.
+@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.
+
@item -title string
Set the title.
+@item -timestamp time
+Set the timestamp.
+
@item -author string
Set the author.
@item -comment string
Set the comment.
+@item -album string
+Set the album.
+
@item -track number
Set the track.
@item -year number
Set the year.
+@item -v verbose
+Control amount of logging.
+
@item -target type
-Specify target file type ("vcd", "svcd", "dvd", "dv", "pal-vcd",
+Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd",
"ntsc-svcd", ... ). All the format options (bitrate, codecs,
buffer sizes) are then set automatically. You can just type:
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
@end example
-@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.
+@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.
@end table
@table @option
@item -b bitrate
Set the video bitrate in bit/s (default = 200 kb/s).
+@item -vframes number
+Set the number of video frames to record.
@item -r fps
-Set frame rate (default = 25).
+Set frame rate (Hz value, fraction or abbreviation), (default = 25).
@item -s size
-Set frame size. The format is @samp{wxh} (default = 160x128).
+Set frame size. The format is @samp{wxh} (ffserver default = 160x128, ffmpeg default = same as source).
The following abbreviations are recognized:
@table @samp
@item sqcif
@item -passlogfile file
Set two pass logfile name to @var{file}.
+@item -newvideo
+Add a new video stream to the current output stream.
+
@end table
@section Advanced Video Options
@table @option
+@item -pix_fmt format
+Set pixel format.
@item -g gop_size
Set the group of pictures size.
@item -intra
Use only intra frames.
+@item -vdt n
+Discard threshold.
@item -qscale q
-Use fixed video quantiser scale (VBR).
+Use fixed video quantizer scale (VBR).
@item -qmin q
-minimum video quantiser scale (VBR)
+minimum video quantizer scale (VBR)
@item -qmax q
-maximum video quantiser scale (VBR)
+maximum video quantizer scale (VBR)
@item -qdiff q
-maximum difference between the quantiser scales (VBR)
+maximum difference between the quantizer scales (VBR)
@item -qblur blur
-video quantiser scale blur (VBR)
+video quantizer scale blur (VBR)
@item -qcomp compression
-video quantiser scale compression (VBR)
+video quantizer scale compression (VBR)
@item -lmin lambda
minimum video lagrange factor (VBR)
@item -vhook module
Insert video processing @var{module}. @var{module} contains the module
name and its parameters separated by spaces.
+@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".
@end table
@section Audio Options
@table @option
+@item -aframes number
+Set the number of audio frames to record.
@item -ar freq
Set the audio sampling frequency (default = 44100 Hz).
@item -ab bitrate
@item -acodec codec
Force audio codec to @var{codec}. Use the @code{copy} special value to
specify that the raw codec data must be copied as is.
+@item -newaudio
+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..).
+
+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
+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
+@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.
@end table
@section Audio/Video grab options
Set DV1394 grab.
@item -ad device
Set audio device (e.g. @file{/dev/dsp}).
+@item -grab format
+Request grabbing using.
+@item -gd device
+Set grab device.
@end table
@section Advanced options
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.
+@item -map_meta_data outfile:infile
+Set meta data information of outfile from infile.
@item -debug
Print specific debug info.
@item -benchmark
Add timings for benchmarking.
-@item -hex
+@item -dump
Dump each input packet.
+@item -hex
+When dumping packets, also dump the payload.
@item -bitexact
Only use bit exact algorithms (for codec testing).
@item -ps size
Set packet size in bits.
@item -re
Read input at native frame rate. Mainly used to simulate a grab device.
-@item -loop
+@item -loop_input
Loop over the input stream. Currently it works only for image
streams. This option is used for automatic FFserver testing.
@item -loop_output number_of_times
Repeatedly loop output for formats that support looping such as animated GIF
(0 will loop the output infinitely).
+@item -threads count
+Thread count.
@item -vsync parameter
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
@end itemize
+
+@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
+
+
@chapter Supported File Formats and Codecs
You can use the @code{-formats} option to have an exhaustive list.
@tab Multimedia format used by the Creature Shock game.
@item Smacker @tab @tab X
@tab Multimedia format used by many games.
-@item GXF @tab @tab X
+@item GXF @tab X @tab X
+@tab General eXchange Format SMPTE 360M, used by Thomson Grass Valley playout servers.
+@item CIN @tab @tab X
+@tab Multimedia format used by Delphine Software games.
+@item MXF @tab @tab X
+@tab Material eXchange Format SMPTE 377M, used by D-Cinema, broadcast industry.
+@item SEQ @tab @tab X
+@tab Tiertex .seq files used in the DOS CDROM version of the game Flashback.
@end multitable
@code{X} means that encoding (resp. decoding) is 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.
+@item Targa @tab @tab X @tab Targa (.TGA) image format.
+@item TIFF @tab @tab X @tab Only 24 bit/pixel images are supported.
@item SGI @tab X @tab X @tab SGI RGB image format
@end multitable
@item Supported Codec @tab Encoding @tab Decoding @tab Comments
@item MPEG-1 video @tab X @tab X
@item MPEG-2 video @tab X @tab X
-@item MPEG-4 @tab X @tab X @tab also known as DivX4/5
+@item MPEG-4 @tab X @tab X
@item MSMPEG4 V1 @tab X @tab X
@item MSMPEG4 V2 @tab X @tab X
-@item MSMPEG4 V3 @tab X @tab X @tab also known as DivX3
+@item MSMPEG4 V3 @tab X @tab X
@item WMV7 @tab X @tab X
@item WMV8 @tab X @tab X @tab not completely working
+@item WMV9 @tab @tab X @tab not completely working
+@item VC1 @tab @tab X
@item H.261 @tab X @tab X
@item H.263(+) @tab X @tab X @tab also known as RealVideo 1.0
@item H.264 @tab @tab X
@item Sorenson Video 3 @tab @tab X @tab fourcc: SVQ3
@item On2 VP3 @tab @tab X @tab still experimental
@item On2 VP5 @tab @tab X @tab fourcc: VP50
-@item On2 VP6 @tab @tab X @tab fourcc: VP62
-@item Theora @tab @tab X @tab still experimental
+@item On2 VP6 @tab @tab X @tab fourcc: VP60,VP61,VP62
+@item Theora @tab X @tab X @tab still experimental
@item Intel Indeo 3 @tab @tab X
@item FLV @tab X @tab X @tab Sorenson H.263 used in Flash
-@item Flash Screen Video @tab @tab X @tab fourcc: FSV1
+@item Flash Screen Video @tab X @tab X @tab fourcc: FSV1
@item ATI VCR1 @tab @tab X @tab fourcc: VCR1
@item ATI VCR2 @tab @tab X @tab fourcc: VCR2
@item Cirrus Logic AccuPak @tab @tab X @tab fourcc: CLJR
@item Fraps FPS1 @tab @tab X @tab
@item CamStudio @tab @tab X @tab fourcc: CSCD
@item American Laser Games Video @tab @tab X @tab Used in games like Mad Dog McCree
-@item ZMBV @tab @tab X @tab
+@item ZMBV @tab X @tab X @tab Encoder works only on PAL8
@item AVS Video @tab @tab X @tab Video encoding used by the Creature Shock game.
@item Smacker Video @tab @tab X @tab Video encoding used in Smacker.
@item RTjpeg @tab @tab X @tab Video encoding used in NuppelVideo files.
@item KMVC @tab @tab X @tab Codec used in Worms games.
@item VMware Video @tab @tab X @tab Codec used in videos captured by VMware.
+@item Cin Video @tab @tab X @tab Codec used in Delphine Software games.
+@item Tiertex Seq Video @tab @tab X @tab Codec used in DOS CDROM FlashBack game.
@end multitable
@code{X} means that encoding (resp. decoding) is supported.
@item AC3 @tab IX @tab IX
@tab liba52 is used internally for decoding.
@item Vorbis @tab X @tab X
-@tab Supported through the external library libvorbis.
-@item WMA V1/V2 @tab @tab X
+@item WMA V1/V2 @tab X @tab X
@item AAC @tab X @tab X
@tab Supported through the external library libfaac/libfaad.
@item Microsoft ADPCM @tab X @tab X
@item True Audio (TTA) @tab @tab X
@item Smacker Audio @tab @tab X
@item WavPack Audio @tab @tab X
+@item Cin Audio @tab @tab X
+@tab Codec used in Delphine Software games.
+@item Intel Music Coder @tab @tab X
+@item Musepack @tab @tab X
+@tab Only SV7 is supported
@end multitable
@code{X} means that encoding (resp. decoding) is supported.
@chapter Platform Specific information
-@section Linux
-
-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
-features only found in GCC 3.2.
-
@section BSD
BSD make will not build FFmpeg, you need to install and use GNU Make
@section Windows
+To get help and instructions for using FFmpeg under Windows, check out
+the FFmpeg Windows Help Forum at
+@url{http://arrozcru.no-ip.org/ffmpeg/}.
+
@subsection Native Windows compilation
@itemize
./configure --enable-mingw32 --enable-memalign-hack --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
@end example
-@section Mac OS X
-
@section BeOS
The configure script should guess the configuration itself.