How can I check if my AVPlayer is buffering?

后端 未结 10 1081
后悔当初
后悔当初 2020-12-01 06:02

I want to detect if my AVPlayer is buffering for the current location, so that I can show a loader or something. But I can\'t seem to find anything in the documentation for

10条回答
  •  一向
    一向 (楼主)
    2020-12-01 06:47

    Please note that

    Use a weak reference to self in the callback block to prevent creating a retain cycle.

    func playRemote(url: URL) {
                showSpinner()
                let playerItem = AVPlayerItem(url: url)
                avPlayer = AVPlayer(playerItem: playerItem)
                avPlayer.rate = 1.0
                avPlayer.play()
                self.avPlayer.addPeriodicTimeObserver(forInterval: CMTimeMake(value: 1,
         timescale: 600), queue: DispatchQueue.main, using: { [weak self] time in
                    if self?.avPlayer.currentItem?.status == AVPlayerItem.Status.readyToPlay {
                        if let isPlaybackLikelyToKeepUp = self?.avPlayer.currentItem?.isPlaybackLikelyToKeepUp { 
                            self?.removeSpinner()
                        }
                    }
                })
            }
    }
    

提交回复
热议问题