1

我使用AVAudioPlayerNode循环播放缓冲区中的音频文件,并且需要能够在用户单击下一步时切换到下一个曲目,但在循环结束时切换,而不是在用户单击下一步时切换

这是我用来开始播放的代码

if loopPlayback == true {  
    audioPlayer.scheduleBuffer(buffer, at: nil, options: .loops, completionHandler: nil)
    audioPlayer.play()
    playPauseToggleState()  
}
4

1 回答 1

1

使用'函数的参数中的AVAudioPlayerNodeBufferOptions.interruptsAtLoop选项。这是一个例子:optionsAVAudioPlayerscheduleBuffer

self.player.scheduleBuffer(self.buffer, at: nil, options: [.interruptsAtLoop, .loops])

这行代码安排一个缓冲区永远循环播放。如果已经有东西在播放,它会在完成循环迭代后立即中断。否则,现在开始播放。当然,我假设播放器节点当前正在播放。

于 2020-01-16T10:17:55.810 回答