メタデータを映像化する drawgraph, adrawgraph


映像の YUV、彩度、色相を映像にオーバーレイしたり、コンソールに表示したり出来る drawgraph フィルタと、音声の周波数や音量などを映像にオーバーレイしたり、コンソールに表示したり出来る adrawgraph フィルタの使い方。映像の表示方法はグラフで表示する方法と、映像に数値をオーバーレイする方法の2通りがある。

基本コマンド

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

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

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

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 -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"

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

drawtext で数値をオーバーレイする

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

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 を参照する。ただし日本語は日本語が使えるフォントでないと文字化けする。
現在時間の表示 %{localtime}
フレーム番号 %{n}
フレームタイプ %{pict_type}

情報をテキストに保存する
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 フィルタで表示する例
ffplay -f lavfi -i "amovie=input,ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-32:max=0"

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

オプション

  • 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
    この書式 が使える

関連フィルタ

コメントを残す

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