動画の直リンクからMP4をダウンロードする方法
動画の直リンクからMP4をダウンロードする方法
動画を見ていて、右クリックしても「名前を付けて保存」が出ない。アドレスバーにも .mp4 がない。そんな時、原因はほぼ二択です。M3U8/MPD みたいな分割配信か、直リンクだけど隠されているか。この記事は後者だけを扱います。隠された直リンクをどうやって掘り出すか、本当に落とせるかどうかを見極める方法、そして落とせない時の原因を詰めます。
先に整理:直リンクって何?
直リンクとは「1つの URL が 1 つのファイルを指している」ダウンロードです。URL を手に入れてダウンローダーに放り込めば、1 リクエストで MP4・WebM・MOV・MKV 全体が降ってきます。HLS/DASH みたいにプレイリストを組み立てて、セグメントを 1 個ずつ取ってくる必要はありません。
| 直リンク | HLS / DASH 配信 | |
|---|---|---|
| URL の指す先 | 単一ファイル | マニフェスト + セグメント |
| ダウンロード方式 | 1 リクエスト | マニフェスト解析 → 分割ダウンロード → 結合 |
| 失敗時の症状 | 403 / 404 / 空ファイル | 映像が乱れる・音が出ない・結合失敗 |
ここから先は全部、直リンクの話です。手に入れたのが実は .m3u8 や .mpd の URL なら、この記事で粘らずに、M3U8/HLS ストリームをダウンロードする方法:完全入門ガイド か 音声付き DASH 動画をダウンロードする方法 へ。方向が違えば、どんな手法も無駄になります。
本当に直リンクかどうか確かめる
.mp4 という拡張子だけでは足りません。多くのサイトは CDN の URL の後ろに署名付きパラメータを大量にくっつけ、拡張子を隠すこともあります。判断基準は 1 つだけ。レスポンスの Content-Type が video/* かどうかです。
方法1:開発者ツールの Network で見る
動画ページを開き、F12 で開発者ツールを開いて Network タブに切り替え、mp4 か webm でフィルタして動画を再生します。
- URL に
.mp4/.webmが含まれるリクエストを探す。 - 開いてレスポンスヘッダーの
Content-Typeを確認する。 video/mp4かvideo/webmなら、それが直リンク。
方法2:curl で直接検証する
候補の URL が取れたら、curl で実際に何が返るか見ます(URL は自分のものに置き換えてください)。
curl -sI "https://cdn.example.com/course/lesson1.mp4" | head -n 10
注目するのはこの 2 行。
HTTP/1.1 200 OK
Content-Type: video/mp4
Content-Length: 52428800
Content-Type が video/mp4 なら URL は正しい。text/html が返ってきたら、それは動画ではなく Web ページです。コピーした URL が間違っています。直リンクの検出原理と対応形式は、動画検出 — 対応動画形式 を参照してください。
FlowPick 拡張機能でダウンロードする
手順 1、動画が実際に再生されるページを開き、数秒再生して直リンクが本当にリクエストされるようにします。
手順 2、FlowPick 拡張機能を開き、リソース一覧を「動画」で絞り込み、video/mp4・video/webm の項目を選びます。サムネイルやカバー画像は選ばないでください。
手順 3、右側のプレビューで正常に再生されること、形式に間違いがないことを確認してからダウンロードします。
手順 4、ダウンロードが終わったらファイルを開いて再生できることを確認してから、元のページを閉じます。

拡張機能は元のページの環境で動くため、Referer や Cookie が自動で付き、アンチホットリンクの検証はほとんど通過します。ここがオンラインツールより拡張機能が優れている点です。オンラインツールは自分のドメインで動くので、対象サイトのログイン状態を持ち込めません。この違いは オンラインツール — 拡張機能との違い で解説しています。
たまに 1 本だけ落とす場合で、アンチホットリンク検証がなければ、オンライン動画ダウンローダー も使えます。直リンク URL を貼ればダウンロードできます。
よくあるエラーを 1 個ずつ
403 Forbidden:リクエストヘッダーが不正
動画が本当に「権限なし」なことはほとんどありません。たいていは検証が通りませんでした。
- Referer 検証:リクエストが特定のページから来ないとダメ。空の Referer は即拒否。
- Cookie / ログイン状態:ログイン Cookie がないか、切れている。
- 一時トークン:URL 内の
?token=が期限切れ。
curl で再現して、Referer が原因かどうか確認します。
# ヘッダーなし。裸のリクエストが何を返すか見る
curl -s -o /dev/null -w "%{http_code}\n" "https://cdn.example.com/course/lesson1.mp4"
# ページの Referer を付けて再試行
curl -s -o /dev/null -w "%{http_code}\n" \
-H "Referer: https://www.example.com/course/123" \
"https://cdn.example.com/course/lesson1.mp4"
Referer を付けたら通るなら、それはアンチホットリンクです。拡張機能に切り替えましょう。拡張機能は元のページ内で動くので Referer を自動で補完し、v1.1.1 以降はアンチホットリンクプロキシも内蔵していて、プレビューもダウンロードも正しいリクエストヘッダーを自動で付けます。オンラインツールではできません。プロキシの詳細は FlowPick v1.1.1:アンチホットリンクリソースのプレビューとダウンロード をどうぞ。
404 Not Found:URL の期限切れ、または取り違え
直リンクで一番腹が立つのが「昨日は落とせたのに、今日 404」。よくある原因は 3 つ。
- 一時署名付き URL の期限切れ:クラウドストレージ(OSS、COS など)の直リンクは有効期限付きで、数分から数時間で切れます。
- ファイルの削除:アップロードした人が消した、CDN キャッシュが消された。
- URL の取り違え:コピーしたのがプレイヤー画面の URL で、ファイル直リンクではない。
URL が本当に死んでいたら手の出しようがありません。元の動画ページに戻って再検出し、新しい直リンクを取り直してダウンロードしてください。
CORS エラー:オンラインツール特有の落とし穴
オンラインツールでダウンロードしていて CORS エラーが出た場合、操作ミスではなくツールの制限です。オンラインツールは flowpick.com ドメインで動くため、ブラウザの同一オリジンポリシーがクロスオリジンの読み込みをブロックします。拡張機能に切り替えましょう。拡張機能は独自の権限を持ち、同一オリジンポリシーの制約を受けないので、検出範囲も成功率も一段上です。詳細は 動画検出 — 拡張機能とオンラインツールの検出の違い を参照してください。
ファイルが不完全:サーバーがレジューム非対応
ダウンロードは始まるのに、一時停止すると 0 からやり直し、あるいは途中で失敗する。これはサーバーが HTTP Range に対応しているかにかかっています。Range を使えばクライアントはファイルの一部だけを要求でき、レジューム(断点续传)はすべてこれに依存します。
サーバーが対応しているか試してみます。
curl -s -o /dev/null -w "%{http_code}\n" \
-H "Range: bytes=0-1023" \
"https://cdn.example.com/course/lesson1.mp4"
# 206 = Range 対応、レジューム可能
# 200 = 全体が返る、非対応
206 なら問題なし。200(全体)が返るなら Range 非対応なので、途中で一時停止せず一気に落としましょう。これはサーバー側の能力の問題で、ツールを変えても変わりません。
ダウンロードしたのに再生できない
ファイルは落ちた、サイズも正常なのに、プレイヤーが「形式非対応」と表示するか、黒画面になります。ここで コンテナ と コーデック の 2 つを分けて考える必要があります。.mp4 はコンテナで、中身は H.264 かもしれないし、H.265/HEVC や AV1 かもしれません。コンテナ対応とコーデック対応は別物で、プレイヤーは中身のコーデック層をデコードできて初めて再生できます。
コーデック非対応なら、形式変換 で互換性の高い H.264 MP4 に変換するのが手っ取り早いです。自分のブラウザが何を再生できるかは ブラウザ互換性 をどうぞ。
数百 MB の大容量ファイルがダウンロード途中で固まるのは、ブラウザがファイルをメモリに一時保存しているためです。FlowPick は File System Access API を優先(保存先フォルダを選ぶとストリーム書き込みでメモリを消費しません)し、非対応の場合は Blob モードにフォールバックします。大容量ファイルが固まるのはそのせいです。対策は簡単。デフォルトのダウンロードではなく「保存先フォルダを選択」を優先すること。それもダメなら低画質版を落としましょう。Blob モードのハードリミットは 既知の制限 にまとめてあります。
直リンクと M3U8・MPD が区別できない
URL の拡張子が .m3u8 や .mpd なら、それは直リンクではなくストリーミングのマニフェストです。無理に落とさないでください。
.m3u8→ M3U8 ダウンローダー または HLS 入門ガイド.mpd→ DASH ダウンローダー または DASH 動画ダウンロードチュートリアル
まとめ
直リンクのダウンロードは 4 ステップ。動画が実際に再生されるページを見つける → Network か FlowPick から video/* の URL を掘り出す → curl で取り違えがないか検証する → ダウンロード後に再生を確認してから次へ進む。403 なら拡張機能へ、404 なら再検出、CORS ならオンラインツールをやめる、ファイルが不完全ならまず Range を確認。それでも残る難問は、動画直リンクのダウンロードに失敗したら?MP4・WebM のトラブルシューティング に症状別の全チェックリストが載っています。保存する権利がある動画だけをダウンロードしてください。
関連記事
- 動画直リンクのダウンロードに失敗したら?MP4・WebM のトラブルシューティング —— この記事の完全なトラブルシューティング版、curl 診断付き
- M3U8/HLS ストリームをダウンロードする方法:完全入門ガイド —— 直リンクの隣の親戚、分割配信の入門
- 音声付き DASH 動画をダウンロードする方法 —— 音声分離された MPD 配信の落とし方
- 動画検出 — 直接動画ファイル —— 直リンク検出の原理と対応範囲
- FlowPick はブラウザ内で何百もの動画セグメントを MP4 に合成する仕組み —— 分割配信の結合の裏側
おすすめ記事
- Bilibili 動画をオフライン視聴用にダウンロードする方法(2026 最新版) —— 1 つのサイトに直リンク・DASH・HLS が全部揃っている
- FlowPick vs. yt-dlp —— ブラウザで数クリック vs ターミナルで半日
- Web サイトから画像をまとめてダウンロードする方法 —— 動画だけじゃない、画像も一括で
- ストリーミング動画のダウンロードは違法? —— 動く前に確認したい赤い線