N_m3u8DL-RE 完整指南:一条命令下载解密 m3u8、MPD、ISM 流媒体
【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE
手头拿到一条.m3u8课程链接,浏览器里打开却只有黑屏或卡住不动——内容被切成了成百上千个小分片,其中不少还带着加密。这就是N_m3u8DL-RE要解决的问题:一款免费、跨平台的流媒体下载工具,支持 HLS(m3u8)、DASH(MPD)、微软 Smooth Streaming(ISM)三大协议,从解析、解密到合并成可播放文件,全程一条命令完成。无论 Windows、macOS 还是 Linux,行为完全一致。
它是什么:一个把"分片 + 加密 + 合并"全包办的下载器
传统下载器只管"把文件存下来",但流媒体的麻烦在于:你拿到的不是一个文件,而是一个播放列表,指向大量带鉴权、可能带加密的分片,最后还得拼回来。N_m3u8DL-RE 把这三件事做进同一个流程——读取播放列表、按需取流、并行下载分片、解密后合并输出。你只需要给一个链接,剩下的交给它。
项目源码按职责拆分为 解析器模块、加密工具 和 下载引擎 等部分,完整参数说明 在仓库 README 中可直接查看。
核心功能:从解析到合并的完整链路
多协议解析:m3u8、MPD、ISM 都能读
内置 HLS、DASH 2.0、MSS 三套解析器,自动识别输入链接的类型,读出色度、码率、语言、字幕等元数据。好处是同一套命令通吃主流流媒体平台,不需要为不同格式换工具。想验证解析能力的,可以直接试 仓库自带的测试流列表。
自动解密:AES-128、ChaCha20、MP4 CENC 全覆盖
流媒体的"锁"主要有几种:HLS 的 AES-128、较新的 HLS ChaCha20 加密,以及 DASH/ISOBMFF 的 CENC/FAIRPlay 类密钥方案。工具内置 AES 与 ChaCha20 解密实现(见 Crypto 目录),MP4 CENC 内容则自动调用 mp4decrypt、Shaka Packager 或 ffmpeg 完成,三者可通过参数切换。对使用者来说意味着:拿到 KID 和 KEY 之后,解密环节基本不用手动处理。
多线程并发下载:分片拆开、并行拉取
下载线程数默认等于本机 CPU 核心数,大量分片并行请求,再按顺序落盘。相比单线程工具,大文件和网络分片多的场景下耗时明显缩短;线程数、单片重试次数、请求超时都可以单独调节。
自动合并与混流:分离的音视频一键合成
下载的音视频流通常是分开的,工具在下载结束后调用 ffmpeg(或 mkvmerge)自动混流为 mp4 或 mkv 容器,字幕一并封装。不需要自己再去跑一遍 ffmpeg,也不用关心临时文件——默认完成后自动清理。
直播录制:边下边合,支持定时停止
直播场景下它能持续拉取新分片、实时合并成完整文件,也可以走"管道 + ffmpeg"直接把数据混流进 TS 文件,省去落盘再合并的等待。配合--live-record-limit可以设定录制时长,录满自动收尾。
正则选流:按分辨率、语言、编码挑流
这是容易被忽略但很实用的功能。视频、音频、字幕轨都支持用正则表达式筛选,例如只要 4K 的 HEVC 视频、只要日语和英语音轨。多轨内容(常见于在线课程、演唱会回放)不必再手动翻 ID 逐个下载。
快速上手:安装 N_m3u8DL-RE 并跑通第一个下载
安装步骤
- Windows / macOS / Linux:从项目发布页下载对应操作系统的压缩包,解压即可,无需额外运行时;
- Arch Linux 及衍生版:
yay -Syu n-m3u8dl-re-bin(社区维护的 AUR 包); - 从源码构建(需要 .NET SDK):
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE/src dotnet build N_m3u8DL-RE.sln一个小提示:较老版本的 Windows 自带终端可能无法正常显示输出,换用 cmder 之类的终端运行即可。
最小可用命令
安装完成后,最简单的用法就是把链接扔给它:
# 指定保存目录,其余全部使用默认值 N_m3u8DL-RE "https://example.com/course/lesson1.m3u8" --save-dir ./videos执行后你会看到解析出的各条轨道列表,程序自动下载、合并,最终在./videos里得到一个可以直接播放的文件。
进阶用法:选流、解密、直播录制的典型命令
自动挑最优音视频并混流为 mp4
不想自己判断哪条轨道质量最好时,让程序自己选:
N_m3u8DL-RE "https://example.com/stream.m3u8" -sv best -sa best -M format=mp4解密带密钥的 DASH 内容
KID 和 KEY 都能从请求里抓到之后,直接传给程序:
N_m3u8DL-RE "https://example.com/protected.mpd" \ --key "4a3b2c1d-8e6f-4a5b-9c7d-1e2f3a4b5c6d:0f1e2d3c4b5a69788796a5b4c3d2e1f0" \ --save-name "protected_video"如果默认的 MP4DECRYPT 解密引擎在你的环境下跑不起来,换成 ffmpeg 处理:--decryption-engine FFMPEG。
带鉴权头下载、部分下载
网站要求 Cookie 或特定 UA 时,用--header逐条附加:
N_m3u8DL-RE "https://example.com/vod.m3u8" \ --header "Cookie: session=abc123" \ --header "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)"只想要中间某段内容,比如第 5 分钟到第 20 分钟:
N_m3u8DL-RE "https://example.com/vod.m3u8" --custom-range 05:00-20:00定时录制一场直播
直播持续三小时,只录前 90 分钟并实时合并:
N_m3u8DL-RE "https://example.com/live/manifest" \ --live-record-limit 01:30:00 --live-real-time-merge几个高频参数对照,方便按需取用:
| 参数 | 作用 |
|---|---|
-sv/-sa/-ss | 正则选择视频 / 音频 / 字幕轨 |
--thread-count | 覆盖默认线程数 |
--decryption-engine | 切换 FFMPEG / MP4DECRYPT / SHAKA_PACKAGER |
--sub-format | 字幕输出为 SRT 或 VTT |
--custom-proxy | 指定请求代理地址 |
--log-level | 调整日志详细程度,排错时开 DEBUG |
常见问题:下载流媒体时容易踩的坑
1. 合并后的文件无法播放,提示缺 ffmpeg?混流依赖 ffmpeg,程序会先尝试自动寻找。找不到时,安装 ffmpeg 后把路径告诉它:--ffmpeg-binary-path /path/to/ffmpeg。
2. 解密时报错,或密钥明明给了却解不开?先确认 KID:KEY 的写法没有多余空格;确认密钥属于该 KID(多个密钥可用多次--key传入)。仍失败时切换引擎试试:--decryption-engine SHAKA_PACKAGER或FFMPEG,不同引擎对某些 CENC 方案的兼容性不同。
3. 请求总被网站拦截?多数情况是缺鉴权信息:把浏览器里的 Cookie、User-Agent 通过--header补上;如果走代理访问更稳定,加--custom-proxy http://127.0.0.1:7890。排查时把--log-level调到 DEBUG 看完整请求日志。
4. 一条流里有太多轨道,只想下字幕怎么办?用--sub-only只取字幕轨,再配合--sub-format VTT指定格式;只挑特定语言字幕可以用-ss lang=zh。
写在最后
N_m3u8DL-RE 把"解析、解密、并发下载、合并混流、直播录制"这条链路装进了一条命令,并且三端行为一致——对需要长期保存课程、回放或研究流媒体的人来说,它是目前免费工具里覆盖最完整的选项之一。
如果你在实际使用里遇到解析不了的特殊流、或者想要但目前没有的参数,欢迎在评论区描述一下具体场景,能直接帮助后续版本迭代。
【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考