☰
N_m3u8DL-RE 实战教程:m3u8 解密、直播录制与选流一步搞定
2026/10/23 4:07:55 网站建设 项目流程

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-engineMP4DECRYPT / 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),仅供参考

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

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

立即咨询