N_m3u8DL-RE:3步跑通 m3u8 下载与解密
【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE
你手上是一个 m3u8 或 mpd 链接,浏览器只能看、存不了。N_m3u8DL-RE 是跨平台流媒体下载工具,给它链接,自动解析轨道、下载分片、合并成完整文件。
判断值不值得装
它能同时解析 DASH、HLS、MSS 三种清单,并用正则挑音视频字幕轨道,多数同类工具只覆盖其中一种。它也支持直播录制、限时长与实时合并,还内置 AES/ChaCha20 解密,带密钥的流也能处理。
跑通第一条 m3u8 下载命令
你只需要克隆源码并构建一次,就能得到一个可执行程序。构建完成后跑--version,能输出版本号说明装好了:
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE && dotnet publish -c Release -o ./out src/N_m3u8DL-RE先拿项目自带的公开测试流,加--skip-download只输出解析结果、不下载,用来验证安装。屏幕列出成组视频、音频、字幕轨道,各带分辨率和语言信息 ✅ 说明解析正常:
./out/N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" --skip-download去掉--skip-download,加--auto-select让程序为每种类型自动选最佳轨道,完成首次下载。看到当前目录出现first-test命名的成品文件,第一次 m3u8 下载就跑通了:
./out/N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" --auto-select --save-name first-test在源码里定位问题入口
如果你打开src/目录,最先看src/N_m3u8DL-RE.Parser/StreamExtractor.cs,它是解析清单的入口,流类型、轨道、加密方式的识别都从这里开始。问题出在下载阶段,再看src/N_m3u8DL-RE/DownloadManager/,点播与直播录制的任务调度都在里面。
做三件高频任务的实战配方
保存在线课程只要最高画质
目标:课程 m3u8 出一个 mp4,只留最高画质。这条命令让程序自选轨道,下载完成后把分离的音视频混流进 mp4 容器:
./out/N_m3u8DL-RE "课程m3u8链接" --auto-select --save-name python-course -M format=mp4看到当前目录出现python-course命名的 mp4 即成功。
⚠️ 坑:-M依赖 ffmpeg,PATH 里没有时混流会失败,但分片下载其实已经完成。先把 ffmpeg 装进 PATH,或用--ffmpeg-binary-path指全路径再跑。
直播录制限时长边录边合
目标:录直播 m3u8,文件边下边成型,3 小时自动收工。这条命令开启实时合并并限制录制时长:
./out/N_m3u8DL-RE "直播链接" --save-name tech-conference --live-real-time-merge --live-record-limit 03:00:00 --thread-count 8--live-real-time-merge边下边并入成品;--thread-count 8把并发拉到 8 线程。录到 3 小时后进程自行退出即成功。
⚠️ 坑:--live-record-limit只认HH:mm:ss,写3h会被直接拒绝。另外--live-keep-segments默认保留分片,录一整天时磁盘占用会非常可观。
下载加密流并输出 SRT 字幕
目标:带密钥的流正常出片,字幕转成通用 SRT。这条命令外部注入密钥、选最佳视音频、抓全部字幕:
./out/N_m3u8DL-RE "加密流链接" --key "KID:KEY" -sv best -sa best -ss all --sub-format SRT--key接受KID:KEY组合,多组密钥就重复传参;KID 相同时只传 KEY 也行。出片文件旁出现.srt文件即成功。
⚠️ 坑:默认解密引擎是 MP4DECRYPT,机器上没有mp4decrypt时解密直接报错。已有 ffmpeg 的话加--decryption-engine FFMPEG复用即可。
按 m3u8 下载场景选参数
要一次下多条同类型流,加--save-pattern "<SaveName>_<Resolution>"把分辨率写进文件名防冲突;单流下载用默认命名就够。弱网频繁超时,加--http-request-timeout 300 --download-retry-count 5加预算;带宽足但速度慢,换成--thread-count 16。目标站点要走代理,加--custom-proxy http://127.0.0.1:8888;只想拿字幕,换成-ss all再配--sub-only。担心占满带宽,加-R 15M限速。
| 参数 | 默认值 | 什么时候改 |
|---|---|---|
--thread-count | CPU 核心数 | 带宽足但速度慢时调大 |
--http-request-timeout | 100 秒 | 弱网频繁超时调大 |
--download-retry-count | 3 | 分片失败多时加预算 |
--key | 无 | 流带加密、需外部密钥时 |
--decryption-engine | MP4DECRYPT | 没有 mp4decrypt 换 FFMPEG |
--sub-format | SRT | 要 VTT 字幕时 |
-R | 不限速 | 不想占满带宽时 |
--log-level | INFO | 查不出问题时调 DEBUG |
按症状逐条修复
症状:下载慢,进度条挪得极慢。 原因:默认线程数按 CPU 核心数,高带宽场景不够用。 修复:追加--thread-count 16重跑。
症状:日志里反复出现超时重试。 原因:默认 100 秒超时在弱网下等不到响应。 修复:追加--http-request-timeout 300 --download-retry-count 5。
症状:解密失败,报 mp4decrypt 相关错误。 原因:默认解密引擎是 MP4DECRYPT,机器没装这个工具。 修复:追加--decryption-engine FFMPEG复用已有 ffmpeg。
症状:HLS 解密后画面花屏或报密钥错。 原因:程序把加密方式判断错了。 修复:追加--custom-hls-method AES_128(或 CHACHA20 / SAMPLE_AES)强制指定。
症状:Windows 终端输出乱码或直接退出。 原因:旧版系统自带终端不支持 ANSI。 修复:追加--no-ansi-color,或改用 cmder 执行。
下一步行动
- 拿项目文档列出的公开测试流跑一次
--skip-download,确认解析链路正常。 - 对真实链接套用上面的任务配方,选不准轨道或报错时加
--log-level DEBUG看详细日志。 - 把你常用的参数组合抄成自己的速查清单,下次按场景直接套用。
只下载你拥有合法权限访问的内容。
【免费下载链接】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),仅供参考