Media Converter Service

Overzicht van de casus

Dit is een cloudgebaseerde mediaservice die video- en audiobestanden omzet naar het HLS-streamingformaat met adaptieve bitrate-ondersteuning. Het systeem luistert naar een SQS-wachtrij voor nieuwe bestanden, start voor elk bestand een Kubernetes-taak en produceert een volledige set m3u8-afspeellijsten en .ts-segmenten die klaar zijn voor elke moderne videospeler.


Het ondersteunt meerdere resoluties voor video, meerdere bitrate-niveaus voor audio en verwerkt video's met verschillende audiotracks - inclusief verschillende talen of commentaar. De dienst werkt voor meerdere projecten tegelijk en organiseert outputs in aparte mappen op S3, gebaseerd op het project of de uitgever.

Doel: Bouw een volledig geautomatiseerde dienst die elk video- of audiobestand omzet naar HLS-formaat zonder handmatige tussenkomst - functioneert over meerdere projecten, verwerkt diverse inhoudstypen en schaalt naar nul als deze inactief is.

Image

Belangrijke projectinformatie

Sectoren

Sectoren

Media & Entertainment, Videostreamingplatforms, OTT- & Broadcastdiensten, Digitale uitgeverijen, Content Delivery Networks — elk bedrijf dat vide- of audiocontent aan eindgebruikers op verschillende apparaten en netwerkomstandigheden moet leveren.

Diensten

Diensten

SQS-wachtrijverwerking met long polling en beheer van zichtbaarheidstijdlimieten, FFmpeg & FFprobe mediatranscodering en stroomanalyse, Kubernetes-taakorkestratie met tijdelijke volumes en node-affiniteit, parallele S3-uploadpijplijn met opschoning voorafgaand aan upload.

Oplossingen

Oplossingen

Multi-resolutie HLS-video — 1080p, 720p, 480p, 360p, 240p met adaptieve bitrate, multi-bitrate audio HLS — 32, 64, 96, 128, 192 kbps-niveaus per audiotrack, automatische detectie van alle audiostreams met taalmetadata, miniaturen op 2 seconden, laagresolutie MP4-preview, MP3- en WAV-kopieën.

Technologieën

Technologieën

AWS SQS, S3, Kubernetes, FFmpeg, FFprobe, H.264, AAC/HE-AAC, HLS/m3u8, NVIDIA NVENC, Intel Quick Sync, EC2 Auto Scaling, Docker, Helm

De uitdagingen

Veel uitvoerformaten�van één invoer

Veel uitvoerformaten�van één invoer

Een enkel videobestand kan honderden bestanden opleveren — vijf videoresoluties, vijf audiobitrates per audiotrack, plus miniaturen en previews. We moesten dat allemaal netjes organiseren en snel uploaden.

Meerdere audiostreams per videobestand

Meerdere audiostreams per videobestand

Sommige video's bevatten meerdere audiotracks in verschillende talen. Het systeem moest ze allemaal automatisch detecteren, elke track afzonderlijk converteren en een masterafspeellijst maken die naar elke track verwijst met het juiste taallabel.

Wachtrijbetrouwbaarheid�en retry-logica

Wachtrijbetrouwbaarheid�en retry-logica

Met SQS moet je duplicaten, zichtbaarheidstijdslimieten en mislukkingen correct afhandelen. Als een taak mislukt, moet het bericht terug in de wachtrij komen voor een nieuwe poging. Als hetzelfde bestand twee keer wordt toegevoegd, mogen we het niet opnieuw verwerken.

Beheer op Kubernetes

Beheer op Kubernetes

Elke conversietaak gebruikt veel CPU en geheugen. We moesten tijdelijke volumes, node-affiniteitregels en correcte opruiming instellen zodat taken niet opstapelen of elkaar blokkeren.

Projectisolatie op S3

Projectisolatie op S3

De dienst draait voor meerdere projecten tegelijk. Elk heeft zijn eigen outputpad op S3 nodig, en we moesten zowel uitgevergebaseerde als seriegebaseerde mappenstructuren ondersteunen zonder fouten.

Automatische codecselectie

Automatische codecselectie

Niet elke machine heeft GPU-versnelling. Het systeem moest detecteren welke codecs beschikbaar zijn — NVIDIA, Intel Quick Sync, AMD of alleen software — en automatisch de beste kiezen.

Het proces

