Pobierz wszystko z filmu na YouTube za pomocą youtube-dl

16

Chcę pobrać wszystko (napisy, karty, tagi, adnotacje, miniatury itp. (I oczywiście wideo w / audio)) z filmu na YouTube (na przykład ten ).

Używam youtube-dli przy ogromnej liczbie przełączników do użycia, nie mogę znaleźć niczego, co pasowałoby do moich potrzeb. Chcę również pobrać wideo / audio w najwyższej możliwej jakości, bez utraty jakości. Mimo że nie jest to YouTube, chciałem również pobrać niektóre z moich udem kursów, które kupiłem, aby móc je oglądać podczas długiej podróży.

Mam ffmpegzainstalowany, a słyszałem, że trzeba za to bezstratne pliki do pobrania z YouTube, ale nie jestem pewien, w jaki sposób połączyć ją youtube-dl.

To mój pierwszy raz youtube-dl, więc doceniam każdą pomoc.

leetbacoon
źródło

Odpowiedzi:

14

Odpowiednie opcje, których potrzebujesz:

# Filesystem
--write-annotations
--write-description
--write-info-json

# Thumbnail images
--write-all-thumbnails

# Video format
--format bestvideo+bestaudio/best
--merge-output-format mkv

# Subtitle
--all-subs
--write-auto-sub
--write-sub

# Post-processing
--add-metadata
--embed-subs

Skopiuj to do pliku konfiguracyjnego (albo /etc/youtube-dl.conflub ~/.config/youtube-dl/config).

Korzystając z tej konfiguracji, pobrałem ten film i youtube-dlnapisałem następujące pliki:

$ ls
The Problem with Time & Timezones - Computerphile.annotations.xml
The Problem with Time & Timezones - Computerphile.description
The Problem with Time & Timezones - Computerphile.info.json
The Problem with Time & Timezones - Computerphile.jpg
The Problem with Time & Timezones - Computerphile.mkv

Nie mogę tutaj opublikować mediainfowyniku, ponieważ przekracza on limit znaków, ale możesz to zobaczyć w github .


Chcę również pobrać wideo / audio w najwyższej możliwej jakości, bez utraty jakości.

youtube-dldomyślnie pobiera filmy w najwyższej możliwej jakości, ale możesz wymusić takie zachowanie za pomocą --format bestvideo+bestaudio/best.


Mimo że nie jest to YouTube, chciałem również pobrać niektóre z moich udem kursów, które kupiłem, aby móc je oglądać podczas długiej podróży.

Przeczytaj artykuł Czy mogę pobrać kurs na komputer? :

Domyślnie kompletnych kursów nie można pobrać z komputera. Robimy to z troski o piractwo.

Pamiętaj, że zawsze możesz zapisać kursy do przeglądania offline w aplikacji mobilnej Udemy . Aby uzyskać informacje na temat pobierania wykładów wideo na urządzenie mobilne z systemem iOS, kliknij tutaj . Aby uzyskać instrukcje dotyczące pobierania filmów do oglądania offline na urządzeniu z Androidem, kliknij tutaj .


Mam ffmpegzainstalowany, a słyszałem, że trzeba za to bezstratne pliki do pobrania z YouTube, ale nie jestem pewien, w jaki sposób połączyć ją youtube-dl.

youtube-dlużywa avconvdomyślnie, ale --prefer-ffmpegpozwala używać ffmpegzamiast tego. W każdym razie ta opcja nie jest potrzebna do „ bezstratnego pobierania ”. W podanym przykładzie użyłem youtube-dltylko ffmpegdo scalenia wszystkich pobranych formatów w jeden plik mkv.

nxnev
źródło
Czy to osadzi informacje z YouTube w filmie? Nie chcę tego dokładnie, chcę to po prostu pobrać, ale trzymaj to wszystko w osobnych plikach, trochę tak jak to wygląda :)
leetbacoon
I czy .mkv jest domyślnym kontenerem dla bezstratnych filmów youtube-dl?
leetbacoon
Aha, a jak pobrałeś wideo? youtube-dl [youtube-link]?
leetbacoon
1
@leetbacoon Rozumiem. Dodam raport o błędzie.
nxnev
1
@leetbacoon Kiedy pisałem tę odpowiedź, było odwrotnie, youtube-dlnie byłby w stanie pobrać niektórych filmów, gdyby --youtube-skip-dash-manifestnie było tej opcji. Właśnie wyedytowałem tę opcję, dziękuję za informację.
nxnev
6

