在Java中,如何同时多次播放相同的音频片段?

Hap*_*eer 5 java audio

如果我有一个java.applet.AudioClip对象,我可以调用它来播放它一次.但如果我多次调用play,那么剪辑将继续重启.绕过它的唯一方法似乎是加载同一声音文件的多个实例.这似乎浪费了记忆力.在游戏中,如果我发生了20次爆炸,那么我将不得不加载20个声音文件的实例.

我快速浏览了一下javax.sound,看看是否使用它代替AudioClip会有所帮助.我没有看到任何表明它支持同时多次播放相同剪辑的内容.

是否可以不使用简单的java.applet.AudioClip或javax.sound的东西多次加载相同的声音文件?

小智 6

点击此处 http://forums.sun.com/thread.jspa?threadID=5370182

如果您正在使用剪辑,则必须为每个需要同时播放声音的对象保留一个副本.您可以保留一个主副本,然后根据需要创建剪辑的副本以播放它们,然后只是转储副本以减少内存消耗.

第二个想法是编写自己的Clip类.实际上,您需要做的就是将一些声音数据转储到TargetDataline上进行播放.它将处理缓冲并以正确的速度播放.如果这就是你所做的一切,你应该能够从同一个实例多次转储并多次播放.


将原始样本数据读入字节数组,每当需要播放声音时,我都会使用ByteArrayInputStream从数组中读取数据,并将其输入到AudioInputStream中.播放完成后,我只需关闭剪辑,不会浪费任何系统资源.