Da Streaming-Plattformen weiterhin unsere Bildschirme erobern und die Art und Weise, wie wir Inhalte konsumieren, revolutionieren, war es noch nie so wichtig wie heute, einen robusten und skalierbaren Streaming-Dienst aufzubauen. Wie können Unternehmen die Kompatibilität zwischen verschiedenen Geräten und Plattformen sicherstellen und gleichzeitig die Kosten senken und die Effizienz maximieren? In diesem Artikel befassen wir uns mit der Transkodierung von Video auf Abruf.
In diesem Tutorial werden wir die Videotranskodierung mit der Linode Kubernetes Engine einrichten, um die Skalierung Ihrer Transkodierungsinfrastruktur je nach Bedarf zu unterstützen. Wir werden den Prozess der Konvertierung einer mp4-Datei in HLS (HTTP Live Streaming) durchlaufen, ein Format, das häufig von Streaming-Diensten verwendet wird. HLS verwendet adaptive Bitraten-Streaming-Funktionen, um eine reibungslose Wiedergabe und ein konsistentes Seherlebnis zu gewährleisten, unabhängig von Gerät oder Netzwerkgeschwindigkeit. Für den Anfang verwenden wir eine mp4-Datei (dies kann ein Beispielvideo sein, das Sie bereits als mp4-Datei haben), laden sie in einen Eingabebereich hoch und senden sie dann an unseren Transcodierungspartner Capella, der die Videotranscodierung vornimmt.
Capella ist ein Akamai-Partner, der sofort einsatzbereite Lösungen anbietet, die Sie auf Akamai Compute ausführen können. Wir sind eine Partnerschaft mit Capella eingegangen, weil sie Encoder auf unserer Plattform betreiben, VOD-Assets auf Object Storagespeichern und über das Akamai CDN bereitstellen können. Diese Partnerschaft ermöglicht uns auch die Bereitstellung mit Kubernetes und Helm, was die Skalierung erheblich vereinfacht. Im folgenden Beispiel werden die Kodiermaschinen von Capella automatisch hochgefahren, um die Anzahl der Aufträge zu skalieren, und dann wieder heruntergefahren, wenn der Auftrag abgeschlossen ist, wodurch Tausende von Dollar an ungenutzter Rechenzeit eingespart werden.
Voraussetzungen:
Um dieses Tutorial durchzuführen, müssen Sie sich für ein Linode-Konto anmelden. Die Anmeldung ist kostenlos, und Sie erhalten ein Guthaben von 100 $!
- Ein Linode-API-Token
- kubectl installieren
- Steuerrad installieren
- Installieren Sie die hier aufgeführten externen Kubernetes-Tools.
- Eine Capella-Lizenz (E-Mail sales@capellasystems.net für eine kostenlose Lizenz)
Schritt 1: Erstellen eines Kubernetes-Clusters
Der erste Schritt besteht darin, einen Kubernetes-Cluster zu erstellen, der die Kodierung vornimmt. Klicken Sie im Akamai Cloud-Dashboard auf Kubernetes und dann auf "Cluster erstellen".
Als Nächstes geben wir ein paar Konfigurationen für den Cluster ein. Nennen wir ihn "transcoding-demo". Wählen Sie hier die Region, die Ihnen am nächsten liegt. Für mich ist das Los Angeles. Es wird auch empfohlen, die Hochverfügbarkeits-Kontrollebene zu aktivieren, um die Hochverfügbarkeit im Kubernetes-Cluster zu aktivieren.
Im Abschnitt Add Node Pools fügen wir 3 Knoten aus dem Plan Dedicated 8 GB hinzu. Bei diesen drei Knoten handelt es sich um die Verwaltungsknoten, von denen einer automatisch zum Leader gewählt wird und die anderen beiden für die Redundanz des Managers vorgesehen sind.
Sobald Sie diese hinzugefügt haben, sehen Sie oben auf dem Bildschirm eine Schaltfläche mit der Aufschrift "Cluster erstellen". Klicken Sie darauf, um den Kubernetes-Cluster zu erstellen. Hinweis: Dies kann ein paar Minuten dauern.
Die Einrichtung Ihrer Kubernetes-Umgebung ist nun abgeschlossen. Beachten Sie im Cloud Manager Dashboard die 3 Knoten, die Sie erstellt haben, mit dem Status Running.
Als Nächstes laden wir die Kubeconfig-Datei herunter, indem wir auf den unten stehenden Link im Dashboard klicken. Sie wird auf Ihren lokalen Rechner heruntergeladen. Stellen Sie sicher, dass Sie die Datei in Ihr Kubernetes-Verzeichnis verschieben (am selben Ort, an dem Sie Ihr kubectl-Set haben).
Klicken Sie anschließend auf den Link Kubernetes-Dashboard, um das Kubernetes-Dashboard zu öffnen.
Sie werden diese Meldung sehen und auf die Option klicken, um sich mit Ihrer soeben erstellten kubeconfig-Datei anzumelden.
Wenn Sie im linken Bereich auf Cluster klicken, sehen Sie die soeben erstellten Knoten.
Schritt 2: Erstellen und bearbeiten Sie die Helm-Konfigurationsdatei
Lassen Sie uns nun die Helm-Konfigurationsdatei erstellen und bearbeiten, die für die Bereitstellung des Cambria-Clusters in der Kubernetes-Umgebung verwendet werden soll. Ein Cambria Cluster ist ein skalierbares Transcoding-Netzwerk aus mehreren Cambria FTC-Workstations zur Verarbeitung einer großen Menge an Videodateien. Der Cambria Cluster Manager leitet Aktionen über das Netzwerk weiter.
Zuerst laden wir das Capella Cluster Configuration Files Archive mit den folgenden zwei Befehlen herunter:
curl -L -s -o capella-cluster.tgz
helm show values capella-cluster.tgz > capellaCambriaConfig.yaml
In der Konfigurationsdatei müssen wir 2 Felder aktualisieren: den Capella-Lizenzschlüssel und das Linode-API-Token.
Fügen Sie in das Feld ftcLicenseKey den Lizenzschlüssel ein, den Sie vom Capella-Team erhalten haben (nachdem Sie im Abschnitt Voraussetzungen eine E-Mail an sales@capellasystems.net geschickt haben).
Fügen Sie dann Ihr Linode API-Token (verwenden Sie den Link im Abschnitt Voraussetzungen, um eines zu generieren) in das Feld linodeAPIToken ein.
Schritt 3: Installation des Cambria Clusters
Nun müssen wir den Cambria-Cluster installieren. Dieser Cluster wird für die Verarbeitung einer großen Menge von Videodateien verwendet.
helm upgrade -install capella-cluster capella-cluster.tgz -values capellaCambriaConfig.yaml
Sie sehen, dass der Status auf "Bereitgestellt" geändert wurde.
Zu diesem Zeitpunkt werden einige Komponenten in Ihrer Kubernetes-Umgebung bereitgestellt. Warten Sie am besten ein paar Minuten, bis alles bereitgestellt wurde, bevor Sie fortfahren.
Schritt 4: Öffnen Sie die Cambria Cluster Web UI
Klicken Sie im linken Bereich des Kubernetes-Dashboards auf Dienste. Kopieren Sie dann die IP-Adresse des mittleren Knotens (Port 8161). Dieser Port ist spezifisch für die Web-UI.
Geben Sie in einer neuen Registerkarte "https://" ein und fügen Sie dann die IP-Adresse ein. (Möglicherweise müssen Sie auf Erweitert > Standort eingeben klicken, um den Standort einzugeben). Sie sehen nun die Cambria Cluster Web UI. Melden Sie sich mit den WebUI-Anmeldedaten aus der Datei capellaCambriaConfig.yaml an. (Auf Seite 8 finden Sie weitere Informationen darüber, wie Sie diese Anmeldedaten finden).
Schritt 5: Erstellen Sie Eingabe- und Ausgabeeimer.
Wir erinnern uns, dass wir ein mp4-Video in das HLS-Format konvertieren. Wir werden einen Bucket mit zwei Ordnern erstellen: einen für die Eingabe unserer mp4-Datei, genannt source, und einen für die Ausgabe unserer HLS-Datei, genannt output.
Rufen Sie den Akamai Cloud Manager auf und klicken Sie im linken Bereich auf Object Storage . Klicken Sie dann auf Bucket erstellen. Nennen wir es capella. Stellen Sie sicher, dass Sie die gleiche Region auswählen, die Sie oben für Ihren Kubernetes-Cluster gewählt haben. Klicken Sie dann auf Bucket erstellen.
Nachdem wir diesen Bereich erstellt haben, müssen wir seinen Speicherort kopieren und ihn später in unsere XML-Datei einfügen. Klicken Sie auf die Schaltfläche "Details" des Bereichs und dann auf die Schaltfläche "Kopieren" (siehe unten) neben der Position des Bereichs. Speichern Sie dies in einem Notizblock, da wir es später noch benötigen.
Als nächstes müssen wir Zugriffsschlüssel für den Bucket erstellen. Klicken Sie auf Access Keys und dann auf Create Access Key.
Nennen wir es capella-access.
Es erscheint ein kleines Popup-Fenster, in dem Ihr Zugangsschlüssel und Ihr geheimer Schlüssel angezeigt werden. Kopieren Sie diese und fügen Sie sie in einen Notizblock ein, da wir sie später benötigen werden. Sobald Sie sie gespeichert haben, klicken Sie auf Ich habe meinen geheimen Schlüssel gespeichert.
In unserem Objektspeicher-Bucket erstellen wir nun 2 Ordner: einen für die Eingabe und einen für die Ausgabe. Klicken Sie auf Ihren Bucket und dann auf Create Folder. Nennen wir den Eingabeordner "Quelle".
Dasselbe tun wir für den Ausgabeordner. Nennen wir ihn "Ausgabe".
Schritt 6: Bearbeiten Sie die Felder im HLS-Beispieldokument.
Capella hat uns diese Beispieldatei geschickt, um Transcodierungsaufträge für mp4-zu-HLS-Konvertierungen durchzuführen. Es gibt weitere Beispieldateien zur Auswahl. Fragen Sie einfach per E-Mail nach, welche Sie wünschen (siehe Voraussetzungen oben). Achten Sie darauf, sie in Ihrem Kubernetes-Ordner zu speichern.
Kopieren Sie Ihren Zugangsschlüssel und Ihren geheimen Schlüssel und fügen Sie sie in den Abschnitt Stellenbeschreibung in den Zeilen 8 und 9 der XML-Datei ein.
Fügen Sie die gleichen Werte in die Zeilen 234 und 235 im Abschnitt Upload-Einstellungen ein.
In Zeile 231 fügen wir die Region unseres Eimers ein. Sie sollten sie aus dem obigen Schritt in einen Notizblock kopiert haben.
Als Nächstes müssen wir im Abschnitt Upload-Einstellungen die Felder "Bucket" und "Location" aktualisieren. In Zeile 227 aktualisieren Sie das Bucket-Feld auf "capella" und in Zeile 228 das Location-Feld auf "output". (Sie erinnern sich, dass wir einen Bucket mit dem Namen "capella" erstellt haben, und der Ausgabeordner heißt "output")
Schritt 6: Hochladen einer mp4-Datei in den Input-Bucket
Als Nächstes laden wir eine mp4-Datei in den Input-Bucket hoch. Das kann ein Video von Ihrem Hund sein, ein Kochvideo, das Sie aufgenommen haben, eine beliebige mp4-Datei. Ich verwende eine mp4-Datei namens flying5. Gehen Sie zum Akamai Cloud Manager und laden Sie im Quell-Bucket die mp4-Datei hoch.
Nun zurück zur XML-Datei. Fügen wir den Ort der Quelldatei in Zeile 347 ein, wie unten gezeigt.
Schritt 7: Führen Sie den Transcodierungsauftrag aus
Jetzt sind wir bereit für die Transkodierung! Wir werden den Transcodierungsauftrag über einen API-Aufruf ausführen. Sie müssen ein paar Dinge im folgenden curl Befehl ersetzen. Navigieren Sie zunächst zu Ihrem Kubernetes-Dashboard und rufen Sie die IP-Adresse des ersten Knotens ab (Port 8650). Dieser Port ist spezifisch für die Kommunikation des Encoder-Jobs. Kopieren Sie sie in die Zwischenablage und fügen Sie sie irgendwo ein, um sie zu speichern (alles vor .ip). Sie werden sie in einer Minute benötigen.
Kopieren Sie dann aus Ihrer capellaCambriaConfig.yaml-Datei den cambriaClusterAPIToken und speichern Sie ihn. Ersetzen Sie im Befehl curl den Wert usertoken durch Ihr API-Token.
Fügen Sie dann den Namen der xml-Datei des Transcodierungsauftrags hinzu. Ich habe meine als mp4-hls-transcoding-job.xml gespeichert.
Führen Sie diesen Befehl in Ihrem Terminal aus.
curl -k -X POST "https://123.456.78.90:8650/CambriaFC/v1/Jobs/?usertoken=12345678-1234-5678-abcd-efghijklmn" -d @mp4-hls-transcoding-job.xml
Um zu bestätigen, dass der Job läuft, sehen wir uns das Kubernetes-Dashboard an. Navigieren Sie zum Kubernetes-Dashboard und öffnen Sie die folgende URL für Port 8161, den Port der Auftragsliste.
Wenn Aufträge an den Cambria Cluster Manager übermittelt werden, erscheinen sie in Cambria's WebUI in der Auftragsliste.
Diese Aufträge werden zur Ausführung an die FTC-Codiermaschinen verteilt. Der Cambria Cluster Manager startet automatisch eine neue FTC-Maschine, wenn sich zuvor keine Aufträge in der Warteschlange befunden haben. Bei einer hohen Anzahl von Aufträgen in der Warteschlange werden zusätzliche FTC-Maschinen gestartet, um die Last zu bewältigen.
Auf der Akamai Linode Kubernetes-Übersichtsseite sehen Sie, dass eine neue Maschine bereitgestellt wird. Sobald die Maschine bereitgestellt ist, können Sie sie unter Nodes im Kubernetes-Dashboard und in der Cluster Manager WebUI sehen. Sobald die Maschine verfügbar und automatisch mit dem Cluster verbunden ist, wird der Job an die FTC-Maschine zur Ausführung verteilt. Über die WebUI-Job-Liste können Sie den Fortschritt verfolgen.
Sobald der Auftrag abgeschlossen ist, wird der Status in der WebUI auf "erledigt" geändert.
Es werden 3 verschiedene Videodateien mit unterschiedlichen Videotypen erstellt. Wenn Sie zur Akamai-Konsole zurückkehren, sehen Sie in Ihrem Ausgabeordner eine Ausgabedatei mit mehreren Ordnern darin. Ein Ordner enthält das Audio, einer das Video und einer die Metadaten.
Sie können diese über einen HLS-fähigen Player abspielen (dies könnte eine Art Plugin für Ihren Browser oder einen Drittanbieter sein).
Die Videotranskodierung ist ein entscheidender Aspekt der modernen Multimedia-Bereitstellung, und wenn Sie die Schritte in diesem Tutorial befolgen, können Sie diese Herausforderung leicht bewältigen!
Zusammenfassend
Dieses Beispiel für die Videotranskodierung veranschaulicht die Flexibilität und Leistungsfähigkeit der modernen Multimedia-Bereitstellung mit der Linode Kubernetes Engine (LKE). Die Kodierungsmaschinen werden automatisch hochgefahren, um die Anzahl der Aufträge zu skalieren, und dann wieder heruntergefahren, wenn der Auftrag abgeschlossen ist, was erhebliche Einsparungen bei der Verwendung von LKE zeigt.
Nach erfolgreicher Transkodierung Ihres Videos können Sie das Akamai-Servernetzwerk nutzen, das strategisch über die ganze Welt verteilt ist, um sicherzustellen, dass Ihre HLS-formatierten Videos schnell und nahtlos an Ihr Publikum geliefert werden, unabhängig von dessen geografischem Standort. Dadurch wird Ihr Ursprungsserver entlastet, indem die Bereitstellung der Inhalte auf die verteilten Edge-Server von Akamai verlagert wird. Dies verbessert nicht nur die Leistung und Skalierbarkeit Ihrer Videoauslieferung, sondern verbessert auch das allgemeine Nutzererlebnis, indem es Latenzzeiten und Pufferung reduziert. Darüber hinaus bietet das Akamai CDN fortschrittliche Funktionen wie adaptives Bitraten-Streaming, das die Videoqualität automatisch an die Netzwerkbedingungen des Betrachters anpasst und so eine reibungslose Wiedergabe über eine Vielzahl von Geräten und Verbindungsgeschwindigkeiten gewährleistet. Dies ist besonders wichtig für die Bereitstellung hochwertiger Videoinhalte für mobile Geräte und Gebiete mit begrenzter Bandbreite.
Nächste Schritte
In diesem Tutorial haben wir Akamai verwendet, um ein Video vom mp4-Format in das HLS-Format zu transkodieren. Diese Konvertierung gewährleistet die Kompatibilität mit verschiedenen Geräten für das Streaming. Eine vollständige Liste der möglichen Eingabe- und Ausgabeformate für die Videotranscodierung finden Sie hier.
Wenn Sie mehr über die Implementierung von Videotranskodierung erfahren möchten, melden Sie sich für unseren Newsletter an, verbinden Sie sich mit uns auf Twitter oder LinkedIn oder abonnieren Sie unseren YouTube-Kanal.
Zusätzlich zu diesen technischen Anleitungen können Sie die Lösungen von Linode testen, wenn Sie oder Ihr Unternehmen eine Optimierung der Videotranskodierung und der Kubernetes-Lösungen in Erwägung ziehen, indem Sie sich anmelden und 100 US-Dollar an kostenlosen Credits erhalten.
Kommentare