【Python】yt-dlpで動画ダウンロードでエラーが出た話し

今回は今まで問題なかったのに急にyt-dlpでエラーが出たので解決策を備忘録として書いておきます。

目次

yt-dlpでどんなエラーが出たのか

今回どのようなエラーが出た方というと、

yt_dlp.utils.DownloadError: ERROR: [youtube] "動画URL": Requested format is not available. Use --list-formats for a list of available formats

どういう意味かというと「要求された形式は利用できません。利用可能な形式の一覧を表示するには、–list-formatsを使用してください。」とのことでした。

このエラーは、以下の原因で発生する可能性があるそうです。

  • 指定した形式の動画が存在しない
    YouTube動画は、さまざまな解像度や形式で提供されています。指定した形式の動画が存在しない場合、このエラーが発生します。
  • 形式の指定ミス
    形式を指定する際に、スペルミスや誤った形式を指定した場合にも、このエラーが発生します。
    解決策

ちなみにプログラムで指定していたフォーマットは以下になります。

ydl_opts = {
            'format': '22',
            'outtmpl': 'C:\Users\test\Documents/%(id)s.%(ext)s',
            }

プログラムは全く変えていないので今回は「指定した形式の動画が存在しない」だと判断しました。

確認した内容

そのためエラーに出ている通り「yt-dlp –list-formats “動画URL”」にて動画の利用形式を確認したところ。以下一覧が出てきました。

PS > yt-dlp --list-formats https://www.youtube.com/watch?v="動画URL"
[youtube] Extracting URL: https://www.youtube.com/watch?v="動画URL"
[youtube] "動画URL": Downloading webpage
[youtube] "動画URL": Downloading ios player API JSON 
[youtube] "動画URL": Downloading m3u8 information 
[info] Available formats for "動画URL": 
ID  EXT   RESOLUTION FPS CH │   FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO        
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27        0    │                  mhtml │ images                                  storyboard       
sb2 mhtml 80x45        0    │                  mhtml │ images                                  storyboard       
233 mp4   audio only        │                  m3u8  │ audio only          unknown             [ja] Default     
234 mp4   audio only        │                  m3u8  │ audio only          unknown             [ja] Default     
139 m4a   audio only      2 │   66.30MiB   49k https │ audio only          mp4a.40.5   49k 22k [ja] low, m4a_dash
140 m4a   audio only      2 │  175.95MiB  129k https │ audio only          mp4a.40.2  129k 44k [ja] medium, m4a_dash
251 webm  audio only      2 │  182.43MiB  134k https │ audio only          opus       134k 48k [ja] medium, webm_dash
18  mp4   640x360     30  2 │  401.95MiB  296k https │ avc1.42001E         mp4a.40.2       44k [ja] 360p        
605 mp4   640x360     30    │ ~726.53MiB  535k m3u8  │ vp09.00.21.08  535k video only
232 mp4   1280x720    30    │ ~  3.29GiB 2482k m3u8  │ avc1.64001F   2482k video only
136 mp4   1280x720    30    │  821.84MiB  605k https │ avc1.64001F    605k video only          720p, mp4_dash   
270 mp4   1920x1080   30    │ ~  6.50GiB 4899k m3u8  │ avc1.640028   4899k video only
137 mp4   1920x1080   30    │    1.67GiB 1259k https │ avc1.640028   1259k video only          1080p, mp4_dash  

内容をよく見て見るとたしかに前使っていた22が存在していません。

解決策

というわけで理由が分かったのでここから解決した方法になります。

方法としては以下方法があります。

  • 形式を指定し直す
    利用可能な形式の中から、ダウンロードしたい形式を指定します。
  • 形式を自動選択する
    yt-dlpが自動的に最適な形式を選択してダウンロードします。

元々、形式を指定することをやっていたので、今回も番号を指定して解決しました。

具体的に言うと、「137+140」です。

137 mp4 1920×1080 30 │ 1.67GiB 1259k https │ avc1.640028 1259k video only 1080p, mp4_dash
140 m4a audio only 2 │ 175.95MiB 129k https │ audio only mp4a.40.2 129k 44k [ja] medium, m4a_dash

プログラムで書くと以下のようにしました。

ydl_opts = {
            'format': '137+140',
            'outtmpl': 'C:\Users\test\Documents/%(id)s.%(ext)s',
            }

同じように困ってる方がこれで解決できれば幸いです。

以上です。ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

30歳未経験からネットワークエンジニアに転職し、運用→構築→設計の仕事をやってます。色んな機器(Cisco、YAMAHA、Fortigate、PaloAlto)を触らせてもらいとても楽しい仕事です!

現在は派遣にて主にCiscoを中心としたネットワーク設計~構築をしております。

また、2023年より副業で個人事業主や小規模企業からのパソコン設定~ネットワーク作業の仕事を請け負っておりますので、もしお困りの方がいましたらお気軽にお問い合わせください。

●今までの作業履歴
- パソコンの新旧入れ替え
- 拠点間のインターネットVPN接続(YAMAHA-Fortigate)

コメント

コメントする

目次