N_m3u8DL-RE 完整上手:一条命令下载 MPD/m3u8/ISM 流媒体并合并成片
【免费下载链接】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(DASH)、m3u8(HLS)、ISM(MSS)三种清单解析出来,多线程拉分片、按需解密,最后合并成一个能直接播放的文件,点播和直播都支持。下面带你从安装走到出片:装好程序,跑通第一条下载命令,再练 5 个高频命令,最后把常见报错一次修完。跑完这页,你手里会有一个能直接拖进播放器的完整视频。
能不能用,三秒判断
这一节只干一件事:帮你判断手里的地址能不能交给 N_m3u8DL-RE 处理。
| 维度 | 支持情况 |
|---|---|
| 协议支持 | DASH(MPD)、HLS(m3u8)、MSS(ISM) |
| 内容类型 | 点播 + 直播(DASH/HLS 直播录制) |
| 加密能力 | AES-128、ChaCha20、CENC 等;可调用 mp4decrypt、ffmpeg、shaka-packager 解密 |
| 轨道选择 | 按分辨率、编码、语言、声道等正则条件筛视频、音频、字幕轨 |
| 运行平台 | Windows、Linux、macOS |
| 许可证 | MIT,开源免费 |
全对上了往下看;差一项,现在关掉页面也不亏。
装完到第一条命令跑通
这一节的目标:从安装到出片,一气呵成,中间不绕路。
Windows:从项目 Releases 页下载对应平台的压缩包,解压后直接运行里面的N_m3u8DL-RE.exe,不用装任何依赖。注意老版本 Windows 自带终端可能跑不动它(无响应或乱码),换 cmder 运行同一条命令即可。
Arch Linux 及衍生版:AUR 有现成包,一条命令装好。
源码构建:需要 .NET SDK,目标框架是 net10.0。
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE/src && dotnet build三种方式任选其一。装完先做一件事,确认程序真能跑:
N_m3u8DL-RE --version N_m3u8DL-RE --help版本号正常打印就说明装好了;--help会把全部参数打出来,后面学参数时随时翻这份字典。
别急着找自己的流,先用仓库自带的公开测试流。TestStreams.md 里列了 20 多条,这条是无加密的 1080p 测试流,带多音轨多字幕,适合当第一枪:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" --save-name "demo"执行后终端会依次出现三件事:
- 解析结果:列出这个流里有哪些视频轨、音轨、字幕轨
- 多线程拉分片,进度条走完
- 自动合并,任务结束
--save-name "demo"指定输出文件名,--save-dir改输出目录,默认是当前目录。成功后目录里会出现 demo 开头的完整视频,外加一份解析信息的 json 文件(--write-meta-json默认开启)。到这一步,解析、下载、合并的完整链路已经打通。
🎬 五个实战命令,由浅入深
5 条命令按难度递进排列,每条都能直接复制执行,涉及的参数逐个用白话讲一遍。
只取字幕,不拉视频
什么时候你会敲这条:只要字幕文件给本地片子挂字幕,视频和音频一分带宽都不想花。
N_m3u8DL-RE "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8" --sub-only --sub-format SRT--sub-only:只挑字幕轨,其余轨道全部忽略--sub-format SRT:字幕输出 SRT,也可以写 VTT;这条清单是 Apple 的高级 HLS 测试示例,自带 VTT 字幕- 字幕时间轴修正默认开着(
--auto-subtitle-fix默认 true),出来的字幕基本能直接用
跑完到输出目录找.srt文件,用字幕编辑器打开抽查几条时间轴,再丢进播放器看是否同步。
正则挑出指定清晰度和音轨
什么时候你会敲这条:多码率流里只想下自己那一条轨道,其余码率一分带宽都不花。
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用正则筛视频轨:res="1920*"匹配 1920 开头的分辨率,也就是 1920x1080 那档for=best:符合条件的只留最匹配的一条(不写时默认也是 best)-sa同样按正则筛音频轨,lang=en只挑英语音轨- 想要 4K HEVC 就写
-sv 'res="3840*":codecs=hvc1:for=best',这是官方帮助里的现成例子
跑完看解析输出:选中的视频轨分辨率应为 1920x1080;打开输出文件确认音轨只剩你要的那一条。
给直播录制设时长上限
什么时候你会敲这条:录直播但不想守着,录满固定时长自动停。
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 小时--save-name "live":指定输出文件名- 想边录边拼出可播放的文件,再加
--live-real-time-merge;另有--live-pipe-mux可实时混流进 TS,但 README 明确提示网络不稳时别开,管道容易丢数据
跑完程序录满 2 小时自行退出,检查产出文件时长是否约等于 2 小时。
带密钥解密加密流
什么时候你会敲这条:清单标着加密、密钥在手里,想存成正常能播的视频。
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd" --key "9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4d"--key的格式是KID:KEY,冒号前是密钥 ID,冒号后是密钥本体,这条测试流的密钥就写在 TestStreams.md 同一行,直接复制- 多组密钥按顺序传多个
--key;KEY 相同时也可以只传 KEY - 解密默认调用 mp4decrypt,系统没装的话用
--decryption-engine换引擎,下一节细讲
跑完用播放器打开文件,音画都正常,说明解密和合并都成了。
只下载视频的指定时间段
什么时候你会敲这条:两小时的片子只要中间 15 分钟,省流量也省时间。
N_m3u8DL-RE "视频地址" --custom-range 05:00-20:00--custom-range只下载范围内的分片,支持四种写法:
05:00-20:00:时间段(MM:SS 或 HH:MM:SS)0-10:分片序号,共 11 个-99:前 100 个分片10-:从第 10 个开始到结尾
时间范围按分片起始时间筛选,保留完整分片、不做精确裁切。拿不准写法先跑N_m3u8DL-RE --morehelp custom-range看官方说明,每个参数都能这样查详情。跑完检查文件时长,应约为 15 分钟而不是完整时长。
影响成片结果的三个底层开关
这三处不动也能正常下载,但成片速度、兼容性、轨道数量最终都由它们说了算。
选轨策略:for=best / best2 / all
默认每种语言只留最匹配的一条轨(for=best)。想多留就写for=best2留两条,for=all全留。筛选条件都是正则:res匹配分辨率、codecs匹配编码、lang匹配语言、channel匹配声道数,|表示"或",比如lang="ja|en"匹配日语或英语音轨。拿不准时别动它,加--auto-select让程序自动挑最佳。
解密引擎:--decryption-engine 三选一
默认MP4DECRYPT速度最快,FFMPEG兼容性好,SHAKA_PACKAGER功能最全,三者都靠调用外部工具完成解密。工具不在 PATH 里时,用--decryption-binary-path或--ffmpeg-binary-path指到全路径即可;解密失败或成片打不开,先换FFMPEG引擎重试一次。
合并混流:ffmpeg 合并还是二进制拼接
下载完默认用 ffmpeg 合并成完整文件。--binary-merge是纯二进制字节拼接,不依赖 ffmpeg,适合 fMP4/CMAF 分片;--skip-merge完全不合并、只留分片;音视频分离在两个文件里时,用-M format=mp4或-M format=mkv:muxer=mkvmerge混流进指定容器。
🛠️ 卡住了,对照着修
卡住先别重跑,对照下面四种高频故障对号入座,每种只给最可能的那条原因。
你看到的:分片反复下载失败,任务卡住大概率是:网络不稳,或默认 100 秒的 HTTP 请求超时对慢速分片太短这样修:重试次数和超时都放宽再跑(--download-retry-count默认 7,--http-request-timeout默认 100 秒)
N_m3u8DL-RE "视频地址" --download-retry-count 5 --http-request-timeout 300你看到的:解密失败,或文件下载完打不开大概率是:密钥只填了 KEY 没带 KID,按错密钥解密;或默认引擎跟内容不兼容这样修:把--key改成完整的KID:KEY,或换 FFMPEG 引擎重试
N_m3u8DL-RE "视频地址" --key "你的KID:你的KEY" --decryption-engine FFMPEG你看到的:合并阶段提示找不到 ffmpeg大概率是:ffmpeg 没装,或不在 PATH 里这样修:用--ffmpeg-binary-path指到全路径(README 示例写法是C:\Tools\ffmpeg.exe);不想装 ffmpeg 就临时用--binary-merge或--skip-merge绕开合并
N_m3u8DL-RE "视频地址" --ffmpeg-binary-path "C:\Tools\ffmpeg.exe"你看到的:老版本 Windows 终端里程序无响应或乱码大概率是:旧系统自带终端不支持本程序,README 有同样提示这样修:换 cmder 运行同一条命令
📦 批量跑 & 最后几条底线
单条命令跑通之后,批量下载就是给 URL 列表套一个循环。
把下面这段存成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--save-dir ./videos:产出统一落到 ./videos--auto-select:每种类型自动选最佳轨道,不用手动挑--thread-count 8:8 线程并发下载,默认是 10
换地址只改URLS列表这一处,整条流水线不用动。
最后几条收尾提醒:
- 装完先跑
N_m3u8DL-RE --version确认版本号,遇到问题也先查是不是旧版,很多坑新版已经修了 - 轨道挑不准就先加
--auto-select跑通,再学--morehelp select-video这类精细筛选 - 网络不稳时把
--thread-count调小、--http-request-timeout调大,比反复重跑有效 - 临时分片默认在任务结束后自动清理(
--del-after-done默认 true),想留分片做备份就加--skip-merge - 只下载自己拥有合法权限访问的内容,这是 README 写明的使用底线
现在打开终端,把第一条命令跑起来,你的第一个 N_m3u8DL-RE 下载任务就开始了。
【免费下载链接】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),仅供参考