答案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