【发布时间】:2012-05-14 22:23:43
【问题描述】:
是否可以从 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。这个问题有什么解决办法吗?
【问题讨论】:
标签: java audio casting inputstream javasound