Wie funktionieren Youtube-Downloader genau?

...komplette Frage anzeigen

3 Antworten

Youtube kann auch andere Protokolle als HTTP. Ich beschränke mich mal nur auf HTTP(S):

Da ist definitiv keine "Magie" dahinter.

Jedenfalls: Letztendlich kannst du mit dem Entwicklermodus (Firefox: STR-SHIFT-C; Chrome F12) sehr leicht nachvollziehen, was Youtube so macht.

z.B. wird diese Seite hier aufgerufen und heruntergeladen.

https://r5---sn-4g57knzs.googlevideo.com/videoplayback?key=yt6&keepalive=yes&ei=kQRIWeiTDYqbcP6LqpAE&mv=m&expire=1497913585&initcwndbps=1236250&dur=139.500&id=o-AJkOtjlgKDiDEgiFuuz70O6-Rlf5zMsFcN8EctAcr91c&mime=video/webm&ms=au&requiressl=yes&pl=19&itag=243&mt=1497891872&sparams=clen,dur,ei,gir,id,initcwndbps,ip,ipbits,itag,keepalive,lmt,mime,mm,mn,ms,mv,pl,requiressl,source,expire&mn=sn-4g57knzs&mm=31&ip=1.111.11.11&lmt=1497041843410816&gir=yes&ipbits=0&clen=7032908&signature=8DEDCBBC46BFE6DD0A3902FD7294356F4DE78488.324215DCDFE9EC140E3F7F293EB30A288A26673D&source=youtube&alr=yes&ratebypass=yes&cpn=ddCP7cIEyaLZAX9l&c=WEB&cver=1.20170615&range=0-138215&rn=0&rbuf=0

Und das Ergebniss, was kommt, wenn man diese Seite herunterläd, ist ein Teil des Videos. Kannst das natürlich nicht anschauen, da nur ein Teil der Video-Datei ;).

Jedenfalls schauen wir uns das mal genauer an:

Es wird also Kontakt mit dem Server: "r2---sn-4g5edney.googlevideo.com" aufgenommen. Wenn du Youtube noch einmal aufrufst, hast du statt diesem "r2---sn-4g5edney" etwas anderes - ist ja auch logisch. Ein Server kann nicht die ganze Youtube-Last tragen - deshalb "redet" man immer mit einem anderen Server.

Jedenfalls wird nun auf "videoplayback" zugegriffen.

Und das ist ein Skript, was auf diesem Youtube-Server läuft. Alles, was nach dem ? kommt sind Parameter für dieses Skript.

Du siehst z.B. welches Video ich aufgerufen habe, meine ip (habe ich geändert), das gewünschte Format und alles mögliche andere - was auch für uns unwichtig ist.

Jedenfalls wird nun der Server (und ich arbeite nicht bei Google - was jetzt kommt ist eigentlich nur eine starke Vermutung) nun andere Server nach dieser von mir angeforderten Datei fragen. Üblicherweise wirst du zwei Typen von Servern haben: Die Server, mit denen du direkt sprichst und andere Server, die die Daten speichern.

Ob nun auf Server X das ganze Video gespeichert ist oder ein Video in Stücken auf verschiedenen Servern, lässt sich als Außenstehender nicht sagen.

Jedenfalls ist wohl davon auszugehen, dass Videos auf mehreren Servern gleichzeitig gespeichert werden - abhängig davon, wie oft ein Video aufgerufen wird.

Videos werden nebenbei auch in mehreren Formaten und Auflösungen abgespeichert - oder in Echtzeit konvertiert. Vermutlich auch ein Mix: Wenn das Video häufiger aufgerufen wird, dann direkt in verschiedenen Formaten - kann mir aber vorstellen, dass wenn ein Video nur 2 Klicks hat, das auch mal on demand konvertiert wird.

Jedenfalls

Dein Youtube-Downloader macht nichts anderes, als solche Links wie oben aufzurufen.

Ist eigentlich erstaunlich primitiv ;).

Wer Bock hat und ein bisschen (python) programmieren kann, kann sich hier mal eine Implementierung eines Youtube-Downloaders anschauen:

https://github.com/rg3/youtube-dl

Gruß

Tuxgamer

Antwort bewerten Vielen Dank für Deine Bewertung

Wenn man ein Video hoch lädt, wird es auf einem Server gespeichert und bekommt eine URL, um dem Video einen direkten und einzigartigen Ort zu zuschreiben. 

Wenn man es anschaut wird es gestreamt. Man greift nicht direkt auf das Video zu. Wenn du es aber downloaden willst, suchst du, bzw. der Downloader, den direkten Weg zur Datei und nicht nur zum Streaming. 

Als Mp4 wird es nicht umgewandelt beim Download. Ich glaube für HTML 5 muss das Video ein Mp4 Format haben. Man kann es auch in anderen Formaten hochladen, aber dann wird es direkt beim Upload umgewandelt.


Ich kann es halt leider auch nicht ganz erklären. Aber ich hoffe das hilft dir immerhin etwas weiter. 


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von blocklab
19.06.2017, 18:09

Ja, du bist ähnlich weit wie ich... Wie genau das mir HTML funktioniert, wusste ich zwar nicht, aber irgendwo muss die Datei ja liegen. Dachte aber, dass Youtube (würde zumindest ich so machen) die Datei auf ganze vielen Servern speichert und dann wieder zusammenbaut (wie bei Apples iPhones)... Außerdem würde ich den direkten Dateien irgendwelche Zugangsbeschränkung geben... Und ich habe auch mal festgestellt, dass bei manchen Convertern (indem der convert2mp3) Bild und Ton nach einigen Stunden im Download (aber nicht im "Stream") asynchron werden, was ja gegen einen direkten Zugriff spricht... Ich fürchte, dass mir hier das keiner so wirklich beantworten kann...

0

Das kannst du auch selbst machen.

Installiere dir den jdownloader und gib ihm die Youtube-URL des Videos.

Beim ersten Mal wirst du noch nach einem Plugin gefragt (ffmpeg iirc) und dann geht der Spaß los. ffmpeg extrahiert automatisch das Audio aus dem Videofile. Klappt auch mit riesigen Playlisten.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?