YouTube Downloader

Dass YouTube weit mehr als "Katzenvideos" bereit stellt sondern auch wirklich gute Vorträge bereithält, dürfte mittlerweile bekannt sein. So veröffentlichen Microsoft aber auch das CCC und viele freie Autoren neben Webseiten auch Vorträge und Videos. Auch einige meiner Vorträge sind auf YouTube abgelegt.

Das Problem ist aber, dass ich solche Informationen bevorzugt auf Reisen anschaue, wenn andere Tätigkeiten nur schwer möglich wären. Dazu brauche ich diese aber Offline. Auf der TechNet Gallery gibt es z.B.: ein PowerShell-Script, welche die Vorträge der Ignite u.a. vollautomatisch von einer Webseite einsammelt und die PowerPoint-Slides von Microsoft aber auch die Vortragsvideos von YouTube herunter lädt.

Hier beschreibe ich meine Lösung, um Dateien und Videos bequem Offline verfügbar zu machen, die ich auf YouTube gefunden habe.

Beachten Sie dabei bitte die gültigen Lizenz- und Copyright-Bestimmungen der Medien. Dies gilt insbesondere das Herunterladen von Musikvideos und der Export-Funktion als MP3.

Am 23 Okt 2020 hat die RIAA mit Hinweis auf  Digital Millennium Copyright Act (DMCA) das Repository mit dem Code sperren lassen. Das Repository ist dann auf https://gitlab.com/dstftw/youtube-dl/ umgezogen.

Zudem gibt es Alternativen. https://en.wikipedia.org/wiki/Comparison_of_YouTube_downloaders z.B. ClipGrab.

Dennoch sehe ich so ein Vorgehen kritisch, wenn YouTube-DL ist eine klassisches "Dual-Use" Software, mit der man natürlich auch elegant Musikvideos in MP3-Dateien konvertieren und dabei die Werbung umgehen kann. Aber das könne YouTube technisch unterbinden, wie sie mit dem Leihfilmen auch beweisen. Also sage mir keiner, dass es nicht toleriert wird, solange genug Menschen die Werbung anschauen.

YouTube Quellen: Videos und Listen

Wenn Sie sich die Links von YouTube anschauen, dann gibt es Links für einzelne Videos aber auch für ganze Gruppen Videos.

  • Link zu "meiner" Seite mit Videos der MSXFAQ
    https://www.youtube.com/user/msxfaq
    Dieser Link zeigt einfach alle Videos nach dem Autor an ohne weitere thematische Gruppierung
  • Einzelvideo Beispiel "Ende zu Ende Verschlüsselung "
    https://www.youtube.com/watch?v=3AIQpDlm2EQ
    Dieser Link spielt genau ein Video ab. Über den Parameter "t" könnte sogar noch die Einsprungzeit vorgegeben werden, z.B. https://www.youtube.com/watch?v=3AIQpDlm2EQ&t=136s
  • Playlist
    Jeder registrierte Benutzer kann aber mehrere Videos verschiedener Quellen in einer eigenen Playlist zusammenstellen. Das machen wohl besonders gerne Menschen, die Musikvideos, z.B. "Alle Lieder von X", nacheinander anhören wollen. Diese Funktion ist aber auch für IT-Vorträge interessant, da so z.B. aus der Unmenge von Videos einer Ignite-Konferenz eine eigene Playliste zu jedem Themenschwerpunkt aufgesetzt werden kann.

Die Playlists sind als besonders interessant, um diese Vorträge auch mal mitzunehmen. Um sich solche Videos auch Offline verfüg bar zu machen, gib es gleich mehrere Add-ons und Plugins für die gängigen Browser. Allerdings stehe ich denen immer etwas skeptisch gegenüber, da Sie ja in meinem Browser mitlaufen und damit auch umfangreiche Zugriffsrechte haben.

Auch bin ich skeptisch gegenüber Webseiten, denen ich eine YouTube-URL übergebe und die dann die Medien herunterladen, konvertieren und mir zum Downloads anbieten. Das Geschäftsmodell kann ja auch hier nur Werbung, Daten verkaufen oder Trojaner unterschieben sein. Sie sehen mir einfach zu viel. Mir würde es reichen, wenn ich die URL einfach an ein Programm oder Skript übergeben kann.

