N_m3u8DL-RE 流媒体下载完整指南:5 种玩法从入门到进阶
2026/9/19 10:49:31 网站建设 项目流程

N_m3u8DL-RE 流媒体下载完整指南:5 种玩法从入门到进阶

【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE

浏览器里能看的视频,地址栏复制下来却只是一个.m3u8.mpd文件——这正是流媒体下载工具的用武之地。N_m3u8DL-RE 是一款跨平台的流媒体下载工具,支持 DASH(动态自适应流)、HLS、MSS(微软平滑流)三大格式的点播与直播内容:解析清单、并发下载分片、解密、合并混流,一条命令全搞定。接下来从 30 秒速览到批量自动化,带你把它用明白。

N_m3u8DL-RE 能做什么:从点播到直播的 5 种玩法

一条命令解析三种流媒体协议

拿到.m3u8.mpd.ism任意一种链接即可,程序自动识别协议并解析出所有音视频轨道。

N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" --auto-select

正则表达式精确挑轨道

多码率、多语言的视频里只挑你要的:-sv选视频、-sa选音频、-ss选字幕,支持正则匹配和best/all等选择策略。

N_m3u8DL-RE "链接" -sv "res=1920*1080:for=best" -sa "lang=zh:for=best"

加密视频解密到可播放文件

AES-128、ChaCha20 等加密流提供密钥即可解密,引擎可切换,还能边下载边解密。

N_m3u8DL-RE "链接" --key "KID:KEY" -M format=mp4

直播整场录制

清单实时更新、断线自动重连、分片实时合并,还能限制录制时长。

N_m3u8DL-RE "直播链接" --live-real-time-merge --live-record-limit 01:00:00

下载体验可调

并发线程、限速、代理、请求头、失败重试都可以按需设置,弱网环境也不容易翻车。

N_m3u8DL-RE "链接" -mt -R 50M --download-retry-count 10

N_m3u8DL-RE 安装与第一条下载命令

从 Releases 页面下载对应平台的压缩包,解压即用(Arch Linux 用户也可以直接从 AUR 安装)。下面用仓库自带的测试流(TestStreams.md 里列了一批)验证安装:

N_m3u8DL-RE "http://media.axprod.net/TestVectors/v6-Clear/Manifest_1080p.mpd" --auto-select

跑完当前目录会多出合并好的视频和字幕文件,--auto-select表示自动挑选每种类型的最佳轨道。想换语言界面可以加--ui-language zh-CN

用正则表达式挑出 1080P 视频和指定语言音轨

一条 DASH 链接里往往躺着几十个轨道:4K、1080p、720p 码率各不相同,音轨字幕各有数种语言。手动翻清单不现实,N_m3u8DL-RE 把选轨变成"填正则"的活儿。

# 挑最佳视频:1080p 或 4K HEVC,音轨要英语最佳,字幕全都要 N_m3u8DL-RE "链接.mpd" \ -sv "res=1920*1080:for=best" \ -sv "res=3840*:codecs=hvc1:for=best" \ -sa "lang=en:for=best" \ -ss all

for=best表示匹配项里挑质量最好的一个,best2是挑前两条,all是全部保留;不满意的轨道还能用-dv/-da/-ds反向排除。实现上并不神秘:解析完成后每条轨道都是一个带元数据的规格对象(分辨率、编码、语言、带宽……),Util/FilterUtil.cs 把你在命令行输入的正则逐字段套用过滤,最后按选择策略排序取结果。

参数速查idlangnamecodecsresframechrangeurl都支持正则;segsMin/segsMax按分片数量卡范围,plistDurMin/plistDurMax按时长卡范围(如1h20m30s)。--morehelp select-video能查看完整说明。

加密流下载命令:KID 与 KEY 的正确用法

大量流媒体用 AES-128、CENC(Common Encryption,内容加密标准)保护内容,下载下来的分片是乱码,得配密钥解密。

# 从浏览器开发者工具的请求里找到 KID 和 KEY 后 N_m3u8DL-RE "加密链接.mpd" \ --key "eb676abbcb345e96bbcf616630f1a3da:100b6c20940f779a4589152b57d2dacb" \ --decryption-engine MP4DECRYPT \ -mt -M format=mp4

