Media Converter Service

Fallöversikt

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


Den stödjer flera upplösningar för video, 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: Bygga en fullt automatiserad tjänst som konverterar alla video- eller ljudfiler 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, Video Streaming Plattformar, OTT & Sändningstjänster, Digital Publicering, Content Delivery Networks — alla verksamheter 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öbehandling med långpolling och hantering av synlighetstimeouter, FFmpeg & FFprobe mediatranskodning och strömanalys, Kubernetes-jobborkestrering med temporära volymer och nodaffinitet, parallell S3-uppladdningsprocess med förhandsrensning.

Lösningar

Lösningar

Multiresolutions-HLS-video — 1080p, 720p, 480p, 360p, 240p med adaptiv bithastighet, Multi-bitrate-ljud HLS — 32, 64, 96, 128, 192 kbps per ljudspår, Automatisk detektion av alla ljudströmmar med språkmetadata, Minibilder vid 2-sekundersmärke, 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 video-upplösningar, fem ljud-bithastigheter per ljudspår, plus minibilder 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 har flera ljudspår på olika språk. Systemet var tvunget att automatiskt upptäcka dem alla, konvertera varje separat och bygga en master-spellista som refererar till varje spår med rätt språk-tag.

Kö-tillförlitlighet och omförsökningslogik

Kö-tillförlitlighet och omförsökningslogik

Med SQS behöver du hantera dubbletter, synlighetstimeouter och misslyckade jobb på rätt sätt. Om ett jobb misslyckas ska meddelandet komma tillbaka till kön för att försöka igen. 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 temporära volymer, nodaffinitetsregler och korrekt rensning så att jobben inte staplas på varandra 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 utmatningsväg på S3, och vi var tvungna att stödja både utgivarbasserade och seriebaserade mappstrukturer utan att bryta något.

Automatisk codec-val

Automatisk codec-val

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

Processen

Hela processen körs utan mänsklig inblandning — från det att en fil landar på S3 tills den slutliga HLS-utmatningen ä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 för 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 objektets nyckel för att identifiera källfilen.

Förebyggande av dubbletter

Förebyggande av dubbletter

Innan ett nytt jobb skapas kontrollerar hanteraren om det redan finns ett Kubernetes-jobb för samma fil. Om ett hittas, läggs meddelandet tillbaka i kön med en fördröjning för att förhindra dubbla processningar.

Skapande av Kubernetes-jobb

Skapande av Kubernetes-jobb

En ny pod skapas från en mall med korrekta resursbegränsningar, nodaffinitet för ARM-baserade instanser och temporära volymer för tempfiler, ingång, utgång och loggar.

Video- och ljudkonvertering

Video- och ljudkonvertering

FFmpeg konverterar video till fem HLS-upplösningar (1080p→240p) med 4-sekunderssegment. Varje ljudspår upptäcks och konverteras till fem bithastighetsnivåer — 32 till 192 kbps.

Master-spellistegenerering

Master-spellistegenerering

En enda m3u8-masterfil refererar till alla video-upplösningar och ljudspår med språkmetadata — möjliggör adaptiv streaming och språkövergång i vilken modern spelare som helst.

Uppladdning, rensning och autoskalning

Uppladdning, rensning 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 anpassar nodantalet 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.

  • Multi-track-ljud med språktaggar — Upptäcker och konverterar alla ljudspår, inklusive kommentar och beskrivningar, samtidigt som språkmetadata bevaras.

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

  • Noll vilokostnad autoskalning — EC2-noder skalar ner till noll när kön är tom. Aktiva jobb skyddas från förtida avslut.

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


Image

Resultat i siffror

Videokvalitets täckning

1080p

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

Parallella uppladdningstrådar

500x

Hundratals utdatafiler — segment, spellistor, miniatyrbilder, förhandsvisningar — laddas upp till S3 samtidigt via en tr������dpool, vilket h�����lller leveranstiden minimal.

HLS segmenterad varaktighet

4sek

4-sekunders HLS-segment balanserar adaptiv växlingshastighet med buffrings effektivitet — 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 ljudstyrkenormalisering.

Bygg en skalbar mediapipeline 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