[英]java playing sounds in order
嗨,我有下面的Java程序播放声音。我想按顺序播放声音,例如,在sound1结束后我要播放sound2,然后再播放sound3,以下是我的java代码和播放声音的功能。
private void playsound(String file)
{
try {
crit = AudioSystem.getClip();
AudioInputStream inputStream1 = AudioSystem.getAudioInputStream(this.getClass().getResource(file));
crit.open(inputStream1);
//if(!crit.isOpen())
{
crit.start();
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
并如下调用
playsound("/sounds/filesound1.au");
playsound("/sounds/filesound2.au");
playsound("/sounds/filesound3.au");
程序正在并行播放我不想播放的声音。我想按顺序播放
我从现在不记得的某个地方得到了以下代码,但是它可以播放音乐:
public static void play(ArrayList<String> files){
byte[] buffer = new byte[4096];
for (String filePath : files) {
File file = new File(filePath);
try {
AudioInputStream is = AudioSystem.getAudioInputStream(file);
AudioFormat format = is.getFormat();
SourceDataLine line = AudioSystem.getSourceDataLine(format);
line.open(format);
line.start();
while (is.available() > 0) {
int len = is.read(buffer);
line.write(buffer, 0, len);
}
line.drain();
line.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
因此,播放文件而不是同时播放所有文件的原因是, write
阻塞,直到已写入请求的数据量为止。 即使请求写入的数据量大于数据行的缓冲区大小,这也适用。
确保在上面的代码中包含drain()
。 drain()
在close()
之前等待缓冲区为空。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.