N_m3u8DL-RE 下载教程:四个模块搞定流媒体下载、录直播与解密
【免费下载链接】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 三种清单,你把链接丢给它,它取全分片、并行下载、合成一个完整 MP4。本文拆成四个能力模块,每条命令都能直接复制运行。
三分钟装好,跑通第一次完整下载
先说结论:下载本身零依赖,但合并环节要调 FFmpeg,先验证:
ffmpeg -version没装的话,Ubuntu/Debian 直接sudo apt install ffmpeg;Windows 把 FFmpeg 的 bin 目录加进 PATH,或者之后用--ffmpeg-binary-path指定 exe 全路径。
安装三条路线任选其一:
- 预编译版:到 Release 页面按系统选压缩包,Windows 选 win-x64、macOS 选 darwin 版本,解压即用,不挑运行时
- Arch Linux:
yay -Syu n-m3u8dl-re-bin(发行版)或yay -Syu n-m3u8dl-re-git(开发版) - 源码构建:
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE/src/N_m3u8DL-RE dotnet build -c Release装完用N_m3u8DL-RE --version验证版本号。然后开跑第一条命令——这是官方 DASH 测试流,带多音轨多字幕,很适合首战:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd"它干的活:解析清单 → 自动挑最佳画质 → 多线程下载 → FFmpeg 合并,全程进度可见,最后产出一个完整 MP4。想顺藤摸瓜看"内脏"的,清单解析在 src/N_m3u8DL-RE.Parser/,分片调度与直播录制在 src/N_m3u8DL-RE/DownloadManager/,加解密逻辑在 src/N_m3u8DL-RE/Crypto/。
顺手记几个高频参数:
--save-dir ./videos:输出目录,不存在会自动创建--save-name "我的收藏":比默认那串 ID 好认的文件名--thread-count 8:并发线程数,默认取本机 CPU 核数--ui-language zh-CN:一键切中文界面;--no-log关闭日志文件- 它也吃本地清单:把 m3u8 存到本地后
N_m3u8DL-RE ./playlist.m3u8一样能跑
限速、提速、重试怎么配
速度上不去?先看线程数够不够:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" --thread-count 16不想占满带宽影响别人?加限速-R,支持 M / K 后缀:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" --thread-count 16 -R 15M弱网老失败?重试次数调高、超时放宽:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" --download-retry-count 10 --http-request-timeout 60进阶参数集中收口:
--download-retry-count:分片失败自动重试,默认 7 次--http-request-timeout:单次请求超时(秒),默认 100--custom-proxy http://127.0.0.1:8888:走代理;程序默认跟随系统代理,加--use-system-proxy false可关掉--task-start-at 20261015030000:到点才开工(格式 yyyyMMddHHmmss),适合凌晨跑大文件- 报错别慌,第一反应开 DEBUG 日志:
--log-level DEBUG --log-file-path ./download.log,五档为 DEBUG / ERROR / INFO / OFF / WARN
只选你想要的清晰度、语言和编码
一份 DASH 清单里常塞着三四档清晰度、五六条音轨、好几组字幕,全下回来既费盘又费时间。
先说结论:不带筛选参数 → 弹交互选择框勾选;--auto-select→ 自动每种类型选最佳。想精挑,用-sv(视频)/-sa(音频)/-ss(字幕),都是字段=正则写法,冒号拼接多个条件,for=best|worst|all决定取几条:
# 只要 1080p 视频轨 N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" -sv res=1920x1080:for=bestres按"宽x高"匹配,其余字段同理:lang语言、codecs编码、name轨道名。想反着来,-dv / -da / -ds剔除不要的:
# 英日音轨全部排除,视频照常取最佳 N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" -sv for=best -da lang="en|ja"进阶收口:
- 只要字幕:
--sub-only --sub-format VTT,默认输出 SRT -mt:音视频字幕并发拉取,总耗时明显缩短- 多轨防重名:
--save-pattern "<SaveName>_<Resolution>_<Bandwidth>",得到video_1920x1080_5000000.mp4这类名字,模板还支持<Language>、<Codecs>、<FrameRate>等变量 --custom-range 01:00-05:00:只下部分分片(时间区间,或0-100这种分片序号),先验证片源质量再全下- 想换混流器收尾:
-M format=mkv:muxer=mkvmerge
直播边录边合成,加密流解密
直播流是一场越拉越长的接力赛——分片无限增长、边播边删。默认策略是"先下完再合并",录几小时要干等。开实时合并,录完即得成品:
N_m3u8DL-RE "https://cmafref.akamaized.net/cmaf/live-ull/2006350/akambr/out.mpd" --live-real-time-merge上面是官方直播测试流,专门用来验证录制流程。配合--live-record-limit 02:00:00设时长上限,到点自动收工。其余选项:
--live-perform-as-vod:把正在播的直播当点播一次性拉走--live-pipe-mux:管道直喂 FFmpeg 实时混流,延迟最低,但弱网易丢数据--live-fix-vtt-by-audio:读音频起始时间修正 VTT 字幕时间轴- 分片默认保留,想省盘加
--live-keep-segments false
加密流怎么解?先判断有没有加密:HLS 清单找#EXT-X-KEY,DASH 找ContentProtection。加密流一般要KID:KEY形式的密钥,用--key传入(所有分片共用一把 KEY 时可省略 KID 直接给密钥值):
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd" --key 9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4d进阶收口:
- 密钥多就写进文本文件,
--key-text-file让程序按 KID 自动查找 --decryption-engine切解密引擎:默认 MP4DECRYPT,可换 FFMPEG 或 SHAKA_PACKAGER;工具不在 PATH 里用--decryption-binary-path指定全路径- HLS 场景已知加密方法、密钥、IV 时可直接硬指定,省掉猜测:
--custom-hls-method AES_128 --custom-hls-key <16字节hex> --custom-hls-iv <16字节hex> - 一句提醒:只对你有合法权限的内容做解密,这个工具的定位是学习与技术研究
测试流不够用?仓库自带的 TestStreams.md 列了二十多条 DASH / HLS / ISM 官方示例,多音轨、多 Period、加密、直播都有,按需取用。
故障对照表:症状 → 原因 → 解法
| 症状 | 原因 | 解法 |
|---|---|---|
| 启动即提示找不到 FFmpeg | FFmpeg 不在 PATH | 安装 FFmpeg,或--ffmpeg-binary-path指定 exe 全路径 |
| 老 Windows 终端界面错乱 | 系统终端不支持 ANSI 渲染 | 换 cmder 之类终端运行,或加--no-ansi-color |
| 合并后文件不完整且无法复查 | --del-after-done默认开启,临时分片已删 | 用--del-after-done false保留分片;分片数量核对(--check-segments-count)默认就是开的 |
| 弱网分片反复失败 | 默认重试 7 次 / 超时 100 秒不够 | --download-retry-count 10 --http-request-timeout 60 |
| 解密阶段报找不到解密工具 | mp4decrypt 或 shaka-packager 不在 PATH | 安装对应工具,或--decryption-binary-path指定全路径 |
回到深夜十一点那条网课链接——现在它也能安安静静躺在你的下载目录里,变成一个完整的 MP4。下次再有人甩来"只能在线看",你知道该敲哪条命令了。🎬
【免费下载链接】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),仅供参考