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

基本コマンド

ffmpeg -i input -af astats -vn -f null -


表示例。チャンネル毎と全体の統計が表示される。

Channel: 1
DC offset: -0.000013
Min level: -22232.000000
Max level: 22453.000000
Min difference: 0.000000
Max difference: 3932.000000
Mean difference: 93.775985
RMS difference: 164.877217
Peak level dB: -3.283246
RMS level dB: -22.279445
RMS peak dB: -11.278606
RMS trough dB: -inf
Crest factor: 8.908610
Flat factor: 0.000000
Peak count: 2
Noise floor dB: -inf
Noise floor count: 85871
Bit depth: 16/16
Dynamic range: 93.046087
Zero crossings: 197416
Zero crossings rate: 0.015388
Channel: 2
DC offset: -0.000013
Min level: -22160.000000
Max level: 21174.000000
Min difference: 0.000000
Max difference: 4077.000000
Mean difference: 89.674630
RMS difference: 158.976224
Peak level dB: -3.397339
RMS level dB: -22.688289
RMS peak dB: -11.712988
RMS trough dB: -inf
Crest factor: 9.216107
Flat factor: 0.000000
Peak count: 2
Noise floor dB: -inf
Noise floor count: 87212
Bit depth: 16/16
Dynamic range: 92.931995
Zero crossings: 200500
Zero crossings rate: 0.015628
Overall
DC offset: -0.000013
Min level: -22232.000000
Max level: 22453.000000
Min difference: 0.000000
Max difference: 4077.000000
Mean difference: 91.725307
RMS difference: 161.953599
Peak level dB: -3.283246
RMS level dB: -22.479057
RMS peak dB: -11.278606
RMS trough dB: -inf
Flat factor: 0.000000
Peak count: 2.000000
Noise floor dB: -inf
Noise floor count: 86541.500000
Bit depth: 16/16
Number of samples: 12829572

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

ffprobe の使い方

ametadataフィルタと連携する。
ffplay -f lavfi -i amovie=input,astats=metadata=1,ametadata=print:key=lavfi.astats.1.DC_offset[out0];movie=input[out1]

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

adrawgraphフィルタと連携する。
ffplay -f lavfi -i amovie=input,astats=metadata=1,adrawgraph=m1=lavfi.astats.1.DC_offset:min=0.0001:max=0.005

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

特定のメタデータ、ここでは 1ch(FL) のDC_offsetを 1000サンプル毎に表示する
ffprobe -show_entries frame_tags=lavfi.astats.1.DC_offset -of default=noprint_wrappers=1:nokey=1 -v quiet -f lavfi -i amovie=input,astats=length=0.05:metadata=1

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

オプション

メタデータ形式はlavfi.astats.XXに 1 から始まるチャンネル番号か、Overallが使える。
個別チャンネルには DC_offset Min_level Max_level Min_difference Max_difference Mean_difference RMS_difference Peak_level RMS_peak RMS_trough Crest_factor Flat_factor Peak_count Noise_floor Noise_floor_count Bit_depth Dynamic_range Zero_crossings Zero_crossings_rate Number_of_NaNs Number_of_Infs Number_of_denormals
例:lavfi.astats.1.DC_offset
Overallには DC_offset Min_level Max_level Min_difference Max_difference Mean_difference RMS_difference Peak_level RMS_level RMS_peak RMS_trough Flat_factor Peak_count Noise_floor Noise_floor_count Bit_depth Number_of_samples Number_of_NaNs Number_of_Infs Number_of_denormals
が使える。
例:lavfi.astats.Overall.Peak_count

  • length[double]
    以下の時間幅指定
    RMS peakRMS trough
    既定値:0.05
    範囲:0.01 から 10 まで
  • metadata[boolean]
    メタデータフラグをつける。他のフィルタと連携するときにつける
    既定値:0
    範囲:0 と 1
  • reset[int]
    何フレーム先を再計算するか
    既定値:0
    範囲:0 から INT_MAX まで
  • measure_perchannel[flags]
    チャンネル毎に測定する
    既定値:all+DC_offset+Min_level+Max_level+Min_difference+Max_difference+Mean_difference+RMS_difference+Peak_level+RMS_level+RMS_peak+RMS_trough+Crest_factor+Flat_factor+Peak_count+Bit_depth+Dynamic_range+Zero_crossings+Zero_crossings_rate+Noise_floor+Noise_floor_count+Number_of_samples+Number_of_NaNs+Number_of_Infs+Number_of_denormals
  • measure_overall[flags]
    チャンネルをまとめて測定する
    既定値:all+DC_offset+Min_level+Max_level+Min_difference+Max_difference+Mean_difference+RMS_difference+Peak_level+RMS_level+RMS_peak+RMS_trough+Crest_factor+Flat_factor+Peak_count+Bit_depth+Dynamic_range+Zero_crossings+Zero_crossings_rate+Noise_floor+Noise_floor_count+Number_of_samples+Number_of_NaNs+Number_of_Infs+Number_of_denormals

ここから先はパラメータの内容

  • DC offset
    振幅の変位、0 開始
  • Min level
    サンプルレベルの最小値
  • Max level
    サンプルレベルの最大値
  • Min difference
    2連続したサンプルの最小差違
  • Max difference
    2連続したサンプルの最大差違
  • Mean difference
    2連続したサンプルの平均
  • Peak level dB
    ピークレベル
  • RMS level dB
    RMS レベル
  • RMS peak dB
    RMS ピーク値
  • RMS trough dB
    RMS スルー値
  • Crest factor
    RMS レベルに対するピークの標準比(dB ではない)
  • Flat factor
    ピークレベルのシグナル Flatness (同じ値を持つ連続したサンプル)(最大または最小のレベル)
  • Peak count
    最大または最小のレベルに何回届いたか(サンプル数ではない)
  • Noise floor dB
    dBFS で測定された最小のローカルピーク
  • Noise floor count
    信号が Noise floor に達した回数。サンプル数ではない
  • Bit depth
    音声全体のビット深度、このビット深度がそれぞれのサンプルに使われる
  • Dynamic range
    ダイナミックレンジを測定する。単位は dB
  • Zero crossings
    波形がゼロレベル軸と交差する回数
  • Zero crossings rate
    音声サンプル当たりの波形がゼロレベル軸と交差する割合

measure_perchannel、measure_overallに使えるフラグ一覧。

  • all
  • DC_offset
  • Min_level
  • Max_level
  • Min_difference
  • Max_difference
  • Mean_difference
  • RMS_difference
  • Peak_level
  • RMS_level
  • RMS_peak
  • RMS_trough
  • Crest_factor
  • Flat_factor
  • Peak_count
  • Bit_depth
  • Dynamic_range
  • Zero_crossings
  • Zero_crossings_rate
  • Noise_floor
  • Noise_floor_count
  • Number_of_samples
  • Number_of_NaNs
  • Number_of_Infs
  • Number_of_denormals

コメントを残す

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

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