如何将 m3u8 / HLS 流下载为 MP4
面向开发者和进阶用户的技术教程——将任意 HTTP Live Streaming 播放列表下载为单个本地 MP4 文件,包括主播放列表、AES-128 加密分片和直播流,无需命令行,无重新编码。
.m3u8 链接,粘贴到 SVD,选择画质版本,点击下载。SVD 自动处理主播放列表、加密解密和分片拼接。什么是 m3u8?
.m3u8 文件是一个 HTTP Live Streaming(HLS) 播放列表——这是一个文本文件,引用一系列短小的媒体分片。现代流媒体服务大多采用 HLS,因为它基于普通 HTTP(S) 传输,并能根据带宽自适应调整。
主播放列表大致长这样:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=2600000,RESOLUTION=1280x720
720p/playlist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1200000,RESOLUTION=854x480
480p/playlist.m3u8
而媒体播放列表(子播放列表)则引用实际的分片文件:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXTINF:10.0,
segment-001.ts
#EXTINF:10.0,
segment-002.ts
...
#EXT-X-ENDLIST
30 秒内找到 m3u8 链接
- 在 Chrome、Edge 或 Safari 中打开视频页面
- 打开开发者工具——Mac 按
⌘⌥I,Windows 按F12 - 切换到「网络」标签页
- 在过滤框中输入
m3u8 - 点击播放视频
- 主播放列表请求会出现——通常以
master.m3u8、playlist.m3u8或index.m3u8结尾 - 右键点击 → 复制 → 复制链接地址
4 步用 SVD 下载
安装 SVD
从官网首页下载 Mac 或 Windows 版本。macOS 版经过代码签名。
粘贴 m3u8 链接
切换到 SVD,剪贴板中的链接会被自动识别。也可以手动粘贴到链接输入框。
选择画质版本
SVD 列出主播放列表引用的所有画质版本。同等分辨率优先推荐 H.264,兼容性更广。
下载为单个 MP4
所有分片依次获取,必要时解密,然后拼接并封装为 MP4——无重新编码,无画质损失。
加密 HLS:AES-128 与 DRM 的区别
HLS 主要支持两种加密方案:
- 播放列表内引用密钥的 AES-128(
EXT-X-KEY:METHOD=AES-128,URI="key.bin")——密钥通过 HTTPS 分发,任何已认证的客户端均可访问。SVD 支持此方案。 - Widevine / FairPlay / PlayReady DRM——密钥只会分发给具备安全硬件通道的授权播放器。SVD 不支持 DRM 加密流。
如果视频在安装了 Widevine CDM 的浏览器中需要订阅才能播放,并不意味着 SVD 能抓取到它。只有非 DRM 的流才能下载——而这仍然覆盖了开放互联网上的绝大多数内容。
请求头、Referer 和身份验证
部分服务器会拒绝缺少特定 Referer 或 Origin 请求头的请求。SVD 内置的 yt-dlp 会自动为 1800 多个网站设置这些请求头。对于来自自建网站的独立 m3u8 链接,你可以从浏览器提供 Cookie——SVD 在 macOS(Chrome/Safari)和 Windows(Edge)上均可本地读取。
常见问题
m3u8 文件是什么?
它是一个 HLS 播放列表——一个列出一系列视频分片的文本文件。大多数流媒体服务使用 HLS 通过 HTTP 传输视频。
SVD 能下载 AES-128 加密流吗?
可以——当密钥通过 EXT-X-KEY 在播放列表中引用时,SVD 会获取密钥并实时解密。Widevine / FairPlay DRM 流不支持。
SVD 支持主播放列表吗?
支持。粘贴主播放列表链接,SVD 会为你列出所有画质版本。
SVD 能录制 HLS 直播吗?
可以。对于直播事件流,SVD 会实时录制,直到你停止或直播结束。
这和 yt-dlp 命令行有什么区别?
SVD 将 yt-dlp 和 ffmpeg 打包在原生图形界面中。自动更新提取器,经过代码签名——不会触发 Gatekeeper 警告。底层使用完全相同的成熟引擎。