public static void main(String[] args) {
try{
File file = new File("audiodata/test.wav");
AudioInputStream ain = AudioSystem.getAudioInputStream(file);
AudioFormat format = ain.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(ain);
clip.start();
}catch(Exception e){
e.printStackTrace();
}
}
我已经编写了这个简单的主要方法来播放声音文件,但它不起作用。没有抛出异常。程序结束,我听不到任何声音。我不知道,我的错误是什么。同时按AudioSystem.getClip();
创建剪辑也不会改变任何内容。
答案 0 :(得分:-1)
等待声音完成播放的正确方法是使用像CountDownLatch这样的并发类,或使用等级/通知或锁定等较低级别的并发操作:
Clip clip = (Clip) AudioSystem.getLine(info);
CountDownLatch doneLatch = new CountDownLatch(1);
clip.addLineListener(new LineListener() {
@Override
public void update(LineEvent event) {
if (event.getType().equals(LineEvent.Type.STOP)) {
doneLatch.countDown();
}
}
});
clip.open(ain);
clip.start();
doneLatch.await();