Aby po prostu pobrać wideo, możesz użyć tego:

youtube-dl --all-subs "https://www.youtube.com/watch?v=KYBok-XGsKM"

Aby wybrać jakość wideo, należy najpierw użyć opcji -F, aby wyświetlić listę dostępnych formatów.

youtube-dl -F "https://www.youtube.com/watch?v=KYBok-XGsKM"

A to jest wynik dla twojego wideo:

[youtube] KYBok-XGsKM: Downloading webpage
[youtube] KYBok-XGsKM: Downloading video info webpage
[youtube] KYBok-XGsKM: Extracting video information
WARNING: unable to extract uploader nickname
[info] Available formats for KYBok-XGsKM:
format code  extension  resolution note
249          webm       audio only DASH audio   52k , opus @ 50k,  4.19MiB
250          webm       audio only DASH audio   75k , opus @ 70k, 5.42MiB
140          m4a        audio only DASH audio  129k , m4a_dash container, mp4a.40.2@128k, 10.59MiB
171          webm       audio only DASH audio  131k , vorbis@128k, 7.66MiB
251          webm       audio only DASH audio  135k , opus @160k, 9.58MiB
278          webm       256x144    144p   98k , webm container, vp9, 30fps, video only, 6.59MiB
160          mp4        256x144    144p  114k , avc1.4d400c, 15fps, video only, 9.04MiB
242          webm       426x240    240p  205k , vp9, 30fps, video only, 11.47MiB
133          mp4        426x240    240p  265k , avc1.4d4015, 30fps, video only, 20.11MiB
243          webm       640x360    360p  362k , vp9, 30fps, video only, 21.93MiB
134          mp4        640x360    360p  602k , avc1.4d401e, 30fps, video only, 20.42MiB
244          webm       854x480    480p  662k , vp9, 30fps, video only, 37.82MiB
135          mp4        854x480    480p 1020k , avc1.4d401f, 30fps, video only, 42.62MiB
247          webm       1280x720   720p 1353k , vp9, 30fps, video only, 81.53MiB
136          mp4        1280x720   720p 2013k , avc1.4d401f, 30fps, video only, 84.69MiB
137          mp4        1920x1080  1080p 2438k , avc1.640028, 30fps, video only, 157.71MiB
248          webm       1920x1080  1080p 2593k , vp9, 30fps, video only, 162.48MiB
264          mp4        2560x1440  1440p 6973k , avc1.640032, 30fps, video only, 459.58MiB
271          webm       2560x1440  1440p 7523k , vp9, 30fps, video only, 485.66MiB
313          webm       3840x2160  2160p 19991k , vp9, 30fps, video only, 1.34GiB
36           3gp        320x?      small , mp4v.20.3,  mp4a.40.2
17           3gp        176x144    small , mp4v.20.3,  mp4a.40.2@ 24k
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)

Oto kilka przydatnych opcji dla napisów:

   --write-sub
          Write subtitle file

   --write-auto-sub
          Write automatically generated subtitle file (YouTube only)

   --all-subs
          Download all the available subtitles of the video

   --list-subs
          List all available subtitles for the video

I dla miniatur:

   --write-thumbnail
          Write thumbnail image to disk

   --write-all-thumbnails
          Write all thumbnail image formats to disk

   --list-thumbnails
          Simulate and list all available thumbnail formats

Więcej informacji na temat jakości wideo można znaleźć tutaj

Mojtaba Zali
źródło
4
Co masz nadzieję osiągnąć dzięki ręcznemu wyborowi formatu? youtube-dldomyślnie korzysta z najlepszych dostępnych formatów audio i wideo. Jeśli chcesz zastąpić inne ustawienie w pliku konfiguracyjnym, możesz użyć -f bestvideo+bestaudio/best(który jest taki sam jak domyślny) lub zignorować plik konfiguracyjny ( --ignore-config).
David Foerster,
Nie cytuj mnie, ale myślałem, że przeczytałem wcześniej, że aby uzyskać bezstratne wideo z dźwiękiem, po prostu użyjyoutube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon
Zastanawiam się, dlaczego kopia 1080p jest uważana za najlepszą, jeśli dostępna jest wersja 1440p? I dlaczego wyświetla się 2160p? Ta opcja nie pojawia się na moim końcu (ogranicza się do 1440p)
leetbacoon
3

@leetbacoon zobacz odpowiedź na komentarz na samym dole. (niski przedstawiciel nadal płacze)