Download mit YouTube-DL

. So ein Tool gibt es in Form von YouTube-DL, welches auch in den PowerShell-Skripten zum Download von Ignite Vorträgem (Auto Michel de Rooi) verwendet wird

Wenn Sie Youtube-dl.exe schon haben aber ein Download nicht funktionieren will, dann ist ein Update ratsam. Das kann Youtube-DL komplett alleine, wenn der ausführende Benutzer Downloads aus dem Internet ausführen und das Zielverzeichnis beschreiben kann.

youtube.dlexe --update

Der Download von einzelnen Videos oder ganzen Playlisten ist recht einfach. Wenn ich eine Playlist habe, in der die Videos schön aufgereiht sind, dann nutze ich dazu meist folgenden Aufruf (Zur Lesbarkeit umgebrochen):

youtube-dl 
   --ignore-errors 
   --no-overwrites
   -o "%(playlist_title)s/%(title)s.%(ext)s" "https://www.youtube.com/playlist?list=xxxxxx"

Der Parameter "--ignore-errors" verhindert, dass das Programm bei einem Fehler abbricht, z.B. weil das Video nicht mehr vorhanden ist. In der Standardeinstellung wird das beste Video herunter geladen. Mit "--no-overwrite" verhindere ich, dass bereits herunter geladene Medien überschrieben werden. Wenn alles klappt, können Sie so eine Playlist auch immer wieder mit YouTube-DL aktualisieren lassen. Es gibt noch viele weitere Optionen, z.B. um auch das Alter der Datei zu filtern. Das wäre dann noch eine bessere Lösung, wenn ein Skript den Moment des letzten Downloads speichert und später darauf wieder aufsetzt.

Wenn Sie die Zeile in einem Batchfile verwenden, dann müssen Sie die "%" Zeichen doppelt schreiben.
Wer die Sortierung der Playlist mit verwenden will, kann ein noch %(playlist_index)s noch davor stellen, um die Nummerierung voran zu stellen.

Andere Formate

YouTube passt seine Videos natürlich an das Endgerät und die Bandbreiten an. Das können Sie sich zu Nutze machen, wenn sie keine "FullHD"-Auflösung brauchen oder nur Audio wollen. Über den Parameter "--format" können Sie das entsprechende Format auswählen. Die Liste der verfügbaren Formate kann je Video unterschiedlich sein und kann mit "--list-formats" ermittelt werden. Hier ein Beispiel:

C:\>youtube-dl.exe --list-formats https://www.youtube.com/watch?v=r6sQCWurCsg
[youtube] r6sQCWurCsg: Downloading webpage
[youtube] r6sQCWurCsg: Downloading video info webpage
[youtube] r6sQCWurCsg: Downloading MPD manifest
[youtube] r6sQCWurCsg: Downloading MPD manifest
[info] Available formats for r6sQCWurCsg:
format code  extension  resolution note
139          m4a        audio only DASH audio   52k , m4a_dash container, mp4a.40.5@ 48k (22050Hz), 4.41MiB
140          m4a        audio only DASH audio  131k , m4a_dash container, mp4a.40.2@128k (44100Hz), 11.75MiB
160          mp4        256x144    DASH video  108k , mp4_dash container, avc1.4d400b, 30fps, video only
133          mp4        426x240    DASH video  242k , mp4_dash container, avc1.4d400c, 30fps, video only
134          mp4        640x360    DASH video  252k , mp4_dash container, avc1.4d401e, 30fps, video only, 4.77MiB
135          mp4        854x480    DASH video 1155k , mp4_dash container, avc1.4d4014, 30fps, video only
137          mp4        1920x1080  DASH video 1545k , mp4_dash container, avc1.640028, 30fps, video only, 20.70MiB
136          mp4        1280x720   DASH video 2310k , mp4_dash container, avc1.4d4016, 30fps, video only
17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k, 3.46MiB
36           3gp        320x180    small , mp4v.20.3, mp4a.40.2, 8.30MiB
43           webm       640x360    medium , vp8.0, vorbis@128k, 14.59MiB
18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k, 20.08MiB
22           mp4        1280x720   hd720 , avc1.64001F, mp4a.40.2@192k (best)

