映像の YUV、彩度、色相を映像にオーバーレイしたり、コンソールに表示したり出来るdrawgraphフィルタと、音声の周波数や音量などを映像にオーバーレイしたり、コンソールに表示したり出来るadrawgraphフィルタの使い方。出力フォーマットは RGBA で色指定の AA の値を小さくすることでオーバーレイしたときに背景が映る。

メタデータをコンソールに表示する metadata, ametadata

基本コマンド

signalstatsフィルタを使って YUV のデータを表示している。

YUV のデータを数値で表示する signalstats

YAVG の折れ線グラフに縦32ピクセルのグリッドを表示。

ffplay -i input -vf "signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255,drawgrid=0:0:0:32,format=yuv420p"
ffplay -f lavfi -i "movie=input,signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255,drawgrid=0:0:0:32,format=yuv420p"

YAVG、UAVG、VAVGの複数表示。
ffplay -i input -vf "signalstats,drawgraph=m1=lavfi.signalstats.YAVG:m2=lavfi.signalstats.UAVG:m3=lavfi.signalstats.VAVG:min=0:max=255:bg=white:slide=scroll:mode=bar,drawgrid=0:0:0:32,format=yuv420p"
ffplay -f lavfi -i "movie=video,signalstats,drawgraph=m1=lavfi.signalstats.YAVG:m2=lavfi.signalstats.UAVG:m3=lavfi.signalstats.VAVG:min=0:max=255:bg=white:slide=scroll:mode=bar,drawgrid=0:0:0:32,format=yuv420p"

drawtextフィルタでテキストファイル(signalstat_drawtext)の内容をオーバーレイして表示させる。表示する内容が増えるとそれだけ負荷も高くなる。テキストの表示位置はdrawtextフィルタのx=10:y=10のように指定する。

drawtext フィルタで数値をオーバーレイする。

ffplay -i input -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=C\\://WINDOWS/Fonts/arial.ttf:textfile=signalstat_drawtext.txt:borderw=1:bordercolor=white

signalstat_drawtext.txt の内容。

time %{pts:hms}
Y (%{metadata:lavfi.signalstats.YMIN}-%{metadata:lavfi.signalstats.YMAX})
U (%{metadata:lavfi.signalstats.UMIN}-%{metadata:lavfi.signalstats.UMAX})
V (%{metadata:lavfi.signalstats.VMIN}-%{metadata:lavfi.signalstats.VMAX})
saturation maximum: %{metadata:lavfi.signalstats.SATMAX}

その他の設定例。

Y (%{metadata:lavfi.signalstats.YMIN}-%{metadata:lavfi.signalstats.YLOW}-%{metadata:lavfi.signalstats.YHIGH}-%{metadata:lavfi.signalstats.YMAX})
U (%{metadata:lavfi.signalstats.UMIN}-%{metadata:lavfi.signalstats.ULOW}-%{metadata:lavfi.signalstats.UHIGH}-%{metadata:lavfi.signalstats.UMAX})
V (%{metadata:lavfi.signalstats.VMIN}-%{metadata:lavfi.signalstats.VLOW}-%{metadata:lavfi.signalstats.VHIGH}-%{metadata:lavfi.signalstats.VMAX})
Sat AVG %{metadata:lavfi.signalstats.SATAVG}
Sat MAX %{metadata:lavfi.signalstats.SATMAX}
Hue AVG %{metadata:lavfi.signalstats.HUEAVG}
Hue MED %{metadata:lavfi.signalstats.HUEMED}

signalstat_drawtext.txtのサンプル。

その他に表示できるものはdrawtextフィルタのText expansionを参照する。ただし日本語は日本語が使えるフォントでないと文字化けする。

情報をテキストに保存する。
ffprobe -f lavfi -i movie=input,signalstats="stat=tout+vrep+brng" -show_frames > signalstats.txt

特定シーンを取り出す場合はspで開始秒の指定と、trimで長さ(秒)を指定する。
ffprobe -f lavfi -i movie=input:sp=10,trim=duration=10,signalstats="stat=tout+vrep+brng" -show_frames > signalstats.txt

ebur128フィルタをadrawgraphフィルタで表示する例。
ffmpeg -i input -filter_complex ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-32:max=0,realtime -f sdl -
ffplay -f lavfi -i "amovie=input,ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-32:max=0"

公式ドキュメント:FFmpeg Filters Documentation : drawgraph, adrawgraph

オプション

色指定は 0xAABBGGRR 形式になる。AAの値を小さくすると透過するようになる。ffplay で再生するときはアルファチャンネルをFFか、フォーマット変換で消さないと真っ黒になる。

  • m1[string]
    1番目のメタデータキーを指定する
  • fg1[string]
    m1の色を指定する。文字指定は不可
    既定値:0xffff0000
  • m2[string]
    2番目のメタデータキーを指定する
  • fg2[string]
    m2の色を指定する。文字指定は不可
    既定値:0xff00ff00
  • m3[string]
    3番目のメタデータキーを指定する
  • fg3[string]
    m3の色を指定する。色名指定は不可
    既定値:0xffff00ff
  • m4[string]
    4番目のメタデータキーを指定する
  • fg4[string]
    m4の色を指定する。文字指定は不可
    既定値:0xffffff00
  • min[float]
    グラフ描写のY軸(値)の最小値の指定
    既定値:-1
  • max[float]
    グラフ描写のY軸(値)の最大値の指定
    既定値:1
  • bg[color]
    グラフの背景色の指定。カラーコード、色指定どちらも可能
    既定値:white
  • mode[int]
    グラフの表示モード
    • 0, bar
    • 1, dot
    • 2, line:既定値
  • slide[int]
    グラフの画面切り替え
    • 0, frame
      1画面毎に切り替え。既定値
    • 1, replace
      上書き
    • 2, scroll
      左から右
    • 3, rscroll
      右から左
    • 4, picture
      1枚絵に描く
  • size, s[image_size]
    グラフのサイズ。この書式が使える
    既定値:900×256
  • rate, r[video_rate]
    表示フレームレートの指定
    既定値:25

関連フィルタ

コメントを残す

メールアドレスが公開されることはありません。

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