Cheat sheet for often used ffmpeg commands

← Home
  1. Convert WebM to MP4 without audio (pseudo-GIF)
  2. Make video with cover and audio track for YouTube
  3. Convert any audio file to Vorbis
  4. Convert any video to WebM (two-pass way)
  5. Bash script to crop black lines from any video
  6. Proper way to listen to internet radio

Convert WebM to MP4 without audio (pseudo-GIF)

ffmpeg \
    -i INPUT.webm \
    -c:v libx264 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" \
    -an \
    -preset slow \
    -y OUTPUT.mp4
WebM files may have resolution not multiple of two, so it is necessary to use -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2"

Make video with cover and audio track for YouTube

ffmpeg \
    -loop 1 -framerate 1 -i cover.png \
    -i INPUT.flac \
    -c:v libx264 -preset slow -tune stillimage -crf 18 \
    -c:a libfdk_aac -b:a 128k \
    -shortest -pix_fmt yuv420p \
    -y OUTPUT.mkv
Read more here

Convert any audio file to Vorbis

ffmpeg \
    -i INPUT.flac \
    -vn \
    -c:a libvorbis -q:a 5 \
    -y OUTPUT.ogg

Convert any video to WebM (two-pass way)

ffmpeg \
    -i INPUT.mov \
    -b:v 0 -row-mt 1 -crf 30 -f webm \
    -an \
    -pass 1 -passlogfile INPUT.mov.log \
    -y /dev/null &&
ffmpeg \
    -i INPUT.mov \
    -b:v 0 -row-mt 1 -crf 30 \
    -c:a libopus \
    -pass 2 -passlogfile INPUT.mov.log \
    -y OUTPUT.webm

Bash script to crop black lines from any video

#!/bin/bash

set -e

EXT=$(echo "$1" | sed 's/^\.\///g' | rg -o '\..+?$')
TMP=$(mktemp)
OUTFILE="$TMP$EXT"

CROP=$(ffmpeg \
    -i "$1" \
    -vf 'cropdetect=24:4:0' \
    -y "$OUTFILE" 2>&1 |
        pcre2grep -o 'crop=\d+:\d+:\d+:\d+$' |
            tail -n1
)

ffmpeg -i "$1" -vf "$CROP" -crf 31 -y "$OUTFILE"

# optional
#mv "$OUTFILE" "$1"

Proper way to listen to internet radio

ffmpeg -i https://station.waveradio.org/provodach -f wav - | ffplay -nodisp -

Last update: