今回は今まで問題なかったのに急に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',
}
同じように困ってる方がこれで解決できれば幸いです。
以上です。ありがとうございました。
コメント