M3U8 文件格式详解 — 标签、主列表 vs 媒体 + 试播
8 min read
M3U8 文件结构概览
M3U8 文件按行组织。每行要么是标签(以 # 开头),要么是 URI(片段或其他播放列表的路径/URL)。结构因主播放列表(列画质变体)与媒体播放列表(列实际片段)而不同。完整标签:M3U8 扩展标签参考。
边学边播:把任意 M3U8 地址贴到免费在线播放器,对照下文标签说明。
主播放列表结构
主播放列表指向多个变体流:
#EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=1280000,RESOLUTION=720x480,CODECS="avc1.66.30,mp4a.40.2" medium.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=2560000,RESOLUTION=1280x720,CODECS="avc1.77.30,mp4a.40.2" high.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=5120000,RESOLUTION=1920x1080,CODECS="avc1.77.30,mp4a.40.2" fullhd.m3u8
播放器按带宽选择变体,再加载对应媒体播放列表。
媒体播放列表结构
媒体播放列表列出片段:
#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10.000, seg-0.ts #EXTINF:10.000, seg-1.ts #EXTINF:10.000, seg-2.ts #EXT-X-ENDLIST
#EXT-X-ENDLIST 表示点播(完整)。直播播放列表省略它并持续更新。
关键标签参考
| 标签 | 用途 | 是否必需 |
|---|---|---|
| #EXTM3U | 文件头(首行) | 是 |
| #EXT-X-VERSION | 协议版本 | 是 |
| #EXT-X-TARGETDURATION | 最大片段时长 | 是(媒体) |
| #EXTINF | 片段时长 | 是(媒体) |
| #EXT-X-MEDIA-SEQUENCE | 首片段序号 | 常有 |
| #EXT-X-KEY | 加密密钥 | 加密时 |
| #EXT-X-STREAM-INF | 变体描述 | 仅主列表 |
| #EXT-X-ENDLIST | 点播结束 | 仅点播 |
M3U8 文件常见错误
- 缺少 #EXTM3U——不被识别为播放列表。
- 相对路径损坏——基础 URL 错误时片段 404。
- TARGETDURATION 过小——片段超长时播放器异常。
- 点播缺少 ENDLIST——播放器会一直等新片段。
- 编码错误——M3U8 必须是 UTF-8。
常见问题解答
主播放列表和媒体播放列表有什么区别?
主列表列画质变体;媒体列表列实际片段。
所有 M3U8 都有 ENDLIST 吗?
不是——直播会省略它。
能手改 M3U8 吗?
能——它是纯文本;改完要仔细验证。
怎么学全标签?
见扩展标签参考。