Yt-dlp: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
KKeine Bearbeitungszusammenfassung
K Dirk verschob die Seite Youtube-dl nach Yt-dlp, ohne dabei eine Weiterleitung anzulegen
(kein Unterschied)

Version vom 15. Januar 2025, 12:56 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..

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.

Siehe auch

Weblinks