Java Audio - 如何在游戏中播放歌曲(应用程序,而不是Applet)

时间:2010-09-24 09:12:05

标签: java audio javasound

最后编辑 - 需要两个简单的答案。

1)我能够使用URL获取代码(这是下面其中一个响应的代码)。但我的歌是在一个wav文件中。当我尝试做文件url = new File(“---”);时,它不起作用。

相反,在堆栈跟踪中(感谢该提示!),它说

"Failed to allocate clip data: Requested buffer too large"

我要播放的歌曲是techno,大约3分钟。

如何解决剪辑数据大小问题?

2 个答案:

答案 0 :(得分:2)

查看Java Sound API for sampled sound的类。特别是Clip接口和AudioSystem类。

Java Sound使用SPI将额外格式的支持添加到J2SE内置的默认格式中。您可以添加基于JMF的mp3plugin.jar,以便为MP3提供对JavaSound的支持。

<小时/> 要在循环中播放WAV,请参阅此小例子。

import java.net.URL;
import javax.sound.sampled.*;

public class LoopSound {

  public static void main(String[] args) throws Exception {
    URL url = new URL(
      "http://pscode.org/media/leftright.wav");
    Clip clip = AudioSystem.getClip();
    AudioInputStream ais = AudioSystem.
      getAudioInputStream( url );
    clip.open(ais);
    clip.loop(5);
    javax.swing.JOptionPane.showMessageDialog(null, "Close to exit!");
  }
} 

答案 1 :(得分:0)

查看本教程,它展示了如何实现自己的read-feed-play循环并避免内存错误:

http://codeidol.com/java/swing/Audio/Play-Non-Trivial-Audio/