代码之家  ›  专栏  ›  技术社区  ›  Zarkonnen

在爪哇游戏中播放小声音

  •  10
  • Zarkonnen  · 技术社区  · 17 年前

    对于我正在制作的电脑游戏,我显然想播放声音。到目前为止,我一直在用音频剪辑播放wav文件。虽然这种方法工作得很好,但是wav文件往往是巨大的。几秒钟的声音最终会达到数百kb。我正面临着一个95%音频的游戏下载!

    显而易见的选择是使用MP3或OggVorbis。但我在这方面的成功是有限的——我可以用jlayer播放MP3(但它在同一条线上播放)。至于奥格,我一点运气也没有。更糟糕的是,Jlayer的法律地位有点可疑。

    所以我的问题是Java开发者和一般知道声音的人:我该怎么办?我能把波浪上的脂肪“剪掉”吗?在Java中有没有玩OGG的方法?我是否应该使用其他声音格式?

    4 回复  |  直到 17 年前
        1
  •  4
  •   akarnokd    17 年前

    你可以使用 JOrbis 图书馆播放ogg音乐。对于工作示例用法,您可以查看这些文件 here .

    我还尝试了一些无损音频压缩,例如我有一个16位单声道声音。我将每个样本的上下字节分开,然后将它们放在一起。然后我应用了一个差分替换,其中每个字节都被其与最后一个字节的差替换。最后利用gzip对数据进行压缩。我可以将数据大小减少到原始大小的50-60%。不幸的是,这还不够,所以我转向了ogg格式。

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

        2
  •  2
  •   sep332    17 年前

    这些可能已经过时了,但它们得到了xiph.org团队的正式认可(维护ogg和vorbis等)。 http://www.vorbis.com/software/#java

        3
  •  2
  •   Rene    17 年前

    您描述的问题是由Java中的声音服务提供者接口(SPI)解决的。结果是,简单地将jar文件添加到类路径中,将为默认Java声音API添加功能。从而可以在不更改代码的情况下处理更多的声音格式。

    上次我试这个的时候 Javazoom 人们提供了一个可以工作的MP3 SPI罐。这是基于你提到的jlayer。

    对于沃比斯奥格来说,现在似乎还有一个SPI图书馆。查看上的文档 Vorbis SPI 在JavaZoOM上。

        4
  •  2
  •   BoltBait    17 年前

    如果你决定保持wav格式…

    拥有高质量的声音文件可能并不重要。您可以使用您最喜欢的wav编辑器来降低比特率,切换到mono或两者兼用。这样可以节省大量的空间,并且在玩游戏时不会注意到质量的差异。

    希望这有帮助。

    推荐文章