您的位置:首页 > 编程语言 > Java开发

Java中播放声音实例

2016-02-25 21:02 447 查看
            如何使用Java播放声音?今天学习了Java播放声音的一个实例,感觉很有用,分享出来。

       /**

 * 功能:尝试播放声音

 */

import java.io.*;

import javax.sound.sampled.*;

public class TestAudio {

public static void main(String[] args) {
//1.创建一个AePlayWave对象实例
AePlayWave apw=new AePlayWave("d:\\111.wav");
//2.启动该线程去播放
apw.start();
}

}

//播放声音的类

class AePlayWave extends Thread{

private String filename;
public AePlayWave(String wavfile){
filename = wavfile;
}

public void run(){
File soundFile = new File(filename);

//AudioInputStream:音频输入流,是具有指定音频格式和长度的输入流。
AudioInputStream audioInputStream = null;

try {
//AudioSystem:该类充当取样音频系统资源的入口点
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
} catch (Exception e) {
e.printStackTrace();
return;
}

//AudioFormat: 是在声音流中指定特定数据安排的类
AudioFormat format = audioInputStream.getFormat();
//SourceDataLine:源数据行,是可以写入数据的数据行
SourceDataLine auline = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class,format);//该构造方法:根据指定信息构造数据行的信息对象,这些信息包括单个音频格式。

try {
auline = (SourceDataLine) AudioSystem.getLine(info);
auline.open(format);//该方法:打开具有指定格式的行,这样可使行获得所有所需的系统资源并变得可操作。
} catch (Exception e) {
e.printStackTrace();
return;
}

auline.start();
int nBytesRead = 0 ;
//这是缓冲
byte[] abData = new byte[512];

try {
while(nBytesRead != -1)
{
nBytesRead = audioInputStream.read(abData , 0 , abData.length);
if(nBytesRead >= 0)
auline.write(abData, 0, nBytesRead);
}
} catch (Exception e) {
e.printStackTrace();
return;
}finally{
auline.drain();
auline.close();
}
}

}

上面是全部所需代码,供大家参考。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息