1

我有一个 AVAudioPlayerNode (playerNode) 和两个 AVAudioPCMBuffer (buffer1, buffer2) 设置。

我还有一个 10 秒的 AVAudioTime (futureTime) 设置。

var options: AVAudioPlayerNodeBufferOptions = []
options.insert(.interruptsAtLoop)
options.insert(.loops)

playerNode.scheduleBuffer(buffer1!,
    at: futureTime,
    options: options,
    completionHandler:nil)

上面等待10秒后播放buffer1并循环播放。

调用以下代码:

playerNode.scheduleBuffer(buffer2!,
    at: futureTime,
    options: options,
    completionHandler:nil)

导致缓冲区 1 停止播放,缓冲区 2 立即启动,而不是等待至少 10 秒,然后在缓冲区 1 的下一个循环中中断。

任何想法我做错了什么导致这种立即中断而不是按照指示在循环中中断?

4

1 回答 1

0

我没有直接使用 AVAudioTime 类,但是查看 API 它似乎代表了一个确切的时刻,而不是一个相对的时刻。如果这是真的,那么通过使用相同的“futureTime”两次,您将调度缓冲区 2 与缓冲区 1 在同一时间启动。也许您可以在第一个时间后 10 秒计算futureTime2。

于 2017-08-10T16:36:07.887 回答