是否可以使用 ffmpeg 自动裁剪视频的黑色边框?

是否可以使用 ffmpeg 自动裁剪视频的黑色边框?

我认为它有一个“黑度”视频过滤器,可以确定图片序列是否为黑色。也许它还有一个过滤器可以自动确定裁剪值以去除视频边缘的黑色边框。或者也许可以以某种方式使用“黑度”过滤器编写脚本。

答案1

对的,这是可能的。

首先播放你的视频看看是否正常:

ffplay -i YourMovie.mp4 -vf "cropdetect=24:16:0"

过滤cropdetect值为:

cropdetect=limit:round:reset

limit = black threshold (default 24)
round = output resolution must be divisible to this
reset = after how many frames the detection process will start over

如果看起来不错,则裁剪它:

ffmpeg -i YourMovie.mp4 -vf "crop=640:256:0:36" YourCroppedMovie.mp4

来源及更多信息:René Calles 博客renevolution.com

答案2

从:https://stackoverflow.com/questions/17265381/ffmpeg-get-value-from-cropdetect

ffmpeg -i input -t 1 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1

答案3

将另外两个答案放在一起形成一个脚本:

#!/bin/sh
#ffmpeg_zoom ver 20180128202453
I="$@";X=${I##*.};O=${I%.*}_zoomed.${X};f=$(which ffmpeg 2>/dev/null)
if [ ! "$f" ]||[ "$f" = '' ];then echo "Install ffmpeg";exit 1;fi
C=$($f -i "$I" -t 1 -vf cropdetect -f null - 2>&1|awk '/crop/{print $NF}'|tail -n1)
echo $f -i "$I" -vf "$C" "$O"; $f -i "$I" -vf "$C" "$O"

这个问题有一些相关的 ffmpeg 示例

相关内容