N_m3u8DL-RE 流媒体下载:10 分钟跑通 MPD / M3U8 到 MP4 的离线下载
【免费下载链接】N_m3u8DL-RECross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE
在线视频只能看不能存,想缓存却总是踩坑。视频被切成几十上百个分片,靠清单文件(.mpd / .m3u8 / .ism)组织边播边拉。N_m3u8DL-RE 一条命令完成流媒体下载:解析清单、并发抓分片、用 FFmpeg 合并成完整文件。点播、直播都支持,10 分钟从 0 到 MP4。
5 分钟装好 N_m3u8DL-RE 并下载第一条流
三种安装方式任选,每种一行:
# 预编译包:到 Release 页面按系统下载 zip(win-x64 / darwin / linux-x64),解压即用,无需运行时yay -Syu n-m3u8dl-re-bin # Arch Linux 及衍生版,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用官方测试流(多音轨多字幕,最适合首跑)发出第一条下载命令:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd"预期输出:程序解析清单、自动挑一套最佳轨道,下载全部分片并合并,进度条跑完,当前目录留下一个 MP4。
日常习惯再挂三个参数,三行参数跑通:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" \ --save-dir ./videos \ --save-name "我的收藏" \ --thread-count 8--save-dir:输出目录,不存在会自动创建--save-name:自定义文件名,比默认任务 ID 好认--thread-count:并发下载线程数,可拉到 CPU 核心数两倍左右
再记两个小参数:--ui-language zh-CN切中文界面,--no-log关闭日志文件。
三个典型场景:DASH 轨道选择、直播录制命令、加密流解密参数
场景 A:多清晰度 / 多语言清单精准挑轨道
要解决什么:清单里塞着多档清晰度和好几条音轨,默认只下"最佳"一套,想精细控制就用轨道选择参数。
关键参数:-sv / -sa / -ss分别选择视频、音频、字幕,格式为字段=正则,冒号拼接,for=best|worst|all决定取几条;反向剔除用-dv / -da / -ds,语法相同。
可复制命令(官方多音轨测试流,1080p 最佳视频 + 最佳英语音轨):
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" \ -sv "res=1920*:for=best" \ -sa "lang=en:for=best"- 正则字段可换:
codecs=hvc1按编码、name=按名称、frame=按帧率、bwMin=按码率 for=all保留全部匹配,例如-ss name="中文":for=all把所有中文字幕全要
坑:下多条轨道时不加--save-pattern "<SaveName>_<Resolution>_<Bandwidth>"区分文件名,后面的会覆盖前面的。
顺带两个细粒度参数:--custom-range 05:00-20:00只下第 5 到 20 分钟分片(也支持0-10这类分片序号写法);--task-start-at 20260815230000让任务定时启动,-M format=mp4与--mux-import path=zh.srt:lang=chi控制产物容器、引入外部字幕。
场景 B:直播录制命令,边播边录还能限时长
要解决什么:直播分片无限增长且边播边删,默认策略"全部下载完再合并",录几小时会很拖,需要实时合并。
关键参数:--live-real-time-merge开启实时合并,录完即得成品;--live-record-limit以HH:mm:ss格式设录制上限。
可复制命令:
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-keep-segments:录制时保留分片(默认开启),省磁盘可关掉
坑:弱网别开--live-pipe-mux,管道数据由 FFmpeg 读取,容易丢直播数据。
场景 C:加密流配钥匙,解密参数一次配齐
要解决什么:HLS / DASH 常见的 AES-128、CENC(ClearKey)等加密,没钥匙解不了,KID:KEY是关键。
关键参数:--key指定密钥,可重复传多次;--decryption-engine切换解密工具;工具不在 PATH 里就用--decryption-binary-path指全路径。
可复制命令(官方 ClearKey 测试流):
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd" \ --key 9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4d--key KID:KEY:多个分片共用同一 KEY 时可直接简写--key KEY--decryption-engine:默认MP4DECRYPT,可选FFMPEG/SHAKA_PACKAGER--key-text-file:密钥写进文件,程序按 KID 自动查找,密钥多时用
HLS 已知加密方法、密钥和 IV 时,直接硬指定三参数,省去猜测流程(把链接换成你的):
N_m3u8DL-RE "链接" \ --custom-hls-method AES_128 \ --custom-hls-key 000102030405060708090a0b0c0d0e0f \ --custom-hls-iv 000102030405060708090a0b0c0d0e0f坑:不知道 KID 就先把密钥写进文件,用--key-text-file让程序按 KID 查;解密只针对你有合法权限的内容。
N_m3u8DL-RE 参数速查表
| 参数 | 作用 | 示例值 |
|---|---|---|
--save-dir | 输出目录,不存在自动创建 | ./videos |
--save-name | 自定义文件名 | 我的收藏 |
--save-pattern | 文件命名模板,区分多轨道 | "<SaveName>_<Resolution>" |
--thread-count | 并发线程数,默认 10 | 8 |
-sv / -sa / -ss | 正则选择视频 / 音频 / 字幕 | res="1920*":for=best |
-dv / -da / -ds | 正则剔除轨道 | period="ad":for=all |
--custom-range | 只下载部分分片 | 05:00-20:00、0-10 |
--task-start-at | 任务开始时间 yyyyMMddHHmmss | 20260815230000 |
-M | 混流产物格式 | format=mp4 |
--mux-import | 引入外部字幕 / 音轨 | path=zh.srt:lang=chi |
--live-real-time-merge | 直播实时合并(开关) | — |
--live-record-limit | 直播录制时长上限 | 02:00:00 |
--live-pipe-mux | 直播管道实时混流(开关) | — |
--key | 解密密钥 | KID:KEY |
--decryption-engine | 解密工具 | FFMPEG、MP4DECRYPT、SHAKA_PACKAGER |
--key-text-file | 密钥文件,按 KID 查找 | keys.txt |
--custom-hls-method/key/iv | HLS 加密方法 / 密钥 / IV 硬指定 | AES_128 |
--download-retry-count | 分片重试次数,默认 7 | 10 |
--http-request-timeout | 请求超时(秒),默认 100 | 60 |
--custom-proxy | 请求代理 | http://127.0.0.1:8888 |
--ffmpeg-binary-path | FFmpeg 全路径 | C:\Tools\ffmpeg.exe |
排障与调优:合并失败、速度上不去先查什么
- 合并或解密阶段报 FFmpeg 错误,先查是否装了 FFmpeg(
ffmpeg -version),再试sudo apt install ffmpeg或用--ffmpeg-binary-path指全路径 - 速度上不去,先看
--thread-count是否太小,再试-R 15M显式限速或--custom-proxy走代理 - 分片反复失败、中途断流,先查网络稳定性,再试调高
--download-retry-count和--http-request-timeout - 合并后文件不完整,先看分片数量校验结果(默认开启
--check-segments-count),再试--del-after-done false保留临时分片二次排查 - 旧版 Windows 自带终端渲染不出界面,先换 cmder 之类的终端再试
仍定位不了,开 DEBUG 跟日志走:
N_m3u8DL-RE "链接" \ --log-level DEBUG --log-file-path ./download.log下一步 🎬
全部参数见 README,单个参数跑N_m3u8DL-RE --morehelp select-video看完整字段列表。TestStreams.md是官方测试流清单,点播、直播、加密、多字幕场景都有,直接复制就能练手。想改行为,看三个源码目录:src/N_m3u8DL-RE.Parser/(清单解析)、src/N_m3u8DL-RE/DownloadManager/(下载调度)、src/N_m3u8DL-RE/Crypto/(解密实现)。
现在复制一条测试流链接,点亮你的第一个本地 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),仅供参考