N_m3u8DL-RE 实战:4 条命令跑通加密下载、直播录制与轨道精挑
【免费下载链接】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)三种协议,覆盖加密视频下载与直播录制两类核心需求。对已有 URL 的点播、直播内容,它负责拉取分片、解密、合并成完整文件,省去手工抓包与逐段下载的麻烦。
第一条下载命令:从安装到落盘
源码仓库克隆下来即可自行编译,也可以直接拿预编译版本:
git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE各平台安装方式一句话带过:Windows 下载预编译可执行文件,Arch Linux 用 AUR(yay -Syu n-m3u8dl-re-bin),macOS 走 Homebrew。装好后验证并下达第一条命令:
N_m3u8DL-RE --help # 查看全部参数说明 N_m3u8DL-RE "https://example.com/video.m3u8" --save-dir "./downloads"URL 是必填的位置参数;--save-dir指定保存目录,缺省为当前目录。看到分片进度滚动、最后输出合并完成的 mp4,最小闭环就算跑通了。
加密点播怎么配密钥
带 DRM 保护的流,分片本身是密文,需要自备解密密钥才能还原。密钥从浏览器开发者工具的 Network 面板或页面 JS 中提取,配合--key传入:
N_m3u8DL-RE "加密视频URL" \ --key "KID十六进制串:KEY十六进制串" \ --decryption-engine FFMPEG \ --save-name "解密后的视频"参数—作用—示例:--key支持KID:KEY(指定密钥 ID 对)或直接KEY(所有轨道共用同一密钥时用);--decryption-engine三选一:MP4DECRYPT(默认)、FFMPEG、SHAKA_PACKAGER。密钥必须是 16 字节的 HEX 或 Base64 串,格式不对会在启动阶段直接报错。解密引擎的算法实现集中在 src/N_m3u8DL-RE/Crypto/ 目录,包含 AES 与 ChaCha20 两套工具。
直播录制三参数
直播流没有结束标记,程序会按固定节奏轮询播放列表、持续追加分片,三个参数控制录制行为:
N_m3u8DL-RE "直播流URL" \ --live-real-time-merge \ --live-wait-time 30 \ --live-record-limit 02:00:00--live-real-time-merge边下载边合并,避免分片积压成几十个散文件;--live-wait-time是播放列表刷新间隔(秒),值越小延迟越低、请求越密;--live-record-limit限定录制时长,到点自动收尾,0 或省略表示手动 Ctrl+C 结束。注意:--live-pipe-mux让 ffmpeg 直接从管道读数据做实时混流,网络不稳时管道内数据容易丢,日常录制保持默认关闭即可。
轨道精挑、命名模板与部分下载
多码率流里视频、音频、字幕往往各有数条轨道,用三个短参数挑选:
N_m3u8DL-RE "视频URL" \ -sv best \ -sv 'res="3840*":codecs=hvc1:for=best' \ -sa 'lang=en:for=best' \ -ss all \ --save-pattern "<SaveName>_<Resolution>" --save-name "video" \ --custom-range 05:00-20:00-sv/-sa/-ss分别选视频、音频、字幕,best表示按带宽取最佳,也可用res、codecs、lang等键值组合过滤;--save-pattern是命名模板,<SaveName>_<Resolution>会展开成video_3840x2160.mp4这类文件名;--custom-range只下部分分片,-99表示取最后 99 段,10-表示从序号 10 之后取,05:00-20:00表示按时间截取。懒得多挑轨道时,--auto-select会让程序自动选最佳音画组合。
提速与网络调优
并发、重试、代理、临时目录相关参数集中在这一节:
N_m3u8DL-RE "视频URL" \ -mt --thread-count 8 \ --download-retry-count 5 --http-request-timeout 60 \ --custom-proxy "http://127.0.0.1:8888" \ --tmp-dir "./temp" --del-after-done -R 10M-mt开启多任务并行,--thread-count设置每任务下载线程(缺省等于 CPU 核数);--download-retry-count与--http-request-timeout分别管重试次数和单次请求超时(秒);代理二选一,--custom-proxy指定本地代理,或保持默认走--use-system-proxy;--tmp-dir改临时分片存放位置,--del-after-done结束后清掉临时文件;-R限速,如10M即 10Mbps。合并环节另有开关:--skip-merge只留分片不做合并,--binary-merge跳过 ffmpeg 直接二进制拼接,适合分片本就是完整 ts 的 HLS 流。
排错速查
现象:下载完成但无法播放。可能原因:密钥格式或长度不对(必须是 16 字节 HEX/Base64)。解决:核对--key的KID:KEY冒号分隔格式,KID 不匹配时改传裸KEY重试。
现象:分片请求频繁中断。可能原因:网络抖动或超时过短。解决:
N_m3u8DL-RE "视频URL" --download-retry-count 10 --http-request-timeout 120现象:URL 无法解析或轨道为空。可能原因:需要鉴权头、URL 参数被剥离,或 URL 本身不是 M3U8/MPD/ISM。解决:用-H "Cookie: xxx"补请求头,加--append-url-params保留 URL 上原有参数;仍失败则先curl拉一下 URL 确认返回的是播放列表文本。
排错时把--log-file-path ./run.log加上,完整运行日志落盘,定位比盯控制台快。
一条命令打包带走
适合经常处理多轨加密流、又懒得记参数的用户。把常用参数固化成一个命令,之后只换 URL 即可:
N_m3u8DL-RE "$URL" \ -mt --thread-count 8 \ --key "KID:KEY" --decryption-engine FFMPEG \ --save-pattern "<SaveName>_<Resolution>" \ --tmp-dir "./temp" --del-after-done \ --log-file-path "./run.log"批量任务用 for 循环包一层即可,直播长时录制则用 while 循环配合--live-record-limit定时收尾。工具本身参数都在--help里,配合--morehelp可看单选项详解。
【免费下载链接】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),仅供参考