如何在AVPlayer中检测缓冲?

时间:2016-10-20 08:51:15

标签: ios video avplayer

我有一个流媒体视频应用,我想知道如何检测该应用是否正在缓冲。

在AVPlayer中,有currentItem.isPlaybackLikelyToKeepUp布尔值告诉您播放缓冲区何时可能保持当前下载速度,而currentItem.isPlaybackBufferEmpty告诉您何时播放缓冲区为空。< / p>

视频播放时出现问题,视频暂停,因为互联网太慢。如果我然后按播放按钮,播放器的rate为1,但它没有播放。

如何检测视频暂停,因为它正在缓冲?即使正在播放视频,currentItem.isPlaybackBufferEmpty也是如此......

编辑:我已将这两个结合起来,现在我显示的加载器显示缓冲仅在currentItem.isPlaybackBufferEmpty && !currentItem.isPlaybackLikelyToKeepUp时显示,加载器现在仅在视频开始播放后几秒钟显示。

1 个答案:

答案 0 :(得分:3)

这对我来说很好,也许可以提供帮助,在self?.bufferState()内拨打addPeriodicTimeObserver

    private func bufferState() {
    if let currentItem = self.avPlayer.currentItem {
        if currentItem.status == AVPlayerItemStatus.readyToPlay {
            if currentItem.isPlaybackLikelyToKeepUp {
                print("Playing ")
            } else if currentItem.isPlaybackBufferEmpty {
                print("Buffer empty - show loader")
            }  else if currentItem.isPlaybackBufferFull {
                print("Buffer full - hide loader")
            } else {
                print("Buffering ")
            }
        } else if currentItem.status == AVPlayerItemStatus.failed {
            print("Failed ")
        } else if currentItem.status == AVPlayerItemStatus.unknown {
            print("Unknown ")
        }
    } else {
        print("avPlayer.currentItem is nil")
    }
}