如果我想提高音频文件的音量,我总是使用Audacity的Dynamic Range Compressor。今天,我正在研究是否可以使用FFmpeg的acompressor filter做同样的事情。
我找到了"how to user "compressor" with ffmpeg"和Gyan的答案,这确实很有帮助,但还不够令人满意。
现在我实际上是在模仿Audacity的程序。
如果我正确理解acompressor
,则无法一口气应用补妆增益。所以我需要先做一个volumedetect
。
假设我要使用以下“大胆选项”:
Threshold: -30dB
Noise Floor: -40dB
Ratio: 2:1
Attack Time: 0,2s
Release Time: 1,0s
[x] Make-up gain for 0 dB after compressing
[x] Compress based on Peaks
如果我是正确的,则表示为:
threshold=0.031623 # 10^(-30/20) = 10^(-1.5) = 0.031623.
ratio=2 # 2 is the default, so no need to specify.
attack=200 # 0.2*1000 = 200ms.
release=1000 # 1.0*1000 = 1000ms.
detection=0 # peak based.
我不明白我可以在哪里指定“噪底”。 acompressor
甚至可以选择吗?
好的,volumedetect
...
ffmpeg -i input.wav -lavfi acompressor=threshold=0.031623:attack=200:release=1000:detection=0
,volumedetect -f null -
or
ffmpeg -i input.wav -lavfi acompressor=threshold=10^^(-30/20):attack=200:release=1000:detecti
on=0,volumedetect -f null -
(10^^(-30/20)
(Windows),10^\(-30/20\)
(Unix)。pow(10,-30/20)
似乎不起作用)
...就我而言导致...
n_samples: 23838888
mean_volume: -27.7 dB
max_volume: -7.7 dB
histogram_7db: 3
histogram_8db: 21
histogram_9db: 126
histogram_10db: 458
histogram_11db: 1727
histogram_12db: 5021
histogram_13db: 11816
histogram_14db: 24831
对于第二遍,我应用10^(7.7/20)
或2.4266
的化妆增益:
ffmpeg -i input.wav -lavfi acompressor=threshold=10^^(-30/20):attack=200:release=1000:detecti
on=0:makeup=10^^(7.7/20) -f wav output.wav
顺便说一句,我注意到-lavfi acompressor=[...],volume=7.7dB
会产生相同的输出。
到目前为止,一切都很好。这是output.wav
的波形:
ffmpeg -i input.wav -lavfi acompressor=threshold=10^^(-30/20):attack=200:release=1000:detecti
on=0:makeup=10^^(7.7/20),showwavespic=s=888x295:split_channels=1 output.png
其中是由Audacity处理(使用上述设置)的同一input.wav
的波形:
我不是该领域的专家,但是由于缺少“底噪”而导致FFmpeg的总体产量较低吗?
如果是这样,如何指定?如果不使用acompressor
,那还有什么其他过滤器?
[编辑]
ffmpeg -i input.wav -lavfi acompressor=threshold=10^^(-30/20):attack=200:release=1000:detecti
on=0:makeup=10^^(7.7/20),volumedetect -f null NUL
n_samples: 23838888
mean_volume: -20.0 dB
max_volume: -0.0 dB
histogram_0db: 16
histogram_1db: 76
histogram_2db: 329
histogram_3db: 1158
histogram_4db: 3678
histogram_5db: 9473
histogram_6db: 19933
ffmpeg -i input-audacity_drc-peak.wav -af volumedetect -f null NUL
n_samples: 23838888
mean_volume: -16.9 dB
max_volume: -0.0 dB
histogram_0db: 77
histogram_1db: 683
histogram_2db: 4291
histogram_3db: 14065
histogram_4db: 35403
mean_volume: -20.0 dB
与mean_volume: -16.9 dB
。因此,Audacity的输出声音更大。同样,使用本底噪声也会产生非常不同的histogram_xdb
值。
我仔细查看了acompressor
的其他选项,并开始摆弄level_in
(“设置输入增益。默认值为1。范围在0.015625和64之间。 “)
我不知道该范围代表什么,但是我认为2
的值意味着使输入的声音大两倍。
ffmpeg -i input.wav -lavfi acompressor=level_in=2:threshold=10^^(-30/20):attack=200:release=1
000:detection=0:makeup=10^^(7.7/20),volumedetect -f null NUL
n_samples: 23838888
mean_volume: -16.9 dB
max_volume: 0.0 dB
histogram_0db: 1611
histogram_1db: 3779
histogram_2db: 9619
histogram_3db: 20263
波形:
哇!真奇怪。与Audacity的输出相同的mean_volume
和相似的波形。
请注意,这是7.7dB
的{{1}}的补充增益!
我想这回答了我有关“噪底”的问题。并不是造成音量降低的原因。
也许某些Audacity专家可以向我解释为什么Audacity借助其DRC滤波器使音频的音量提高了一倍,而这甚至都不是一种选择。
还是我对此事的研究完全错误?
[/ edit]