音声統計データを表示するastats
の使い方。メタデータ対応しているので出力したログの加工が容易になる。
基本コマンド
ffmpeg -i input -af astats -vn -f null -
soxのstatsと同じような内容が表示される。
sox input.wav -n -S stats
SoX, SoXI, soxformat マニュアルページ日本語訳
表示例。チャンネル毎と全体の統計が表示される。
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
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.X
でX
に 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 peak
、RMS 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