各フレームのカラーチャンネルのヒストグラムにおけるグレーレベルのエントロピーを測定するentropy
フィルタの使い方。各チャンネルのピクセル値の不規則性を調べる。スコアが高いとより複雑な映像になる。ほかにYUVのピクセル値の統計をログで出力するにはsignalstats
フィルタや、似たフィルタにbitplanenoise、siti
フィルタがある。
- YUV のデータを数値で表示する signalstats
- 各チャンネルのノイズ係数を調べる bitplanenoise
- ITU-T P.910を元とした2次元と3次元で映像の品質スコアを調べるsiti
基本コマンド
コンソールにnormal、diffモードでログを流す。
ffmpeg -i input -vf entropy=mode=normal,metadata=mode=print:file=- -an -f null -
ffmpeg -i input -vf entropy=mode=diff,metadata=mode=print:file=- -an -f null -
再生しながらentropy.entropy.normal.Yをコンソールに流す。
ffplay input -vf entropy,metadata=print:key=lavfi.entropy.entropy.normal.Y
drawtext
フィルタで映像にスコアを描写する。
ffplay input -vf entropy,drawtext=y=40:fontfile=C\\://WINDOWS/Fonts/arial.ttf:fontsize=20:fontcolor=white:box=1:boxcolor=black@0.4:text='"entropy.normal.Y ("%{metadata\:lavfi.entropy.entropy.normal.Y})'
drawgraph
フィルタで映像の下にスコアを描写する。sで入力した映像と同じ幅を指定する。
ffplay -i input -vf split[0],entropy,drawgraph=lavfi.entropy.normalized_entropy.normal.Y:min=0:max=1:s=1920x256[1];[0][1]vstack
メタデータを映像化する drawgraph, adrawgraph
ffprobeでログを出力する。適宜必要なデータだけをpacket_tagsに指定する。
ffprobe -v error -f lavfi -i movie=input.mp4,entropy -select_streams v:0 -show_entries packet=pts_time -show_entries packet_tags=lavfi.entropy.entropy.normal.Y,lavfi.entropy.normalized_entropy.normal.Y,lavfi.entropy.entropy.normal.U,lavfi.entropy.normalized_entropy.normal.U,lavfi.entropy.entropy.normal.V,lavfi.entropy.normalized_entropy.normal.V -of csv > entropy.csv
ffprobe -v error -f lavfi -i movie=input.mp4,entropy=1 -select_streams v:0 -show_entries packet=pts_time -show_entries packet_tags=lavfi.entropy.entropy.diff.Y,lavfi.entropy.normalized_entropy.diff.Y,lavfi.entropy.entropy.diff.U,lavfi.entropy.normalized_entropy.diff.U,lavfi.entropy.entropy.diff.V,lavfi.entropy.normalized_entropy.diff.V -of csv > entropy-diff.csv
公式ドキュメント:FFmpeg Filters Documentation : entropy
オプション
- mode[int]
- 0, normal:通常。既定値
- 1, diff:隣接するヒストグラム値間の絶対値の差を測定する
normalized_entropyは通常の値を0から1までに正規化して読みやすくなっている。
normalで使えるメタデータ。YUVのほかにBRGも調べられる。
lavfi.entropy.entropy.normal.[YUVBRG] lavfi.entropy.normalized_entropy.normal.[YUVBRG]
diffで使えるメタデータ。
lavfi.entropy.entropy.diff.[YUVBRG] lavfi.entropy.normalized_entropy.diff.[YUVBRG]