我在里面有一个Sample和Clip类,用Java编写。我正在循环播放:
public void play() {
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
我还有一个停止方法:
public void stop() {
clip.stop();
}
我希望在使用Scala初始化(并开始播放)新的Sample实例时停止它。
def setSample = {
if (sample != null) {
sample.stop
}
sample = new Sample(track, this)
if (isPlay == true) {
sample.play()
}
}
问题是,clip.stop()挂起几秒钟,所以下一个不会像我预期的那样立即播放。我该怎么办?为什么会发生?
//修改
我尝试使用close()方法并在new loop()之前再次打开剪辑。同样的效果。
答案 0 :(得分:1)
我不是Java /声音专家,之前曾做过一些尖峰。根据我的测试和文献,Windows上的Java Sound API有一些限制。因此,如果您使用的是Windows,则可以尝试使ASIO获得低延迟播放解决方案。请参阅:http://en.wikipedia.org/wiki/Audio_stream_input_output,具体来说,您将需要ASIO4ALL驱动程序和JAsioHost Java包装器。