Media-Konverter-Dienst
Fallübersicht
Dies ist ein cloudbasierter Medienkonvertierungsdienst, der Video- und Audiodateien nimmt und sie 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 erzeugt einen vollständigen Satz von m3u8-Playlists und .ts-Segmenten, die für jeden modernen Videoplayer bereit sind.
Er unterstützt mehrere Auflösungen für Video, mehrere Bitratenebenen für Audio und behandelt Videos mit mehreren Audiostreams – einschließlich verschiedener Sprachen oder Kommentare. Der Dienst arbeitet gleichzeitig für mehrere Projekte und organisiert Ausgaben in separaten Ordnern auf S3 basierend auf dem Projekt oder Herausgeber.
Ziel: Einen vollautomatischen Dienst entwickeln, der jede Video- oder Audiodatei ohne manuelles Eingreifen in das HLS-Format konvertiert – über mehrere Projekte hinweg, mit verschiedenen Inhaltstypen, und der bei Leerlauf auf null skaliert.
Wichtige Projektinfos
Branchen
Medien & Unterhaltung, Video-Streaming-Plattformen, OTT- & Rundfunkdienste, Digital Publishing, Content Delivery Networks – jedes Unternehmen, das Video- oder Audioinhalte an Endnutzer über verschiedene Geräte und unterschiedliche Netzwerkbedingungen liefern muss.
Dienstleistungen
SQS-Warteschlangenverarbeitung mit Long Polling und Verwaltung von Sichtbarkeits-Timeouts, FFmpeg & FFprobe Medien-Transcoding und Stream-Analyse, Kubernetes-Job-Orchestrierung mit flüchtigen Volumes und Node-Affinität, parallele S3-Upload-Pipeline mit Vor-Upload-Bereinigung.
Lösungen
Multi-Auflösung HLS-Video — 1080p, 720p, 480p, 360p, 240p mit adaptiver Bitrate, Multi-Bitrate Audio HLS — 32, 64, 96, 128, 192 kbps Ebenen pro Audiotrack, automatische Erkennung aller Audioströme mit Sprachmetadaten, Thumbnails bei 2-Sekunden-Marke, Low-Res 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
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 bereitsteht. Jeder Schritt übergibt sauber an den nächsten, mit eingebauten Sicherungen für Ausfälle, Duplikate und Ressourcenkonflikte. Unten ist dargestellt, wie das System eine Datei durch den vollständigen Konvertierungszyklus bewegt.
Warteschlangen-Abfrage
Der Job-Manager läuft auf Kubernetes und fragt die SQS-Warteschlange mit Long Polling ab. Wenn eine Nachricht ankommt, analysiert er den S3-Bucket und den Objekt-Key, um die Quelldatei zu identifizieren.
Duplikatvermeidung
Bevor ein neuer Job erstellt wird, prüft der Manager, ob für dieselbe Datei bereits ein Kubernetes-Job existiert. Wenn ja, wird die Nachricht mit Verzögerung erneut in die Warteschlange gestellt, um doppelte Verarbeitung zu vermeiden.
Erstellung des Kubernetes-Jobs
Ein neuer Pod wird aus einer Vorlage mit korrekten Ressourcengrenzen, Node-Affinität für ARM-basierte Instanzen und flüchtigen Volumes für temporäre Dateien, Eingabe, Ausgabe und Logs erstellt.
Video- und Audiokonvertierung
FFmpeg konvertiert Video in fünf HLS-Auflösungen (1080p→240p) mit 4-Sekunden-Segmenten. Jeder Audiotrack wird erkannt und in fünf Bitratenstufen – 32 bis 192 kbps – umgewandelt.
Master-Playlist-Erstellung
Eine einzelne m3u8-Masterdatei verweist auf alle Videoauflösungen und Audiotracks mit Sprachmetadaten – ermöglicht adaptive Streaming-Qualität und Sprachwechsel in jedem modernen Player.
Upload, Bereinigung & Autoscaling
Alle Dateien werden parallel über einen 500-Thread-Pool zu S3 hochgeladen. Alte HLS-Segmente werden bereinigt, bevor das neue Set landet. Der Autoscaler skaliert die Nodes 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 der Verbindungsgeschwindigkeit.
Multi-Track-Audio mit Sprach-Tags — Erkennt und konvertiert alle Audiotracks, einschließlich Kommentare und Beschreibungen, unter Beibehaltung der Sprachmetadaten.
Automatische Codec-Erkennung — Verwendet NVIDIA / Intel / AMD Beschleunigung oder eine Software-Fallback-Lösung, falls keine GPU vorhanden ist.
Keine Leerlaufkosten für Autoskalierung — EC2-Knoten werden auf Null heruntergefahren, wenn die Warteschlange leer ist. Aktive Aufgaben sind vor vorzeitiger Beendigung geschützt.
Multi-Projekt S3 Isolierung — Jedes Projekt hat seinen eigenen S3-Ausgabepfad. Unterstützt sowohl veröffentlichungs- als auch serienbasierte 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, Playlists, Thumbnails, Vorschauen – werden gleichzeitig über einen Thread-Pool nach S3 hochgeladen, wodurch die Lieferzeit minimal gehalten wird.
4sek
4-Sekunden-HLS-Segmente balancieren die adaptive Umschaltgeschwindigkeit mit der Pufferungseffizienz — der Player reagiert innerhalb eines einzelnen Segmentrahmens auf Netzwerkanpassungen.
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.