N_m3u8DL-RE 流媒体下载:4 条命令搞定 m3u8 下载、加密解密与直播录制
【免费下载链接】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 是一个跨平台的流媒体下载工具,支持 DASH(.mpd)、HLS(.m3u8)、MSS(.ism)三种协议,覆盖点播和直播。本文用几个真实任务串起它的核心用法:拉一条测试流、给加密分片喂密钥、把直播落成文件、批量挑轨,最后附参数速查与排错表。
先跑通一条 m3u8 下载命令
未安装的话参考仓库 README.md 中的发行版获取方式(Arch 可直接yay -Syu n-m3u8dl-re-bin)。
下面这条命令会从 Akamai 的公开测试流下载一个 AES-128 加密的 m3u8(M3U8 播放列表(告诉播放器"按顺序拿哪些小文件"的文本文件)):
N_m3u8DL-RE "http://playertest.longtailvideo.com/adaptive/oceans_aes/oceans_aes.m3u8" \ --thread-count 12 \ # 12 个并发线程,默认是 CPU 核心数 --save-dir ./downloads # 输出目录,默认当前目录执行后它会先打印解析出的流列表(视频/音频/字幕轨道),没有额外选项时进入交互式选择框,用方向键勾选后开始下载,完成后自动把分片合并成单个文件。想要跳过交互、直接选最佳轨道,可加--auto-select。
带着登录态抓加密分片
有些流不加密,有些则带着 DRM 之外的普通加密(AES-128 / CENC 等),此时程序需要你提供解密密钥。密钥可以从浏览器抓包或站点接口里拿到,格式为KID:KEY。
N_m3u8DL-RE "视频URL" \ -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" \ -H "Referer: https://原始站点.com" \ # 防盗链通常校验这两个头 -H "Cookie: session=xxx" \ # 登录态 --key "9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4d" \ --decryption-engine MP4DECRYPT--key可以重复出现来覆盖多个 KID;如果密钥较多,写成每行一个KID:KEY的文本文件,用--key-text-file my_keys.txt传入。--decryption-engine决定用哪个外部程序做解密:默认MP4DECRYPT(mp4decrypt,兼容性最好),也可换成FFMPEG或SHAKA_PACKAGER。注意:DASH 加密流走 mp4decrypt 前需要本机装有该工具;若站点把 KID 藏在 MPD 里,程序会尝试自动提取,失败时再手动指定。
如果密钥相同但站点没给 KID,直接--key KEY一行搞定。
把正在播的直播落成文件
直播流没有"总时长",程序会自动进入录制模式并提示。要让它稳定地一直录到你想停为止,需要控制刷新间隔、限制时长,并决定是逐片落盘还是实时合并:
N_m3u8DL-RE "直播URL" \ --live-wait-time 30 \ # 列表每 30 秒刷新一次 --live-record-limit "1:30:00" \ # 录满 1.5 小时自动停止 --live-real-time-merge \ # 边录边合并,磁盘占用低 --save-name "直播录制"--live-wait-time别设太小,20~30 秒是兼顾延迟和请求量的常见取值;--live-record-limit不传就会一直录,适合配合--task-start-at 20260918200000这类定时启动参数。想要边录边混进 TS 容器,加--live-pipe-mux(会自动开启实时合并),它通过管道调 ffmpeg,网络不稳时容易丢数据,弱网环境建议不开。录满后若提示分片数量校验失败,先检查是否中途断流,再考虑--check-segments-count的取舍。
批量挑轨:一整季视频只留 4K + 中文字幕
批量任务里最常用的是正则选轨,避免交互打断脚本:
for url in "${URLS[@]}"; do N_m3u8DL-RE "$url" \ -sv res="3840*":for=best \ # 正则匹配 4K 视频,取最佳一条 -sa lang="zh|en":for=best \ # 中英文音轨各取最佳 -ss name="中文":for=all \ # 所有含"中文"的字幕 -mt \ # 音视频字幕并发下载 -M format=mp4 \ # 完成后混流为 mp4 --save-pattern "<SaveName>_<Resolution>" done-sv/-sa/-ss用正则匹配轨道属性,for=best取最优一条、for=all全取、for=best2取前两条;-mt让多条轨道并行下载而不是逐条排队。--save-pattern用<Resolution>等变量区分同名文件,批量跑时防止覆盖。只想要字幕不想要媒体,把上面换成--sub-only --sub-format SRT即可,输出为独立 SRT 文件。
常用参数速查
| 参数 | 作用 | 示例值 |
|---|---|---|
--save-dir | 输出目录 | ./downloads |
--save-name | 保存文件名 | episode-01 |
--tmp-dir | 临时分片目录 | ./temp |
--thread-count | 下载线程数,默认 CPU 核心数 | 12 |
-H, --header | 追加请求头,可多次 | -H "Cookie: xxx" |
--key | 解密密钥KID:KEY,可多次 | 9eb4…:1666… |
--key-text-file | 从文件批量读密钥 | keys.txt |
--decryption-engine | 解密外部程序 | MP4DECRYPT |
-sv/-sa/-ss | 正则选视频/音频/字幕 | res="3840*":for=best |
-mt | 多轨道并发下载 | 布尔开关 |
-M | 完成后混流 | format=mp4 |
--auto-select | 自动选最佳轨道,跳过交互 | 布尔开关 |
--custom-range | 只下载部分分片 | 05:00-20:00 |
-R, --max-speed | 限速 | 15M |
--live-wait-time | 直播列表刷新间隔(秒) | 30 |
组合建议:-H+--key常一起出现;-sv搭配-M format=mp4;--live-real-time-merge搭配--live-record-limit。
排错速查
现象:请求全部返回 403 / 播放列表为空。常见原因:站点校验 Referer、Cookie 或 User-Agent,缺头直接被拒。 修复:
N_m3u8DL-RE "URL" -H "Referer: https://原始站点.com" -H "Cookie: session=xxx"现象:启动即报 ffmpeg 找不到。常见原因:程序启动前必须能定位到 ffmpeg 可执行文件,不在 PATH 里就会直接失败。 修复:
N_m3u8DL-RE "URL" --ffmpeg-binary-path /usr/local/bin/ffmpeg现象:下载完成但解密失败或文件无法播放。常见原因:KID 与 KEY 不匹配,或加密方式未正确识别(CENC 与 AES-128 走不同路径)。 修复:
N_m3u8DL-RE "URL" --key "KID:KEY" --decryption-engine FFMPEG # 仍失败时尝试 --custom-hls-method CENC 显式指定加密方式现象:直播录制中途卡住、分片数校验失败。常见原因:断流后未重新拿到新分片,或录制时长跨了列表滚出窗口。 修复:
N_m3u8DL-RE "URL" --live-wait-time 30 --download-retry-count 5用环境变量固化录制参数
每次敲同样的参数容易漏,把低频变动的项放进 shell 环境即可,Config/EnvConfigKey.cs 里列了全部支持项:
# ~/.bashrc 或 ~/.zshrc export RE_LIVE_PIPE_OPTIONS="-c:v copy -c:a aac -b:a 192k" # 定制管道混流的 ffmpeg 参数 export RE_LIVE_PIPE_TMP_DIR=/var/tmp/re_pipe # 非 Windows 下管道文件目录 export RE_KEEP_IMAGE_SEGMENTS=1 # 图形字幕调试时保留 m4s 分片live-pipe-mux场景下,RE_LIVE_PIPE_OPTIONS会原样拼进 ffmpeg 命令行,改这里就不用每次在命令里写混流参数。
到这里,下载、解密、录制三条主线的操作都已覆盖。想更进一步,可以去看 TestStreams.md 里那批带注释的公开测试流,逐个验证不同加密方式的--key组合;录制党则可以研究--task-start-at+ cron 做整点定时录制。
【免费下载链接】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),仅供参考