tutorials

如何下载带声音的 DASH 视频

DASH 视频下载后没声音?学会看懂 MPD 里哪个是视频、哪个是音频,别选到 video-only 流,用 FlowPick 一键合并成带声音的 MP4。
FlowPick 团队
9 分钟阅读
# DASH # MPD # 视频下载 # 音频 # 教程

如何下载带声音的 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 只包含你选的那条音轨,不会把所有语言都塞进去。

下载后仍然没有声音怎么办

按顺序查这几样:

  1. 确认没选 video-only 轨道。有些 MPD 把音频放在独立的 AdaptationSet 里,预览能播放不代表合并出来有声音。
  2. 刷新原页面重新检测。MPD 地址常带有效期,过期后返回 404 或 403,重开页面拿新地址。
  3. 请求需要会话。清单或分片返回 403,通常是 Referer 或登录 Cookie 校验——扩展在源页面里运行,一般能直接过;在线工具没这个能力。
  4. 确认没有 DRM。Widevine、PlayReady、FairPlay 加密的内容,FlowPick 不支持也不破解,这类只能联系内容方拿授权。

这四条之外还有更细的坑,DASH 视频没有声音:原因与解决方法 里列了完整排查清单,按症状对号入座。如果根本不是 DASH 而是 M3U8 分片流,去 M3U8(HLS)下载失败排查

小结

DASH 没声音,九成是下载时只拿了视频轨。记住两步:MPD 里 contentType="audio" 的才是声音;下载时确认音频轨道被勾上。剩下的合并交给 FlowPick,浏览器里原地完成,不占你服务器。


相关文章

推荐阅读