如果您听说过“M3U”这个词,但读到的解释一上来就是 MIME 类型和扩展属性,那这篇才是您想要的版本。M3U 是一个包含媒体链接列表的纯文本文件。整个概念就这么多,其余全是细节。

本文拆解它里面到底装了什么、“M3U”“M3U8”和“扩展 M3U”有何区别,以及为什么每家 IPTV 服务商都用这个格式。

最简单的 M3U

三行就是完整的格式:

#EXTM3U
#EXTINF:-1,Big Buck Bunny
https://example.com/bunny.mp4

一行头部(#EXTM3U),一条频道条目(一行 #EXTINF 加上后面的链接),完事。任何支持 M3U 的媒体播放器都能读懂这三行并播放“Big Buck Bunny”。您可以把上面的示例存成 test.m3u,双击它,VLC 就会播放。没有编译器、没有编码规则、没有模式校验器。它就是文件格式界的购物清单。

#EXTINF 里到底有什么

现实中 IPTV 播放列表里的每个频道更像这样:

#EXTINF:-1 tvg-id="bbc1.uk" tvg-logo="https://logos.example/bbc1.png" group-title="UK",BBC One HD
http://provider.example/live/abc123/index.m3u8

各部分的含义:

  • -1 —— 时长(秒)。直播频道永远是 -1(意思是“未知/无限”)。VOD 条目这里会填真实时长。
  • tvg-id —— 用于把该频道与其电子节目单条目匹配的标识符。如果 EPG 文件里列有 <channel id="bbc1.uk">,IPTV 播放器就知道那些节目属于这个频道。
  • tvg-logo —— 频道台标的链接。可选;缺失时播放器显示占位图。
  • group-title —— 该频道在播放器中所属的分类。约定俗成的名字有“UK”“Sports”“Movies”“News”。
  • BBC One HD —— 逗号之后的一切都是显示用的频道名。

下一行还有链接,那才是真正的直播流。通常是 HLS 播放列表(以 .m3u8 结尾)或 TS 流(以 .ts 结尾)。

真实服务商的播放列表,无非就是几千条这样的条目摞在一起。

“M3U8”是什么意思

M3U8 是同一格式的 UTF-8 编码版。.m3u8 扩展名之所以存在,是因为最初的 M3U 规范假定 Latin-1 或本地代码页,无法表示阿拉伯语、西里尔语或亚洲语言的频道名。M3U8 解决了这个问题。

在现代 IPTV 中,实践上一切都是 M3U8,哪怕文件名叫 .m3u。把它们当同义词就好。

“M3U 链接”是什么

当 IPTV 服务商发给您一条这样的链接:

http://provider.example:8080/get.php?username=ABC&password=XYZ&type=m3u_plus

这条链接在被请求时会返回一个 M3U 文件。服务商把您的凭据嵌进去、即时生成这个文件。文件本身就是上文描述的纯文本格式——只是通过 HTTP 送达,而不是作为邮件附件发给您。

想看看服务商到底发了什么,把链接粘到浏览器里即可。大多数浏览器会直接显示原始文本。(如果变成下载而不是显示,就用文本编辑器打开下载的文件。)

导入前如何验证播放列表

IPTV 新手最实用的技能:在把播放列表导入应用之前先确认它能用。本站免费的 M3U 播放列表测试器接收链接、抓取文件、解析频道列表,并并行探测前 100 路直播流,告诉您有多少路连通。如果答案是“零”,那是服务商坏了;别在播放器上浪费时间。

之所以能这么快,正是因为 M3U 格式足够简单——几秒钟就能验证整条链路,什么都不用安装。

手机屏幕显示“添加您的播放列表”,带有 M3U 链接输入框。

实际操作中,导入 M3U 就是粘贴一下——剩下的解析交给播放器。

为什么服务商都用 M3U

这个格式已有 25 年以上历史,最初是为 Winamp 的 MP3 播放列表设计的。它活下来有两个原因:生成极其简单(任何后端都能把几千行 #EXTINF 拼在一起),而且有史以来的每个媒体播放器都能读它。没有真正的替代品。有人尝试过——JSPF、XSPF——但都没流行起来。

今天做播放器就得支持 M3U,因为所有人都在用 M3U;做服务商就得提供 M3U,因为每个播放器都能读。这个格式不会消失。

自己编辑 M3U

因为是纯文本,任何文本编辑器都能编辑播放列表。常见的理由:

  • 删掉永远不看的频道——服务商给了您 80 个国家的 5000 个频道,您只看 200 个。存一个精简版。
  • 重新分类——把 group-title="UK Sports" 改成 group-title="Sports" 来合并分组。
  • 修复坏台标——把失效的 tvg-logo 链接换成能用的。
  • 合并多家服务商——把两个 M3U 文件的频道粘进同一个文件。大多数播放器都能正常读取。

编辑后的文件和原版用法相同。本地存成 my-playlist.m3u,然后让播放器指向这个文件(而不是链接)。

它不是什么

M3U 不是:

  • 视频文件。它是指向视频的指针列表。
  • 协议。它是文件格式,它指向的直播流可以用任何协议。
  • 让盗版频道能用的法宝。M3U 只是文本;关键在于里面的链接是否有效,以及链接背后的直播流是否合法发布。

理解了“一个列着链接的文本文件”,您就理解了 M3U。其余的都是播放器和服务器的事。想看更大的图景,请见我们的 IPTV 大白话指南;想了解服务商可能提供的另一种格式,请见 Xtream Codes 与 M3U