ストーリー
直接動画URLから動画をダウンロードする方法
直接動画URLとは何か、ブラウザでMP4やWebMをどう保存するか、CORS・HLS・DASHが保存を阻む理由を説明します。
動画URLがあることは、動画ファイルがあることと同じではありません。アドレスによっては MP4 や WebM のリソースを指します。プレイヤーだけが入った HTML ページを開くものもあります。小さな断片が多数あるストリーミング再生リストを読み込むものもあります。
そのため、すぐ保存できるリンクもあれば、再生できてもダウンロードできないリンクもあります。この記事ではその違いを見分け、URL が本当に動画リソースであるときだけファイルを保存する方法を説明します。
直接動画URLとは?
直接動画URL は、HTTP 応答が周囲のウェブページではなくメディアリソースそのものであるアドレスです。いちばん簡単な例は次のとおりです。
https://example.com/video.mp4
ブラウザがこの URL を要求すると、サーバーは動画ファイルのバイトを返せます。多くの場合 Content-Type は video/mp4 または video/webm です。途中に HTML 文書はありません。URL がファイルです。
拡張子はヒントであり、規則ではありません。パスに .mp4 がなくても動画リソースになり得ます。
https://example.com/media?id=123
サーバーが Content-Type: video/mp4(または別の video タイプ)と実際のメディアデータを返せば、それも直接動画URLです。逆に .mp4 で終わってもリダイレクトや HTML エラーページのことがあります。アドレス末尾の文字ではなく、HTTP 応答を根拠にしてください。
直接動画URLと動画ウェブページ
次の二つを比べてください。
- 直接ファイル:
https://example.com/files/movie.mp4 - ウェブページ:
https://example.com/watch/movie
前者は単一の動画オブジェクトになり得ます。後者はたいてい HTML 文書です。そのページは <video> 要素を埋め込み、プレイヤースクリプトを読み込み、アドレスバーに出ない別の URL からメディアを取得できます。
ウェブページのアドレスをダウンロードツールに貼っても、ページ内のファイルは取り出せません。ブラウザは HTML を要求します。公開された直接動画URL を扱うツールには、メディアアドレスそのものが必要です。
NEXNARA の Web動画ダウンローダー はその公開ファイルURL向けです。視聴ページ向けではありません。サイトから動画を抽出したり、アカウントにログインしたり、プレイヤーのストリームを組み立てたりしません。
直接URLから動画をダウンロードする方法
候補リンクがすでにある場合:
- 直接URLを用意する。 視聴ページではなく、ファイル・オブジェクト・メディアURLを使います。
- 動画リソースか確認する。 新しいタブではブラウザ標準の再生(またはダウンロード案内)が見えるべきです。レイアウト中央にプレイヤーだけがあるページではありません。
- まずブラウザで試す。 多くのブラウザは動画のコンテキストメニューから保存できるか、サーバーがファイル保存用ヘッダーを送ればダウンロードを開始します。
- 先にプレビューしたいときはブラウザツールを使う。 同じ URL を貼って形式・長さ・サイズを見てから保存できます。
Web動画ダウンローダー がその最後の手順です。直接動画URLを貼ると、ブラウザがそのホストに要求します。再生できるファイルならプレビューが出ます。動画サーバーがクロスオリジンの読み取りを許せばダウンロードでき、許せなければプレビューできるときに URL を開くことはできます。NEXNARA はファイルを自社サーバーへアップロードしません。
どの動画形式をダウンロードできるか?
ブラウザでは「ダウンロードできるか」は「このブラウザがこのファイルをデコードできるか」に近いです。単一ファイルURLでよくあるコンテナは次のとおりです。
- MP4 — 多くの場合 ISO BMFF コンテナ内の H.264 または HEVC
- WebM — 通常 VP8、VP9、または AV1
- Ogg Video — あまり一般的ではない。コーデック対応はブラウザによる
コンテナとコーデックは別物です。.mp4 だからすべてのブラウザ・端末で再生できるわけではありません。HEVC と AV1 の対応は OS、ハードウェア、ブラウザのビルド次第です。HTML5 video 要素を使うツールは、そのブラウザがデコードできるものだけをプレビューします。ファイルを変換したりリマックスしたりしません。
ブラウザが非対応形式と出しても、別環境では再生できることがあります。ラベルが違うオブジェクトや、単一ファイルではない再生リストのこともあります。
再生できてもダウンロードできない理由
再生と保存は別のブラウザ API を使います。
<video> 要素はリソースを要求し(多くの場合 HTTP range)、フレームを描けます。別オリジンの JavaScript がバイトを読んでユーザーが保管できるファイルにできなくても、これは成功し得ます。
プレビューはできるのに ダウンロード が失敗する典型例:
- CORS. 動画ホストがこのサイトのスクリプトに応答の読み取りを許していません。次の節を見てください。
- クロスオリジン資格情報. 元サイトで効く Cookie は、双方が許可しない限り単純なクロスサイト
fetchには付きません。 Content-Disposition.attachmentやファイル名はトップレベル移動の保存の仕方に影響します。別オリジンのスクリプトが本文を読めるかどうかは別です。- サーバー設定. CORS ヘッダーが無い、または
HEAD/GETの組み合わせが止まると、先にリソースを調べるツールが止まります。 - 認証. ホストにログインしているときだけ動く URL は、別サイトからは 401/403 になり得ます。
- 期限付き・署名付きURL. オブジェクトストレージはしばしば期限付きクエリ文字列を付けます。期限切れで同じリンクは失敗します。
これらは「動画ではない」という意味ではありません。このブラウザの文脈ではコピーが許されていない、という意味です。
CORSとは?
CORS(Cross-Origin Resource Sharing)は、あるオリジンの JavaScript が別オリジンの応答をいつ読めるかに関するブラウザの規則です。特別な「ダウンロード防止技術」ではありません。https://a.example が https://b.example のメールやファイルを、b.example が許さない限り黙って読めないようにするためです。
video タグはクロスオリジンのファイルをユーザーに表示できます。CORS がよく止めるのは、別サイトが生バイトを Blob にして保存ダイアログを出そうとする fetch() です。動画サーバーがツールのオリジンを含む Access-Control-Allow-Origin(または単純な公開ファイルの *)を送らなければ、その読み取りは拒否されます。
再生は、別サイトのスクリプトがコピーを保存してよいという許可ではありません。NEXNARA はその検査を飛ばすためにファイルをプロキシしません。ダウンロードが止まれば、保存する権利があるときに限り、動画ホストで URL を開くのが代替手段です。
HLS と DASH は?
多くのプレイヤーは MP4 一つだけを読みません。マニフェストを読み、多数のセグメントを取ります。
- HLS は
.m3u8で終わる URL をよく使います。そのファイルはテキストの再生リストであり、一つの完成した映像オブジェクトではありません。 - DASH は
.mpdをよく使います。表現とセグメントを指す XML マニフェストです。
直接の MP4/WebM URL と HLS/DASH 再生リストは別のリソースです。「.m3u8 を保存」すると小さなテキストファイルになり、映画にはなりません。セグメントから一つのファイルを作るには再生リスト解析、セグメント取得、多くの場合リマックスが必要です。Web動画ダウンローダー は HLS/DASH ストリームを組み立てません。ツールがストリーミング再生リストと出せば、想定どおりです。
DRM で保護された動画
商用プレイヤーは Widevine、FairPlay、PlayReady などの DRM でメディアを包むことがあります。サンプルを暗号化し、ライセンスが必要です。取って保管できる公開 video/mp4 オブジェクトではありません。NEXNARA は DRM を解除したり迂回したりしません。
直接動画URLの見分け方
確かさの順に:
- パスが
.mp4、.webm、.ogvなどのメディア拡張子で終わる。役立つが決定的ではない。 - 新しいタブで開くと、サイト全体ではなく動画だけ(またはダウンロード)が見える。
- 公開者がファイル・オブジェクトリンク(CDN、ストレージバケット、直接ダウンロード)だと案内している。
- 応答ヘッダーに
Content-Type: video/*(例:video/mp4)がある。
ブラウザの開発者ツールのネットワークパネルで、すでに通常の利用者として行った要求の種類と Content-Type を見られます。何を取得したかを理解する助けになります。隠れたストリームを掻き出す手順でも、ログイン回避でもありません。サイトが公開ファイルURLを出さなければ、この手順は当てはまりません。
拡張子もコンテンツタイプも嘘になり得ます。.mp4 URL が HTML にリダイレクトすることもあります。video/mp4 でも本文が小さなエラーのことがあります。タブで再生できることが実務上の確認です。
よくある問題
URL がウェブページを開く。
直接動画URLではありません。視聴ページではなくメディアリソースのアドレスが必要です。
再生できるがダウンロードが役に立たない。
ホストがクロスオリジン読み取り(CORS)を拒んでいるか、ブラウザ内保存には大きすぎる可能性があります。プレビューできれば 開く を使うか、権限があるときに動画ホストのトップレベルタブで保存してください。
以前は動いたリンクが失敗する。
署名付き・期限付き URL は時間で切れます。最初にもらった場所で新しいリンクを頼んでください。
URL が .m3u8 または .mpd で終わる。
単一の MP4/WebM ではなくストリーミング再生リストです。このダウンローダーはそのセグメントを繋ぎません。
ブラウザが非対応形式と言う。
そのブラウザ/OS でコンテナやコーデックが使えないことがあります。別のブラウザを試すか、本当に動画オブジェクトか確認してください。
ブラウザが URL に届かない。
https://、接続、ホストの公開アクセスを確認してください。HTTPS のツールページ上の HTTP ファイルは混合コンテンツで失敗することもあります。
プライバシー
このツールで NEXNARA は動画ファイルを NEXNARA のサーバーへアップロードしません。それは「URL がブラウザから出ない」という意味ではありません。
アドレスを貼ると、ブラウザはその外部動画ホストに直接要求します。 ホストは通常のメディアリクエストを見られます。NEXNARA が途中でファイルを保管しているわけではありません。バイトがその URL から来るため、動画の運用者は依然としてトラフィックを受けます。
責任ある利用
所有しているか、ダウンロードする許可がある動画だけを保存してください。公開 URL はコピーのライセンスではありません。
FAQ
直接動画URLとは何ですか?
応答が動画リソースそのもの(例: MP4 や WebM オブジェクト)であるリンクです。プレイヤーを埋め込んだ HTML の視聴ページではありません。
URL から MP4 をダウンロードできますか?
公開の MP4(または同等)ファイルで、ブラウザがデコードできるときです。アドレスがウェブページや再生リストなら、そのアドレスを保存しても映像ファイルにはなりません。
再生できてもダウンロードできないのはなぜ?
プレイヤーは、別サイトの JavaScript がバイトを読めなくてもメディアを表示できます。よくある原因は CORS、認証、サーバー方針です。
m3u8 URL をダウンロードできますか?
このツールでは完成した一本の動画としてはできません。.m3u8 は HLS 再生リストです。NEXNARA は HLS/DASH ストリームを組み立てません。
NEXNARA は動画をアップロードしますか?
いいえ。ファイルは NEXNARA へアップロードされません。ブラウザが入力した動画 URL と通信するため、外部ホストはその要求を見ます。
動画リンクが期限切れになったのはなぜ?
多くのホストはオブジェクト URL に署名と期限を付けます。その時刻を過ぎると同じ文字列はもう認可されません。新しいリンクを頼んでください。古いリンクを編集しても更新されません。