Youtube-dl

Aus wiki.archlinux.de
Version vom 17. November 2013, 23:50 Uhr von Dirk (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Will man YouTube-Videos herunterladen, weil man sie entweder in einem Desktop-Videoplayer gucken möchte, später ohne Internetverbindung zum Beispiel auf dem …“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Will man YouTube-Videos herunterladen, weil man sie entweder in einem Desktop-Videoplayer gucken möchte, später ohne Internetverbindung zum Beispiel auf dem Fernseher sehen möchte, oder weil man die Videos gern archivieren möchte, bevor sie auf YouTube gesperrt werden, kann man youtube-dl verwenden.

Installation

Das Programm ist als youtube-dl in community verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S youtube-dl

Nach der Installation ist das Programm mittels youtube-dl aufrufbar. Die Manpage bietet eine ausführliche Übersicht und Beschreibung aller möglichen Parameter und Optionen.

Verwendung

youtube-dl akzeptiert sowohl einen kompletten Video-URL, als auch nur die Video-ID, im URL nach dem v= zu finden.

youtube-dl http://www.youtube.com/watch?v=67j45hhhr678
[youtube] Setting language
[youtube] 67j45hhhr678: Downloading video webpage
[youtube] 67j45hhhr678: Downloading video info webpage
[youtube] 67j45hhhr678: Extracting video information
[download] Destination: mein tolles video-67j45hhhr678.mp4
[download] 100% of 3.69MiB in 00:04

Wenn nicht näher spezifiziert, wird das qualitativ beste, herkömmliche Video 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.

youtube-dl -F 67j45hhhr678
[youtube] Setting language
[youtube] 67j45hhhr678: Downloading video webpage
[youtube] 67j45hhhr678: Downloading video info webpage
[youtube] 67j45hhhr678: Extracting video information
Available formats:
22	:	mp4	[720x1280]
18	:	mp4	[360x640]
43	:	webm	[360x640]
5	:	flv	[240x400]
36	:	3gp	[240x320]
17	:	3gp	[144x176]
137	:	mp4	[1080p] (DASH Video)
136	:	mp4	[720p] (DASH Video)
135	:	mp4	[480p] (DASH Video)
134	:	mp4	[360p] (DASH Video)
133	:	mp4	[240p] (DASH Video)
160	:	mp4	[192p] (DASH Video)
141	:	m4a	[256k] (DASH Audio)
140	:	m4a	[128k] (DASH Audio)
139	:	m4a	[48k] (DASH Audio)

Das höchstqualitative normale Video hat die Qualitäts-ID 22 (zu den DASH-Formaten siehe nächster Abschnitt), dies wird automatisch heruntergeladen. Wenn einem eine kleinere Version reicht, kann man die entsprechende Qualitäts-ID beim Aufruf übergeben.

youtube-dl -f 43 67j45hhhr678
[youtube] Setting language
[youtube] 67j45hhhr678: Downloading video webpage
[youtube] 67j45hhhr678: Downloading video info webpage
[youtube] 67j45hhhr678: Extracting video information
[download] Destination: mein tolles video-67j45hhhr678.mp4
[download] 100% of 1.33MiB in 00:01

Damit wurde die webm-Variante 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.

Script für DASH-Videos

Auf YouTube wurde vor einiger Zeit endgültig auf das DASH-System umgestellt, um HD-Videos größer als 720p (1080p, 2K, 4K) auszuliefern. Dies funktioniert derart, dass Audio- und Videodaten als getrennte Streams bereitgestellt werden, und lediglich nur ein paar Sekunden vorgepuffert werden.

Dies verhindert nicht nur unnötigen Traffic, falls jemand das Video nicht vollständig guckt, sondern auch, dass 1080p-Videos ohne weiteres heruntergeladen werden können. Mittels folgender Funktion (zum Beispiel in der bashrc) kann man die nötigen Schritte automatisieren.

function 1080p-dl () { 
    _filename=$(youtube-dl --get-filename ${1});
    youtube-dl -o 'a.m4a' -f 139 "${1}";
    youtube-dl -o 'v.mp4' -f 137 "${1}";
    ffmpeg -i "v.mp4" -i "a.m4a" \
        -c:v copy -c:a copy \
        "${_filename}" \
        && rm a.m4a v.mp4
}

Als ersten und einzigen Parameter braucht die Funktion lediglich die YouTube-Video-ID (v=…), und lädt danach das Audio, und dann das 1080p-Video herunter, kombiniert beides mit dem richtigen Dateinamen, und löscht die dann überflüssig gewordenen Daten hinterher, so dass nur noch die kombinierte Datei übrig bleibt. Da als Audio- und Video-Codec copy verwendet wird, kommt es zudem zu keinem Qualitätsverlust.

Andere Videoanbieter

Anders als der Name vermuten lässt, beherrscht youtube-dl auch das Herunterladen von Videos aus anderen Quellen. Darunter andere Videoplattformen wie zum Beispiel myvideo.de, vimeo, blip.tv, metacafe.com oder Dailymotion. Zusätzlich erkennt youtube-dl Videoeinbettungen mancher offiziell nicht unterstützter Seiten automatisch.

youtube-dl -F "http://www.arte.tv/guide/de/048963-321/sendung?autoplay=1"
[arte.tv:+7] 048963-321: Downloading webpage
[arte.tv:+7] 048963-321: Downloading info json
[arte.tv:+7] 048963-321: Extracting information
[info] Available formats for 048963-321_PLUS7-D:
format code         extension resolution  note
200-300-VA-STMA     flv       320x200     UT Hörgeschädigte (worst)
200-300-VA          flv       320x200     Dt. Version
360-1500-VA-STMA    mp4       640x360     UT Hörgeschädigte
360-1500-VA         mp4       640x360     Dt. Version
406-800-VA-STMA     flv       720x406     UT Hörgeschädigte
406-800-VA          flv       720x406     Dt. Version
406-1500-VA-STMA    flv       720x406     UT Hörgeschädigte
406-1500-VA         flv       720x406     Dt. Version
720-2200-VA-STMA    flv       1280x720    UT Hörgeschädigte
720-2200-VA         flv       1280x720    Dt. Version (best)

Auch Videos aus der arte-Mediathek „ARTE+7“ können durch youtube-dl heruntergeladen werden. Im Beispiel werden die verfügbaren Qualitäten aufgelistet. (Auch hier wieder anhand einer fiktiven Video-ID.)

Weitere unterstützte Seiten können auf der offiziellen Homepage eingesehen werden.

Siehe auch

Weblinks