音频流在运行时不会播放,仅在调试期间播放。 JAVA

时间:2014-12-06 16:22:40

标签: java audio sync

更新:

音频没有完全播放,因为调用它的main()结束了!如何确保文件在main()关闭之前播放?

我是编程新手并了解基础知识。我只是为了一个爱好而学习JAVA。没有正规的Java教育。

当我运行下面调用此例程的java类时,没有播放音频。当我处于调试模式时,在例程中的某个位置休息,我恢复调试器并且存储在字节数组中的波形文件将播放。

我没有编程到另一个调用它的类的线程。字节数组波形文件由另一个类构成并发送到此例程。

我认为问题是由创建wave文件的类无法及时完成调用playByteWaveAudio引起的。

此例程是否需要等待字节数组完成?我该怎么做才能确保字节数组能够播放?

这是java中的代码,它给我一个问题:

public class PlayByteWaveAudio {

public PlayByteWaveAudio() {
    System.err.println("Need Byte Array with wave file data! ");
}

public PlayByteWaveAudio(byte[] playWave) {

        InputStream byteArray = new ByteArrayInputStream(playWave);

        try {
            AudioInputStream ais = AudioSystem.getAudioInputStream(byteArray);
            Clip clip = AudioSystem.getClip();

            clip.open(ais);
              //if I have a breakpoint in this area, during DEBUG, i can continue
              //and the wave byte array will play just fine.
              //During regular run(without debug), there is no sound.
            clip.start();
            clip.flush();
        } catch (IOException | LineUnavailableException | UnsupportedAudioFileException e) {
            System.out.println(e);
        }
    }
}

0 个答案:

没有答案