目標となる LUFS とラウドネスレンジ、トゥルーピークを調整する loudnorm
フィルタの使い方。1回の処理で行うのと、1回目の解析結果を使って2回の処理を行う方法の2種類がある。loudnorm
フィルタを当てるとサンプリング周波数が192kHzにリザンプルされるので、-ar や aresample
フィルタで目標のサンプリング周波数を指定する。
- 適切な音量が調べられる ffmpeg の ebur128 の使い方
- 各チャンネルの音声を合わせたり調整する pan
- 音声統計データを表示する astats
- サンプリング波形を一枚画像で出力する showwavespic
- 不可逆圧縮された音声のカットされた周波数が調べられる showspectrumpic
基本コマンド
目標 LUFS を -14、トゥルーピークを -3、ラウドネスレンジを 4 にして、出力結果の要点をコンソールに表示。
ffmpeg -i input -af "loudnorm=I=-14:TP=-3:LRA=4:print_format=summary" -vn -f null -
1回で処理を終えるなら pan
フィルタでチャンネル数を明示して aresample
フィルタで目標のサンプリング周波数を指定する。以下は2チャンネルの48kHzの例で libsoxr でリザンプルしている。libsoxr を有効にしていないなら周波数だけを指定する。
ffmpeg -i input -af "loudnorm=I=-14:TP=-3:LRA=4:print_format=summary,pan=stereo|c0=FL|c1=FR,aresample=48000:resampler=soxr" -c:v copy output
1回目の解析結果を使って2回の処理を行う方法と要点の例。
ffmpeg -i input -af "loudnorm=I=-14:TP=-3:LRA=4:print_format=json" -vn -f null -
{ "input_i" : "-8.18", "input_tp" : "1.10", "input_lra" : "4.40", "input_thresh" : "-18.22", "output_i" : "-13.44", "output_tp" : "-3.00", "output_lra" : "3.80", "output_thresh" : "-23.46", "normalization_type" : "dynamic", "target_offset" : "-0.56" }
それぞれの input と offset の値をオプションで指定する。その結果 output の値が調整されている。
ffmpeg -i input -af "loudnorm=I=-14:TP=-3:LRA=4:measured_I=-8.18:measured_TP=1.1:measured_LRA=4.4:measured_thresh=-18.22:offset=-0.56:print_format=json,pan=stereo|c0=FL|c1=FR,aresample=48000:resampler=soxr" -c:v copy output
{ "input_i" : "-8.18", "input_tp" : "1.10", "input_lra" : "4.40", "input_thresh" : "-18.22", "output_i" : "-13.99", "output_tp" : "-3.00", "output_lra" : "3.80", "output_thresh" : "-24.01", "normalization_type" : "dynamic", "target_offset" : "-0.01" }
公式ドキュメント:FFmpeg Filters Documentation : loudnorm
参考記事
オーディオコンテンツのラウドネス値の正規化 | Alexa Skills Kit
windows – ffmpeg to normalize loudness of a video – Stack Overflow
オプション
要点で表示される順番とオプション指定の順番が異なる。
- I, i[double]
目標のラウドネス値
既定値:-24
範囲:-70 から -5 まで - LRA, lra[double]
目標のラウドネスレンジ
既定値:7
範囲:1 から 20 まで - TP, tp[double]
トゥルーピークの最大値の指定
既定値:-2
範囲:-9 から 0 まで - measured_I, measured_i[double]
測定した入力ファイルのラウドネス値
既定値:0
範囲:-99 から 0 まで - measured_LRA, measured_lra[double]
測定した入力ファイルのラウドネスレンジ
既定値:0
範囲:0 から 99 まで - measured_TP, measured_tp[double]
測定した入力ファイルのトゥルーピーク
既定値:99
範囲:-99 から 99 まで - measured_thresh[double]
測定した入力ファイルの閾値
既定値:-70
範囲:-99 から 0 まで - offset[double]
ゲインオフセット
既定値:0
範囲:-99 から 99 まで - linear[boolean]
可能なら線形ノーマライズする
既定値:1 - dual_mono[boolean]
入力ファイルをデュアルモノラルとして扱う
既定値:0 - print_format[int]
解析結果を表示するフォーマット - 0, none:非表示。既定値
- 1, json
- 2, summary:小数点第2位は四捨五入