在WWDC 2019上,Roger Pantos宣布了Apple针对HLS的最新规范,其变化旨在减少实时视频流的延迟。本文来自Mux流媒体专家Phil Cluff,LiveVideoStack进行了翻译。
文 / Phil Cluff
翻译 / John
原文
https://mux.com/blog/the-community-gave-us-low-latency-live-streaming-then-apple-took-it-away/
在WWDC 2019上,Apple 依照惯例宣布了一系列的软件更新。并且像过去4年的传统一样,Roger Pantos上台宣布了HTTP直播视频流(HLS)规范的最新变化,今年的变化旨在减少实时视频流的延迟,但这样做的代价是什么呢?
HLS是一种分段传输技术,支持向设备进行实时和点播视频流传输。虽然HLS是为苹果设备设计的,但现在也已经被广泛应用于视频流生态系统,包括浏览器、智能电视、机顶盒和游戏机。HLS是一个易于理解和实现的简单协议,开发者可以提供一个主播放列表(通常称为清单)文本文件,该文件描述了可用内容的不同分辨率和码率组合,开发者可以为每种组合提供单独的播放列表,此列表包含媒体片段、持续时间以及获取它们的URL。
虽然HLS具有简单、易扩展等优势,但当被用于实时流式传输时,很容易出现高延迟问题。关于这点,我们将重点讨论“wall-clock”或者“glass-to-glass”延迟,即从发生IRL事件开始到被终端用户看到之前的时间。
在HLS中,延迟与正在使用的媒体片段的持续时间密切相关。通常情况下,提供可接受的流媒体体验使用的片段持续时间最低界限为2s,这种情况下产生的延迟大约为10秒;而使用更长持续时间的片段设置的传统HLS流,延迟可能会达到30秒以上。
在今年的WWDC上,Pantos宣布Apple更新了HLS,加入了新的低延迟模式。有趣的是,这不是第一次尝试着为低延迟HLS编写规范。基于两年多之前发布的白皮书,视频开发者社区使用的低延迟HLS开发规范也已经有一年多的时间了。表面上使用视频开发者社区的方法更简单,同时可部署更广泛且高可用的技术。那么为什么Apple没有使用视频开发者社区的解决方案呢?让我们来看看Apple所采取的方法与其它社区一直在做的工作有何不同。
Apple的低延迟HLS(ALHLS)
首先,让我们看看Apple的低延迟HLS解决方案是如何工作的。你可以在这里观看演示并阅读说明。
(https://developer.apple.com/videos/play/wwdc2019/502/)
1. 媒体分片
ALHLS会以持续时间为250-300ms的TS或CMAF块的形式,生成部分媒体的分片片段。其中包含几个完整的视频或音频帧,但这可能不包括完整的GOP(图像组或一组序列独立的视频帧),Apple将这些称为“部件”。