1)我能够使用URL获取代码(这是下面其中一个响应的代码)。但我的歌是在一个wav文件中。当我尝试做文件url = new File(“---”);时,它不起作用。
相反,在堆栈跟踪中(感谢该提示!),它说
"Failed to allocate clip data: Requested buffer too large"
我要播放的歌曲是techno,大约3分钟。
如何解决剪辑数据大小问题?
答案 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/