What’s the meaning of ffmpeg

ffmpeg → Fast forward, Moving Picture Experts Group

static builds

compress

1mbps 720P@30 7.5MB per minute

ffmpeg -i input.mp4 -vf scale=-1:720 -r 60 -b:v 2.5M output.mp4
#!/usr/bin/env bash

# config
WIDTH=720
CRF=23

# Parse
while [[ $# -gt 0 ]]; do
  case "$1" in
    -w)
      WIDTH="$2"
      shift 2
      ;;
    -q)
      case "$2" in
        low) CRF=28 ;;
        high) CRF=18 ;;
        *) CRF=23 ;;
      esac
      shift 2
      ;;
    *)
      INPUT="$1"
      shift
      ;;
  esac
done

# Check input
if [[ -z "$INPUT" ]]; then
  echo "Usage: cprs -w 720 -q <low|high> input.mp4"
  exit 1
fi

# Output filename
BASENAME="${INPUT%.*}"
OUTPUT="${BASENAME}_cprs.mp4"

# Run ffmpeg
ffmpeg -i "$INPUT" \\
-vf "scale=-1:${WIDTH}" \\
-c:v libx264 -crf ${CRF} -preset medium \\
-c:a aac -b:a 128k \\
"$OUTPUT"

utils

cprs.cpp

pad

ffmpeg -i input.mp4 -vf pad=1280:1280:0:280:black output.mp4

这里把 1280:720 视频添加黑边 (1280 - 720) / 2 = 280

Untitled

这里我测试了一个 1G 的视频,发现 speed 大概是6x,还是需要很长时间的。使用多线程后32x 快了很多

Untitled

threads

-threads 16 -preset ultrafast

Samsung g9

ffmpeg -i g9_input.mp4 -vf 'scale=5120:1440,pad=5120:4320:0:1440:black' -threads 16 -preset ultrafast g9_output.mp4