Media Converter Service

Fallöversikt

Detta är en molnbaserad mediekonverteringstjänst som tar videofiler och ljudfiler och omvandlar dem till HLS-strömningsformat med stöd för adaptiv bitrate. Systemet lyssnar på en SQS-kö för nya filer, startar ett Kubernetes-jobb för varje fil och genererar en komplett uppsättning m3u8-spellistor och .ts-segment som är redo för alla moderna videospelare.


Den stödjer flera upplösningar för video, flera bitrate-nivåer för ljud och hanterar videor med flera ljudspår — inklusive olika språk eller kommentarer. Tjänsten fungerar för flera projekt samtidigt och organiserar utdata i separata mappar på S3 baserat på projekt eller utgivare.

Mål: Bygg en helt automatiserad tjänst som konverterar vilken video- eller ljudfil som helst till HLS-format utan manuell inblandning - som fungerar över flera projekt, hanterar olika innehållstyper och skalar ner till noll när den är inaktiv.

Image

Viktig projektinformation

Branscher

Branscher

Media och underhållning, videoströmningsplattformar, OTT och sändningstjänster, digital publicering, innehållsleveransnätverk — alla företag som behöver leverera video- eller ljudinnehåll till slutanvändare över olika enheter och varierande nätverkssituationer.

Tjänster

Tjänster

Bearbetning av SQS-kö med lång polling och hantering av synlighetstid, FFmpeg och FFprobe medieomkodning och strömanalys, Kubernetes-jobborkestrering med tillfälliga volymer och nodaffinitet, parallell uppladdningspipeline till S3 med förhandsstädning.

Lösningar

Lösningar

Multi-upplösnings HLS-video — 1080p, 720p, 480p, 360p, 240p med adaptiv bitrate, Multi-bitrate audio HLS — 32, 64, 96, 128, 192 kbps nivåer per ljudspår, Automatisk detektion av alla ljudströmmar med språkmatadata, miniatyrbilder vid 2 sekunder, lågupplöst MP4-förhandsvisning, MP3- och WAV-kopior.

Teknologier

Teknologier

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

Utmaningarna

Många utdataformat från en ingång

Många utdataformat från en ingång

En enda videofil kan producera hundratals filer — fem videoupplösningar, fem ljudbitrate per ljudspår, plus miniatyrbilder och förhandsvisningar. Vi var tvungna att organisera allt detta snyggt och ladda upp det snabbt.

Flera ljudströmmar per videofil

Flera ljudströmmar per videofil

Vissa videor kommer med flera ljudspår på olika språk. Systemet var tvunget att automatiskt detektera dem alla, konvertera varje spår separat och bygga en huvudspellista som refererar varje spår med rätt språketikett.

Kö-tillförlitlighet och retry-logik

Kö-tillförlitlighet och retry-logik

Med SQS måste du hantera dubbletter, synlighetstid och misslyckade jobb på rätt sätt. Om ett jobb misslyckas ska meddelandet återgå till kön för omförsök. Om samma fil läggs i kön två gånger ska vi inte bearbeta den igen.

Hantering på Kubernetes

Hantering på Kubernetes

Varje konverteringsjobb använder mycket CPU och minne. Vi var tvungna att ställa in tillfälliga volymer, nodaffinitetsregler och korrekt städning så att jobben inte staplas upp eller blockerar varandra.

Isolering av flera projekt på S3

Isolering av flera projekt på S3

Tjänsten körs för flera projekt samtidigt. Varje projekt behöver sin egen utdata-sökväg på S3, och vi var tvungna att stödja både katalogstrukturer baserade på utgivare och serier utan att bryta något.

Automatisk codec-val

Automatisk codec-val

Inte alla maskiner har GPU-acceleration. Systemet behövde upptäcka vilka codecs som är tillgängliga — NVIDIA, Intel Quick Sync, AMD eller bara programvara — och välja den bästa automatiskt.

Processen

Hela pipelinen körs utan mänsklig inblandning — från det att en fil landar på S3 tills den slutliga HLS-utgången är redo för uppspelning. Varje steg överlämnar rent till nästa med inbyggda skydd för fel, dubbletter och resurskonkurrens. Nedan visas hur systemet flyttar en fil genom hela konverteringscykeln.

