我想知道当我点击播放按钮(player.play()
)时如何检查 AVPlayer
没有播放音乐并且当前(正在缓冲)或加载)由于互联网连接速度慢或其他原因,并检查缓冲后何时播放音乐。
因为我需要在“播放”按钮上添加 UIActivityIndicatorView
。当点击“播放”按钮时,它会产生动画直到缓冲,当 AVPlayer 在缓冲后播放歌曲时,它会停止动画,当它再次开始缓冲时,它会再次产生动画。
谁能告诉我如何用这样简单的方法做到这一点
if (player is buffering){
activityIndicator.tartAnimating()
}else if player is playing music{
activityIndicator.stopAnimating()
}
并使用 NSTimer.scheduledTimerWithTimeInterval(0.05, target: self,selector: "check", userInfo: nil, Repeats: true) 一次又一次地检查
或者还有其他简单的解决方案吗? 谢谢。
最佳答案
这似乎与我在这里回答的问题类似:https://stackoverflow.com/a/42148482/5100819
当 AVPlayer 完成缓冲并开始实际的声音播放时,我们用来更新 UI 的方法可能会完成这项工作。我们使用边界时间在播放开始时(特别是播放 1/3 秒后)执行一个 block ,以便在听到音频的同时更新 UI:
let times = [NSValue(time:CMTimeMake(1,3))]
_ = self.player.addBoundaryTimeObserver(forTimes: times, queue: DispatchQueue.main, using: {
[weak self] time in
// Code to update the UI goes here, e.g.
activityIndicator.stopAnimating()
})
我在我们公司博客上有关于该方法(以及示例 Xcode 项目)的更多详细信息:http://www.artermobilize.com/blog/2017/02/09/detect-when-ios-avplayer-finishes-buffering-using-swift/
关于ios - 检查AVPlayer缓冲和播放状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37898901/