是否可以从 InputStream 转换为 AudioInputStream?
我想在某些事件中播放小声音文件,所以我按照 SoundThread
import java.io.*;
import javax.sound.sampled.*;
public class SoundThread implements Runnable{
private String filename;
SoundThread(String filename) {
this.filename = filename;
}
public void run() {
try {
InputStream in = ClassLoader.getSystemResourceAsStream("sounds/"+filename+".wav");
Clip clip = AudioSystem.getClip();
clip.open((AudioInputStream)in);
clip.start();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} catch (LineUnavailableException e){
e.printStackTrace();
}
}
}
我运行它
new Thread(new SoundThread("nameOfTheSoundFile")).start();
一开始我用 sun.audio.AudioPlayer 和 sun.audio.AudioStream 处理它,但是当我将该代码放入 eclipse 中时,它向我显示了错误。所以我尝试了
AudioInputStream in = (AudioInputStream)ClassLoader.getSystemResourceAsStream("sounds/"+filename+".wav");
将 InputStream 转换为 AudioInputStream(eclipse 没有显示任何错误),但运行它会引发 ClassCastException。这个问题有什么解决办法吗?