N_m3u8DL-RE 实战教程:m3u8 解密、直播录制与选流一步搞定
【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE
拿到一条课程 m3u8 链接,浏览器里却只有黑屏。内容被切成大量分片,其中一部分还带着加密。N_m3u8DL-RE 是一款跨平台的流媒体下载工具,一条命令完成 m3u8、MPD、ISM 的解析、解密与合并。
功能速览
| 能力 | 解决什么问题 | 关键参数或模块 |
|---|---|---|
| 加密内容解密 | 内置 AES-128 与 ChaCha20 实现,覆盖 m3u8 解密;MP4 CENC 可调用三种外部引擎 | --key、--decryption-engine、加密模块 |
| 直播录制 | 持续拉取新分片,边录边合并,到点自动收尾 | --live-record-limit、--live-real-time-merge |
| 选流与混流 | 视频、音频、字幕轨按正则筛选,自动合成 mp4/mkv | -sv/-sa/-ss、-M format=mp4、下载引擎 |
| 三协议解析 | 自动识别 m3u8/MPD/ISM,读出色度、码率、语言 | 解析器模块 |
| 部分下载 | 只取指定时间段或分片,只取字幕轨 | --custom-range、--sub-only |
| 网络控制 | 补 Cookie 与 UA、走代理、调重试与超时 | -H、--custom-proxy、--download-retry-count |
| 并发加速 | 分片并行拉取、按序落盘 | --thread-count |
安装
- Windows / macOS / Linux:从项目发布页下载对应系统的二进制包,解压即用。
- Arch Linux 及衍生版:
yay -Syu n-m3u8dl-re-bin,社区维护的 AUR 包。 - 源码构建(需要 .NET SDK):先
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE,再执行cd N_m3u8DL-RE/src && dotnet build N_m3u8DL-RE.sln。
💡 两点提醒:版本较低的 Windows 终端可能无法显示输出,换 cmder 运行即可;PowerShell 用户可执行N_m3u8DL-RE --generate-completion powershell | Out-String | Invoke-Expression启用 Tab 补全。
典型场景:一条最小命令完成 m3u8 下载
目标:拿到链接后不做任何选轨,直接得到一个能播的 mp4。
用这条命令,程序会自动挑码率最高的视频与音频,并调用 ffmpeg 混流为 mp4:
N_m3u8DL-RE "https://example.com/course/lesson1.m3u8" \ -sv best -sa best -M format=mp4 --save-dir ./videos完成后:
./videos下生成可播放的 mp4,中间分片默认自动清理- 不传
-sv/-sa时,终端会列出全部轨道供交互选择 - 想要 mkv 容器,把
-M format=mp4改成-M format=mkv
典型场景:加密流的 m3u8 解密命令
目标:已从请求中抓到 KID 和 KEY,把密钥交给工具,让它自己完成解密链路。
这条命令把密钥对直接挂进下载任务:
N_m3u8DL-RE "https://example.com/protected.mpd" \ --key "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6:0f1e2d3c4b5a69788796a5b4c3d2e1f0" \ --save-name "protected_video"你会得到:输出文件已解密,直接可播。三个注意点:
- KID 与 KEY 支持 hex 或 Base64,多组密钥可重复传
--key - 解密引擎默认 MP4DECRYPT,跑不起来时可用
--decryption-engine FFMPEG或SHAKA_PACKAGER切换 - 站点要求鉴权时,补
-H "Cookie: ..."或用--cookies cookies.txt读 Netscape 格式 cookie 文件
典型场景:直播录制参数录满 90 分钟
目标:直播持续三小时,只录前 90 分钟,并且边录边保存,不等最后合并。
N_m3u8DL-RE "https://example.com/live/manifest" \ --live-record-limit 01:30:00 --live-real-time-merge录满时长后程序自动收尾,输出完整可播放的文件。相邻的直播参数:
| 参数 | 作用 |
|---|---|
--live-record-limit | 录制时长,格式 HH:mm:ss |
--live-real-time-merge | 录制过程中实时合并分片 |
--live-pipe-mux | 走管道直写 TS,免落盘再合并;开启后会自动启用上一项 |
--live-idle-timeout SEC | 超过指定秒数没有新分片就停止 |
典型场景:只取字幕与部分片段
目标:多轨流里只要字幕,或者只下某一段内容,省流量也省时间。
下面两条命令各解决一个需求:
N_m3u8DL-RE "https://example.com/vod.m3u8" --sub-only --sub-format VTT N_m3u8DL-RE "https://example.com/vod.m3u8" --custom-range 05:00-20:00你会得到:
- 第一条只输出字幕轨,
--sub-format在 SRT(默认)与 VTT 之间选择 - 第二条只下载第 5 分钟到第 20 分钟的内容;
--custom-range同时支持时间(05:00-20:00)与分片序号(0-100)两种写法,任一端留空表示一直到开头或结尾
常用参数速查
以下只收高频参数,完整清单见 README。
| 参数 | 作用 | 什么时候用 |
|---|---|---|
-sv/-sa/-ss | 按正则选视频 / 音频 / 字幕轨 | 轨道多,想按分辨率、语言、编码挑 |
-M format=mp4 | 下载完成后混流为指定容器 | 音视频分轨,要合成一个文件 |
--thread-count | 下载线程数,默认等于 CPU 核心数 | 想加快或压低并发 |
--decryption-engine | MP4DECRYPT / SHAKA_PACKAGER / FFMPEG,默认 MP4DECRYPT | 加密内容解密报错时 |
--download-retry-count | 单分片重试次数,默认 7 | 网络不稳 |
-H/--header | 附加自定义请求头 | 站点要求 Cookie、UA |
--custom-proxy | 指定请求代理 | 直连不稳定、需要走代理 |
--log-level | 日志级别,默认 INFO | 排错时开 DEBUG |
问题速查
提示找不到 ffmpeg,无法合并?程序默认在 PATH 中查找 ffmpeg。装在自定义位置时,用--ffmpeg-binary-path /opt/bin/ffmpeg直接指定即可。
给了密钥却解密失败?先核对 KID 与 KEY 的格式(hex 或 Base64)和是否有多余空格,多组密钥用多次--key传入。仍失败就切换--decryption-engine,不同引擎对部分 CENC 方案的兼容性不同。
请求总被站点拦截?通常是缺鉴权信息,用-H "Cookie: ..."补齐,或--cookies cookies.txt读取 cookie 文件;需要代理时加--custom-proxy http://127.0.0.1:8080,并把--log-level调到 DEBUG 查看完整请求日志。
长视频只想下其中一段?用--custom-range 05:00-20:00指定时间范围,也支持0-100这样的分片序号写法。
它适合把 HLS、DASH、Smooth Streaming 内容落到本地的场景,尤其是流带加密或需要直播录制的时候。如果只想要一个直链文件,普通下载器就够了;想让并发、解密、混流都省掉,用它一条命令覆盖。
【免费下载链接】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),仅供参考