N_m3u8DL-RE 全攻略:4 个场景一次跑通 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 下载、DASH(.mpd) 与 MSS(.ism) 清单解析和直播录制。跟着下面四个场景往下走,读完你就能跑通自己的第一个下载。
30 秒看懂它到底在干什么
把 m3u8 想成点外卖时的菜单:菜单本身不含菜,只列了每道菜的编号和取餐口;真正进嘴的菜品,是后厨按编号一道道端出来的。N_m3u8DL-RE 干的就是这件事——读清单、按编号逐个取回分片、拼回完整文件。
边界说清楚:它管清单解析、分片下载、合并落盘;不管 DRM 破解,需要破解保护的内容它下不了;也不做下载之外的后期加工。看完安装部分,你将经历四个场景:完整下载、直播录制、时间段截取和批量循环,难度逐级上升。
装好并验证
程序基于 .NET 10 构建,Release 产物采用 AOT 静态编译,可执行文件自包含、解压即可运行,无需单独装 .NET 运行时;只有从源码自行编译时才需要 .NET 10 SDK。Windows 和大部分 Linux 发行版走同一条路:到 Release 页面取对应平台的压缩包,解压到任意目录,把该目录当作执行目录即可;macOS 取 macOS 产物解压后先加执行权限(首次运行若被安全策略拦截,在系统设置里放行);Arch 及其衍生发行版可以走 AUR 包管理器,bin 包是稳定版、git 包是开发版:
# macOS:解压后加执行权限 chmod +x N_m3u8DL-RE # Arch / 衍生发行版(AUR):bin 稳定版,git 为开发版 yay -Syu n-m3u8dl-re-bin # 所有平台统一验证 N_m3u8DL-RE --version看到版本号就能开工。
从一条命令到四个场景
一条命令只有两个必填要素:输入和保存名,其余参数全部可缺省:
N_m3u8DL-RE "https://example.com/course.m3u8" --save-name my_course回车之后程序按顺序做四件事:解析清单、按默认策略挑出视频与音频轨道、多线程抓取分片、合并成以 my_course 命名的成品。下面四个场景按复杂度递增排列,每个场景只讲和上一步不同的地方。
场景一:完整下载怎么配
拿到一条链接、想要整部内容,但想锁定最高画质,就把选流显式写出来。
N_m3u8DL-RE "https://example.com/course.m3u8" \ --save-name my_course -sv best -sa best这行命令和上一步多出来的地方是-sv best -sa best:视频轨按分辨率取最高,音轨按码率取最高,替代默认自动选轨。坑:best 只按分辨率挑视频轨,码率最高的未必被选中,要精确指定就写正则,比如-sv "720"。
场景二:直播录制怎么配
直播流是滚动的,要录满两小时再停,就用这组参数。
N_m3u8DL-RE "https://example.com/live.m3u8" --save-name live \ --live-real-time-merge --live-record-limit 02:00:00这行命令和上一步多出来的地方是--live-real-time-merge与--live-record-limit 02:00:00:前者让录制过程同步合成完整文件,而不是结束后才处理分片;后者限定录满两小时自动停止。坑:不配录制上限时程序不会自己停,得靠 Ctrl+C 手动收尾。
场景三:时间段截取怎么配
清单里只想要中间某一段、前后都不留,用--custom-range圈出来。
N_m3u8DL-RE "https://example.com/course.m3u8" \ --save-name part --custom-range 05:00-20:00这行命令和上一步多出来的地方是--custom-range 05:00-20:00:时间格式为 MM:SS 或 HH:MM:SS,也支持按分片序号写,比如10-、-99。坑:它只保留起始时间落在区间内的完整分片,首尾不会精确裁切到秒。
场景四:批量循环怎么配
手头有一堆清单文件、参数全都一样,写进 for 循环逐条跑。
for url in list1.m3u8 list2.m3u8 list3.m3u8; do N_m3u8DL-RE "$url" --save-dir ./out done这行命令和上一步多出来的地方是输入来自循环变量、输出统一收进--save-dir ./out,每条清单独立解析与合并,互不影响。坑:某条失败不会中断整个循环,建议每条都加--log-file-path落盘日志,方便回溯哪条出了问题。
参数与默认行为速查
| 参数 | 作用 | 缺省时行为 |
|---|---|---|
<input> | 清单链接或本地清单文件路径 | 无,必填 |
--save-name | 指定输出文件名 | 使用自动生成的保存名 |
--save-dir | 指定输出目录 | 当前工作目录 |
-sv/--select-video | 按正则或 best 选择视频轨 | 自动挑一条视频轨 |
-sa/--select-audio | 按正则或 best 选择音轨 | 自动挑一条音轨 |
--thread-count | 下载线程数 | 本机 CPU 逻辑核数 |
- 选流:不写
-sv、-sa时自动挑选视频与音频轨道 - 线程:不写
--thread-count时线程数取Environment.ProcessorCount - 临时文件:
--del-after-done默认开启,合并完成后自动删除临时分片;--check-segments-count默认开启,会核对实际下载分片数与清单预期是否一致
卡住了?按这里查 🛠
老版本 Windows 终端里显示乱码或程序跑不起来?换成 cmder 等第三方终端中运行。系统自带终端与本程序不兼容,老系统上直接替换终端即可解决。
分片下载反复失败?把--download-retry-count调大即可,该参数默认每个分片异常重试 7 次。根因是网络抖动让分片请求超时,分片数量校验默认开启,最终失败会在结果里给出提示。
临时文件把所在分区塞爆?用--tmp-dir把临时文件指到空间更大的分区。临时文件默认随任务落盘,--del-after-done完成后会清理,先挪位置再确认磁盘回收更稳妥。
稳定版和开发版行为不一致?先跑--version确认当前版本号是否为最新。AUR 的 bin 包对应发布版、git 包对应开发版,构建内容本就不同;确认版本无误仍复现,再记录版本信息去反馈。
成品不在预期目录或文件名不对?补上--save-name和--save-dir这两个参数即可。两者缺省时走自动保存名与当前工作目录,显式写出来才可控。
源码在哪找 📂
| 职责 | 目录 |
|---|---|
| 下载调度:点播下载、直播录制、直播回看与合并策略 | src/N_m3u8DL-RE/DownloadManager/ |
| 清单解析:MPD/M3U8/ISM 提取与轨道信息处理 | src/N_m3u8DL-RE.Parser/ |
| 加解密:AES、ChaCha20 等解密工具实现 | src/N_m3u8DL-RE/Crypto/ |
| 工具函数:合并、混流、清理、日志等通用逻辑 | src/N_m3u8DL-RE/Util/ |
提 Issue 前先在已有 Issue 中搜一遍是否有人提过相同问题;新建时在描述里附上--version输出的版本号、完整命令,以及用--log-file-path落盘的日志文件路径,方便复现与定位。
【免费下载链接】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),仅供参考