Neben der Auflösung und Framerate (fps) sehen Sie auch Datenmengen und Raten.. Neben den verschiedenen Video-Formaten gibt es auch "Audio Only" spuren, die im m4a-Format vorliegen

Wenn ich nur die Audio-Spur eines Videos z.B. als Hörbuch für das Auto/ICE haben will, dann muss noch das Format angeben.

youtube-dl.exe 
   --format 139 
   https://www.youtube.com/watch?v=r6sQCWurCsg

Zu MP3 konvertieren mit FFMPEG

Leider können viele MP3-Player nicht unbedingt mit M4A etwas anfangen. Yotube-dl kann daher mit dem Zusatzmodul FFMPEG auch Fomate konvertieren. Ich muss dazu natürlich zuerst die entsprechenden Programme einfach neben youtube-dl.exe ins Verzeichnis legen

FFMEG Download
https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-latest-win32-static.zip

Dann kann ich mit den passenden Parameter sofort eine Konvertierung des Inhalts durchführen lassen. Hier ein Beispiel, um alle Tonspuren einer Playliste zu laden, Konvertieren und in einem Unterverzeichnis zu speichern, welches den Namen der Playlist hat.

youtube-dl 
   --ignore-errors 
   --extract-audio 
   --audio-format mp3 
   --audio-quality 128k 
   -o "%%(playlist_title)s/%%(title)s.%%(ext)s" "https://www.youtube.com/playlist?list=xxxxxx

Wobei hier noch keine Sonderzeichen abgefangen werden. Die Nutzung des "playlist_title" schlägt natürlich fehlt, wenn jemand nicht erlaubte Zeichen verwendet. Theoretisch ist sogar ein Angriff denkbar, wenn ich als Playlist-Title z.B. "\Windows\cmd.exe\" verwenden würde. Ich habe das aber nicht weiter überprüft und sehe ja auch den Namen der Playlist, deren URL ich dann übergeben. Die Funktion "--no-overwrites", um bestehende Medien nicht erneut zu laden funktioniert hier nicht, da die heruntergeladene Datei nach der Konvertierung entfernt wird.

Events und Playlists

Mittlerweile zeichnen immer mehr Veranstaltungen ihr Vorträge auch professionell auf und stellen sie nicht nur den zahlenden Teilnehmern sondern der gesamten Welt zur Verfügung. Da haben dann alle drei was davon: Der Besucher kann parallele Vorträge zuhause anschauen, jeder im Internet kann davon partizipieren, auch wenn er nicht vor Ort teilnehmen konnte und der Veranstalter kann damit quasi Werbung für die nächste Ausgabe im kommenden Jahr machen. Früher gab es wenige Leitmessen, wo man halt sein musste. Durch Internet, Podcasts, Social Media hat sich das alles aufgelockert.

Ich lade mit mit youtube-dl solche Vorträge gerne herunter und betrachte mir diese unterwegs auf meinem Smartphone, Tablet oder PC. Das finde ich allemal sinnvoller als irgendwelche Serien von Streaming-Anbietern zu betrachten.

Beim Download von YouTube muss ich aber den Parameter "--format mp4" addieren, da ansonsten zumindest Anfang 2020 ein MKV-Container stellt wurde, mit dem IOS nichts anfangen kann.

Achtung: Der Download einer Playlist lädt alle Videos, was schnell mall mehrere Gigabyte sein können

Event Videos
mp4 GB
URLs

36C3

 

YouTube Playlist: https://www.youtube.com/playlist?list=PL_IxoDz1Nq2YjnEpUMSqeqVUXgyEcsJdu

youtube-dl.exe 
   --ignore-errors 
   --no-overwrites 
   --format mp4 
   https://www.youtube.com/playlist?list=PL_IxoDz1Nq2YjnEpUMSqeqVUXgyEcsJdu

Ignite 2019 Keynotes

19

YouTube Playlist https://www.youtube.com/playlist?list=PLFPUGjQjckXHtVZJ5dAyv1KvIZ_GB-127