Uwaga: będę używać dłuższych nazw przełączników, aby uniknąć nieporozumień. Wiele używanych przełączników ma krótsze wersje. Zobacz Dokumenty: Opcje .

Uwaga: - dla wygody wizualnej \służy do osobnego wyświetlania przełączników; wszystko \można pominąć; jeśli używasz, \upewnij się, że po znaku nie ma spacji \.


Streszczenie: Polecenie ytdl, aby pobrać pojedynczy plik wideo o najwyższej dostępnej jakości obrazu i dźwięku. Zapisuje wideo we własnym katalogu (określonym przez Ciebie). Pobiera wszystkie dostępne metadane, zapisuje każdy w odpowiednich formatach plików i zapisuje w tym samym katalogu. Dodaje metadane wideo do pliku wyjściowego wideo.

Zamień na własne:

  • zamień /archive/videos/TED_Archive/w przełącznikach --download-archivei --outputna wybraną ścieżkę katalogu.
  • przykładowa ścieżka przechowywania / archiwum / filmy
  • przykładowy link wideo: https://www.youtube.com/watch?v=0bFs6ZiynSU
  • przykładowy katalog kanałów / Archiwum TED

====

youtube-dl \
--limit-rate '0.25M' \
--retries '3' \
--no-overwrites \
--call-home \
--write-info-json \
--write-description \
--write-thumbnail \
--all-subs \
--convert-subs 'srt' \
--write-annotations \
--add-metadata \
--embed-subs \
--download-archive '/archive/videos/TED_Archive/TED_Archive.ytdlarchive' \
--format 'bestvideo+bestaudio/best' \
--merge-output-format 'mkv' \
--output '/archive/videos/TED_Archive/%(upload_date)s_%(id)s/TED_Archive_%(upload_date)s_%(id)s_%(title)s.%(ext)s' \
'https://www.youtube.com/watch?v=0bFs6ZiynSU' ;

Uwaga: Załącz wszystkie argumenty ' 'dla parsowania bezpieczeństwa.

Objaśnienie zalecanych przełączników:

  • --limit-rate '0.25M'służy do ograniczenia dostępnej maksymalnej prędkości pobierania każdej instancji youtube-dl w B / s (bajtów na sekundę).
    Argumenty: dowolna dodatnia liczba całkowita z sufiksem wielkich liter.
    Przyrostki jednostek: K dla Kilobajta; M dla megabajtów; Nie jest jasne, czy Gigabyte jest obsługiwany.
    Dodawanie:
    1. unikaj blokowania połączenia internetowego.
    2. pomocny w zarządzaniu prędkościami pobierania wielu współbieżnych instancji ytdl.
    Ommission:
    1. zatyka internet; nie można przeglądać, opóźnia się odtwarzanie wideo na YouTube.
    2. pobierze wideo tak szybko, jak to możliwe.
    Uwaga: Możesz uruchomić wiele instancji youtube-dl jednocześnie.

  • --retries '5'służy do automatycznego ponawiania pobierania wideo, jeśli się nie powiedzie. Przydatne podczas pobierania listy odtwarzania lub całego kanału (który jest, w kategoriach Youtube, także listą odtwarzania (tego konkretnego kanału)).
    Wartości: wybierz dowolną dodatnią liczbę całkowitą. Domyślnie jest 10. Max jest infinite(wprowadź jako literał).

  • --continue
    Argumenty: brak
    Dodawanie:
    1. wymusi wznowienie pobierania częściowych plików
    Uwaga: ytdl pobiera filmy w częściach; fragmenty są zachowywane, jeśli ytdl nieoczekiwanie zakończy działanie podczas pobierania.
    Ommission:
    1. Domyślnie ytdl wznowi pobieranie, jeśli to możliwe.

  • --no-overwrites
    Argumenty: none
    Ponadto: będzie nie zastępowanie istniejących plików metadanych z tymi samymi nazwami.
    Ommission: zastąpi istniejące pliki metadanych o tych samych nazwach, ale nie plik wideo.

    • --call-home używany do kontaktowania się z serwerem ytdl w celu debugowania.

      „Jeśli twój serwer ma wiele adresów IP lub podejrzewasz, że cenzura, dodanie --call-home może być dobrym pomysłem, aby uzyskać większą diagnostykę”. - Dokumenty: Błędy , odzyskano 20180408,

  • --write-info-json
    Argumenty: brak
    Format wyjściowy: json;
    Treść informacji: liczba wyświetleń, polubienia, data przesłania, informacje o jakości wideo i audio itp. (Ale nie opis tekstowy wideo (opublikowany poniżej wideo przez przesyłającego (układ YouTube na 2018 r.)))
    Dodawanie: zapisuje metadane wideo w osobnym .info.jsonpliku. Zapisane w tym samym folderze co plik wideo.
    Omisja: nie wpływa na to, --add-metadataktóre nadal będą zapisywać metadane wideo do pliku wyjściowego wideo.

  • --write-description
    Argumenty: brak
    Format wyjściowy: zwykły tekst;
    Dodanie: zapisuje tekst opublikowany przez program do przesyłania filmów w sekcji opisu filmu (poniżej wideo (układ YouTube na 2018 r.)) W osobnym Write .descriptionpliku. Zapisane w tym samym folderze co plik wideo.

  • --write-thumbnailzapisuje maxresdefault.jpgdo .jpgpliku miniaturę o najwyższej dostępnej rozdzielczości (nazywanej przez youtube) . Zmieniono nazwę zgodnie z szablonem określonym za pomocą --output. Zapisane w tym samym katalogu co plik wideo.
    Argumenty: brak
    Format wyjściowy: tylko JPEG;
    Uwaga: służy youtube-dl --list-thumbnails '<video_url>'do sprawdzania dostępnych miniaturek określonego filmu (nie działa w przypadku linków do list odtwarzania); Dawny.:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotationszapisuje adnotacje wideo do .annotations.xmlpliku. Zmieniono nazwę zgodnie z szablonem określonym za pomocą --output. Zapisane w tym samym katalogu co plik wideo.
    Argumenty: brak
    Format wyjściowy: .xml;

  • --all-subszapisuje wszystkie niestandardowe utworzone dostępne napisy do filmu do swoich plików (np .: subtitles.en.vtt, subtitles.fr.vtt, subtitles.es.vtt)
    argumenty: brak
    Format wyjściowy: domyślne .vtt; może określić inne formaty za pomocą --sub-format
    komunikatów o błędach: Jeśli nie ma dostępnych napisów, komunikat OSTRZEŻENIE zostanie wydrukowany na standardowe wyjście - format:WARNING: video doesn't have subtitles

