在Java游戏中播放小声音

Zar*_*nen 10 java audio mp3 ogg

对于我正在制作的电脑游戏,我显然想播放声音.到目前为止,我一直在使用AudioClip来播放WAV文件.虽然这种方法工作正常,但WAV文件往往是巨大的.几秒钟的声音最终达到数百kB.我面临的游戏下载是95%的音频!

这里显而易见的选择是使用MP3或Ogg Vorbis.但是我在这方面取得了有限的成功 - 我可以使用JLayer播放MP3(但它在同一个帖子中播放).至于奥格,我根本就没有运气.更糟糕的是,JLayer的法律地位有点可疑.

所以我的问题是Java开发人员和普遍了解声音的人:我该怎么办?我可以以某种方式从我的WAV中"削减脂肪"吗?有没有办法在Java中玩Ogg?我应该使用其他一些声音格式吗?

aka*_*okd 4

您可以使用JOrbis库来播放 OGG 音乐。对于工作示例的用法,您可以在此处查看这些文件。

我还尝试了一些无损音频压缩,例如我有 16 位单声道声音。我将每个样本的高字节和低字节分开,并将它们放在一起。然后我应用了差异替换,其中每个字节都被替换为与最后一个字节的差异。最后使用GZIP来压缩数据。我能够将数据大小减少到原始大小的 50-60%。不幸的是这还不够,所以我转向 OGG 格式。

我注意到 8 位音乐的一件事是,如果我改变音量,播放会变得非常嘈杂。我通过在 SourceDataLine.write() 之前将音频数据上采样到 16 位解决了这个问题。