Skip to content
Snippets Groups Projects
ffmpeg.texi 41.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • @item
    You can output to a raw YUV420P file:
    
    
    @example
    ffmpeg -i mydivx.avi hugefile.yuv
    @end example
    
    
    @item
    You can set several input files and output files:
    
    
    @example
    ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
    @end example
    
    Converts the audio file a.wav and the raw YUV video file a.yuv
    to MPEG file a.mpg.
    
    
    @item
    You can also do audio and video conversions at the same time:
    
    
    @example
    ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
    @end example
    
    Converts a.wav to MPEG audio at 22050 Hz sample rate.
    
    
    @item
    You can encode to several formats at the same time and define a
    
    mapping from input stream to output streams:
    
    @example
    
    ffmpeg -i /tmp/a.wav -map 0:a -b:a 64k /tmp/a.mp2 -map 0:a -b:a 128k /tmp/b.mp2
    
    @end example
    
    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.
    
    
    ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi
    
    @end example
    
    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-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 @code{ffmpeg -formats}.
    
    
    @item
    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.
    
    When importing an image sequence, -i also supports expanding shell-like
    wildcard patterns (globbing) internally. To lower the chance of interfering
    with your actual file names and the shell's glob expansion, you are required
    to activate glob meta characters by prefixing them with a single @code{%}
    character, like in @code{foo-%*.jpeg}, @code{foo-%?%?%?.jpeg} or
    @code{foo-00%[234%]%*.jpeg}.
    If your filename actually contains a character sequence of a @code{%} character
    followed by a glob character, you must double the @code{%} character to escape
    it. Imagine your files begin with @code{%?-foo-}, then you could use a glob
    pattern like @code{%%?-foo-%*.jpeg}. For input patterns that could be both a
    printf or a glob pattern, ffmpeg will assume it is a glob pattern.
    
    @item
    You can put many streams of the same type in the output:
    
    ffmpeg -i test1.avi -i test2.avi -map 0.3 -map 0.2 -map 0.1 -map 0.0 -c copy test12.nut
    
    The resulting output file @file{test12.avi} will contain first four streams from
    the input file in reverse order.
    
    @item
    To force CBR video output:
    @example
    
    ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
    
    @end example
    
    @item
    The four options lmin, lmax, mblmin and 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
    
    @include syntax.texi
    
    Stefano Sabatini's avatar
    Stefano Sabatini committed
    @include eval.texi
    
    @include decoders.texi
    
    @include encoders.texi
    
    @include demuxers.texi
    
    Stefano Sabatini's avatar
    Stefano Sabatini committed
    @include muxers.texi
    
    @include indevs.texi
    @include outdevs.texi
    
    Stefano Sabatini's avatar
    Stefano Sabatini committed
    @include protocols.texi
    
    @include bitstream_filters.texi
    
    Anton Khirnov's avatar
    Anton Khirnov committed
    @include metadata.texi
    
    @settitle ffmpeg video converter
    
    ffplay(1), ffprobe(1), ffserver(1) and the FFmpeg HTML documentation
    
    See git history