流媒体 HTTP Live Streaming

M3U8 / HLS

苹果发明了它,每台苹果设备都播放它,但没有一个会保存它。

简短结论

.m3u8 文件是一个播放列表,而不是视频:几千字节的文本,列出了要按顺序获取的数千个小片段。这种设计就是 HLS 在每台 Apple 设备上完美运行以及“保存此文件”生成文本文档的原因。下载一个意味着获取每个段并重建一个从未存在过的文件。

2026年7月30日

系统原生即可打开

iPhone · iPad 支持
Mac 支持
FoxDL 支持

HLS 是 Apple 自己的规范,在所有地方(Safari、AVPlayer、AirPlay)都有一流的支持。系统中没有任何地方支持把直播流转换为磁盘上的文件。播放和保存是完全不同的问题。

基本信息

姓名 HTTP 直播;播放列表是 UTF-8 格式的 M3U
种类 流协议,以文本播放列表形式提供
扩展 .m3u8(播放列表)、.ts 或 .m4s(它指向的段)
已发表 2009年,苹果; 2017 年标准化为 RFC 8216
典型段长度 每个 2 到 10 秒 — 一小时的视频相当于数百到数千个文件
主控与媒体播放列表 大师列出了质量等级;每个点都指向实际片段的媒体播放列表
片段内的视频 H.264 或 HEVC,偶尔为 AV1
直播 播放列表每隔几秒重新获取一次,并随着广播的继续而增长

目录,而不是书

在文本编辑器中打开 .m3u8,您会发现几十行:标题、一些参数和一长串地址。这就是整个文件。该视频位于其他地方,被切成每段几秒钟的片段,作为数千个独立的小文件存放在服务器上。

播放器读取列表,获取前几个片段,开始播放,并继续提前获取。当您的连接速度变慢时,它会切换到主播放列表中列出的较低质量的变体(一组不同的片段,以不同的比特率),并在片段之间进行切换,以便您看到质量变化而不是暂停。这种自适应切换是该格式获胜的原因。

这也解释了一件令人惊讶的事:根本没有单一的文件存在。你正在观看的电影不曾以一个物体的形式存在于任何地方。它是一千个片段和一套获取它们的说明。

为什么保存它会给你一个文本文件

因为你保存下来的正是这些。浏览器请求了你给的地址,收到 4 KB 的播放列表,并将它们写入磁盘。你实际观看的内容全部通过上千个独立请求到达,而保存操作对此一无所知。

正确下载 HLS 意味着执行播放器所做的操作,但下载到磁盘:读取播放列表,选择质量变体,按顺序获取每个片段,然后将它们拼接到一个容器中。最后一步称为 重新混合 - 视频和音频不会重新编码,只会重写为具有适当索引的单个 MP4,以便可以擦除结果。

有两件事让这件事比听起来更困难。段地址通常是相对的,并且每个会话都会发生变化,因此一小时前获取的列表可能已失效。并且流经常使用播放列表中引用的密钥进行加密、单独传送并在播放期间轮换。

如何把它存到设备上

仅适用于您有权保留的流媒体——您自己的录音、您自己的 IPTV 订阅、提供下载的广播公司。接下来是该机制的工作原理,而不是允许将其指向任何地方。

  1. 让下载引擎处理这些段

    获取 1000 个文件并重新混合它们正是 FoxDL 的下载器对 HLS 源所做的工作:它遍历播放列表,并行拉取片段,然后写入一个像普通文件一样擦除的 MP4。到达的是一个文件,而不是一个文件夹。

  2. 有直接文件可用时就选它

    许多网站同时提供 HLS 和普通渐进式 MP4。 MP4 是一种请求,一种文件,无需重建 — 在提供时始终是更好的选择。

  3. 接受有些无法保留的事实

    受 DRM(FairPlay、Widevine)保护的流是端到端加密的,并且设计上不可下载。没有任何工具可以改变这一点,而声称可以改变这一点的人却在撒谎。

HLS 下载出错的地方

没有搜索栏的文件

不重新混合的片段连接生成一个没有索引的可播放文件。它从头开始播放并且不会跳转。重新混合会写入修复它的索引。

永远不会结束的直播

现场播放列表没有尽头——它不断增长。下载一个就是录音,停止就停止,而不是文件结束就停止。

昨天有效的链接

播放列表地址通常是经过签名且有时间限制的。今天早上保存的 .m3u8 经常到下午就找不到任何内容。

查看完整版 下载管理器所做的事情是网络浏览器所不做的 为什么当您切换应用程序时传输会停止,恢复真正需要什么,以及流如何变成文件。

关于此格式的常见问题

这些信息的参考来源

相关格式

你的媒体库,终于汇聚一处。

免费下载。无需账号,无需注册,不用交出任何信息。

现已上架 App Store