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 是一款免费的跨平台流媒体下载器,Windows、macOS、Linux 上行为一致:你只需贴入 M3U8、MPD 或 ISM 链接,它就自动完成解析、解密、多线程分片下载和音视频混流,产出可直接播放的文件。本文带你从安装到进阶用法一次跑通。
能力速览
| 能力 | 它是怎么干的 |
|---|---|
| 三协议解析 | 自动识别 M3U8(HLS)、MPD(DASH)、ISM(微软 Smooth Streaming),读出色度、码率、语言、字幕等轨道信息 |
| 多线程下载 | 默认 10 个线程并行拉取分片,再按顺序拼接落盘 |
| 自动解密 | HLS 的 AES-128、ChaCha20 内置实现;MP4 CENC 类内容调用 mp4decrypt、Shaka Packager 或 ffmpeg 完成 |
| 下载后混流 | 分离的音轨自动调用 ffmpeg 或 mkvmerge 合成 mp4 / mkv,字幕一并封装,临时文件默认自动清理 |
| 直播录制 | 持续拉取新分片、实时合并,可设录制时长、回看起点,录满自动收尾 |
| 正则选轨 | 视频、音频、字幕按分辨率、语言、编码等正则筛选,不用手动翻轨道 ID |
| 配套工具命令 | doctor体检环境,concat/merge/mux可单独对已有文件做拼接和混流 |
想验证解析能力,仓库里的 TestStreams.md 列了一批公开测试流可以直接试;完整参数说明以 README.md 为准。
安装与首次运行
获取可运行版本
三种方式,任选其一:
- 官方发布页:下载对应系统的压缩包,解压即用,不依赖额外运行时;
- Arch Linux 及衍生版(社区 AUR 包,非作者维护):
yay -Syu n-m3u8dl-re-bin- 从源码构建(需要 .NET SDK):
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE/src dotnet build N_m3u8DL-RE.sln跑通第一条命令
装好后,把链接扔给它、指定一个保存目录,其余全部走默认值:
N_m3u8DL-RE "https://example.com/course/lesson1.m3u8" --save-dir ./videos成功后你能看到:控制台先列出解析出的各条视频、音频、字幕轨道,然后是各分片的下载进度;结束时./videos下出现可直接播放的成品文件,默认还会输出一份解析信息 json(可用--write-meta-json false关掉)。到这里,工具就跑通了。
典型场景实操
场景一:多轨课程点播,自动挑最优音视频并合成 mp4
课程流里往往混着好几档分辨率和多条音轨,不想自己判断哪条最好时,把选择权交给程序:
N_m3u8DL-RE "https://example.com/stream.m3u8" --auto-select -M format=mp4--auto-select自动为每种类型挑最佳轨道,-M format=mp4表示下载完成后把分离的音视频混流进 mp4 容器。执行完直接得到单一成品文件,不用自己再跑一遍 ffmpeg。同一类需求也可以用-sv best -sa best手动指定"选最佳"。
场景二:定时录制直播,错过开头还能回看补录
直播持续三小时,只录前 90 分钟、边录边合,命令长这样:
N_m3u8DL-RE "https://example.com/live/manifest" --live-record-limit 01:30:00 --live-real-time-merge--live-record-limit到点自动收尾,--live-real-time-merge让分片录下来实时合并、不用等结束。如果开头错过了,--live-catchup可以从一段历史时间接着下,例如从一小时前开始、只录 30 分钟并输出 mkv:
N_m3u8DL-RE "https://example.com/live/manifest" --live-catchup 01:00:00 --live-record-limit 00:30:00 --live-real-time-merge -M mkv前提是清单里带可靠的时间信息,且起点仍在服务端的回看窗口内;按完整分片下载,边界会有轻微偏差。网络不稳定的环境建议别开--live-pipe-mux(管道 + ffmpeg 实时混流进 TS),管道读数据由 ffmpeg 负责,弱网下容易丢直播数据。
场景三:拿到 KID 和 KEY,解密带保护的内容
抓包拿到 KID(密钥 ID)和 KEY 之后,直接传给程序即可,格式是KID:KEY:
N_m3u8DL-RE "https://example.com/protected.mpd" \ --key "4a3b2c1d-8e6f-4a5b-9c7d-1e2f3a4b5c6d:0f1e2d3c4b5a69788796a5b4c3d2e1f0" \ --save-name "protected_video"多条密钥就重复传--key,KEY 相同时也可以只写 KEY 不写 KID。解密环节由第三方工具完成,默认走 mp4decrypt(实现与引擎切换见 Crypto 目录);网站还要求 Cookie 或特定请求头时,用-H逐条附加,或把浏览器导出的 Netscape 格式 Cookie 文件交给--cookies。
参数速查
| 参数 | 作用 |
|---|---|
-sv/-sa/-ss | 正则选择视频 / 音频 / 字幕轨,如-sv res="3840*":for=best |
--auto-select | 自动选择所有类型的最佳轨道 |
--thread-count | 覆盖默认下载线程数(默认 10) |
-H/--cookies | 附加请求头 / 读取 Netscape 格式 Cookie 文件 |
--custom-range | 只下部分片段,如05:00-20:00表示第 5 到 20 分钟 |
--live-record-limit | 直播录制时长上限,格式 HH:mm:ss |
--live-catchup | 从指定历史时间或日期时间开始补录 |
-M | 下载完成后混流,如-M format=mp4 |
--key | 传入KID:KEY用于解密,可多次传入 |
--custom-proxy | 指定请求代理,如http://127.0.0.1:7890 |
--log-level | 日志级别 DEBUG / INFO / WARN / ERROR / OFF,排错开 DEBUG |
两个需要了解的切换项:
- 解密引擎:
--decryption-engine MP4DECRYPT|FFMPEG|SHAKA_PACKAGER,默认 MP4DECRYPT。三者对某些 CENC 加密方案的兼容性不同,某一路走不通时换另一路试试,工具路径用--decryption-binary-path指定。 - 混流容器与工具:
-M除format=mp4|mkv|ts外,还能指定muxer=ffmpeg|mkvmerge及bin_path自定义程序路径,例如-M format=mkv:muxer=mkvmerge;选流参数-sv的详细正则项(id、lang、codecs、res、frame、bwMin 等)可用--morehelp select-video在程序内查看。
踩坑与排错
混流报错找不到 FFmpeg,或成品文件无法播放?先安装 ffmpeg 并确认它已在 PATH 中,可用N_m3u8DL-RE doctor检查环境、确认程序能定位到各工具;再重跑下载,观察混流阶段是否还报错;最后仍不行就显式指定路径--ffmpeg-binary-path /path/to/ffmpeg,Windows 下同理指向 ffmpeg.exe。
密钥明明给了,解密却还是失败?先检查KID:KEY的写法,去掉引号内多余空格、确认冒号分隔;再确认这把 KEY 确实属于该 KID——多密钥场景下每一条--key都要传全;最后切换引擎重试,如--decryption-engine FFMPEG或SHAKA_PACKAGER,不同引擎对部分 CENC 方案的兼容性不一致。
请求总被网站拦截(401/403)?先补齐鉴权信息:把浏览器里的 Cookie、User-Agent 用-H "Cookie: ..."-H "User-Agent: ..."追加,或直接--cookies cookies.txt;再考虑代理,加--custom-proxy http://127.0.0.1:7890走本地代理;最后把--log-level调到 DEBUG 看完整请求日志,定位到底是哪一步被拒。
老版本 Windows 终端里输出乱码或显示不正常?先在较新的系统终端或 cmder 中重跑;再试--no-ansi-color去除 ANSI 颜色输出;最后用--log-level ERROR收窄日志量,避免彩色进度输出刷屏干扰判断。
写在最后
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),仅供参考