news 2026/10/15 2:33:01

N_m3u8DL-RE 完整教程:一条命令把线上 DASH/HLS 流存成本地完整文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
N_m3u8DL-RE 完整教程:一条命令把线上 DASH/HLS 流存成本地完整文件

N_m3u8DL-RE 完整教程:一条命令把线上 DASH/HLS 流存成本地完整文件

【免费下载链接】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 三种格式)直接存成本地可播放的完整视频文件,解析、多线程抓分片、解密、合并全由它完成。读完这篇,你会装好它、用一条命令下载完点播流,并掌握选清晰度、解密加密流、定时录直播这三个高频操作。

一分钟搞懂:N_m3u8DL-RE 能做什么、不能做什么

项目说明
它是什么跨平台(Windows / Linux / macOS)命令行流媒体下载工具,MIT 协议开源,当前版本 0.6.0
支持的输入MPD(DASH)、m3u8(HLS)、ISM(MSS)清单地址;点播和直播(DASH/HLS 直播录制)都支持
能力边界清单地址要由你提供,它不解析网页源码找流;不下载网页整站资源;解密依赖外部工具(mp4decrypt / ffmpeg / shaka-packager),且程序启动前必须能找到 ffmpeg,否则直接报错退出

💡 最后一行很关键:ffmpeg 不是可选项。后面所有任务都默认你系统里已经装好了它。

30 秒装好并自检

三条安装路径任选其一:

Windows:到项目 Releases 页下载对应平台压缩包,解压后直接运行N_m3u8DL-RE.exe,无需安装。⚠️ 老版本 Windows 自带终端可能跑不动本程序,出现无响应或乱码时换 cmder 运行,官方 README 里有同样提示。

Arch Linux 及其衍生版:AUR 有现成包:

yay -Syu n-m3u8dl-re-bin

任意平台源码构建:需要 .NET SDK(目标框架 net10.0):

git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE && dotnet build

装完跑两条自检命令:

N_m3u8DL-RE --version N_m3u8DL-RE --help

能打印出N_m3u8DL-RE 0.6.0这样的版本号就说明装好了;--help列出全部参数,相当于随身携带的字典。顺手确认一下ffmpeg -version也能跑通,这一步不过关,后面所有任务都起不来。

下载是如何完成的:四步链路

拿到一个任务后,程序内部按固定顺序走四步,理解了这个模型,后面出任何问题你都知道它卡在哪一步:

  1. 解析:读取 MPD/m3u8/ISM 清单,列出全部轨道(视频、音频、字幕)和分片地址。清单就像目录页,分片才是正文。各协议的解析器在 src/N_m3u8DL-RE.Parser/Extractor/,一个协议一个提取器。
  2. 抓片:按你选中的轨道多线程拉分片,线程数默认等于本机 CPU 线程数,逻辑在 src/N_m3u8DL-RE/DownloadManager/。
  3. 解密:若清单标记了加密,按你提供的密钥调用 mp4decrypt / ffmpeg / shaka-packager 等外部工具逐片解密,见 MP4DecryptUtil.cs。
  4. 合并:默认调用 ffmpeg 把分片拼成完整文件(MergeUtil.cs),合并完成后临时分片默认自动清理,还会输出一份解析信息的 json。

实战任务一:一条命令存下点播流

🎯 目标:先跑通"解析 → 抓片 → 合并"全链路,拿到一个能播的文件。

做法:用仓库测试流清单里的无加密 1080p DASH 流,带多音轨多字幕,适合当第一枪:

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

关键参数为什么这么配:

  • --auto-select:不指定轨道时默认不会替你挑,这个参数让它自动选所有类型里的最佳轨道,新手最省心;
  • --save-name demo:指定输出文件名,输出目录默认当前目录,也可用--save-dir改。

怎么验收:命令结束后当前目录出现 demo 开头的视频文件,用播放器打开能正常播放;同目录还有一份 json 元数据文件(--write-meta-json默认开启),记录了解析出的全部轨道信息。

实战任务二:从多码率流里挑出你要的清晰度和音轨

这一步比任务一多了"筛选":任务一是全都要,这里只下你想要的那条轨道,其余码率一分带宽不花。

🎯 目标:从多码率流里只下 1920x1080 视频 + 英语音轨。

做法:官方多分辨率测试流 MultiResMPEG2 正好用来练筛选:

N_m3u8DL-RE "https://dash.akamaized.net/dash264/TestCases/2c/qualcomm/1/MultiResMPEG2.mpd" -sv 'res="1920*":for=best' -sa 'lang=en:for=best'

