我在我的应用程序中使用 AVPlayer API播放HLS流 . 我希望能够检测到由于网络带宽不足或连接质量低而导致视频播放停止的情况 .

有没有可靠的方法来检测视频播放是否实际在屏幕上正常播放?

在我的测试过程中,我看到以下情况,即使视频播放实际冻结在屏幕上,以下检查都会报告OK状态:

AVPlayer.status = .readyToPlay
AVPlayer.timeControlStatus = .playing
AVPlayerItem.status = .readyToPlay
AVPlayerItem.isPlaybackBufferEmpty = false
AVPlayerItem.isPlaybackLikelyToKeepUp  = true

并且 addBoundaryTimeObserver 回调被解雇了 .

其中一些最终变得消极,但只是在延迟之后 .

是否有100%可靠的方法来检测视频是否在设备上正常播放?