Przydatne polecenie:

Uwaga: służy youtube-dl --list-subs '<video_url>'do sprawdzania dostępnych miniaturek określonego filmu (nie działa w przypadku linków do list odtwarzania);
Dawny.:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    Argumenty: Łańcuch: rozszerzenie rozszerzenia ass, srt lub najlepszy
    Format wyjściowy: Domyślnie .vtt; lub zgodnie ze specyfikacją
    Dodawanie: zapisuje napisy do określonego formatu pliku (np .:) .srt. Zapisane w tym samym folderze co plik wideo.
    Ommission: napisy będą zapisywane jako .vtt
    komunikaty o błędach: Jeśli nie ma dostępnych napisów, komunikat INFO zostanie wydrukowany na standardowe wyjście - format: [ffmpeg] There aren't any subtitles to convert
    Uwaga: konwersja zostanie wykonana jako krok po przetwarzaniu .vttpliku po pobraniu. Jeśli wykonanie ytdl zostanie nieoczekiwanie zakończone, niektóre pliki z napisami mogą nie zostać przekonwertowane (w tym przypadku ponownie uruchom polecenie).

  • --add-metadata
    Argumenty: brak
    Zachowanie: zapisuje metadane w pliku wyjściowym wideo.
    Uwaga: nie wymaga .info.jsonwygenerowania przez--write-info-json

  • --embed-subs
    Argumenty: brak
    Zachowanie:
    1. zapisuje napisy do pliku wyjściowego wideo;
    2. tylko do MP4, MKV wideo WebM i
    komunikatów o błędach: Jeśli nie istnieją żadne napisy dostępne message INFO będą drukowane na standardowe wyjście - format: [ffmpeg] There aren't any subtitles to embed
    Uwaga: nie wymaga .vttgenerowane przez --write-sub, --write-auto-sublub--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    Zachowanie: służy do utworzenia pliku tekstowego zawierającego łącza do wcześniej pobranych filmów. Umożliwia pomijanie tych filmów podczas pobierania całego kanału. Nie jest konieczne przy pobieraniu tylko pojedynczych filmów.
    Argumenty: Ciąg: złożony ze ścieżki do archiwum wideo, katalog nazwany po kanale. Nazwa pliku składa się z nazwy kanału z .ytdlarchiverozszerzeniem pliku. (może być również .txt; ale unikalny format pozwala na łatwe różnicowanie)
    Format wyjściowy: zwykły tekst; jeden identyfikator wideo w wierszu
    Dodawanie:
    1. ytdl odczytuje ten plik, ignoruje i pomija wszystkie filmy z ich identyfikatorem wideo, nawet jeśli nie zostały jeszcze pobrane.
    2. automatycznie dodaje identyfikator wideo ostatnio pobranego wideo do tego pliku
    Ommission: jeśli plik wideo i pliki metadanych istnieją, ytdl pobierze je ponownie.

  • --format ''
    Argumenty: Zalecany ciąg: bestvideo+bestaudio/bestaby zapewnić najwyższą kombinację jakości obrazu i dźwięku.
    Dodatek: pełna kontrola jakości wideo i jakości dźwięku oraz ich kombinacji, a także jakości zastępczych
    Omisja: Domyślnie youtube-dl will guess it for you by default- Dokumenty
    Uwaga: Zobacz Dokumenty: Przykłady wyboru formatu

  • --merge-output-format '<video_format>'
    Argumenty: format pliku wideo. (np .: mp4, mkv, 3gp itp.)
    Dodawanie: można określić format pliku wideo
    Ommission: Domyślnie youtube-dl will guess it for you by default- Dokumenty
    Uwaga: Patrz Dokumenty: Wybór formatu

