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


15

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

Answers:


21

对的,这是可能的。

首先播放您的视频,看是否可以:

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


5
在使用cropdetect时(在输入-i之前)放置一个起点(-ss 00:05:00)可能会有所帮助,因为某些视频在开始时会显示为纯黑屏幕。

我想用它来裁剪python matplotlib.animation带有白色边框的视频。是否可以更改检测到的边框的颜色?
ryanjdillon

1
您可以指定黑色以外的其他颜色作为边框颜色吗?例如白色?
DanMan '18

这不能回答问题,因为您仍然需要执行手动操作
Freedo 19'9-8-8

嘿,@ Cornelius,您能帮我找到一个命令吗?-我想使用ffmpeg将video.mp4从Square裁剪为Round-不想为此使用overlay命令
Adil


4

将其他两个答案放到脚本中:

#!/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示例

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.