ffmpeg 低通滤波器增加滚降

ffmpeg lowpass filter increase roll off

我已经将我的一张旧 SACD 转换为 352kHz FLAC,但由于 DSD 的性质,大量噪声被添加到较高频率,超出可听范围,但消耗相当多的磁盘 space.

所以我想我会使用简单的 lowpass 过滤器来摆脱它,就像这样:

ffmpeg -i input.dsf -af "lowpass=26000" output.flac

然而,结果是噪音仍然存在,只是音量降低了:

有没有办法增加滤波器的滚降或其他方法在 ~48 kHz 时达到 -140 dB?

长话短说:

改为使用 sox:

ffmpeg -i input.dsf -f wav -acodec pcm_s24le pipe:1 | sox -S -t wav --ignore-length - --compression 8 output.flac sinc -32k -t 16k

...将消除所有高频失真并显着减小文件大小(使其接近 DSD):

  • DSD64 (SACD):~162 MiB
  • FLAC(352.8kHz - 无滤波器):~396 MiB
  • FLAC(352.8kHz - 低通):~189 MiB

长读

好的,我发现可以简单地链接滤波器并使用稍微不同的滚降频率。对于以下内容,我只是将没有任何过滤器的 DSD 文件转换为 FLAC(因此,在以下命令中我们使用 input.flac 而不是 input.dsf)。

使用以下命令:

ffmpeg -i input.flac -af "lowpass=24000,lowpass=28000,lowpass=30000,lowpass=32000" output.flac

...导致:

看起来真不错。

然后我检查了它在较低(可听)频率下与原始频率的接近程度:

sox -S -m -v 1 input.flac -v -1 output.flac -n spectrogram -x 640 -y 200 -Z -30 -o "lowpass.ffmpeg.diff.png"

...结果:

所以,我无法将它保存在我的图书馆中。当我在寻找替代品时,我偶然发现了这篇内容丰富的读物:

因此,根据这些新信息,我改用 sox:

sox -S input.flac --compression 8 output.flac sinc -32k -t 16k

...导致:

...并通过 diff 确认,可听频率保持不变: