yt-dlp
yt-dlp ist ein aktiv entwickelter Fork des inzwischen „eingeschlafenen“ Projekts youtube-dl, der es ermöglicht, Videos von YouTube und diversen anderen Videoplattformen herunterzuladen.
Installation
Das Programm ist als
yt-dlp
in extra
verfügbar, und kann von dort
mittels Pacman
installiert werden.
Nach der Installation ist das Programm mittels yt-dlp
aufrufbar. Die Manpage bietet eine ausführliche Übersicht und Beschreibung aller möglichen Parameter und Optionen..
Verwendung
yt-dlp akzeptiert sowohl einen kompletten Video-URL, als auch nur die Video-ID, im URL nach dem v=
zu finden. Wenn nur die Video-ID übergeben wird, wird automatisch YouTube als Videoseite angenommen.
yt-dlp 67j45hhhr678
[youtube] Extracting URL: 67j45hhhr678 [youtube] 67j45hhhr678: Downloading webpage [youtube] 67j45hhhr678: Downloading ios player API JSON [youtube] 67j45hhhr678: Downloading tv player API JSON [youtube] 67j45hhhr678: Downloading m3u8 information [info] 67j45hhhr678: Downloading 1 format(s): 616+251 [hlsnative] Downloading m3u8 manifest [hlsnative] Total fragments: 158 [download] Destination: Mein tolles Testvideo *testen* [67j45hhhr678].f616.mp4 [download] 100% of 318.58MiB in 00:01:28 at 3.61MiB/s [download] Destination: Mein tolles Testvideo *testen* [67j45hhhr678].f251.webm [download] 100% of 12.33MiB in 00:00:02 at 4.70MiB/s [Merger] Merging formats into "Mein tolles Testvideo *testen* [67j45hhhr678].webm" Deleting original file Mein tolles Testvideo *testen* [67j45hhhr678].f251.webm (pass -k to keep) Deleting original file Mein tolles Testvideo *testen* [67j45hhhr678].f616.mp4 (pass -k to keep)
Wenn nicht näher spezifiziert, wird das qualitativ beste Video, oder die qualitativ beste DASH-Kombination heruntergeladen, und unter dem Videotitel mit angehängter ID gespeichert. Will man eine andere Qualität des Videos herunterladen, kann man sich zuvor die verfügbaren Formate anzeigen lassen. (Um die Darstellung hier im Wiki nicht unnötig zu verlängern, wurden diverse weitere Formate aus der Ausgabe gelöscht.)
yt-dlp -F 67j45hhhr678
[youtube] Extracting URL: 67j45hhhr678 [youtube] 67j45hhhr678: Downloading webpage [youtube] 67j45hhhr678: Downloading ios player API JSON [youtube] 67j45hhhr678: Downloading tv player API JSON [youtube] 67j45hhhr678: Downloading m3u8 information [info] Available formats for 67j45hhhr678: ID EXT RESOLUTION FPS CH │ FILESIZE │ VCODEC MORE INFO ─────────────────────────────────────────────────────────────────────────────────── 140 m4a audio only 2 │ 13.71MiB │ audio only [de] medium, m4a_dash 251 webm audio only 2 │ 12.33MiB │ audio only [de] medium, webm_dash 135 mp4 854x480 30 │ 31.84MiB │ avc1.4d401f 480p, mp4_dash 136 mp4 1280x720 30 │ 59.62MiB │ avc1.4d401f 720p, mp4_dash 137 mp4 1920x1080 30 │ 224.00MiB │ avc1.640028 1080p, mp4_dash 616 mp4 1920x1080 30 │ ~605.44MiB │ vp09.00.40.08 Premium
Es wird automatisch eine kombination aus der besten Videoqualität und der besten Audioqualität heruntergeladen, im Beispiel also 251+616. Wenn einem eine kleinere Version reicht, kann man die entsprechende Qualitäts-ID beim Aufruf übergeben.
yt-dlp -f 140+135 67j45hhhr678
[youtube] Extracting URL: 67j45hhhr678 [youtube] 67j45hhhr678: Downloading webpage [youtube] 67j45hhhr678: Downloading ios player API JSON [youtube] 67j45hhhr678: Downloading tv player API JSON [youtube] 67j45hhhr678: Downloading m3u8 information [info] 67j45hhhr678: Downloading 1 format(s): 140+135 [download] Destination: Mein tolles Testvideo *testen* [67j45hhhr678].f140.m4a [download] 100% of 13.71MiB in 00:00:02 at 5.86MiB/s [download] Destination: Mein tolles Testvideo *testen* [67j45hhhr678].f135.mp4 [download] 100% of 31.84MiB in 00:00:05 at 5.40MiB/s [Merger] Merging formats into "Mein tolles Testvideo *testen* [67j45hhhr678].mp4" Deleting original file Mein tolles Testvideo *testen* [67j45hhhr678].f135.mp4 (pass -k to keep) Deleting original file Mein tolles Testvideo *testen* [67j45hhhr678].f140.m4a (pass -k to keep)
Damit wurde die Kombination aus M4A-Audio und MP4-Video in 854x480 des Videos heruntergeladen.
In den Beispielen wurde eine zum Zeitpunkt des Erstellens nicht existierende Video-ID verwendet. Sollte sich das inzwischen geändert haben, so ist dies nicht beabsichtigt, und sollte einfach kurz im Artikel geändert werden.
Andere Videoanbieter
Wenn man einen kompletten URL angibt, versucht yt-dlp entweder durch den spezifischen Extraktor für diese Seite, oder durch einen generischen Extraktor, das Video zu extrahieren.
yt-dlp -F "https://www.arte.tv/de/videos/123456-001-A/sendungs-id-1-2/"
[ArteTV] Extracting URL: https://www.arte.tv/de/videos/123456-001-A/sendungs-id-1-2/ [ArteTV] 123456-001-A: Downloading JSON metadata [ArteTV] 123456-001-A: Downloading m3u8 information [info] Available formats for 123456-001-A: ID EXT RESOLUTION FPS │ FILESIZE │ VCODEC MORE INFO ──────────────────────────────────────────────────────────────────────────────────────── VA-STA-audio_0-Deutsch mp4 audio only │ │ audio only [de] Deutsch [DE] VA-STA-1150 mp4 768x432 25 │ ~103.41MiB │ avc1.4d401e Deutsch [DE] VA-STA-1964 mp4 1280x720 25 │ ~176.60MiB │ avc1.4d401f Deutsch [DE] VA-STA-2048 mp4 1920x1080 25 │ ~184.11MiB │ hev1.2.4.L123 Deutsch [DE]
Auch Videos aus der arte-Mediathek „ArteTV“ können durch yt-dlp heruntergeladen werden. Im Beispiel werden die verfügbaren Qualitäten aufgelistet. (Auch hier wieder anhand einer fiktiven Video-ID und zur Anzeige im Wiki gekürzt.)
Weitere unterstützte Seiten können auf der offiziellen Homepage eingesehen werden, oder direkt mit yt-dlp --list-extractors
gelistet werden.
Tonspur extrahieren und umwandeln
Nur die Tonspur eines Videos runterzuladen und in ein bestimmtes Audioformat zu konvertieren funktioniert ebenfalls sehr komfortabel. Folgendes ist hierzu verfügbar:
- Ein generisches best als Standard, basierend auf allen Verfügbaren Formaten
- Die Formate aac, alac, flac, m4a, mp3, opus, vorbis, und wav als Zielformate
- Die Qualitätsstufen 0 (beste Qualität) bis 10 (schlechteste Qualität) oder VBR für die Variable Bitrate als Zielqualität
youtube-dl -x --audio-format mp3 --audio-quality 5 "67j45hhhr678"
[youtube] Extracting URL: 67j45hhhr678 [youtube] 67j45hhhr678: Downloading webpage [youtube] 67j45hhhr678: Downloading ios player API JSON [youtube] 67j45hhhr678: Downloading tv player API JSON [youtube] 67j45hhhr678: Downloading m3u8 information [info] 67j45hhhr678: Downloading 1 format(s): 251 [download] Destination: Mein tolles Testvideo *testen*[67j45hhhr678].webm [download] 100% of 12.33MiB in 00:00:02 at 5.82MiB/s [ExtractAudio] Destination: Mein tolles Testvideo *testen* [67j45hhhr678].ogg Deleting original file Mein tolles Testvideo *testen* [67j45hhhr678].webm (pass -k to keep)
Damit die Audioextraktion funktioniert muss das Paket ffmpeg installiert sein.
Konfiguration
Die konfiguration von yt-dlp kann entweder direkt an der Befehlszeile durch Parameter erfolgen, oder über die Konfigurationsdatei unter ~/.config/yt-dlp/config
. Alternativ kann mit --config-location
bei jedem Aufruf die zu verwendende Konfigurationsdatei bestimmt werden.
Die Datei beinhaltet einfach zeilenweise die Befehlszeilenparameter, so wie auch an der Befehlszeile angegeben.
~/.config/yt-dlp/config
--playlist-reverse --ignore-errors --embed-metadata --extractor-retries 10
mittels --ignore-config
beim Aufruf kann man die Standardkonfigurationsdatei ignorieren.
Ersetzung von Zeichen unterdrücken
Standardmäßig werden durch yt-dlp einige Zeichen durch Ersatzzeichen ersetzt, die bei Verwendung veralteter Dateisysteme oder beim Datenaustausch mit Windows zu Problemen führen können. Wenn man beide Probleme nicht hat, und man die Videotitel in den Dateien möglichst originalgetreu behalten möchte, kann man --no-windows-filenames
verwenden
yt-dlp 67j45hhhr678
[...] [Merger] Merging formats into "Mein tolles Testvideo *testen* [67j45hhhr678].webm"
Der obige Aufruf ersetzt die normalen Sternchen (*
) durch die Fullwidth-Zeichen *
. Mittels des Parameters wird dies nicht durchgeführt
yt-dlp --no-windows-filenames 67j45hhhr678
[...] [Merger] Merging formats into "Mein tolles Testvideo *testen* [67j45hhhr678].webm"
Dies betrifft auch diverse weitere Zeichen wie zum Beispiel das Fragezeichen (wird zu ?
), die Pipe (wird zu |
), oder z.B. auch die Doppelpunkte (werden zu :
).
Browser-Cookies
yt-dlp kann die Cookies verschiedener Browser-Typen verwenden, um Videos herunterzuladen (wenn diese zum Beispiel hinter einem Login verborgen sind, oder der Zugriff an andere Bedingungen Geknüpft sind, die per Cookie erfasst werden).
- Cookie-Datei im Netscape-Stil:
--cookies /pfad/zur/datei
- Aus Firefox-Profilen
- Chromium(-basierend): chromium, brave, opera, vivaldi, sowie einige weitere
- Keyring zum Entschlüsseln der Cookies in Chromium(-basierenden): basictext, gnomekeyring, kwallet
- Optional kann der Containername angegeben werden (bei Firefox immer
none
)
Beispiele
- Firefox-Cookies vom Standardprofil:
--cookies-from-browser firefox
- Chromium-Profil private aus Container foo:
--cookies-from-browser chromium:private::foo
- Vivaldi-Standardprofil mit kwallet-Keyring:
--cookies-from-browser vivaldi+kwallet
Alle Angaben bis auf den Browsernamen sind optional.