AVAudioPlayerNode scheduleBuffer interrupttsAtLoop立即中断

时间:2017-07-03 16:23:05

标签: ios swift avaudioengine avaudioplayernode

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

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

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)

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

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

1 个答案:

答案 0 :(得分:0)

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