FFmpeg自动检测裁剪黑边

FFmpeg自动检测裁剪黑边

#!/bin/bash

# 用法提示
if [ "$#" -ne 1 ]; then
  echo "用法: $0 <输入文件路径>"
  exit 1
fi

INPUT="$1"
OUTPUT="${1%.*}"
OUTPUT_EXT="${1##*.}"

# 自动检测 crop 参数
CROP=$(ffmpeg -i "$INPUT" -vf cropdetect=24:16:0 -t 30 -f null - 2>&1 |
  grep -o 'crop=[^ ]*' | sort | uniq -c | sort -nr | head -n1 | awk '{print $2}')

if [ -z "$CROP" ]; then
  echo "未能检测到有效的 crop 参数"
  exit 1
fi

echo "检测到裁剪参数: $CROP"

# 执行裁剪
ffmpeg -i "$INPUT" -vf "$CROP" -c:v libx264 -crf 10 -c:a copy "${OUTPUT}_crop.${OUTPUT_EXT}"