タグ別アーカイブ: meta

映像フィルタを当てる前後のデータを見える化する

ffmpeg には多くの映像フィルタと音声フィルタがあるが、その効果を調べるのに主観的な判断だけではなく、客観的な判断ができるように数値を映像に表示したり、ヒストグラムを表示したりすることで映像で差違を見える化する。null フィルタを別のフィルタに変更することでフィルタを当てた同士で比較できる。
続きを読む 映像フィルタを当てる前後のデータを見える化する

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

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

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

基本コマンド

signalstats から YDIF を表示している。
ffplay -f lavfi -i movie=input,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
ebur128 で M, S, 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
続きを読む メタデータをコンソールに表示する metadata, ametadata

音声統計データを表示する astats

音声統計データを表示する astats の使い方。メタデータ対応しているので出力したログの加工が容易になる。

公式ドキュメント:FFmpeg Filters Documentation : astats

基本コマンド

ffprobe
ffprobe -f lavfi -i amovie=input,astats=length=0.05:metadata=0:reset=0
ffprobe -f lavfi -i aevalsrc=sin(440*2*PI*t):s=8000:d=1,astats=length=0.05:metadata=0:reset=0
続きを読む 音声統計データを表示する astats

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

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

音声を位相メーターの映像に変換する aphasemeter

基本コマンド

ffplay -f lavfi -i "amovie=input,aphasemeter=25:800x400:2:7:1:none"

基本は上から下に流れるので、rotate を使って右から左に流すコマンド
FFmpeg Filters Documentation : rotate
ffplay -f lavfi -i "amovie=input,aphasemeter=25:800x800:2:7:1:yellow,rotate=90*PI/180"

公式ドキュメント:FFmpeg Filters Documentation : aphasemeter
続きを読む 音声を位相メーターの映像に変換する aphasemeter

2つの映像の画質評価をする SSIM

2入力した映像を比較してオリジナルにどれだけ忠実であるか SSIM の値を計算する。主な用途はエンコード前後を比較してどれだけ劣化したのか、特定のフレームを抽出してエンコードを見直したりする。libx264 エンコードでリアルタイムで計測する場合はオプションの -tune ssim -ssim 1 を使う。

Windows の ffmpeg で生放送する方法 : エンコードのログ出力の方法

最終結果だけを表示
ffmpeg -i input1 -i input2 -filter_complex ssim -an -f null -

ログファイルを出力する
ffmpeg -i input1 -i input2 -filter_complex ssim=stats.txt -an -f null -

metadata でフレーム単位で表示する方法。ここでは unsharp の Y の ssim を表示している。
ffplay -i input -vf split[a][b];[b]unsharp[B];[a][B]ssim,metadata=print:key=lavfi.ssim.Y
lavfi.ssim.X 形式で X に代入できるのは、Y, U, V, R, G, B, All, dB。
続きを読む 2つの映像の画質評価をする SSIM

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

基本コマンド

コンソールに統計データを表示する例
ffprobe -f lavfi movie=input,signalstats="stat=tout+vrep+brng" -show_frames

統計情報をプレビューする例
ffplay -i input -vf signalstats=out=1

drawgraph フィルタの併用で折れ線グラフを表示できる
ffplay -f lavfi -i "movie=input,signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255,drawgrid=0:0:0:32,format=yuv420p"
メタデータを映像化する drawgraph, adrawgraph

metadata フィルタの併用でコンソールにを表示できる
ffplay -f lavfi -i movie=input,signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
メタデータをコンソールに表示する metadata, ametadata

YUV の値だけを改行してテキストに書き出す
trim=end_frame=1 を外すと全フレーム出力する
ffprobe -f lavfi -i "movie=input,signalstats,trim=end_frame=1" -show_entries frame_tags=lavfi.signalstats.YAVG,lavfi.signalstats.UAVG,lavfi.signalstats.VAVG -of default=noprint_wrappers=1:nokey=1 > yuv.txt
trim フィルタの使い方

