2017-07-03 58 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。