[小ネタ]オンライン動画をダウンロードするyt-dlpで、ログインするとmp4の高画質動画がダウンロードできない
ここのところ(2024/12/7現在)、yt-dlpでダウンロードすると、4K動画などがなぜかFullHDでしかダウンロードできない現象が続いていた。
--formatオプションをいろいろいじってみるものの改善せず、わかってきたこととしては、
mp4形式ではFullHDになってしまう動画も、mkv形式であれば4K画質でダウンロードできる
--formatオプションで、「bv*[ext=mp4][width>1920]+ba[ext=m4a] / bv*[width>1920]+ba[ext=m4a]」のように、明示的にmp4形式を優先した記述としてもmkv形式でダウンロードされる(4Kの場合)
--format-sortオプションで指定しても改善しない
一見無関係に見える、--cookies系オプションのオンオフにより、同じ--outputオプションを指定していても結果が異なる。--cookiesがオンの場合にはmkv形式(4K)となり、オフの場合にはmp4形式(4K)となる
このことを踏まえ、とある動画をサンプルとして --list-formatsオプションでダウンロード可能な解像度の一覧を取得したところ、なんと--cookiesの指定の有無により結果が異なっていることがわかった。
--cookiesオプションを使用した場合 ↓
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27 1 │ mhtml │ images storyboard
sb2 mhtml 80x45 1 │ mhtml │ images storyboard
sb1 mhtml 160x90 1 │ mhtml │ images storyboard
sb0 mhtml 320x180 1 │ mhtml │ images storyboard
599 m4a audio only 2 │ 677.74KiB 31k https │ audio only mp4a.40.5 31k 22k ultralow, m4a_dash
600 webm audio only 2 │ 741.38KiB 34k https │ audio only opus 34k 48k ultralow, webm_dash
249 webm audio only 2 │ 1.07MiB 50k https │ audio only opus 50k 48k low, webm_dash
250 webm audio only 2 │ 1.42MiB 66k https │ audio only opus 66k 48k low, webm_dash
140 m4a audio only 2 │ 2.78MiB 130k https │ audio only mp4a.40.2 130k 44k medium, m4a_dash
251 webm audio only 2 │ 2.80MiB 130k https │ audio only opus 130k 48k medium, webm_dash
597 mp4 256x144 15 │ 935.01KiB 43k https │ avc1.4d400b 43k video only 144p, mp4_dash
598 webm 256x144 15 │ 956.26KiB 44k https │ vp9 44k video only 144p, webm_dash
160 mp4 256x144 30 │ 2.69MiB 125k https │ avc1.4d400c 125k video only 144p, mp4_dash
278 webm 256x144 30 │ 2.58MiB 120k https │ vp9 120k video only 144p, webm_dash
133 mp4 426x240 30 │ 5.82MiB 271k https │ avc1.4d4015 271k video only 240p, mp4_dash
242 webm 426x240 30 │ 5.09MiB 237k https │ vp9 237k video only 240p, webm_dash
134 mp4 640x360 30 │ 13.30MiB 620k https │ avc1.4d401e 620k video only 360p, mp4_dash
18 mp4 640x360 30 2 │ 14.33MiB 667k https │ avc1.42001E mp4a.40.2 22k 360p
243 webm 640x360 30 │ 8.20MiB 382k https │ vp9 382k video only 360p, webm_dash
135 mp4 854x480 30 │ 24.47MiB 1140k https │ avc1.4d401f 1140k video only 480p, mp4_dash
244 webm 854x480 30 │ 14.42MiB 672k https │ vp9 672k video only 480p, webm_dash
136 mp4 1280x720 30 │ 46.66MiB 2174k https │ avc1.64001f 2174k video only 720p, mp4_dash
247 webm 1280x720 30 │ 26.07MiB 1215k https │ vp9 1215k video only 720p, webm_dash
298 mp4 1280x720 60 │ 68.02MiB 3170k https │ avc1.640020 3170k video only 720p60, mp4_dash
302 webm 1280x720 60 │ 49.59MiB 2311k https │ vp9 2311k video only 720p60, webm_dash
299 mp4 1920x1080 60 │ 117.67MiB 5484k https │ avc1.64002a 5484k video only 1080p60, mp4_dash
303 webm 1920x1080 60 │ 81.98MiB 3820k https │ vp9 3820k video only 1080p60, webm_dash
308 webm 2560x1440 60 │ 225.38MiB 10504k https │ vp9 10504k video only 1440p60, webm_dash
315 webm 3840x2160 60 │ 428.97MiB 19992k https │ vp9 19992k video only 2160p60, webm_dash
--cookiesオプションを使用しなかった場合
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27 1 │ mhtml │ images storyboard
sb2 mhtml 80x45 1 │ mhtml │ images storyboard
sb1 mhtml 160x90 1 │ mhtml │ images storyboard
sb0 mhtml 320x180 1 │ mhtml │ images storyboard
233 mp4 audio only │ m3u8 │ audio only unknown Default
234 mp4 audio only │ m3u8 │ audio only unknown Default
599 m4a audio only 2 │ 677.74KiB 31k https │ audio only mp4a.40.5 31k 22k ultralow, m4a_dash
600 webm audio only 2 │ 741.38KiB 34k https │ audio only opus 34k 48k ultralow, webm_dash
139 m4a audio only 2 │ 1.05MiB 49k https │ audio only mp4a.40.5 49k 22k low, m4a_dash
249 webm audio only 2 │ 1.07MiB 50k https │ audio only opus 50k 48k low, webm_dash
250 webm audio only 2 │ 1.42MiB 66k https │ audio only opus 66k 48k low, webm_dash
140 m4a audio only 2 │ 2.78MiB 130k https │ audio only mp4a.40.2 130k 44k medium, m4a_dash
251 webm audio only 2 │ 2.80MiB 130k https │ audio only opus 130k 48k medium, webm_dash
597 mp4 256x144 15 │ 935.01KiB 43k https │ avc1.4d400b 43k video only 144p, mp4_dash
602 mp4 256x144 15 │ ~ 2.36MiB 110k m3u8 │ vp09.00.10.08 110k video only
598 webm 256x144 15 │ 956.26KiB 44k https │ vp9 44k video only 144p, webm_dash
269 mp4 256x144 30 │ ~ 4.27MiB 199k m3u8 │ avc1.4D400C 199k video only
160 mp4 256x144 30 │ 2.69MiB 125k https │ avc1.4D400C 125k video only 144p, mp4_dash
603 mp4 256x144 30 │ ~ 4.17MiB 194k m3u8 │ vp09.00.11.08 194k video only
278 webm 256x144 30 │ 2.58MiB 120k https │ vp09.00.11.08 120k video only 144p, webm_dash
229 mp4 426x240 30 │ ~ 7.89MiB 368k m3u8 │ avc1.4D4015 368k video only
133 mp4 426x240 30 │ 5.82MiB 271k https │ avc1.4D4015 271k video only 240p, mp4_dash
604 mp4 426x240 30 │ ~ 7.30MiB 340k m3u8 │ vp09.00.20.08 340k video only
242 webm 426x240 30 │ 5.09MiB 237k https │ vp09.00.20.08 237k video only 240p, webm_dash
230 mp4 640x360 30 │ ~ 18.00MiB 839k m3u8 │ avc1.4D401E 839k video only
134 mp4 640x360 30 │ 13.30MiB 620k https │ avc1.4D401E 620k video only 360p, mp4_dash
18 mp4 640x360 30 2 │ 14.33MiB 667k https │ avc1.42001E mp4a.40.2 22k 360p
605 mp4 640x360 30 │ ~ 12.55MiB 585k m3u8 │ vp09.00.21.08 585k video only
243 webm 640x360 30 │ 8.20MiB 382k https │ vp09.00.21.08 382k video only 360p, webm_dash
231 mp4 854x480 30 │ ~ 30.76MiB 1433k m3u8 │ avc1.4D401F 1433k video only
135 mp4 854x480 30 │ 24.47MiB 1140k https │ avc1.4D401F 1140k video only 480p, mp4_dash
606 mp4 854x480 30 │ ~ 20.59MiB 959k m3u8 │ vp09.00.30.08 959k video only
244 webm 854x480 30 │ 14.42MiB 672k https │ vp09.00.30.08 672k video only 480p, webm_dash
136 mp4 1280x720 30 │ 46.66MiB 2174k https │ avc1.64001f 2174k video only 720p, mp4_dash
247 webm 1280x720 30 │ 26.07MiB 1215k https │ vp9 1215k video only 720p, webm_dash
311 mp4 1280x720 60 │ ~ 91.32MiB 4256k m3u8 │ avc1.640020 4256k video only
298 mp4 1280x720 60 │ 68.02MiB 3170k https │ avc1.640020 3170k video only 720p60, mp4_dash
612 mp4 1280x720 60 │ ~ 67.94MiB 3166k m3u8 │ vp09.00.40.08 3166k video only
302 webm 1280x720 60 │ 49.59MiB 2311k https │ vp09.00.40.08 2311k video only 720p60, webm_dash
312 mp4 1920x1080 60 │ ~143.20MiB 6674k m3u8 │ avc1.64002A 6674k video only
299 mp4 1920x1080 60 │ 117.67MiB 5484k https │ avc1.64002A 5484k video only 1080p60, mp4_dash
617 mp4 1920x1080 60 │ ~103.40MiB 4819k m3u8 │ vp09.00.41.08 4819k video only
303 webm 1920x1080 60 │ 81.98MiB 3820k https │ vp09.00.41.08 3820k video only 1080p60, webm_dash
623 mp4 2560x1440 60 │ ~247.81MiB 11549k m3u8 │ vp09.00.50.08 11549k video only
308 webm 2560x1440 60 │ 225.38MiB 10504k https │ vp09.00.50.08 10504k video only 1440p60, webm_dash
628 mp4 3840x2160 60 │ ~477.98MiB 22276k m3u8 │ vp09.00.51.08 22276k video only
315 webm 3840x2160 60 │ 428.97MiB 19992k https │ vp09.00.51.08 19992k video only 2160p60, webm_dash
繰り返すが、同じ動画である。
--cookiesオプションを使った場合、2560x1440や3840x2160にはwebmしかないのがわかる。そりゃ、--formatオプションではどんなに頑張ってもmp4でダウンロードできないわけだわ…
ちなみにこうなる原因や対処は、今のところ全く不明である。情報求ム。
(2024/12/19追記) 12/13のアップデートで、動画フォーマットを一つも取得できない(--list-formats を行うと、mhtml のフォーマットしか出てこない)動画について、いちおう動画フォーマットが取得できるようになった様子。ただし高画質は相変わらずmkvしか取得できない。(cookieのオンオフをした際の挙動の変化はまだ検証できていない。)
余談1:
「別にmkv形式でもいいじゃん」という説はあるが、他をmp4形式で揃えていたので何となく気持ち悪いという理由の他、yt-dlpの説明だかエラーだかで、サムネイル画像を埋め込めないよ、という記述を見かけた気がしており、できればmp4形式にしたいところ。
余談2:
こういった動画もStreamFabでは4Kのmp4形式でダウンロードできていたのだが、なぜか今日、StreamFabもエラーを吐くようになってしまった。タスケテ…
(2024/12/19追記) StreamFabでも、サインイン状態だと「指定のフォーマットが見つからない」といった趣旨のエラーとなるが、サインアウトすると正常にダウンロードできる様子。ただし、サインアウトした場合には当然のことながら年齢制限のある動画はダウンロードできない。
余談3:
全然yt-dlpではないが、noteの機能である、ページの冒頭に画像を挿入する機能について、これまで使ってきた「世界の美術館」が今日何故か使えない(一覧表示時、3枚くらい表示して読み込み中のまま止まってしまう)のだが、なんで?
yt-dlpの件も含め、もしかして自分のPC環境が何かおかしいのだろうか?
先日からデータドライブとしているSSDで「データが吹き飛ぶ(0バイトになったり消失したり)現象とか、いつの間にかデータが破損する現象とか」が起こっているので怖いところ。
でも、yt-dlpの件はこれと関係しないような気がするんだけどな。