Media Converter Service

Case-overzicht

Dit is een cloudgebaseerde media-conversiedienst die video- en audiobestanden omzet naar het HLS-streamingformaat met ondersteuning voor adaptieve bitrate. Het systeem luistert naar een SQS-queue voor nieuwe bestanden, start voor elk bestand een Kubernetes-taak op 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 meerdere audiotracks, inclusief verschillende talen of commentaar. De service werkt gelijktijdig voor meerdere projecten en organiseert de output in aparte mappen op S3 op basis van het project of de uitgever.

Doel: Bouw een volledig geautomatiseerde service die elk video- of audiobestand zonder handmatige tussenkomst omzet naar HLS-formaat - werkend over meerdere projecten, met diverse inhoudstypen, en schaalbaar tot nul wanneer inactief.

Image

Belangrijke projectinformatie

Branchen

Branchen

Media & Entertainment, videostreamingplatforms, OTT- & omroepdiensten, digitale publicaties, content delivery-netwerken — elk bedrijf dat video- of audio-inhoud aan eindgebruikers levert op verschillende apparaten en onder uiteenlopende netwerkcondities.

Diensten

Diensten

SQS-queueverwerking met long polling en beheer van zichtbaarheidstijd, FFmpeg & FFprobe media-transcodering en streamanalyse, Kubernetes-joborkestratie met tijdelijke schijven en node-affiniteit, parallele S3-uploadpipeline met schoonmaak voor 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, lage-res 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 video

Meerdere audiostreams per video

Sommige video's hebben meerdere audiotracks in verschillende talen. Het systeem moest ze allemaal automatisch detecteren, afzonderlijk converteren en een master-afspeellijst maken die elke track met de juiste taalcode verwijst.

Queue betrouwbaarheid en retry-logica

Queue betrouwbaarheid en retry-logica

Met SQS moet je duplicaten, zichtbaarheidstijd en mislukte taken goed afhandelen. Als een taak faalt, moet het bericht terug in de queue voor een nieuwe poging. Als hetzelfde bestand twee keer in de queue komt, mogen we het niet opnieuw verwerken.

Beheer op Kubernetes

Beheer op Kubernetes

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

Isolatie van meerdere projecten op S3

Isolatie van meerdere projecten op S3

De service draait voor meerdere projecten tegelijk. Elk heeft zijn eigen output-pad op S3 nodig, en we moesten zowel uitgever-gebaseerde als serie-gebaseerde mapstructuren ondersteunen zonder iets te verbreken.

Automatische codec selectie

Automatische codec selectie

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

Het proces

De hele pijplijn draait zonder menselijke tussenkomst — vanaf het moment dat een bestand op S3 landt tot de uiteindelijke HLS-uitvoer klaar is voor afspelen. Elke stap geeft schoon door aan de volgende, met ingebouwde beveiligingen tegen fouten, duplicaten en resourceconflicten. Hieronder wordt uitgelegd hoe het systeem een bestand door de volledige conversiecyclus leidt.

Queue polling

Queue polling

De taakbeheerder draait op Kubernetes en vraagt de SQS-queue op met long polling. Wanneer een bericht arriveert, wordt de S3-bucket en objectkey ontleed om het bronbestand te identificeren.

Duplicaatpreventie

Duplicaatpreventie

Voor het aanmaken van een nieuwe taak controleert de manager of er al een Kubernetes-taak is voor hetzelfde bestand. Als die gevonden wordt, wordt het bericht opnieuw in de wachtrij geplaatst met vertraging om dubbele verwerking te voorkomen.

Kubernetes taak creatie

Kubernetes taak creatie

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

Video- en audioconversie

Video- en audioconversie

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

Master playlist generatie

Master playlist generatie

Een enkel m3u8-masterbestand verwijst naar alle videoresoluties en audiotracks met taalmetadata — wat adaptief streamen en taalwisselen mogelijk maakt 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 schoongemaakt voordat de nieuwe set arriveert. De autoscaler zet nodes terug 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 zet alle audiotracks om, inclusief commentaar en beschrijvingen, terwijl taalmetadata behouden blijft.

  • Automatische Codec-detectie — Maakt gebruik van NVIDIA / Intel / AMD-versnelling, of softwarefallback als er geen GPU beschikbaar is.

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

  • Multi-Project S3-isolatie — Elk project heeft zijn eigen S3-uitvoerp pad. Ondersteunt zowel uitgever- als serie-gebaseerde mappenstructuren.


Image

Resultaten in cijfers

Videokwaliteitsdekking

1080p

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

Parallelle uploadthreads

500x

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

HLS-segmentduur

4sec

4-seconden HLS-segmenten balanceren adaptieve schakelingsnelheid met buffer-efficiëntie — de speler reageert op netwerkveranderingen binnen een enkel segmentgrens.

Audiobitrate-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 meegroeit 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