N_m3u8DL-RE 流媒体下载器教程:m3u8 下载与直播录制一次跑通
【免费下载链接】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 是跨 Windows、Linux、macOS 的命令行流媒体下载器,基于 .NET 10 以 AOT 自包含发布,Release 里的可执行文件装好即可运行,无需另装运行时。覆盖 DASH(.mpd)、HLS(.m3u8)、MSS(.ism)三种清单,支持点播下载与直播录制。
三步跑通:从解压到第一个成品
先执行最小验证,三步走,跑通即验证完成:
# 1. 从 Release 页面下载对应平台产物并解压(Arch 系:yay -Syu n-m3u8dl-re-bin) # 2. 校验版本 N_m3u8DL-RE --version # 3. 用公开测试流跑最短命令 N_m3u8DL-RE "http://playertest.longtailvideo.com/adaptive/oceans_aes/oceans_aes.m3u8" --save-name demo第三步程序自动选流、多线程抓分片、合并成完整文件,跑完当前目录得到demo成品,临时分片默认自动删除。--version能正常打印,说明文件与系统匹配。
高频参数速查:三个功能域
输入 / 输出控制
| 参数 | 作用 | 缺省行为 |
|---|---|---|
<input> | 清单链接或本地清单文件 | 必填 |
--save-name | 成品文件名 | 自动生成保存名 |
--save-dir | 输出目录 | 当前工作目录 |
--custom-range | 只下载部分分片(时间或序号) | 全量下载 |
选流策略
| 参数 | 作用 | 缺省行为 |
|---|---|---|
-sv/--select-video | 正则选视频轨,支持res、codecs、bwMin/bwMax | 自动挑一条 |
-sa/--select-audio | 正则选音轨,支持lang、channel | 自动挑一条 |
-ss/--select-subtitle | 正则选字幕 | 自动挑一条 |
-dv/-da/-ds | 按同样正则排除对应轨道 | 不排除 |
传输与容错
| 参数 | 作用 | 缺省行为 |
|---|---|---|
--thread-count | 下载线程数 | 10 |
--download-retry-count | 单分片失败重试次数 | 7 次 |
--cookies | 读取 Netscape 格式 Cookie 文件 | 不带 Cookie |
--tmp-dir | 临时分片目录 | 系统默认临时目录 |
--log-file-path | 日志落盘路径 | 不写日志文件 |
另有两项默认行为:--check-segments-count默认开启,核对实际分片数与清单预期;--del-after-done默认开启,合并完成后删除临时分片。
场景实战:按输入类型递进
多清晰度清单:只挑 4K HEVC
适用:清单里有多条清晰度、多语言轨道,你要精确挑一条,而不是接受自动挑选。
N_m3u8DL-RE "https://example.com/course.m3u8" --save-name course \ -sv "res=^3840x:codecs=hvc1:for=best" -sa "lang=en:for=best" -ss "name=中文:for=all"与最小验证命令的差异全部在-sv/-sa/-ss:用正则按分辨率、编码、语言挑轨,for=best表示每种基础语言取码率最高的一条。
⚠️ 边界:选流挑的是整条流,不是片段;只想要中间一段时间,见下一节。
持续更新的直播流:录满两小时自动停
适用:目标是持续更新的直播,录满指定时长自动停,且不想等结束后再合并。
N_m3u8DL-RE "https://example.com/live.m3u8" --save-name live \ --live-real-time-merge --live-record-limit 02:00:00变化点是--live-real-time-merge:录制过程同步合成完整文件,而非结束后才合并;--live-record-limit控制录满即停,不写则用 Ctrl+C 手动停止。
⚠️ 边界:--live-wait-time可手动设列表刷新间隔,但清单过短或过密都会拉低录制质量;回看历史时段用--live-catchup。
完整点播:只保留第 5 到第 20 分钟
适用:整集太冗长,只要中间一段。
N_m3u8DL-RE "https://example.com/course.m3u8" --save-name part \ --custom-range 05:00-20:00变化点是--custom-range:时间格式为MM:SS或HH:MM:SS,也支持0-10、10-、-99这类分片序号写法。
⚠️ 边界:按分片起始时间筛选、保留完整分片,不做精确裁切,两端会略有偏差。
频道列表文件:一次录制多个台
适用:输入是 channels.m3u 频道列表,要为多个台分别落盘。
N_m3u8DL-RE channels.m3u -sv "name=^Sports:for=all" --live-record-limit 00:03:00差异在输入类型是列表文件:for=all让所有匹配^Sports的频道同时录制并分别保存。
⚠️ 边界:频道名按正则匹配,匹配不到任何台会直接报错退出。
管线拆解:数据流向
输入链接 → 识别 MPD / M3U8 / ISM 格式,解析出轨道与分片列表(见 src/N_m3u8DL-RE.Parser/)→ 按-sv/-sa规则或默认策略选定各轨道 → 多线程并发拉取分片,失败自动重试(见 src/N_m3u8DL-RE/DownloadManager/)→ 按时间轴拼接分片并混流音视频、字幕 → 删除临时文件,成品落盘(合并与混流逻辑在 src/N_m3u8DL-RE/Util/)。
故障定位:症状 → 原因 → 处置
| 如果你看到 | 多半是 | 先做 |
|---|---|---|
| 分片下载反复失败 | 网络抖动导致请求超时 | --download-retry-count调大,默认已是 7 次 |
| 临时文件占用空间过大 | 临时分区空间不足 | --tmp-dir指向空间更大的分区 |
| 同一命令时成时败 | 直播列表刷新与断网恢复相关 | --version确认版本,--log-file-path落盘日志对比 |
| 老版本 Windows 终端乱码或无法运行 | 系统终端与程序不兼容 | 换 cmder 等第三方终端 |
提 issue 前附三样:--version输出、完整命令、用--log-file-path落盘的日志文件;先用N_m3u8DL-RE doctor检查工具版本与系统环境。
下载与录制能稳定跑通后,再按需碰--custom-range、--live-catchup这类细分参数。
【免费下载链接】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),仅供参考