FFmpeg を使用して単純なピーク正規化は可能ですか?

FFmpeg を使用して単純なピーク正規化は可能ですか?

私はビデオテープからロスレス ビデオをキャプチャしていますが、残念ながら、ビデオカメラに内蔵スピーカー以外のボリューム スライダーがないことと、Dazzle DVC100 USB ビデオ キャプチャ デバイスにボリューム設定がないこと (そして、VirtualDub2 がそれを検出して問題なく録画しているにもかかわらず、Windows のオーディオ ミキサーまたは録音デバイス パネルに表示されないという不可解な問題) により、出力ボリュームが制限されているものもあります。

最初は、オーディオを正規化するためにこれを使用していました。

-af loudnorm=I=-16:LRA=11:TP=-1.5

しかし、さらに読み進めると、FFmpeg ドキュメントそしてそのオーディオ正規化に関するWikipediaの記事、私は「ラウドネス正規化」が「ピーク正規化」とは異なることに気づきました。ffmpeg のloudnorm関数はまさにそのように命名されているので、私が行っていることがまさに私が望んでいることであることを確認する必要があります。

私はクリッピングせずにできるだけ音量を上げたいだけですそしてダイナミック レンジが失われることも、録音全体の音量レベルが平均化されることもありません。これは ffmpeg で可能ですか? かなり検索してみましたが、loudnorm正規化に関連する他のものをすべてかき消すほど人気が​​あるようです。

答え1

最初にボリューム検出フィルターを実行してピーク音量を識別できます。次に、2 回目のパスでボリューム フィルターを実行して均一なゲインを追加します。

パス1

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

出力:

[Parsed_volumedetect_0 @ 0000022356a12940] n_samples: 495350
[Parsed_volumedetect_0 @ 0000022356a12940] mean_volume: -28.9 dB
[Parsed_volumedetect_0 @ 0000022356a12940] max_volume: -4.2 dB
[Parsed_volumedetect_0 @ 0000022356a12940] histogram_4db: 26
[Parsed_volumedetect_0 @ 0000022356a12940] histogram_5db: 107
[Parsed_volumedetect_0 @ 0000022356a12940] histogram_6db: 182
[Parsed_volumedetect_0 @ 0000022356a12940] histogram_7db: 153
[Parsed_volumedetect_0 @ 0000022356a12940] histogram_8db: 158

最大音量がピークです。

パス2

ffmpeg -i input -af volume=+4.2dB -c:v copy output

関連情報