ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

N_m3u8DL-RE 完整指南:流媒体下载、解密与直播录制的实操手册

N_m3u8DL-RE 完整指南:流媒体下载、解密与直播录制的实操手册

N_m3u8DL-RE 完整指南:流媒体下载、解密与直播录制的实操手册

【免费下载链接】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 是一款跨平台的 DASH/HLS/MSS 流媒体下载工具:它负责解析 MPD、M3U8、ISM 清单,把点播视频和直播流保存为本地文件,并内置 CENC、AES-128、ChaCha20 等加密内容的解密能力。界面提供简中、繁中、英文三种语言,Windows 与 Linux 均可运行。下面按"装好、下载、解密、录直播"的顺序,带你把最常用的几条路径走通。

🚀 怎么把程序装好并跑通第一条命令?

获取可执行文件有两条路:到项目 Releases 页面下载预编译包,解压即用;或者克隆源码自己构建。下面这条命令完成克隆与构建:

git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE dotnet build src/N_m3u8DL-RE.sln

构建成功后,可执行文件就在输出目录里。仓库自带一份公共测试流清单(见 TestStreams.md),从中挑一条 HLS 流来验证安装是否成功:

N_m3u8DL-RE "http://playertest.longtailvideo.com/adaptive/oceans_aes/oceans_aes.m3u8" --save-name oceans

参数很直白:第一个参数是播放列表链接,--save-name oceans指定输出文件名。程序会先列出清单里可用的轨道,再下载视频、音频分片并自动合并,最终得到 oceans.mp4 和一份元信息 json。

注意:旧版 Windows 的自带终端可能无法完整显示程序输出,建议换用第三方终端运行。

Arch Linux 系用户可以从 AUR 直接安装n-m3u8dl-re-bin(发行版)或n-m3u8dl-re-git(开发版),省去手工构建步骤。

📥 流媒体点播下载:一条命令拿成本地文件

手头已有 MPD 或 M3U8 链接时,最省事的写法是让程序自己挑轨道:

N_m3u8DL-RE "<链接>" --save-name 我的视频 --auto-select

--auto-select会自动挑选最佳视频、音频、字幕轨道,--save-name给出输出文件名,其余不用管。

想手动控制轨道时,用-sv、-sa、-ss按正则挑选视频、音频、字幕。下面这条命令取 1920 级别中码率最高的一条视频:

N_m3u8DL-RE "<链接>" -sv 'res="1920*":for=best'

其中res="1920*"匹配所有以 1920 开头的分辨率,for=best表示只保留最优的一条;音频、字幕的写法与它一致。同时保存多条轨道时,给--save-pattern加上<Resolution>、<Language>等变量,每条轨道会生成互不冲突的文件名。

这一场景常用的输出与性能参数:

  • --save-dir— 指定输出目录,如--save-dir "D:\Videos"
  • --tmp-dir— 临时分片目录,如--tmp-dir "C:\Temp"
  • --thread-count— 下载线程数,默认 10,如--thread-count 8
  • -R— 限速,单位 Kbps 或 Mbps,如-R 15M
  • -H— 为请求附加请求头,如-H "User-Agent: iOS"
  • -M— 全部完成后混流分离的音视频,如-M format=mp4
  • --log-level— 日志级别,可选 DEBUG/INFO/WARN/ERROR/OFF

🔑 加密流解密:密钥参数怎么填

已经拿到密钥的加密流,把密钥随命令一起传入即可:

N_m3u8DL-RE "<加密链接>" --key KID:KEY --save-name 解密后的视频

--key有两种写法:KID:KEY成对给出密钥 ID 与密钥;如果所有轨道共用同一个密钥,直接传KEY就行。多个 KID 就重复传多次--key;密钥条数很多时,可以改用--key-text-file指向一份 KID-KEY 映射文件,程序按 KID 查找对应密钥。

解密默认由 mp4decrypt 执行(引擎名 MP4DECRYPT),--decryption-engine可切换为 FFMPEG 或 SHAKA_PACKAGER。遇到清单没写清加密方式的自定义 HLS AES-128,还能用--custom-hls-key和--custom-hls-iv分别指定密钥与 IV,两者都接受 HEX、Base64 或文件路径三种形式。

