ffmpeg 3.3 から追加されたフィルタ。4つの映像を入力して、1、2入力の比較で3、4入力を使い分けて1出力するthresholdフィルタの使い方。高ビット深度対応の YUV, GBRP, GRAY, アルファ に対応している。2つのフィルタを使い分けたり、白黒2色のマスクが手軽に設定できる。4つの映像は同じ解像度、フレームレート、アスペクト比でなければならない。

具体的に説明すると1入力と2入力をの YUV/GBR の値を比較して、1 <= 2 の部分に4入力が、2 < 1 部分に3入力が割り当てられる。planes指定でフィルタを当てなければ1入力がそのまま出力される。planes指定でフィルタを当てても1映像のまま出力する場合でも映像が変わらなければ負荷は変わらない。

基本コマンド

明るい部分が白く、暗い部分が黒く2色になる
ffmpeg -i 320x240.mp4 -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.mp4

明るい部分が黒く、暗い部分が白く2色になる
ffmpeg -i 320x240.mp4 -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.mp4

2入力の gray より明るいところだけ 3入力の白になりそれ以外は元の映像のまま
ffmpeg -i 320x240.mp4 -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.mp4 -lavfi threshold output.mp4

2入力の gray より暗いところだけ 4入力の白になりそれ以外は元の映像のまま
ffmpeg -i 320x240.mp4 -f lavfi -i color=gray -i 320x240.mp4 -f lavfi -i color=white -lavfi threshold output.mp4

公式ドキュメント:FFmpeg Filters Documentation : threshold

オプション

planes[int]
フィルタを当てるチャンネル指定
詳しくはffmpeg について | チャンネルの順番と注意点を参照
既定値:15(すべてのチャンネル)
範囲:0 から 15 まで

使用例

輝度65 以下にunsharpフィルタを当てる。明るいところ、暗いところにフィルタを当てると同じことができる。unsharpフィルタをnoise=alls=100:allf=t+uに変えると、どの部分だけフィルタが当たっているかよくわかる。
ffmpeg -i input -vf split=4[0][1][2],unsharp=la=-0.5:ca=0.5[3];[1]lutyuv=66:val:val[1a];[0][1a][3][2]threshold output
ffplay -i input -vf split=4[0][1][3],unsharp=la=-0.5:ca=0.5[2];[1]lutyuv=66:val:val[1a];[0][1a][2][3]threshold

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)