Overview
FFmpeg is a very powerful command line tool to manipulate and transcode videos. It has so many features and options that it is overwhelming. Here are the most often used commands.
Often used commands
# Extract a section of a video # Note: This only copy the 1st stream of video, audio, subtitle. If your video contains # multiple audios or subtitles, the your have to use -map. ffmpeg -y -i INPUT.mp4 -ss 00:11:53 -to 00:23:11 -c copy OUTPUT.mp4 # Convert video from 1 format to another ffmpeg -i INPUT.rmvb -c:v libx264 -b:a 32k OUTPUT.mp4 # Preserve audio and video quality but use a different container(i.e from MOV to MKV) ffmpeg -i INPUT.mov -vcodec copy -acodec copy OUTPUT.mkv # List supported video and audio codecs ffmpeg -codecs # Get the info of video ffmpeg -i INPUT.avi #Convert wav file to mp3 file. ffmpeg -i filename.wav filename.mp3 # Strange behaviour when running ffmpeg in a loop. It reads standard INPUT. To turn it off. ffmpeg ... < /dev/null ffmpeg -nostdin
Handling different streams
# Probe video file. ffmpeg -i INPUT.mkv #INPUT #0, matroska,webm, from 'INPUT.mkv': # Metadata: # Duration: 00:00:05.00, start: 0.000000, bitrate: 106 kb/s # Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv444p, # Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp (default) # Stream #0:2: Audio: vorbis, 44100 Hz, mono, fltp (default) # Stream #0:3: Audio: vorbis, 44100 Hz, mono, fltp (default) # Stream #0:4: Subtitle: ass (default) # Extract streams. ffmpeg -i INPUT.mkv \ -map 0:v -c copy video.mkv \ -map 0:a:0 -c copy audio0.oga \ -map 0:a:1 -c copy audio1.oga \ -map 0:a:2 -c copy audio2.oga \ -map 0:s -c copy subtitles.ass # In this case, the example above is the same as: ffmpeg -i INPUT.mkv \ -map 0:0 -c copy video.mkv \ -map 0:1 -c copy audio0.oga \ -map 0:2 -c copy audio1.oga \ -map 0:3 -c copy audio2.oga \ -map 0:4 -c copy subtitles.ass
Convert VOB
ffmpeg \ -analyzeduration 500M -probesize 500M \ -i INPUT.VOB \ -map 0:1 -map 0:2 -map 0:3 -map 0:4 -map 0:5 -map 0:6 \ -metadata:s:a:0 language=ita -metadata:s:a:0 title="Italian stereo" \ -metadata:s:a:1 language=eng -metadata:s:a:1 title="English stereo" \ -metadata:s:s:0 language=ita -metadata:s:s:0 title="Italian" \ -metadata:s:s:1 language=eng -metadata:s:s:1 title="English" \ -codec:v libx264 -crf 21 \ -codec:a libmp3lame -qscale:a 2 \ -codec:s copy \ OUTPUT.mkv < /dev/null