Note that you must activate the right video source and channel before
launching FFmpeg with any TV viewer such as xawtv
-(@url{http://bytesex.org/xawtv/}) by Gerd Knorr. You also
+(@url{http://linux.bytesex.org/xawtv/}) by Gerd Knorr. You also
have to set the audio recording levels correctly with a
standard mixer.
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
@end example
-Converts a.wav to MPEG audio at 22050Hz sample rate.
+Converts a.wav to MPEG audio at 22050 Hz sample rate.
* You can encode to several formats at the same time and define a
mapping from input stream to output streams:
to get the desired audio language.
NOTE: To see the supported input formats, use @code{ffmpeg -formats}.
+
+* You can extract images from a video, or create a video from many images:
+
+For extracting images from a video:
+@example
+ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
+@end example
+
+This will extract one video frame per second from the video and will
+output them in files named @file{foo-001.jpeg}, @file{foo-002.jpeg},
+etc. Images will be rescaled to fit the new WxH values.
+
+If you want to extract just a limited number of frames, you can use the
+above command in combination with the -vframes or -t option, or in
+combination with -ss to start extracting from a certain point in time.
+
+For creating a video from many images:
+@example
+ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
+@end example
+
+The syntax @code{foo-%03d.jpeg} specifies to use a decimal number
+composed of three digits padded with zeroes to express the sequence
+number. It is the same syntax supported by the C printf function, but
+only formats accepting a normal integer are suitable.
+
+* You can put many streams of the same type in the output:
+
+@example
+ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio
+@end example
+
+In addition to the first video and audio streams, the resulting
+output file @file{test12.avi} will contain the second video
+and the second audio stream found in the input streams list.
+
+The @code{-newvideo}, @code{-newaudio} and @code{-newsubtitle}
+options have to be specified immediately after the name of the output
+file to which you want to add them.
@c man end
@chapter Invocation
Show version.
@item -formats
-Show available formats, codecs, protocols, ...
+Show available formats, codecs, bitstream filters, protocols, and frame size and frame rate abbreviations.
+
+The fields preceding the format and codec names have the following meanings:
+@table @samp
+@item D
+Decoding available
+@item E
+Encoding available
+@item V/A/S
+Video/audio/subtitle codec
+@item S
+Codec supports slices
+@item D
+Codec supports direct rendering
+@item T
+Codec can handle input truncated at random locations instead of only at frame boundaries
+@end table
@item -f @var{fmt}
Force format.
352x288
@item 4cif
704x576
+@item 16cif
+1408x1152
@item qqvga
160x120
@item qvga
Use same video quality as source (implies VBR).
@item -pass @var{n}
-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.
+Select the pass number (1 or 2). It is used to do two-pass
+video encoding. The statistics of the video are recorded in the first
+pass into a log file (see also the option -passlogfile),
+and in the second pass that log file is used to generate the video
+at the exact requested bitrate.
+On pass 1, you may just deactivate audio and set output to null,
+examples for Windows and Unix:
+@example
+ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y NUL
+ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null
+@end example
-@item -passlogfile @var{file}
-Set two pass logfile name to @var{file}.
+@item -passlogfile @var{prefix}
+Set two-pass log file name prefix to @var{prefix}, the default file name
+prefix is ``ffmpeg2pass''. The complete file name will be
+@file{PREFIX-N.log}, where N is a number specific to the output
+stream.
@item -newvideo
Add a new video stream to the current output stream.
Dump video coding statistics to @file{vstats_HHMMSS.log}.
@item -vstats_file @var{file}
Dump video coding statistics to @var{file}.
-@item -vhook @var{module}
-Insert video processing @var{module}. @var{module} contains the module
-name and its parameters separated by spaces.
@item -top @var{n}
top=1/bottom=0/auto=-1 field first
@item -dc @var{precision}
@item -bitexact
Only use bit exact algorithms (for codec testing).
@item -ps @var{size}
-Set packet size in bits.
+Set RTP payload size in bytes.
@item -re
Read input at native frame rate. Mainly used to simulate a grab device.
@item -loop_input
Set the initial demux-decode delay.
@end table
+@section Preset files
+
+A preset file contains a sequence of @var{option}=@var{value} pairs,
+one for each line, specifying a sequence of options which would be
+awkward to specify on the command line. Lines starting with the hash
+('#') character are ignored and are used to provide comments. Check
+the @file{ffpresets} directory in the FFmpeg source tree for examples.
+
+Preset files are specified with the @code{vpre}, @code{apre} and
+@code{spre} options. The options specified in a preset file are
+applied to the currently selected codec of the same type as the preset
+option.
+
+The argument passed to the preset options identifies the preset file
+to use according to the following rules.
+
+First ffmpeg searches for a file named @var{arg}.ffpreset in the
+directories @file{$HOME/.ffmpeg}, and in the datadir defined at
+configuration time (usually @file{PREFIX/share/ffmpeg}) in that
+order. For example, if the argument is @code{libx264-max}, it will
+search for the file @file{libx264-max.ffpreset}.
+
+If no such file is found, then ffmpeg will search for a file named
+@var{codec_name}-@var{arg}.ffpreset in the above-mentioned
+directories, where @var{codec_name} is the name of the codec to which
+the preset file options will be applied. For example, if you select
+the video codec with @code{-vcodec libx264} and use @code{-vpre max},
+then it will search for the file @file{libx264-max.ffpreset}.
+
+Finally, if the above rules failed and the argument specifies an
+absolute pathname, ffmpeg will search for that filename. This way you
+can specify the absolute and complete filename of the preset file, for
+example @file{./ffpresets/libx264-max.ffpreset}.
+
@node FFmpeg formula evaluator
@section FFmpeg formula evaluator
The following unary operators are available: @code{+}, @code{-},
@code{(...)}.
+The following statements are available: @code{ld}, @code{st},
+@code{while}.
+
The following functions are available:
@table @var
@item sinh(x)
@item sin(x)
@item cos(x)
@item tan(x)
+@item atan(x)
+@item asin(x)
+@item acos(x)
@item exp(x)
@item log(x)
+@item abs(x)
@item squish(x)
@item gauss(x)
-@item abs(x)
+@item mod(x, y)
@item max(x, y)
@item min(x, y)
+@item eq(x, y)
+@item gte(x, y)
@item gt(x, y)
+@item lte(x, y)
@item lt(x, y)
-@item eq(x, y)
@item bits2qp(bits)
@item qp2bits(qp)
@end table
is about as good as JPEG compression).
@item To have very low audio bitrates, reduce the sampling frequency
-(down to 22050 kHz for MPEG audio, 22050 or 11025 for AC3).
+(down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3).
@item To have a constant quality (but a variable bitrate), use the option
'-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst