Zum Inhalt springen

Yt-dlp: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
K Dirk verschob die Seite Youtube-dl nach Yt-dlp, ohne dabei eine Weiterleitung anzulegen
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{SEITENTITEL:yt-dlp}}
{{SEITENTITEL: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.


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|yt-dlp}}
 
Nach der Installation ist das Programm mittels {{ic|yt-dlp}} aufrufbar. Die [[Manpage]] bietet eine ausführliche Übersicht und Beschreibung aller möglichen Parameter und Optionen.
 
=== Externe JavaScript-Bibliothek ===
yt-dlp benutzt einen internen, sehr simplen JavaScript-Parser, der für viele Einsatzzwecke ausreichend ist. Aufgrund geänderter Anforderungen seitens YouTube wird allerdings für den Download vieler YouTube-Videos eine externe JavaScript-Bibliothek benötigt. Die Entwickler unterstützen und empfehlen Deno.  
 
{{installation
|name=Das nötige Programmpaket für die explizite Verwendung mit yt-dlp
|paket=yt-dlp-ejs
|nostyle=1
|noheading=1
}}


{{installation|paket=yt-dlp}}
Nach der installation sind keine weiteren Schritte notwendig damit yt-dlp Deno benutzt. Man kann dies mittels {{ic|yt-dlp -v}} überprüfen, hier sollte in der Ausgabe {{ic|[debug] JS runtimes: deno-x.x.x}} zu finden sein, wobei {{ic|x.x.x}} die entsprechende Versionsnummer ist.


Nach der Installation ist das Programm mittels {{ic|yt-dlp}} aufrufbar. Die [[Manpage]] bietet eine ausführliche Übersicht und Beschreibung aller möglichen Parameter und Optionen..
Wenn Deno für das Lösen der so genannten ''JavaScript Challenges'' genutzt wird, wird in der Ausgabe zudem {{ic|[youtube] [jsc:deno] Solving JS challenges using deno}} angezeigt.


== Verwendung ==
== Verwendung ==
Zeile 70: Zeile 83:


