FluxDown DASH 下载音视频分成两个文件 — 装 ffmpeg 自动合并
现象
用浏览器扩展嗅探到 DASH .mpd 清单后送入 FluxDown,下载完成时目录里有两个文件:
video.mp4
video.audio.m4a
而不是一个合并好的完整视频文件。
原因
DASH 流媒体的 MPD 清单里通常把音频和视频分成不同的 Representation——两个独立的分片流。FluxDown 引擎会分别下载它们,然后在最后一步用 ffmpeg 做 stream copy(不重编码,秒级完成)合并成一个文件。
如果系统里找不到 ffmpeg 二进制,合并这一步就跳过了——音视频各留一个文件。
解决办法
方案一:装 FluxDown 受管组件(推荐)
「设置 → 扩展 → 受管组件 → 安装 ffmpeg」——FluxDown 自动下载官方 ffmpeg 到自己管理的目录、校验哈希、配置好 jail 化调用。装好后:
- 之后新的 DASH 下载会自动合并。
- 不污染系统 PATH。
- 不影响你系统里可能已有的其他 ffmpeg 版本。
方案二:手动装系统 ffmpeg
| 系统 | 安装方式 |
|---|---|
| Windows | 下载 ffmpeg-release-essentials.zip → 解压 → 把 bin/ 目录加到系统 PATH |
| macOS | brew install ffmpeg |
| Linux (deb) | sudo apt install ffmpeg |
| Linux (Arch) | sudo pacman -S ffmpeg |
| Docker Server | 镜像里自带了 ffmpeg(FluxDown Server 依赖 ffmpeg),应该不会遇到这个问题 |
FluxDown 引擎会在启动时自动发现系统 PATH 里的 ffmpeg。
方案三:手动合并已下载的文件
ffmpeg -i video.mp4 -i video.audio.m4a -c copy output.mp4
-c copy 表示 stream copy 不重编码——几秒钟完成,音视频质量零损失。
合并后文件大小变化
stream copy 只是把两个流的容器拼在一起,不重编码。输出文件大小 = 原来两个文件大小之和,几乎没有额外开销。
为什么 HLS 不会遇到这个问题
HLS 流媒体的每个 m3u8 分片已经是音视频合成好的(除非 HLS master playlist 明确分了音视频流),所以 HLS 下载后天然就是一个文件。DASH 明确区分音视频轨是它的设计特点。
受管组件 vs 系统 ffmpeg
| 维度 | 受管组件 ffmpeg | 系统 ffmpeg |
|---|---|---|
| 安装 | FluxDown 里一键装 | 手动命令行 |
| 版本 | FluxDown 锁死一个测试过的版本 | 系统包管理器决定 |
| 路径 | FluxDown 自己目录里 | 系统 PATH 里 |
| 污染 PATH | 不 | 是 |
| Docker/NAS 上 | 可能需要手动装 | FluxDown Server 镜像自带 |