优化HTTP实时流(HLS)以获得最佳用户体验2
介绍
为了更好地理解和利用AVFoundation功能,我观看了wwdc18会议502。我想传达优化HLS的信息,以提供更好的用户体验。
在上一篇文章中,我们学习了为KPI选择什么,以及如何减少启动时间。 本文,我们将介绍如何调查HLS播放中的停顿和错误
调查摊位
失速可能发生,并且确实发生!
听摊位通知
那么,如何检测您的应用程序停滞? 有停顿的通知。 AVPlayerItemPlaybackStalled是用于观察停顿的通知名称。
这是侦听停顿通知的代码示例。
检查AVPlayerItem状态,AVPlayerItem日志
当停顿时,您可以观察到一些东西来调查停顿。
首先,您可以检查AVPlayerItem.isPlaybackLikelyToKeepUp
发生停顿时, AVPlayerItem.isPlaybackLikelyToKeepUp为false ,您可以在那一刻开始加载指标。
其次,您可以从AVPlayerITemErrorLog , AVPlayerItemAccessLog查找详细日志。 如
- 错误说明
- 观察到的比特率和指示的比特率
减少失速
为了减少失速,应采取以下措施。
提供全套的比特率层
- 每个编解码器组合都需要自己的一组层
您的内容服务器和CDN必须
- 毫不延迟地提供媒体播放列表,片段和键
- 至少在每个目标持续时间更新实时播放列表
- 同步播放列表之间的不连续序列号
- 清楚表明服务器端故障
调查错误
我们如何调查错误?
调查方法很少
- 来自AVPlayerItem的错误和访问日志
- 来自AVPlayer,AVPlayerItem的错误属性
- 媒体验证工具来检测内容问题
AVPlayerItemErrorLog
- 这可能不是致命错误
- 详细信息在错误注释中
ErrorLog示例
- “ 15秒内未收到媒体文件”
- “ HTTP404:找不到文件”
- “细分超过指定的变体带宽”
- “不支持的加密格式”
AVPlayer,AVPlayerItem的“状态”属性
- 这可能是致命的错误
- AVPlayerItem.Error结束播放并从播放器队列中删除项目
媒体验证工具
- 您可以使用媒体验证工具来发布内容
- 在开发者网站上可用
结论
在本文中,我介绍了如何调查停顿和错误。
这是摘要
为了调查摊位,
- 收听通知
- 检查AVPlayerItemAccessLog和AVPlayerItemErrorLog
对于调查错误,
- 检查AVPlayerItemErrorLog
- 检查AVPlayer和AVPlayerItem的状态
- 检查AVPlayerItem.error
感谢您阅读本文。 如果对此有任何想法,请发表评论。 🙂