我正在编写一个基于Java的音乐播放器,它也应该自动将所有mp3的音量级别更改为相同的。
例如,某些mp3比其他人的声音有点大,因此我希望有一个播放器可以自动将音量调节到相同的水平。所以太安静的歌曲应该有点响亮,而太响的歌曲应该更安静。最后它们应该处于同一级别,这样我就不必更改设备音量。
我搜索了互联网,但没有找到任何解决方法如何在JAVA中执行此操作。
答案 0 :(得分:3)
您正在寻找的是" ReplayGain"并指定here。
现在的精通音乐(参见" loundness war")将降低音量,而较旧的曲调会调高音量,以便全局感知的声音保持不变。
由于分析整个音频数据以确定要应用的增益值,因此通常会执行一次然后存储为元数据(前提是音频格式支持它,至少对于MP3,FLAC,OGG来说是这样)和AAC)。
它是在免费音频播放器Foobar2000中实现的,它可以非常有效地进行,无论是跟踪还是专辑。实际上,在某些专辑中,将整个播放时的所有曲目应用相同的增益是一种很好的做法。
开源DJ软件Mixxx提供此功能,因此您应该能够在其存储库中找到与ReplayGain相关的一些代码。
在某些低能量但高峰值的信号情况下,要注意通过抑制ReplainGain效果或在音频链末端添加限制器来防止削波。