Pobieranie czegokolwiek z youtuba w fullhd z konsoli

Niektórzy lubią filmy, inni muzykę, a jeszcze inni po prostu potrzebują zapisać na dysk filmiki z kotami. Powód wymyślcie sobie sami 🙂


Od niedawna wszelkiego rodzaju pobieraczki youtubowe przestały oferować jakość full HD z dźwiękiem. No cóż, trzeba sobie radzić inaczej. Za pomocą youtube-dl można pobrać osobno dowolną ścieżkę audio z youtube oraz dowolną ścieżkę video, o wybranym bitrate, codecu oraz rozdzielczości.

Co będzie potrzebne?

Potrzeba nam dwóch narzędzi. A w zasadzie trzech – pipem pobierzemy downloader:

sudo apt install ffmpeg python3-pip
sudo pip3 install youtube_dl

Pakiet pip będzie nam służył do pobrania właściwego narzędzia w pythonie – youtube-dl. Za jego pomocą można zobaczyć co dany film oferuje do pobrania – wszystkie wersje audio i video oraz umożliwia pobranie ich. Ffmpeg posłuży do połączenia osobnych ścieżek audio oraz video w jeden plik.

Pobranie audio i video

Po pierwsze wybierzmy jakieś interesujące video. Na przykład to: https://www.youtube.com/watch?v=G1IbRujko-A.

Za pomocą youtube-dl można wyświetlić listę dostępnych ścieżek audio i video:

~> youtube-dl -F 'https://www.youtube.com/watch?v=G1IbRujko-A'
[youtube] G1IbRujko-A: Downloading webpage
[youtube] G1IbRujko-A: Downloading video info webpage
[youtube] G1IbRujko-A: Downloading js player vflYv1bWD
[info] Available formats for G1IbRujko-A:
format code  extension  resolution note
249          webm       audio only DASH audio  117k , opus @ 50k, 272.51MiB
250          webm       audio only DASH audio  136k , opus @ 70k, 351.10MiB
140          m4a        audio only DASH audio  162k , m4a_dash container, mp4a.40.2@128k, 545.84MiB
171          webm       audio only DASH audio  191k , vorbis@128k, 577.59MiB
251          webm       audio only DASH audio  207k , opus @160k, 667.00MiB
160          mp4        256x144    144p  170k , avc1.4d400c, 24fps, video only, 205.76MiB
133          mp4        426x240    240p  237k , avc1.4d4015, 24fps, video only, 543.85MiB
278          webm       256x144    144p  281k , webm container, vp9, 24fps, video only, 401.04MiB
242          webm       426x240    240p  302k , vp9, 24fps, video only, 467.08MiB
134          mp4        640x360    360p  338k , avc1.4d401e, 24fps, video only, 968.71MiB
243          webm       640x360    360p  528k , vp9, 24fps, video only, 1.41GiB
135          mp4        854x480    480p  690k , avc1.4d401e, 24fps, video only, 2.24GiB
244          webm       854x480    480p  739k , vp9, 24fps, video only, 2.37GiB
247          webm       1280x720   720p 1090k , vp9, 24fps, video only, 3.61GiB
136          mp4        1280x720   720p 1154k , avc1.4d401f, 24fps, video only, 4.41GiB
137          mp4        1920x1080  1080p 2373k , avc1.640028, 24fps, video only, 9.32GiB
248          webm       1920x1080  1080p 2647k , vp9, 24fps, video only, 5.18GiB
43           webm       640x360    medium , vp8.0, vorbis@128k, 3.06GiB
18           mp4        640x360    medium  485k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 2.04GiB
22           mp4        1280x720   hd720 1179k , avc1.64001F, mp4a.40.2@192k (44100Hz) (best

W tym przypadku można pobrać gotowy plik – ścieżkę 22. W niektórych filmach, np. w teledyskach nie ma połączonej wersji audio + video i jest możliwość pobrania tylko osobnego audio i osobnego video. Zróbmy więc tak:

youtube-dl --format 171 'https://www.youtube.com/watch?v=G1IbRujko-A'
youtube-dl --format 136 'https://www.youtube.com/watch?v=G1IbRujko-A'

Ścieżka o id formatu 171 to audio w kontenerze webm, z kodekiem vorbis i bitrate 191k (powyższa tabelka). Ścieżka 136 to video 1280×720 mp4. W bieżącym katalogu powinieneś widzieć dwa nowe pliki – jeden z rozszerzeniem webm, a drugi mp4. Po otworzeniu w dowolnym odtwarzaczu pierwszy z nich będzie grał, a drugi wyglądał.

Łączenie w całość

Na koniec pozostaje połączyć jedno i drugie w jeden plik MP4:

ffmpeg -i [plik].webm -i [plik].mp4 -acodec copy -vcodec copy plik-calosc.mp4

Powyższe polecenie przekopiuje ścieżkę audio (-acodec copy) oraz ścieżkę video (-vcodec copy) bez ponownej kompresji. Obie ścieżki zostaną zapisane w pliku plik-calosc.mp4. I to wszystko.

2 Replies to “Pobieranie czegokolwiek z youtuba w fullhd z konsoli”

    1. Wtedy nie byłoby tego tutoriala i pretekstu żeby napisać coś o ffmpeg 🙂 U mnie też to działa, ale pobiera tylko w 640×480 i niestety nie potrafi połączyć z wyższymi rozdzielczościami.

Leave a Reply