Jak wybrać jakość wideo z youtube-dl?


255

Zainstalowałem youtube-dl w moim 14.04.

Mogę pobrać wideo, wykonując następujące polecenie,

$ youtube-dl [youtube-link]

Ale chcę wiedzieć, jak wybrać dostępną jakość pikseli wideo na YouTube ( tj. 1080p, 720p, 480p itp . ) .

W opisie oprogramowania powiedzieli, że to możliwe (pokazano na obrazku poniżej), ale jak to zrobić ...

ss


1
Powyższy opis jest nieaktualny. Ze manstrony: „youtube-dl domyślnie pobiera teraz najwyższą dostępną jakość zgłoszoną przez YouTube, która w niektórych przypadkach będzie wynosiła 1080p lub 720p”.
Jos

1
Pamiętaj, że YouTube zastosował jakiś rodzaj ochrony, który uniemożliwia narzędziom do pobierania pobieranie (a nawet oglądanie) wersji 1080p, ale nadal możesz pobrać wszystkie inne rozdzielczości do 720p włącznie.
thomasrutter

Wiem, że jestem trochę spóźniony na przyjęcie, ale oto moje doświadczenie: askubuntu.com/a/1097056/327339 . Użyj -f bestopcji.
Gabriel Staples

Odpowiedzi:


360

Aby pobrać wideo, wpisz adres URL po poleceniu w następujący sposób:

youtube-dl 'http://www.youtube.com/watch?v=P9pzm5b6FFY'

Aby wybrać jakość wideo , najpierw użyj -Fopcji, aby wyświetlić listę dostępnych formatów, oto przykład:

youtube-dl -F 'http://www.youtube.com/watch?v=P9pzm5b6FFY'

Oto wynik:

[youtube] Setting language
[youtube] P9pzm5b6FFY: Downloading webpage
[youtube] P9pzm5b6FFY: Downloading video info webpage
[youtube] P9pzm5b6FFY: Extracting video information
[info] Available formats for P9pzm5b6FFY:
format code extension resolution  note 
140         m4a       audio only  DASH audio , audio@128k (worst)
160         mp4       144p        DASH video , video only
133         mp4       240p        DASH video , video only
134         mp4       360p        DASH video , video only
135         mp4       480p        DASH video , video only
136         mp4       720p        DASH video , video only
17          3gp       176x144     
36          3gp       320x240     
5           flv       400x240     
43          webm      640x360     
18          mp4       640x360     
22          mp4       1280x720    (best)

Najlepsza jakość to 22, więc użyj -f 22zamiast -Fpobierać wideo MP4 o rozdzielczości 1280x720 w następujący sposób:

youtube-dl -f 22 'http://www.youtube.com/watch?v=P9pzm5b6FFY'

Lub opcjonalnie użyj następujących flag, aby automatycznie pobrać najlepsze ścieżki audio i wideo, które są dostępne jako pojedynczy plik:

youtube-dl -f best 'http://www.youtube.com/watch?v=P9pzm5b6FFY'

Jeśli napotkasz błąd podczas procesu multipleksowania lub problem z wyborem jakości wideo, możesz użyć jednego z następujących poleceń:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 'http://www.youtube.com/watch?v=P9pzm5b6FFY'

lub, jak wskazał tutaj Gabriel Staples , następujące polecenie zazwyczaj wybiera rzeczywistą najlepszą rozdzielczość jakości pojedynczego pliku zamiast przepływności jakości wideo:

youtube-dl -f best 'http://www.youtube.com/watch?v=P9pzm5b6FFY'

Te polecenia zapewnią pobranie najwyższej jakości wideo mp4 i audio m4a z wideo jako jednego pliku lub scalą je z powrotem w jeden plik mp4 (używając ffmpegw moim przypadku). Jeśli ffmpeglub avconvnie jest dostępny, youtube-dlpowinien powrócić do pojedynczego pliku -f best optionzamiast domyślnego.

Kliknij tutaj, aby uzyskać bardziej szczegółowe informacje i kilka różnych przykładów.

Kliknij również, aby zobaczyć tę pokrewną odpowiedź autorstwa Gabriela Staplesa.


Źródło: www.webupd8.org/2014/02/video-downloader-youtube-dl-gets.html

Źródło: github.com/rg3/youtube-dl


5
Upewnij się, że nie wybierasz DASH. To będzie niemożliwe do zagrania!
ps95

@ prakharsingh95 tylko dźwięk DASH można przekonwertować na standardowy format wave lub mp3 za pomocą gnac lub podobnego oprogramowania.
mchid

