In Zeiten, in denen Videos das Internet dominieren, ist es wichtiger denn je, eine vielseitige und benutzerfreundliche Videowiedergabe auf der eigenen Webseite zu gewährleisten. Viele denken bei Videostreaming zuerst an Plattformen wie YouTube oder Vimeo. Doch was tun, wenn Sie wegen Copyright-Beschränkungen oder langfristigen Archivierungsabsichten nicht auf große Drittanbieter zurückgreifen können? Die Antwort: Sie setzen Streaming und Videowiedergabe selbst in die Hand – und passen den Stream so an, dass er sich effektiv an die Bandbreite und das Endgerät des Nutzers anpasst. Die Herausforderung besteht darin, ein Videostreaming-Erlebnis zu bieten, das auf verschiedenste Nutzerumgebungen reagieren kann. Sei es ein Smartphone mit instabiler Mobilfunkverbindung oder ein Desktop-PC mit breitbandigem Internetzugang.
Adaptive Videowiedergabe bedeutet, dass das Video automatisch in der passenden Auflösung und Qualität abgespielt wird, um Ruckler, lange Ladezeiten oder Frustration zu vermeiden. Doch wie lässt sich das technisch umsetzen, wenn man nicht auf Dienste wie YouTube zurückgreifen möchte? Das erste Grundprinzip liegt im Erzeugen mehrerer Versionen desselben Videos in unterschiedlichen Auflösungen und Bitraten. Ähnlich wie beim responsive Design für Bilder, bei dem etwa über das HTML-Element picture verschiedene Bildgrößen geladen werden, gibt es analog das Konzept der responsive Videos. Man erstellt beispielsweise eine HD-Version, eine Version mit mittlerer Auflösung und eine niedrig aufgelöste Variante. Wird das Video dann auf einem Mobilgerät aufgerufen, lädt der Browser bevorzugt die kleine Version, um Bandbreite zu sparen und flüssige Wiedergabe zu ermöglichen.
Allerdings löst diese einfache responsive Technik allein noch nicht die zweite große Herausforderung: Bandbreiten-Schwankungen. Auf mobilen Netzwerken oder bei stark ausgelasteten WLAN-Verbindungen kann die verfügbare Übertragungsrate jederzeit schnell wechseln. Ein festgelegter Stream, selbst in niedriger Auflösung, wird dann eventuell trotzdem zum Ruckeln oder zum lästigen Puffern führen. Deshalb braucht man eine Lösung, die nicht nur die erste Wahl der Videoqualität anhand der Ausgangssituation trifft, sondern während des Abspielens dynamisch die Qualität zwischen den bereitgestellten Versionen wechselt. Hier kommt das Streaming-Protokoll HTTP Live Streaming (HLS) zum Einsatz.
Von Apple entwickelt und mittlerweile breit unterstützt, basiert HLS darauf, ein Video in kleine Segmente zu zerlegen. Für jede Qualitätsstufe wird das Video in viele kurze Teile aufgesplittet. Der Videoplayer lädt nun nicht mehr den gesamten Film auf einmal, sondern nur die aktuellen Segmente nach Bedarf und kann zwischen Segmenten unterschiedlichster Qualitätsstufen springen. Fällt die verfügbare Bandbreite, wird die nächste Videosequenz in einer niedrigeren Qualität geladen. Verbessert sich die Verbindung, wechselt das System wiederum zu einer höheren Auflösung.
So bleibt die Wiedergabe durchgehend flüssig. Die Umsetzung solcher adaptiven Videos erfordert zunächst, das Originalvideo in mehrere Bitraten und Auflösungen zu enkodieren. Dabei wird aus der großen HD-Datei eine Palette von Versionen in unterschiedlicher Qualität erstellt. Der nächste Schritt ist das Umwandeln in HLS-kompatible Segmentdateien und die Erstellung von sogenannten Playlists oder Manifeste, die dem Player mitteilen, wo und wie die einzelnen Segmente zu finden sind. Eine ikonische Software, die diese Prozesse in einem automatisierten Ablauf unterstützt, ist ffmpeg.
Dieses mächtige Open-Source-Tool kann Videokonvertierungen, Segmentierungen und sogar das Erstellen der Playlist komplett übernehmen. Die Nutzung von ffmpeg für HLS-Streaming ist nicht immer trivial, weshalb viele Entwickler eigene Skripte schreiben, die den komplexen Befehlssatz vereinfachen. Beispielsweise kann ein Python-Skript eingesetzt werden, das dynamisch Videos unterschiedlicher Qualität erzeugt und in das HLS-Format bringt. Der allgemeine Ablauf besteht darin, zuerst alle gewünschten Videoauflösungen zu produzieren und dann alle Files segmentweise in das Verzeichnis auf dem Webserver zu legen, von wo der Player sie anfordert. Wichtig ist, dass der Webserver so konfiguriert ist, dass er eine große Anzahl kleiner Dateien effizient bereitstellt.
Ein weiterer Vorteil der eigenen Videobereitstellung ist die Kontrolle über die Inhalte und deren Verfügbarkeit. Während bei Fremdplattformen das Risiko besteht, dass die Videohoster ihre Dienste einstellen oder sich Geschäftsmodelle ändern, bleiben die eigenen Inhalte mit der eigenen Website langfristig unter der eigenen Verwaltung. Gerade bei langfristigen Archivvorhaben oder speziellen, geschützten Inhalten ist dies ein großer Pluspunkt. Natürlich hat die selbstverwaltete Lösung auch ihre Herausforderungen: Das Bereitstellen von Videos in mehreren Qualitätsstufen bedeutet höheren Speicherbedarf auf dem Server, und die Bereitstellung selbst verbraucht erhebliche Bandbreite, was je nach Hosting-Anbieter Kosten erzeugen kann. Deshalb ist es wichtig, Infrastruktur und Traffic genau zu überwachen und gegebenenfalls Content Delivery Networks (CDNs) oder andere Optimierungsmaßnahmen einzusetzen.