Wir haben eine neue Technologie in unserer Streaming-Plattform implementiert. Es handelt sich um ein System zur ausfallsicheren Transcodierung und Übertragung von Live-Streams im HLS Format. Die neue Technologie verbessert die Transcodierungsstabilität und optimiert die Übertragung von Videoinhalten an ein Publikum mit über 1.000.000 Zuschauern.
In diesem Beitrag können Sie erfahren, wie das System unseren Kunden hilft, die Streaming-Qualität zu verbessern.
Das ausfallsichere Transcodierungs- und Streamübertragungssystem ist ein Cluster bestehend aus Transcodierungsservern, die von einem Load Balancer verwaltet werden. Dieses Cluster empfängt den originalen Videostream und liefert transcodierte adaptive Dateien, die über HTTP verfügbar sind, also im HLS oder alternativ im MPEG DASH Format.
Die wichtigsten Systemelemente:
Das Schlüsselmerkmal eines solchen Transcodierungssystems ist, dass es keinen zentralisierten Speicherort gibt, an dem adaptive Dateien gespeichert werden. Wir verteilen die Elemente bei der Übertragung von Videoinhalten, wodurch wir Folgendes erreichen:
Da kein zentraler Speicher vorhanden ist, können zusätzliche Hindernisse entstehen (z.B. können Daten uneinheitlich werden, wenn der Transcodierungsserver wechselt). Unsere Entwickler haben jedoch alle Details berücksichtigt und alle Probleme gelöst.
Zunächst generiert der Load Balancer die erforderlichen Parameter, wählt auf der Grundlage dieser den am besten geeigneten Server aus dem Cluster aus und sendet über einen Redis-basierten Messaging-Server einen Befehl an den Server.
Der Server empfängt den Befehl und den Original-Stream im RTMP oder einem anderen geeigneten Videoformat.
Der Server transcodiert das Video in das HLS Format. Der Stream besteht aus zwei Dateitypen:
Jeder Chunk hat einen eigenen, einzigartigen Namen, der mit der Transcodierungszeit verbunden ist. Das ist notwendig, wenn die Transcodierungssitzung auf verschiedenen Servern neu gestartet wird (z.B. wenn die Last neu verteilt wird oder ein Server ausfällt). Durch einzigartige Namen ist es unmöglich, dass sich verschiedene Dateien überschneiden, wodurch das Problem der Datenkonsistenz gelöst wird.
Der Name der Chunk-Listendatei muss jedoch auf allen Servern gleich sein. Die Chunk-Listen werden getrennt von den Chunks gespeichert, um die Erstellung mehrerer nicht relevanter Dateien zu vermeiden. Der Ordner, in dem diese gespeichert werden, wird ständig mit jedem Server synchronisiert, sodass jeder Server immer über eine aktuelle Chunk-Liste verfügt.
Da es sich bei den Chunk-Listen um kleine Dateien handelt, entsteht durch die ständige Serversynchronisation keine nennenswerte Netzwerkbelastung und es kommt nicht zu längeren Verzögerungen.
Da alle Server über eine aktuelle Chunk-Liste verfügen, müssen fertige Chunks nicht neu codiert werden, wenn der Transcodierungsserver gewechselt wird. Alle transcodierten Teile bleiben in der Chunk-Liste und werden vom vorhergehenden Server geladen.
Nachdem der Stream transcodiert wurde, wird er an das Content Delivery Network (CDN) übertragen und an die Nutzer weitergeleitet.
Alle Transcoding-Cluster-Server werden als Inhaltsquelle für das CDN angegeben.
Wie bereits erwähnt, müssen die Chunks bei einem Wechsel des Transcodierungsservers nicht neu codiert werden, da die notwendigen Fragmente vom vorherigen Server heruntergeladen werden. Was passiert aber, wenn der vorhergehende Server ausfällt und alle transkodierten Fragmente nicht mehr verfügbar sind? In diesem Fall kann der Zuschauer das Video nicht zurückspulen.
Wir können dieses Problem auf zwei Wegen lösen.
Weg 1: Zwischenspeicherung vorgefertigter Chunks auf einem Zwischenserver zwischen dem CDN und dem Transcodierungssystem. Im G-Core Labs CDN spielt das Origin Shielding die Rolle eines solchen Servers. Alle Fragmente werden ausnahmslos im Origin Shielding gespeichert und bleiben im Falle eines Ausfalls verfügbar.
Weg 2: Erstellung eines Serverpaares innerhalb eines Clusters, das vorgefertigte Chunks austauscht. Dies erhöht die Serverlast geringfügig. Wenn jedoch nur zwei Server betroffen sind, erhöht sich die Belastung nur geringfügig und die Fehlertoleranz ist gewährleistet.
Unsere Kunden können selbst entscheiden, welchen Weg sie wählen. Beachten Sie dabei bitte, dass Origin Shielding eine kostenpflichtige Option ist. Wenn Sie jedoch Videos an ein großes Publikum übertragen, ist es sinnvoll, sich für die kostenpflichtige Variante zu entscheiden, da das Origin Shielding das System auch vor extremen Belastungen schützt.
Diese Technologie ist jetzt für alle Kunden unserer Streaming-Plattform standardmäßig verfügbar.
Unsere Plattform verwendet fortschrittliche Technologien zur Übermittlung von Videoinhalten. So können Sie Ihre Videos in bis zu 8K-Qualität auf allen Gerätetypen mit minimalen Verzögerungen und ohne Buffering übertragen, selbst wenn Ihr Publikum 1.000.000 Zuschauer übersteigt.
Stellen Sie Ihren Nutzern Ihre Videoinhalte in hoher Qualität auf jedem Gerät mit unserer Streaming-Plattform zur Verfügung.