N_m3u8DL-RE 实战:一条命令搞定 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(HLS)、mpd(DASH)或 ism(MSS)链接,它负责解析播放列表、并发拉取分片、合并输出、按需解密,最后产出可直接播放的成品文件。本指南按四个真实任务推进——整片下载、定点截取、直播录制、加密流解密——适合手里有链接、想在终端里快速拿到本地文件的用户。
5分钟装好 N_m3u8DL-RE 并确认版本
两种拿法:从 Releases 下载与你系统对应的压缩包,解压得到独立可执行文件,放进 PATH;或者拿源码自己构建:
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-REArch Linux 及衍生版可直接装 AUR 包:n-m3u8dl-re-bin(稳定版)或n-m3u8dl-re-git(开发版),用yay -Syu n-m3u8dl-re-bin一条命令完成。
装完先跑这条验证命令,终端应输出一行版本号(如N_m3u8DL-RE 0.6.0)即表示环境正常:
N_m3u8DL-RE --version✅ 到这里就通了:版本能打印出来,后面所有命令都以这个可执行文件为前缀。
把 m3u8 视频一条命令存成一个文件
这是最高频的场景:手里有一个可公开访问的点播链接,想存成本地文件。解析三种协议的逻辑都在 src/N_m3u8DL-RE.Parser/,分片调度在 src/N_m3u8DL-RE/DownloadManager/,你不需要关心内部,直接跑:
N_m3u8DL-RE "https://example.com/video/index.m3u8" --save-name 我的视频 --save-dir ./out --auto-select参数逐个说:
- --save-name:成品文件名,不加扩展名;
- --save-dir:输出目录,不存在会自动创建;
- --auto-select:所有类型的轨道自动挑最佳,不用写任何筛选条件;
- 想精确控制时,把
--auto-select换成-sv best -sa best(正则选最佳视频轨、最佳音轨,写法如res="1920*"、lang=en:for=best); - 音视频分离时想合成一个文件,追加
-M format=mp4(也可-M format=mkv:muxer=mkvmerge)。
跑完你会看到:终端进度条走完,./out下多出可播放的成品文件,同时默认还会写一份日志和解析结果的 json 元数据。用播放器打开确认画面、声音、时长正常,就算成功。
只下中间一段:用 --custom-range 圈定分片
整片太大、只需要其中一段时,用--custom-range限定范围,支持时间段和分片序号两种写法:
N_m3u8DL-RE "<链接>" --save-name 片段 --custom-range 05:00-20:00参数逐个说:
- 05:00-20:00:按时间,只下第 5 分钟到第 20 分钟的内容;
- 按序号则写成
0-10(共 11 个分片)、10-(第 10 个起往后)、-99(前 100 个分片); - 大文件下载中断后,也可以
--custom-range 10-配合--skip-download跳过已有分片、只补缺失部分再合并。
跑完你会看到:成品文件时长约等于你圈定的区间,而不是整片;分片数量默认会自动核对(--check-segments-count默认开启),数量不符会在日志里报错,别忽略。
直播录制一条命令搞定
正在直播的 m3u8,想录固定时长并实时合并,用这条:
N_m3u8DL-RE "<直播链接>" --save-name 直播 --live-real-time-merge --live-record-limit 01:00:00参数逐个说:
- --live-real-time-merge:边下边合,不在本地堆积分片;
- --live-record-limit 01:00:00:按
HH:mm:ss限时,到点自动结束; - --live-wait-time <秒>:手动指定播放列表刷新间隔,信号不稳的流调小些;
- --download-retry-count 10:每个分片失败后的重试次数(默认 3),录直播建议调高;
- --task-start-at yyyyMMddHHmmss:预约录制,到这个时间点才开始,配合定时任务很方便。
跑完你会看到:录满设定时长后进程自动退出,输出目录里是合并好的直播文件。直播中断后重跑原命令即可续录。
加密流解密:密钥从浏览器里抓出来带上
流用了 AES-128 或 CENC 加密时,播放列表只有密文分片。密钥一般在浏览器开发者工具的网络请求里能抓到,格式是KID:KEY(两段都写十六进制)。内置的 AES、ChaCha20 实现见 src/N_m3u8DL-RE/Crypto/,CENC 类加密则调用 mp4decrypt 等外部工具完成:
N_m3u8DL-RE "<加密流链接>" --save-name 解密后 --key "eb676abb:100b6c20"参数逐个说:
- --key:可重复写多次对应多组
KID:KEY;所有分片密钥相同时只写 KEY 部分即可; - --key-text-file 路径:多轨道多密钥、手敲太累时,从文件里按 KID 查 KEY;
- --decryption-engine FFMPEG|MP4DECRYPT|SHAKA_PACKAGER:选外部解密工具,默认
MP4DECRYPT,报错时换一个试试; - --decryption-binary-path:工具不在 PATH 里时指定可执行文件全路径;
- --mp4-real-time-decryption:分片实时解密,大文件时省临时空间。
跑完你会看到:进度条中多了解密环节,产物是正常可播放的明文文件;如果解密阶段报工具找不到,先用--decryption-binary-path指全路径再跑。
批量下载:一行一个链接,脚本循环跑
同一批链接反复要下时,把链接逐行存进urls.txt,循环执行:
while read -r url; do N_m3u8DL-RE "$url" --save-dir ./out --save-name "vid_$(date +%s)"; done < urls.txt这里用时间戳做文件名保证互不覆盖;更推荐--save-pattern "<SaveName>_<Resolution>_<Language>",用流自身的元数据(分辨率、语言、编码、带宽等)拼出唯一文件名,多条流同时下也不会重名。
跑完你会看到:urls.txt里每条链接对应./out下一个独立文件,逐条检查文件是否完整即可。
现象→参数反查表:慢的时候先动哪里
调优顺序建议:一次只改一个参数,加线程→调超时→动代理,方便定位问题。
| 现象 | 先动哪个参数 |
|---|---|
| 带宽还有富余,想再快些 | --thread-count N(默认等于 CPU 核心数,点播可试 16) |
| 网络波动、分片频繁失败 | --download-retry-count(默认 3,直播建议 10 以上) |
| 服务器响应慢、老超时 | --http-request-timeout(默认 100 秒) |
| 要给别的任务留带宽 | -R 15M(单位 Mbps/Kbps,如15M、100K) |
| 分片 403、需要登录态 | -H "Cookie: xxx" -H "User-Agent: xxx"逐条加请求头 |
| 走代理加速 | --custom-proxy http://127.0.0.1:8888(--use-system-proxy默认开启,一般不用动) |
| 临时文件占满小盘 | --tmp-dir指到大盘;完成后删临时文件的开关--del-after-done默认是开的,别关 |
⚠️ 代理只影响拉流请求:代理通了但分片 403,通常是请求头缺目标站点的 Cookie,配合-H一起补上。
故障对照清单:下载失败时查这里
| 症状 | 可能原因 | 对应处理 |
|---|---|---|
| 命令没有任何输出 | 老版本 Windows 自带终端不支持该程序的输出格式 | 换用 PowerShell 新版终端或 cmder 再跑 |
| 速度远低于带宽上限 | 设了-R限速、线程偏低,或分片被服务器串行化 | 确认没设-R,再调--thread-count |
| 下载成功但文件打不开 | 没给密钥,或KID:KEY格式不对(须两段十六进制) | 核对--key格式,确认解密工具已安装 |
| 合并阶段报 ffmpeg 错误 | 混流依赖的 ffmpeg 不在 PATH 里 | 安装 ffmpeg 进 PATH,或--ffmpeg-binary-path指全路径 |
| 同时下多条流互相覆盖 | 保存名相同 | 加--save-pattern让文件名带区分变量 |
| 直播录到一半缺分片 | 刷新间隔太长或抖动后重试没救回来 | 调小--live-wait-time,--download-retry-count调到 10 以上 |
| 403,分片全部拉不下来 | 请求头缺登录态或被风控 | 从浏览器复制 Cookie 与 User-Agent,用-H逐条加上 |
| 想断点续传大文件 | 整片重下太浪费 | --custom-range 10-补下剩余分片,配--skip-download直接合并 |
适合谁,不适合谁
它是纯命令行工具:有链接、要批量、要解密的场景很趁手;没有技术背景、想要图形界面或批量管理后台的用户不适合,它对平台级强 DRM 也没有通用破解能力。下载内容前请确认你拥有合法权限,仅用于学习和研究,遵守所在地法律法规。
【免费下载链接】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),仅供参考