什么是 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 秒),但在大规模点播和直播分发场景中表现优异,是目前最主流的流媒体分发协议。