Mediekonverteringstjänst

Fallöversikt

Detta är en molnbaserad mediekonverteringstjänst som tar video- och ljudfiler och omvandlar dem till HLS-strömningsformat med stöd för adaptiv bithastighet. Systemet lyssnar på en SQS-kö för nya filer, startar ett Kubernetes-jobb för varje fil och producerar ett komplett set av m3u8-spellistor och .ts-segment redo för vilken modern videospelare som helst.


Den stödjer flera videoupplösningar, flera bithastighetsnivå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 videofil eller ljudfil som helst till HLS-format utan manuell inblandning – fungerar över flera projekt, hanterar olika innehållstyper och skalas ner till noll vid inaktivitet.

Image

Viktig projektinformation

Branscher

Branscher

Media & Underhållning, Videoströmningsplattformar, OTT & 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ätverksförhållanden.

Tjänster

Tjänster

SQS-köhantering med long polling och hantering av synlighetstidsgränser, FFmpeg & FFprobe mediekodning och strömanalys, Kubernetes-jobbordning med tillfälliga volymer och nodaffinitet, parallell S3-uppladdningspipeline med förhandsrengöring.

Lösningar

Lösningar

Multiresolutions-HLS-video — 1080p, 720p, 480p, 360p, 240p med adaptiv bithastighet, Multibithastighetsljud HLS — 32, 64, 96, 128, 192 kbps nivåer per ljudspår, Automatisk upptäckt av alla ljudströmmar med språkmetadata, Thumbnails 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 källa

Många utdataformat från en källa

En enda videofil kan producera hundratals filer — fem videoupplösningar, fem ljudbithastigheter per ljudspår, plus thumbnails och förhandsvisningar. Vi var tvungna att organisera allt detta på ett rent sätt och ladda upp det snabbt.

Flera ljudströmmar per videofil

Flera ljudströmmar per videofil

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

Kö-pålitlighet
och omförsökslogik

Kö-pålitlighet och omförsökslogik

Med SQS måste man hantera dubbletter, synlighetstidsgränser och misslyckade jobb korrekt. Om ett jobb misslyckas ska meddelandet komma tillbaka till kön för omförsök. Om samma fil läggs i kön två gånger ska den inte bearbetas igen.

Hantering på Kubernetes

Hantering på Kubernetes

Varje konverteringsjobb använder mycket CPU och minne. Vi var tvungna att konfigurera tillfälliga volymer, nodaffinitetsregler och korrekt städning så att jobben inte hopar sig 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 utmatningssökväg på S3, och vi var tvungna att stödja både utgivarbundna och serienbaserade mappstrukturer utan att något gick sönder.

Automatisk codec
val

Automatisk codec val

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

Processen

Hela kedjan körs utan mänskligt ingripande – från det att en fil hamnar på S3 till att den slutliga HLS-utgången är redo för uppspelning. Varje steg överlämnar smidigt till nästa, med inbyggda skydd mot fel, dubbletter och resurskonflikter. Nedan visas hur systemet flyttar en fil genom hela konverteringscykeln.

Kö-polling

Kö-polling

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

Förebyggande av dubbletter

Förebyggande av dubbletter

Innan ett nytt jobb skapas kontrollerar hanteraren om det finns ett befintligt Kubernetes-jobb för samma fil. Om detta finns läggs meddelandet tillbaka i kön med fördröjning för att förhindra dubbelbearbetning.

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 temporära filer, 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 upptäcks och konverteras till fem bithastighetsnivåer — 32 till 192 kbps.

Generering av huvudspellista

Generering av huvudspellista

En enda m3u8 master-fil refererar alla videoupplösningar och ljudspår med språkmetadata – vilket möjliggör adaptiv streaming och språkbyte i vilken modern spelare som helst.

Uppladdning, rengöring och autoskalning

Uppladdning, rengöring och autoskalning

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

Lösningar

Lösningens nyckelfunktioner

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

  • Fler-spårs ljud med språketiketter — Upptäcker och konverterar alla ljudspår, inklusive kommentar och beskrivningar, samtidigt som språkinformation bevaras.

  • Automatisk Codec-igenkänning — Använder NVIDIA / Intel / AMD-acceleration, eller mjukvarureserv om ingen GPU finns.

  • Noll idle-kostnad autoskalning — EC2-noder minskas till noll när kön är tom. Aktiva jobb skyddas från för tidig avslutning.

  • Flerprojektisolering i S3 — Varje projekt har sin egen S3-utgångssökväg. Stöder både utgivare- och seriebaserade mappstrukturer.


Image

Resultat i siffror

Videokvalitetstäckning

1080p

Fem nivåer av adaptiv bithastighet från 240p vid 300 kbps upp till full HD 1080p vid 5000 kbps — spelaren växlar automatiskt kvalitet baserat på uppkopplingshastighet.

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 enda segmentgrä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 ljudnormering.

Bygg en skalbar mediepipeline för din plattform!

Få ett helt automatiserat 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