如何在FFmpeg的压缩器滤波器中指定本底噪声

时间:2019-07-24 19:29:11

标签: audio ffmpeg audacity

如果我想提高音频文件的音量,我总是使用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

ffmpeg_acomp=t=0.031623-a=200-r=1000-d=0-mu=2.4266_wavespic.png 其中是由Audacity处理(使用上述设置)的同一input.wav的波形: enter image description here

我不是该领域的专家,但是由于缺少“底噪”而导致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 dBmean_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

波形: ffmpeg_acomp=l=2-t=0.031623-a=200-r=1000-d=0-mu=2.4266_wavespic.png

哇!真奇怪。与Audacity的输出相同的mean_volume和相似的波形。
请注意,这是7.7dB的{​​{1}}的补充增益!

我想这回答了我有关“噪底”的问题。并不是造成音量降低的原因。

也许某些Audacity专家可以向我解释为什么Audacity借助其DRC滤波器使音频的音量提高了一倍,而这甚至都不是一种选择。
还是我对此事的研究完全错误?

[/ edit]

0 个答案:

没有答案