ffmpeg 可以无损应用音频增益吗?

ffmpeg 可以无损应用音频增益吗?

我偶然发现了这个答案

如何使用 ffmpeg 规范音频?

但是这涉及到音频流的转码。我知道像

可以无损调整音量,也就是说不用转码文件。FFmpeg 能做到吗?

答案1

无损增益?

不可以,ffmpeg 不能应用 ReplayGain 等无损音频增益方法。您必须转换音频,如果希望它保持无损,则必须输出到无损文件(例如 PCM WAV、FLAC 等)。

尽管如此,ffmpeg 至少支持阅读ReplayGain 数据。

编码时使用 ReplayGain

ffmpeg 在volume筛选。如果你读取了带有 ReplayGain 元数据的文件并进行转换,则可以使用 ReplayGain 端数据来调整音量:

ffmpeg -i input.mp3 -af volume=replaygain=track output.wav

这里track用到了音量。还有album。注意默认是忽略ReplayGain。


读取 ReplayGain 数据

如果你想读出 ReplayGain 数据,你可以使用replaygain筛选

ffmpeg -i input.mp3 -af replaygain -f null /dev/null

示例输出:

Input #0, mp3, from 'apev2-track-only.mp3':
  Metadata:
    encoder         : Lavf57.56.100
  Duration: 00:00:08.93, start: 0.025057, bitrate: 151 kb/s
  Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 151 kb/s
    Metadata:
      encoder         : Lavc57.64
Stream mapping:
  Stream #0:0 -> #0:0 (mp3 (mp3float) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, null, to '/dev/null':
  Metadata:
    encoder         : Lavf60.16.100
  Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      encoder         : Lavc60.31.102 pcm_s16le
[Parsed_replaygain_0 @ 0x6000029e0d10] track_gain = +13.69 dB
[Parsed_replaygain_0 @ 0x6000029e0d10] track_peak = 0.084451

相关内容