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 扩展标签。
客户端播放循环
- 拉取主播放列表。
- 选择变体(ABR 或手动)。
- 拉取媒体播放列表。
- 下载/解密片段进入缓冲。
- 直播则重新加载列表并继续。
实现角度:HTML5 M3U8 播放器内部。
常见问题解答
HLS 是像 RTMP 那样的传输吗?
不是——它是一种 HTTP 自适应流媒体方法。
官方思路记录在哪?
苹果的 HLS 编写/规范材料,以及现代版本的 IETF HLS 草案/RFC。
需要每个高级标签吗?
不需要——从最小集开始,按需增加。
怎么调试协议问题?
读播放列表文本与播放器网络日志。