【问题标题】:How to stop an avaudioplayernode set to loop indefinitely at the end of current loop如何在当前循环结束时停止设置为无限循环的avaudioplayernode
【发布时间】:2019-06-20 21:30:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: swift avaudioplayernode


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多