能否将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异常。这个问题有解决方案吗?
SwingUtilities.invokeLater()
,一切都很好。 - Valentino Ru