Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在AVPlayer中检测缓冲?_Ios_Video_Avplayer - Fatal编程技术网

Ios 如何在AVPlayer中检测缓冲?

Ios 如何在AVPlayer中检测缓冲?,ios,video,avplayer,Ios,Video,Avplayer,我有一个流媒体视频应用程序,我想知道如何检测该应用程序是否正在缓冲 在AVPlayer中,有一个currentItem.isPlaybackLikelyToKeepUp布尔值,它告诉您播放缓冲区何时可能保持当前下载速度,还有一个currentItem.isplaybackufferempty告诉您播放缓冲区何时为空 问题发生在视频播放时,视频暂停是因为互联网太慢。如果按下播放按钮,播放机的速率为1,但不播放 我如何检测视频暂停,因为它正在缓冲currentItem.isplaybackuffer

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

在AVPlayer中,有一个
currentItem.isPlaybackLikelyToKeepUp
布尔值,它告诉您播放缓冲区何时可能保持当前下载速度,还有一个
currentItem.isplaybackufferempty
告诉您播放缓冲区何时为空

问题发生在视频播放时,视频暂停是因为互联网太慢。如果按下播放按钮,播放机的
速率
为1,但不播放

我如何检测视频暂停,因为它正在缓冲
currentItem.isplaybackufferempty
即使在播放视频时也是真的


编辑:我组合了这两个选项,现在我显示的用于显示缓冲的加载程序仅在
currentItem.isplaybackufferempty&&时显示!currentItem.isPlaybackLikelyToKeepUp
,加载程序现在只在视频开始播放后几秒钟显示。

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

    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")
    }
}