N_m3u8DL-RE 下载教程:7 个问答带你玩转 MPD/M3U8/ISM 流媒体下载
N_m3u8DL-RE 下载教程:7 个问答带你玩转 MPD/M3U8/ISM 流媒体下载
【免费下载链接】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(DASH)、M3U8(HLS)、ISM(MSS) 格式视频的"只能在线看、没法保存"问题,同时支持点播下载与直播录制。这篇文章用 7 个新手最关心的问题串起全文,从安装、首条下载命令,一路讲到轨道挑选、直播录制、密钥解密和报错排查,跟着操作就能跑通完整流程。
先讲一个真实的下载场景
上周帮同事录一门付费在线课,网页端只有播放器、没有任何下载按钮,课程又按 6 秒一段切成几百个分片。手动抓包再拼接?想想就头大。最后我只敲了一行命令,半小时后整门课就以一个完整 MP4 躺在硬盘里了——这个"救星"就是 N_m3u8DL-RE。
如果你也遇到过这些情况,这篇文章就是为你写的:
- 网站有在线课程/影视资源,但没有下载入口
- 想录制一场正在进行的直播赛事或会议
- 下载时只想挑 1080p 的清晰度,不想要一堆重复轨道
- 遇到 AES 加密或加了 DRM 的流,不知道从哪下手
下面我们直接进入正题。
问题一:N_m3u8DL-RE 是什么,凭什么能下载"只能在线看"的视频?
一句话认识它
N_m3u8DL-RE 是一个命令行流媒体下载器,它能读取流媒体清单文件(MPD / M3U8 / ISM),把视频流切成的大量分片自动下载下来,再用 FFmpeg 等工具合并成一个完整文件。点播、直播都支持,Windows / macOS / Linux 三大平台通吃。
它由哪些模块组成
源码组织得很清晰,想深入了解的可以顺着目录看:
| 源码目录 | 职责 |
|---|---|
src/N_m3u8DL-RE.Parser/ | 解析 MPD / M3U8 / ISM 清单,提取音视频轨道信息 |
src/N_m3u8DL-RE/DownloadManager/ | 下载调度,包含直播录制管理器 |
src/N_m3u8DL-RE/Crypto/ | AES、ChaCha20 等加解密逻辑 |
src/N_m3u8DL-RE/Util/ | 合并、字幕、工具类等通用能力 |
src/N_m3u8DL-RE.Common/ | 实体定义、日志、HTTP 工具等公共层 |
需要提前准备什么
下载本身零依赖,但合并与解密阶段建议装好 FFmpeg,另外按需准备 mp4decrypt 或 shaka-packager(后面解密环节会用到)。在终端里先确认一下:
ffmpeg -version问题二:N_m3u8DL-RE 安装步骤有哪些?
安装方式很多,挑一条适合你的就行。
方式一:下载预编译版本(最省事)
打开项目的 Release 页面,按自己的系统选择压缩包,例如 Windows 选N_m3u8DL-RE-win-x64.zip,macOS 选 darwin 版本,解压后直接运行可执行文件即可,无需装任何运行时。
方式二:Arch Linux 一行搞定
Arch 系用户用 AUR 源最方便,社区维护的包有两个:
# 安装正式发行版 yay -Syu n-m3u8dl-re-bin # 安装开发版(体验最新功能) yay -Syu n-m3u8dl-re-git方式三:从源码构建
想追最新改动,可以克隆仓库后用 .NET 编译:
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE.git cd N_m3u8DL-RE/src/N_m3u8DL-RE dotnet build -c Release安装后验证
任何方式装完,先跑一下版本号,确认程序能正常启动:
N_m3u8DL-RE --version问题三:最简单的 M3U8 / MPD 下载命令怎么写?
一条命令跑通下载
程序用法极其简单:把链接或本地清单文件直接丢给它。
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd"这个链接是官方测试流,多音轨多字幕,非常适合第一次练手。输入命令后,程序会解析清单、自动挑选最佳画质、下载并合并,全程进度一目了然。
推荐再加三个参数
实际使用时,我通常会顺手加上输出目录、文件名和线程数:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" \ --save-dir ./videos \ --save-name "我的收藏" \ --thread-count 8--save-dir:保存目录,不存在会自动创建--save-name:自定义文件名,比默认的乱码 ID 好认--thread-count:并发线程数,宽带足够时可以调到 CPU 核心数的 2 倍左右提速
补充技巧
- 想改用中文界面,加
--ui-language zh-CN(支持 en-US / zh-CN / zh-TW) - 不想让日志文件刷屏,可以
--no-log - 程序也接受本地文件作为输入,把
.m3u8清单下载到本地后N_m3u8DL-RE playlist.m3u8一样能跑
问题四:多音轨多字幕的片源,怎么挑出想要的那条轨道?
很多 DASH 清单里塞着三四档清晰度、五六条音轨、好几组字幕。默认只下"最佳"一套,想精细控制就用轨道选择参数。
按分辨率、语言、字幕精挑细选
三个选择参数都支持正则表达式,格式是字段=正则,用冒号拼接,最后用for=best|worst|all决定取几条:
# 只选 1080p 且 HEVC 编码的最佳视频轨 N_m3u8DL-RE "清单链接" -sv res="1920*":codecs=hvc1:for=best # 选最佳英语音轨 N_m3u8DL-RE "清单链接" -sa lang=en:for=best # 所有带"中文"字样的字幕全要 N_m3u8DL-RE "清单链接" -ss name="中文":for=all对应的还有-dv / -da / -ds用来反向剔除不需要的轨道。
一次拿全所有轨道
懒人模式是让程序把全部轨道都下回来:
N_m3u8DL-RE "清单链接" --auto-select想提速的话,加上-mt(--concurrent-download)让音视频和字幕并发下载,能明显缩短总耗时。
只想下字幕怎么办
只需要字幕时,用--sub-only跳过音视频,配合--sub-format选择输出格式(默认 SRT,可切 VTT):
N_m3u8DL-RE "清单链接" --sub-only --sub-format VTT补充技巧
多轨道同时下载时,用--save-pattern让文件名自动带上清晰度和码率,避免重名覆盖:
N_m3u8DL-RE "清单链接" --save-name "video" \ --save-pattern "<SaveName>_<Resolution>_<Bandwidth>"最终会得到类似video_1920x1080_5000000.mp4的文件,模板还支持<Language>、<Codecs>、<FrameRate>、<MediaType>等变量,自由组合。
问题五:N_m3u8DL-RE 直播录制怎么操作?
录制直播是很多人入坑的原因。直播流的特点是分片无限增长、且边播边删,所以需要专门的参数配合。
边播边录:实时合并
直播默认是"先下载完再合并",录制几小时的直播这样会拖很久。开启实时合并后,录完即得成品:
N_m3u8DL-RE "https://cmafref.akamaized.net/cmaf/live-ull/2006350/akambr/out.mpd" \ --live-real-time-merge(上面是官方提供的直播测试流,可用来验证录制流程。)
限制录制时长
不想让它一直录下去,用--live-record-limit设定上限,格式是时:分:秒:
N_m3u8DL-RE "直播链接" \ --live-real-time-merge \ --live-record-limit 02:00:00直播转点播与管道混流
- 想把正在播的直播当点播一次性拉取,用
--live-perform-as-vod - 追求低延迟成品,可以尝试
--live-pipe-mux,通过管道把数据实时喂给 FFmpeg 混流输出 - 如果画面和字幕对不上,试试
--live-fix-vtt-by-audio,程序会读取音频起始时间来修正 VTT 字幕
补充注意
⚠️网络不够稳定时别开--live-pipe-mux——管道内数据读取由 FFmpeg 负责,弱网环境下容易丢直播数据。另外录制时默认保留分片文件(--live-keep-segments),想省空间可以关掉。
问题六:遇到加密视频怎么用密钥解密下载?
HLS / DASH 常见加密方式包括 AES-128、CENC(ClearKey)等。N_m3u8DL-RE 支持手动指定密钥解密。
先判断是否加密
看清单里有没有#EXT-X-KEY(HLS)或ContentProtection(DASH)字段,也可以直接看程序解析时的提示。加密流一般需要KID:KEY形式的密钥。
手动指定 KID:KEY
每个密钥用一次--key,格式为KID:KEY:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd" \ --key 9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4d如果多个分片共用同一个 KEY,也可以直接简写--key 密钥值。密钥多了还能写进文件用--key-text-file按 KID 自动查找。
选择解密引擎
解密依赖第三方程序,通过--decryption-engine切换,默认是 MP4DECRYPT:
N_m3u8DL-RE "加密流链接" \ --key "KID:KEY" \ --decryption-engine FFMPEG可选引擎为FFMPEG | MP4DECRYPT | SHAKA_PACKAGER,若程序没装在 PATH 里,用--decryption-binary-path指定完整路径。
补充技巧
HLS 场景如果知道加密方法、密钥和 IV,也可以直接硬指定,省去猜流程:
N_m3u8DL-RE "链接" \ --custom-hls-method AES_128 \ --custom-hls-key 000102030405060708090a0b0c0d0e0f \ --custom-hls-iv 000102030405060708090a0b0c0d0e0f温馨提示:请只对你有合法权限的内容使用解密功能,工具本身仅用于学习与技术研究。
问题七:下载慢、报错、中断,常见问题怎么排查?
症状一:提示找不到 FFmpeg
合并或解密阶段报 FFmpeg 相关错误,多半是没装。Ubuntu/Debian 上:
sudo apt install ffmpegWindows 用户从 FFmpeg 官网下载后,把bin目录加进 PATH,或者直接用--ffmpeg-binary-path指定 exe 全路径。
症状二:速度上不去
先检查是不是线程数太低,可以加大--thread-count;如果是因为不想占满带宽,反而要用限速参数-R(支持 Mbps / Kbps):
N_m3u8DL-RE "链接" --thread-count 16 -R 15M症状三:网络不稳定,分片下载失败
分片下载失败会自动重试,默认 3 次,弱网环境可以调高重试次数和超时时间:
N_m3u8DL-RE "链接" --download-retry-count 10 --http-request-timeout 60走代理的用--custom-proxy,例如--custom-proxy http://127.0.0.1:8888。
症状四:合并后文件不完整
程序默认会做分片数量校验(--check-segments-count),如果发现下载数和预期不符会给出提示,把--del-after-done先关掉能保留临时分片方便二次排查。
通用排查手段:打开调试日志
N_m3u8DL-RE "链接" \ --log-level DEBUG \ --log-file-path ./download.log--log-level支持DEBUG / INFO / WARN / ERROR / OFF,出问题先开 DEBUG 看日志,基本都能定位到原因。
补充提醒
老版本 Windows 自带的终端可能不支持本程序的界面渲染,换用 cmder 之类的终端即可正常显示。
隐藏玩法:几个提升体验的进阶参数
上面 7 个问题覆盖了 90% 的使用场景,下面这几个参数属于"知道的人都说香":
| 参数 | 作用 | 示例 |
|---|---|---|
--custom-range | 只下载指定分片区间,适合先试看一段 | --custom-range 05:00-20:00(只下第 5 到 20 分钟) |
--task-start-at | 定时执行任务,格式yyyyMMddHHmmss | --task-start-at 20260815230000 |
-M/--mux-after-done | 下载完成后混流成指定容器 | -M format=mp4或-M format=mkv:muxer=mkvmerge |
--mux-import | 混流时引入外部音轨/字幕 | --mux-import path=zh-Hans.srt:lang=chi:name="中文 (简体)" |
--ad-keyword | 用正则匹配广告分片 URL 并跳过 | --ad-keyword "ad|promo" |
--append-url-params | 给分片追加 URL 参数,部分网站必须开 | --append-url-params |
收尾:一张自查清单与下一步
把这篇教程浓缩成一张清单,跟着走就不会迷路:
- ✅ 装好 N_m3u8DL-RE 与 FFmpeg,
--version验证可用 - ✅ 用官方测试流跑通第一条
N_m3u8DL-RE "链接"命令 - ✅ 用
--save-dir / --save-name / --thread-count规范输出 - ✅ 多轨道用
-sv / -sa / -ss精确挑选,-mt并发提速 - ✅ 直播用
--live-real-time-merge+--live-record-limit边录边合并 - ✅ 加密流用
--key KID:KEY配合--decryption-engine解密 - ✅ 出问题先开
--log-level DEBUG,再看日志对症下药
想继续深入的话,推荐三个方向:一是通读项目内的 README 文档,里面有全部命令行参数的详细说明与--morehelp示例;二是翻一翻TestStreams.md,里面整理了覆盖点播、直播、加密、多字幕等场景的官方测试流,是练手的最佳素材;三是对照源码目录了解解析器(Parser)、下载管理器(DownloadManager)与解密模块(Crypto)的实现,想给项目贡献功能或定制行为时用得上。
工具再多,不如亲手跑通一次。现在就去复制一条测试流链接,把属于你的第一段视频下载下来吧——从此"只能在线看"这四个字,基本可以从你的字典里删掉了。🎬
【免费下载链接】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),仅供参考
