• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何检测 AVPlayer 中的缓冲?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 12:15:23 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

在 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap