目標となるLUFSとラウドネスレンジ、トゥルーピークを調整するloudnormフィルタの使い方。1回の処理で行うのと、1回目の解析結果を使って2回目の処理を行う2種類の方法がある。loudnormフィルタを当てるとサンプリング周波数が192kHzにアップサンプルされて、PCM、Flac、Oggにエンコードするとそのままの192kHz、AAC-LCにエンコードすると96kHz、MP3、Opusにエンコードすると48kHzに収まる。別途目標のサンプリング周波数にするには-araresampleフィルタで指定する。

基本コマンド

標準出力ではなくファイルで出力するときはloudnormフィルタの後に、channelmapフィルタでチャンネル数を明示してaresampleフィルタで目標のサンプリング周波数を指定する。

1回で処理を終える例。ステレオの48kHzをlibsoxrでリサンプルしている。libsoxrを有効にしていないなら周波数だけ指定する。
ffmpeg -i input -af "loudnorm=I=-14:TP=-3:LRA=4:print_format=summary,channelmap=channel_layout=stereo,aresample=48000:resampler=soxr" -c:v copy -c:a aac output.mkv

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_i、input_tp、input_lratarget_offsetの値をmeasured_I、measured_TP、measured_LRA、measured_thresh、offsetで指定する。
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,channelmap=channel_layout=stereo,aresample=48000:resampler=soxr" -c:v copy -c:a aac output.mkv

解析結果の例。output_i、output_tp、output_lraの値がI、TP、LRAで指定した値に近づいている。

{
        "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位は四捨五入

コメントを残す

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

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