N_m3u8DL-RE 实战手册:4 个高频场景跑通 m3u8 下载、DASH 解密与直播录制
【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE
流媒体下载真正难的不是下载本身:一条 .m3u8 链接只是一份目录,真正的内容散落在成百上千个小分片里,音轨与视频往往分离,其中还可能带着加密。N_m3u8DL-RE 是一款面向 MPD/M3U8/ISM 三类流的跨平台工具,把 m3u8 下载、DASH 解密、直播录制装在同一条命令里,Windows、macOS、Linux 三端行为一致。下面按 4 个真实场景走一遍常用姿势。
📦 先安装,再验证环境
Windows/macOS/Linux 从发行版发布页拿对应系统的压缩包,解压即用,不依赖额外运行时;Arch Linux 及其衍生版可以装社区维护的包yay -Syu n-m3u8dl-re-bin。想自己构建的话(需要 .NET SDK):
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE/src dotnet build N_m3u8DL-RE.sln两条提醒:较老版本的 Windows 自带终端可能显示异常,换 cmder 这类终端运行;装好后执行N_m3u8DL-RE doctor,它会报告工具版本、系统环境,顺带确认能否找到 ffmpeg——后面所有混流都靠它。
场景一:下第一条 m3u8,产出可播放文件
点播链接的最简形态就一行:
N_m3u8DL-RE "https://example.com/course/lesson01.m3u8" --save-dir ./downloads执行后的流程:解析清单并列出各条轨道,默认自动挑选最优轨,以 10 个线程(默认值,可用--thread-count调整)并行拉分片再按顺序落盘。音视频如果是分开的两条轨,加-M format=mp4,下载完会自动合成为一个 mp4,字幕同步封装,临时文件默认清理。
挑流不用背轨道 ID。-sv/-sa/-ss接收正则过滤条件,能按分辨率、编码、语言、码率等维度筛:
-sv "res=3840*:codecs=hvc1"—— 只留 4K HEVC 视频-sa lang="ja|en":for=best2—— 挑最优的 2 条日语或英语音轨--auto-select—— 全部类型一键选最优
更多匹配维度(帧率、声道数、动态范围、DASH period 等)可以--morehelp select-video查看。
🔒 场景二:下载带加密的 DASH/MPD 流
DASH 里的 CENC 类 MP4 内容用 KID+KEY 配对上锁,从请求里抓到这两段值直接传进去:
N_m3u8DL-RE "https://example.com/protected.mpd" \ --key "4a3b2c1d-8e6f-4a5b-9c7d-1e2f3a4b5c6d:0f1e2d3c4b5a69788796a5b4c3d2e1f0" \ --save-name protected_video解密分两条路径:HLS 的 AES-128 与 ChaCha20 由程序内置实现完成,无需操心;CENC 内容则调用外部工具,默认引擎是 MP4DECRYPT,环境跑不起来时换成--decryption-engine FFMPEG或SHAKA_PACKAGER即可。多组密钥用多个--key依次传入。
📺 场景三:直播录制与定时收尾
直播录制的本质是边播边抓新分片。只录三小时直播的前 90 分钟并实时合成完整文件:
N_m3u8DL-RE "https://example.com/live/manifest" \ --live-record-limit 01:30:00 --live-real-time-merge--live-record-limit到时长自动停止;--live-real-time-merge让新分片边下边合,不必等全部下完;网络不稳定时建议别开--live-pipe-mux(管道直混 TS),官方明确提示它在这种环境下可能丢数据。错过开播?--live-catchup "01:00:00"可从一小时前回看起步,也接受具体日期时间。IPTV 频道列表 channels.m3u 同样支持,还能按频道名正则筛选后逐个录制。
✂️ 场景四:只取字幕,或只取中间一段
两个高频需求,各一个参数解决:
- 只要字幕:
--sub-only --sub-format VTT导出字幕轨,配-ss name="中文":for=all按语言或名称过滤 - 只取一段:
--custom-range 05:00-20:00只下载第 5 到 20 分钟的分片;多段点播也可--vod-select-parts弹出交互窗口勾选,或--vod-drop-parts 0,2-4按编号排除
站点要求鉴权时,把浏览器里的 Cookie 和 User-Agent 用-H逐条补上;整套 Cookie 则用--cookies cookies.txt导入浏览器导出的 Netscape 格式文件。
高频参数速查:
| 参数 | 用途 |
|---|---|
-sv/-sa/-ss | 正则挑选视频 / 音频 / 字幕轨 |
--thread-count | 覆盖默认 10 线程 |
--decryption-engine | 在 FFMPEG / MP4DECRYPT / SHAKA_PACKAGER 间切换 |
--custom-proxy | 指定请求代理,如 http://127.0.0.1:7890 |
--log-level DEBUG | 输出完整请求日志,排障用 |
--ffmpeg-binary-path | 找不到 ffmpeg 时手动指定路径 |
🛠 排障速查
| 现象 | 排查顺序 |
|---|---|
| 混流失败,提示找不到 ffmpeg | 安装 ffmpeg 后用--ffmpeg-binary-path /path/to/ffmpeg指定位置 |
| 密钥传了仍解不开 | 检查 KID:KEY 写法有无多余空格;换--decryption-engine SHAKA_PACKAGER,不同引擎对 CENC 方案兼容度不同 |
| 请求反复被站点拒绝 | 用-H补 Cookie/UA,或走--custom-proxy;再把--log-level提到 DEBUG 看完整请求链路 |
解析不掉的特殊流,可先用仓库自带的 测试流列表 验证解析覆盖面;全部参数的详细说明见 README.md。
这套方案的前提是拿到的是流清单的合法链接、且混流环境里可用 ffmpeg,纯许可证式的 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),仅供参考