{{hc|1=yt-dlp -F "<nowiki>https://www.arte.tv/de/videos/123456-001-A/sendungs-id-1-2/</nowiki>"|2=
{{hc|1=yt-dlp -F "<nowiki>https://www.arte.tv/de/videos/123456-001-A/sendungs-id-1-2/</nowiki>"|2=
[ArteTV] Extracting URL: https://www.arte.tv/de/videos/123456-001-A/sendungs-id-1-2/
[ArteTV] Extracting URL: <nowiki>https://www.arte.tv/de/videos/123456-001-A/sendungs-id-1-2/</nowiki>
[ArteTV] 123456-001-A: Downloading JSON metadata
[ArteTV] 123456-001-A: Downloading JSON metadata
[ArteTV] 123456-001-A: Downloading m3u8 information
[ArteTV] 123456-001-A: Downloading m3u8 information
Zeile 88: Zeile 101:
Nur die Tonspur eines Videos runterzuladen und in ein bestimmtes Audioformat zu konvertieren funktioniert ebenfalls sehr komfortabel. Folgendes ist hierzu verfügbar:
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
* 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 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
* Die Qualitätsstufen 0 (beste Qualität) bis 10 (schlechteste Qualität) oder VBR für die Variable Bitrate als Zielqualität
Zeile 109: Zeile 122:
Die konfiguration von yt-dlp kann entweder direkt an der Befehlszeile durch Parameter erfolgen, oder über die Konfigurationsdatei unter {{ic|~/.config/yt-dlp/config}}. Alternativ kann mit {{ic|--config-location}} bei jedem Aufruf die zu verwendende Konfigurationsdatei bestimmt werden.
Die konfiguration von yt-dlp kann entweder direkt an der Befehlszeile durch Parameter erfolgen, oder über die Konfigurationsdatei unter {{ic|~/.config/yt-dlp/config}}. Alternativ kann mit {{ic|--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.
Die Datei beinhaltet einfach zeilenweise die Befehlszeilenparameter, so wie auch an der Befehlszeile angegeben. Leerzeilen und Kommentare mittels {{ic|#}} werden dabei ignoriert.


{{hc|1=~/.config/yt-dlp/config|2=
{{hc|1=~/.config/yt-dlp/config|2=
# Playlist Rückwärts durchlaufen (frühstes Video zuerst laden)
--playlist-reverse
--playlist-reverse
# Bei Fehlermeldungen nicht abbrechen, sondern das nächste laden
--ignore-errors
--ignore-errors
# Extrahierte Metadaten in das Video einbetten
--embed-metadata
--embed-metadata
# Bei Fehlern bis zu zehnmal versuchen, das Video zu laden
--extractor-retries 10
--extractor-retries 10
}}
}}


mittels {{ic|--ignore-config}} beim Aufruf kann man die Standardkonfigurationsdatei ignorieren.
Mittels {{ic|--ignore-config}} beim Aufruf kann man die Standardkonfigurationsdatei ignorieren.
 
Mittels {{ic|--no-OPTION}} kann man eine vorkonfigurierte Option umkehren/deaktivieren. Beispielsweise kann das konfigurierte {{ic|--embed-metadata}} mittels {{ic|--no-embed-metadata}} für den entsprechenden Programmaufruf deaktiviert werden, während die restliche Konfiguration bestehen bleibt.


=== Ersetzung von Zeichen unterdrücken ===
=== Ersetzung von Zeichen unterdrücken ===
Zeile 138: Zeile 160:


=== Browser-Cookies ===
=== 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).
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: {{ic|--cookies /pfad/zur/datei}}
* Cookie-Datei im Netscape-Stil: {{ic|--cookies /pfad/zur/datei}}
* Aus [[Firefox]]-Profilen
* Aus [[Firefox]]-Profilen
* [[Chromium]](-basierend): chromium, brave, opera, vivaldi, sowie einige weitere
* [[Chromium]](-basierend): {{ic|chromium}}, {{ic|brave}}, {{ic|opera}}, {{ic|vivaldi}}, sowie einige weitere
* Keyring zum Entschlüsseln der Cookies in Chromium(-basierenden): basictext, gnomekeyring, kwallet
* Keyring zum Entschlüsseln der Cookies in Chromium(-basierenden) u.A.: {{ic|basictext}}, {{ic|gnomekeyring}}, {{ic|kwallet}}
* Optional kann der Containername angegeben werden (bei Firefox immer {{ic|none}})
* Optional kann der Containername angegeben werden (bei Firefox immer {{ic|none}})



Aktuelle Version vom 30. November 2025, 22:41 Uhr

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.

pacman -S yt-dlp

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.

Externe JavaScript-Bibliothek

yt-dlp benutzt einen internen, sehr simplen JavaScript-Parser, der für viele Einsatzzwecke ausreichend ist. Aufgrund geänderter Anforderungen seitens YouTube wird allerdings für den Download vieler YouTube-Videos eine externe JavaScript-Bibliothek benötigt. Die Entwickler unterstützen und empfehlen Deno.


Das nötige Programmpaket für die explizite Verwendung mit yt-dlp ist als yt-dlp-ejs in extra verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S yt-dlp-ejs

Nach der installation sind keine weiteren Schritte notwendig damit yt-dlp Deno benutzt. Man kann dies mittels yt-dlp -v überprüfen, hier sollte in der Ausgabe [debug] JS runtimes: deno-x.x.x zu finden sein, wobei x.x.x die entsprechende Versionsnummer ist.

Wenn Deno für das Lösen der so genannten JavaScript Challenges genutzt wird, wird in der Ausgabe zudem [youtube] [jsc:deno] Solving JS challenges using deno angezeigt.

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. Leerzeilen und Kommentare mittels # werden dabei ignoriert.

~/.config/yt-dlp/config
# Playlist Rückwärts durchlaufen (frühstes Video zuerst laden)
--playlist-reverse

# Bei Fehlermeldungen nicht abbrechen, sondern das nächste laden
--ignore-errors

# Extrahierte Metadaten in das Video einbetten
--embed-metadata

# Bei Fehlern bis zu zehnmal versuchen, das Video zu laden
--extractor-retries 10

Mittels --ignore-config beim Aufruf kann man die Standardkonfigurationsdatei ignorieren.

Mittels --no-OPTION kann man eine vorkonfigurierte Option umkehren/deaktivieren. Beispielsweise kann das konfigurierte --embed-metadata mittels --no-embed-metadata für den entsprechenden Programmaufruf deaktiviert werden, während die restliche Konfiguration bestehen bleibt.

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) u.A.: 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.

Siehe auch