ffmpeg → Fast forward, Moving Picture Experts Group
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"
ffmpeg -i input.mp4 -vf pad=1280:1280:0:280:black output.mp4
这里把 1280:720 视频添加黑边 (1280 - 720) / 2 = 280

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

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