yt-dlp - утилита для скачивания Youtube роликов
Раньше пользовался утилитой youtube-dl для скачивания Youtube роликов в терминале Ubuntu. В какой-то момент она перестала работать. Подумал, что это связано с блокировками РосКомПозора. Но оказалось, что её забросили.
Попробовал установить альтернативу - yt-dlp.
python3 -m venv ~/Downloads/yt-dlp
~/Downloads/yt-dlp/bin/pip install yt-dlp
Попытка скачивания привела к ошибке:
WARNING: [youtube]: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client.
WARNING: [youtube] Invalid po_token configuration for mweb client: gvs PO Token should be a base64url-encoded string.
WARNING: [youtube] : mweb client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=mweb.gvs+XXX".
[info]: Downloading 1 format(s): 18
[download] Sleeping 3.00 seconds as required by the site...
ERROR: unable to download video data: HTTP Error 403: Forbidden
Поддержка SABR streaming в yt-dlp пока отсутствует. Настраивать токены и вытаскивать cookies из браузера не хотелось. К счастью, оказалось, что есть форк yt-dlp-ytse, который решает эту проблему. Установил его
~/Downloads/yt-dlp/bin/pip install -U yt-dlp-ytse
Далее запустил скачивание ролика с разрешением 720p (для чего указал "-f 232+140" в параметрах утилиты)
~/Downloads/yt-dlp/bin/yt-dlp https://www.youtube.com/live/dLXkE2gj-rs -f 232+140
Чтобы посмотреть список форматов, можно запустить утилиту с параметром--list-formats
Например:~/Downloads/yt-dlp/bin/yt-dlp https://www.youtube.com/live/dLXkE2gj-rs --sb3 mhtml 48x27 0 │ mhtml │ images storyboard
sb2 mhtml 80x45 0 │ mhtml │ images storyboard
sb1 mhtml 160x90 0 │ mhtml │ images storyboard
sb0 mhtml 320x180 0 │ mhtml │ images storyboard
233 mp4 audio only │ m3u8 │ audio only unknown [en] Untested, English - original (original)
234 mp4 audio only │ m3u8 │ audio only unknown [en] Untested, English - original (original)
139 m4a audio only 2 │ 85.48MiB 49k https │ audio only mp4a.40.5 49k 22k [en] English original (default), low, m4a_dash
249 webm audio only 2 │ 87.18MiB 50k https │ audio only opus 50k 48k [en] English original (default), low, webm_dash
140 m4a audio only 2 │ 226.87MiB 129k https │ audio only mp4a.40.2 129k 44k [en] English original (default), medium, m4a_dash
251 webm audio only 2 │ 212.01MiB 121k https │ audio only opus 121k 48k [en] English original (default), medium, webm_dash
269 mp4 256x144 30 │ ~436.46MiB 249k m3u8 │ avc1.4D400C 249k video only Untested
160 mp4 256x144 30 │ 118.79MiB 68k https │ avc1.4d400c 68k video only 144p, mp4_dash
229 mp4 426x240 30 │ ~708.55MiB 404k m3u8 │ avc1.4D4015 404k video only Untested
133 mp4 426x240 30 │ 252.70MiB 144k https │ avc1.4d4015 144k video only 240p, mp4_dash
230 mp4 640x360 30 │ ~ 1.45GiB 848k m3u8 │ avc1.4D401E 848k video only Untested
134 mp4 640x360 30 │ 471.90MiB 269k https │ avc1.4d401e 269k video only 360p, mp4_dash
18 mp4 640x360 30 2 │ 640.28MiB 365k https │ avc1.42001E mp4a.40.2 44k [en] 360p
231 mp4 854x480 30 │ ~ 2.57GiB 1504k m3u8 │ avc1.4D401F 1504k video only Untested
135 mp4 854x480 30 │ 812.29MiB 464k https │ avc1.4d401f 464k video only 480p, mp4_dash
232 mp4 1280x720 30 │ ~ 4.30GiB 2510k m3u8 │ avc1.64001F 2510k video only Untested
136 mp4 1280x720 30 │ 1.47GiB 860k https │ avc1.64001f 860k video only 720p, mp4_dash
270 mp4 1920x1080 30 │ ~ 8.32GiB 4863k m3u8 │ avc1.640028 4863k video only Untested
137 mp4 1920x1080 30 │ 2.68GiB 1565k https │ avc1.640028 1565k video only 1080p, mp4_dash
Далее из первого столбца выбираем число, соответствующее видео потоку нужного разрешения (video only), а также второе число, соответствующее выбранном аудио потоку (audio only), После чего используем их через плюс, как в примере выше.
При скачивании видео потока в dash стандарте я получал отвратительную картинку. Поэтому исключал эти варианты. Хотя именно они доступны сразу же после окончания живого вещания (остальные форматы появляются немного позже).
Также обратите внимание, что при наличии нескольких звуковых дорожек, можно скачивать дорожку на нужном Вам языке (в списке форматов видно, на каком языке звуковая дорожка).
Существует конечно множество онлайн сервисов для скачивания с youtube, но они в основном либо не работают в России, либо не скачивают видео в хорошем качестве, либо не поддерживают ролики длиной больше часа.