N_m3u8DL-RE 快速上手指南:DASH/HLS 流媒体下载一次跑顺
【免费下载链接】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 是一款免费开源、跨平台的流媒体下载工具,专门处理 MPD/M3U8/ISM(即 DASH/HLS/MSS)三类在线视频源,点播、直播都能下。手里只有一条流地址、播放器放不了、保存不下来、不知道挑哪条画质轨——这些麻烦它都替你解决。本文带你从"刚拿到链接"一路做到"成品文件躺在目录里",并把自动选画质、切时间段、直播限时录制、解密这几件高频事一次讲透。
一分钟看懂整个下载回路
碰参数之前先把这个回路记下来,后面每个旋钮该拧哪里就清楚了:
- 把链接(或本地 MPD/M3U8 文件)作为唯一必填参数传入
- 程序解析流并列出全部音视频字幕轨;不指定轨道时会进入交互式选轨界面,用键盘勾选
- 下载所选轨道,默认往临时目录写一份
meta.json,里面是全部轨道信息(目录可用--tmp-dir调整) - 分片合并,成品默认落在当前目录(
--save-dir可改)
写脚本的话,用--auto-select跳过第 2 步的交互,它会自动选"最佳视频 + 每种语言各一条最佳音频 + 全部字幕"。
首条命令跑起来:每一步都带验证
第一步,拿到程序。Windows 用户从项目 Release 页下载最新构建,解压即用,无需再装别的依赖;Arch Linux 及衍生版可走 AUR 源装n-m3u8dl-re-bin。验证方法:
N_m3u8DL-RE --version能打出版本号(当前 0.6.0)即安装成功。第二步,确认 ffmpeg。合并分片、混流都靠它,程序启动时会去系统路径找,找不到会直接报错退出。验证方法:
ffmpeg -versionffmpeg 装在非标准位置时,用--ffmpeg-binary-path指全路径。第三步,跑第一次下载。链接取自仓库自带的 TestStreams.md 清单,是一条多音轨多字幕的点播流,很适合练手:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" --save-name demo成功看两点:临时目录里出现meta.json,打开轨道列表确认解析无误;当前目录出现能正常播放的成品文件。想强制中文界面加--ui-language zh-CN;终端乱码花屏就先试--no-ansi-color,还不行换 cmder 跑。
只挑最高清的一条轨,顺手合进 MP4
场景:批量脚本,不想碰交互界面。-sv / -sa / -ss三个是正则过滤器,for=best表示"按质量挑最好的":
N_m3u8DL-RE "流地址" -sv best -sa best -ss all -M format=mp4这条是"最佳视频 + 最佳音频 + 全部字幕,完成后混成一个 MP4"。常调的旋钮:
- 按分辨率和编码过滤:
-sv res="3840*":codecs=hvc1,只要 4K HEVC - 只要最佳英语音轨:
-sa lang=en:for=best -dv / -da / -ds写法与上面完全相同,语义相反,是"丢弃"- 只看轨道列表不实际下载:
--skip-download
字幕想输出 VTT 而不是默认 SRT,把--sub-format VTT换上;--sub-only则只下字幕,音视频不动。
按时间段或分片序号,只下中间一段
点播不必全下。--custom-range支持两种写法,任选其一:
N_m3u8DL-RE "流地址" --custom-range 05:00-20:00这条只取第 5 分钟到第 20 分钟的内容。按分片序号写:0-10是 0 到 10 号共 11 个分片,10-表示从 10 号往后全部,-99是前 100 个分片。这个参数只对点播生效,直播流用不了;直播录多久由下一节的--live-record-limit管。
直播录制:录到点自动停 📺
程序识别出链接是直播流时自动进入录制模式。最稳的组合是"实时合并 + 限时长":
N_m3u8DL-RE "直播地址" --live-real-time-merge --live-record-limit 01:30:00--live-real-time-merge让录制过程中文件持续合并更新,直播结束不用干等合并;--live-record-limit到 1 小时 30 分钟自动停录,忘了 Ctrl+C 也不会把磁盘吃满。
另外两个场景:
- 想把直播整个当点播一次性拉下来:加
--live-perform-as-vod - 想边录边出一个能播的 TS 文件:开
--live-pipe-mux,走管道 + ffmpeg 实时混流。但 README 特意提醒,网络不稳时别开它,管道里数据容易丢
仓库测试清单里也备了现成的直播源,拿来验证这段配置正合适。
加密流解密后下载 🔑
下完放不了、提示加密,说明源带了 DRM 保护。用--key传密钥,所有分片 KEY 相同时直接--key KEY就行;密钥多就放文件里,用--key-text-file按 KID 查。
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd" --key 9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4d这条 ClearKey 测试流和密钥来自仓库测试清单,是验证解密链路的一一对应组合。解密引擎默认走mp4decrypt,可用--decryption-engine换ffmpeg或shaka-packager。
旋钮速查
下面是日常最常碰的参数,记住这张表就够覆盖绝大部分使用场景;每个参数的完整说明以仓库根目录 README.md 为准。
| 参数 | 作用 | 什么时候用 |
|---|---|---|
--auto-select | 自动选所有类型的最佳轨道 | 跳过交互界面、写批量脚本 |
-sv/-sa/-ss | 正则筛选视频/音频/字幕 | 明确想要某种画质或语言 |
-dv/-da/-ds | 正则丢弃轨道 | 排除不想要的轨 |
-M format=mp4 | 把分离音视频混进一个容器 | 要一个能直接交付的成品 |
--custom-range | 只下部分分片,按时间或序号 | 点播只要中间一段 |
--live-record-limit | 直播录制时长限制,HH:mm:ss | 录固定时长、怕忘关 |
--save-pattern | 命名模板,支持<Resolution>等变量 | 同目录多文件防撞名 |
--thread-count | 下载线程数,默认本机 CPU 线程数 | 下载慢时调整 |
--download-retry-count | 单分片重试次数,默认 3 | 分片总中断 |
--custom-proxy | 设置请求代理,如http://127.0.0.1:8888 | 需要走代理访问 |
--ad-keyword | URL 正则,命中分片不下 | 想跳过广告分片 |
--log-level | 日志级别,DEBUG最详细 | 出问题要定位 |
出问题按症状查
| 症状 | 最可能原因 | 处理方式 |
|---|---|---|
| 打开链接就 401/403 | 站点要鉴权 | -H "Cookie: xxx"、-H "User-Agent: xxx"补请求头 |
| 分片请求 403 或字段缺失 | 分片地址需带原链接参数 | 加--append-url-params |
| 下载慢、分片总中断 | 线程过多或网络抖动 | --thread-count调小、--download-retry-count调大,或换--custom-proxy |
| 成品放不了、提示加密 | 流带 DRM 保护 | --key KID:KEY或--key-text-file,必要时换--decryption-engine |
| 界面乱码、花屏 | 老版 Windows 终端不支持 ANSI | 先--no-ansi-color,不行换 cmder |
| 想知道哪一步出的事 | 现场信息不足 | --log-file-path落日志文件,--log-level DEBUG拉满细节 |
| 成品互相覆盖 | 同目录文件名冲突 | --save-pattern "<SaveName>_<Resolution>"区分命名 |
还有一个习惯:程序启动时会做版本检查,有新版本会显示在标题栏,报 bug 或求助前先用最新构建复现一次,能省掉一半来回。
想再挖深一点
- StreamExtractor.cs:流提取入口,DASH/HLS/MSS 三套解析器都挂在它下面
- DownloadManager 目录:点播下载和两类直播录制的主流程
- Crypto 目录:AES、ChaCha20 解密实现,对应正文里的
--key
【免费下载链接】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),仅供参考