javax.sound.sampled.Clip无法播放

时间:2017-06-07 13:37:17

标签: java audio clip

    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();创建剪辑也不会改变任何内容。

1 个答案:

答案 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();