流媒体下载实操:跑通 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
N_m3u8DL-RE 是一款面向 MPD/M3U8/ISM(DASH/HLS/MSS)的跨平台流媒体下载工具,点播下载和直播录制都在它的覆盖范围内。这篇文章不按参数清单走,而是带你过一遍真实使用中最常碰到的几个场景:第一次下载、挑轨道、裁时间段、录直播,卡住时去哪查也一并放在最后。
先跑通最短的一条命令 🚀
解压即用(Windows 从 Release 页拿构建,Arch 系走 AUR 装),然后拿 TestStreams.md 里第一条多音轨多字幕的测试流练手:
N_m3u8DL-RE "https://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd" --save-name demo这条命令做的事:解析流、下载选中的轨道、合并成成品 demo,落到当前目录。它默认还会在临时目录(--tmp-dir可改,默认当前目录下)写一份 meta.json,是全部轨道信息的快照,排查问题和写脚本都用得上,不想要就--write-meta-json false。
跑之前记住两件事:合并分片、混流音视频都依赖ffmpeg,装在非标准位置时用--ffmpeg-binary-path <全路径>指一下,也可以先跑N_m3u8DL-RE doctor自检一遍环境;不指定轨道时会弹出交互式选轨界面,用键盘勾选、回车开始,第一次上手走这条路最直观。
- 换输出目录:
--save-dir <目录> - 换界面语言:
--ui-language zh-CN - 确认版本:
--version,报 bug 前先确认是不是最新构建
最佳视频 + 最佳音频 + 全部字幕,一条命令选好
跑脚本、批量下载时交互界面碍事,用-sv/-sa/-ss按正则挑轨道:
N_m3u8DL-RE "<流地址>" -sv best -sa best -ss all -mt-sv best取最佳视频,-sa best取最佳音频,-ss all拿全部字幕,-mt让三路并发下载,完成得更快。嫌写三个过滤器麻烦,--auto-select一把梭:每种类型自动挑最佳。
- 只下 4K HEVC:
-sv res="3840*":codecs=hvc1:for=best - 只要英语音轨:
-sa lang=en:for=best,lang 里可以写正则 - 想丢掉某条轨道:换
-dv/-da/-ds,写法相同,语义变成"丢弃" - 只想看轨道列表不动手:
--skip-download - 字幕默认输出 SRT,要 VTT 加
--sub-format VTT;只下字幕用--sub-only
只要中间一段,别下全片
点播内容不必整段下,--custom-range按时间切:
N_m3u8DL-RE "<流地址>" --custom-range 05:00-20:00这条只下载第 5 分钟到第 20 分钟的内容,按分片起始时间筛选,跨边界的分片会整个保留,不做精细裁切。
时间两头都可以省略:-00:26只要前 26 秒,00:26-跳过前 26 秒下剩下的。也可以按分片序号写:0-10是第 0 到 10 号分片,10-从 10 号往后,-99取前 100 个。直播流不支持这个参数,录制时长由下一节的--live-record-limit管。
录直播并到点自动停 📺
程序识别到直播流会自动进录制模式,加上时长上限和实时合并:
N_m3u8DL-RE "<直播地址>" --live-real-time-merge --live-record-limit 01:30:00录制过程中文件就在持续合并更新,到 1 小时 30 分钟自动停,直播结束不用干等合并,忘了 Ctrl+C 也不会把磁盘吃满。
- 不想一直录、想把直播当点播一次拉下来:
--live-perform-as-vod - 边录边出一个能播的 TS:
--live-pipe-mux,走管道加 ffmpeg 实时混流;项目文档特意提醒网络不稳时别开,管道数据容易丢 - 从某个历史时间点开始录:
--live-catchup "01:00:00"从一小时前开始,也可以写具体日期时间,前提是清单里有可靠的时间信息 - 手里是 IPTV 频道列表:直接把 m3u 文件当输入,
-sv name=^Channel A$:for=best按频道名筛选,for=all可以并行录多个匹配频道
下完自动混成一个 MP4
不想让音视频留成分离文件的话,命令末尾挂上-M:
N_m3u8DL-RE "<流地址>" -sv best -sa best -M format=mp4下载全部完成后,它把分离的音视频自动混进一个 MP4 容器。-M后面是冒号分隔的键值对,format=mp4或format=mkv指定容器,轨道选择部分见上节。
muxer=mkvmerge换混流程序(默认 ffmpeg),配bin_path=<路径>指定程序位置keep=true混流完保留原始分离文件- 文件已经下好、只想混一下,工具命令直接办:
N_m3u8DL-RE mux -i <视频文件> -i <音频文件> -o output.mp4-i也可以直接传录制任务目录,未合并的分片会自动合并各轨道再混流,原分片保留。
卡住了怎么办
终端乱码、花屏→ 老版本 Windows 终端对 ANSI 支持不好。先--no-ansi-color关颜色试试,还不行就换 cmder 这类终端,程序本身没问题。
打开链接就 401/403→ 站点要鉴权:-H "Cookie: <值>"或-H "User-Agent: <值>"补请求头;浏览器导出的 Cookie 文件用--cookies <文件>,它会按域名和路径自动匹配。分片地址还需要带原链接参数时,加--append-url-params。
下载慢、分片老中断→ 默认 10 个线程对某些线路偏激进,--thread-count调小,--download-retry-count调大(默认每分片重试 7 次),或者--custom-proxy http://127.0.0.1:8888换个线路。
文件下完放不了、提示加密→ 内容带加密:--key <KID>:<KEY>传密钥,所有分片同 KEY 时直接--key <KEY>,密钥多就放文件里走--key-text-file <文件>。解密仍报错就--decryption-engine在 FFMPEG、MP4DECRYPT、SHAKA_PACKAGER 之间换。
说不清到底哪一步挂了→--log-file-path <路径>把日志落盘,--log-level DEBUG把详细度拉满;再看下 src/N_m3u8DL-RE/DownloadManager/ 里的点播和直播主流程、StreamExtractor.cs 的解析入口,对照着能快速定位。
输出文件名撞车→--save-pattern加变量区分,比如--save-pattern "<SaveName>_<Resolution>"会输出成 demo_1920x1080.mp4 这种名字。
收束
从 MPD 到 M3U8,N_m3u8DL-RE 把解析、下载、解密、混流都收在一条命令里。从 TestStreams.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),仅供参考