![enter image description here](https://backlogmann.com/bla/content/images/20251012162757-yt-dlp.png)

Was ist yt-dlp


yt-dlp ist ein funktionsreicher Befehlszeilen-Audio-/Video-Downloader, der Tausende von Websites unterstützt. Das Projekt ist ein Fork von youtube-dl, basierend auf dem inzwischen inaktiven youtube-dlc.

https://github.com/yt-dlp/yt-dlp


Commands:

# Dokumentation/Hilfe:

yt-dlp --help 

# Alle verfügbaren Formate einer Quelle anzeigen (Audio + Video)

yt-dlp -F https://source

# Alle verfügbaren Subtitle anzeigen

yt-dlp --list-subs https://source

# Quelle herunterladen (auto)

yt-dlp https://source

# Beste Video + Audioqualität herunterladen und in mkv packen + Untertitel (lädt manchmal nicht alle Tonspuren herunter, siehe unten)

yt-dlp -f "bv*+ba*" \
--write-subs \
--all-subs \
--convert-subs srt \
--remux-video mkv \
--audio-multistreams \
https://source

# Bestes Video + spezifische Audiospuren (z.B. eng/deu - über -F ermitteln) in mkv packen + Untertitel

yt-dlp -f "bv*+hls-audio0-TV_Ton-3+hls-audio0-Originalton_englisch-3" \
--write-subs \
--all-subs \
--convert-subs srt \
--remux-video mkv \
--audio-multistreams \
https://source

Beispiel aus der Praxis

Bei einigen Mediatheken kann yt-dlp automatische alle Quellen auf einer Seite finden indem man als Quelle die URL der Übersichtsseite / Playlist angibt.

Wenn man etwas zielgerichteter vorgehen will und den Download von Playlists z.B. auf mehrere Geräte splitten will, bietet sich ggf. ein Bashscript an.

Auf Übersichtsseite der Mediathek nach Links suchen (Beispiel für z.B. ZDF);

#Konsolescript für Browser:

document.querySelectorAll('[data-testid="video-teaser"] a').forEach((a) => {
 console.log(a.href);
});

#Alternativ per yt-dlp:

yt-dlp --flat-playlist --skip-download --print "%(webpage_url)s" https://source

https://source/01.html
https://source/02.html
https://source/03.html
#(usw. ...)

#Verfügbare (Audio-)Formate ermitteln:

yt-dlp -F https://source/01.html

(...)
ID                                EXT  RESOLUTION FPS │   FILESIZE   TBR PROTO │ VCODEC        VBR ACODEC     MORE INFO
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
hls-audio0-TV_Ton-0               mp4  audio only     │                  m3u8  │ audio only        unknown    [eng] ot, TV Ton
hls-audio0-TV_Ton-1               mp4  audio only     │                  m3u8  │ audio only        unknown    [eng] ot, TV Ton
hls-audio0-TV_Ton-2               mp4  audio only     │                  m3u8  │ audio only        unknown    [eng] ot, TV Ton
hls-audio0-TV_Ton-3               mp4  audio only     │                  m3u8  │ audio only        unknown    [eng] ot, TV Ton
hls-audio0-Originalton_englisch-0 mp4  audio only     │                  m3u8  │ audio only        unknown    [eng] ot, Originalton englisch
hls-audio0-Originalton_englisch-1 mp4  audio only     │                  m3u8  │ audio only        unknown    [eng] ot, Originalton englisch
hls-audio0-Originalton_englisch-2 mp4  audio only     │                  m3u8  │ audio only        unknown    [eng] ot, Originalton englisch
hls-audio0-Originalton_englisch-3 mp4  audio only     │                  m3u8  │ audio only        unknown    [eng] ot, Originalton englisch
hls-audio0-Originalton_englisch-4 mp4  audio only     │                  m3u8  │ audio only        unknown    [deu] main, Originalton englisch
hls-audio0-Originalton_englisch-5 mp4  audio only     │                  m3u8  │ audio only        unknown    [deu] main, Originalton englisch
hls-audio0-Originalton_englisch-6 mp4  audio only     │                  m3u8  │ audio only        unknown    [deu] main, Originalton englisch
hls-audio0-Originalton_englisch-7 mp4  audio only     │                  m3u8  │ audio only        unknown    [deu] main, Originalton englisch
hls-audio0-TV_Ton-4               mp4  audio only     │                  m3u8  │ audio only        unknown    [deu] main, TV Ton
hls-audio0-TV_Ton-5               mp4  audio only     │                  m3u8  │ audio only        unknown    [deu] main, TV Ton
hls-audio0-TV_Ton-6               mp4  audio only     │                  m3u8  │ audio only        unknown    [deu] main, TV Ton
hls-audio0-TV_Ton-7               mp4  audio only     │                  m3u8  │ audio only        unknown    [deu] main, TV Ton
hls-audio0-TV_Ton-8               mp4  audio only     │                  m3u8  │ audio only        unknown    [deu] main, TV Ton
http-h264_aac_mp4_http_na_na-0    mp4  480x270        │ ≈149.76MiB  508k https │ avc1.4d401f       mp4a.40.2  [eng] ot
http-vp9_opus_webm_http_na_na-0   webm 480x270        │ ≈108.49MiB  368k https │ vp9               opus       [eng] ot
(...)

#SOURCES in download.sh durch eigene URL Liste und ggf. gültige -f Parameter (siehe oben) ersetzen

chmod +x download.sh; ./download.sh

#!/bin/bash

YT_DLP_CMD=(
  yt-dlp
  -f "bv*+hls-audio0-TV_Ton-3+hls-audio0-Originalton_englisch-3"
  --write-subs
  --all-subs
  --convert-subs srt
  --remux-video mkv
  --audio-multistreams
)

SOURCES=( 
https://source/01.html
https://source/02.html
https://source/03.html
#(usw. ...)
)

for source in "${SOURCES[@]}"; do
  echo "yt-dlp - checking source: $source"
  "${YT_DLP_CMD[@]}" $source
  echo "-----------------------------------"
done