我一直在尝试在我的应用程序中播放音乐。我一直在使用示例 BigClip 代码:
try {
url = new URL(Sounds.class.getResourceAsStream("title1.wav").toString());
} catch (MalformedURLException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
BigClip clip = new BigClip();
AudioInputStream ais = null;
try {
ais = AudioSystem.getAudioInputStream(url);
} catch (UnsupportedAudioFileException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
clip.open(ais);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
clip.start();
JOptionPane.showMessageDialog(null, "BigClip.start()");
clip.loop(4);
JOptionPane.showMessageDialog(null, "BigClip.loop(4)");
clip.setFastForward(true);
clip.loop(8);
// the looping/FF combo. reveals a bug..
// there is a slight 'click' in the sound that should not be audible
JOptionPane.showMessageDialog(null, "Are you on speed?");
}
当我只使用
title1.wav
,我得到这个错误:java.net.MalformedURLException: no protocol: java.io.BufferedInputStream
当我添加协议(protocol)
file://
,我得到一个 NullPointerException
,虽然我看不出是什么原因造成的。我使用了错误的协议(protocol),还是我做错了什么?提前致谢!
最佳答案
假设您的文件与 Sounds 类位于同一包(“目录”)中,请使用
url = Sounds.class.getResource("title1.wav");
因为
new URL(Sounds.class.getResourceAsStream("title1.wav").toString())
只是注定不工作。您调用
toString
在 InputStream 的一个实例上。NPE 的发生可能是因为
AudioSystem.getAudioInputStream
由于错误的 URL 路径而失败,所以 ais
为空且 BigClip
从 open
抛出 NPE .
关于java - BigClip 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899479/