1
Miałem na myśli DASH Video. Próbowałem pobrać 4K, ale wszystko w DASHformacie ( DASHpozwala YouTube zachować przepustowość). Jest zupełnie inna, w większości będzie niemożliwa do odtworzenia.
ps95

1
@ prakharsingh95 Tak, jeśli cokolwiek może być w stanie wyświetlić MP4 za pomocą VLC, ponieważ VLC pozwala zsynchronizować wideo z oddzielnym plikiem audio. Jednak tego nie próbowałem. Czy próbowałeś przekonwertować plik MP4 z pobranego pliku DASH do formatu AVI? Myślę, że są podobne.
mchid

2
Tak. Oczywiście można grać w Dash, ale musisz zmiksować strumienie z czymś takim avconv. Za wolno dla 4K.
ps95,

110

Możesz pobrać 1080p za pomocą youtube-dl, ale musisz wykonać trochę dodatkowej pracy. Zwykle pobiera tylko 720p jako maksimum, nawet jeśli możesz zobaczyć 1080p na youtube.com.

Uruchom z, -Faby zobaczyć dostępne formaty:

youtube-dl -F https://www.youtube.com/watch\?v\=-pxRXP3w-sQ

171         webm      audio only  DASH audio  115k , audio@128k (44100Hz), 2.59MiB (worst)
140         m4a       audio only  DASH audio  129k , audio@128k (44100Hz), 3.02MiB
141         m4a       audio only  DASH audio  255k , audio@256k (44100Hz), 5.99MiB
160         mp4       256x144     DASH video  111k , 12fps, video only, 2.56MiB
247         webm      1280x720    DASH video 1807k , 1fps, video only, 23.48MiB
136         mp4       1280x720    DASH video 2236k , 24fps, video only, 27.73MiB
248         webm      1920x1080   DASH video 3993k , 1fps, video only, 42.04MiB
137         mp4       1920x1080   DASH video 4141k , 24fps, video only, 60.28MiB
43          webm      640x360
18          mp4       640x360
22          mp4       1280x720    (best)

zwróć uwagę, że youtube-dlostatnią opcję 1280x720 oznaczono jako „najlepszą” jakość i to jest to, co zostanie domyślnie pobrane, ale linia zaczynająca się od 137 jest w rzeczywistości wyższej jakości 1920x1080. Youtube oddzielił strumienie wideo i audio dla linii oznaczonych DASH, więc musimy również wybrać dźwięk najwyższej jakości, którym w tym przypadku jest linia zaczynająca się od 141. Następnie uruchomimy youtube-dlponownie, określając audio i wideo:

youtube-dl -f 137+141 https://www.youtube.com/watch\?v\=-pxRXP3w-sQ

i pobiera wideo 1080p i automatycznie łączy je z dźwiękiem najwyższej jakości. Powinien również automatycznie usuwać oddzielne pobrane części. Ta metoda to trochę dodatkowa praca, ale zapewni najlepsze wyniki.


11
dziękuję bardzo, nie wiedziałem o 137 + 141
whitesiroi

3
Twój przykład i inne przedstawiają łatwe wybory audio - to znaczy dla wysokiej jakości wybierz ten, który ma najwyższą wartość bitrate. Niedawno jednak znalazłem się w obliczu wyboru między DASH audio , opus @160klub DASH audio 126k , audio@128k (44100Hz), 1.79MiBlub DASH audio 127k , m4a_dash container, aac @128k (44100Hz), 1.94MiB. Musiałem wybrać, ale nie jestem pewien co do jakości, a może kompatybilności.
user643722,

1
Najlepszą rzeczą w youtube-dl jest to, że jest wieloplatformowa. To rozwiązanie działa nie tylko w systemie Linux, ale także na komputerach Mac i Windows. Dziękuję Ci!
Antony

2
Obecnie jest to ustawienie domyślne, ale tylko jeśli masz avconv (libav) lub ffmpeg do konwersji plików. Dla systemu Windows, który chcesz ustawić --ffmpeg-locationw %APPDATA%\youtube-dl\config.txtkatalogu, w którym zainstalowany jest avconv / ffmpeg. Jeśli masz system z niższej półki, możesz -f bestvideo[fps<=30]+bestaudiotam również chcieć , aby uniknąć wideo 60 klatek na sekundę.
GreenReaper,

29

Aby wybrać określone rozdzielczości, możesz określić rozmiar i jakość dźwięku, aby były one wybierane automatycznie - więc dla 480p :

-f 'bestvideo[height<=480]+bestaudio/best[height<=480]'