Przydatne polecenie:

Uwaga: Służy youtube-dl --list-formats '<video_url>'do sprawdzania dostępnych jakości wideo i audio oraz formatów określonego filmu (nie działa w przypadku linków do list odtwarzania);
Dawny.:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    Argumenty:
    1. format pliku wideo. (np .: mp4, mkv, 3gp itp.);
    2. Zalecane: %(upload_date)s_%(id)s_%(title)s.%(ext)s
    Dodawanie: wpływa na konwencję nazewnictwa plików dla plików wideo i wszystkich plików metadanych
    Ommission: Domyślnie tytuł wideo będzie nazwą pliku. Domyślny szablon: %(id)s.%(ext)swyświetli np .: testvideo.mkv
    Uwaga: Nie zapomnij o %prefiksie i ssufiksie (istnieją też inne wystarczające). Odległość _między elementami szablonu jest tylko separatorem i może być dowolnym innym znakiem. np .: %(upload_date)s-%(id)s
    Uwaga: Patrz Dokumenty: Szablon wyjściowy

  • '<video_url>'
    Argumenty: Łańcuch: adres URL konkretnego filmu
    Komunikat o błędzie:
    1. Jeśli adres URL filmu nie został przesłany, ytdl nie uruchomi się i nie wyświetli pomocy.
    2. Jeśli nieprawidłowy adres URL przesłanego komunikatu BŁĄD zostanie wydrukowany na standardowe wyjście - format:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


Zalecenia dotyczące przechowywania:

  1. stwórz misckatalog w swoim archiwum wideo i przechowuj tam wszystkie pojedyncze filmy.

  2. gdy pobierzesz jeden lub więcej filmów z kanału, stwórz dedykowany katalog dla tego kanału. W takim przypadku nazwa kanału to TED Archivei nazwa katalogu TED_Archive. (Zapobiegawczo podstawiam wszystkie znaki spacji znakami podkreślenia, aby ułatwić nawigację w katalogu i operacje we / wy pliku podczas korzystania ze skryptów bash (lub python)).


W odpowiedzi na Twój komentarz @leetbacoon

Zastanawiam się, dlaczego kopię 1080p uważa się za najlepszą, jeśli dostępna jest wersja 1440p? I dlaczego wyświetla się 2160p? Ta opcja nie pojawia się na moim końcu (ogranicza się do 1440p) - leetbacoon

Z Dokumentów
You can also use a file extension (currently 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm are supported) to download the best quality format of a particular file extension served as a single file

best: Select the best quality format represented by a single file with video and audio.

bestvideo: Select the best quality video-only format

Myślę, że kiedy wybierzesz tylko besti określisz format wyjściowy, YouTube wyśle ​​format, który uważa za najlepszą kombinację wideo + audio dla tego formatu. Może to podlegać niektórym wewnętrznym decyzjom dotyczącym równoważenia YouTube (spekulacje).


W moim doświadczeniu użytkowania musiałem konkretnie określić, bestvideo+bestaudioaby uzyskać NAJWYŻSZĄ dostępną jakość wideo i audio, a następnie połączyć je w kontenerze .mkv.


Używam /bestjako argumentu zastępczego, dla pewności.


Dreaming Of Cortana
źródło