我有一个流媒体视频应用,我想知道如何检测该应用是否正在缓冲。
在AVPlayer中,有currentItem.isPlaybackLikelyToKeepUp
布尔值告诉您播放缓冲区何时可能保持当前下载速度,而currentItem.isPlaybackBufferEmpty
告诉您何时播放缓冲区为空。< / p>
视频播放时出现问题,视频暂停,因为互联网太慢。如果我然后按播放按钮,播放器的rate
为1,但它没有播放。
如何检测视频暂停,因为它正在缓冲?即使正在播放视频,currentItem.isPlaybackBufferEmpty
也是如此......
currentItem.isPlaybackBufferEmpty && !currentItem.isPlaybackLikelyToKeepUp
时显示,加载器现在仅在视频开始播放后几秒钟显示。
答案 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")
}
}