youtube-dl.exe 
   --ignore-errors 
   --no-overwrites 
   --format mp4 
   https://www.youtube.com/playlist?list=PLFPUGjQjckXHtVZJ5dAyv1KvIZ_GB-127

 

Ignite 2019 Networking

21

YouTube Playlist https://www.youtube.com/playlist?list=PL9VBYmZ7H046NoWfJXdQNjqlYZCZ2IBjt

youtube-dl.exe 
   --ignore-errors 
   --no-overwrites 
   --format mp4 
   https://www.youtube.com/playlist?list=PL9VBYmZ7H046NoWfJXdQNjqlYZCZ2IBjt

Etwas unschön ist, dass der Dateiname anhand der URL und Titelnamen mit einigen Zusatzbuchstaben versehen sind. Ich habe die einfach nach dem Download per PowerShell umbenannt

foreach ($file in get-item *.*){ren $file "$($file.name.substring(0,$file.name.Length-16)).mp4"}

Eigentlich fehlt nur noch eine App, mit der ich YouTube-Videos direkt auf dem Smartphone z.B. im heimischen WLAN runterladen kann oder dass YouTube einen Kanal oder Playliste als RSS-Feed anbietet. Da wird aber Google was dagegen haben, da ich so ja keine Werbung sehen würde.

PowerShell Download Helper

Nicht jeder Admin und erst recht nicht jeder Anwender kommt mit den Kommandozeilen zurecht. Es gibt natürlich Angeboten von Oberflächen, die die Eingabe anfordern und dann im Hintergrund das Programm starten. Allerdings bin ich immer kritisch, wenn die Autoren selbst solcher Trivialprogramme den Quellcode nicht öffentlich machen und die EXE-Dateien nicht signieren. Das fördert gerade nicht das vertrauen. Ich habe mir einfach schnell ein Powershell-Script geschrieben, welche die URL entweder als Parameter annimmt oder abfragt.

youtube-downloader.1.0.ps1

Einfach herunterladen und in das gleiche Verzeichnis wie Youtube-dl.exe und ffmpeg.exe und ffprobe.exe kopieren und einfach starten. Das Skript akzeptiert eine URL als Parameter. Ohne URLs fragt es immer wieder interaktiv nach einer URL, bis sie keine URL mehr eingeben.

Copyright und Werbung

Natürlich kann ich auch eine der vielen Playlists von Musik-Artisten über den gleichen Weg herunterladen und sogar automatisch zu MP3-Dateien konvertieren lassen. Mittlerweile beginnt YouTube ja auch damit, Werbung in Videos einzubinden. Allerdings bestimmen noch die Uploader, ob Sie mit den Videos Geld verdienen wollen. So habe ich bei den Ignite-Vorträgen noch keine Werbepause entdecken können. Hier stellt sich die Frage nach dem Copyright eher nicht, da Microsoft ja die Inhalte selbst bereit stellt und sicher froh ist, wenn immer mehr Personen das Wissen für eine gute Dienstleistung aufbauen.

Bei Musik-Videos dürfte das dann etwas anderes sein. Aktuell gibt es von YouTube-DL immer mal wieder ein Update, welches Fehler behebt. Ich könnte mir aber auch vorstellen, dass YouTube irgendwann versucht, solche Hilfsprogramme auszusperren. Ein Vorteil von YouTube-DL ist ja, dass es den Download sehr schnell erledigt, d.h. viel schneller, als ein normales Video zum Abspielen bräuchte. Über eine 100Bit DSL-Leitung können Sie sich die Gigabyte Ignite-Videos in wenigen Stunden laden, obwohl es viele Tage an Inhalt sind.

Diese Seite darf daher nicht als Aufforderung zu Copyright-Verletzungen missverstanden werden. Leider sind die Werkzeuge für legitime und illegale Aktivitäten die gleichen. Täter ist aber immer die Person vor dem Bildschirm, nicht der Hersteller oder oder das Werkzeug. Mit dem gleichen Kniff schieben ja auch Waffenhersteller und Politiker die Verantwortung ab, wenn Sie tödliche Werkzeuge in fremde Länder verkaufen.

Weitere Links