Zum Inhalt springen

Yt-dlp: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 126: Zeile 126:
</blockquote>
</blockquote>


=== Unterschiedliche Video-Qualitäten ===
=== Video-Qualität ===
Teilweise (beispielsweise bei [youtube::YouTube]) werden unterschiedliche Qualitäten des gleichen Videos angeboten
Teilweise (beispielsweise bei [youtube::YouTube]) werden unterschiedliche Qualitäten des gleichen Videos angeboten
* Um alle verfügbaren Qualitätsstufen anzuzeigen, verwendet man folgenden Befehl
* Um alle verfügbaren Qualitätsstufen anzuzeigen, verwendet man folgenden Befehl

Version vom 18. Januar 2025, 13:19 Uhr

yt-dlp - YouTube download

Beschreibung

Installation

sudo apt install ffmpeg yt-dlp

Optionale Programme

Das oben genannte ffmpeg und yt-dlp reichen aus, um mit der Standard-Koniguration von yt-dlp

  • ohne Angabe von Optionen
  • Dateien von YouTube herunterladen zu können

Bestimmte Optionen

  • wie z.B.das Einbetten von Vorschaubildern und/oder das Verwenden eines externen Download-Managers – und/oder Plattformen werden jedoch die folgenden Programme bzw. Pakete benötigt
  • Für Videos, welche über das [wikipedia:Real Time Messaging Protocol:RTMP]-Protokoll gestreamt werden, muss RTMPDump installiert werden[1]
apt install rtmpdump

Für Videos, welche über die beiden Protokolle [wikipedia:MMS-Protokoll:MMS] und [wikipedia:Real-Time_Streaming_Protocol:RTSP] gestreamt werden, muss [:MPlayer:] oder / und [:mpv:] über das bzw. die folgende(n) Paket(e) installiert werden

apt install mplayer

MPlayer für die Bedienung nur per Kommandozeile

mpv, universe

Falls yt-dlp anstelle des eigenen Downloaders (temporär) den externen Download-Manager [:aria2:] verwenden soll, muss das gleichnamige Paket installiert werden

aria2, universe

Falls Vorschaubilder (sofern vorhanden) direkt in Audios bzw. Videos eingebettet werden sollen, so muss das Programm AtomicParsley installiert werden

  • atomicparsley, universe

Um Audio/Video in gewünschter Qualität (option -f) zu bekommen,muss das folgende Programm installiert werden

python3-brotli, universe

Aufruf

Optionen

Unix GNU Parameter Beschreibung
-1 --single Exit as soon as the first advertisement is received (default)

Parameter

Umgebungsvariablen

Exit-Status

Anwendung

Die Verwendung des Programms erfolgt im Terminal[2]

  • Die allgemeine Syntax lautet
yt-dlp [OPTIONEN] URL_DER_WEBSEITE_DES_VIDEOS
Beispiel
 yt-dlp "https://www.youtube.com/watch?v=HED4h00xPPA"
 [youtube] HED4h00xPPA: Downloading webpage
 [youtube] HED4h00xPPA: Downloading android player API JSON
 [info] HED4h00xPPA: Downloading 1 format(s): 18
 [download] Destination: Ubuntu told by Nelson Mandela [HED4h00xPPA].mp4
 [download] 100% of 4.43MiB in 00:02

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

 yt-dlp -o "%(title)s.%(ext)s" "https://www.youtube.com/watch?v=HED4h00xPPA"

Benötigt man nur die Tonspur des Videos, so reicht folgender Befehl

 yt-dlp -x "https://www.youtube.com/watch?v=HED4h00xPPA"

Man kann auch festlegen, in welchen Format der Ton gespeichert werden soll

 yt-dlp -x --audio-format mp3 --audio-quality 0 "https://www.youtube.com/watch?v=HED4h00xPPA"

