N_m3u8DL-RE 实战教程:从第一条命令到直播录制,搞定 M3U8/MPD 流媒体下载
【免费下载链接】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 三种流媒体协议,点播下载与直播录制都能覆盖。这篇文章按"先跑通、再进阶、后查阅"的顺序组织:不管你是刚接触命令行的新手,还是打算把下载流程写进脚本的进阶用户,都能从这里拿到可直接复制的命令。
它解决的问题
先对号入座,看四种最常见的需求它分别怎么接:
- 网页上没有下载按钮:播放器右键菜单干干净净时,它直接接收 M3U8/MPD 清单地址,解析、分片下载、解密、合并全部自动完成,不需要你手动抓分片。
- 多音轨不知道怎么挑:一条 DASH 流拆出十几条视频、音频、字幕轨,它内置正则筛选器,按分辨率、编码、语言、声道等字段精确挑轨。
- 直播只能看一次:它原生支持直播录制,边播边存,录制时长、停止时机都可以提前写进命令里。
- 视频被加密了:AES-128、CENC 这类常见加密,只要你拿到密钥,把参数传对,解密后直接产出可播放的文件。
三分钟跑通第一次下载
安装分平台各一句话:Windows 从 Release 页面下载对应版本解压,在终端里直接运行可执行文件(老版本 Windows 自带终端可能不兼容,换 cmder 运行即可);macOS 与 Linux 解压后授予执行权限,终端里运行;Arch 系 Linux 可以直接走包管理器:
yay -Syu n-m3u8dl-re-bin然后是最简形态的一条命令:
N_m3u8DL-RE "https://example.com/video.m3u8"回车之后,工具内部依次做四件事:
- 解析清单文件,列出所有可用的视频、音频、字幕轨道;
- 弹出交互选择框,让你勾选本次要保留的轨道;
- 多线程并行下载选中轨道的全部分片,失败自动重试(默认 7 次);
- 调用 ffmpeg 把视频、音频、字幕混流,输出一个完整的 MP4,并写入
meta.json存档清单信息。
提示:不想在交互框里逐个点选时,加--auto-select,它会自动选最佳画质视频、每种语言里最好的音轨和全部字幕,一条命令走全自动。
按任务进阶
以下四个任务按使用频率排序,每个都给出可直接运行的完整命令。想深入了解实现机制的话,src/N_m3u8DL-RE/DownloadManager/目录是各下载流程的入口。
精确挑选音画字幕轨道
目标:在多轨道的 MPD/DASH 流里只拿指定规格,不浪费带宽和磁盘。
N_m3u8DL-RE "https://example.com/video.mpd" \ -sv res="3840*":codecs=hvc1 \ -sa lang=zh:for=best \ -ss name="中文":for=all \ -M format=mp4-sv、-sa、-ss分别筛选视频、音频、字幕轨,res、codecs、lang、name、channels等字段用:组合,条件本身是正则表达式;for=best / best2 / all决定取最优一条、前两条还是全部;-M format=mp4指定最终容器,可选mp4、mkv、ts;- 手里已有的外挂字幕或额外音轨,用
--mux-import path=zh.srt:lang=chi:name="简体中文"一并混进去。
提示:写正则前先跑一遍不加筛选参数的命令,在交互选择框里看清轨道实际长什么样,再决定条件怎么写,能少走不少弯路。
直播录制参数怎么配
目标:长时间直播完整录下来,中途断掉也保留已录部分。
N_m3u8DL-RE "https://example.com/live.m3u8" \ --live-real-time-merge \ --live-record-limit 03:00:00--live-real-time-merge:分片边下载边实时合并进文件,录制中断时已有内容依然完整可播;--live-record-limit HH:mm:ss:录制时长上限,到点自动停止退出;--live-perform-as-vod:把直播清单当点播处理,适合"边播边生成清单"的 HLS 直播;--live-pipe-mux:走管道把音视频实时喂给 ffmpeg 混流成 TS,体验更顺滑,但依赖 ffmpeg 从管道稳定读数据。
注意:弱网环境下优先--live-real-time-merge,不要开--live-pipe-mux,管道断流会直接丢帧丢数据。
加密流解密命令
目标:拿到密钥后,把 CENC/AES-128 加密流解密成正常 MP4。
N_m3u8DL-RE "https://example.com/encrypted.m3u8" \ --key 0123456789ABCDEF0123456789ABCDEF \ --decryption-engine MP4DECRYPT--key支持单个 KEY 或KID:KEY成对传入,多个密钥就写多个--key;--decryption-engine在MP4DECRYPT、SHAKA_PACKAGER、FFMPEG三选一,默认 MP4DECRYPT;- 特殊 HLS 场景还可以用
--custom-hls-method、--custom-hls-key、--custom-hls-iv手动指定加密方式、密钥和 IV。
提示:源码src/N_m3u8DL-RE/Crypto/目录内置了 AES、ChaCha20 的实现,非常规加密也有兜底路径。解密功能请只用于你有权访问的内容。
批量下载与定时任务配置
目标:一组链接批处理,或让任务在固定时间点自动开跑。
N_m3u8DL-RE "https://example.com/video.m3u8" \ --save-dir ./videos \ --task-start-at 20250101080000 \ --no-log--task-start-at格式为yyyyMMddHHmmss,到点之前任务保持等待;--no-log关闭日志文件输出,配合--log-level ERROR只保留错误信息,日志更干净;-R 15M限速,单位 Mbps 或 Kbps,挂在共享网络下防止占满带宽。
提示:批量下载时把 URL 和--save-name作为变量写进 shell 循环,再叠加--save-pattern "<SaveName>_<Resolution>_<Bandwidth>",整个系列的命名就能自动区分,不用事后手动整理。
参数速查表
| 参数 | 作用 | 典型用法/适用场景 |
|---|---|---|
"url" | 清单地址或本地文件 | 所有任务的第一步 |
--auto-select | 自动选最佳视频、各语言最佳音频、全部字幕 | 免手动勾选的全自动下载 |
--thread-count | 分片下载线程数,默认等于 CPU 核数 | 加速大文件下载 |
-R 15M | 限速,Mbps/Kbps | 共享带宽下控速 |
-sv / -sa / -ss | 正则筛选视频/音频/字幕轨 | 多轨道精确挑轨 |
--live-real-time-merge | 录制时实时合并分片 | 长直播、怕中断的录制 |
--live-record-limit | 录制时长上限 HH:mm:ss | 定时停止、无人值守 |
--key | 传入解密密钥,支持 KID:KEY | CENC/AES 加密流 |
--decryption-engine | 选择解密工具 | 默认解密结果不满意时切换 |
-M format=mp4 | 输出容器:mp4/mkv/ts | 指定成片格式 |
--save-dir / --save-name / --save-pattern | 存放目录、文件名、命名模板 | 批量归档 |
-H | 追加请求头 | 403 时伪装 Cookie/UA |
--custom-proxy | 指定代理地址 | 需代理才能访问的站点 |
--download-retry-count | 分片失败重试次数,默认 7 | 网络波动大的环境 |
--task-start-at | 任务开始时间 yyyyMMddHHmmss | 定时无人值守下载 |
--append-url-params | 把输入 URL 的查询参数加到分片 | 令牌挂在 URL 上的站点 |
排障手册
问:启动后提示找不到 ffmpeg,合并环节报错?原因:混流依赖 ffmpeg,但它不在 PATH 里。解决:安装 ffmpeg,或用--ffmpeg-binary-path指定完整路径。
问:分片请求全是 403?原因:站点校验了 Cookie 或 User-Agent。解决:加-H "Cookie: ..."、-H "User-Agent: ..."伪装请求头。
问:直播录制出现花屏、断流?原因:弱网下开了--live-pipe-mux,管道数据丢失。解决:关闭管道混流,改用--live-real-time-merge。
问:分片下载频繁失败、任务卡住?原因:网络波动或对端限速。解决:调大--download-retry-count、拉长--http-request-timeout(默认 100 秒),或降低--thread-count。
问:终端显示乱码或颜色异常?原因:老系统终端不支持 ANSI 颜色。解决:加--no-ansi-color;Windows 老版本建议换 cmder 运行。
开始动手
去项目 Release 页面取对应平台的版本解压即用,或者克隆源码自行构建:git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE后执行dotnet build。对某个参数不确定时,先查内置帮助N_m3u8DL-RE --help,再对单个参数用--morehelp 参数名看详细说明,完整文档见项目 README。跑通第一条命令之后,剩下的就是把参数按任务组合起来。
【免费下载链接】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),仅供参考