youtube-dl
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Eine immer wiederkehrende Frage bezieht sich darauf, wie man Videos von YouTube oder anderen Video-Portalen und auch Mediatheken dauerhaft speichern kann – ob man das darf, ist eine andere Frage und hängt von den rechtlichen Rahmenbedingungen im Heimatland bzw. am Standort des Benutzers ab (siehe Links, wovon auch einer auf die unterstützten Websites verweist).
youtube-dl 🇬🇧 ist eine Möglichkeit für die Kommandozeile – auch zum direkten Anschauen in einem beliebigen Mediaplayer. youtube-dlG und ytd-gtk 🇬🇧 (darauf aufbauend vido 🇬🇧) bieten einfache, Tartube 🇬🇧 dagegen bietet eine umfangreichere grafische Oberfläche. Grafische Starter liefert VidStarter.
Weitere Programme sind im Artikel Streams speichern zu finden.
Installation¶
Voraussetzungen¶
Das Programm benötigt Python in der Version 3.4 oder neuer oder alternativ Python 2.7 und FFmpeg bzw. die darin enthaltenen Kommandozeilenprogramme ffmpeg
und ffprobe
).
ffmpeg (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install ffmpeg
Oder mit apturl installieren, Link: apt://ffmpeg
Ubuntu-Paket¶
youtube-dl ist in den offiziellen Paketquellen enthalten, die Installation des Pakets youtube-dl (universe) ist aber nicht empfehlenswert. Der Grund ist, dass das Paket eine relativ alte und mit YouTube (für Xenial und Bionic) nicht mehr funktionierende Version des Programms enthält. Daher wird die Installation einer aktuellen Version über pip, wie im folgenden Abschnitt beschrieben, empfohlen.
Installation mit pip¶
Eine Alternative zur Installation aus den offiziellen Paketquellen ist die Installation via pip. Mit pip lässt sich auch einfach eine Aktualisierung durchführen, wenn Google bzw. die Betreiber von anderen durch youtube-dl unterstützte Internet-Portalen ggf. Anpassungen vorgenommen haben, die nicht kompatibel mit einer älteren Version sind.
Der Python Paketmanager pip stellt häufig aktuellere Versionen von Programmen als in den Paketquellen bereit. Folgendermaßen lässt sich das Programm darüber installieren:
pip3 install youtube-dl # Programm wird nur für den aktuellen Nutzer installiert
Hinweis!
Fremdsoftware kann das System gefährden.
Für Python 2.7 lautet der Aufruf pip
anstatt pip3
.
optionale Programme¶
Die folgenden Programme bzw. Pakete werden benötigt, wann man von bestimmten Plattformen Videos laden will. Für Youtube reichen aber das oben genannte ffmpeg und youtube-dl aus.
Für Videos, welche über das RTMP-Protokoll gestreamt werden, muss RTMPDump 🇬🇧 installiert werden[1]:
rtmpdump (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install rtmpdump
Oder mit apturl installieren, Link: apt://rtmpdump
Für Videos, welche über die beiden Protokolle MMS und RTSP gestreamt werden, muss MPlayer oder / und mpv über das bzw. die folgende(n) Paket(e) installiert werden:
mplayer (universe, MPlayer für die Bedienung nur per Kommandozeile)
mpv (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install mplayer mpv
Oder mit apturl installieren, Link: apt://mplayer,mpv
Falls youtube-dl anstelle des eigenen Downloaders (temporär) den externen Download-Manager aria2 verwenden soll, muss das gleichnamige Paket installiert werden:
aria2 (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install aria2
Oder mit apturl installieren, Link: apt://aria2
Benutzung¶
Die Verwendung des Programms erfolgt im Terminal[2]. Die allgemeine Syntax lautet:
youtube-dl [OPTIONEN] URL_DER_WEBSEITE_DES_VIDEOS
Beispiel:
youtube-dl "https://www.youtube.com/watch?v=HED4h00xPPA"
[youtube] Setting language [youtube] HED4h00xPPA: Downloading webpage [youtube] HED4h00xPPA: Downloading video info webpage [youtube] HED4h00xPPA: Extracting video information [download] Destination: Ubuntu told by Nelson Mandela-HED4h00xPPA.mp4 [download] 100% of 4.43MiB in 00:06
Die URL_DER_WEBSEITE_DES_VIDEOS sollte immer in Anführungszeichen gesetzt werden, damit vermieden wird, dass etwaige darin vorkommende Sonderzeichen von der Shell interpretiert werden können.
Möchte man die Youtube-ID aus dem Namen/Titel des Videos entfernen, so lautet der Befehl:
youtube-dl -o "%(title)s.%(ext)s" "https://www.youtube.com/watch?v=HED4h00xPPA"
Benötigt man nur die Tonspur des Videos, so reicht folgender Befehl:
youtube-dl -x "https://www.youtube.com/watch?v=HED4h00xPPA"
Man kann auch festlegen, in welchen Format der Ton gespeichert werden soll:
youtube-dl -x --audio-format mp3 --audio-quality 0 "https://www.youtube.com/watch?v=HED4h00xPPA"
Möchte man nach dem Herunterladen die technischen und Metadaten der Video- bzw. Audiodatei angezeigt bekommen, so empfiehlt sich dafür das Programm MediaInfo, womit ein Aufruf folgendermaßen lauten könnte:
mediainfo eine_datei.mp4
Mit der Angabe der Playlisten-URL kann auch eine ganze Playliste heruntergeladen werden:
youtube-dl [OPTIONEN] URL_DER_PLAYLISTE
In neueren Version unterstützt youtube-dl auch verschiedene deutsche Mediatheken, u.a. die von ARD, ZDF und ARTE. Alle unterstützten Video-Portale listet zum einen der Befehl:
youtube-dl --list-extractors | less
Da die Ausgabe sehr lang ist, wird sie hier mit less seitenweise ausgegeben. Die Anzeige wird mit der Taste Q beendet. Zum anderen erfährt man die unterstützten Portale über einen Link.
Man kann die zahlreichen weiteren Optionen neben der Manpage auch über den Befehl:
youtube-dl --help | less
in Erfahrung bringen.
⚓︎ Falls man das Video nicht speichern, sondern direkt in einem beliebigen Mediaplayer (wie z.B. VLC) anschauen möchte, so erreicht man das, indem der Stream via Pipe-Operator an den Mediaplayer weitergeleitet wird:
youtube-dl [OPTIONEN] -o - URL_DES_VIDEOS | vlc -
Hinweis:
Konfiguration¶
Wenn bestimmte Optionen häufiger benutzt werden, können diese auch in einer Konfigurationsdatei eingetragen werden[4]. Diese muss ggf. selber angelegt werden, für systemweite Nutzung als /etc/youtube-dl.conf, benutzerspezifisch als ~/.config/youtube-dl/config, man kann durch die --config-location
-Option beim Aufruf auch andere Speicherorte angeben. Jede Zeile stellt einen Parameter in der gleichen Syntax wie auf der Kommandozeile dar. Zeilen, die mit einem Rautenzeichen (#) beginnen, werden als Kommentare behandelt[9]. Beispiel:
## Benutzerspezifische Beispielkonfigurationsdatei für youtube-dl in ~/.config/youtube-dl/config ## Zeilen, die mit einem Rautenzeichen (#) beginnen, sind entweder Kommentare oder deaktivierte Argumente # Lade bei Vorliegen von zwei höchst-qualitativen separaten Dateien für Audio und Video diese getrennt herunter # (aber nur die in den Formaten m4a bzw. mp4); # ansonsten nehme die höchst-qualitative AV-Kombi-Einzeldatei: -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best" # Bevorzuge freie (Video-)Formate, außer ein spezifisches ist gefordert: #--prefer-free-formats # Der Zielordner ist das aktuelle Terminal-Arbeitsverzeichnis; entferne die Youtube-ID aus dem Namen/Titel des Videos: #-o "%(title)s.%(ext)s" # Der Zielordner ist ~/Videos; der Dateiname besteht – wie in der Voreinstellung – aus dem Namen/Titel und der YT-ID # des Videos sowie der Dateiendung: -o "~/Videos/%(title)s-%(id)s.%(ext)s" # Beschränke Dateinamen auf reine ASCII-Zeichen und vermeide dort u.a. "&" und Leerzeichen, aber auch Umlaute; # wobei Leerzeichen in Unterstriche (_) sowie Umlaute in a, o und u umgewandelt werden: --restrict-filenames # Benutze den externen Downloader aria2 (das gleichnamige Paket muss installiert sein!): --external-downloader "aria2c" # Übergebe die folgenden Argumente an aria2: # Minimale Teilstück-Größe 1MiB; maximale Anzahl an gleichzeitigen Verbindungen pro Server und pro Download; # bei HTTP(S)/FTP-Downloads setze bei nur teilweise von anderenProgrammen heruntergeladenen Dateien den # Download fort; # =>=>=> Achtung: Diese Option kann zu Störungen führen, falls youtube-dl einen HLS herunterlädt! Im Zweifelsfalle # diese Option bitte NICHT verwenden: #--external-downloader-args "-k1M -x8 -c" # Zeige den Download-Fortschritt in immer neuen Zeilen an =>=>=> Achtung: Diese Option bitte NICHT zusammen # mit "–external-downloader"-Optionen verwenden, um potenzielle Störungen auszuschließen: #--newline # Zeige den Download-Fortschritt in der Titelleiste des Terminalfensters an; zusammen mit # "–external-downloader"-Optionen wird evtl. lediglich der erfolgreiche Abschluss des Downloads bekanntgegeben; # =>=>=> Achtung: Diese Option kann zu Störungen führen, falls youtube-dl durch mpv aufgerufen wird! Im Zweifelsfalle # diese Option bitte NICHT verwenden: #--console-title # Schreibe die Metadaten mit in die Ausgabedatei: --add-metadata # Umgehe geographische Beschränkungen durch Fälschen des "X-Forwarded-For"-HTTP-Headers (experimentell): --geo-bypass # Bei Download-Fehlern trotzdem weiter herunterladen: --ignore-errors # Erzwinge das Fortsetzen des Downloads von teilweise heruntergeladenen Dateien: --continue
Um zu erreichen, dass systemweite und benutzerspezifische Konfigurationsdateien ignoriert werden, muss das Programm mit der Option --ignore-config
aufgerufen werden:
youtube-dl --ignore-config [OPTIONEN] URL_DES_VIDEOS
Falls die Option --ignore-config
in der systemweiten Konfigurationsdatei steht, dann wird eine eventuell vorhandene benutzerspezifische ignoriert.
Hinweis:
Zu beachten ist, dass aktivierte Konfigurationsdateien Einfluss auf die Funktionen von externen Programmen haben können, von denen youtube-dl aufgerufen wird. Falls bei den ersteren Probleme auftreten, dann etwaige Konfigurationsdateien vorsichtshalber temporär deaktivieren (z.B. durch Umbenennen) und dann weiter testen. Natürlich könnten die betroffenen Programme außerdem für youtube-dl sicherheitshalber ebenfalls die Option --ignore-config
benutzen.
Mehr Informationen zur Konfiguration sind in der Manpage bzw. der Dokumentation zu finden.
Problembehebung¶
Unterschiedliche Video-Qualitäten¶
Teilweise (beispielsweise bei YouTube) werden unterschiedliche Qualitäten des gleichen Videos angeboten. Um alle verfügbaren Qualitätsstufen anzuzeigen, verwendet man folgenden Befehl:
youtube-dl -F YOUTUBE_URL_DES_VIDEOS
Entscheidend in der Ausgabe ist der format code
. Anschließend kann mit
youtube-dl -f FORMAT_CODE YOUTUBE_URL_DES_VIDEOS
die gewünschte Qualitätsstufe heruntergeladen werden. Ohne Angabe eines Format-Codes wird bei älteren Programmversionen die höchste Qualitätsstufe einer AV-Kombi-Einzeldatei als eine zusammenhängende Datei heruntergeladen (aus der Sicht von youtube-dl in der Ausgabe mit der Option "-F" als (best)
gekennzeichnet).
Hinweis:
Seit Ende April 2015 und Version 2015.04.26 benutzt youtube-dl -f bestvideo+bestaudio/best
als Standard-Einstellung. Das heißt, dass bei Vorliegen von zwei höchst-qualitativen separaten Dateien für Audio und Video diese wie in den folgenden Beispielen zunächst getrennt heruntergeladen werden und danach zusammen gemuxt werden. Liegt hingegen eine höchst-qualitative AV-Kombi-Einzeldatei vor, so wird automatisch diese verwendet.
Die beste Qualität für Video und Audio kann aber bei älteren youtube-dl-Versionen mit folgendem Befehl erzwungen werden:
youtube-dl -f bestvideo+bestaudio YOUTUBE_URL_DES_VIDEOS
⚓︎ Dabei werden zwei Dateien (Video und Audio separat) heruntergeladen, die dann in eine resultierende Datei gemischt werden. Abschließend werden die ursprünglichen Dateien automatisch gelöscht. Das ist jedoch nicht immer von Erfolg gekrönt, da ziemlich oft nicht miteinander kompatible Video- und Audio-Formate (Codecs) kombiniert werden. Infolgedessen können unerwünschte Effekte auftreten (der benutzte Player kann den Audio- bzw. Video-Teil nicht abspielen). Beispiel:
youtube-dl -F https://www.youtube.com/watch?v=DcKGyJKnuQI
[youtube] DcKGyJKnuQI: Downloading webpage [youtube] DcKGyJKnuQI: Downloading video info webpage [youtube] DcKGyJKnuQI: Extracting video information [youtube] DcKGyJKnuQI: Downloading MPD manifest [info] Available formats for DcKGyJKnuQI: format code extension resolution note 249 webm audio only DASH audio 60k , opus @ 50k, 26.22MiB 250 webm audio only DASH audio 81k , opus @ 70k, 34.64MiB 140 m4a audio only DASH audio 131k , m4a_dash container, mp4a.40.2@128k (44100Hz) 171 webm audio only DASH audio 137k , vorbis@128k, 60.25MiB 251 webm audio only DASH audio 149k , opus @160k, 68.59MiB 160 mp4 220x144 DASH video 97k , avc1.4d400c, 25fps, video only 278 webm 220x144 144p 114k , webm container, vp9, 25fps, video only, 44.46MiB 133 mp4 368x240 DASH video 230k , avc1.4d400d, 25fps, video only 242 webm 368x240 240p 254k , vp9, 25fps, video only, 105.38MiB 243 webm 550x360 360p 453k , vp9, 25fps, video only, 192.40MiB 134 mp4 550x360 DASH video 551k , avc1.4d4016, 25fps, video only 244 webm 734x480 480p 840k , vp9, 25fps, video only, 341.47MiB 135 mp4 734x480 DASH video 1024k , avc1.4d401e, 25fps, video only 17 3gp 176x144 small , mp4v.20.3, mp4a.40.2@ 24k 36 3gp 320x210 small , mp4v.20.3, mp4a.40.2 18 mp4 550x360 medium , avc1.42001E, mp4a.40.2@ 96k 43 webm 640x360 medium , vp8.0, vorbis@128k (best) $
Wie man sieht, hat youtube-dl die letzte Zeile (format code 43
) als die beste Qualitätsstufe markiert (best)
und sie wird per Voreinstellung (youtube-dl ohne Optionen) bei älteren youtube-dl-Versionen auch heruntergeladen.
Dabei gibt es die besseren Video-Streams (format code 244 und 135
). Die resultierende Datei, die mit der Optionen bestvideo+bestaudio
produziert wurde, konnte vom Player VLC nur ohne den Ton abgespielt werden.
Youtube separiert Video- und Audio-Streams (Linien, die mit DASH markiert sind), so dass man die beste Qualität und die kompatible Formate für Video und Audio selbst auswählen kann:
youtube-dl -f 135+140 https://www.youtube.com/watch?v=DcKGyJKnuQI
Oder man lässt es youtube-dl erledigen:
youtube-dl -f bestvideo[ext=mp4]+bestaudio[ext=m4a] YOUTUBE_URL_DES_VIDEOS
[youtube] DcKGyJKnuQI: Downloading webpage [youtube] DcKGyJKnuQI: Downloading video info webpage [youtube] DcKGyJKnuQI: Extracting video information [youtube] DcKGyJKnuQI: Downloading MPD manifest [dashsegments] Total fragments: 853 [download] Destination: Nockherberg 2007 - Singspiel komplett - 'Staatszirkus Nockherberg'-DcKGyJKnuQI.f135.mp4 [download] 100% of 403.53MiB in 14:53 [dashsegments] Total fragments: 432 [download] Destination: Nockherberg 2007 - Singspiel komplett - 'Staatszirkus Nockherberg'-DcKGyJKnuQI.f140.m4a [download] 100% of 65.17MiB in 07:25 [ffmpeg] Merging formats into "Nockherberg 2007 - Singspiel komplett - 'Staatszirkus Nockherberg'-DcKGyJKnuQI.mp4" WARNING: Your copy of avconv is outdated, update avconv to version 10-0 or newer if you encounter any errors. Deleting original file Nockherberg 2007 - Singspiel komplett - 'Staatszirkus Nockherberg'-DcKGyJKnuQI.f135.mp4 (pass -k to keep) Deleting original file Nockherberg 2007 - Singspiel komplett - 'Staatszirkus Nockherberg'-DcKGyJKnuQI.f140.m4a (pass -k to keep)
Für weitere Information siehe Askubuntu 🇬🇧 und den Abschnitt FORMAT SELECTION 🇬🇧 auf GitHub.
Bei Audio-Extraktion wird auch Video-Datei heruntergeladen¶
Falls es eine aktivierte Konfigurationsdatei gibt und man bei Audio-Extraktion via Option -x
im Terminal beobachtet, dass neben der Audio- auch noch die Video-Datei mit heruntergeladen wird, dann kann das evtl. daran liegen, dass in der Konfigurationsdatei spezielle AV-Qualitäten wie -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best"
angegeben sind. Um nun das Herunterladen der Video-Datei zu verhindern, gibt man im Terminal zusätzlich die gewünschte Qualitäts-Option für Audio mit an, z.B.:
youtube-dl -f bestaudio -x "URL_DES_VIDEOS"
Nun sollte lediglich die passende Audio-Datei heruntergeladen werden.
Argumente vom externen Downloader werden fälschlicherweise an ffmpeg übergeben¶
Falls man an youtube-dl (u.a.) die beiden Optionen --external-downloader
und --external-downloader-args
übergeben hat bzw. man hat eine aktivierte Konfigurationsdatei mit beiden und erhält dann eine Fehlermeldung wie z.B.:
Unrecognized option 'k1M'. Error splitting the argument list: Option not found ERROR: ffmpeg exited with code 1
dann bedeutet das, dass der Download ein HLS ist und die Argumente von --external-downloader-args
leider fälschlicherweise auch an ffmpeg übergeben werden, wenn --external-downloader
nicht ffmpeg
ist (#10784 🇬🇧).
Als provisorische Lösung lässt man – falls der beschriebene Fehler auftritt – entweder die beiden oben erwähnten Optionen ganz weg oder kommentiert in der evtl. vorhandenen Konfigurationsdatei temporär zumindest die --external-downloader-args
-Option aus[7] [8].
Update¶
Gelegentlich hilft bei Problemen auch ein einfaches Update des Programms. Wenn youtube-dl via pip installiert wurde, lautet der Befehl für das Update:
pip3 install -U youtube-dl
Links¶
Projektseite 🇬🇧
Documentation 🇬🇧 – Anleitung
Manpage 🇬🇧
Supported sites 🇬🇧 – (nicht immer völlig aktuelle) Auflistung der von youtube-dl unterstützten Video-Portale und Mediatheken in alphabetischer Reihenfolge; bei einigen Einträgen mitsamt Kommentaren
Youtube – Rechtliche Aspekte – Wikipedia
youtube-dl im franz. Ubuntu-Wiki
youtube-dl im Arch Wiki 🇩🇪
Formats and Resolutions of Youtube Videos 🇬🇧 – Auflistung der YouTube-Format-Codes mitsamt Auflösung und anderen Details
tatort-dl 🇬🇧 – Hilfsprogramm speziell für die Mediathek der ARD
yt2mp3 – speichert den Ton eines Videos als gleichnamige MP3-Datei
youtube-dl lädt Videos von zahlreichen Videoseiten und Mediatheken aus dem Netz 🇩🇪 – Blogbeitrag 07/2014
Streams speichern Übersichtsseite; im Abschnitt Interne Links wird auch auf zwei Howtos bzgl. manueller Speicherung von Videos verwiesen