Wie funktionieren Videos bei YouTube?

Ist ja schon interessant, was technisch heute alles so möglich ist. Erst Flickr mit Millionen von Fotos, dann YouTube, welche scheinbar problemlos Gigabytes mit Videos ins Netz stellen. Nur welche Technologie steckt da eigentlich dahinter? Also es handelt sich ja erstmal um einen FlashPlayer, das ist nicht so schwer zu erraten. Aber wie werden die Videos ausgeliefert? Von Adobe gibt es dazu zwei Möglichkeiten:

  1. Streaming über Flash Media Server: Lizenzkosten, Administrationsaufwand, funktioniert nicht über restriktiv konfigurierte Firewalls
  2. Progressive Download: Das Video File (flv) wird als HTTP Download dem Client zur Verfügung gestellt –> kein sog. „seek“ im Video, solange man noch nicht alles heruntergeladen hat.

YouTube verwendet kein Streaming, denn YouTube geht überall, wo der FlashPlayer (Version 7) zur Verfügung steht.

YouTube benutzt einen cleveren Trick, um die Vorteile eines Streamings umzusetzen, dabei aber auf Streaming Server verzichten zu können:

  1. YouTube Videos werden durch eine aktive Komponente auf dem Server als HTTP Download dem Player zur Verfügung gestellt.
  2. YouTube Videos enthalten TimeCode und FilePosition Metadaten.
  3. Der YouTube Player fordert bei einem „seek“ im Video vom Server das Video erneut an, gibt der Anfrage jedoch den Parameter Start mit, welcher die Position im File spezifiziert.

Damit kommt das Video ohne Streaming über jeden Proxy und jede Firewall, man benötigt keine zusätzliche Streaming Infrastruktur, und HTTP ausliefern ist kein rechen- und hardwareintensiver Vorgang.

Wissenswert natürlich:

Die Standard FLVPlayback Komponente aus der Adobe Flash Familie kann dies nicht.

Ähnliche Ansätze werden seit einiger Zeit auch von diversen PHP Projekten verfolgt:

Zeit, sich mit einem J2EE Ansatz einzureihen …