← Blog.backToBlog

HLS 流媒体如何工作:协议详解

8 min read

HLS 协议栈

  • 应用——H.264/HEVC + AAC 等编码。
  • 传输封装——MPEG-TS(.ts)或分片 MP4。
  • 播放列表——M3U8 主列表与媒体列表。
  • 交付——普通 HTTP/HTTPS(CDN 友好)。

主播放列表结构

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=1280000,RESOLUTION=720x480
medium.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2560000,RESOLUTION=1280x720
high.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5120000,RESOLUTION=1920x1080
fullhd.m3u8

播放器选择变体后加载对应媒体列表。格式细节:M3U8 格式详解

媒体播放列表结构

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXTINF:10.000,
segment-001.ts
#EXTINF:10.000,
segment-002.ts
#EXT-X-ENDLIST

#EXT-X-ENDLIST 表示点播。直播列表省略它并持续更新。

自适应码率逻辑

ABR 监控下载速度、缓冲健康与设备能力,在片段之间切换变体。好的播放器切换几乎无感;差的会卡顿。解释:自适应码率流媒体

延迟时间线

经典 HLS 要等完整片段,延迟常 15–30 秒。LL-HLS 用部分片段和更快列表更新把延迟降到约 2–5 秒。权衡见:理解 HLS 延迟

常见问题解答

HLS 需要哪些文件?
播放列表(M3U8)加上片段文件。

谁决定画质?
通常由播放器 ABR 决定;用户可覆盖。

为什么 HLS 有延迟?
分片封装与缓冲本身就会增加数秒。

Chrome 怎么播 HLS?
用 hls.js 或在线播放器