加密 m3u8 下不动?N_m3u8DL-RE 流媒体下载工具 3 个场景实战
【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE
浏览器插件全失效,右键"另存为"只拿到一堆 .ts 碎片,加密网课点了下载按钮转圈半天没反应——拿到 m3u8 链接后,很多人卡在这一步。N_m3u8DL-RE 是一款跨平台 m3u8 下载工具:把 DASH/HLS/MSS 清单贴给它,它负责解析清单、挑选音轨、解密加密分片、合并成片,全程一条命令。按本文顺序走一遍,你会装好工具、跑通第一条下载命令,再分别处理加密课、多语言音轨和直播录制三件实事。
工具速览
- 定位:命令行流媒体下载器,输入 MPD / M3U8 / ISM 链接或本地清单文件即可,不用装浏览器插件。
- 协议:DASH(MPD)、HLS(M3U8)、MSS(ISM) 各一套解析器,覆盖点播与直播;加密分片支持 AES、ChaCha20 等。
- 平台:Windows、Linux、macOS 通用;Windows 解压即用,其余平台用 dotnet build 编译一次。
- 许可证:MIT。
- 外部依赖:混流和部分合并依赖本机 ffmpeg,分片解密走 mp4decrypt,发布包里已带上这两个工具。
清单的解析逻辑分布在src/N_m3u8DL-RE.Parser/下的 DASH、HLS、MSS 三个解析器里,报"解析失败"时可按协议找对应文件排查。
跑通第一条命令
Windows 用户:到仓库 Releases 页面下载对应平台的 zip,解压后直接运行里面的可执行文件,不用安装。Linux / macOS 用户需要本机装好 .NET SDK,克隆后编译一次:
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE dotnet build src/N_m3u8DL-RE.sln -c Release最小命令只放链接,其余全走默认值:
./N_m3u8DL-RE "https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8"启动后它先打印清单里全部音视频和字幕轨,然后自动选最高画质一路,下完自动合并,成片落在当前目录。想先看清它挑了哪些轨再决定,加--skip-download只解析不下载。
🎬 三个真实场景
加密 m3u8:F12 抓到 KID 和 KEY 后用 --key 传进去
你在 F12 里看到清单带着 ext-key 标记,把 KID 和 KEY 从 license 请求里抄出来,拼成KID:KEY贴给--key:
./N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd" \ --key "9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4d" \ -M format=mp4 --save-name clearkey-lesson分片边下边解,最终在目录里得到clearkey-lesson.mp4,播放器直接打开就是明文画面。解密调用逻辑在 src/N_m3u8DL-RE/Crypto/ 模块,解密引擎可用--decryption-engine换成 ffmpeg 或 shaka-packager。
多音轨选择:画质、配音、字幕各挑各的
一条 NHK 点播流里混着多路语言音轨和 VTT 字幕,你只想要最高画质、日语配音和全部字幕:
./N_m3u8DL-RE "https://masterpl.hls.nhkworld.jp/hls/w/202922320260226001/master.m3u8" \ -sv best -sa "lang=ja:for=best" -ss all \ -M format=mp4-sv、-sa、-ss各吃一个正则条件组:视频挑最高档,音频只留日语最佳一路,字幕全收;混流后文件名自动带语言标记,几路音频不会互相覆盖。
直播录制:限时录制加实时合并
你只想留今晚这场直播的前五分钟做回看,录完还要能直接拖进播放器:
./N_m3u8DL-RE "https://masterpl.hls.nhkworld.jp/hls/live/smarttv.m3u8" \ --live-real-time-merge --live-record-limit 00:05:00 --save-dir ./record录满 5 分钟自动停止,过程中分片被实时合并,./record里直接是一个可播放的完整文件,不用等播完再处理。
参数速查
| 参数 | 一句话作用 | 示例值 | 什么时候用 |
|---|---|---|---|
--key | 传入解密密钥,格式 KID:KEY | 9eb405...:166634... | 流是加密的 |
-sv | 按正则挑视频轨 | res="3840*":for=best | 只要某一档画质 |
-sa | 按正则挑音轨 | lang=en:for=best | 只要指定语言配音 |
--live-record-limit | 给直播录制限时长 | 00:05:00 | 只录前段不录全程 |
--save-dir | 指定输出目录 | ./downloads | 不想堆在当前目录 |
-H | 附加请求头,可重复 | "Referer: https://page.example.com" | 链接有防盗链校验 |
--thread-count | 调整下载线程数 | 8 | 默认线程跑不满带宽 |
--ffmpeg-binary-path | 指明 ffmpeg 可执行文件位置 | /usr/local/bin/ffmpeg | ffmpeg 不在 PATH 里 |
🛠 遇到问题先看这
下载直接 403?服务器在查来源页。用-H "Referer: 来源页地址"和-H "Cookie: 登录态"补上请求头,或把浏览器导出的 Cookie 文件交给--cookies cookies.txt,它会对清单、密钥和分片统一生效。
混流时报找不到 ffmpeg?下载本身不依赖 ffmpeg,但-M混流要调它。装好后加--ffmpeg-binary-path指到可执行文件,Windows 同理指向 exe 全路径。
解密失败、提示密钥无效?多半是 KEY 不是 32 位十六进制,或KID:KEY中间漏了冒号。回 F12 抓包原文核对,两个字段都必须是 32 位十六进制,格式不对程序会直接拒绝。
单连接速度被网站掐住?这是站点按连接限速。加--thread-count 8起多线程,默认线程数跟随 CPU 核数,跑不满带宽时手动调大即可。
中途断网,成片不完整?重新跑同一条命令,加--custom-range 10-只补第 10 个分片之后的内容,保留完整分片、不做精确裁切,避免整单重下。
收尾
清单解析、选轨、解密、合并,四步都压在同一条命令里,剩下的只是参数写法。拿 TestStreams.md 里的公开测试流跑几轮,再换成你自己的链接。提醒一句:只下载你拥有合法权限的内容,版权责任由使用者自行承担。
【免费下载链接】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),仅供参考