N_m3u8DL-RE 速览:3 条命令搞定 DASH/HLS/MSS 流媒体下载
2026/9/19 21:13:34 网站建设 项目流程

N_m3u8DL-RE 速览:3 条命令搞定 DASH/HLS/MSS 流媒体下载

【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE

把浏览器里的 .mpd 链接丢进终端,拿回能播放的 mp4,就是 N_m3u8DL-RE 干的活。这是一个跨平台的流媒体下载工具,通吃 DASH、HLS、MSS 三大协议(.mpd / .m3u8 / .ism),点播和直播都支持。

工具速写:它到底能做什么

一句话定位:输入链接、输出成片文件的 .NET 流媒体下载器,解析、下载、解密、合并一条龙。src/ 下的四个工程分别负责协议解析、下载管理和命令行入口。

  • 🎬 支持 DASH/HLS/MSS 点播与直播两种形态,自动解析清单并选轨
  • 🔓 用--key KID:KEY传入解密密钥,可选 MP4DECRYPT、FFMPEG、SHAKA_PACKAGER 三种解密引擎
  • 🎯 视频/音频/字幕轨道用正则表达式筛选,-sv-sa-ss配合for=best自动挑最佳轨
  • 📡 直播录制支持时长限制、实时合并、按点播方式整段下载
  • 📐--custom-range按分片序号或时间区间只截取要的那部分
  • 🌐 跨平台运行,--ui-language可在 en-US / zh-CN / zh-TW 间切换

三分钟上手:编译项目并跑通第一条 DASH 下载命令

编译需要 .NET 10 运行时。Arch Linux 用户可以跳过编译,直接用yay -Syu n-m3u8dl-re-bin安装。

git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE dotnet build src/N_m3u8DL-RE.sln -c Release # 编译产物在 bin 目录,下面示例统一简写为 N_m3u8DL-RE src/N_m3u8DL-RE/bin/Release/net10.0/N_m3u8DL-RE "https://example.com/Manifest.mpd" -sv best -sa best -M format=mp4

这一条命令里,-sv best选最佳视频轨,-sa best选最佳音频轨,-M format=mp4表示收尾时把分离的音视频混流进 mp4。跑完工具会解析清单、下载分片、混流出成片;临时文件默认自动删除(--del-after-done默认 True),解析结果还会输出一份 json(--write-meta-json默认 True)。想直接试完整能力,TestStreams.md 里列好的测试流地址可以直接拿来用。

核心能力:四个高频痛点对应四条命令

加密 DASH 流:传 --key 解开

场景:拿到的是 CENC 加密的 .mpd,下完分片是一堆放不了的二进制。

N_m3u8DL-RE "https://example.com/secure.mpd" --key "KID:KEY" -sv best -M format=mp4

结果:解密后得到可直接播放的文件。默认解密引擎是 MP4DECRYPT,--decryption-engine可切换到 FFMPEG 或 SHAKA_PACKAGER;有多个 KID 就逐个传--key KID1:KEY1 --key KID2:KEY2,密钥不在清单里时可用--key-text-file提供密钥文件按 KID 查找。解密逻辑集中在 src/Crypto/,排查问题时可以先看那里。

直播录制:用 --live-record-limit 掐时长

场景:会议、比赛直播,只想录两个小时的窗口期,还要求成片连贯。

N_m3u8DL-RE "https://live.example.com/live.m3u8" -mt --live-record-limit 02:00:00 --live-real-time-merge -M format=mp4

结果:录满 2 小时自动停止,分片边录边合并,不用事后手动处理。如果是完整直播想整段拿走,改用--live-perform-as-vod按点播方式下载。

字幕与音轨提取:--sub-only 只拿 SRT

场景:一门课只需要字幕做笔记,视频本体不必下载。

最短写法是-ss all --sub-only --sub-format srt,结果是每条字幕轨道各产出一个 .srt 文件,且默认走自动修正(--auto-subtitle-fix默认 True)。只想要英语音轨时,-sa lang=en:for=best一行就够,想同时保留多轨字幕可用-ss name="中文":for=all这种正则圈定。

按时间截取:--custom-range 精确到分钟

场景:十小时的课程,只需要第 5 到 20 分钟那一段。

--custom-range 05:00-20:00直接给时间区间,结果只下载落在区间内的分片,省时间也省流量。同样参数还支持分片序号:0-10下载前 11 个分片,10-从第 10 个开始下到底。

进阶玩法:什么时候该用它

链接有几十条时:套一层循环

手里有一份链接清单时,把单条命令放进循环,用--save-name--save-dir固定命名与输出位置,跑完就是一个整整齐齐的本地库。

# 逐行下载 urls.txt 里的链接 while read -r url; do N_m3u8DL-RE "$url" -sv best -sa best -M format=mp4 done < urls.txt

网络不稳或站点特殊时:把重试和请求头调起来

分片频繁失败时,调大--download-retry-count(默认 3),按需调整--http-request-timeout(默认 100 秒),带宽有限就配合-R限速。站点要求登录态或特定 UA 时,用-H "Cookie: ..."直接附加请求头;个别网站(比如 kakao.com)要求把原始链接的参数带到每个分片上,--append-url-params就是为这种场景准备的。需要走代理访问时,--custom-proxy http://127.0.0.1:8888指定代理地址,或者保持默认走系统代理(--use-system-proxy默认 True)。

文件乱了或出问题时:留痕与定位

多轨同名容易撞车,--save-pattern "<SaveName>_<Resolution>_<Codecs>"生成带分辨率和编码信息的文件名。排查问题用--log-level DEBUG--log-file-path把日志写进文件;只想要解析结果不下载时用--skip-download,分片已下好只想换合并方式时用--skip-merge。想给某个私有站点写专门的链接处理逻辑,src/Processor/ 里的示例实现可以直接抄结构。

避坑速查:现象 → 处理

现象处理
分片下全了,文件放不了加密流:用--key KID:KEY传密钥,仍不行就换--decryption-engine试其他引擎
直播录制中途断掉、丢分片别开--live-pipe-mux(README 明确提示管道模式在不稳网络下易丢数据),保持--live-keep-segments存分片以便重试
选到了广告分片或低清轨-sv/-sa的正则收窄选择条件,--ad-keyword按 URL 关键字过滤广告分片
Windows 终端显示异常或乱码换 cmder 这类现代终端运行,或用--force-ansi-console/--no-ansi-color调整输出
合并时报找不到 ffmpeg--ffmpeg-binary-path指定可执行文件全路径
密钥不在清单里、在外部--key-text-file指定密钥文件,程序按 KID 查找

结尾

解析、下载、解密、混流,过去要串起好几个工具的事,现在一条命令行收掉,完整参数清单在 README.md 里都有。现在就去 TestStreams.md 挑一个流地址,跑通你的第一条下载命令。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询