アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

yt-dlpで自分のYouTube動画が403やフォーマットエラーで落とせない時の対処法

Featured image of the post

「自分がアップロードした動画を編集し直したいのに、元のファイルをもう持っていない」「yt-dlpで自分のチャンネルの動画を落とそうとしたら403 Forbiddenで弾かれた」「フォーマットを指定したら『Requested format is not available』と言われる」——このように、自分の動画のはずなのにダウンロードだけがうまくいかない、という相談は少なくない。原因はyt-dlp側の不具合というより、YouTube側の配信フォーマットやクライアント判定の変化によることが多く、オプションを変えて粘っても解決しないケースがある。この記事では症状別の切り分け方と、自分のチャンネルの動画に限って使える確実な代替手段(YouTube Studioの公式ダウンロード機能)をまとめる。

💡
30秒で要点
- yt-dlpで自分の動画を取得しようとすると403 Forbiddenや「Requested format is not available」で失敗することがある
- player_clientをios/tv/mweb/androidと変えても解決しないことがあり、androidでは640x360(format 18)しか出ない場合もある
- 自分がチャンネルの所有者である動画に限り、YouTube Studioの「ダウンロード」機能から元のアップロード画質を直接取得できる
- 保存されるファイル名は動画タイトルそのままなので、更新日時でソートして見つける
- 他人の動画の権利者でない場合はこの方法は使えない(所有者本人の動画に限る)

目次を開く

yt-dlpで自分の動画がダウンロードできない典型的な症状

まず、実際に起きる代表的なエラーを整理する。

ERROR: [youtube] xxxxxxxxxxx: HTTP Error 403: Forbidden
ERROR: [youtube] xxxxxxxxxxx: Requested format is not available. Use --list-formats for a list of available formats
ERROR: [youtube] xxxxxxxxxxx: The page needs to be reloaded, for example, by clicking the reload button

-f "bv*[height<=720][ext=mp4]+ba[ext=m4a]"のように解像度を指定したダウンロードで403が出たり、--extractor-args "youtube:player_client=ios"のようにクライアントを偽装するオプションを足しても、tvでは画面のリロードを促すエラー、mwebでは同じくフォーマットが見つからないエラーに変わるだけで解決しないことがある。

原因: 提供されるフォーマット自体が絞られている

player_client=androidを指定して--list-formatsを実行すると、そもそも選べるフォーマットが format 18(640x360)の1つしかない、という状態になることがある。これはyt-dlp側の抽出ロジックの問題というより、YouTube側がそのクライアント種別に配信するストリームの本数を絞っている状態で、オプションをいくら変えても存在しないフォーマットは選べない。

症状別の切り分け表

エラー・症状 考えられる原因 次に試すこと
HTTP Error 403: Forbidden 署名付きURLの検証やクライアント判定に弾かれている 別のplayer_clientを1つずつ試す。自分の動画なら後述のStudioダウンロードに切替
Requested format is not available 指定した解像度・拡張子のストリームがそもそも提供されていない --list-formatsで実際に選べる解像度を確認してから指定し直す
The page needs to be reloaded 抽出ロジックがYouTube側の仕様変更に追随できていない yt-dlp -Uで最新版に更新してから再実行
--list-formatsの結果が360p(format 18)だけ 使ったクライアント種別への配信が絞られている 他のクライアント種別を試すか、自分の動画ならStudioダウンロードに切替

自分のチャンネルの動画ならYouTube Studioからダウンロードする

自分がチャンネルの所有者である動画に限り、ブラウザ操作だけで元のアップロード画質を取得できる。

  1. YouTube Studioで対象の動画の詳細画面を開く
  2. 画面右上の「オプション」(縦三点アイコン)をクリックする
  3. メニューから「ダウンロード」を選ぶ
  4. 既定のダウンロードフォルダに動画ファイルが保存される

コマンド操作を粘るより、この手順の方が確実かつ速い(体感20秒程度)。

保存されたファイルの見つけ方

ダウンロードされるファイル名は動画タイトルがそのまま使われる(日本語・記号込み)。パスを直接指定するより、更新日時でソートして拾う方が確実。

ls -lat ~/Downloads | head

見つけたファイルは、後続のコマンドで扱いやすいように先にリネームしておくとよい。

yt-dlp自体のバージョンを確認・更新する

The page needs to be reloadedのようなエラーは、yt-dlpのバージョンが古く、YouTube側の変更に抽出ロジックが追いついていないことが原因になりやすい。まずバージョンを確認し、古ければ更新する。

yt-dlp --version
yt-dlp -U

pipで導入している場合はpip install -U yt-dlpでも更新できる。更新後に同じコマンドを再実行しても改善しない場合は、自分の動画である限りStudioダウンロードに切り替えた方が早い。

まとめ

yt-dlpで自分のYouTube動画がダウンロードできない場合、403やフォーマットエラーの多くはYouTube側の配信制限やクライアント判定によるもので、オプションを変える粘り方には限界がある。自分がチャンネルの所有者である動画なら、YouTube Studioの「ダウンロード」機能を使えば元画質のファイルを確実に取得できる。まずは症状別の切り分け表で原因を絞り込み、それでも解決しなければStudioダウンロードに切り替えるのが最短ルートになる。

よくある質問(FAQ)

Q1. yt-dlpで失敗する動画は、全部YouTube Studioのダウンロードで解決できますか?

自分がチャンネルの所有者である動画に限られる。他人の動画は、権利者本人でない限りStudioのダウンロード機能自体を使えないため対象外。

Q2. Studioでダウンロードしたファイルの画質は、元にアップロードした画質と同じですか?

アップロード時の解像度が上限になる。720pでアップロードしていれば最大720pまでで、後から4Kにアップスケールしても元の解像度以上のファイルは得られない。

Q3. ダウンロードしたファイルの名前が動画タイトルのままで扱いにくいです

先頭からパスを決め打ちせず、ls -latで最新ファイルを拾ってから変数やリネームで扱うと、日本語や記号を含むファイル名でも安全に処理できる。

Q4. --cookies-from-browserでログイン状態を渡せば直りますか?

改善するケースもあるが、そもそも提供されるフォーマット自体が絞られている場合は効果が無い。まず--list-formatsで実際に選べるフォーマットを確認するのが早い。

プログラミング学習でつまずいていませんか?

独学で挫折しそうな方も、プロのメンターがしっかりサポートします。

  • プログラミング学習の進め方がわからない
  • 独学で行き詰まった時の質問相手がほしい
  • 何から始めればいいかわからない
まずは30分の無料相談

相談は完全無料・オンラインで気軽に

あなたを爆速で成長させるメンタリングプログラムはこちら

メンタープログラムバナー

学習・開発のお悩みは現役エンジニアに相談

メンタープログラムの詳細を見る

エンジニアの基礎学習ゲーム

プログラミング学習支援

無料相談はこちら