什么是 HLS 直播流?
HLS 直播流是由 Apple 开发的一种基于 HTTP 的自适应码率视频传输协议。它将直播或点播媒体切片为由 M3U8 播放列表引用的片段。兼容的播放器可以从 Web 服务器或内容分发网络(CDN)获取这些切片,并能随着网络状况的变化在不同画质等级之间进行切换。
HLS 直播流是如何工作的?
HLS 工作流程包含三个阶段:准备媒体流、通过 HTTP 传输内容,以及在视频播放器中播放切片。
步骤 1:媒体编码与打包
源音频和视频被编码为一个或多个具有不同码率和分辨率的变体流。接着,分片器或打包系统将每个变体流分割为较短的媒体分片,并生成一个按播放顺序列出各分片的 M3U8 媒体播放列表。当存在多个变体时,多变体播放列表(主播放列表)会引用它们各自的媒体播放列表。
步骤 2:通过 HTTP 传输 HLS 切片
生成的播放列表和媒体分片发布在源站服务器上,视频播放器可以通过 HTTP 向其发起请求。对于大规模分发,CDN 可以在更靠近用户的边缘服务器上缓存这些文件,从而降低源站服务器的负载并提高传输效率。
步骤 3:获取并播放切片
视频播放器首先请求 HLS 播放列表。如果存在多变体播放列表,播放器会选择合适的变体并获取其媒体播放列表。随后下载列表中列出的分片并作为连续流进行播放,同时根据网络条件的变化在不同变体之间进行切换。对于直播流,播放器还会定期重新加载媒体播放列表以发现新生成的分片。
除了基本的传输流程外,HLS 的设计还支持在多变的网络环境和流媒体需求下实现稳定流畅的播放。这种灵活性体现在两个重要方面:自适应码率流媒体(有助于随着网络条件的变化保持播放质量)以及用于直播的低延迟传输方案。
什么是 HLS 中的自适应码率流媒体?
自适应码率流媒体是一种在网络状况发生变化时,自动在具有不同码率和分辨率的视频变体之间进行切换的播放技术。
HLS 通过多变体播放列表提供这些变体。在播放期间,播放器评估可用的网络吞吐量并选择合适的变体。
当带宽下降时,播放器可以切换到较低码率的变体以减少卡顿;当网络状况改善时,它可以切换回更高画质的变体。
通过使视频质量自适应可用吞吐量,自适应码率流媒体有助于平衡视频画质与播放稳定性,不过在网络状况波动时可能会观察到画质切换的变化。
什么是低延迟 HLS(LL-HLS)?
低延迟 HLS是 HLS 的一种扩展协议,旨在降低直播流的延迟。 LL-HLS 建立在相同的 HLS 架构之上,同样使用通过 HTTP 传输的播放列表和媒体分片。
在标准 HLS 中,播放器通常要等待完整的媒体分片生成后才会开始下载。LL-HLS 通过在分片生成的过程中即时提供更小的组成单元(称为部分切片)来减少这种等待延迟,允许播放器在整个切片完全生成之前就获取媒体数据。
为了进一步降低延迟,LL-HLS 还使用预加载提示让播放器提前请求后续媒体数据。通过阻塞式播放列表重载,服务器会在有新媒体可用时才响应播放列表更新请求,从而消除了重复轮询的需求。
这些功能共同减少了直播播放过程中的等待时间,同时保留了 HLS 易于 CDN 分发的优势模型。在实际应用中实现低延迟,仍需要打包、传输和播放整条链路的支持。
HLS 直播流有哪些优势与局限性?
HLS 广泛应用于跨各种设备、网络和地区的视频分发。其主要优势包括广泛的兼容性、可扩展的 HTTP 传输以及自适应播放能力。然而,它也带来了一些权衡,尤其是在对延迟敏感的场景以及需要处理多种视频渲染格式的工作流程中。
主要优势
-
广泛的设备支持:HLS 适用于众多移动设备、智能电视和流媒体平台。根据浏览器、播放器和媒体格式的不同,浏览器播放可以使用原生 HLS 支持或兼容的 JavaScript 播放器。
-
高扩展性的内容传输:HLS 将视频打包为可由 CDN 缓存并在边缘节点分发的播放列表和媒体切片,非常适合面向地理分布广泛的受众传输视频。
-
自适应视频画质:HLS 支持多个码率变体,使兼容的播放器能够随着网络条件的变化切换画质等级,减少卡顿缓冲。
主要局限性
-
直播延迟较高:HLS 播放通常需要等待新分片生成、列入播放列表、发起请求并缓冲完成,这会导致直播流相比 WebRTC 等实时协议距离实时现场画面存在更大的滞后。LL-HLS 降低了 HLS 的延迟,但低延迟播放依赖于兼容的编码、打包、CDN 分发和播放器支持。
-
编码与存储开销:基于自适应码率的 HLS 工作流需要为不同画质等级提供多个编码版本和播放列表。每个版本都会增加编码耗时、存储占用、打包工作量以及播放测试成本。
什么时候应该使用 HLS 直播流?
当您需要向不同地区和设备上的受众分发直播或点播视频,且受众覆盖范围的优先级高于实时双向交互时,请选择 HLS。
常见应用场景包括:
-
直播流与大规模广播:HLS 适用于体育赛事、新闻、音乐会以及其他需要触达广泛地区受众的大型直播活动。当对低延迟有较高要求时,LL-HLS 可以在保留基于 HTTP 的传输和 CDN 扩展能力的同时,将播放画面拉得更接近实时。
-
OTT 与视频点播:HLS 非常适合在手机、网页浏览器和智能电视上提供电影、剧集、回看内容以及录制赛事的在线视频流媒体平台。自适应码率流技术可根据网络变化调节播放画质,而 CDN 缓存则保障了大规模并发下的分发能力。
HLS 通常不太适合高度依赖超低延迟和双向实时互动的应用(如视频通话),对于这些场景,WebRTC 通常是更合适的技术选择。
HLS 与其他流媒体协议的对比
HLS 是视频流工作流程中使用的几种主要技术之一。其中一些协议提供了向观众分发视频的替代方案,另一些协议则主要负责视频推流、会话控制或实时通信。
下表对比了 HLS 与其他流媒体技术,重点展示了它们在用途、传输方式和延迟方面的差异。
| 技术 | 典型角色 / 应用场景 | 与 HLS 的主要区别 |
|---|---|---|
| RTMP | 直播推流采集 | 主要用于推流采集,而 HLS 用于向最终观众分发视频。 |
| RTSP | 流媒体会话控制 | 主要用于控制流媒体会话,而 HLS 通过 HTTP 播放列表和切片分发媒体。 |
| MSS | 早期自适应 HTTP 流媒体 | 使用 Smooth Streaming 清单文件,而不是 HLS M3U8 播放列表。 |
| MPEG-DASH | 自适应 HTTP 流媒体 | 使用 MPD 清单文件,而不是 HLS M3U8 播放列表。 |
| WebRTC | 实时双向互动通信 | 支持实时双向通信,而 HLS 侧重于一对多广播式分发。 |
| LL-HLS | 低延迟 HLS 传输 | 比标准 HLS 更早交付部分分片,以显著减少延迟。 |
| MoQ | 新兴的低延迟媒体传输协议 | 使用 QUIC 和 WebTransport,而不是 HLS 风格的 HTTP 播放列表和切片。 |
以下章节将重点介绍 RTMP、MPEG-DASH 和 WebRTC,因为它们分别代表了推流采集、自适应 HTTP 传输和实时交互三种截然不同的实现方式。
HLS 与 RTMP 对比
实时消息协议(RTMP)和 HLS 通常服务于直播工作流的不同阶段。RTMP 通常用于将直播信号从编码器传输到流媒体服务器,而 HLS 则负责通过 HTTP 将打包好的媒体内容分发给观众。
流媒体平台可以通过 RTMP 采集信号,然后对其进行处理并打包,以便通过 CDN 进行 HLS 分发。这两种协议通常相互配合使用,而不是直接相互竞争。
HLS 与 MPEG-DASH 对比
HLS 和 MPEG-DASH 是本次对比中最接近的替代方案。两者都支持基于 HTTP 的直播和点播视频自适应码率流传输,允许播放器随着网络状况的变化动态调整播放质量。
主要区别在于它们的清单文件格式和播放生态。HLS 使用 M3U8 播放列表,而 MPEG-DASH 使用媒体呈现描述(MPD)文件。选择哪种方案取决于目标设备、播放器兼容性以及现有的编码与分发工作流。
HLS 与 WebRTC 对比
WebRTC 和 HLS 针对的是不同的延迟要求和交互场景。WebRTC 支持浏览器或设备之间的实时音频、视频和数据交换,非常适合视频通话和交互式互动会话。
HLS 通常更适合一对多的视频分发场景,在此类场景中,广泛的受众覆盖和基于 CDN 的传输能力是首要考虑因素。而当观众或参与者需要以极低延迟进行沟通互动时,WebRTC 则更为适合。部分流媒体服务会结合使用这两种技术,以满足整体流媒体体验中不同环节的需求。
CDNetworks 是否支持HLS直播流?
CDNetworks 通过其直播加速和点播加速服务全面支持 HLS 直播与点播。
基于直播加速的HLS直播流
CDNetworks的直播加速通过 CDNetworks CDN 网络分发视频直播。根据配置的工作流,视频流可以通过推流域名接入,或者从源站服务器拉取,并通过分发域名传送给观众。
该服务支持 HLS 播放分发,并提供切片时长、初始播放列表切片数量和目标播放列表切片数量等可配置选项。这些设置允许流媒体运维人员根据具体应用需求灵活调整 HLS 分发机制。
基于点播加速的HLS
CDNetworks的点播加速支持 HLS 和 DASH 打包以及自适应码率流媒体。内容提供商可以配置多个码率和分辨率变体,以支持在不同设备和网络环境下的平稳播放。
结合使用这些服务,企业可以依托 CDN 基础设施和高度可配置的媒体分发工作流程,轻松分发直播与点播视频。
如何优化 HLS 直播流以实现更低延迟和更佳播放体验
优化 HLS 需要在播放延迟、起播时间、缓冲卡顿和推流稳定性之间取得平衡。单纯修改某一个播放列表或编码器参数并不一定能同时改善这四个维度。
作为 HLS 的早期采用者,CDNetworks 在优化 HLS 传输方面拥有深厚经验。根据这些经验,我们建议进行以下调整,以便在保持稳定可靠播放的同时降低延迟。
-
调优初始播放列表:CDNetworks 支持配置初始 HLS 播放列表中的切片数量。如果目标播放器能够以较少的分片启动播放,减少此切片数量可以缩短起播时间。请务必在目标播放器上充分测试该设置,以确保平稳播放。
-
协调关键帧间隔与切片时长:HLS 切片通常在关键帧边界进行切割,因此编码器的画面组(GOP)间隔会直接影响切片边界及媒体生成的及时性。请将画面组间隔与目标切片时长协同配置,避免单独盲目缩短画面组间隔。应在编码器、打包工作流以及目标播放器上联合验证这些配置。
-
配置目标播放列表切片数量:CDNetworks 直播配置允许调整分发前保留的切片数量。减少数量会缩短播放列表窗口,但这并不一定会自动降低播放延迟;同时,若分发或切片生成发生延误,也会压缩播放器的缓冲容错空间。建议在真实网络环境下,将该参数与分片时长、播放器缓冲策略一同进行综合测试。
HLS 直播流常见问题解答
HLS 使用的是 TCP 还是 UDP?
HLS 使用 HTTP 进行媒体分发,因此底层传输协议取决于 HTTP 的版本。HTTP/1.1 和 HTTP/2 通常基于 TCP 运行,而 HTTP/3 则基于 UDP 上的 QUIC 协议运行。
HLS 需要专用的流媒体服务器吗?
HLS 不需要专用的流媒体服务器,因为标准 Web 服务器或 CDN 均可分发 HLS 播放列表和媒体分片。不过直播流仍需要编码与打包工作流程来生成这些文件。
HLS 是免费使用的吗?
HLS 拥有公开规范,使用该协议本身通常无需支付针对该协议的特许授权费。但是,编解码器或数字版权管理(DRM)授权、编码、主机托管和 CDN 分发等环节可能会产生费用。
HLS 直播流的典型延迟是多少?
传统 HLS 的延迟通常在 12 到 30 秒之间,具体取决于切片时长、播放列表参数设置、播放器缓冲策略以及网络分发配置。当整条分发链路均支持低延迟特性时,LL-HLS 可以显著降低这一延迟。
