FluxDown HLS/DASH 流媒体 — 选画质、AES-128 解密、自动合并
什么是 HLS / DASH
流媒体站点通常把一个视频切成几十上百个小片段(每秒 3–10 秒一段),用一个清单文件(.m3u8 = HLS,.mpd = DASH)来列出所有片段地址。播放器一边拉清单一边拉片段、边下边播。下载管理器要做的就是读懂这个清单、并行拉所有片段、再拼成一个完整文件。
FluxDown 支持两种格式,都是引擎内置实现。
从哪来
大部分场景下你不会手动粘贴 .m3u8 或 .mpd 地址——浏览器扩展(见 媒体嗅探)会自动嗅探当前页的视频流,一键送入 FluxDown。
HLS — 质量选择 + AES-128 解密
质量选择
HLS 主清单(master playlist)通常会为同一个视频提供多档比特率/分辨率(比如 1080p 60fps / 1080p 30fps / 720p / 480p)。FluxDown 在下载前弹出选择对话框,每个选项标注带宽(如 5.2 Mbps)和分辨率。如果你跳过了(比如后台下发的任务),FluxDown 默认选最高带宽那一档。
AES-128 解密
很多 HLS 片段用 AES-128-CBC 加密(RFC 8216 标准)。FluxDown 自动从清单引用的位置拉取解密密钥,缓存后对每个分片边拉边解密——你看不到解密过程,最终得到的是可直接播放的完整文件。
隐私细节:Cookie 只会透传给与清单同源的分片与密钥请求,不会跨源发送到别的 CDN host。
DASH — 音视频分离 + ffmpeg 合并
DASH 清单常见把音频和视频分成两个独立的 Representation——FluxDown 分别拉完后:
- 系统里装了
ffmpeg→ 自动做 stream copy(不重编码,几秒钟)合并成一个文件。 - 系统没装 ffmpeg → 音视频各留一个文件(如
video.mp4+video.audio.m4a),需要你自己用 ffmpeg 合并。
FluxDown 自带「受管组件」功能——在设置里一键让 FluxDown 自动下载 ffmpeg 和 yt-dlp(不污染 PATH),DASH 合并就自动了(见 受管组件 ffmpeg-yt-dlp)。
分片拉取的并发与顺序
分片并行拉(默认 8 并发,最高 16,由「设置 → 下载 → 默认线程」控制),但写盘时严格按清单顺序——保证最终文件和顺序下载结果一致。某个分片失败会重试 3 次(指数退避),3 次都失败整个任务标失败。
不支持的场景
- 直播流 — FluxDown 只下载清单当前列出的片段,不能跟随持续增长的直播流。
- DRM 加密(FairPlay/Widevine) — 完全不支持,这些需要浏览器内解密,引擎层面拿不到密钥。