N_m3u8DL-RE 流媒体下载完整指南:m3u8 与 DASH 加密内容怎么下
2026/8/24 13:22:03 网站建设 项目流程

N_m3u8DL-RE 流媒体下载完整指南:m3u8 与 DASH 加密内容怎么下

【免费下载链接】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(.mpd)、HLS(.m3u8)、MSS(.ism)三种协议的点播和直播内容完整落到本地,加密流也能处理。本文按你实际要办的事来讲,不堆功能清单。

它是什么

N_m3u8DL-RE 是一个跨平台(Windows / Linux / macOS)的开源命令行下载器,MIT 协议,界面支持简体中文、繁體中文和英文。和普通"看到直链就保存"的下载工具不同,它先解析播放列表或 manifest,再按你的条件挑选视频、音频、字幕轨道,然后拉取分片、解密、合并、混流,全程在终端里完成。对需要归档课程、录制赛事直播、保存加密流的场景,这套流水线正好够用。

3 分钟完成首次下载

假设机器上已有 .NET SDK,最短路径是克隆仓库并构建:

git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE dotnet build src/N_m3u8DL-RE.sln -c Release dotnet publish src/N_m3u8DL-RE/N_m3u8DL-RE.csproj -c Release -o ./bin

然后一条最简命令跑通第一个任务:

./bin/N_m3u8DL-RE "https://example.com/video.m3u8" --save-dir "./downloads"

拿到 .m3u8 或 .mpd 地址,工具就会自己识别协议、拉取分片并合并输出,不用指定画质。如果这一步顺利,后面的内容都是在这个基础上加参数。

按需求使用:离线、直播、加密

离线视频下载(DASH / HLS 点播)

想精确控制取哪条轨道时,用--select-video--select-audio这类正则筛选参数:

N_m3u8DL-RE "https://example.com/video.mpd" \ --select-video best \ --select-audio "lang=zh:for=best" \ --select-subtitle "name=中文:for=all" \ --mux-after-done format=mp4 \ --save-dir "./courses"

--select-video best表示在所有视频流里选码率最高的一条,也可以写成res="1920x"这类正则挑特定分辨率;--select-audio同理,lang=zh匹配中文音轨。--mux-after-done format=mp4(或 mkv)会在下载完成后把分离的音视频混成单个文件,混流器默认用 ffmpeg。多轨道同时下载时,加--save-pattern "<SaveName>_<Resolution>"可以让文件名带上分辨率等变量,避免互相覆盖。

直播流录制

把直播地址作为输入,工具识别出是直播后就会持续拉取分片,直到你手动停止:

N_m3u8DL-RE "https://example.com/live/index.m3u8" \ --select-video best --select-audio best \ --live-real-time-merge \ --live-record-limit 02:00:00 \ --save-dir "./live"

--live-real-time-merge开启边下边合并,录完直接得到完整文件;--live-record-limit 02:00:00限定录制两小时后自动收尾;分片默认会保留(--live-keep-segments默认开启),需要留分片重剪时正合适,想省空间就设成 false。另外--live-wait-time可以手动设定直播列表的刷新间隔,--live-take-count控制开头一次性回拉多少分片(默认 16)。

加密 m3u8 / mpd 怎么下

拿到密钥后,用--key以 KID:KEY 的形式传入,多个密钥对可以重复写:

N_m3u8DL-RE "https://example.com/enc.mpd" \ --key "KID1:KEY1" --key "KID2:KEY2" \ --decryption-engine FFMPEG \ --save-dir "./dec"

工具默认用 mp4decrypt 做解密(--decryption-engine可切到 FFMPEG 或 SHAKA_PACKAGER)。第三方工具不在 PATH 里时,用--decryption-binary-path指定可执行文件的完整路径。HLS 场景下密钥写在播放列表里的情况一般能自动处理;遇到特殊加密方式,还可以用--custom-hls-method--custom-hls-key--custom-hls-iv手动指定算法与密钥。

高频参数速查

参数用途示例
--thread-count分片下载线程数,默认取本机 CPU 线程数--thread-count 16
--auto-select不写筛选条件时自动选各类最佳轨道--auto-select
-sv/--select-video正则选视频流--select-video "res=1920x"
-sa/--select-audio正则选音频流--select-audio "lang=en"
-ss/--select-subtitle正则选字幕流--select-subtitle all
-M/--mux-after-done完成后混流并指定容器--mux-after-done format=mkv
--key传入 KID:KEY 解密密钥--key KID:KEY
--decryption-engine解密引擎,默认 MP4DECRYPT--decryption-engine FFMPEG
-H/--header附加请求头,如 Cookie-H "Cookie: xxx"

踩坑自查

  • 下载速度上不去:可能原因——线程数不合适或服务端限制了并发。处理:先用--thread-count调到 8 左右试试;如果分片频繁失败,把--download-retry-count调大、--http-request-timeout(默认 100 秒)适当放大。
  • 目标站点需要代理或请求头:可能原因——直连被拦截,或接口校验 Cookie。处理:--custom-proxy http://127.0.0.1:8888走指定代理(默认跟随系统代理),必要时配合-H "Cookie: ..."带上请求头。
  • 直播录制中途断掉或文件不完整:可能原因——列表刷新太频繁导致请求过快。处理:用--live-wait-time放慢刷新间隔;开启--check-segments-count(默认开启)会在结束前校验实际与预期分片数量是否一致,不匹配会直接提示。
  • 字幕时间轴或格式不对:可能原因——VTT 起始时间偏差。处理:--auto-subtitle-fix默认开启,可配合--sub-format SRT|VTT指定输出格式;只想拿字幕就加--sub-only

下一步可以做什么

  • 先用--custom-range 0-10只试下前 10 个分片,确认链路通不通,再跑完整任务;
  • 任务结束后翻一下输出目录里的 meta json(--write-meta-json默认开启),里面的轨道信息可以直接喂给--select-*参数做二次筛选;
  • 想看播放列表是怎么变成下载任务的,读两个目录:src/N_m3u8DL-RE.Parser/(HLS、DASH、MSS 的解析实现)和 src/N_m3u8DL-RE/CommandLine/(全部命令行参数的定义与默认值)。

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

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

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

立即咨询