フレーム毎に黒フレームを調べるblackframe
フィルタの使い方。輝度の値からどれだけ黒いかの設定があるのでシーンチェンジを調べるのに使える。blackdetect
フィルタよりも設定方法が分かりやすい。
基本コマンド
コンソールの表示されるのでテキストにリダイレクトした方が見やすい。
ffmpeg -i input -vf blackframe=98:32 -f null -
ffmpeg -i input -vf blackframe=98:32 -f null - > blackframe.txt 2>&1
ログの出力例。
frame:1170 pblack:99 pts:3513510 t:39.039000 type:I last_keyframe:1170
似たようなフィルタにblackdetect
があるのでこちらを併用することもできる。
ffmpeg -i input -vf blackframe,blackdetect -f null -
color
ソースの黒は輝度の値が16になるので、threshold, threshの値は17以上で反応する。
輝度の値の調べ方のコマンド例。
ffplay -f lavfi color -vf datascope
ffplay -f lavfi color -vf signalstats,metadata=print:key=lavfi.signalstats.YMIN
映像の3/4が黒なので75(%)以下の指定で反応する。
ffmpeg -f lavfi -i color=s=40x40:d=2 -vf split=4[0][1][2][3];[0]lutyuv=y=255[0a];[0a][1]vstack[u];[2][3]vstack[b];[u][b]hstack,blackframe=75 -f null -
黒が50%未満を出力せずに、その前のフレームをコピーして出力する。blackframe=0
で全フレームを対象に、metadata
フィルタで対象フレームを選ぶ。コピーした重複フレームではなく可変フレームで出力するには-vsync vfrにする。
ffmpeg -i inputput -vf blackframe=0,metadata=select:key=lavfi.blackframe.pblack:value=50:function=less -vsync cfr -c:a copy output
- ffmpeg でのフレームレート設定の違い
- メタデータをコンソールに表示する metadata, ametadata
- ffmpeg – replace black frames with previous frames – Video Production Stack Exchange
公式ドキュメント:FFmpeg Filters Documentation : blackframe
オプション
- amount[int]
1フレームの何パーセント以上を黒と判断するか。float ではないのに注意
既定値:98
範囲:0から100まで - threshold, thresh[int]
指定した値より小さい輝度の値を検出する
既定値:32
範囲:0から255まで
関連記事
ffmpeg できれいにロゴを消す方法