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).
The following abbreviations are recognized:
@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 quantizer scale (VBR).
@item -qmin q
@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
@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.
@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 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 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 AAC @tab X @tab X
@tab Supported through the external library libfaac/libfaad.
./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.