z bestvideo[height<=720]+bestaudio/best[height<=720]720p itp. Można to dodać do pliku konfiguracyjnego w ~/.config/youtube-dl/config(lub nawet /etc/youtube-dl.conf), aby nie uzyskać zbyt dużych pobrań:

mkdir ~/.config/youtube-dl
echo "-f 'bestvideo[height<=720]+bestaudio/best[height<=720]'" >> ~/.config/youtube-dl/config

Możesz użyć, --ignore-configjeśli chcesz wyłączyć plik konfiguracyjny dla określonego uruchomienia youtube-dl.

Należy pamiętać, że dość często trzeba będzie pobrać osobną parę wideo i audio i połączyć je.

Więcej przykładów można znaleźć w youtube-dldoucmentation .


1
Miałem problem polegający na tym, że różne segmenty tego samego filmu miały różne kody formatu dla tej samej rozdzielczości (np. Hls-1476 dla wideo 1 z 2 i hls-1665 dla wideo 2 z 2, gdzie oba miały 540p), więc nie mogłem po prostu użyć „-f hls-1476” lub „-f hls-1665” lub otrzymałbym komunikat „BŁĄD: żądany format niedostępny” Twoje przykłady poleceń pomogły mi odzyskać to, czego chciałem.
ssnobody

1
+1 za~/.config/youtube-dl/config
Marinos An

10

Poniżej podano niektóre inne opcje pobierania filmów o najlepszej jakości, inne niż wymienione tutaj, w zależności od wygody:

Pobierz najlepszy dostępny format mp4 lub inny najlepszy, jeśli nie ma mp4

$ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'

Pobierz najlepszy dostępny format, ale nie lepszy niż 480p

$ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]'

Pobierz najlepszy format tylko wideo, ale nie większy niż 50 MB

$ youtube-dl -f 'best[filesize<50M]'

Pobierz najlepszy format dostępny poprzez bezpośredni link przez protokół HTTP / HTTPS

$ youtube-dl -f '(bestvideo+bestaudio/best)[protocol^=http]'

Odniesienie:

Bezpośrednio ze strony youtube-dl github


Jak łączyć ext=mp4 && height<=480 && filesize<50M?
mrgloom

6

Skrypt opakowujący bash, który monituje o format, który obejmuje wszystkie dostępne wersje, w tym tylko audio, tylko wideo, a następnie przesyła strumieniowo wideo / audio mpv.

Akceptuje zarówno bezwzględne adresy URL youtube, jak i identyfikatory wideo.

#!/ usr/bin/env bash
# Download youtube video with desired quality

# youtube-dl accepts both fully qualified URLs and video id's such as AQcQgfvfF1M

url="$*"

echo "Fetching available formats for $url..."
youtube-dl -F "$url"
read -p "Please enter the desired quality code: " FORMAT

echo "Streaming with quality $FORMAT..."
mpv --cache=1024 $(youtube-dl -f $FORMAT -g "$url")

Przykładowe dane wyjściowe :

    yt.sh https://m.youtube.com/watch?v=Dax_tnZRExc
    [youtube] Dax_tnZRExc: Downloading webpage
    [youtube] Dax_tnZRExc: Downloading video info webpage
    [youtube] Dax_tnZRExc: Extracting video information
    [youtube] Dax_tnZRExc: Downloading MPD manifest
    [info] Available formats for Dax_tnZRExc:
    format code  extension  resolution note
    139          m4a        audio only DASH audio   49k , m4a_dash container, mp4a.40.5@ 48k (22050Hz), 308.75KiB
    249          webm       audio only DASH audio   50k , opus @ 50k, 271.91KiB
    250          webm       audio only DASH audio   70k , opus @ 70k, 366.63KiB
    171          webm       audio only DASH audio  118k , vorbis@128k, 652.50KiB
    140          m4a        audio only DASH audio  127k , m4a_dash container, mp4a.40.2@128k (44100Hz), 820.00KiB
    251          webm       audio only DASH audio  130k , opus @160k, 705.84KiB
    160          mp4        256x144    DASH video  109k , avc1.4d400c, 13fps, video only, 703.64KiB
    278          webm       256x144    144p  111k , webm container, vp9, 25fps, video only, 439.72KiB
    242          webm       426x240    240p  243k , vp9, 25fps, video only, 623.95KiB
    133          mp4        426x240    DASH video  252k , avc1.4d4015, 25fps, video only, 1.54MiB
    134          mp4        640x360    DASH video  388k , avc1.4d401e, 25fps, video only, 1.24MiB
    243          webm       640x360    360p  458k , vp9, 25fps, video only, 1.19MiB
    135          mp4        854x480    DASH video  761k , avc1.4d401e, 25fps, video only, 2.40MiB
    244          webm       854x480    480p  893k , vp9, 25fps, video only, 2.00MiB
    136          mp4        1280x720   DASH video 1382k , avc1.4d401f, 25fps, video only, 4.56MiB
    247          webm       1280x720   720p 1754k , vp9, 25fps, video only, 3.94MiB
    137          mp4        1920x1080  DASH video 2350k , avc1.640028, 25fps, video only, 8.48MiB
    248          webm       1920x1080  1080p 2792k , vp9, 25fps, video only, 8.09MiB
    17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k
    36           3gp        320x180    small , mp4v.20.3, mp4a.40.2
    43           webm       640x360    medium , vp8.0, vorbis@128k
    18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k
    22           mp4        1280x720   hd720 , avc1.64001F, mp4a.40.2@192k (best)
    Please enter the desired format #

