读懂播放列表:EXT-X 标签逐个拆解
先看一份最小骨架
把标签对着实例读,理解最快:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:9.6,
seg000.ts
#EXTINF:8.3,
seg001.ts
#EXT-X-ENDLIST
这是一份已完结的点播清单:几行 #EXT-X 声明全局规则,两条 #EXTINF 逐个描述分片,末行宣告列表封口。
文件级标签:声明全局属性
#EXTM3U——首行身份证,缺了它播放器直接拒收;#EXT-X-VERSION——协议版本,决定哪些语法可用;#EXT-X-TARGETDURATION——单分片时长上限(取整秒),播放器据此估算刷新节奏;#EXT-X-MEDIA-SEQUENCE——首片序号,直播中每刷新一次整体前移,它是滑动窗口的坐标。
分片级标签:管好每一段
#EXTINF——紧跟其后那一行的时长,精确到小数;#EXT-X-ENDLIST——封口符,点播流必须有,直播流没有;#EXT-X-DISCONTINUITY——时间线断点,广告插播、编码切换处常见,遇到它播放器要重建解码状态;#EXT-X-BYTERANGE——声明"只取该文件的一段字节",多个虚拟分片共用一个物理文件时使用。
主播放列表:多码率的路标
当 m3u8 里出现 #EXT-X-STREAM-INF:BANDWIDTH=2800000,RESOLUTION=1920x1080 这样的行,它就是主清单:每个标签行下面跟着一个子清单地址,播放器按当前带宽与屏幕挑选合适的一路实时切换。同一份内容通常由此衍生出从 360p 到 1080p 的多个版本。
加密与特殊场景标签
#EXT-X-KEY——分片解密三要素:算法、密钥地址、IV;作用域从声明处持续到下一个 KEY 出现为止;#EXT-X-MAP——fMP4 场景的初始化段声明,CMAF 打包的流都带它;#EXT-X-PART——LL-HLS 的部分分片,直播低延迟改造的关键角色。
这些标签覆盖了日常能见到的绝大多数清单。加密细节可深入阅读 AES-128 原理;想动手生成自己的清单,自建 HLS 服务器 一文附有完整命令。