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,瀏覽器裡原地完成,不占你的伺服器。


相關文章

推薦閱讀