← Blog.backToBlog

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 吗?
能——它是纯文本;改完要仔细验证。

怎么学全标签?
扩展标签参考