news 2026/10/15 3:35:42

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(即 DASH/HLS/MSS)三类在线视频源,点播、直播都能下。手里只有一条流地址、播放器放不了、保存不下来、不知道挑哪条画质轨——这些麻烦它都替你解决。本文带你从"刚拿到链接"一路做到"成品文件躺在目录里",并把自动选画质、切时间段、直播限时录制、解密这几件高频事一次讲透。

一分钟看懂整个下载回路

碰参数之前先把这个回路记下来,后面每个旋钮该拧哪里就清楚了:

  1. 把链接(或本地 MPD/M3U8 文件)作为唯一必填参数传入
  2. 程序解析流并列出全部音视频字幕轨;不指定轨道时会进入交互式选轨界面,用键盘勾选
  3. 下载所选轨道,默认往临时目录写一份meta.json,里面是全部轨道信息(目录可用--tmp-dir调整)
  4. 分片合并,成品默认落在当前目录(--save-dir可改)

写脚本的话,用--auto-select跳过第 2 步的交互,它会自动选"最佳视频 + 每种语言各一条最佳音频 + 全部字幕"。

首条命令跑起来:每一步都带验证

第一步,拿到程序。Windows 用户从项目 Release 页下载最新构建,解压即用,无需再装别的依赖;Arch Linux 及衍生版可走 AUR 源装n-m3u8dl-re-bin。验证方法:

N_m3u8DL-RE --version

能打出版本号(当前 0.6.0)即安装成功。第二步,确认 ffmpeg。合并分片、混流都靠它,程序启动时会去系统路径找,找不到会直接报错退出。验证方法:

ffmpeg -version

ffmpeg 装在非标准位置时,用--ffmpeg-binary-path指全路径。第三步,跑第一次下载。链接取自仓库自带的 TestStreams.md 清单,是一条多音轨多字幕的点播流,很适合练手:

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

成功看两点:临时目录里出现meta.json,打开轨道列表确认解析无误;当前目录出现能正常播放的成品文件。想强制中文界面加--ui-language zh-CN;终端乱码花屏就先试--no-ansi-color,还不行换 cmder 跑。

只挑最高清的一条轨,顺手合进 MP4

场景:批量脚本,不想碰交互界面。-sv / -sa / -ss三个是正则过滤器,for=best表示"按质量挑最好的":

N_m3u8DL-RE "流地址" -sv best -sa best -ss all -M format=mp4

这条是"最佳视频 + 最佳音频 + 全部字幕,完成后混成一个 MP4"。常调的旋钮:

  • 按分辨率和编码过滤:-sv res="3840*":codecs=hvc1,只要 4K HEVC
  • 只要最佳英语音轨:-sa lang=en:for=best
  • -dv / -da / -ds写法与上面完全相同,语义相反,是"丢弃"
  • 只看轨道列表不实际下载:--skip-download

字幕想输出 VTT 而不是默认 SRT,把--sub-format VTT换上;--sub-only则只下字幕,音视频不动。

按时间段或分片序号,只下中间一段

点播不必全下。--custom-range支持两种写法,任选其一:

N_m3u8DL-RE "流地址" --custom-range 05:00-20:00

这条只取第 5 分钟到第 20 分钟的内容。按分片序号写:0-10是 0 到 10 号共 11 个分片,10-表示从 10 号往后全部,-99是前 100 个分片。这个参数只对点播生效,直播流用不了;直播录多久由下一节的--live-record-limit管。

直播录制:录到点自动停 📺

程序识别出链接是直播流时自动进入录制模式。最稳的组合是"实时合并 + 限时长":

N_m3u8DL-RE "直播地址" --live-real-time-merge --live-record-limit 01:30:00

--live-real-time-merge让录制过程中文件持续合并更新,直播结束不用干等合并;--live-record-limit到 1 小时 30 分钟自动停录,忘了 Ctrl+C 也不会把磁盘吃满。

另外两个场景:

  • 想把直播整个当点播一次性拉下来:加--live-perform-as-vod
  • 想边录边出一个能播的 TS 文件:开--live-pipe-mux,走管道 + ffmpeg 实时混流。但 README 特意提醒,网络不稳时别开它,管道里数据容易丢

仓库测试清单里也备了现成的直播源,拿来验证这段配置正合适。

加密流解密后下载 🔑

