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.