日期:2014-05-20 浏览次数:20965 次
class AePlayWave extends Thread {
//要播放的音频文件名 只支持.wav音频
private String filename;
public AePlayWave(String wavfile) {
filename = wavfile;
}
public void run() {
File soundFile = new File(filename);
//音频输入流
AudioInputStream audioInputStream = null;
try {
/****************
* AudioSystem 类充当取样音频系统资源的入口点
* 此类允许查询和访问安装在系统上的混频器
* getAudioInputStream(File file) throws UnsupportedAudioFileException,IOException
* 从提供的file获得音频输入流
* 该file必须指向有效的音频文件数据
****************/
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
} catch (Exception e1) {
e1.printStackTrace();
return;
}
//获得此音频输入流中声音数据的音频格式
AudioFormat format = audioInputStream.getFormat();
SourceDataLine auline = null;
//根据指定信息构造数据行的信息对象,这些信息包括单个音频格式
//此构造方法通常由应用程序用于描述所需的行
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
try {
/*******************
* getLine(Line.Info info) throws LineUnavailableException
* 获得与指定 Line.Info 对象中的描述匹配的行
* 如果请求 DataLine且info是DataLine.Info的实例(至少指定一种完全限定的音频格式)
* 则上一个数据行将用作返回的 DataLine 的默认格式
*******************/
auline = (SourceDataLine) AudioSystem.getLine(info);
/*******************
* open(AudioFormat format) throws LineUnavailableException
* 打开具有指定格式的行,这样可使行获得所有所需的系统资源并变得可操作
*******************/
auline.open(format);
} catch (Exception e) {