下完放不了、提示加密,说明源带了 DRM 保护。用--key传密钥,所有分片 KEY 相同时直接--key KEY就行;密钥多就放文件里,用--key-text-file按 KID 查。

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

这条 ClearKey 测试流和密钥来自仓库测试清单,是验证解密链路的一一对应组合。解密引擎默认走mp4decrypt,可用--decryption-engine换ffmpeg或shaka-packager。

旋钮速查

下面是日常最常碰的参数,记住这张表就够覆盖绝大部分使用场景;每个参数的完整说明以仓库根目录 README.md 为准。

参数作用什么时候用
--auto-select自动选所有类型的最佳轨道跳过交互界面、写批量脚本
-sv/-sa/-ss正则筛选视频/音频/字幕明确想要某种画质或语言
-dv/-da/-ds正则丢弃轨道排除不想要的轨
-M format=mp4把分离音视频混进一个容器要一个能直接交付的成品
--custom-range只下部分分片,按时间或序号点播只要中间一段
--live-record-limit直播录制时长限制,HH:mm:ss录固定时长、怕忘关
--save-pattern命名模板,支持<Resolution>等变量同目录多文件防撞名
--thread-count下载线程数,默认本机 CPU 线程数下载慢时调整
--download-retry-count单分片重试次数,默认 3分片总中断
--custom-proxy设置请求代理,如http://127.0.0.1:8888需要走代理访问
--ad-keywordURL 正则,命中分片不下想跳过广告分片
--log-level日志级别,DEBUG最详细出问题要定位

出问题按症状查

症状最可能原因处理方式
打开链接就 401/403站点要鉴权-H "Cookie: xxx"、-H "User-Agent: xxx"补请求头
分片请求 403 或字段缺失分片地址需带原链接参数加--append-url-params
下载慢、分片总中断线程过多或网络抖动--thread-count调小、--download-retry-count调大,或换--custom-proxy
成品放不了、提示加密流带 DRM 保护--key KID:KEY或--key-text-file,必要时换--decryption-engine
界面乱码、花屏老版 Windows 终端不支持 ANSI先--no-ansi-color,不行换 cmder
想知道哪一步出的事现场信息不足--log-file-path落日志文件,--log-level DEBUG拉满细节
成品互相覆盖同目录文件名冲突--save-pattern "<SaveName>_<Resolution>"区分命名

还有一个习惯:程序启动时会做版本检查,有新版本会显示在标题栏,报 bug 或求助前先用最新构建复现一次,能省掉一半来回。

想再挖深一点

  • StreamExtractor.cs:流提取入口,DASH/HLS/MSS 三套解析器都挂在它下面
  • DownloadManager 目录:点播下载和两类直播录制的主流程
  • Crypto 目录:AES、ChaCha20 解密实现,对应正文里的--key

【免费下载链接】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 3:35:28

Elasticsearch深分页限制破解:三种方案对比与实战

/* 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 3:33:41

foobar2000 皮肤 foobox 十分钟装完:深色浅色双主题,装完就能听

foobar2000 皮肤 foobox 十分钟装完&#xff1a;深色浅色双主题&#xff0c;装完就能听 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobar2000 的播放内核一直口碑不错&#xff0c;可惜自带界面十…

作者头像 李华
网站建设 2026/10/15 3:32:16

Selective Search解析:从层级分组到候选框生成的目标检测基石

/* 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 3:31:48

macOS应用跨架构适配实战:一份代码同时支持Intel与Apple Silicon

1. 为什么这个话题现在依然是硬需求先交代一下背景。我是在某次给客户交付内部工具时&#xff0c;被“只能在Intel机器上跑”这个老问题折腾了一遍&#xff0c;才发现这个看似早该过时的话题&#xff0c;其实还有大量开发者没真正搞清楚。尤其是国内很多企业内部还在用几年前的…

作者头像 李华
网站建设 2026/10/15 3:31:26

智能梯控第三方接口快速接入指南

在智慧楼宇的改造项目中&#xff0c;电梯门禁系统的对接往往是最让人头疼的环节之一。很多开发者在面对老旧的梯控硬件时&#xff0c;常常陷入“数据拿不到、权限配不准、日志查不着”的困境。尤其是当需要同时管理多栋大楼、数十部电梯以及成百上千用户的楼层权限时&#xff0…

作者头像 李华