N_m3u8DL-RE 实战:5 条命令跑通 MPD/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 这个跨平台的流媒体视频下载工具,一条命令就能把 MPD/M3U8/ISM 清单里的分片拉齐、合成完整 MP4。从装环境到啃加密,照着走就能跑通。
认识它:分片下载器凭什么"无中生有"
一句话原理
视频网站"只能在线看",是因为内容被切成几秒一段的小分片,再配一份清单文件(MPD / M3U8 / ISM)描述存放位置。N_m3u8DL-RE 做的事很简单:读取清单 → 拿到全部分片地址 → 多线程下载 → 调 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/:合并、字幕、进度等通用能力
装好唯一依赖,再装上它
下载本身零依赖,但合并阶段会调 FFmpeg,先验证一下:
ffmpeg -version没装的话,Ubuntu/Debian 直接sudo apt install ffmpeg。工具本身三条路线任选其一:
# 路线一:到 Release 页面按系统选预编译包(win-x64 / darwin / linux),解压即用 # 路线二:Arch Linux 及其衍生版,一条命令装好 yay -Syu n-m3u8dl-re-bin # 路线三:源码构建 git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE/src/N_m3u8DL-RE && dotnet build -c Release装完先敲一句N_m3u8DL-RE --version,能输出版本信息就说明一切正常。
首战:一条命令拿下官方测试流
最短能跑通的命令
用法就是一句话:把链接或本地清单文件直接丢给它。
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:并发线程数,默认 10,宽带够时可以再往上加-mt:即--concurrent-download,音视频字幕同时拉取,总耗时明显缩短
小技巧:--ui-language zh-CN一键切中文界面;程序也接受本地清单,把.m3u8下载到本地后N_m3u8DL-RE playlist.m3u8一样能跑;常用参数还能写进配置文件,每次少敲一半命令。
调顺网络:提速、限速、重试三件套
这一步不解决"能不能下"的问题,却决定你下得爽不爽。与其等翻车再修,不如先把路铺平。
性能:带宽怎么分
速度上不去就先加线程,--thread-count 16直接顶上去;反过来不想占满带宽影响别人看视频,就用-R限速,单位支持 Mbps / Kbps:
N_m3u8DL-RE "链接" --thread-count 16 -R 15M稳定性:弱网先兜底
分片下载失败会自动重试(默认 7 次),弱网可以再调高重试次数、放宽超时时间:
N_m3u8DL-RE "链接" --download-retry-count 10 --http-request-timeout 60走代理就加--custom-proxy指向你的代理地址;默认跟随系统代理,想关掉用--use-system-proxy false。
症状对照表
| 症状 | 对策 |
|---|---|
| 提示找不到 FFmpeg | 装 FFmpeg,或--ffmpeg-binary-path指定 exe 全路径 |
| 老版本 Windows 终端界面错乱 | 换 cmder 之类的终端跑 |
| 分片下载频繁失败 | 加--download-retry-count放宽--http-request-timeout |
| 合并后文件不完整 | 关掉--del-after-done保留临时分片,用--check-segments-count(默认开启)核对数量 |
| 占满带宽影响别人 | -R 15M限速 |
排错兜底永远是这句,把日志打到文件里慢慢翻:
N_m3u8DL-RE "链接" --log-level DEBUG --log-file-path ./download.log--log-level支持 DEBUG / ERROR / INFO / OFF / WARN 五档。
会挑轨道:正则精挑细选,只下我想要的
不少 DASH 清单塞着三四档清晰度、五六条音轨、好几组字幕,全下回来既占硬盘又费时间。
默认行为与懒人模式
不带筛选参数时,程序会弹交互选择框让你勾选;懒得选就--auto-select,自动把每种类型的最佳轨道选齐。
用正则精挑细选
-sv/-sa/-ss三个选择参数都支持字段=正则的写法,多个条件用冒号拼接,for=best|worst|all决定取几条:
# 只选 1080p 且 HEVC 编码的最佳视频轨 N_m3u8DL-RE "链接" -sv res="1920*":codecs=hvc1:for=best # 最佳英语音轨 N_m3u8DL-RE "链接" -sa lang=en:for=best想要反着来,用-dv/-da/-ds剔除不要的轨道,比如-da lang="en|ja"就是把英日音轨全部排除。
字幕、试看、命名防冲突
# 只要字幕,默认输出 SRT,可切 VTT N_m3u8DL-RE "链接" --sub-only --sub-format VTT # 先试看一段:只下第 5 分钟到 20 分钟的内容 N_m3u8DL-RE "链接" --custom-range 05:00-20:00--save-pattern按变量拼文件名,比如<SaveName>_<Resolution>_<Bandwidth>会得到类似video_1920x1080_5000000.mp4的文件,还支持<Language>、<Codecs>、<FrameRate>等变量自由组合。
啃硬骨头:直播录制与加密流解密
直播怎么录:实时合并别等录完再合
直播分片边播边删,默认"先下完再合并"录几小时会拖很久。开--live-real-time-merge实时合并,录完即得成品:
N_m3u8DL-RE "https://cmafref.akamaized.net/cmaf/live-ull/2006350/akambr/out.mpd" \ --live-real-time-merge --live-record-limit 02:00:00上面是官方直播测试流,配--live-record-limit设录制时长上限,到点自动收工。其余选项:--live-perform-as-vod把正在播的直播当点播一次性拉;--live-pipe-mux管道直喂 FFmpeg 低延迟混流,⚠️ 弱网慎开,容易丢数据。
加密流密钥怎么传
先判断有没有加密:HLS 清单里找#EXT-X-KEY,DASH 找ContentProtection。加密流通常用--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,可选FFMPEG | SHAKA_PACKAGER。
HLS 场景如果已经知道加密方法、密钥和 IV,可以硬指定,省去猜测流程:
N_m3u8DL-RE "链接" \ --custom-hls-method AES_128 \ --custom-hls-key 000102030405060708090a0b0c0d0e0f \ --custom-hls-iv 000102030405060708090a0b0c0d0e0f提醒一句:请只对你有合法权限的内容做解密,这个工具定位于学习与技术研究。
收尾:自查表与两个"香"参数
| 阶段 | 验证动作 | 状态 |
|---|---|---|
| 环境就绪 | N_m3u8DL-RE --version与ffmpeg -version均可用 | ☐ |
| 首战告捷 | 用官方测试流跑通,得到完整 MP4 | ☐ |
| 输出规范 | --save-dir / --save-name / --thread-count用顺手 | ☐ |
| 会挑轨道 | -sv / -sa / -ss配合-mt组合熟练 | ☐ |
| 能录直播 | --live-real-time-merge+--live-record-limit验证过 | ☐ |
| 能解加密 | --key KID:KEY跑通 ClearKey 示例 | ☐ |
| 会排故障 | 出问题第一时间开--log-level DEBUG | ☐ |
最后送两个"知道的人都说香"的隐藏参数:--task-start-at 20260815230000定时开工(格式 yyyyMMddHHmmss),适合凌晨跑大文件;-M format=mkv:muxer=mkvmerge指定混流方式,配合--mux-import path=zh-Hans.srt:lang=chi还能把外部字幕塞进成品。
工具再强大,不如亲手跑通一次。挑一条测试流把第一个视频下载下来,"只能在线看"这句话基本可以从你的字典里删掉了 🎬
【免费下载链接】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),仅供参考