1

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

1)我能够使代码与 URL 一起使用(它是来自以下响应之一的代码)。但我的歌曲是在一个 wav 文件中。当我尝试执行 File url = new File("---"); 时,它不起作用。

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

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

我正在尝试播放的歌曲是 techno,大约 3 分钟长。

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

4

2 回答 2

2

查看Java Sound API 的类以获取采样声音。特别是 Clip 接口和 AudioSystem 类。

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


要在循环中播放 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!");
  }
} 
于 2010-09-24T09:23:29.423 回答
0

查看本教程,它展示了如何实现您自己的读取-播放-播放循环并避免内存错误:

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

于 2012-03-16T21:48:10.337 回答