关键参数为什么这么配:

  • -sv/-sa后面的条件都是正则表达式,字段包括res(分辨率)、codecs(编码)、lang(语言)、ch(声道)、name等,|表示"或";
  • for=best表示符合条件的只留最匹配的一条(这也是默认值),写best2留两条、all全留;
  • 想下 4K HEVC,写成-sv res="3840*":codecs=hvc1:for=best,这是官方帮助里的现成例子。

怎么验收:看解析输出,选中视频轨分辨率应为 1920x1080;打开输出文件,音轨应只剩你要的那条英语。

实战任务三:带密钥解密加密流

这一步比任务二多了"解密":片段在传输时是密文,程序调用外部工具把明文摘出来再合并,产出的文件才能直接播。

🎯 目标:把一份 ClearKey 加密的流存成正常可播放的视频。

做法:测试流清单里有一条 ClearKey 流,密钥就写在同一行,直接复制:

N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd" --key "9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4d"

关键参数为什么这么配:

  • --key的格式是KID:KEY,冒号前是密钥 ID、冒号后是密钥本体;多组密钥就按顺序传多个--key;所有片共用同一把 KEY 时,也可以只传 KEY;
  • 解密默认调用 mp4decrypt(--decryption-engine默认MP4DECRYPT),它必须装在 PATH 里;没有就换引擎--decryption-engine FFMPEG或SHAKA_PACKAGER,也可以用--decryption-binary-path指全路径;
  • 密钥多到不想敲命令行时,用--key-text-file传一个密钥文件。

怎么验收:用播放器打开文件,画面正常、声音正常、拖动进度条不花屏,说明解密和合并都成了。

按需组合参数:先想清楚你要改什么

不急着背参数,按"你想改什么"对号入座:

改输出:--save-dir输出目录、--save-name文件名;批量下载多个同类型流容易重名时,用--save-pattern套模板,例如--save-pattern "<SaveName>_<Resolution>"会输出demo_1920x1080.mp4这种带分辨率的文件名。

改选轨:-sv/-sa/-ss按正则挑视频、音频、字幕;-dv/-da/-ds反向排除匹配到的轨道;懒得写条件就--auto-select。

改速度和稳定性:--thread-count线程数(默认本机 CPU 线程数)、--download-retry-count单片重试次数(默认 3)、--http-request-timeout请求超时秒数(默认 100)、-R限速(如-R 15M)、-mt并发下载已选的音视频字幕。

改解密:--decryption-engine MP4DECRYPT | FFMPEG | SHAKA_PACKAGER三选一,配套--decryption-binary-path指工具全路径。

改时间范围:--custom-range只下载部分分片,四种写法:05:00-20:00时间段、0-10片段序号、-99前 100 个分片、10-从第 10 个到结尾。

直播录制:把直播按点播逻辑录下来、录满即停:

N_m3u8DL-RE "https://cmafref.akamaized.net/cmaf/live-ull/2006350/akambr/out.mpd" --live-perform-as-vod --live-record-limit 02:00:00 --save-name live

--live-perform-as-vod让程序按点播方式处理直播流,产出完整文件;--live-record-limit格式是 HH:mm:ss,录到 2 小时自动退出。想边录边拼出可播放的文件再加--live-real-time-merge。⚠️ 另有--live-pipe-mux可实时混流进 TS,但官方明确提示:网络不稳时别开它,管道内数据由 ffmpeg 读取,容易丢直播数据。

改合并策略:默认 ffmpeg 合并;--binary-merge纯二进制拼接、不重封装,适合 fMP4/CMAF 分片;--skip-merge完全不合并只留分片;下载完想把分离的音视频混进指定容器,用-M format=mp4或-M format=mkv:muxer=mkvmerge。

💡 任何参数拿不准写法,跑N_m3u8DL-RE --morehelp <参数名>,比如--morehelp select-video、--morehelp custom-range,能直接看到官方详细帮助和示例。

翻车了对号入座

症状:分片反复下载失败,任务卡住或极慢。 根因:网络不稳,或默认的 100 秒请求超时对慢速分片太短,重试 3 次也救不回来。 处方:把重试提到 5、超时拉长到 300 秒,线程适当调小再跑:

N_m3u8DL-RE "流地址" --download-retry-count 5 --http-request-timeout 300 --thread-count 4

