什么是 HLS 协议?
HTTP Live Streaming(HLS)是由苹果公司开发并于 2009 年推出的自适应比特率流媒体通信协议。它基于标准的 HTTP 传输,将视频流分割成一系列小的 TS 文件,并通过 M3U8 格式的播放列表进行索引。
核心优势:HLS 支持自适应比特率,播放器可根据网络状况实时切换不同质量的视频流,既保证了播放流畅性,又最大化了画质体验。
M3U8 文件结构解析
M3U8 文件本质上是一个 UTF-8 编码的文本文件,包含两种类型:
- 主播放列表(Master Playlist):列出所有可用码率的媒体播放列表
- 媒体播放列表(Media Playlist):列出具体的媒体片段 URL
主播放列表示例
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360
360p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1280x720
720p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4500000,RESOLUTION=1920x1080
1080p/index.m3u8
媒体播放列表示例
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:9.009,
seg000.ts
#EXTINF:9.009,
seg001.ts
#EXT-X-ENDLIST
关键标签详解
#EXTM3U 是所有 M3U8 文件的必要头部标识。#EXT-X-TARGETDURATION 定义每个媒体片段的最大时长(秒)。#EXTINF 指定下一个媒体片段的时长。#EXT-X-ENDLIST 表示这是点播流(非直播)。
自适应码率工作原理
播放器持续监测下载速度和缓冲状态,动态选择最合适的码率档位。网络好时自动切换到更高清晰度;带宽不足时降级到较低码率以保证连续播放,避免卡顿。
与其他流媒体协议对比
相比 RTMP 和 WebRTC,HLS 基于标准 HTTP 传输,天然支持 CDN 缓存加速,防火墙穿透能力强。虽然延迟较高(通常 8-30 秒),但在大规模点播和直播分发场景中表现优异,是目前最主流的流媒体分发协议。