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.
Viktig projektinformation
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
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
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
AWS SQS, S3, Kubernetes, FFmpeg, FFprobe, H.264, AAC/HE-AAC, HLS/m3u8, NVIDIA NVENC, Intel Quick Sync, EC2 Auto Scaling, Docker, Helm
Utmaningarna
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
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
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
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
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
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
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.
Resultat i siffror
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.
500x
Hundratals utdatafiler — segment, spellistor, miniatyrer, förhandsvisningar — laddas upp till S3 samtidigt via en trådpool, vilket håller leveranstiden minimal.
4sek
4-sekunders HLS-segment balanserar adaptiv växlingshastighet med buffringseffektivitet — spelaren reagerar på nätverksförändringar inom en enda segmentgräns.
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.