他のアプリケーションに利用しやすい JSON形式に書き出す
ffprobe -f lavfi -i "movie=input,signalstats,trim=end_frame=1" -show_entries frame_tags=lavfi.signalstats.YAVG,lavfi.signalstats.UAVG,lavfi.signalstats.VAVG -of json > yuv.json

公式ドキュメント:FFmpeg Filters Documentation : signalstats

オプション

  • stat[flags]
    コンソールに統計データを表示する
    既定値:0

    • 0:表示しない。既定値
    • 1, tout
      時間的な異常値のピクセルを識別する。時間的な異常値とは同じフィールドの隣接するピクセルとは異なるピクセルである
    • 2, vrep
      縦のラインの反復を識別する。縦のラインの反復にはフレーム内の近似のピクセルを含む
    • 3, tout+vrep
    • 4, brng
      TVスケール(リミテッドレンジ)から外れているピクセルを識別する
    • 5, tout+brng
    • 6, vrep+brng
    • 7, tout+vrep+brng
  • out[int]
    映像に統計情報をハイライト表示する

    • 0, tout
    • 1, vrep
    • 2, brng
  • color, c[color]
    ハイライトの色指定
    既定値:yellow
    メタデータでの設定項目。metadatadrawgraph を併用する

  • YMIN
    該当フレームの Y の最小値。0 から 255 まで
  • YLOW
    該当フレームの Y の10%の値。0 から 255 まで
  • YAVG
    該当フレームの Y の平均値。0 から 255 まで
  • YHIGH
    該当フレームの Y の90%の値。0 から 255 まで
  • YMAX
    該当フレームの Y の最大値。0 から 255 まで
  • UMIN
    該当フレームの U の最小値。0 から 255 まで
  • ULOW
    該当フレームの U の10%の値。0 から 255 まで
  • UAVG
    該当フレームの U の平均値。0 から 255 まで
  • UHIGH
    該当フレームの U の90%の値。0 から 255 まで
  • UMAX
    該当フレームの U の最大値。0 から 255 まで
  • VMIN
    該当フレームの V のでの最小値。0 から 255 まで
  • VLOW
    該当フレームの V のでの10%の値。0 から 255 まで
  • VAVG
    該当フレームの V のでの平均値。0 から 255 まで
  • VHIGH
    該当フレームの V のでの90%の値。0 から 255 まで
  • VMAX
    該当フレームの V のでの最大値。0 から 255 まで
  • SATMIN
    該当フレームの彩度の最小値。0 から 181.02 まで
  • SATLOW
    該当フレームの彩度の10%の値。0 から 181.02 まで
  • SATAVG
    該当フレームの彩度の平均値。0 から 181.02 まで
  • SATHIGH
    該当フレームの彩度の90%の値。0 から 181.02 まで
  • SATMAX
    該当フレームの彩度の最大値。0 から 181.02 まで
  • HUEMED
    該当フレームの色相の中央値。0 から 360 まで
  • HUEAVG
    該当フレームの色相の平均値。0 から 360 まで
  • YDIF
    現在フレームと1フレーム前の Y の差分。0 から 255 まで
  • UDIF
    現在フレームと1フレーム前の U の差分。0 から 255 まで
  • VDIF
    現在フレームと1フレーム前の V の差分。0 から 255 まで

追記
オプションの説明を詳しく書いた。2016年8月16日

ffmpeg で 256色を最適化する

master で palettegenpaletteuse フィルタが追加された。16×16(つまり256パターン)のパレットに色を一時出力し、それを使い最適化されたファイルが出力できるようになった。これにより最適化されたアニメGIFや、色の少ないPNG圧縮で効果が期待できる。

16×16 のパレットを作る palettegen と、palettegen で作られたパレットを元に出力する paletteuse に分けられる。
続きを読む ffmpeg で 256色を最適化する