2017-07-03 59 views
0

我有一个AVAudioPlayerNode(playerNode)和两个AVAudioPCMBuffer(buffer1,buffer2)设置。AVAudioPlayerNode scheduleBuffer interruptsAtLoop立即中断

我也有一个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) 

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

任何想法我做错了,这是造成这种立即中断,而不是按照指示在循环中断?

回答

0

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