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 或在线播放器。