N_m3u8DL-RE 完整指南:m3u8 与 MPD 流媒体下载、直播录制实操
【免费下载链接】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 是一款免费开源的跨平台流媒体下载与录制工具,以命令行方式处理 M3U8(HLS)、MPD(DASH)、ISM(MSS)三种协议的点播下载和直播录制,界面提供英语、简体中文和繁体中文。它解决的核心问题是:把一个播放页背后的媒体清单,变成本地可存储、可二次加工的文件。
它覆盖哪些下载任务
在开始操作前,先确认你的任务是否落在它的覆盖范围内:
- 点播下载:标准 m3u8/mpd/ism 链接,自动分片下载、合并、混流
- 直播录制:DASH/HLS 直播流实时录制,支持限制录制时长、实时合并
- 加密流:支持 CENC、AES-128、ChaCha20 等常见加密方式,可指定密钥解密
- 多轨处理:多语言音轨、多字幕轨道可分别选取,输出为独立文件
- 范围截取:只下载视频的部分时间段或指定序号的分片
如果任务只是"给一个链接,拿到一个能播的文件",后面几节的流程基本就是全部所需。
安装与首次运行
Windows:从 Release 页面下载对应平台的构建包,解压后直接运行可执行文件,无需安装依赖。注意老版本 Windows 自带终端可能无法正常显示交互界面,遇到乱码或卡死时,换用 cmder 运行,或加--force-ansi-console强制按 ANSI 终端处理、加--no-ansi-color去掉颜色输出。
Linux:Arch 及其衍生发行版可通过 AUR 安装,稳定版和开发版二选一:
yay -Syu n-m3u8dl-re-bin yay -Syu n-m3u8dl-re-git其他发行版同样是拿到构建产物后加执行权限即可。
首次运行建议只执行N_m3u8DL-RE --help,完整参数表会列在终端里;想深入某个选项时,用--morehelp <选项名>查看该选项的详细说明和示例。完整参数也可以直接查 README.md。
从链接到成品文件的三步下载流程
一次标准的点播下载只有三步:给出清单链接、指定要哪条轨道、决定输出位置。
N_m3u8DL-RE "<流媒体链接>" -sv best -sa best -M format=mp4这条命令的含义是:解析链接中的全部轨道,选最高码率视频和最佳音轨,下载合并后混流为 mp4 容器。逐个参数拆解:
-sv best:选最佳视频流,等价于正则匹配后取码率最高的一条-sa best:选最佳音轨-M format=mp4:完成后把分开的音视频混成一个 mp4 文件,不写则分别输出--save-dir和--save-name:控制输出目录与文件名,批量任务时很有用
程序默认使用本机 CPU 线程数并发下载,分片失败自动重试 3 次,完成后自动删除临时文件,这些默认值对大多数场景足够,不必每次显式指定。
直播录制:时长控制与实时合并
把直播链接直接作为输入参数即可开始录制,程序会循环刷新直播清单、持续追加分片。直播场景常用的控制项:
--live-record-limit 01:30:00:录满指定时长后自动停止,格式为 HH:mm:ss,需要"定时关"时用它--live-perform-as-vod:把直播流当点播处理,一次性拉取当前已存在的分片,不持续等待--live-real-time-merge:边录边合并,不用等录制结束再手动拼--live-wait-time:手动设置清单刷新间隔,清单更新慢于默认值时可显式调大--live-pipe-mux:开启实时合并时,通过管道交给 ffmpeg 实时混流为 TS 文件
最后这个选项在弱网环境下要谨慎:管道内的数据读取由 ffmpeg 承担,网络不稳时容易丢帧,作者也在 README.md 中明确提醒了这一点。网络可靠时它能把"先落分片再合并"省掉一步。
用正则表达式挑选最高画质与指定语言音轨
-sv、-sa、-ss三个选项接受结构化正则,比单纯的best更精确。组合形式是key=正则:key=正则:for=选择方式:
N_m3u8DL-RE "<链接>" -sv res="3840*":codecs=hvc1 -sa lang=en:for=best -ss name="中文"上面这条命令选出 4K 分辨率且编码为 HEVC 的视频、最佳英语音轨、名称含"中文"的字幕。常用的匹配维度:
- 视频:
res(分辨率)、codecs(编码)、frame(帧率)、segsMin/segsMax(分片数范围) - 音频:
lang(语言代码)、ch(声道) - 选择方式:
for=best取最优、for=best2取前二、for=all全部保留、for=worst取最低
下载多条同类型轨道时,用--save-pattern "<SaveName>_<Resolution>"这类命名模板可以避免文件名互相覆盖,模板支持<Language>、<Channels>、<Codecs>等变量。字幕输出格式用--sub-format srt或--sub-format vtt指定,默认 SRT。
加密流解密与分片范围截取
解密分两种来源。清单内自带密钥信息时,程序自动处理;需要手动提供密钥时,用--key KID1:KEY1 --key KID2:KEY2逐条指定,KID 相同时可简写为--key KEY。解密引擎默认为 mp4decrypt,遇到兼容问题可切换:
--decryption-engine FFMPEG或SHAKA_PACKAGER- HLS 专用场景可用
--custom-hls-method指定加密方式(AES_128、CENC、CHACHA20 等),配合--custom-hls-key/--custom-hls-iv给出文件、HEX 或 Base64 格式的密钥与向量
范围截取用--custom-range完成,两种记法都支持:
- 分片序号:
0-10表示前 11 个分片,10-表示第 10 片之后全部,-99表示前 100 个 - 时间区间:
05:00-20:00表示第 5 分钟到第 20 分钟的内容
做剪辑备料或只需要节目某个段落时,这比下完整个文件再剪切省流量。
网络、线程与限速的常用调整项
下载慢或不稳定时,按这个顺序检查:
--thread-count:并发线程数,默认取本机 CPU 线程数;CDN 对单连接限速时,调高它通常直接见效--download-retry-count:单分片失败重试次数,默认 3 次,弱网可加大--http-request-timeout:HTTP 超时秒数,默认 100 秒--custom-proxy http://127.0.0.1:8888:走指定代理;--use-system-proxy默认开启,读取系统代理-H "Cookie: mycookie":附加请求头,遇到需要登录态或特定 UA 才能拉流的站点时使用-R 15M:限速,单位支持 M/K 的 Mbps 或 Kbps,避免占满上行带宽影响其他工作-mt:已选定的视频、音频、字幕三条轨道并发下载,多轨任务总耗时明显缩短
--append-url-params是一个容易被忽略的选项:把输入链接上的 query 参数透传给每个分片 URL,对部分网站(例如链接带时效签名的站点)是必需的。
下载失败时的排查顺序
出现问题时按以下路径走,比直接报错给作者更高效:
- 确认版本:到 Actions 页面拉最新的自动构建版本复现一次,很多已知问题在两个 Release 之间就已经修复
- 用测试流自检:仓库内的 TestStreams.md 收集了一组公开的 DASH/HLS 测试流,包括多音轨、VTT 字幕、加密流、直播流。用它们验证环境,能区分"工具问题"还是"目标站点问题"
- 看日志:程序会输出日志文件(
--log-file-path可指定位置),--log-level DEBUG打开详细级别后再复现一次 - 查 Issues:到仓库 Issues 区搜同类报错,作者通常会标注修复版本
下一步值得试的功能:先用 TestStreams.md 里的多音轨 mpd 跑一遍-sv all -sa all -ss all,确认多轨道输出和命名模板符合预期;再拿一个直播链接配合--live-record-limit 00:10:00试录十分钟,熟悉直播的完整生命周期。参数细节随时查--morehelp或 README.md 中的命令行参数表。
【免费下载链接】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),仅供参考