Media-Konverter Dienst
Fallübersicht
Dies ist ein cloudbasierter Mediakonvertierungsdienst, der Video- und Audiodateien in das HLS-Streaming-Format mit adaptiver Bitratenunterstützung umwandelt. Das System hört auf eine SQS-Warteschlange für neue Dateien, startet für jede eine Kubernetes-Job und erstellt ein komplettes Set von m3u8-Playlists und .ts-Segmenten, die für jeden modernen Videoplayer bereit sind.
Es unterstützt mehrere Videoauflösungen, mehrere Bitratenstufen für Audio und verarbeitet Videos mit mehreren Audiokanälen - einschließlich verschiedener Sprachen oder Kommentare. Der Dienst arbeitet gleichzeitig für mehrere Projekte und organisiert die Ausgaben in separate Ordner auf S3, basierend auf dem Projekt oder Verlag.
Ziel: Erstellen Sie einen vollständig automatisierten Dienst, der jede Video- oder Audiodatei ohne manuelles Eingreifen in das HLS-Format konvertiert - arbeitet über mehrere Projekte hinweg, verarbeitet verschiedene Inhaltstypen und skaliert auf Null, wenn inaktiv.
Wichtige Projektinformationen
Branchen
Medien & Unterhaltung, Video-Streaming-Plattformen, OTT- und Rundfunkdienste, Digital Publishing, Content Delivery Networks – jedes Unternehmen, das Video- oder Audioinhalte an Endbenutzer auf verschiedenen Geräten und unter unterschiedlichen Netzwerkbedingungen liefern muss.
Dienstleistungen
SQS-Warteschlangenverarbeitung mit Long Polling und Verwaltung von Sichtbarkeits-Timeouts, FFmpeg- & FFprobe-Mediatranskodierung und Streamanalyse, Kubernetes-Job-Orchestrierung mit temporären Volumes und Node-Affinität, parallele S3-Upload-Pipeline mit Vor-Upload-Bereinigung.
Lösungen
Multi-Auflösungs-HLS-Video – 1080p, 720p, 480p, 360p, 240p mit adaptiver Bitrate, Multi-Bitrate-Audio-HLS – 32, 64, 96, 128, 192 kbps Stufen pro Audiotrack, automatische Erkennung aller Audioströme mit Sprachmetadaten, Thumbnails bei 2-Sekunden-Marke, niedrig aufgelöstes MP4-Vorschaubild, MP3- und WAV-Kopien.
Technologien
AWS SQS, S3, Kubernetes, FFmpeg, FFprobe, H.264, AAC/HE-AAC, HLS/m3u8, NVIDIA NVENC, Intel Quick Sync, EC2 Auto Scaling, Docker, Helm
Die Herausforderungen
Der Prozess
Die gesamte Pipeline läuft ohne menschliches Eingreifen – vom Moment, in dem eine Datei auf S3 landet, bis die finale HLS-Ausgabe zur Wiedergabe bereit ist. Jeder Schritt übergibt sauber an den nächsten, mit eingebauten Sicherungen gegen Fehler, Duplikate und Ressourcenkonflikte. Unten wird gezeigt, wie das System eine Datei durch den gesamten Konvertierungszyklus bewegt.
Warteschlangen-Abfrage
Der Job-Manager läuft auf Kubernetes und fragt die SQS-Warteschlange mit Long Polling ab. Sobald eine Nachricht eintrifft, analysiert er den S3-Bucket und Objekt-Schlüssel, um die Quelldatei zu identifizieren.
Duplikat-Vermeidung
Vor der Erstellung eines neuen Jobs prüft der Manager, ob ein bestehender Kubernetes-Job für dieselbe Datei existiert. Falls ja, wird die Nachricht mit Verzögerung erneut in die Warteschlange gesetzt, um doppelte Verarbeitung zu verhindern.
Kubernetes-Job-Erstellung
Ein neuer Pod wird aus einer Vorlage mit korrekten Ressourcenlimits, Node-Affinität für ARM-basierte Instanzen und temporären Volumes für temporäre Dateien, Eingabe, Ausgabe und Protokolle erstellt.
Video- & Audio-Konvertierung
FFmpeg wandelt Video in fünf HLS-Auflösungen (1080p→240p) mit 4-Sekunden-Segmenten um. Jeder Audiotrack wird erkannt und in fünf Bitratenstufen konvertiert – 32 bis 192 kbps.
Master-Playlist-Erstellung
Eine einzelne m3u8-Masterdatei referenziert alle Videoauflösungen und Audiotracks mit Sprachmetadaten – ermöglicht adaptives Streaming und Sprachumschaltung in jedem modernen Player.
Upload, Bereinigung & Autoscaling
Alle Dateien werden parallel via einem 500-Thread-Pool auf S3 hochgeladen. Alte HLS-Segmente werden gereinigt, bevor die neue Gruppe eintrifft. Der Autoscaler skaliert Knoten auf Null, sobald die Warteschlange leer ist.
Lösungen
Die Hauptmerkmale der Lösung
Adaptives Bitraten-Video - 5 Stufen —240p (300 kbps) → 1080p (5000 kbps) in einer Playlist. Automatische Qualitätsauswahl basierend auf Verbindungsgeschwindigkeit.
Mehrspur-Audio mit Sprach-Tags — Erkennt und konvertiert alle Audiospuren, einschließlich Kommentar und Beschreibungen, unter Beibehaltung der Sprachmetadaten.
Automatische Codec-Erkennung — Verwendet NVIDIA / Intel / AMD-Beschleunigung oder Software-Fallback, wenn keine GPU vorhanden ist.
Kostenloses automatisches Skalieren im Leerlauf — EC2-Knoten fahren auf Null herunter, wenn die Warteschlange leer ist. Aktive Jobs sind vor vorzeitiger Beendigung geschützt.
Multi-Projekt S3-Isolierung — Jedes Projekt hat einen eigenen S3-Ausgabepfad. Unterstützt sowohl von Publisher als auch Serien basierte Ordnerstrukturen.
Ergebnisse in Zahlen
1080p
Fünf adaptive Bitratenstufen von 240p bei 300 kbps bis hin zu Full HD 1080p bei 5000 kbps — der Player wechselt die Qualität automatisch basierend auf der Verbindungsgeschwindigkeit.
500x
Hunderte von Ausgabedateien — Segmente, Wiedergabelisten, Miniaturbilder, Vorschauen — werden gleichzeitig über einen Thread-Pool in S3 hochgeladen, um die Lieferzeit minimal zu halten.
4sec
4-Sekunden-HLS-Segmente balancieren adaptive Umschaltgeschwindigkeit mit Pufferungseffizienz — der Player reagiert innerhalb eines einzigen Segmentgrenzen auf Netzwerkänderungen.
5x
Jede Audiospur — einschließlich Kommentar und Beschreibung — erhält bis zu fünf Qualitätsstufen von 32 kbps (HE-AAC) bis 192 kbps (LC-AAC) mit Lautheitsnormalisierung.