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();
}
}
}
上面是全部所需代码,供大家参考。
/**
* 功能:尝试播放声音
*/
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();
}
}
}
上面是全部所需代码,供大家参考。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树