在直播应用中,RTMP 和 HLS 是两种较为成熟且广泛应用的流媒体协议,基本上可以覆盖所有客户端。RTMP 是互联网 TCP/IP 五层体系结构中应用层的协议,主要优势就是实时性高,基本可将直播延时控制在3秒以内,因此广泛应用于低延时直播。

HLS是由 Apple 公司实现的基于 HTTP 的流媒体传输协议,拥有性能高、完美支持 iOS等优势。相比于 RTMP 协议,HLS 无需在移动端安装 APP,同时兼容HTML5,因此在移动直播的传播和体验上都拥有巨大的优势。不过HLS 的实时性较差,业界的平均直播延时达在10s ~35s。

在让许多用户最头痛的 HLS 延时问题上,又拍云做了针对性的技术优化,实现了 HLS 的超低延时,将 HLS 延时稳定控制在了 4 秒左右。

HLS 高延时原因分析

HLS 理论上延时=1个切片的时长+ 0-1个td(td是EXT-X-TARGETDURATION,可简单理解为播放器取片的间隔时间) + 0-n个启动切片(苹果官方建议是请求到3个片之后才开始播放) + 播放器最开始请求的片的网络延时(网络连接耗时)。

从延时组成公式可以看出,HLS 的延时主要是以下四部分组成:

  1. 服务器端的编码器和流分割器生成 TS 文件的时常,HLS 协议应用于直播视频传输时,是将媒体文件切割成了对应于媒体分段的 TS 文件。

  2. 播放器取片的间隔时间,在客户端开始下载之前,必须等待服务器端的编码器和流分割器至少生成一个TS 文件。

  3. 客户端下载切片的时间及启动播放所需的切片个数,通常下载完两个媒体文件后才能保证不同分段音视频间的无缝连接。

  4. 客户端最开始解码并开始播放的时间。

HLS的延时优化主要是针对前三个部分,第四个