• Here are some commands to get informations about the nature of a video:
    $ avprobe ./video.avi
    $ mplayer -frames 0 -identify ./video.avi
    $ tcprobe -i ./video.avi
    $ ffmpeg -i ./video.avi
    $ file ./video.avi
    

libAV

  • Re-encode a yuv422p video into a lossless h264, but this time in yuv420p:

    $ avconv -i yuv422p.mkv -c:v libx264 -pix_fmt yuv420p -preset veryslow -qp 0 yuv420p.mkv
    
  • Re-encode a lossless h264 video with a lower bitrate:

    $ avconv -i lossless.mkv -b:v 45M -preset veryfast lower-bitrate.mkv
    

FFmpeg

  • Remux a flash video to an mp4 container without transcoding:

    $ ffmpeg -vcodec copy -acodec copy -i inpout.flv output.mp4
    
  • Concatenate a series of videos and transcode the audio output to a flac file. This only works with certain multimedia container (MPEG-1, MPEG-2 PS, DV):

    $ cat M2U01802.MPG M2U01803.MPG M2U01804.MPG | ffmpeg -i - -acodec flac output.flac
    
  • Remove the first 16 seconds of video and change container to Matroska:

    $ ffmpeg -ss 16 -i ./MVI_8763.MOV -vcodec copy -acodec copy ./MVI_8763.mkv
    
  • Extract the first frame of a video (great to generate image preview):

    $ ffmpeg -i video.mov -r 1  -t 00:00:01 -f image2 images%05d.png
    
  • Extract a frame every 10 seconds:

    $ ffmpeg -i video.mov -f image2 -r 1/10 preview-%04d.png
    
  • Transcode the video stream to the lossless HuffYUV codec:

    $ ffmpeg -i ./MVI_1714.MOV -vcodec huffyuv -sameq ./MVI_1714-lossless.avi
    
  • Produce a dummy 10 seconds video of a solid pink background at 1080p/60fps:

    $ ffmpeg -f lavfi -i "color=color=pink:size=1920x1080" -r 60 -t 10 -c:v libx264 dummy.mp4
    

Vlc

  • Transcode the first video stream found in a m3u playlist to a 384 kbps MPEG-2 video and 48 kHz Vorbis audio, and serve the resulting stream ina Ogg container to http://localhost:8888. To save bandwidth we reduce by two the size of the video:
    $ vlc -vvv http://mafreebox.freebox.fr/freeboxtv/playlist.m3u --sout '#transcode{vcodec=mp2v,vb=384,scale=0.5,acodec=vorbis,ab=48,channels=1}:standard{access=http,mux=ogg,url=:8888}' -I ncurses 2> /dev/null
    

Transcode

  • Merge multiple video into one:

    $ avimerge -i part1.avi part2.avi -o big-file.avi
    
  • Extract the raw subtitle stream. The -a 0x21 option correspond to the subtitle stream’s hexadecimal number (= 0x20 + id of the stream):

    $ tccat -i /space/st-tng/dic1/ -T 1 -L | tcextract -x ps1 -t vob -a 0x22 > subs-en
    
  • List export video codecs:

    $ transcode -i . -y ffmpeg -F list
    
  • Batch stabilization script:

    SEARCH_FOLDER="/home/kevin/project/raw_sources"
    DEST_FOLDER="/home/kevin/project/stabilized"
    
    for FILE_PATH in $(find "$SEARCH_FOLDER" -name "*.mp4")
    do
        FILE_NAME=$(basename "$FILE_PATH")
    
        STAB_FILE="$DEST_FOLDER/$FILE_NAME.trf"
        if [ ! -e "$STAB_FILE" ]; then
            # vis.stab's deshake/stabilize documentation:
            # https://github.com/georgmartius/vid.stab/blob/36173857bfc0fa111983a5934f2cc6322969e928/transcode/filter_deshake.c#L75-L106
            transcode -J stabilize=result="$STAB_FILE" -i "$FILE_PATH" -y null,null -o dummy
        fi
    
        FINAL_FILE="$DEST_FOLDER/$FILE_NAME-stabilized.mkv"
    
        if [ ! -e "$FINAL_FILE" ]; then
    
            # Create a stabilized stream of JPG files at 100% quality.
            FRAME_BASEPATH="$DEST_FOLDER/$FILE_NAME.stabilized_"
            # vid.stab's transform documentation:
            # https://github.com/georgmartius/vid.stab/blob/36173857bfc0fa111983a5934f2cc6322969e928/src/transform.h#L122-L149
            transcode -J transform=input="$STAB_FILE" -i "$FILE_PATH" -y jpg,null -F 100 -o "$FRAME_BASEPATH"
    
            # Convert to a lossless h264 video in 4:2:0 color space.
            FRAME_RATE=$(tcprobe -i "$FILE_PATH" | grep "frame rate:" | cut -d ':' -f 2 | cut -d ' ' -f 3)
            avconv -r $FRAME_RATE -i "$FRAME_BASEPATH%06d.jpg" -c:v libx264 -pix_fmt yuv420p -preset veryfast -qp 0 "$FINAL_FILE"
    
            find "$DEST_FOLDER" -name "$FRAME_BASENAME*.jpg" -delete
    
        fi
    
    done
    