这一场景常用的参数:

  • --key— 解密密钥,KID:KEY成对或纯KEY
  • --key-text-file— KID-KEY 映射文件
  • --decryption-engine— 解密引擎:MP4DECRYPT(默认)/ FFMPEG / SHAKA_PACKAGER
  • --custom-hls-key/--custom-hls-iv— 自定义 HLS 的密钥与 IV,支持 HEX、Base64、文件

🎥 直播录制:录多久自动停、怎么边录边合

对持续开播的直播流,想录到固定时长就停,用--live-record-limit指定 HH:mm:ss 格式的时长:

N_m3u8DL-RE "<直播链接>" --live-record-limit 01:00:00

--live-record-limit 01:00:00表示录制 1 小时后自动停止。

两个可选的实时能力:加--live-real-time-merge可以在录制过程中边录边合并,省掉事后的二次合并;--live-pipe-mux更进一步,把分片通过管道交给 ffmpeg 实时混出 TS 文件。

警告:--live-pipe-mux依赖管道传输,网络不稳时容易丢失直播数据,不确定的网络环境请关掉它,改用普通实时合并。

其余常用直播参数:

  • --live-take-count— 首次获取的分片数量,默认 16
  • --live-wait-time— 手动设置直播列表刷新间隔(秒)
  • --live-idle-timeout— 列表连续指定秒数无新分片时停止录制,默认关闭

🧭 想看源码?一条命令经过哪些模块?

读源码时跟着一条命令的数据流走最顺。你敲下一条下载命令后,程序依次经过五个阶段:

  1. 入口与参数解析:从 Program.cs 启动,加载配置文件与命令行参数,CommandInvoker判断是打印帮助还是开始任务,解析实现在 CommandLine/。
  2. 清单解析:StreamExtractor按内容类型在 Parser 工程里挑选解析器——M3U8 走 HLSExtractor,MPD 走 DASHExtractor2,ISM 走 MSSExtractor——输出轨道列表、分片列表与解密信息,入口在 Parser 工程,各解析器位于 Extractor/。
  3. 下载编排:点播任务交给 SimpleDownloadManager 分片并发下载,直播录制交给 HTTPLiveRecordManager 轮询清单并追加新分片,统一在 DownloadManager/ 里调度。
  4. 解密:CENC、AES-128、ChaCha20 等由进程内实现与 mp4decrypt 等第三方工具协作完成,代码在 Crypto/。
  5. 合并与混流:分片拼成完整文件后,调用 ffmpeg 或 mkvmerge 输出 mp4/mkv,核心逻辑在 MergeUtil.cs。

🛠️ 常见问题:显示乱、速度慢、解密失败

Windows 终端下进度条和颜色显示错乱,怎么办?旧版 Windows 自带终端不支持程序使用的输出方式,换 cmder 等第三方终端,或加--no-ansi-color去掉颜色。

下载速度偏低,先查什么?先提高--thread-count看并发是否用满;再用-R限速观察真实带宽;如果经常超时,调大--http-request-timeout。

报 403 或分片拉取失败?多半是平台在校验请求头,用-H传入需要的头;如果分片 URL 必须带上原链接的查询参数,启用--append-url-params。

解密失败怎么排查?先核对 KID 与密钥是否一一对应;仍不行就换一家引擎试试--decryption-engine FFMPEG。

直播录制丢数据?如果开着--live-pipe-mux,先怀疑它——管道模式在网络不稳时容易丢数据,关掉改用实时合并即可。

⚖️ 合规提醒与小结

注意:请只下载自己有权访问的内容,并遵守所在地区的法律法规;项目以 LICENSE 中声明的 MIT License 开源提供。

点播下载、解密、直播录制是 N_m3u8DL-RE 使用频率最高的三条路径,本文覆盖了它们各自的核心参数。完整参数以运行--help的输出和 README.md 为准;版本更新到项目 Releases 页面获取,遇到问题和改进建议到项目 Issue 区反馈。

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进