コンテンツへスキップ

YouTubeのダウンロードが360p前後で止まる理由

YouTubeが1ファイルに映像と音声をまとめた完全なMP4を配信するのは、控えめな解像度だけです。それ以上は結合が必要な別ストリームとして保存され、このツールは結合しません。

これはYouTubeページで最もよくある驚きなので、最初に述べておく価値があります。上限は通常360p、ときには240pで、引き上げられる設定ではありません。ダウンローダーは、YouTubeが1ファイルとして公開するプログレッシブMP4を提供します。1080pのレンディションはYouTube側に存在しますが、単一ファイルとしては存在しません。

多重化とアダプティブは別物

YouTubeは各動画を2つの形で保存します。多重化形式は映像と音声を1つのMP4にまとめて持ちます。どこでも保存して再生できるファイルです。アダプティブ形式はそれらを分けます。映像のみのストリームと別の音声のみのストリームで、それぞれYouTubeがその解像度に選んだビットレートでエンコードされます。

ブラウザで1080pを再生するのは簡単です。プレイヤーが両方のストリームを取得し、その場で結合するからです。1080pを1つのファイルとして保存するのは別の仕事です。何かがトラックを結合しなければなりません。このダウンローダーは多重化ツールを積んでいないため、多重化形式だけを一覧にします。そして次第に、YouTubeはそれらを360p以下で配信しています。かつて存在した720pの多重化形式は、匿名のクライアントにはもう渡されません。

リゾルバがすること

クライアントの階段があるため、一度失敗した動画が次には成功することがあります。クライアントごとに提供される形式が異なり、YouTubeは時間とともに利用可能な形式を変えるからです。

リンクが新しいタブで開く理由

動画のバイト列はgooglevideo.comから来て、CORSヘッダーを送りません。ページはそれを読めないため、ダウンロードボタンは代わりにリンクへ移動し、ブラウザがGoogleのCDNから直接ファイルを保存します。この移動を機能させる2つの詳細があります。リゾルバがURLにタイトルパラメータを付け加え、Googleのサーバーがcontent-disposition: attachmentで応答するようにして、タブで再生されずファイルとして保存されるようにします。

何もキャッシュされない理由

ほかのプラットフォームの結果は数分以上キャッシュされます。YouTubeの結果は意図的に決してキャッシュされません。googlevideo.comのリンクはそれを求めたアドレスに結び付き、すぐに期限切れになるためです。キャッシュされたリンクはダウンロードボタンのように見えて、死んだリンクのように失敗します。だからリゾルバは毎回YouTubeに新しく問い合わせます。

対応していないもの

ケース結果
公開動画解決され、YouTubeが提供する多重化MP4形式。
非公開、メンバー限定、年齢制限付きprivate — リゾルバは決してサインインしません。
削除または取り下げられた動画not_found。
進行中のライブ配信配信中は多重化ファイルが存在しません。
ショートほかの動画と同じように機能し、解像度の上限も同じです。

要点

よくある質問

このツールはYouTubeから1080pをダウンロードできますか?

いいえ。YouTubeは1080pを映像のみと音声のみの別ストリームとして保持しており、このツールはそれらを結合しません。YouTubeが単一ファイルとして公開する多重化MP4を提供し、それは通常360pです。

動画がページ内でダウンロードされず、新しいタブで開くのはなぜですか?

`googlevideo.com`がCORSヘッダーを送らないため、ページはバイト列を読めません。リンクにはタイトルパラメータが付き、Googleが`content-disposition: attachment`で応答するため、ブラウザは再生せずファイルを保存します。

同じリンクで画質が違って表示されることがあるのはなぜですか?

リゾルバは複数の公式クライアントの身元でYouTubeに問い合わせますが、それぞれに同じ形式が提供されるわけではありません。少し経ってからリンクを再度取得すると一覧が変わることがあります。

この記事のツール

記事一覧