Köpollning

Köpollning

Jobbhanteraren körs på Kubernetes och pollar SQS-kön med lång polling. När ett meddelande anländer analyserar den S3-bucket och objektnyckel för att identifiera källfilen.

Dubblettförebyggande

Dubblettförebyggande

Innan ett nytt jobb skapas kontrollerar manager om ett existerande Kubernetes-jobb finns för samma fil. Om det hittas läggs meddelandet i kö igen med fördröjning för att förhindra dubbel bearbetning.

Skapande av Kubernetes-jobb

Skapande av Kubernetes-jobb

En ny pod skapas från en mall med korrekta resursgränser, nodaffinitet för ARM-baserade instanser och tillfälliga volymer för tempfiler, input, output och loggar.

Video- och ljudkonvertering

Video- och ljudkonvertering

FFmpeg konverterar video till fem HLS-upplösningar (1080p→240p) med 4-sekunders segment. Varje ljudspår detekteras och konverteras till fem bitrate-nivåer — 32 till 192 kbps.

Generering av huvudspellista

Generering av huvudspellista

En enda m3u8-masterfil refererar till alla videoupplösningar och ljudspår med språkmatadata — vilket möjliggör adaptiv streaming och språkbyte i vilken modern spelare som helst.

Uppladdning, städning och autoskalning

Uppladdning, städning och autoskalning

Alla filer laddas upp till S3 parallellt via en 500-trådig pool. Gamla HLS-segment rensas innan den nya uppsättningen landar. Autoskalaren skalar noder till noll när kön är tom.

Lösningar

Lösningens nyckelfunktioner

  • Adaptiv bitrate-video - 5 nivåer —240p (300 kbps) → 1080p (5000 kbps) i en spellista. Automatisk kvalitetsval baserat på anslutningshastighet.

  • Flerspårs-ljud med språketiketter — Upptäcker och konverterar alla ljudspår, inklusive kommentarer och beskrivningar, samtidigt som språkmatadatan bevaras.

  • Automatisk codec-detektion — Använder NVIDIA / Intel / AMD-acceleration, eller programvarureserv om ingen GPU finns.

  • Autoskalning utan vilokostnad — EC2-noder skalar ner till noll när kön är tom. Aktiva jobb skyddas från för tidig avslutning.

  • Flerprojekt S3-isolering— Varje projekt har sin egen S3-utgångsväg. Stdjar bde mappstrukturer baserade pe5 utgivare och serie.


Image

Resultat i siffror

Videokvalitetstäckning

1080p

Fem adaptiva bithastighetsnivåer från 240p vid 300 kbps till full HD 1080p vid 5000 kbps — spelaren byter automatiskt kvalitet baserat på anslutningshastighet.

Parallella uppladdningstrådar

500x

Hundratals utdatafiler — segment, spellistor, miniatyrer, förhandsvisningar — laddas upp till S3 samtidigt via en trådpool, vilket håller leveranstiden minimal.

HLS segmenterad varaktighet

4sek

4-sekunders HLS-segment balanserar adaptiv växlingshastighet med buffringseffektivitet — spelaren reagerar på nätverksförändringar inom en segmentsgräns.

Ljudbithastighetsnivåer per spår

5x

Varje ljudspår — inklusive kommentar och beskrivning — får upp till fem kvalitetsnivåer från 32 kbps (HE-AAC) till 192 kbps (LC-AAC) med ljudnivånormalisering.

Bygg en skalbar mediapipeline för din plattform!

Få ett fullautomatiskt HLS-konverteringssystem som skalar med ditt innehåll - och vi hjälper dig att hitta den optimala arkitekturen för ditt projekt.

Message not sent.
Message not sent.
×
Osäker på hur du ska börja? Vi hjälper dig att skissa på nästa steg!
Samtycke till behandling av personuppgifter
×
Har du en utmaning? Vårt team förvandlar den till en lösning.
Samtycke till behandling av personuppgifter