Medienkonverter-Dienst
Fallübersicht
Dies ist ein cloudbasierter Medienkonvertierungsdienst, der Video- und Audiodateien in das HLS-Streaming-Format mit adaptiver Bitratenunterstützung umwandelt. Das System überwacht eine SQS-Warteschlange auf neue Dateien, startet für jede eine Kubernetes-Job und erzeugt ein vollständiges Set an 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 Audiospuren – einschließlich unterschiedlicher Sprachen oder Kommentare. Der Dienst arbeitet gleichzeitig für mehrere Projekte und organisiert die Ausgaben in separaten Ordnern auf S3, basierend auf Projekt oder Herausgeber.
Ziel: Einen vollautomatischen Dienst erstellen, der jede Video- oder Audiodatei ohne manuelles Eingreifen in das HLS-Format umwandelt – über mehrere Projekte hinweg, verschiedene Inhaltstypen handhabend und im Leerlauf auf null skalierend.
Wichtige Projektinformationen
Branchen
Medien & Unterhaltung, Video-Streaming-Plattformen, OTT- & Rundfunkdienste, Digital Publishing, Content Delivery Networks – jedes Unternehmen, das Video- oder Audioinhalte an Endbenutzer über verschiedene Geräte und unterschiedliche Netzwerkbedingungen liefern muss.
Dienstleistungen
SQS-Warteschlangenverarbeitung mit Long Polling und Verwaltung von Sichtbarkeits-Timeouts, FFmpeg- & FFprobe-Mediatranskodierung und Stream-Analyse, Kubernetes-Job-Orchestrierung mit temporären Volumes und Node Affinity, 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 Audiospur, automatische Erkennung aller Audiostreams mit Sprachmetadaten, Thumbnails bei 2-Sekunden-Marke, niedrigauflösende MP4-Vorschau, 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
Herausforderungen
Der Prozess
Die gesamte Pipeline läuft völlig automatisiert ab – vom Moment, in dem eine Datei auf S3 landet, bis der finale HLS-Ausgang zur Wiedergabe bereitsteht. Jeder Schritt übergibt sauber an den nächsten mit eingebauten Sicherungen gegen Fehlfunktionen, Duplikate und Ressourcen-Konflikte. Unten sehen Sie, wie das System eine Datei durch den kompletten Konvertierungszyklus bewegt.
Warteschlangenabfrage
Der Job-Manager läuft auf Kubernetes und überwacht die SQS-Warteschlange mit Long Polling. Wenn eine Nachricht eintrifft, analysiert er den S3-Bucket und den Objekt-Schlüssel, um die Quelldatei zu identifizieren.
Duplikatvermeidung
Bevor ein neuer Job erstellt wird, prüft der Manager, ob ein Kubernetes-Job für dieselbe Datei bereits existiert. Falls ja, wird die Nachricht mit Verzögerung erneut in die Warteschlange gestellt, um doppelte Verarbeitung zu verhindern.
Kubernetes-Job-Erstellung
Ein neuer Pod wird aus einer Vorlage mit korrekten Ressourcenlimits, Node-Affinity für ARM-basierte Instanzen und temporären Volumes für temporäre Dateien, Eingabe, Ausgabe und Logs erstellt.
Video- & Audiokonvertierung
FFmpeg wandelt Video in fünf HLS-Auflösungen (1080p→240p) mit 4-Sekunden-Segmenten um. Jede Audiospur wird erkannt und in fünf Bitratenstufen – 32 bis 192 kbps – konvertiert.
Master-Playlist-Erstellung
Eine einzelne m3u8-Masterdatei referenziert alle Videoauflösungen und Audiotracks mit Sprachmetadaten – ermöglicht adaptives Streaming und Sprachwechsel in jedem modernen Player.
Upload, Bereinigung & Autoscaling
Alle Dateien werden parallel über einen 500-Thread-Pool auf S3 hochgeladen. Alte HLS-Segmente werden vor dem Ankommen des neuen Sets bereinigt. Der Autoscaler skaliert Knoten auf null, sobald die Warteschlange leer ist.
Lösungen
Die wichtigsten Merkmale 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 Kommentare und Beschreibungen, während die Sprachmetadaten erhalten bleiben.
Automatische Codec-Erkennung — Verwendet NVIDIA-/Intel-/AMD-Beschleunigung oder eine Software-Fallback-Lösung, wenn keine GPU vorhanden ist.
Kostenloses Idle-Autoscaling — EC2-Knoten fahren herunter auf null, wenn die Warteschlange leer ist. Aktive Jobs sind vor vorzeitiger Beendigung geschützt.
Multi-Projekt S3-Isolation — Jedes Projekt hat seinen eigenen S3-Ausgabepfad. Unterstützt sowohl publisher- als auch serienbasierte Ordnerstrukturen.
Ergebnisse in Zahlen
1080p
Fünf adaptive Bitratenstufen von 240p bei 300 kbps bis zu Full HD 1080p bei 5000 kbps — der Player wechselt die Qualität automatisch basierend auf der Verbindungsgeschwindigkeit.
500x
Hunderte von Ausgabedateien — Segmente, Playlists, Thumbnails, Vorschauen — werden gleichzeitig über einen Thread-Pool nach S3 hochgeladen, um die Lieferzeit minimal zu halten.
4 Sek.
Vier-Sekunden-HLS-Segmente balancieren die Geschwindigkeit des adaptiven Wechsels mit der Pufferungseffizienz aus — der Player reagiert innerhalb eines einzelnen 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 Lautstärkenormalisierung.