OGeek|极客世界-中国程序员成长平台

标题: ios - 如何检测 AVPlayer 中的缓冲? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 12:15
标题: ios - 如何检测 AVPlayer 中的缓冲?

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

在 AVPlayer 中,currentItem.isPlaybackLikelyToKeepUp bool 值告诉您播放缓冲区何时可能跟上当前下载速度,currentItem.isPlaybackBufferEmpty告诉您播放缓冲区何时为空。

问题出现在播放视频时,由于网速太慢导致视频暂停。如果我然后按下播放按钮,播放器的 rate 为 1,但它没有播放。

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

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



Best Answer-推荐答案


这对我来说很好,也许它可以帮助,在 addPeriodicTimeObserver 中调用 self?.bufferState()

    private func bufferState() {
    if let currentItem = self.avPlayer.currentItem {
        if currentItem.status == AVPlayerItemStatus.readyToPlay {
            if currentItem.isPlaybackLikelyToKeepUp {
                print("laying ")
            } 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")
    }
}

关于ios - 如何检测 AVPlayer 中的缓冲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40149717/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4