Snippets: youtube-dl/yt-dlp
Im folgenden habe ich einige Snippets zu youtube-dl bzw. dessen Fork yt-dlp zusammengestellt:
Bestimmten Stream herunterladen
Verfügbare Audio- und Video-Streams anzeigen
$ youtube-dl -F 'https://www.youtube.com/watch?v=CiQKE_FdIs8'
[youtube] Extracting URL: https://www.youtube.com/watch?v=CiQKE_FdIs8
[youtube] CiQKE_FdIs8: Downloading webpage
WARNING: [youtube] unable to extract initial player response; please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U
[youtube] CiQKE_FdIs8: Downloading ios player API JSON
[youtube] CiQKE_FdIs8: Downloading android player API JSON
[youtube] CiQKE_FdIs8: Downloading iframe API JS
[youtube] CiQKE_FdIs8: Downloading player 7ee36b0e
[youtube] CiQKE_FdIs8: Downloading web player API JSON
[youtube] CiQKE_FdIs8: Downloading m3u8 information
WARNING: [youtube] unable to extract yt initial data; please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U
WARNING: [youtube] Incomplete data received in embedded initial data; re-fetching using API.
[youtube] CiQKE_FdIs8: Downloading initial data API JSON
[info] Available formats for CiQKE_FdIs8:
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27 0 │ mhtml │ images storyboard
sb1 mhtml 80x45 1 │ mhtml │ images storyboard
sb0 mhtml 160x90 1 │ mhtml │ images storyboard
[...]
140 m4a audio only 2 │ 3.74MiB 129k https │ audio only mp4a.40.2 129k 44k [es] medium, m4a_dash
[...]
22 mp4 1280x720 30 2 │ ≈72.01MiB 2438k https │ avc1.64001F mp4a.40.2 44k [es] 720p
[...]
136 mp4 1280x720 30 │ 66.56MiB 2309k https │ avc1.4D401F 2309k video only 720p, mp4_dash
[...]
Genauen Download-Stream festlegen
Die spezifische Stream-ID muss eine der für dieses Video verfügbaren Streams sein! (hier ist es 22)
youtube-dl -f 22 'https://www.youtube.com/watch?v=CiQKE_FdIs8'
Mehrere Streams laden
Um zum Beispiel einen spezifischen Video-Stream mit einem bestimmten
Audio-Stream zu kombinieren, können mehrere IDs mit +
kombiniert werden:
youtube-dl -f 140+136 'https://www.youtube.com/watch?v=CiQKE_FdIs8'
Automatisch besten Stream erkennen
Durch Verwendung von bestaudio
oder bestvideo
versucht youtube-dl automatisch, den
bessten Stream zu ermitteln. Statt bestaudio+bestvideo
kann auch einfach kurz best
verwendet werden.
youtube-dl -f best 'https://www.youtube.com/watch?v=CiQKE_FdIs8'
youtube-dl -f bestaudio 'https://www.youtube.com/watch?v=CiQKE_FdIs8'
youtube-dl -f bestvideo 'https://www.youtube.com/watch?v=CiQKE_FdIs8'
Video-Stream: maximale Auflösung
Beim erkennen des besten Streams mittels bestvideo
kann auch eine maximale Höhe angegeben
werden, um höchstens z.B. ein 720p- oder 1080p-Video zu bekommen:
youtube-dl \
-f "bestvideo[height<=720]+bestaudio/best[height<=720]" \
'https://www.youtube.com/watch?v=CiQKE_FdIs8'
MP3 inklusive Metadaten erstellen
youtube-dl \
-f "bestaudio" \
--add-metadata \
--embed-thumbnail \
--postprocessor-args "-metadata comment=$url" \
--audio-format mp3 \
--audio-quality 0 \
"$url"
Audio-Spur in MP3 konvertieren
Das etwas kryptische ${f%.*}
entfernt die Datei-Endung (alles ab dem letzten
Punkt). Qualitätsstufe 2 entspricht 190 kbit/s (VBR ±40kbit/s), und eigentlich
immer passend, da höhrere Bitraten meist nur für (unnötig) größere Dateien sorgt.
Kleinere Qualitätsstufen sind mitunter bei gutem Quellmaterial sowie Lautsprechern
wiederum hörbar.
f='Konzert der untoten Plastikbecher 2008.mp4'
ffmpeg -i "$f" -vn -codec:a libmp3lame -qscale:a 2 "${f%.*}.mp3"
Audio-Tags beim Konvertieren mit ffmpeg setzen
ffmpeg \
-i "Eingabe-Datei.mp4" \
-vn \
-codec:a libmp3lame -qscale:a 2 \
-metadata title='Der Titel' \
-metadata artist='Künstler' \
-metadata album="Das Album" \
"Fertige_Audio-Datei.mp3"
Bonus: DVD-Stream in einzelne Datei kopieren
Der Stream, in dem sich auf einer DVD der Film befindet, ist in zahlreiche kleinere Teil- Stücke zerlegt auf der DVD gespeichert, da zur Kompatibilität mit Windows eine sehr kleine Maximalgröße für Dateien auf DVDs festgelegt wurde.
Nit MPlayer kann dieser statt ihn wie gewöhnlich einfach anzuzucken in eine einzelne Datei zusammen geführt werden:
# Das meist implizit genutzte Gerät /dev/dvd existiert z.B. unter ArchLinux
# nicht, deshalb müssen wir es immer explizit angeben!
DEVICE="/dev/sr0"
# Übersicht aller vorhandenen Tracks, durch die Länge lässt sich hier derjenige,
# der den Film enthält, ermitteln:
lsdvd $DEVICE
# Den Stream in eine Zusammenhängende Datei kopieren (Achtung! Die Datei ist bei
# Spielfilmen gewöhnlich vier bis sechs Gigabyte groß, und der Stream wird fast
# eins zu eins in Echtzeit ausgelesen!)
# -> 02 ist die eben ermittelte Nummer des zu lesenden Tracks
mplayer dvd://02 -dvd-device $DEVICE -dumpstream -dumpfile Ziel-Datei.vob
In der hier erstellten Datei befinden sich alle vorhandenen Audio- und Untertitelspuren. Wenn diese DVD-Kopie (in VLC) wiedergegeben wird, können diese dann Ausgewählt werden.