De hele pijplijn draait zonder menselijke tussenkomst — vanaf het moment dat een bestand op S3 wordt geplaatst tot het uiteindelijke HLS-uitvoerbestand klaar is voor afspelen. Elke stap geeft netjes door aan de volgende, met ingebouwde beveiliging voor fouten, duplicaten en concurrentie om bronnen. Hieronder staat hoe het systeem een bestand door de volledige conversiecyclus begeleidt.

Wachtrijpolling

Wachtrijpolling

De taakbeheerder draait op Kubernetes en pollt de SQS-wachtrij met long polling. Wanneer een bericht binnenkomt, analyseert het de S3-bucket en objectsleutel om het bronbestand te identificeren.

Duplicaatpreventie

Duplicaatpreventie

Voordat een nieuwe taak wordt aangemaakt, controleert de beheerder op een bestaande Kubernetes-taak voor hetzelfde bestand. Als deze gevonden wordt, wordt het bericht met vertraging opnieuw in de wachtrij geplaatst om dubbele verwerking te voorkomen.

Aanmaak Kubernetes-taak

Aanmaak Kubernetes-taak

Er wordt een nieuwe pod aangemaakt vanuit een sjabloon met correcte limieten voor resources, node-affiniteit voor ARM-gebaseerde instanties, en tijdelijke volumes voor tijdelijke bestanden, invoer, uitvoer en logs.

Video- & audioconversie

Video- & audioconversie

FFmpeg converteert video naar vijf HLS-resoluties (1080p→240p) met segmenten van 4 seconden. Elke audiotrack wordt gedetecteerd en geconverteerd naar vijf bitrate-niveaus — 32 tot 192 kbps.

Generatie masterafspeellijst

Generatie masterafspeellijst

Een enkel m3u8-masterbestand verwijst naar alle videoresoluties en audiotracks met taalmetadata — waardoor adaptief streamen en taalwissel mogelijk is in elke moderne speler.

Upload, opruimen & autoscaling

Upload, opruimen & autoscaling

Alle bestanden worden parallel geüpload naar S3 via een pool van 500 threads. Oude HLS-segmenten worden opgeruimd voordat de nieuwe set binnenkomt. De autoscaler schaalt nodes naar nul zodra de wachtrij leeg is.

Oplossingen

De belangrijkste kenmerken van de oplossing

  • Adaptieve bitratevideo - 5 niveaus—240p (300 kbps) 1080p (5000 kbps) in één afspeellijst. Automatische kwaliteitsselectie op basis van verbindingssnelheid.

  • Multi-track audio met taallabels — Detecteert en converteert alle audiotracks, inclusief commentaar en beschrijvingen, terwijl taalmetadata behouden blijft.

  • Automatische Codec Detectie — Gebruikt NVIDIA / Intel / AMD versnelling, of software fallback als er geen GPU is.

  • Nul Idle Kosten Autoscaling — EC2 knooppunten schalen naar nul wanneer de wachtrij leeg is. Actieve taken zijn beschermd tegen voortijdige beëindiging.

  • Multi-Project S3 Isolatie — Elk project heeft zijn eigen S3 uitvoerpad. Ondersteunt mappenstructuren gebaseerd op zowel uitgever als serie.


Image

Resultaten in cijfers

Videokwaliteit Dekking

1080p

Vijf adaptieve bitrate niveaus van 240p bij 300 kbps tot full HD 1080p bij 5000 kbps — de speler schakelt automatisch de kwaliteit op basis van de verbindingssnelheid.

Parallelle Upload Threads

500x

Honderden uitvoerbestanden — segmenten, afspeellijsten, thumbnails, previews — worden gelijktijdig naar S3 geüpload via een threadpool, waardoor de levertijd minimaal blijft.

HLS Gesegmenteerde Duur

4sec

4-seconden HLS segmenten balanceren adaptieve schakelsnelheid met bufferefficiëntie — de speler reageert op netwerkveranderingen binnen een enkel segment.

Audio Bitrate Niveaus per Track

5x

Elke audiotrack — inclusief commentaar en beschrijving — krijgt tot vijf kwaliteitsniveaus van 32 kbps (HE-AAC) tot 192 kbps (LC-AAC) met luidheidsnormalisatie.

Bouw een schaalbare mediapijplijn voor je platform!

Krijg een volledig geautomatiseerd HLS conversiesysteem dat meeschakelt met je content - en wij helpen je de optimale architectuur voor je project te vinden.

Message not sent.
Message not sent.
×
Weet u niet waar u moet beginnen? We helpen u de volgende stappen uit te stippelen!
Toestemming voor de verwerking van persoonsgegevens
×
Een uitdaging? Ons team maakt er een oplossing van.
Toestemming voor de verwerking van persoonsgegevens