我正在我的应用程序中使用AVPlayer API播放一个HLS流。我希望能够检测到由于网络带宽不足或连接质量低而导致视频播放中断的情况。
是否有任何可靠的方法来检测视频回放是否在屏幕上正常播放?
在我的测试中,我看到了以下检查都在报告OK状态的情况,尽管视频播放实际上是冻结在屏幕上的:
AVPlayer.status = .readyToPlay
AVPlayer.timeControlStatus = .playing
AVPlayerItem.status = .readyToPlay
AVPlayerItem.isPlaybackBufferEmpty = false
AVPlayerItem.isPlaybackLikelyToKeepUp = trueaddBoundaryTimeObserver回调也被触发。其中一些最终会变成负面的,但只是在延迟之后。
是否有任何100%可靠的方法来检测视频是否真的在设备上播放良好?
发布于 2018-12-15 11:21:10
要确保媒体播放得很好,请查看AVPlayerItem的rate。
此外,您还可以使用AVPlayerItem的通知来检测某些错误:
AVPlayerItemPlaybackStalledAVPlayerItemFailedToPlayToEndTimeAVPlayerItemDidPlayToEndTime关于您的信息,可以在缓冲区为空时触发AVPlayerItemDidPlayToEndTime,和网络关闭。
这里有一个例子:PlaybackObservingService
https://stackoverflow.com/questions/53448696
复制相似问题