java声音播放问题
我想实现 一个连续播放多个wav声音文件 但是不知道 如何连续播放,如何知道一个文件播放完毕我将多个wav文件 合并成一个流后 仍然播放的是第一个文件 ,我想 wav文件的固定的头格式也给合并进去了
目的是显示播放多个 声音文件 如果使用 Thread。sleep() 播放出来的声音文件 听起来也不连贯
我的代码: 希望大家帮忙!!!
/**
* 播放声音文件
*
* @author mojianpo
*
*/
public class Sound {
private AudioStream as = null;
private byte[] bs = null;
public Sound() {
}
/**
* 播放单个文件
*/
public void play(InputStream ins) {
try {
as = new AudioStream(ins);
} catch (IOException e) {
e.printStackTrace();
}
play(as);
}
/**
* 播放
*
* @param as
*/
public void play(AudioStream as) {
this.as = as;
AudioPlayer.player.start(as);
try {
AudioPlayer.player.join();
} catch (Exception e) {
e.printStackTrace();
}
AudioPlayer.player.stop(as);
}
/**
* 播放单个文件
*/
public void play(InputStream[] ins) {
//as = getAllAudioStream(ins);
if(ins != null && ins.length>0){
for(int i=0,count = ins.length;i<count;i++){
play(ins[i]);
}
}
}
/**
* 将多个流合并 目前没有完全实现
* @deprecated
* @param ins
* @return
*/
private AudioStream getAllAudioStream(InputStream[] ins) {
try {
if (ins == null || ins.length == 0) {
return null;
}
byte[] bytes = new byte[1024100];
bs = new byte[0];
for (int i = 0, count = ins.length; i < count; i++) {
InputStream in = ins[i];
int length = 0;
length = in.read(bytes);
byte[] tmp = new byte[bs.length + length];
int j = 0;
for (; j < bs.length; j++) {
tmp[j] = bs[j];
}
for (int k = 0; k < length; k++) {
tmp[j++] = bytes[k];
}
bs = new byte[tmp.length];
for (int n = 0; n < tmp.length; n++) {
bs[n] = tmp[n];
}
}
as = new AudioStream(new ByteArrayInputStream(bs));
} catch (IOException e) {
e.printStackTrace();
}
return as;
}
}