优化HTTP实时流(HLS)以获得最佳用户体验2

介绍

为了更好地理解和利用AVFoundation功能,我观看了wwdc18会议502。我想传达优化HLS的信息,以提供更好的用户体验。

在上一篇文章中,我们学习了为KPI选择什么,以及如何减少启动时间。 本文,我们将介绍如何调查HLS播放中的停顿和错误

调查摊位

失速可能发生,并且确实发生!

听摊位通知

那么,如何检测您的应用程序停滞? 有停顿的通知。 AVPlayerItemPlaybackStalled是用于观察停顿的通知名称。

这是侦听停顿通知的代码示例。

检查AVPlayerItem状态,AVPlayerItem日志

当停顿时,您可以观察到一些东西来调查停顿。

首先,您可以检查AVPlayerItem.isPlaybackLikelyToKeepUp

发生停顿时, AVPlayerItem.isPlaybackLikelyToKeepUpfalse ,您可以在那一刻开始加载指标。

其次,您可以从AVPlayerITemErrorLogAVPlayerItemAccessLog查找详细日志。 如

  • 错误说明
  • 观察到的比特率和指示的比特率

减少失速

为了减少失速,应采取以下措施。

提供全套的比特率层

  • 每个编解码器组合都需要自己的一组层

您的内容服务器和CDN必须

  • 毫不延迟地提供媒体播放列表,片段和键
  • 至少在每个目标持续时间更新实时播放列表
  • 同步播放列表之间的不连续序列号
  • 清楚表明服务器端故障

调查错误

我们如何调查错误?

调查方法很少

  • 来自AVPlayerItem的错误和访问日志
  • 来自AVPlayer,AVPlayerItem的错误属性
  • 媒体验证工具来检测内容问题

AVPlayerItemErrorLog

  • 这可能不是致命错误
  • 详细信息在错误注释中

ErrorLog示例

  • “ 15秒内未收到媒体文件”
  • “ HTTP404:找不到文件”
  • “细分超过指定的变体带宽”
  • “不支持的加密格式”

AVPlayer,AVPlayerItem的“状态”属性

  • 这可能是致命的错误
  • AVPlayerItem.Error结束播放并从播放器队列中删除项目

媒体验证工具

  • 您可以使用媒体验证工具来发布内容
  • 在开发者网站上可用

结论

在本文中,我介绍了如何调查停顿和错误。

这是摘要

为了调查摊位,

  • 收听通知
  • 检查AVPlayerItemAccessLog和AVPlayerItemErrorLog

对于调查错误,

  • 检查AVPlayerItemErrorLog
  • 检查AVPlayer和AVPlayerItem的状态
  • 检查AVPlayerItem.error

感谢您阅读本文。 如果对此有任何想法,请发表评论。 🙂