news 2026/10/23 1:42:22

N_m3u8DL-RE 完整指南:一条命令下载并解密 M3U8/MPD/ISM 流媒体

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
N_m3u8DL-RE 完整指南:一条命令下载并解密 M3U8/MPD/ISM 流媒体

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 为准。

安装与首次运行

获取可运行版本

三种方式,任选其一:

  1. 官方发布页:下载对应系统的压缩包,解压即用,不依赖额外运行时;
  2. Arch Linux 及衍生版(社区 AUR 包,非作者维护):
yay -Syu n-m3u8dl-re-bin
  1. 从源码构建(需要 .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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 1:41:40

Ki Editor 进阶指南:通用键位与 Extend 模式跨模式操作技巧清单

【免费下载链接】ki-editor ⵣ Ki Editor - Multi-cursor combinatoric modal editor. 项目地址: https://gitcode.com/gh_mirrors/kie/ki-editor 点击查看 免费下载 Ki Editor 是一款支持多光标组合操作的模态编辑器(Multi-cursor combinatoric modal …

作者头像 李华
网站建设 2026/10/23 1:41:36

长篇网文多线叙事如何不乱?Novel Writer多线索管理系统完整教程

【免费下载链接】novel-writer 参考Spec-kit 实现小说撰写工具 项目地址: https://gitcode.com/gh_mirrors/nov/novel-writer 点击查看 免费下载 写长篇网文时,主线、支线、感情线、伏笔线并行推进,最怕的就是"写着写着乱了"&…

作者头像 李华
网站建设 2026/10/23 1:40:21

副队长JavaScript教程(18)–比较运算符

点此查看 所有教程、项目、源码导航 文章目录1. 什么是比较2. 比较运算符3. 比较运算符的运算结果4. 宽松相等与严格相等区别5. 使用变量存储比较运算结果6. 小结1. 什么是比较 在 JS 程序中,有时候需要对两个变量或者常量进行比较,比如判断两个数值的大…

作者头像 李华
网站建设 2026/10/23 1:40:09

【功能性模块】功能性模块: (4)感受野计算:疑惑中。。。

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华