音频流在运行时不会播放,仅在调试期间播放。JAVA
更新: 音频未完全播放,因为调用它的main()正在结束!如何确保在调用该文件的main()关闭之前播放该文件? 我是编程新手,了解基本知识。我只是为了爱好而学习JAVA。没有正式的爪哇教育 当我运行调用下面这个例程的java类时,没有播放音频。当我在调试模式下,在例程的某个地方放一个中断符时,我恢复调试器,存储在字节数组中的wave文件将播放 我没有线程被编程到另一个调用这个的类中。字节数组波形文件由另一个类构造并发送到此例程中 我假设这个问题是由创建wave文件的类无法在调用playByteWaveAudio时及时完成它引起的 此例程是否需要等待字节数组完成?如何确保字节数组播放? 这是java代码,它给了我一个问题:音频流在运行时不会播放,仅在调试期间播放。JAVA,java,audio,sync,Java,Audio,Sync,更新: 音频未完全播放,因为调用它的main()正在结束!如何确保在调用该文件的main()关闭之前播放该文件? 我是编程新手,了解基本知识。我只是为了爱好而学习JAVA。没有正式的爪哇教育 当我运行调用下面这个例程的java类时,没有播放音频。当我在调试模式下,在例程的某个地方放一个中断符时,我恢复调试器,存储在字节数组中的wave文件将播放 我没有线程被编程到另一个调用这个的类中。字节数组波形文件由另一个类构造并发送到此例程中 我假设这个问题是由创建wave文件的类无法在调用playByte
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);
}
}
}
为什么要创建一个不应该调用的构造函数?如果您在使用带参数的构造函数时忽略了构造函数
public PlayByteWaveAudio()
,则在尝试创建新的PlayByteWaveAudio()
时会出现编译时错误,而不是运行时错误。我之所以创建它,是因为我对编程不太了解!:)我不会再那样做了。谢谢你指出这一点。