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 只是播放列表:本体被切成上千个小分片,部分还带 AES-128 加密,浏览器里"另存为"拿不到画面。N_m3u8DL-RE 是免费的跨平台下载器,支持 HLS、DASH、ISM 协议,负责把播放列表解析、分片解密、合并成可播放文件,三端行为一致。
先对号入座:这三类场景用得上
如果你的需求落在下面任意一类,就值得装一个:
- 网课与课程存档:平台给的 m3u8 常带多语言音轨、广告段,你可以用正则挑出需要的轨,再按时间段只取想要的片段。
- 直播录制与回看:HLS 或 DASH 直播流支持定时停录,也能从过去某个时间点补下已经错过的分片,不用开着软件盯着表。
- 多轨源管理:一场演出或一部片源可能同时带多条音轨和字幕轨,工具能按条件批量挑出最佳质量,再混成一个文件。
如果只是想存一个现成的 .mp4 或 .ts 文件,普通下载器就够,不需要它。
三步完成安装并跑一次自检
第 1 步,按平台选安装方式。Windows、macOS、Linux 均可从发布页下载对应平台的压缩包,解压即可运行,不依赖额外运行时;Arch Linux 及其衍生版可用社区维护的 AUR 包n-m3u8dl-re-bin。从源码构建需先装好 .NET SDK:
# 克隆仓库后在 src 下构建整个解决方案 git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE/src && dotnet build N_m3u8DL-RE.sln第 2 步,老系统注意终端。版本较低的 Windows 自带终端可能显示异常,换用 cmder 这类第三方终端运行。第 3 步,跑内置的 doctor 自检,它会检查程序版本以及 ffmpeg 等外部工具是否可用:
# 打印版本与环境检查结果 N_m3u8DL-RE doctor手头没有链接时,仓库自带TestStreams.md测试流列表,可以先用其中任意一条走通全流程。
跑通最小命令,下载第一条流
下载前程序会先读取播放列表、识别协议类型,并打印全部视频、音频、字幕轨的分辨率、编码与语言,HLS、DASH 2.0、MSS 三套解析器内建在解析器模块里。不指定选轨时它自动挑最优组合并行拉分片,默认线程数 10:
# 指定保存目录,其余用默认值 N_m3u8DL-RE "https://example.com/course/lesson1.m3u8" --save-dir ./videos结果判断:下载完成后临时文件默认自动删除,./videos目录里剩下最终可播放的文件,外加一份解析信息 json。音视频分开两条轨时,程序下载完会自动混流为一个文件。
常见任务实操:五个高频场景
用 KID 和 KEY 解出加密的 DASH 内容
目标:MPD 的视频带 CENC 加密,KID 与 KEY 已从请求中抓到。密钥按KID:KEY传入,同一个 KEY 对应多个 KID 就传多次:
# 传入解密密钥并指定输出文件名 N_m3u8DL-RE "https://example.com/protected.mpd" \ --key "4a3b2c1d-8e6f-4a5b-9c7d-1e2f3a4b5c6d:0f1e2d3c4b5a69788796a5b4c3d2e1f0" \ --save-name protected结果判断:输出文件可直接播放,画面无马赛克花屏。默认解密程序是 mp4decrypt,环境里没有时可用--decryption-engine换 ffmpeg 或 shaka-packager。HLS 的 AES-128 与 ChaCha20 走内建实现、不依赖外部程序,源码见内建解密实现目录。
按语言与分辨率挑选轨道
目标:源里 1080p、720p 各有多条,只取最佳 1080p 加一条英语音轨,输出单个 mp4。选轨参数支持按分辨率、编码、语言、名称做正则匹配:
# 视频限定 1920 宽、音频限定英语,各取最佳 N_m3u8DL-RE "https://example.com/stream.m3u8" \ -sv res="1920*":for=best -sa lang=eng:for=best -M format=mp4结果判断:命令行只列出命中的轨道,下载完生成一个 mp4。想同时保留多条匹配轨,把for=best改成for=all,并用-mt让多条选中的轨并行下载;完整字段语法见README 参数参考。
定时录下 90 分钟直播
目标:直播进行 3 小时,只要前 90 分钟;录制期间分片持续并入文件,结束后不必再等二次合并:
# 限定录制 90 分钟,边录边实时合并 N_m3u8DL-RE "https://example.com/live/manifest" \ --live-record-limit 01:30:00 --live-real-time-merge结果判断:到达限时程序自动收尾退出,文件在录制过程中随时可播放。想补录开播前错过的节目,给--live-catchup传一个过去时间;网络稳定时还可加开--live-pipe-mux,让分片数据经 ffmpeg 直接写入 TS 文件。直播下载与合并引擎的逻辑见下载管理器目录。
只截取中间的时间段
目标:两小时的课只想要第 5 到第 20 分钟,不想等全量下载:
# 只获取 05:00 到 20:00 之间的内容 N_m3u8DL-RE "https://example.com/vod.m3u8" --custom-range 05:00-20:00结果判断:范围按分片起始时间筛选,边界处的分片整片保留、不做精确裁切,所以成品时长会略大于 15 分钟。也可以按分片序号写,如--custom-range 10-表示从第 10 个分片取到结尾。
用 Cookie 和请求头绕开鉴权
目标:站点要求登录态或特定 User-Agent 才能取到分片,直接请求返回 403。用-H逐条附加请求头:
# 为清单与分片请求附加 Cookie 和 UA N_m3u8DL-RE "https://example.com/vod.m3u8" \ -H "Cookie: session=abc123" -H "User-Agent: Mozilla/5.0"结果判断:这些头会作用于清单、密钥和分片三类请求。Cookie 条目多时,从浏览器导出 Netscape 格式的 cookie 文件后用--cookies cookies.txt传入更省事。
常用参数速查
下表只列上面任务里出现频率最高的参数,完整清单以N_m3u8DL-RE --help输出为准。
| 参数 | 作用 | 什么时候用 |
|---|---|---|
-sv/-sa/-ss | 按正则选视频/音频/字幕轨 | 轨道多,要按语言、分辨率、编码收窄 |
--auto-select | 所有类型自动选最佳轨 | 不想手写任何选择条件 |
--thread-count | 设置分片下载线程数,默认 10 | 分片量大且网络稳定 |
--key | 传入解密密钥,格式 KID:KEY | 内容加密且已拿到密钥 |
--decryption-engine | 切换解密程序 MP4DECRYPT / FFMPEG / SHAKA_PACKAGER | 默认程序解密失败 |
--custom-range | 只下载指定时间或序号范围的分片 | 只想要中间一段 |
--live-record-limit | 直播录制时长上限,HH:mm:ss 格式 | 定时录制直播 |
-M | 指定混流容器格式 | 音视频分离、想要单个文件 |
--sub-only+--sub-format | 只取字幕,输出 SRT 或 VTT | 只想要字幕文件 |
-H/--header | 附加请求头 | 站点要求 Cookie 或 UA |
出错先查这里
- 混流报错提示找不到 ffmpeg→ 程序搜索路径里没有该可执行文件 → 安装 ffmpeg 后用
--ffmpeg-binary-path指到它,再跑一次doctor确认。 - 密钥已传却解密失败→ KID:KEY 字符串有多余空格,或密钥不属于当前 KID → 核对字符串;多个密钥用多个
--key分别传入;仍不行时--decryption-engine FFMPEG换引擎重试。 - 请求被站点拦截(403 或分片为空)→ 缺鉴权信息 → 补
-H "Cookie: ..."或--cookies;需要代理时加--custom-proxy http://127.0.0.1:7890;排查阶段把--log-level调到 DEBUG 看完整请求日志。 - 老版 Windows 终端输出乱码或卡住→ 该系统的自带终端对 ANSI 支持不全 → 在 cmder 等第三方终端里运行程序。
它覆盖 HLS/DASH/ISM 解析、解密与合并的完整链路,但各平台的鉴权方式无法保证。遇到解析不了的流或想要目前没有的参数,把命令和场景写进 Issues,能帮助迭代。
【免费下载链接】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),仅供参考