症状:程序一启动就提示找不到 ffmpeg(ffmpegNotFound)。 根因:ffmpeg 没装或不在 PATH 里。程序在开始下载前会预先检查 ffmpeg,找不到直接拒绝启动。 处方:装好 ffmpeg 后自检ffmpeg -version;装在不同目录就用--ffmpeg-binary-path指全路径,README 里的示例写法是C:\Tools\ffmpeg.exe。

症状:解密失败,或下载完成的文件打不开、播放花屏。 根因:--key只传了 KEY 没带 KID,程序按错密钥解了密;或默认 mp4decrypt 引擎与该内容的加密方式不兼容。 处方:补齐完整KID:KEY格式重跑;仍不行就--decryption-engine FFMPEG换引擎再试。

症状:老版本 Windows 终端里程序无响应或输出乱码。 根因:旧系统自带终端不支持本程序,README 有同样的提示。 处方:换 cmder 运行同一条命令,参数一个都不用改。

进阶:让脚本替你跑

批量下载是最常见的进阶需求。把下面这段存成batch.sh,以后加流只改URLS列表这一处:

#!/bin/bash URLS=( "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" "http://playertest.longtailvideo.com/adaptive/oceans_aes/oceans_aes.m3u8" ) mkdir -p ./videos for url in "${URLS[@]}"; do N_m3u8DL-RE "$url" --save-dir ./videos --auto-select --thread-count 8 done

循环体里集中维护所有公共参数:自动选最佳轨道、8 线程、产出统一落进./videos。换地址只动URLS,整条流水线不用碰。

带走这份速查表

你想做的事命令 / 参数
版本自检N_m3u8DL-RE --version
基本下载N_m3u8DL-RE "流地址" --save-name demo --auto-select
改输出目录--save-dir ./videos
选视频轨-sv 'res="1920*":for=best'
选音频轨(日或英)-sa 'lang="ja\|en":for=best'
只下字幕--sub-only --sub-format SRT(SRT/VTT 可选,默认 SRT)
带密钥解密--key KID:KEY,多组传多个
换解密引擎--decryption-engine FFMPEG
只下部分时间段--custom-range 05:00-20:00
直播定时录制--live-perform-as-vod --live-record-limit 02:00:00
限速 / 重试 / 超时-R 15M --download-retry-count 5 --http-request-timeout 300
查参数详解--morehelp <参数名>

最后几条习惯,能帮你少走不少弯路:

  • 装完先跑--version,遇到问题先确认不是旧版本,很多坑新版已修
  • 轨道挑不准就先--auto-select跑通链路,再学-sv/-sa精细筛选
  • 网络不稳时把--thread-count调小、--http-request-timeout调大,比反复重跑有效
  • 临时分片默认任务结束后自动清理;想留分片做备份就加--skip-merge
  • ⚖️ 只下载你拥有合法权限访问的内容,这是 官方 README 里写明的使用底线

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 2:31:09

科研idea的生成逻辑与落地转化路径解析

外文文献“白嫖”与高效阅读全攻略 宝子们&#xff0c;是不是一提到下载外文文献就头大&#xff1f; 想找的文献要么全网搜不到&#xff0c;要么下载流程复杂到让人原地爆炸。好不容易在某个小网站找到了资源&#xff0c;又担心版权问题不敢点&#xff0c;更别说有些平台动辄几…

作者头像 李华
网站建设 2026/10/15 2:30:58

OLED12864多平台驱动适配:SPI/I²C时序、显存布局与硬件避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/15 2:30:07

AnyPS5:存储扩容、数据备份、画质调优与散热维护全攻略

“AnyPS5”这个词&#xff0c;最开始只是我备忘录里的一个文件夹名。朋友买了新主机后总问我三件事&#xff1a;还能装多少游戏、画面是不是设置错了、风扇为什么越来越响。问的人多了&#xff0c;我发现不管哪一款机型&#xff0c;大家折腾的路径几乎一模一样。于是我把这些反…

作者头像 李华
网站建设 2026/10/15 2:28:58

Fluent中泡沫金属相变储能热非平衡仿真:模型设置与参数标定

带泡沫金属的相变储能仿真&#xff0c;在Fluent里到底怎么做热非平衡&#xff1f;这问题我前前后后折腾了小半年&#xff0c;期间换了三套思路、踩了无数坑&#xff0c;才终于把模型跑稳、结果跑准。今天把整个过程中积累的东西完整写出来&#xff0c;包括热平衡方程和热非平衡…

作者头像 李华