如何下载带声音的 DASH 视频
如何下载带声音的 DASH 视频
DASH 视频下载完,画面正常、声音全无——这是 DASH 下载翻车率最高的一种。原因不复杂:DASH 把视频和音频放在两条独立的流里,你只抓到了视频那条。这篇文章教你两件事:看懂 MPD 里哪个是画面哪个是声音,以及用 FlowPick 把它们合并成一个带声音的 MP4。
为什么 DASH 下载后没有声音
MPEG-DASH 为了自适应切换画质,把视频轨和音频轨拆开传输。播放器同时请求两条流,播放时再合到一起。所以"下载 DASH"本质上是下载两条流再加一次合并,只下视频轨,自然没声音。
打开一个 MPD 文件,你会看到若干个 AdaptationSet,每个 set 里又是一堆 Representation:
<AdaptationSet contentType="video">
<Representation id="v1080" width="1920" height="1080">
<SegmentTemplate initialization="video/init.mp4" media="video/$Number$.m4s" />
</Representation>
<Representation id="v720" width="1280" height="720">
<SegmentTemplate initialization="video/720/init.mp4" media="video/720/$Number$.m4s" />
</Representation>
</AdaptationSet>
<AdaptationSet contentType="audio">
<Representation id="a128" bandwidth="128000">
<SegmentTemplate initialization="audio/init.mp4" media="audio/$Number$.m4s" />
</Representation>
</AdaptationSet>
contentType="video" 的是画面,contentType="audio" 的才是声音。像 B 站这类平台就把音视频拆得很彻底,如何下载 Bilibili 视频 里就是典型的 DASH 双流实战。
如果你还没接触过 MPD,建议先看 MPD 文件到底是什么?DASH 清单解析,那篇把清单结构讲得很清楚。想深入 SegmentTemplate 和 ContentProtection,翻 DASH 深度:MPD 结构解析。
用 FlowPick 下载 DASH 视频
第 1 步,打开视频页面播放几秒,确保 DASH 流真正加载了。 第 2 步,打开 FlowPick 扩展,在资源列表里找到 MPD/DASH 条目。 第 3 步,选择视频画质,确认音频轨道被勾上(别选 video-only)。 第 4 步,点下载,等音视频分片下载完并合并成 MP4。 第 5 步,用 VLC 等播放器打开,确认画面和声音都在。

画面正常但没声音,回到第 3 步——多半是选中了 video-only 的 representation,换成同时带音频轨的那一项重下。
合并是 FlowPick 在浏览器里用 WebAssembly 版 FFmpeg 完成的,不经过服务器。背后的实现逻辑见 FlowPick 是怎么在浏览器里合并几百个视频分片的。
如果你手里有公开的 MPD 地址,也可以直接用 DASH 在线下载工具,粘贴地址就行。不过流需要页面 Cookie、登录态或 Referer 校验时,扩展更稳——扩展在源页面上下文里跑,这些请求头自动带上。
多语言音轨怎么选
有些平台的 MPD 会同时提供多条音频轨(国语、粤语、原声等),它们的 Representation 各自独立:
<AdaptationSet contentType="audio">
<Representation id="a-zh" ...>...</Representation>
<Representation id="a-en" ...>...</Representation>
</AdaptationSet>
在 FlowPick 的音轨下拉里选你想要的语种。合并出来的 MP4 只包含你选的那条音轨,不会把所有语言都塞进去。
下载后仍然没有声音怎么办
按顺序查这几样:
- 确认没选 video-only 轨道。有些 MPD 把音频放在独立的
AdaptationSet里,预览能播放不代表合并出来有声音。 - 刷新原页面重新检测。MPD 地址常带有效期,过期后返回 404 或 403,重开页面拿新地址。
- 请求需要会话。清单或分片返回 403,通常是 Referer 或登录 Cookie 校验——扩展在源页面里运行,一般能直接过;在线工具没这个能力。
- 确认没有 DRM。Widevine、PlayReady、FairPlay 加密的内容,FlowPick 不支持也不破解,这类只能联系内容方拿授权。
这四条之外还有更细的坑,DASH 视频没有声音:原因与解决方法 里列了完整排查清单,按症状对号入座。如果根本不是 DASH 而是 M3U8 分片流,去 M3U8(HLS)下载失败排查。
小结
DASH 没声音,九成是下载时只拿了视频轨。记住两步:MPD 里 contentType="audio" 的才是声音;下载时确认音频轨道被勾上。剩下的合并交给 FlowPick,浏览器里原地完成,不占你服务器。
相关文章
- MPD 文件到底是什么?非开发者也能看懂的 DASH 清单解析 —— 从零认识 MPD,看得懂清单才选得对轨道
- DASH 深度:SegmentTemplate、ContentProtection 与 MPD 结构 —— 想搞懂分片 URL 是怎么生成的进阶读物
- FlowPick 是怎么在浏览器里合并几百个视频分片的 —— 合并背后的 WebAssembly FFmpeg 流水线
- 如何下载 Bilibili 视频 —— B 站就是典型的 DASH 音视频分离实战
- DASH 视频没有声音:原因与解决方法 —— 没声音症状的完整排查清单
推荐阅读
- 如何下载 M3U8/HLS 流媒体 —— DASH 的隔壁亲戚,另一套分片流体系
- FlowPick vs. yt-dlp —— 浏览器里点几下 vs 命令行敲半天
- 批量下载网页图片 —— 不只是视频,图片也能一键批量抓
- 流媒体下载到底合不合法? —— 动手之前先看看这条红线