特定のフィルタで出力されるメタデータを扱うことができる metadata の使い方。ametadata も同じオプションで使うことができる。こちらはコンソールに出力するに対して drawgraph は映像にテキストやグラフで出力する。drawgraph と比べて出力範囲を指定しなくても良いので使いやすい。

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

基本コマンド

signalstats フィルタから YDIF を表示している
ffplay -i input -vf signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
unsharp フィルタの Y差分を ssim で表示している
ffplay -i input -vf split[a][b];[b]unsharp[B];[a][B]ssim,metadata=print:key=lavfi.ssim.Y
drawtext フィルタで映像に書き込む
ffplay -i input -vf split[a][b];[b]unsharp[B];[a][B]ssim,drawtext=fontfile='C\://WINDOWS/Fonts/arial.ttf':text='"SSIM="%{metadata\:lavfi.ssim.all}'
ebur128 フィルタで M, S, I を同時に表示するには ametadata フィルタを3つ並べる
ffplay -i input -af ebur128=metadata=1,ametadata=print:key=lavfi.r128.M,ametadata=print:key=lavfi.r128.S,ametadata=print:key=lavfi.r128.I
ffplay -f lavfi -i amovie=input,ebur128=metadata=1,ametadata=print:key=lavfi.r128.M,ametadata=print:key=lavfi.r128.S,ametadata=print:key=lavfi.r128.I[out0];amovie=input[out1]

公式ドキュメント:FFmpeg Filters Documentation : metadata, ametadata

オプション

  • mode
    出力モードの指定
    print だけ指定するとその条件のメタデータを表示する。function の条件で間に合わない場合に print 以外のモードを組み合わせて最終的に print で VALUE1 を使いメタデータを表示する。サンプルコマンドを示した方がわかりやすいので後述。
    • select
      key, value を選択する(and 条件をつける)
      メタデータは表示しない
    • add
      key, value を追加する(or 条件をつける)
      同じメタデータがあれば何もしない、つまり別のメタデータを追加する
      メタデータは表示しない
    • modify
      key, value の既存の値を変更する
      メタデータは表示しない
    • delete
      value の値があれば削除する、なければ key の値を削除する
      メタデータは表示しない
    • print
      メタデータを表示する
  • key
    全てのモードで使われるが、print モード以外では必須指定項目
  • value
    メタデータの値の指定。modify, add モードでは必須項目
  • function
      value の比較方法
      • same_str
        文字の一致。浮動小数点はマッチしない
      • starts_with
        数値(整数部分)や文字の先頭が一致すればマッチする
        例:1 を指定すれば 1.xxx や 1x.xxx などがマッチする
      • less
        以下
      • equal
        浮動小数点を含む数値の一致
      • greater
        以上
      • expr
        条件に評価式を使う
        ffmpeg で使える計算書式 を参照
    • expr
      function で expr を指定すると使える
      0 は何も出力せず、1 は全て出力する
      • VALUE1
        print 以外のモードで選択した値を再利用する
      • VALUE2
        value で指定した値
    • file
      ログをファイルで出力する
      既定値は指定しないので指定したらファイル名を指定する

    オプション解説

    select の例

    YLOW を 189 以上と 191 以下を組み合わせて両方を満たす条件の例。同じオプションなので print は1つで良い
    ffplay -f lavfi -i movie=input,signalstats,metadata=select:key=lavfi.signalstats.YLOW,signalstats,metadata=select:key=lavfi.signalstats.YLOW:value=189:function=greater,signalstats,metadata=select:key=lavfi.signalstats.YLOW:value=191:function=less,signalstats,metadata=print:key=lavfi.signalstats.YLOW:function=expr:expr=VALUE1
    YLOWYMIN を組み合わせた例。別のオプションなので print はそれぞれ必要
    ffplay -f lavfi -i movie=input,signalstats,metadata=select:key=lavfi.signalstats.YLOW:value=190:function=less,metadata=print:key=lavfi.signalstats.YLOW:function=expr:expr=VALUE1,metadata=select:key=lavfi.signalstats.YMIN:value=140:function=less,metadata=print:key=lavfi.signalstats.YMIN:function=expr:expr=VALUE1

    add の例

    select の条件に add をつけて YLOW 190以下と YMIN 140 以下のどちらかを満たす条件の例。。別のオプションなので print はそれぞれ必要
    ffplay -f lavfi -i movie=input,signalstats,metadata=select:key=lavfi.signalstats.YLOW:value=190:function=less,metadata=print:key=lavfi.signalstats.YLOW:function=expr:expr=VALUE1,metadata=add:key=lavfi.signalstats.YMIN:value=140:function=less,signalstats,metadata=print:key=lavfi.signalstats.YMIN:function=expr:expr=VALUE1

    modify の例

    YLOW の条件結果の全てを 140 に書き換える
    ffplay -f lavfi -i movie=input,signalstats,metadata=select:key=lavfi.signalstats.YLOW:value=190:function=less,metadata=modify:key=lavfi.signalstats.YLOW:value=140,metadata=print:key=lavfi.signalstats.YLOW:function=expr:expr=VALUE1

    delete の例

    YMIN の条件を消して YMAX の条件に切り替えた例
    ffplay -f lavfi -i movie=input,signalstats,metadata=select:key=lavfi.signalstats.YMIN:value=140:function=greater,metadata=delete:key=lavfi.signalstats.YMIN,metadata=select:key=lavfi.signalstats.YMAX:value=0:function=greater,metadata=print:key=lavfi.signalstats.YMAX:function=expr:expr=VALUE1
    YMIN の条件を消して再度 YMIN を指定しても出力されない
    ffplay -f lavfi -i movie=input,signalstats,metadata=select:key=lavfi.signalstats.YMIN:value=140:function=greater,metadata=delete:key=lavfi.signalstats.YMIN,metadata=select:key=lavfi.signalstats.YMIN:value=140:function=greater,metadata=print:key=lavfi.signalstats.YMIN:function=expr:expr=VALUE1

コメントを残す

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

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