概述
FFmpeg的loudnorm濾鏡是一個實現(xiàn)了EBU R128標準的音頻響度(loudness)歸一化濾鏡。在音頻領域中,響度是指音頻的感知音量水平,這與音量的技術(shù)度量(比如分貝)略有不同。響度歸一化旨在調(diào)整音頻軌道的響度,使得它們在不同的播放環(huán)境下提供一致的聽覺體驗。
使用loudnorm濾鏡可以自動將音頻調(diào)整到指定的響度目標,符合廣播行業(yè)對響度的標準化要求。該濾鏡特別有用于處理可能響度不一致的多個音頻文件,比如電視節(jié)目、電影、廣告和音樂。
EBU R128是歐洲廣播聯(lián)盟制定響度標準的推薦實踐。該標準建議的程序內(nèi)容響度目標級別為-23 LUFS(Loudness Units Full Scale),而loudnorm濾鏡能夠根據(jù)此標準自動調(diào)節(jié)音頻軌道。
響度歸一化
loudnorm濾鏡具有許多參數(shù),可以對響度的整個歸一化過程進行詳細配置。以下是loudnorm常用參數(shù):
- I:設置集成響度(Integrated Loudness)目標,默認值為-24 LUFS。
- LRA:設置響度范圍(Loudness Range)目標,用于捕捉音頻信號的動態(tài)范圍,默認值為7 LU。
- TP:設置真峰目標(True Peak),默認值為-2.0 dBTP(分貝相對于True Peak)。
- measured_I、measured_LRA、measured_TP、measured_thresh:這些參數(shù)通常由第一次運行l(wèi)oudnorm濾鏡時生成,用于在雙遍響度歸一化過程中的第二遍中使用。
以下是使用loudnorm濾鏡的一個基本例子:
ffmpeg -i input.wav -af "loudnorm=I=-24:LRA=7:TP=-2.0" output.wav
這個命令表示:
-i input.wav:指定輸入文件。
-af "loudnorm=I=-24:LRA=7:TP=-2.0":對輸入音頻應用loudnorm濾鏡,響度目標設為-24 LUFS,響度范圍目標為7 LU,真峰目標設為-2.0 dBTP。
output.wav:歸一化響度后的輸出文件。
如果需要對音頻執(zhí)行正規(guī)的響度歸一化,可能需要進行兩遍處理:第一遍分析音頻特征,第二遍應用這些測量結(jié)果來實際調(diào)整音頻的響度。這種稱為"雙遍"(two-pass)的方式提供了更準確的結(jié)果,適用于專業(yè)的音頻制作。
two-pass歸一化步驟
第一步
先找出整段聲音的I、TP、LRA等等的數(shù)值,指令如下:
ffmpeg -hide_banner -i in.m4a -filter_complex "loudnorm=print_format=json" -f null /dev/null
輸出如下:
{
"input_i" : "-15.30",
"input_tp" : "-1.94",
"input_lra" : "1.80",
"input_thresh" : "-25.36",
"output_i" : "-24.16",
"output_tp" : "-11.06",
"output_lra" : "1.40",
"output_thresh" : "-34.23",
"normalization_type" : "dynamic",
"target_offset" : "0.16"
}
第二步
把第一次處理時得到的input_i、input_tp、input_lra、input_thresh數(shù)值填進指令中,接著調(diào)整I、TP和LRA的數(shù)值:
ffmpeg -i in.m4a -filter_complex "loudnorm=linear=true:I=<I>:TP=<TP>:LRA=<lRA>:measured_I=<input_i>:measured_tp=<input_tp>:measured_LRA=<input_lra>:measured_thresh=<input_thresh>" -ar <sample_rate> out.m4a