尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

N_m3u8DL-RE · 流媒体下载:加密下载与直播录制的完整实战指南

N_m3u8DL-RE · 流媒体下载:加密下载与直播录制的完整实战指南 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-REN_m3u8DL-RE 是一款跨平台的流媒体下载工具统一支持 MPDDASH、M3U8HLS、ISMMSS三种协议覆盖点播和直播两种场景。它帮你把一条流媒体链接直接变成本地可播放的视频文件——解析、选轨、解密、合并、混流全部由一条命令行完成不用再在浏览器、下载器和 ffmpeg 之间来回倒腾。一、先搞清楚这个项目能帮你解决什么拿到链接却下不下来用普通下载工具打开 m3u8/mpd 链接得到的只是一份播放列表文本不是视频。手动拆列表、逐个抓分片遇到加密流基本无从下手。本工具自动解析播放列表并发拉取分片并合并成完整文件。加密内容解密麻烦下下来的文件打开全是雪花提示缺少解密密钥。老办法是找第三方解密程序、手动查密钥再逐文件处理。你只需通过--key传入密钥程序自动调度解密流程。直播录制总中断直播录几小时就断流、丢片段得盯着屏幕手动重开。专属直播引擎会定时刷新直播列表、续传新分片可长时间无人值守运行。二、快速上手从零到跑通第一条命令平台安装方式依赖Windows从 Releases 下载预编译 exe加入 PATH旧版 Win10 终端可能不兼容建议在 Windows Terminal 或 cmder 中运行macOS下载预编译二进制或源码编译需安装 ffmpegUbuntu/Debian源码编译.NET 10 SDK ffmpegArchAUR 一键安装yay -Syu n-m3u8dl-re-bin源码编译只需两步# 克隆源码 git clone https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE cd N_m3u8DL-RE # 编译发布版需先安装 .NET 10 SDK dotnet build -c Release安装完成后用 TestStreams.md 里提供的公开测试流跑通第一条命令# 下载一个公开测试 DASH 流验证基本功能 N_m3u8DL-RE http://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd成功标志终端先列出解析出的视频/音频/字幕轨道然后是带实时速度的分片下载进度条结束后打印合并文件路径并在同目录生成一份解析信息的.json文件--write-meta-json默认开启。用播放器能打开该文件说明链路完全跑通。完整参数列表见 README.md。注意这个项目没有 JSON 配置文件所有设置都通过命令行参数完成另有极少数RE_前缀的环境变量用于细节控制见第五章。三、核心能力拆解3.1 流选择与轨道匹配——精准挑出你要的视频、音频和字幕快速体验# 自动选择所有类型的最佳轨道 N_m3u8DL-RE https://example.com/stream.m3u8 --auto-select深入用法# 按分辨率、语言、名称正则筛选轨道 N_m3u8DL-RE https://example.com/stream.mpd \ -sv res1080p:forbest \ # 选最佳 1080p 视频轨 -sa langzh|chi:forbest \ # 选最佳中文音轨兼容两种语言标签 -ss name中文:forall # 取所有名称含中文的字幕轨容易踩的坑❌-sv res720正则会部分匹配可能选中宽为 720 的横屏流 ✅-sv res1280*720写完整宽*高用*通配更稳❌-sa all把解说、多声道等全部音轨都拉下来 ✅-sa langen:forbest -da namecommentary选最佳英语轨并剔除解说轨为什么错-sv/-sa是正则筛选器for参数决定取哪一条best/best2/all写得越模糊拉回来的内容越多。原理一句话流里的每条轨道都带有分辨率、语言、编码器等元数据标签选择参数就是用正则去匹配这些标签选出你指定的那几条去下载。检查要点先用--skip-download跑一遍只解析不下载确认目标轨道存在查看终端已选择轨道列表核对分辨率与语言语法拿不准时执行N_m3u8DL-RE --morehelp select-video查看官方示例3.2 加密流解密——把 AES/CHACHA20 保护的内容变成能播的文件快速体验# 已知 KID 时直接传密钥KID 和 KEY 均为十六进制 N_m3u8DL-RE https://example.com/encrypted.m3u8 --key KID:KEY深入用法# 多密钥场景密钥文件 指定解密引擎 N_m3u8DL-RE https://example.com/stream.mpd \ --key-text-file keys.txt \ # 每行一个 KID:KEY 对程序按 KID 检索 --decryption-engine MP4DECRYPT \ # 可选 FFMPEG / MP4DECRYPT / SHAKA_PACKAGER --mp4-real-time-decryption # 边下边解 MP4 分片适合长直播容易踩的坑❌--key abc123明文随手写的短密钥 ✅--key 9eb4050de44b4802932e27d75083e266:166634c675823c235a4a9446fad52e4dKID:KEY 成对出现均为 32 位十六进制❌ 播放列表里没有声明密钥时只传--key然后报错 ✅ 用--custom-hls-method AES_128 --custom-hls-key KEY_HEX手动指定加密方式与密钥为什么错密钥必须与加密方式匹配且多个密钥时要保证 KID 与 KEY 正确对应解密引擎只是执行者给错密钥它无解。解密相关实现见 src/N_m3u8DL-RE/Crypto/。原理一句话下载器负责把密文分片拉回来真正的解密交给 mp4decrypt、ffmpeg 或 shaka-packager 这类外部程序本项目管的是密钥管理、引擎选择和分片调度。检查要点核对 KID 与 KEY 都是十六进制字符串且长度正确解密失败时用--del-after-done false保留临时分片检查文件内容默认引擎失败时切换--decryption-engine逐个尝试3.3 直播录制——长时间直播不断流、不漏片段快速体验# 录制直播并限制时长格式 HH:mm:ss录满 2 小时自动停止 N_m3u8DL-RE https://example.com/live.m3u8 --live-record-limit 2:00:00深入用法# 手动控制列表刷新间隔并开启实时管道混流 N_m3u8DL-RE https://example.com/live.mpd \ --live-record-limit 6:00:00 \ # 录满 6 小时停止 --live-wait-time 30 \ # 每 30 秒刷新一次直播列表 --live-pipe-mux # 通过管道 ffmpeg 实时混流为 TS容易踩的坑❌ 网络波动时开启--live-pipe-mux✅ 网络不稳时只录分片录完后再合并❌ 想把直播一次性下完却一直在等直播自然结束 ✅--live-perform-as-vod以点播方式下载直播流为什么错管道混流时数据读取由 ffmpeg 负责网络抖动容易丢直播数据而点播模式会把当前直播缓冲当作品点播内容处理不必等结束。直播录制逻辑位于 src/N_m3u8DL-RE/DownloadManager/。注意官方明确提示网络环境不够稳定时不要开启--live-pipe-mux。原理一句话程序按固定间隔反复请求直播播放列表只下载新出现的分片再按需实时或事后合并所以可以脱离人工值守长时间运行。检查要点录制中用ffprobe看输出文件时长是否在持续增长日志中确认没有大面积重连错误长时间录制前确认磁盘剩余空间分片默认会保留在本地3.4 网络调优——在限速、防盗链、弱网环境下保住速度和成功率快速体验# 提高并发线程数并限速-R 单位为 Mbps 或 Kbps N_m3u8DL-RE https://example.com/stream.m3u8 --thread-count 16 -R 50M深入用法# 伪装浏览器请求 走代理 加重试 N_m3u8DL-RE https://example.com/stream.m3u8 \ -H User-Agent: Mozilla/5.0 \ # 伪装 UA规避 403 -H Referer: https://example.com \ # 防盗链站点需要来源页 --custom-proxy http://127.0.0.1:7890 \# 自定义代理 --download-retry-count 5 # 单分片异常时重试 5 次容易踩的坑❌--thread-count 64并发拉满触发服务端限流反而更慢 ✅--thread-count 16CPU 核心数 2-4 倍够用即可❌ 站点要求 Cookie 时裸请求反复 403 ✅-H Cookie: sessionxxx -H User-Agent: ...补齐请求头为什么错每个分片独立下载、独立重试线程数决定并发度但服务端对并发有限额超出后会被限速甚至拒连。原理一句话分片之间天然互不依赖多线程各下各的某个分片失败只重试它自己不会拖累其他分片。检查要点观察终端实时速度是否稳定波动大就降低线程数403 时优先检查 UA、Referer、Cookie 是否齐全弱网环境调大--download-retry-count和--http-request-timeout3.5 混流与字幕——把分离的音视频装进一个文件快速体验# 下载完成后自动把分离的音视频混流为 mp4 N_m3u8DL-RE https://example.com/stream.mpd -M formatmp4深入用法# 指定 mkvmerge 混流为 mkv并引入一条外部中文轨 N_m3u8DL-RE https://example.com/stream.mpd \ -M formatmkv:muxermkvmerge \ # 容器格式 混流程序 --sub-format SRT \ # 字幕输出格式SRT/VTT --mux-import pathzh.srt:langchi:name中文 (简体) # 外部字幕合入文件容易踩的坑❌ 内容含 HEVC 或特殊字幕时混进 mp4部分设备打不开 ✅ 改用-M formatmkvmkv 容器几乎兼容所有编码❌ 混流后找不到外部音轨 ✅--mux-import时补上lang语言代码播放器才能正确识别为什么错mp4 容器对编码格式和字幕类型有兼容限制mkv 则基本来者不拒。原理一句话音视频先分开下载解密最后由 ffmpeg 或 mkvmerge 把已解好的数据装壳进新容器不重新编码所以快且无画质损失。检查要点ffprobe确认最终文件同时含视频轨和音轨字幕轨语言标签与内容一致混流失败时检查 ffmpeg 是否在 PATH 中或用--ffmpeg-binary-path指定全路径四、实战场景从需求到执行场景一备份多音轨多字幕的公开课场景你有一门 DASH 协议的网课含多语言音轨和字幕想保留最佳画质视频 中文音轨 全部中文字幕。# 选最佳 1080p 视频 中文音轨 所有中文字幕 N_m3u8DL-RE https://edu.example.com/course.mpd \ -sv res1080p:forbest \ -sa langzh|chi:forbest \ -ss name中文:forall \ --save-name AI基础课 \ --save-dir ./Courses参数为什么这么写res1080p画质与文件体积的平衡点更高码率对课程类内容收益不大langzh|chi语言标签写法不统一正则同时覆盖两种forall字幕不同版本的中文字幕都保留方便后续挑选验证ffprobe ./Courses/AI基础课.*确认视频轨分辨率为 1920x1080音轨语言为中文字幕轨存在。场景二8 小时会议直播录制场景一场 8 小时的学术会议直播需要全程录制、无人值守、事后能排查问题。# 直播录制 8 小时30 秒刷新一次列表 N_m3u8DL-RE https://conference.example.com/live.mpd \ --live-record-limit 8:00:00 \ --live-wait-time 30 \ --log-file-path ./conference.log \ --save-name AI_Conference参数为什么这么写--live-record-limit 8:00:00与会议时长对齐录满即停避免空录--live-wait-time 3030 秒刷新一次兼顾及时性和请求频率--log-file-path落盘日志中断后可回溯断流时间点验证结束后检查conference.log无大面积重连错误ffprobe显示文件时长接近 8 小时。场景三批量下载系列纪录片场景一个 12 集的系列编号规则统一需要全部入库并自动重命名。#!/bin/bash # 批量下载 12 集纪录片并混流为 mp4 BASE_URLhttps://docu.example.com/series for i in $(seq 1 12); do N_m3u8DL-RE ${BASE_URL}/ep${i}.m3u8 \ --save-name 自然奇观_EP$(printf %02d $i) \ -M formatmp4 \ --save-dir ./Documentaries \ --del-after-done true \ --log-level info done参数为什么这么写printf %02d两位数补零文件名排序即播放顺序-M formatmp4统一容器方便后续剪辑入库--log-level info批量任务日志精简只看关键节点验证ls ./Documentaries应出现 12 个输出目录逐个ffprobe抽查片头片尾是否完整。场景四只取长视频的某一段场景一段两小时的视频你只需要第 5 到第 20 分钟做素材剪辑。# 按时间范围只下载对应分片 N_m3u8DL-RE https://news.example.com/vod.m3u8 \ --custom-range 05:00-20:00 \ --save-name News_Clip参数为什么这么写--custom-range 05:00-20:00只拉取时间区间内的分片省流量省时间--save-name固定文件名便于素材库检索验证ffprobe显示时长约 15 分钟且首尾画面与源片 5 分钟、20 分钟处吻合。五、效率进阶与性能调优跨平台差异平台注意事项特殊配置Windows低版本系统自带终端可能不支持改用 cmder 或 Windows TerminalmacOSffmpeg 是硬依赖先安装 ffmpeg 再运行Ubuntu/Debian需要 .NET 10 SDKdotnet build -c Release出可执行文件Arch有社区维护的 AUR 包yay -Syu n-m3u8dl-re-bin性能参数对比配置方案效果资源占用适用场景默认线程数CPU 核心数均衡中日常使用--thread-count 16并发更高速度取决于带宽与服务端高宽带网络下的点播大文件-R 15M限速 少线程速度慢但稳定低公网共享带宽、后台任务--download-retry-count 5不提速但显著提升成功率低弱网、移动网络持久化配置本项目没有 JSON 配置文件常用做法是把高频参数固化成 shell 别名和环境变量# 写入 ~/.bashrc 或 ~/.zshrc 长期生效 alias dlN_m3u8DL-RE --thread-count 12 --log-level info # 常用参数打包 export RE_LIVE_PIPE_TMP_DIR/tmp/re_pipe # 非 Windows 下管道文件生成目录 export RE_LIVE_PIPE_OPTIONS # 自定义 live-pipe-mux 时的 ffmpeg 参数配套工具链ffmpeg混流、合并、解码都靠它调用必装mp4decryptCENC 解密的默认引擎由程序自动寻找MKVToolNixmkvmerge混流为 mkv 时的替代混流程序ffprobe验收工具一条命令核对轨道数、分辨率、时长yt-dlp / Streamlink从网页里提取出 m3u8/mpd 链接再交给本工具下载小贴士线程数不是越高越好。服务端通常对单 IP 并发有限额遇到加线程反而变慢时正确做法是降线程 调大--download-retry-count而不是继续加并发。六、常见问题速查Q下下来的文件打不开或画面花屏A大概率是加密流没给密钥。用--key KID:KEY传密钥多密钥用--key-text-file指向文件播放列表里没声明密钥时用--custom-hls-method--custom-hls-key手动指定加密方式和密钥。Q下载速度上不去怎么办A先加--thread-count16-32试并发仍慢说明是服务端限速改降线程并用-R限速稳住速度同时调大--download-retry-count。另外确认--use-system-proxy/--custom-proxy没有让流量绕远路。Q解密失败了密钥和引擎怎么选A默认引擎是 MP4DECRYPT适配大多数 CENC 内容失败就依次换--decryption-engine FFMPEG、SHAKA_PACKAGER。前提是密钥格式正确、加密方式匹配--custom-hls-method支持 AES_128、CHACHA20、SAMPLE_AES 等。Q任务中断后缺的分片怎么补A分片是独立下载的用--custom-range指定缺失的编号区间如10-或时间区间如05:00-20:00重新下载即可不用整片重下。Q临时文件占满磁盘了A临时分片默认放在系统临时目录可用--tmp-dir换到空间大的盘任务完成后默认删除--del-after-done true。要留现场排查问题时传--del-after-done false。Q混流成 mp4 后部分设备播不了Amp4 容器对编码和字幕类型有限制换-M formatmkv基本都能解决也检查一下内容是否用了 HEVC/AV1 这类设备兼容性较差的编码。七、术语速查术语通俗解释在本项目中的对应参数或命令HLS苹果家的流媒体协议播放列表是 .m3u8 文件直接输入 m3u8 链接--custom-hls-key补密钥DASH国际标准流媒体协议清单文件是 .mpd轨道组合更灵活直接输入 mpd 链接-sv/-sa选轨MSS微软 Smooth Streaming 协议入口是 .ism 地址直接输入 ism/Manifest 链接CENCMP4 系内容常用的加密方案解密需要 KID KEY--key KID:KEY、--decryption-engine分片Segment流被切成的一个小文件按片下载再合并--thread-count控制分片并发混流Remux把已下好的音视频换进新容器不重编码、无损且快-M formatmp4或formatmkv【免费下载链接】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),仅供参考
返回列表