3

我有一个类 Sample 和 Clip,用 Java 编写。我正在循环播放它:

public void play() {
  clip.loop(Clip.LOOP_CONTINUOUSLY);
}

我还有一个停止方法:

public void stop() {
  clip.stop();
}

我想停止它,当新的 Sample 实例使用 Scala 初始化(并开始播放)时。

def setSample = {
  if (sample != null) {
    sample.stop
  }
  sample = new Sample(track, this)
  if (isPlay == true) {
    sample.play()
  }
}

问题是,clip.stop() 挂了几秒钟,所以下一个没有立即播放,正如我所料。我能用它做什么?为什么会发生?

//编辑

我尝试使用 close() 方法并在 new loop() 之前再次打开剪辑。同样的效果。

4

1 回答 1

1

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

于 2011-11-04T14:23:13.737 回答