最后编辑 - 需要两个简单的答案。
1)我能够使代码与 URL 一起使用(它是来自以下响应之一的代码)。但我的歌曲是在一个 wav 文件中。当我尝试执行 File url = new File("---"); 时,它不起作用。
相反,在堆栈跟踪中(感谢那个提示!),它说
"Failed to allocate clip data: Requested buffer too large"
我正在尝试播放的歌曲是 techno,大约 3 分钟长。
如何解决剪辑数据大小问题?
查看Java Sound API 的类以获取采样声音。特别是 Clip 接口和 AudioSystem 类。
Java Sound 使用 SPI 为 J2SE 内置的默认值添加对额外格式的支持。您可以添加基于 JMF 的 mp3plugin.jar 来为 JavaSound 提供对 MP3 的支持。
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!");
}
}
查看本教程,它展示了如何实现您自己的读取-播放-播放循环并避免内存错误:
http://codeidol.com/java/swing/Audio/Play-Non-Trivial-Audio/