多个分片用不同密钥时,可以传多个--key,也可以用--key-text-file指向一个按 KID 索引的密钥文件。解密默认调用外部的mp4decrypt,换成--decryption-engine FFMPEGSHAKA_PACKAGER即可切换执行器。如果不想依赖外部工具,MP4 分片可以开--mp4-real-time-decryption边下边解,程序内置的 AES 与 ChaCha20 实现都在 Crypto/ 里,密钥解析后由 MP4DecryptUtil.cs 直接作用于分片数据。HLS 的加密则可以在解析阶段处理:--custom-hls-key支持文件、HEX、Base64 三种格式,--custom-hls-method指定加密方式。

直播流录制:实时合并、断线重连与时长限制

直播分片是边播边生成的,清单文件每隔几秒刷新一次,旧分片还会过期。

N_m3u8DL-RE "直播链接.m3u8" \ --live-real-time-merge \ --live-wait-time 5 \ --download-retry-count 10 \ --live-record-limit 01:00:00

--live-real-time-merge边下边把分片合并进容器,不用等直播结束;--live-wait-time控制清单刷新间隔;--download-retry-count给网络抖动留足重试余量;--live-record-limit到点自动停。追从第几个分片开始播用--live-take-count(默认 16),--live-pipe-mux能把数据管道直喂 ffmpeg 实时混成 TS,不过官方明确提示网络不稳时别开。这套调度逻辑写在 DownloadManager/ 的SimpleLiveRecordManager2.csHTTPLiveRecordManager.cs里。

三个真实工作流:从单文件到批量任务

把加密视频存成可播放 MP4

N_m3u8DL-RE "https://example.com/encrypted.mpd" \ --key "KID:KEY" \ --decryption-engine MP4DECRYPT \ -mt \ -M format=mp4 \ --save-name "my_video"

先给密钥再选混流容器,-mt让音、视、字幕并发下载缩短总耗时,-M format=mp4在全部工作结束后把分离的音视频合进一个 mp4。整条链路是:解析 → 解密 → 混流,跑完只剩一个能直接播放的文件。

把整场直播不丢帧地录下来

N_m3u8DL-RE "https://example.com/live.m3u8" \ --live-real-time-merge \ --live-wait-time 5 \ --download-retry-count 10 \ --live-keep-segments \ --log-file-path "./logs/live.log"

实时合并保证文件始终处于可播放状态;重试次数调大是为了扛住长时间录制中的断流,分片级重试失败会自动跳过不中断整场;--live-keep-segments保留原始分片作为兜底,合并文件万一有问题还能重新拼。加--live-record-limit 02:00:00就能到点自动停录。

一口气跑完 20 个视频

#!/bin/bash while read -r url; do N_m3u8DL-RE "$url" \ --auto-select \ -mt \ --thread-count 8 \ --save-pattern "<SaveName>_<Resolution>" \ --save-dir "./downloads" \ --log-file-path "./logs/download_$(date +%Y%m%d).log" done < urls.txt

每行一个 URL 的urls.txt配合while read逐个执行,天然串行不抢带宽。--save-pattern用模板变量保证多分辨率文件不重名;统一输出目录和按天归档的日志,方便事后核对哪个任务失败。

为什么把解析、下载、解密拆成三个模块

N_m3u8DL-RE 的源码分成三个工程,这个拆分背后有一条清晰的主线。

一份数据,三种协议共用一条流水线

HLS 的#EXTM3U标签、DASH 的 XML、MSS 的 Manifest 完全不同,但解析器统一把它们收敛成同一种"分片列表"数据结构。HLS、DASH、MSS、直播 TS 各有独立解析器(见 Parser/Extractor/),由 StreamExtractor.cs 根据内容特征分发。下游的下载器、合并器、选轨逻辑完全不用关心协议差异——新增一种协议,只需再写一个解析器,其余模块一行不改。

解密引擎可替换,处理逻辑可扩展

解密被抽象成引擎接口:外部工具(mp4decrypt、ffmpeg、Shaka Packager)和内置实现(AES、ChaCha20)平起平坐,谁装了就谁能用。同理,Processor/ 里的 URL 处理器机制允许针对特定站点定制分片 URL 生成逻辑——分片链接带签名、需要时间戳校正时,不用改主流程就能插进一段专用处理。

下一步可以期待什么

维护者会持续跟进流媒体协议的新变体,社区也在不断为特定站点贡献 URL 处理器。低延迟直播(LL-HLS)等新玩法落地只是时间问题。

写在最后

N_m3u8DL-RE 把"解析、选轨、解密、录制、混流"这条最繁琐的链路压进了一条命令行,是流媒体下载场景里少见的省心工具。建议从 TestStreams.md 里的测试流跑一条命令感受下效果,然后按本文的工作流套到自己的任务上;有问题先看--help--morehelp <选项>的内置说明。

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

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

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

立即咨询