web-dev-qa-db-ja.com

ffmpegを使用してビデオの黒い境界を自動トリミングすることは可能ですか?

画像シーケンスが黒かどうかを判別できる「黒さ」のビデオフィルターがあると思います。多分それはまたビデオの端から黒い境界を取り除くためにクロップ値を自動的に決定するフィルターを持っています。あるいは、「黒さ」フィルタを使用してスクリプトをなんとかして書くことが可能かもしれません。

16
Konstantin

はい、可能です。

最初にビデオを再生して、問題がないかどうかを確認します。

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

22
Cornelius

差出人: 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
13
Jannes

他の2つの答えをスクリプトにまとめます。

#!/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の例があります

4
Alexx Roche