N_m3u8DL-RE:5 分钟跑通 m3u8 下载,加密视频解析全解
【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE
N_m3u8DL-RE 是一款跨平台的流媒体下载工具,支持 m3u8/MPD/ISM 格式解析,内置 AES-128、ChaCha20 加密视频解密,多线程分片下载后自动合并,一条命令把在线课程、直播流存成本地文件。
场景先行:三类人为什么需要它
📌课程备份:你有一门 12 集的在线课程想存到本地。浏览器右键存下来的 m3u8 是个打不开的文本,分片还全是加密的。用它做 m3u8 批量下载,一集一行命令,出来的就是能直接播的文件,不用自己研究协议。
直播回看:直播流播完就没了,回放等于没有。加上--live-record-limit 01:00:00就能按指定时长录制直播,再开--live-real-time-merge,边录边合并,不用等录完再处理。
技术研究:研究流媒体协议,总得先看流结构长什么样。它默认会输出解析后的 json 文件(--write-meta-json默认开启),打开就能看到全部轨道清单,省去自己写解析器。
拆盒时刻:加密流是怎么变成可播放文件的
💡 把一次下载想成餐厅后厨做一道菜。
读菜单,就是解析:m3u8/MPD/ISM 是菜单位,写明了有哪些"菜"——几个画质、几条音轨、哪些字幕,以及哪些经过特殊处理。
备料,就是解密:加密分片像特殊原料,备料台按你给的密钥(AES-128、ChaCha20 等)把它还原成能用的状态。
多灶台并炒,就是多线程分片下载:默认线程数等于你 CPU 的核心数,几块分片同时下载。
合菜装盘,就是合并:分片这些"小盘"由 ffmpeg 拼成一道完整的菜。
上桌,就是输出:mp4/mkv 直接能播。
| 模块 | 一句话职责 | 你会在哪种情况下用到它 |
|---|---|---|
| 解析器(见 解析器源码) | 读懂 m3u8/MPD/ISM,列出全部可用流 | 每个任务的第一步 |
| 解密环节 | 按密钥解开 AES-128、ChaCha20 加密 | 流被加密、下下来的文件打不开时 |
| 下载引擎 | 多线程并行拉分片,失败默认重试 3 次 | 大文件、网络不太稳的场景 |
| 合并输出 | 把分片拼成 mp4/mkv 完整文件 | 想要一个能直接播的文件时 |
| 命令行参数 | 控制线程、选流、命名、混流 | 想定制输出时 |
5 分钟上手:第一条能跑通的命令
📌 先跑通,再谈参数。安装二选一:直接拿对应系统(Windows/macOS/Linux)的预构建二进制,或克隆源码自己构建:
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE老版本 Windows 自带的终端可能跑不了,按项目 README 的建议,换个第三方终端(如 cmder)执行即可。
用一条公开测试流跑通你的第一条 m3u8 下载(仓库里有一份 测试流清单):
./N_m3u8DL-RE "http://playertest.longtailvideo.com/adaptive/oceans_aes/oceans_aes.m3u8" # 先跑通一条公开测试流,确认环境没问题进度条走完、目录里出现可播放的文件,就说明环境就绪,剩下只是调参数的事。
参数速查:从"能下"到"下得好"
先记这五个高频参数:
| 参数 | 作用 | 示例值 |
|---|---|---|
--thread-count | 下载线程数(默认等于 CPU 核心数) | 16 |
-sv/-sa | 按正则挑视频流 / 音频流 | -sv best -sa best |
--key | 传入解密密钥 | <KID>:<KEY> |
-M | 完成后混流成指定容器 | -M format=mp4 |
--save-name | 设置保存文件名 | my_video |
完整版看 README。两条进阶命令:
./N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" --auto-select -M format=mp4 --save-name demo # 自动挑最好的音视频,最后混流成 mp4,文件名好认./N_m3u8DL-RE "https://azclwds01.akamaized.net/4e8f6858-5d05-4e28-83ab-48c7a2b259e1/XVuosg_tab_hd.ism/Manifest" --key e5114f87b3e54b9faca331e6e6d646a6:55c5d9f1cedfd018b75623f2565a1d29 # 加密流带密钥下载,KID 和 KEY 用冒号连起来写翻车自救:四个高频报错的处理办法
⚠️ 都按"报错原文 → 大概率原因 → 解决命令/操作"来看。
1. 403 Forbidden
- 报错原文:请求被服务器拒绝,返回 403
- 大概率原因:服务器不认非浏览器请求,或该流需要登录 Cookie
- 处理:
./N_m3u8DL-RE "URL" -H "User-Agent: Mozilla/5.0" -H "Cookie: your_cookie" # 伪装成浏览器身份,顺带把登录 Cookie 带上2. 密钥无效、解密失败
- 报错原文:日志提示解密错误,或文件生成了但播放花屏
- 大概率原因:密钥格式不对(应为 32 位十六进制,或
KID:KEY形式);特殊加密用默认引擎解不了 - 处理:先删掉密钥里多余的空格;多个密钥就
--key <KID>:<KEY>逐个传;仍失败就换解密引擎--decryption-engine FFMPEG(默认是 MP4DECRYPT,可选 FFMPEG、SHAKA_PACKAGER)。
3. 速度异常慢
- 报错原文:进度条挪得极慢,无明确错误
- 大概率原因:线程开少了;走了系统代理(
--use-system-proxy默认开启);单片反复失败重试 - 处理:
--thread-count 16加线程;想直连就--use-system-proxy false;网络不稳时调大--download-retry-count(默认 3 次)和--http-request-timeout(默认 100 秒)。
4. 合并后打不开、或提示找不到 ffmpeg
- 报错原文:输出文件无法播放,或日志报 ffmpeg 未找到
- 大概率原因:音视频是分开的,最后没混流;ffmpeg 不在 PATH 里
- 处理:命令末尾加
-M format=mp4让它在收尾时混流;ffmpeg 装了但找不到,就用--ffmpeg-binary-path指定可执行文件全路径。
写在最后
它把"解析 → 解密 → 下载 → 合并"四步压进一条命令,同一套参数在 Windows、macOS、Linux 上都能原样跑。今晚可以先照着测试流跑第一条命令,再拿它处理你真正想保存的内容。你平时最想保存的是哪类内容,卡在了解密、速度还是合并这一步?评论区说说。
【免费下载链接】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),仅供参考