Jeśli chcesz pobrać wideo, a nie je przesyłać strumieniowo, po prostu usuń mpv --cache=1024część i znak dolara za pomocą nawiasów.


2

Jak uzyskać najlepszą dostępną jakość wideo.

Ta odpowiedź tutaj, z największą liczbą głosów, powinna być właściwa, aby zapewnić najlepszą dostępną jakość wideo, ale ... nie jest. bestvideo+bestaudiowydaje się wybierać tylko najlepsze wideo i najlepszy dźwięk spośród opcji, które są tylko wideo i tylko audio , a następnie łączy je ze sobą. Zauważ, że wydaje się to również identyczne z domyślnym zachowaniem youtube-dl. Jednak w filmie, na który patrzyłem, najlepszą jakością był pojedynczy, wstępnie scalony plik, który był już w formacie z połączonym obrazem i dźwiękiem. bestvideo+bestaudioOpcja nie wybrał tę najlepszą jakość pliku 720p, ponieważ szukałem tylko dla odrębnej plików audio i wideo. Szczegóły poniżej.

Rozwiązanie? Niech to zrobi najlepszy pojedynczy plik, który zawiera zarówno wideo, jak i audio w jednym, dzięki temu:

youtube-dl -f best https://youtu.be/FWGC9SqA3J0

W skrócie: użyj -f bestopcji, NIE -f bestvideo+bestaudioopcji!

Dowód:

wprowadź opis zdjęcia tutaj

Dokładniej, zobacz poniżej wyniki działania

youtube-dl -F https://youtu.be/FWGC9SqA3J0

aby zobaczyć, jakie filmy „F” są dostępne do pobrania:

gabriel ~ $ youtube-dl -F https://youtu.be/FWGC9SqA3J0
[youtube] FWGC9SqA3J0: Downloading webpage
[youtube] FWGC9SqA3J0: Downloading video info webpage
[youtube] FWGC9SqA3J0: Downloading MPD manifest
[youtube] FWGC9SqA3J0: Downloading MPD manifest
[info] Available formats for FWGC9SqA3J0:
format code  extension  resolution note
139          m4a        audio only DASH audio   50k , m4a_dash container, mp4a.40.5@ 48k (22050Hz), 2.30MiB
249          webm       audio only DASH audio   51k , opus @ 50k, 2.34MiB
250          webm       audio only DASH audio   62k , opus @ 70k, 2.85MiB
171          webm       audio only DASH audio  103k , vorbis@128k, 4.68MiB
251          webm       audio only DASH audio  109k , opus @160k, 5.10MiB
140          m4a        audio only DASH audio  130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 6.13MiB
160          mp4        256x138    DASH video  108k , mp4_dash container, avc1.4d400b, 24fps, video only
134          mp4        640x348    DASH video  142k , mp4_dash container, avc1.4d401e, 24fps, video only, 3.42MiB
133          mp4        426x232    DASH video  242k , mp4_dash container, avc1.4d400c, 24fps, video only
136          mp4        1280x694   DASH video  473k , mp4_dash container, avc1.4d401f, 24fps, video only, 8.01MiB
135          mp4        854x464    DASH video 1155k , mp4_dash container, avc1.4d4014, 24fps, video only
17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k, 1.63MiB
36           3gp        320x174    small , mp4v.20.3, mp4a.40.2, 2.98MiB
43           webm       640x360    medium , vp8.0, vorbis@128k, 7.44MiB
18           mp4        640x348    medium , avc1.42001E, mp4a.40.2@ 96k, 8.54MiB
22           mp4        1280x694   hd720 , avc1.64001F, mp4a.40.2@192k (best) 

