他の動画は普通に保存できるのに、ある特定の動画だけ「◯◯バイト読み取りました。あと◯◯バイト必要です。再試行しています…」というエラーが出て失敗してしまう。
今回は、そんな時の対策を紹介します。
特定の動画だけダウンロードエラー
まずは、ツールのバージョンが最新であるかを確認するためにアップデートコマンドを実行します。
yt-dlp -U最新版であることが確認できたら、設定やコマンドを複雑にいじるのではなく「しばらく時間を置いてから再度実行する」という方法をとります。
数時間、あるいは一晩待ってから同じコマンドを叩くだけで、あっさりとダウンロードが完了するケースが非常に多いです。
また、デフォルトでは再試行の回数が10回に設定されていますが、一時的な接続不良を乗り越えるために再試行回数を増やすオプションを追加するのも有効です。
yt-dlp --retries 30 [動画のURL]–retries は、エラーで接続が切れた際の再試行回数を指定するオプションです。これに加えて、可能であればVPNなどで接続元の地域を変更してみることも一つの手です。
特定の動画だけでエラーが頻発する仕組みと背景
ブラウザでのストリーミング再生と、コマンドツールによるダウンロードとでは、データの取得方式が根本的に異なります。
動画共有サイトは、世界中の無数のデータセンターから動画を配信しています。ユーザーがアクセスした際、その時に一番近い、あるいは負荷の少ないサーバーが自動的に選ばれます。
ごく稀に、割り当てられた特定のサーバー上で対象の動画データに一時的な不具合が発生していたり、通信が極端に不安定になっていたりすることがあります。
ブラウザでの再生時は、途中で通信が詰まっても自動で画質を下げたり、細切れのデータを少しずつ読み込んだりして、動画が止まらないようにシステムがうまく調整してくれます。
しかしダウンロードツールの場合は、ファイル全体の正確なバイト数を要求し、欠損のない完全なファイルをローカルに構築しようとします。そのため、サーバー側から想定したデータ量が送られてこないと「あと◯◯バイト必要です」と判断し、厳格にエラーとして処理してしまう仕様になっています。
さらに、何年も前に投稿されて普段アクセスされない古い動画の場合、即座に読み込めるメインのサーバーではなく、アーカイブ用の動きが遅いサーバーに保管されていることがあります。この場合、データの引き出しに時間がかかりすぎてタイムアウトを引き起こしている可能性があります。
時間を置いたり接続地域を変えたりすることで突然解決するのは、動画配信サイト側のルーティングが変わり、正常なデータを持つ別のサーバーに接続されるようになるためです。
あなたが間違ったコマンドを入力しているわけではなく、配信システムの物理的な仕様によって引き起こされる現象です。
まとめ
- エラーが続く場合は、–retriesオプションで再試行回数を増やすか、数時間待ってから再実行する
- 再生はできてもダウンロードに失敗するのは、接続先のサーバーの問題や、ツールが求める厳密なデータ整合性によるもの
焦って設定を複雑にする必要はありません。配信サーバー側の状態が変わるのを待つという余裕を持つことで、この問題はスムーズに解決できるはずです。