音声付きでDASH動画をダウンロードする方法
音声付きでDASH動画をダウンロードする方法
DASH動画をダウンロードしたら、画面は映るのに音声がまったくない——DASHで最もよくある失敗のひとつです。理由は簡単で、DASHは映像と音声を別々のストリームで配信しており、あなたは映像のほうだけを取ってしまった、ということ。この記事で覚えることは2つ。MPDを読んでどれが映像でどれが音声かを見分けること、そしてFlowPickでそれらを音声付きのMP4に結合することです。
DASHのダウンロードに音声がない理由
MPEG-DASHは、プレイヤーが画質を個別に切り替えられるよう、映像トラックと音声トラックを分けて配信します。プレイヤーは両方のストリームを同時に取得し、再生時に合成します。つまり「DASHをダウンロードする」とは実質2本のストリームを取得して1つに結合すること。映像トラックだけを取れば、当然音声はありません。
MPDファイルを開くと、いくつかのAdaptationSet要素があり、それぞれに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"が音声です。Bilibiliのようなプラットフォームはこの分離が徹底しており、Bilibili動画のダウンロード方法 は典型的なDASH二重ストリームの実践例です。
MPDが初めてなら、まず DASHストリーミングとは?非開発者向けMPDファイル解析 を読むと、マニフェストの構造がよく分かります。SegmentTemplateやContentProtectionの詳細は DASH ディープ:MPD構造 へ。
FlowPickでダウンロードする手順
ステップ1、動画ページを開いて数秒再生し、DASHストリームが実際に読み込まれるのを待ちます。 ステップ2、FlowPick拡張機能を開き、リソースリストからMPD/DASHの項目を見つけます。 ステップ3、画質を選び、音声トラックが選択されていることを確認します(video-onlyを選ばないこと)。 ステップ4、ダウンロードを開始し、セグメントの取得とMP4への結合が終わるのを待ちます。 ステップ5、VLCなどのプレイヤーでMP4を開き、映像と音声の両方を確認します。

映像は映るのに音声がない場合はステップ3に戻ってください——ほぼ確実にvideo-onlyのrepresentationを選んでいます。音声トラックを含む項目に切り替えて再ダウンロードしましょう。
結合はFlowPickがブラウザ内でWebAssembly版のFFmpegを使って行います。サーバーは一切経由しません。その実装ロジックは FlowPickがブラウザ内で数百の動画セグメントをMP4に結合する仕組み に詳しくあります。
公開されたMPD URLがあるなら DASHオンラインダウンローダー に貼り付けるだけでもOKです。ただし、ストリームがページの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 URLは有効期限付きのことが多く、期限切れだと404や403を返します。ページを開き直して新しいURLを取りましょう。
- リクエストにセッションが必要。マニフェストやセグメントが403を返すのは、RefererやログインCookieのチェックが原因——拡張機能は元ページ内で動作するので通常は通りますが、オンラインツールでは無理です。
- DRMがないか確認。Widevine・PlayReady・FairPlayで暗号化されたコンテンツはFlowPickでは対応・解析しません。こうした場合はコンテンツ提供元に連絡して許可を得てください。
この4つ以外にも細かい落とし穴があります。DASH動画に音声がない場合の対処法 に完全なチェックリストが載っているので、症状に合わせて確認してください。DASHではなくM3U8のセグメントストリームなら M3U8ダウンロードに失敗する場合の対処法 へ。
まとめ
DASHで音声が出ないのは、九割方「映像トラックだけ取得した」のが原因です。覚えることは2つ。MPDではcontentType="audio"が音声、ダウンロード時は音声トラックが選択されていることを確認する。結合はFlowPick任せで、ブラウザ内で完結します。サーバー不要です。
関連記事
- DASHストリーミングとは?非開発者向けMPDファイル解析 —— MPDをゼロから理解。マニフェストが読めなければトラックも選べません
- DASH ディープ:SegmentTemplate、ContentProtection、視点切り替え MPD 構造 —— セグメントURLがどう生成されるかを知りたい人向けの上級編
- FlowPickがブラウザ内で数百の動画セグメントをMP4に結合する仕組み —— 結合の裏にあるWebAssembly FFmpegパイプライン
- Bilibili動画をローカルにダウンロードする方法 —— BilibiliはDASHの映像・音声分離の典型例
- DASH動画に音声がない場合の対処法 —— 無音症状の完全チェックリスト
おすすめの記事
- M3U8/HLSストリーミングのダウンロード:完全初心者ガイド —— DASHの隣人、もうひとつのセグメントストリーム体系
- FlowPick vs. yt-dlp —— ブラウザで数クリック vs ターミナルでタイプ
- Webページから画像を一括ダウンロードする方法 —— 動画だけでなく画像も一括取得できます
- ストリーミングのダウンロードは合法か? —— 着手する前にまずこの線引きを