N_m3u8DL-RE 快速上手指南:如何用 3 条命令下载 m3u8 与 MPD 流并录制直播
【免费下载链接】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 三大流格式,支持加密流解密与直播录制。你只需在命令行输入链接,它会自动完成解析、选流、下载和合并,直接得到可播放的视频文件。本指南用 4 个实战场景带你从安装到直播录制。
[!TIP] 流媒体下载原理:一个 m3u8/MPD 文件本身不是视频,而是"分片清单",记录了每一小段媒体(片段)的地址。N_m3u8DL-RE 先读取清单,再把分片逐一下载并按顺序拼接成完整文件,加密内容则用密钥还原明文。
初见:3 条命令安装并跑通 N_m3u8DL-RE
最快安装方式:到项目的 Release 页面下载与系统对应的压缩包,解压即可运行,无需额外依赖。Arch Linux 用户可以直接用 AUR:
# Arch Linux 安装(官方 README 推荐) yay -Syu n-m3u8dl-re-bin💡 依赖说明:程序运行前会检查系统里是否有ffmpeg(一个通用的音视频处理工具),找不到会直接报错退出,所以先装好 ffmpeg。
第一条能跑通的命令:用仓库自带的公开测试流,不用注册也不用版权风险:
# 1. 确认安装成功,应输出版本号 N_m3u8DL-RE --version # 2. 下载官方测试流(多音轨多字幕的 DASH 示例) N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd"预期结果:终端会列出解析到的视频、音频、字幕轨道,并弹出交互式选择框(方向键 + 回车选流)。下载完成后显示绿色的Done,当前目录(临时目录默认也在当前目录)里生成合并后的视频文件。完整的测试流清单见 TestStreams.md,涵盖 HLS、DASH、ISM 和加密样例。
核心场景实战:下载、选画质、录直播、解密
场景一:一条命令下载一个点播视频
场景目标:拿到一个 m3u8 或 MPD 链接,直接得到一个可播放的完整文件。
关键命令:
# 不指定轨道参数时进入交互式选择,手动勾选想要的流 N_m3u8DL-RE "http://playertest.longtailvideo.com/adaptive/oceans_aes/oceans_aes.m3u8" \ --save-dir ~/Videos \ # 输出目录 --save-name "oceans" \ # 保存文件名 -M format=mp4 # 完成后把分离的音视频混流为 MP4结果验证:输出目录出现oceans.mp4,用播放器打开画面声音同步;同目录的临时文件夹会按--del-after-done默认策略自动清理。
常见坑:音视频分离下载时不写-M,会得到 .mp4 视频和 .m4a 音频两个文件,播放器可能只播到其中一路。
场景二:挑选指定画质、音轨和字幕
场景目标:一条流里有很多分辨率和多语言音轨,只下你要的那条,不浪费流量。
关键命令:
# 选最佳 4K HEVC 视频 + 最佳英语音轨 + 所有中文字幕 N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" \ -sv res="3840*":codecs=hvc1:for=best \ # 视频流:正则筛选分辨率和编码 -sa lang=en:for=best \ # 音频流:最佳英语 -ss name="中文":for=all \ # 字幕流:名称含"中文"的全部 --sub-format SRT # 字幕输出为 SRT筛选语法支持正则,for=best2表示取最佳的前 2 条。完整规则可用--morehelp select-video在终端里查。
结果验证:开始下载前,终端会打印"已选择"的流清单,先确认选中的分辨率/语言符合预期再让它跑完。
常见坑:筛选条件太严(比如流里没有 HEVC)会导致"没有可下载的流"报错,先放宽条件跑一次--skip-download(只解析不下载,秒出结果)看看实际有哪些流。
场景三:定时录制 m3u8 直播流
场景目标:从直播开始录到结束,中途断流能自动恢复,磁盘不会被撑爆。
关键命令:
# 录制 DASH 直播:实时合并 + 3 小时时长上限 N_m3u8DL-RE "https://cmafref.akamaized.net/cmaf/live-ull/2006350/akambr/out.mpd" \ --live-real-time-merge \ # 边下边合并成完整文件 --live-record-limit "3:00:00" \ # 最多录 3 小时 --live-wait-time 60 \ # 列表刷新/断流等待间隔 60 秒 --save-name "live_session"三种录制方式的取舍:
| 方式 | 命令 | 特点 | 适合场景 |
|---|---|---|---|
| 默认 | 不加直播参数 | 分片落盘、录完再合并 | 最稳,断网可续 |
| 实时合并 | --live-real-time-merge | 边下边拼文件,随时可看 | 长时间直播 |
| 管道混流 | --live-pipe-mux | 通过管道+ffmpeg 实时混成 TS | 追求极致实时 |
结果验证:录制中终端持续输出分片进度;达到--live-record-limit或你按 Ctrl+C 时,已录部分会完成合并。⚠️ 官方提醒:网络不稳时不要开--live-pipe-mux,管道数据容易丢失。
常见坑:直播流下完不合并、目录里剩一堆分片——检查是否中断在合并之前;想保留分片备份就加--live-keep-segments。
场景四:解密加密流
场景目标:流本身打了 DRM(数字版权保护,一种对分片加密、需密钥才能还原的机制),拿到密钥后还原明文视频。
关键命令:
# 所有轨道共用一个密钥时 N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd" \ --key "9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4d" \ --decryption-engine MP4DECRYPT # 用 mp4decrypt 工具解密(默认引擎) # 多密钥场景:把 "KID:KEY" 逐行写入 keys.txt 再引用 N_m3u8DL-RE "加密.mpd" --key-text-file keys.txt--key的格式是KID:KEY(密钥 ID 对密钥);多条--key可重复传。--decryption-engine三选一:MP4DECRYPT(默认,需装 mp4decrypt)、FFMPEG、SHAKA_PACKAGER。
结果验证:播放解密后的文件画面正常、无花屏;若报错"未找到 mp4decrypt",说明解密工具没装,改用--decryption-engine FFMPEG即可用已有的 ffmpeg 顶替。
常见坑:KID 和 KEY 写反或密钥位数不对会导致解密出乱码,核对密钥格式(HEX)是否与流中声明的一致。
[!WARNING] 本工具仅供学习与技术研究使用。请只下载你拥有合法权限的内容,遵守所在地区的法律法规与平台条款,侵权使用需自行承担全部法律责任。
进阶调优:5 个高频参数值得记住
--thread-count <数字>
- 干什么:并行下载分片的线程数,默认等于 CPU 线程数
- 什么时候调:下载速度远低于带宽上限,或网络拥挤想降噪
- 试试:核数的 2 倍拉满;弱网降到 2~4
--custom-range <范围>
- 干什么:只下载部分分片,支持分片序号或时间点两种写法
- 什么时候调:只需要内容某一段,或想快速试错省流量
- 试试:
05:00-20:00取第 5 到 20 分钟;-99取前 100 个分片
-R, --max-speed <限速>
- 干什么:限制下载速度,单位支持 Mbps/Kbps
- 什么时候调:不想占满带宽,或服务器对高并发限速
- 试试:
15M或100K
--download-retry-count <数字>
- 干什么:单个分片下载失败时的重试次数,默认 3
- 什么时候调:直播录制或弱网环境下频繁丢分片
- 试试:
10~20,配合场景三的--live-wait-time一起用
--log-file-path <路径>
- 干什么:把完整日志写入文件,事后排查全流程
- 什么时候调:任务失败但终端信息看不清原因
- 试试:
logs/run.log,把文件发给 Issue 时很有帮助
故障急救:5 个常见报错与修复
| 报错现象 | 原因 | 修复方法 |
|---|---|---|
| 启动即提示找不到 ffmpeg | 程序强依赖 ffmpeg 做合并/混流,系统未安装 | 安装 ffmpeg 并加入 PATH,或用--ffmpeg-binary-path指定全路径 |
| 老版本 Windows 终端运行异常/乱码 | 旧系统自带终端不支持该程序(官方已知问题) | 换用 cmder 之类的第三方终端运行 |
| 分片 403 / 下载被拒 | 站点要求特定请求头(Cookie、UA 等) | 用-H "Cookie: xxx"补请求头,可多次;个别站点加--append-url-params把 URL 参数带到分片上 |
| 解密时报"未找到 mp4decrypt" | 默认解密引擎的第三方工具没装 | 装 mp4decrypt,或改用--decryption-engine FFMPEG |
| 直播录制中途停滞不动 | 断流后按默认 3 次重试即放弃 | 调大--download-retry-count与--live-wait-time,并确认磁盘空间 |
排查顺序建议:先确认版本是否最新(官方建议在 Release 里取最新构建),再看日志文件,最后才提问。
收尾
N_m3u8DL-RE 把"解析→选流→下载→合并→解密"整条链路压缩成一条命令行,配合上面 4 个场景和 5 个调优参数,足以覆盖日常点播下载和直播录制。更多参数细节可以直接在终端执行--morehelp <选项名>查看,或阅读 README.md 中的完整参数表。
- 官方文档:README.md(含全部命令行参数与 More Help)
- 测试流清单:TestStreams.md
- 核心源码目录:src/N_m3u8DL-RE/(Program.cs 是主流程)
- 遇到问题:先到项目 Issues 页搜索是否有人遇到同样问题,附日志文件提问效率最高
- 源码如需本地研究:
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE,许可证见 LICENSE(MIT)
【免费下载链接】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),仅供参考