最后编辑-需要两个简单的答案。
1)我能够使代码与URL一起工作(这是来自以下响应之一的代码)。 但是我的歌在wav文件中。 当我尝试执行File url = new File(" ---");时,它不起作用。
相反,在堆栈跟踪中(感谢提示!),它说
"Failed to allocate clip data: Requested buffer too large"
我要播放的歌曲是techno,大约3分钟长。
如何解决剪辑数据大小问题?
另外,在这种情况下,文件是WAV还是MP3也有关系吗?
将所有捕获中的输出替换为堆栈跟踪,这比打印" F * CK"要有用得多。 如果使用WAV而不是MP3,则无需将mp3plugin.jar添加到运行时类路径。 J2SE开箱即用地支持大多数WAV。
Aaah ..我在等那个。 我的实验表明,Clip仅限于立体声,16位,44.1 KHz声音的一整秒。 这就是为什么我开发BigClip。 请参阅pscode.org/javadoc/org/pscode/xui/sound/bigclip/BigClip.html。 请注意,BigClip在循环中存在一个错误,我没有时间进行追踪。 如果您发现我出了问题,请提供修复程序。 ;)
查看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!");
}
}
这对您的声音有用,但是当我使用文件时,它说" Clip没有分配所需的内存..."
查阅本教程,它展示了如何实现自己的读取-播放-播放循环并避免内存错误:
http://codeidol.com/java/swing/Audio/Play-Non-Trivial-Audio/