← Blog.backToBlog

HLS 协议详解:规范概念说明

8 min read

协议构建块

HLS 的核心是:通过 HTTP 交付的变体 + 片段 + 播放列表。客户端解析列表、调度媒体下载、按需解密,并追加到媒体缓冲以播放。

版本与兼容性

播放列表声明 #EXT-X-VERSION。更高版本解锁功能(字节范围、高级编码、低延迟特性)。播放器若不支持所需版本可能失败——版本只提到你需要的高度。

播放列表类型

  • VOD——完整,有 ENDLIST。
  • EVENT——只增不减的增长列表。
  • 直播滑动窗口——更新并丢弃旧片段。

直播 vs 点播

值得了解的媒体特性

  • 间断——广告插入或编码变化。
  • 密钥——通过 EXT-X-KEY 声明 AES-128 / SAMPLE-AES。
  • 备用rendition——通过 EXT-X-MEDIA 的音轨/字幕。
  • 起始偏移——EXT-X-START 建议。

标签参考:M3U8 扩展标签

客户端播放循环

  1. 拉取主播放列表。
  2. 选择变体(ABR 或手动)。
  3. 拉取媒体播放列表。
  4. 下载/解密片段进入缓冲。
  5. 直播则重新加载列表并继续。

实现角度:HTML5 M3U8 播放器内部

常见问题解答

HLS 是像 RTMP 那样的传输吗?
不是——它是一种 HTTP 自适应流媒体方法。

官方思路记录在哪?
苹果的 HLS 编写/规范材料,以及现代版本的 IETF HLS 草案/RFC。

需要每个高级标签吗?
不需要——从最小集开始,按需增加。

怎么调试协议问题?
读播放列表文本与播放器网络日志。