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


15

映像シーケンスが黒かどうかを判断できる「黒さ」ビデオフィルターがあると思います。ビデオのエッジから黒い境界線を削除するために、クロップ値を自動的に決定するフィルターもあるかもしれません。または、「ブラックネス」フィルターを使用して何らかの形でスクリプトを記述することもできます。

回答:


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
一部のビデオでは開始時に黒い画面が表示されるため、クロップ検出を使用する場合(入力-iの前)に開始点(-ss 00:05:00)を配置すると役立つ場合があります。

これを使用python matplotlib.animationして、白い境界線のあるビデオをトリミングします。検出されている境界線の色を変更することは可能ですか?
ryanjdillon

1
境界線の色として黒以外のものを指定できますか?例えば白?
ダンマン

あなたはまだ手動操作を行う必要があり、これは質問に答えていません
Freedo

ちょっと@Corneliusあなたは私1つのコマンドを見つけるために助けを喜ばことができます-私はffmpegのを使用してラウンドに広場からvideo.mp4をトリミングしたい-このためのコマンドをオーバーレイ使用したくない
アディル


4

他の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の例がいくつかあります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.