Man Linux: Main Page and Category List


       ffmpeg - FFmpeg video converter


       ffmpeg [[infile options][-i infile]]... {[outfile options] outfile}...


       As a general rule, options are applied to the next specified 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:

               ffmpeg -i input.avi -b 64k output.avi

       * To force the frame rate of the output file to 24 fps:

               ffmpeg -i input.avi -r 24 output.avi

       * To force the frame rate of the input file (valid for raw formats
       only) to 1 fps and the frame rate of the output file to 24 fps:

               ffmpeg -r 1 -i input.m2v -r 24 output.avi

       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
       specified for the inputs.


   Generic options
       These options are shared amongst the ff* tools.

       -L  Show license.

       -h, -?, -help, --help
           Show help.

           Show version.

           Show available formats.

           The fields preceding the format names have the following meanings:

           D   Decoding available

           E   Encoding available

           Show available codecs.

           The fields preceding the codec names have the following meanings:

           D   Decoding available

           E   Encoding available

               Video/audio/subtitle codec

           S   Codec supports slices

           D   Codec supports direct rendering

           T   Codec can handle input truncated at random locations instead of
               only at frame boundaries

           Show available bitstream filters.

           Show available protocols.

           Show available libavfilter filters.

           Show available pixel formats.

       -loglevel loglevel
           Set the logging level used by the library.  loglevel is a number or
           a string containing one of the following values:


   Main options
       -f fmt
           Force format.

       -i filename
           input file name

       -y  Overwrite output files.

       -t duration
           Restrict the transcoded/captured video sequence to the duration
           specified in seconds.  "hh:mm:ss[.xxx]" syntax is also supported.

       -fs limit_size
           Set the file size limit.

       -ss position
           Seek to given time position in seconds.  "hh:mm:ss[.xxx]" syntax is
           also supported.

       -itsoffset offset
           Set the input time offset in seconds.  "[-]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.

       -timestamp time
           Set the timestamp.

       -metadata key=value
           Set a metadata key/value pair.

           For example, for setting the title in the output file:

                   ffmpeg -i in.avi -metadata title="my title" out.flv

       -v number
           Set the logging verbosity level.

       -target type
           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 /tmp/vcd.mpg

           Nevertheless you can specify additional options as long as you know
           they do not conflict with the standard, as in:

                   ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg

       -dframes number
           Set the number of data frames to record.

       -scodec codec
           Force subtitle codec (’copy’ to copy stream).

           Add a new subtitle stream to the current output stream.

       -slang code
           Set the ISO 639 language code (3 letters) of the current subtitle

   Video Options
       -b bitrate
           Set the video bitrate in bit/s (default = 200 kb/s).

       -vframes number
           Set the number of video frames to record.

       -r fps
           Set frame rate (Hz value, fraction or abbreviation), (default =

       -s size
           Set frame size. The format is wxh (ffserver default = 160x128,
           ffmpeg default = same as source).  The following abbreviations are



           cif 352x288





           vga 640x480


           xga 1024x768















           cga 320x200

           ega 640x350




       -aspect aspect
           Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777).

       -croptop size
           Set top crop band size (in pixels).

       -cropbottom size
           Set bottom crop band size (in pixels).

       -cropleft size
           Set left crop band size (in pixels).

       -cropright size
           Set right crop band size (in pixels).

       -padtop size
           Set top pad band size (in pixels).

       -padbottom size
           Set bottom pad band size (in pixels).

       -padleft size
           Set left pad band size (in pixels).

       -padright size
           Set right pad band size (in pixels).

       -padcolor hex_color
           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)).

       -vn Disable video recording.

       -bt tolerance
           Set video bitrate tolerance (in bits, default 4000k).  Has a
           minimum value of: (target_bitrate/target_framerate).  In 1-pass
           mode, bitrate tolerance specifies how far ratecontrol is willing to
           deviate from the target average bitrate value. This is not related
           to min/max bitrate. Lowering tolerance too much has an adverse
           effect on quality.

       -maxrate bitrate
           Set max video bitrate (in bit/s).  Requires -bufsize to be set.

       -minrate bitrate
           Set min video bitrate (in bit/s).  Most useful in setting up a CBR

                   ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v

           It is of little use elsewise.

       -bufsize size
           Set video buffer verifier buffer size (in bits).

       -vcodec codec
           Force video codec to codec. Use the "copy" special value to tell
           that the raw codec data must be copied as is.

           Use same video quality as source (implies VBR).

       -pass n
           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:

                   ffmpeg -i -vcodec libxvid -pass 1 -an -f rawvideo -y NUL
                   ffmpeg -i -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null

       -passlogfile prefix
           Set two-pass log file name prefix to prefix, the default file name
           prefix is ‘‘ffmpeg2pass’’. The complete file name will be
           PREFIX-N.log, where N is a number specific to the output stream.

           Add a new video stream to the current output stream.

       -vlang code
           Set the ISO 639 language code (3 letters) of the current video

   Advanced Video Options
       -pix_fmt format
           Set pixel format. Use ’list’ as parameter to show all the supported
           pixel formats.

       -sws_flags flags
           Set SwScaler flags.

       -g gop_size
           Set the group of pictures size.

           Use only intra frames.

       -vdt n
           Discard threshold.

       -qscale q
           Use fixed video quantizer scale (VBR).

       -qmin q
           minimum video quantizer scale (VBR)

       -qmax q
           maximum video quantizer scale (VBR)

       -qdiff q
           maximum difference between the quantizer scales (VBR)

       -qblur blur
           video quantizer scale blur (VBR) (range 0.0 - 1.0)

       -qcomp compression
           video quantizer scale compression (VBR) (default 0.5).  Constant of
           ratecontrol equation. Recommended range for default rc_eq: 0.0-1.0

       -lmin lambda
           minimum video lagrange factor (VBR)

       -lmax lambda
           max video lagrange factor (VBR)

       -mblmin lambda
           minimum macroblock quantizer scale (VBR)

       -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’

                   ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext

       -rc_init_cplx complexity
           initial complexity for single pass encoding

       -b_qfactor factor
           qp factor between P- and B-frames

       -i_qfactor factor
           qp factor between P- and I-frames

       -b_qoffset offset
           qp offset between P- and B-frames

       -i_qoffset offset
           qp offset between P- and I-frames

       -rc_eq equation
           Set rate control equation (default = "tex^qComp").

       -rc_override override
           rate control override for specific intervals

       -me_method method
           Set motion estimation method to method.  Available methods are
           (from lowest to best quality):

               Try just the (0, 0) vector.

               (default method)

               exhaustive search (slow and marginally better than epzs)

       -dct_algo algo
           Set DCT algorithm to algo. Available values are:

           0   FF_DCT_AUTO (default)

           1   FF_DCT_FASTINT

           2   FF_DCT_INT

           3   FF_DCT_MMX

           4   FF_DCT_MLIB

           5   FF_DCT_ALTIVEC

       -idct_algo algo
           Set IDCT algorithm to algo. Available values are:

           0   FF_IDCT_AUTO (default)

           1   FF_IDCT_INT

           2   FF_IDCT_SIMPLE

           3   FF_IDCT_SIMPLEMMX

           4   FF_IDCT_LIBMPEG2MMX

           5   FF_IDCT_PS2

           6   FF_IDCT_MLIB

           7   FF_IDCT_ARM

           8   FF_IDCT_ALTIVEC

           9   FF_IDCT_SH4

           10  FF_IDCT_SIMPLEARM

       -er n
           Set error resilience to n.

           1   FF_ER_CAREFUL (default)

           2   FF_ER_COMPLIANT

           3   FF_ER_AGGRESSIVE

           4   FF_ER_VERY_AGGRESSIVE

       -ec bit_mask
           Set error concealment to bit_mask. bit_mask is a bit mask of the
           following values:

           1   FF_EC_GUESS_MVS (default = enabled)

           2   FF_EC_DEBLOCK (default = enabled)

       -bf frames
           Use ’frames’ B-frames (supported for MPEG-1, MPEG-2 and MPEG-4).

       -mbd mode
           macroblock decision

           0   FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in

           1   FF_MB_DECISION_BITS: Choose the one which needs the fewest

           2   FF_MB_DECISION_RD: rate distortion

           Use four motion vector by macroblock (MPEG-4 only).

           Use data partitioning (MPEG-4 only).

       -bug param
           Work around encoder bugs that are not auto-detected.

       -strict strictness
           How strictly to follow the standards.

           Enable Advanced intra coding (h263+).

           Enable Unlimited Motion Vector (h263+)

           Deinterlace pictures.

           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 -deinterlace, but deinterlacing
           introduces losses.

           Calculate PSNR of compressed frames.

           Dump video coding statistics to vstats_HHMMSS.log.

       -vstats_file file
           Dump video coding statistics to file.

       -top n
           top=1/bottom=0/auto=-1 field first

       -dc precision

       -vtag fourcc/tag
           Force video tag/fourcc.

           Show QP histogram.

       -vbsf bitstream_filter
           Bitstream filters available are "dump_extra", "remove_extra",
           "noise", "h264_mp4toannexb", "imxdump", "mjpegadump".

                   ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264

   Audio Options
       -aframes number
           Set the number of audio frames to record.

       -ar freq
           Set the audio sampling frequency (default = 44100 Hz).

       -ab bitrate
           Set the audio bitrate in bit/s (default = 64k).

       -aq q
           Set the audio quality (codec-specific, VBR).

       -ac channels
           Set the number of audio channels (default = 1).

       -an Disable audio recording.

       -acodec codec
           Force audio codec to codec. Use the "copy" special value to specify
           that the raw codec data must be copied as is.

           Add a new audio track to the output file. If you want to specify
           parameters, do so before "-newaudio" ("-acodec", "-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 "-map"
           as usual.


                   ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio

       -alang code
           Set the ISO 639 language code (3 letters) of the current audio

   Advanced Audio options:
       -atag fourcc/tag
           Force audio tag/fourcc.

       -absf bitstream_filter
           Bitstream filters available are "dump_extra", "remove_extra",
           "noise", "mp3comp", "mp3decomp".

   Subtitle options:
       -scodec codec
           Force subtitle codec (’copy’ to copy stream).

           Add a new subtitle stream to the current output stream.

       -slang code
           Set the ISO 639 language code (3 letters) of the current subtitle

       -sn Disable subtitle recording.

       -sbsf bitstream_filter
           Bitstream filters available are "mov2textsub", "text2movsub".

                   ffmpeg -i -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt

   Audio/Video grab options
       -vc channel
           Set video grab channel (DV1394 only).

       -tvstd standard
           Set television standard (NTSC, PAL (SECAM)).

           Synchronize read on input.

   Advanced options
       -map input_stream_id[:sync_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.  sync_stream_id if specified sets the input stream to sync

       -map_meta_data outfile:infile
           Set meta data information of outfile from infile.

           Print specific debug info.

           Show benchmarking information at the end of an encode.  Shows CPU
           time used and maximum memory consumption.  Maximum memory
           consumption is not supported on all systems, it will usually
           display as 0 if not supported.

           Dump each input packet.

           When dumping packets, also dump the payload.

           Only use bit exact algorithms (for codec testing).

       -ps size
           Set RTP payload size in bytes.

       -re Read input at native frame rate. Mainly used to simulate a grab

           Loop over the input stream. Currently it works only for image
           streams. This option is used for automatic FFserver testing.

       -loop_output number_of_times
           Repeatedly loop output for formats that support looping such as
           animated GIF (0 will loop the output infinitely).

       -threads count
           Thread count.

       -vsync parameter
           Video sync method.  0   Each frame is passed with its timestamp
           from the demuxer to the muxer 1   Frames will be duplicated and
           dropped to achieve exactly the requested
               constant framerate.  2   Frames are passed through with their
           timestamp or dropped so as to prevent
               2 frames from having the same timestamp -1  Chooses between 1
           and 2 depending on muxer capabilities. This is the default method.

           With -map you can select from which stream the timestamps should be
           taken. You can leave either video or audio unchanged and sync the
           remaining stream(s) to the unchanged one.

       -async samples_per_second
           Audio sync method. "Stretches/squeezes" the audio stream to match
           the timestamps, 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

           Copy timestamps from input to output.

           Finish encoding when the shortest input stream ends.

           Timestamp discontinuity delta threshold.

       -muxdelay seconds
           Set the maximum demux-decode delay.

       -muxpreload seconds
           Set the initial demux-decode delay.

   Preset files
       A preset file contains a sequence of option=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
       ffpresets directory in the FFmpeg source tree for examples.

       Preset files are specified with the "vpre", "apre", "spre", and "fpre"
       options. The "fpre" option takes the filename of the preset instead of
       a preset name as input and can be used for any kind of codec. For the
       "vpre", "apre", and "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 "vpre", "apre", and "spre" preset options
       identifies the preset file to use according to the following rules:

       First ffmpeg searches for a file named arg.ffpreset in the directories
       $FFMPEG_DATADIR (if set), and $HOME/.ffmpeg, and in the datadir defined
       at configuration time (usually PREFIX/share/ffmpeg) in that order. For
       example, if the argument is "libx264-max", it will search for the file

       If no such file is found, then ffmpeg will search for a file named
       codec_name-arg.ffpreset in the above-mentioned directories, where
       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
       "-vcodec libx264" and use "-vpre max", then it will search for the file

       @anchor{FFmpeg formula evaluator}

   FFmpeg formula evaluator
       When evaluating a rate control string, FFmpeg uses an internal formula

       The following binary operators are available: "+", "-", "*", "/", "^".

       The following unary operators are available: "+", "-", "(...)".

       The following statements are available: "ld", "st", "while".

       The following functions are available:

       mod(x, y)
       max(x, y)
       min(x, y)
       eq(x, y)
       gte(x, y)
       gt(x, y)
       lte(x, y)
       lt(x, y)

       The following constants are available:



   Video and Audio grabbing
       FFmpeg can grab video and audio from devices given that you specify the
       input format and device.

               ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg

       Note that you must activate the right video source and channel before
       launching FFmpeg with any TV viewer such as xawtv
       (<>) by Gerd Knorr. You also have to set
       the audio recording levels correctly with a standard mixer.

   X11 grabbing
       FFmpeg can grab the X11 display.

               ffmpeg -f x11grab -s cif -i :0.0 /tmp/out.mpg

       0.0 is display.screen number of your X11 server, same as the DISPLAY
       environment variable.

               ffmpeg -f x11grab -s cif -i :0.0+10,20 /tmp/out.mpg

       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

   Video and Audio file format conversion
       * FFmpeg can use any supported file format and protocol as input:


       * You can use YUV files as input:

               ffmpeg -i /tmp/test%d.Y /tmp/out.mpg

       It will use the files:

               /tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
               /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...

       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 -s option if
       FFmpeg cannot guess it.

       * You can input from a raw YUV420P file:

               ffmpeg -i /tmp/test.yuv /tmp/out.avi

       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 horizontal resolution.

       * You can output to a raw YUV420P file:

               ffmpeg -i mydivx.avi hugefile.yuv

       * You can set several input files and output files:

               ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg

       Converts the audio file a.wav and the raw YUV video file a.yuv to MPEG
       file a.mpg.

       * You can also do audio and video conversions at the same time:

               ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2

       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:

               ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0

       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
       stream, in the order of the definition of output streams.

       * You can transcode decrypted VOBs:

               ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi

       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 "--enable-libmp3lame" to
       configure.  The mapping is particularly useful for DVD transcoding to
       get the desired audio language.

       NOTE: To see the supported input formats, use "ffmpeg -formats".

       * You can extract images from a video, or create a video from many

       For extracting images from a video:

               ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg

       This will extract one video frame per second from the video and will
       output them in files named foo-001.jpeg, 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:

               ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi

       The syntax "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:

               ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio

       In addition to the first video and audio streams, the resulting output
       file test12.avi will contain the second video and the second audio
       stream found in the input streams list.

       The "-newvideo", "-newaudio" and "-newsubtitle" options have to be
       specified immediately after the name of the output file to which you
       want to add them.


       ffserver(1), ffplay(1) and the HTML documentation of ffmpeg.


       Fabrice Bellard