Clip.stop()冻结几秒钟

时间:2011-09-13 05:45:56

标签: java scala audio clip

我在里面有一个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()之前再次打开剪辑。同样的效果。

1 个答案:

答案 0 :(得分:1)

我不是Java /声音专家,之前曾做过一些尖峰。根据我的测试和文献,Windows上的Java Sound API有一些限制。因此,如果您使用的是Windows,则可以尝试使ASIO获得低延迟播放解决方案。请参阅:http://en.wikipedia.org/wiki/Audio_stream_input_output,具体来说,您将需要ASIO4ALL驱动程序和JAsioHost Java包装器。