Mplayer / Mencoder

  • Change the aspect ratio of a film for the playback. Standard aspect ratio are : 1.33 (4:3), 1.66 (1.66:1), 1.77 (16:9) and 2.35 (2.35:1):

    $ mplayer -aspect 2:1 ./video.avi
    
  • Play the video with subtitles:

    $ mplayer -sub ./subtitle_file.txt ./video.avi
    
  • This will extract audio track no. 128, downmix the AC3 sound to PCM and write the results to file.wav:

    $ mplayer -vo null -hardframedrop -aid 128 -ao pcm -aofile file.wav dvd://1
    
  • This will extract the audio, convert it to PCM and write the resulting wave file to audio.wav:

    $ mplayer -vo null -hardframedrop -ao pcm:file=audio.wav myvideo.avi
    
  • Show all subtitles streams:

    $ mplayer -vo null -ao null -frames 0 -v 2 dvd://1 >&1 | grep sid
    
  • Create a rotated copy of the file.avi video (rotate=1 : clockwise ; rotate=2 : anti-clockwise):

    $ mencoder -vop rotate=2 -oac pcm -ovc lavc ./source.avi -o ./dest.avi
    
  • Preview a video composed of all jpeg files from the current folder at 15fps (mplayer only support jpeg, png, tga and sgi formats):

    $ mplayer "mf://*.jpg" -mf fps=15
    
  • Create a 15fps video from all jpeg files of the current folder:

    $ mencoder "mf://*.jpg" -mf fps=15 -ovc lavc -o ./dest.avi
    
  • Encode a SVCD to AVI file:

    $ mencoder -oac lavc -ovc lavc vcd://1 -o ./svcd.avi
    
  • Transcode video to raw format (be carefull: usually the output video got annoying audio delay):

    $ mencoder -oac pcm -ovc raw -ofps 25 -noskip ./video.wmv -o ./video.avi
    
  • Encode a video using the default mpeg4 codec at 400 kbps for video and mp3 codec at constant 32 kbps bitrate for audio:

    $ mencoder -oac mp3lame -lameopts cbr:preset=32 -ovc lavc -lavcopts vbitrate=400 in.avi -o out.avi
    
  • Enhance the sharpness of the video:

    $ mplayer video.avi -vf smartblur=.6:-.5:0,unsharp=l5x5:.8:c5x5:.4
    
  • Cut a video to keep the first 5.4 seconds:

    $ mencoder big-file.avi -ss 0 -endpos 5.4 -ovc copy -oac copy -o cutted.avi
    
  • Cut a video to keep everything exept the first 5.4 seconds:

    $ mencoder big-file.avi -ss 5.4 -ovc copy -oac copy -o cutted.avi
    
  • Show all mplayer filter list:

    $ mplayer -vf help
    
  • Get help of a particular filter (eq2 in this example):

    $ mplayer -vf eq2=help
    
  • Here is the filter I use to light up a video taken in the dark with my cheap camera. Of course it add noise but thanks to this we can distinguish shapes in the dark.

    $ mencoder -vf eq2=1.61:1.95:0.54:2.43 -oac pcm -ovc lavc video.avi -o bright-vid.avi
    
  • And this is the command to preview the result of the filter used above:

    $ mplayer video.avi -vf eq2=1.61:1.95:0.54:2.43
    
  • This is how I convert raw videos taken with my digital camera into ISO standard MPEG-4 (DivX 5, XVID compatible) videos [to encode in grayscale, add :gray option to -lavcopts]:

    $ mencoder source.avi -ovc lavc -oac lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vbitrate=400:v4mv:mbd=2:trell:autoaspect:dia=2:acodec=mp3:abitrate=32:vpass=1 -vf hqdn3d -o output.avi
    $ mencoder source.avi -ovc lavc -oac lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vbitrate=400:v4mv:mbd=2:trell:autoaspect:dia=2:acodec=mp3:abitrate=32:vpass=2 -vf hqdn3d -o output.avi
    
  • Play all videos of the current folder fullscreen at 4x speed with 50% more brightness:

    $ mplayer -speed 4 -brightness 50 -fs ./*.avi
    
  • Extract audio stream from a video:

    $ mplayer -dumpaudio -dumpfile audio.ac3 video_source.mpg
    

Others

  • List MLT audio codecs:

    $ melt -query "audio_codecs"
    
  • Extract to chapter.txt the chapter file of the track n°1 of the DVD:

    $ dvdxchap -t 1 /mnt/cdrom > chapter.txt
    
  • Test XV video driver output via gstreamer v0.10:

    $ gst-launch-0.10 videotestsrc ! xvimagesink
    

Related content