Mit der Angabe der Option `-k` kann verhindert werden, dass etwaige temporär heruntergeladene Dateien – wie etwa für Audio/Video solitär und Untertitel, aber nicht für Vorschaubilder – nach dem Post-Prozessieren gelöscht werden

 yt-dlp -k "https://www.youtube.com/watch?v=HED4h00xPPA"

Möchte man nach dem Herunterladen die technischen und [:Metadaten:] der Video- bzw.&nbsp;Audiodatei angezeigt bekommen, so empfiehlt sich dafür das Programm [:MediaInfo:], womit ein Aufruf folgendermaßen lauten könnte
<syntaxhighlight lang="bash" highlight="1" line>
 mediainfo eine_datei.mp4

Mit der Angabe der Playlisten-URL kann auch eine ganze Playliste heruntergeladen werden

 yt-dlp [OPTIONEN] URL_DER_PLAYLISTE

yt-dlp unterstützt auch verschiedene deutsche Mediatheken, u.&nbsp;a.&nbsp;die von ARD, ZDF und ARTE
* Alle unterstützten Video-Portale listet zum einen der Befehl
<syntaxhighlight lang="bash" highlight="1" line>
 yt-dlp --list-extractors | less

Da die Ausgabe sehr lang ist, wird sie hier mit [:less:] seitenweise ausgegeben

  • Die Anzeige wird mit der Taste Vorlage(Tasten, q) beendet
  • Zum anderen erfährt man die unterstützten Portale über einen [#Links Link]

Man kann die zahlreichen weiteren Optionen neben der [:man:Manpage] auch über den Befehl

 yt-dlp --help | less

in Erfahrung bringen

Anker(direkt-anschauen) 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 [:Shell/Umleitungen/#Der-Pipe-Operator:Pipe-Operator] an den Mediaplayer weitergeleitet wird

 yt-dlp [OPTIONEN] -o - URL_DES_VIDEOS | vlc -
Hinweis

Der Mediaplayer [:mpv:] kann mithilfe von yt-dlp Videos auch ohne Pipe-Operator abspielen; siehe dafür den dortigen Abschnitt [:mpv/#Youtube:Youtube]

Video-Qualität

Teilweise (beispielsweise bei [youtube::YouTube]) werden unterschiedliche Qualitäten des gleichen Videos angeboten

  • Um alle verfügbaren Qualitätsstufen anzuzeigen, verwendet man folgenden Befehl
 yt-dlp -F YOUTUBE_URL_DES_VIDEOS

Entscheidend in der Ausgabe ist der `format code`

  • Anschließend kann mit
 yt-dlp -f FORMAT_CODE YOUTUBE_URL_DES_VIDEOS

die gewünschte Qualitätsstufe heruntergeladen werden

Bei Audio-Extraktion wird auch Video-Datei heruntergeladen

Falls es eine aktivierte [#Konfiguration 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
Beispiel
 yt-dlp -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 yt-dlp (u.a.) die beiden Optionen `--external-downloader` und `--external-downloader-args` übergeben hat bzw. man hat eine aktivierte [#Konfiguration 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 [wikipedia_en:HTTP_Live_Streaming:HLS] ist und die Argumente von `--external-downloader-args` leider fälschlicherweise auch an ffmpeg übergeben werden, wenn `--external-downloader` nicht `ffmpeg` ist ([github:rg3/youtube-dl/issues/10784: #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]

Problembehebung

Konfiguration

Wenn bestimmte Optionen häufiger benutzt werden, können diese auch in einer Konfigurationsdatei eingetragen werden[3]

  • Diese muss ggf
  • selber angelegt werden, für systemweite Nutzung als /etc/yt-dlp.conf, benutzerspezifisch als ~/.config/yt-dlp/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]

Beispiel

  1. Benutzerspezifische Beispielkonfigurationsdatei für yt-dlp in ~/.config/yt-dlp/config
  2. Zeilen, die mit einem Rautenzeichen (#) beginnen, sind entweder Kommentare oder deaktivierte Argumente
  3. Lade bei Vorliegen von zwei höchst-qualitativen separaten Dateien für Audio und Video diese getrennt herunter
  4. (aber nur die in den Formaten m4a bzw. mp4);
  5. ansonsten nehme die höchst-qualitative AV-Kombi-Einzeldatei

-f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best"

  1. Bevorzuge freie (Video-)Formate, außer ein spezifisches ist gefordert
  2. --prefer-free-formats
  3. Der Zielordner ist das aktuelle Terminal-Arbeitsverzeichnis; entferne die Youtube-ID aus dem Namen/Titel des Videos
  4. -o "%(title)s.%(ext)s"
  5. Der Zielordner ist ~/Videos; der Dateiname besteht – wie in der Voreinstellung – aus dem Namen/Titel und der YT-ID
  6. des Videos sowie der Dateiendung

-o "~/Videos/%(title)s-%(id)s.%(ext)s"

  1. Beschränke Dateinamen auf reine ASCII-Zeichen und vermeide dort u.a. "&" und Leerzeichen, aber auch Umlaute;
  2. wobei Leerzeichen in Unterstriche (_) sowie Umlaute in a, o und u umgewandelt werden

--restrict-filenames

  1. Benutze den externen Downloader aria2 (das gleichnamige Paket muss installiert sein!)

--external-downloader "aria2c"

  1. Übergebe die folgenden Argumente an aria2
  2. Minimale Teilstück-Größe 1MiB; maximale Anzahl an gleichzeitigen Verbindungen pro Server und pro Download;
  3. bei HTTP(S)/FTP-Downloads setze bei nur teilweise von anderenProgrammen heruntergeladenen Dateien den
  4. Download fort;
  5. =>=>=> Achtung: Diese Option kann zu Störungen führen, falls youtube-dl einen HLS herunterlädt! Im Zweifelsfalle
  6. diese Option bitte NICHT verwenden
  7. --external-downloader-args "-k1M -x8 -c"
  8. Zeige den Download-Fortschritt in immer neuen Zeilen an =>=>=> Achtung: Diese Option bitte NICHT zusammen
  9. mit "–external-downloader"-Optionen verwenden, um potenzielle Störungen auszuschließen
  10. --newline
  11. Zeige den Download-Fortschritt in der Titelleiste des Terminalfensters an; zusammen mit
  12. "–external-downloader"-Optionen wird evtl. lediglich der erfolgreiche Abschluss des Downloads bekanntgegeben;
  13. =>=>=> Achtung: Diese Option kann zu Störungen führen, falls youtube-dl durch mpv aufgerufen wird! Im Zweifelsfalle
  14. diese Option bitte NICHT verwenden
  15. --console-title
  16. Schreibe die Metadaten mit in die Ausgabedatei

--add-metadata

  1. Umgehe geographische Beschränkungen durch Fälschen des "X-Forwarded-For"-HTTP-Headers (experimentell)

--geo-bypass

  1. Bei Download-Fehlern trotzdem weiter herunterladen

--ignore-errors

  1. Erzwinge das Fortsetzen des Downloads von teilweise heruntergeladenen Dateien

--continue

  1. Schreibe die Video-Beschreibung in eine ".description"-Datei, bis auf die Endung hat diese den gleichen
  2. Namen wie die Video-Datei; zu öffnen mit jedem Texteditor

--write-description

  1. Schreibe Video-Anmerkungen bzw. -Kommentare (sofern verfügbar) in eine ".annotations.xml"-Datei

--write-annotations

  1. Schreibe Untertitel-Datei(en) (sofern verfügbar); diese Option wird zwingend von der Option "--embed-subs"
  2. vorausgesetzt (entweder/oder, aber auch zusammen mit der Option "--write-auto-sub")

--write-sub

  1. Schreibe automatisch generierte Untertitel-Datei(en) (nur bei YouTube und sofern verfügbar); diese Option wird
  2. zwingend von der Option "--embed-subs" vorausgesetzt (entweder/oder, aber auch zusammen mit
  3. der Option "--write-sub")

--write-auto-sub

  1. Lade alle für das Video verfügbaren Untertitel-Dateien herunter; dies sind allerdings ca. 110 an der Zahl;
  2. diese Anzahl kann dann allerdings dazu führen, dass – falls dies gewollt war – das Einbetten des Vorschaubildes
  3. fehlschlägt ("ERROR: too many atoms")
  4. --all-subs
  5. Liste alle für das Video verfügbaren Untertitel(-Sprachen) auf (aufzurufen als alleinige Option);
  6. =>=>=> Bei der Auflistung wird zwischen automatisch generierten Untertiteln ("automatic captions") und normalen,
  7. manuell erstellten Untertiteln ("subtitles") unterschieden; dabei können – falls für eine bestimmte Sprache beide
  8. Typen vorliegen – die jeweiligen Dateien völlig identisch sein (falls deren Löschung mit der Option "-k" verhindert
  9. wurde, kann man diese vergleichen); manuell erstellte Untertiteln-Dateien erkennt man daran, dass dort der Text
  10. überall linksbündig ist (sie dienen wohl als Vorlage für die automatisch generierten Dateien)
  11. --list-subs
  12. Gewünschtes Untertitel-Format, akzeptiert Format-Vorwahlen, z.B.: "srt" oder "ass/srt/best"; ist keines
  13. der angegebenen Formate vorhanden, wird anstelle dessen ein tatsächlich verfügbares genommen
  14. --sub-format srt
  15. Sprache(n) der herunterzuladenen Untertitel, bei mehreren durch Kommatas getrennt; durch den Aufruf mit der
  16. (alleinigen) Option "--list-subs" kriegt man die Sprach-Kürzel heraus (z. B. ist "de" deutsch); es werden auch
  17. nur die tatsächlich verfügbaren Sprachen heruntergeladen

--sub-lang de,en,en-GB,en-US,fr

  1. Bette die Untertitel (sofern vorhanden) direkt in das Video ein (nur bei MP4-, WEBM- u. MKV-Containern), sie
  2. sind dann allerdings ein- u
  • ausblendbar; diese Option setzt zwingend die Option "--write-sub" bzw. "--write-auto-
  1. sub" voraus (entweder/oder, aber auch beide); die heruntergeladenen Untertitel-Datei(en) wird (bzw. werden) nach
  2. dieser Aktion automatisch gelöscht (falls deren Löschung nicht mit der Option "-k" verhindert wurde)

--embed-subs

  1. Bette das Vorschaubild (sofern vorhanden) direkt in das Audio bzw. Video ein, es erscheint bei Audios permanent
  2. und bei Videos für ca. 1 Sekunde als "Umschlag-Kunst" (zumindest beim VLC; das Paket "atomicparsley" muss installiert
  3. sein!)

--embed-thumbnail

Um zu erreichen, dass systemweite und benutzerspezifische Konfigurationsdateien ignoriert werden, muss das Programm mit der Option `--ignore-config` aufgerufen werden

yt-dlp --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 yt-dlp 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 [:man:Manpage] bzw. der [#Links Dokumentation] zu finden

Dateien

Anhang

Siehe auch

Dokumentation

Man-Page
Info-Pages

Links

Projekt
Weblinks
  1. https://wiki.ubuntuusers.de/yt-dlp/
  2. [github:yt-dlp/yt-dlp:Projektseite]
  3. Documentation youtube-dl – Anleitung
  4. [man:yt-dlp:Manpage]
  5. [wikipedia:Youtube#Rechtliche_Aspekte:Youtube – Rechtliche Aspekte] – Wikipedia
  6. Formats and Resolutions of Youtube Videos – Auflistung der YouTube-Format-Codes mitsamt Auflösung und anderen Details
  7. [github:tmechen/tatort-dl:tatort-dl] – Hilfsprogramm speziell für die Mediathek der ARD
  8. [:Streams_speichern:] {Übersicht} Übersichtsseite