我正在编写一个基于 Java 的音乐播放器,它也应该自动将所有 mp3 的音量级别更改为相同。
例如,有些 mp3 的音量比其他的大一点,因此我想要一个可以自动将音量级别调整到相同的播放器。所以太安静的歌曲应该大声一点,太大声的歌曲应该更安静。最后它们应该处于同一水平,这样我就不必更改设备音量。
我在互联网上搜索过,但没有找到任何解决方案如何在 JAVA 中执行此操作。
最佳答案
您要查找的内容名为“ReplayGain”,指定为here .
采用现代母带处理的曲调(参见“loundness war”)的音量将降低,而旧曲调的音量将调高,以便整体感知响度保持不变。
由于要分析整个音频数据以确定要应用的增益值,因此通常只做一次,然后作为元数据存储(前提是音频格式支持它,至少 MP3、FLAC、OGG 是这种情况和 AAC)。
例如,它在免费音频播放器 Foobar2000 中实现,它在音轨方面和专辑方面都非常有效。事实上,在某些专辑中,当作为一个整体播放时,对所有轨道应用相同的增益是一种很好的做法。
开源 DJ 软件 Mixxx提供此功能,因此您应该能够在他们的存储库中找到一些与 ReplayGain 相关的代码。
在某些信号能量低但峰值高的情况下,通过抑制 ReplainGain 效果或在音频链的末端添加限幅器来小心防止削波。
关于java - JAVA 中所有 MP3 文件的音量相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34643552/