Zauważ, że wiersz 22 mówi „(najlepiej)” po jego prawej stronie. Jest to jedyna opcja, która oferuje jakość HD720, która jest najlepszą jakością, jaką mogę uzyskać, oglądając ten film w przeglądarce internetowej na YouTube. Jest najczystszy i ma najlepszą definicję. Gdy korzystam z jednego z poleceń zalecanych przez pierwszą odpowiedź:

youtube-dl -f bestvideo+bestaudio https://youtu.be/FWGC9SqA3J0

LUB:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 https://youtu.be/FWGC9SqA3J0

W efekcie powstaje film o niższej jakości / niższej rozdzielczości i większym rozmiarze pliku. Nie rozumiem tego dokładnie, ale -f bestzdecydowanie jest to jedyna opcja, która naprawdę zapewnia mi najlepszą rozdzielczość.

Oto kilka zrzutów ekranu:

  1. Użycie tutaj niższej jakości -f bestvideo+bestaudio opcji przyjętej tutaj jako właściwej odpowiedzi (LUB po prostu użycie opcji domyślnej:) youtube-dl https://youtu.be/FWGC9SqA3J0:

    • wprowadź opis zdjęcia tutaj
    • Zwróć uwagę, jak rozmyte są ikony na górze i jak trudno jest odczytać otwarte okno i małe słowa w nim zawarte!
    • Jest to znacznie gorsze niż jakość, którą uzyskuję, oglądając online na YouTube bezpośrednio w przeglądarce.
    • Ta opcja również z jakiegoś powodu zajmuje więcej pamięci: wideo ma 18,0 MB, a pobranie i ponowne połączenie (audio + wideo) mojego systemu zajęło więcej czasu niż -f bestopcja poniżej, która musiała wykonać tylko jedno pobranie, a nie rekombinacja ponieważ był to już jeden plik.
  2. Korzystając z opcji wyższej jakości -f best , którą polecam:

    • wprowadź opis zdjęcia tutaj
    • Zauważ, jak wyraźniejsze są małe ikony u góry i mała czcionka w oknie!
    • Jest to identyczna rozdzielczość, jak w przypadku oglądania w najwyższej możliwej rozdzielczości bezpośrednio w przeglądarce na YouTube.
    • Ta opcja z jakiegoś powodu również zajmuje mniej pamięci: wideo ma 14,8 MB.

Dodatkowe czytanie:

Zobacz man youtube-dlszczegóły.


1
dziwne, że widzę listę opcji 1920x1080, ale opcja 1280x720 (hd720) wciąż mówi „najlepszy”
nmz787

Wszystkie zrzuty ekranu pokazują niektóre elementy elektroniczne.
localhost

@ localhost, zgadza się. Są to zrzuty ekranu z adresu URL filmu, który widzisz we wszystkich moich fragmentach kodu w całym poście: youtu.be/FWGC9SqA3J0 .
Gabriel Staples

@GabrielStaples Aah. Tak, to ma sens. Przepraszam za to.
localhost

Czy to nie dziwne, że najwyższa liczba po lewej stronie nie odpowiada największej liczbie pikseli na ekranie w twoim przykładowym kodzie dostępnych formatów?
Ben

0

Jestem oszczędzaczem dysku, więc pobieram filmy w tym formacie 1280 x 720,
ponieważ 4kfilmy zajmują więcej miejsca na dysku twardym.
Więc dodaję youtube-dl~ /. plik bashrc jak podano poniżej

Ustawianie pracy -

otwórz terminal i typ

  • nano ~/.bashrc
    teraz przejdź na sam dół pliku i dodaj podane poniżej polecenie
  • alias yt='youtube-dl -if best'
  • zapisz plik naciskając, Ctrl oa następnie naciśnijEnter
  • zamknij plik, naciskając Ctrl x
  • i polecenie ostatniego uruchomienia source ~/.bashrcw terminalu

Eksperyment -

otwórz terminal i wpisz
yt https://www.youtube.com/watch?v=puPUJlV1-W4
Rozpocznie się pobieranie wideo o najlepszej jakości.

Objaśnienie -
Bash pozwala nam zdefiniować aliasy, które działają jak skróty do poleceń bash,
w naszym przypadku definiujemy alias jako -
alias yt = 'youtube-dl -i f best'
gdzie yt jest skrótem do polecenia 'youtube-dl', co daje ulgę
nasze palce wpisują długie polecenie.
Możesz napisać wszystko w miejscu yt .
Ustawiam flagę -i, w której znaczyyoutube-dl -if best

Będzie kontynuować w przypadku błędów pobierania, na przykład, aby pominąć niedostępne filmy na liście odtwarzania


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.