Mediekonverteringstjeneste

Sagsoversigt

Dette er en cloud-baseret mediekonverteringstjeneste, der tager video- og lydfiler og konverterer dem til HLS streamingformat med adaptiv bitrate-understøttelse. Systemet lytter til en SQS-kø for nye filer, starter et Kubernetes-job for hver enkelt og producerer et komplet sæt m3u8-playlister og .ts-segmenter klar til enhver moderne videoafspiller.


Det understøtter flere opløsninger for video, flere bitrate-niveauer for lyd og håndterer videoer med flere lydspor — inklusive forskellige sprog eller kommentarer. Tjenesten arbejder for flere projekter samtidigt og organiserer output i separate mapper på S3 baseret på projekt eller udgiver.

Mål: At bygge en fuldautomatisk tjeneste, der konverterer enhver video- eller lydfil til HLS-format uden manuel indgriben - fungerer på tværs af flere projekter, håndterer forskellige indholdstyper og skalerer til nul, når den er inaktiv.

Image

Vigtig projektinfo

Brancher

Brancher

Medier og Underholdning, Video-Streamingplatforme, OTT- og Broadcast-tjenester, Digital Udgivelse, Content Delivery Networks — enhver virksomhed, der skal levere video- eller lydindhold til slutbrugere på forskellige enheder og under varierende netværksforhold.

Tjenester

Tjenester

SQS-købehandling med lang polling og håndtering af synlighedstimeouts, FFmpeg & FFprobe mediekonvertering og strømanalyse, Kubernetes-joborkestrering med flygtige volumener og node-affinitet, Parallel S3-upload pipeline med forud-upload oprydning.

Løsninger

Løsninger

Multi-opløsnings HLS-video — 1080p, 720p, 480p, 360p, 240p med adaptiv bitrate, Multi-bitrate lyd HLS — 32, 64, 96, 128, 192 kbps niveauer pr. lydspor, automatisk detektion af alle lydstrømme med sprogmetadata, Thumbnails ved 2-sekunders markør, lavopløst MP4-forhåndsvisning, MP3 og WAV kopier.

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

Udfordringerne

Mange outputformater fra én input

Mange outputformater fra én input

En enkelt videofil kan producere hundredvis af filer — fem videoopløsninger, fem lydbitrater pr. lydspor, plus thumbnails og previews. Vi måtte organisere det hele rent og uploade det hurtigt.

Flere lydstrømme pr. videofil

Flere lydstrømme pr. videofil

Nogle videoer har flere lydspor på forskellige sprog. Systemet skulle automatisk opdage dem alle, konvertere hver enkelt separat og bygge en master-playliste, der refererer til hvert spor med det rette sprogmærke.

Kø-pålidelighed og gentagelseslogik

Kø-pålidelighed og gentagelseslogik

Med SQS skal du håndtere dubletter, synlighedstimeouts og fejlede jobs korrekt. Hvis et job fejler, skal beskeden returneres til køen for ny forsøg. Hvis den samme fil køres to gange, må vi ikke behandle den igen.

Administration på Kubernetes

Administration på Kubernetes

Hvert konverteringsjob bruger meget CPU og hukommelse. Vi måtte sætte flygtige volumener, node-affinitetsregler og korrekt oprydning op, så jobs ikke hobes op eller blokerer hinanden.

Multi-projekt isolation på S3

Multi-projekt isolation på S3

Tjenesten kører for flere projekter samtidigt. Hvert enkelt har brug for sin egen outputsti på S3, og vi måtte understøtte både udgiverbaserede og seriebaserede mappestrukturer uden at bryde noget.

Automatisk codec-valg

Automatisk codec-valg

Ikke alle maskiner har GPU-acceleration. Systemet skulle kunne detektere, hvilke codecs der er tilgængelige — NVIDIA, Intel Quick Sync, AMD eller bare software — og automatisk vælge den bedste.

Processen

Hele processen kører uden menneskelig involvering — fra det øjeblik en fil lander på S3 til den endelige HLS-output er klar til afspilning. Hvert trin overleveres rent til det næste med indbyggede sikkerhedsforanstaltninger mod fejl, dubletter og ressourcekonflikter. Herunder vises hvordan systemet flytter en fil gennem hele konverteringscyklussen.

Kø-udspørgning

Kø-udspørgning

Jobadministratoren kører på Kubernetes og forespørger SQS-køen med lang polling. Når en besked ankommer, fortolker den S3-bucket og objektets nøgle for at identificere kildefilen.

Forebyggelse af dubletter

Forebyggelse af dubletter

Før oprettelsen af et nyt job tjekker administratoren for et eksisterende Kubernetes-job for den samme fil. Hvis fundet genkøes beskeden med en forsinkelse for at undgå dobbeltbehandling.

Oprettelse af Kubernetes-job

Oprettelse af Kubernetes-job

En ny pod oprettes fra en skabelon med korrekte ressourcegrænser, node-affinitet for ARM-baserede instanser og flygtige volumener til midlertidige filer, input, output og logfiler.

Video- og lydkonvertering

Video- og lydkonvertering

FFmpeg konverterer video til fem HLS-opløsninger (1080p→240p) med 4-sekunders segmenter. Hvert lydspor opdages og konverteres til fem bitrate-niveauer — 32 til 192 kbps.

Generering af master-playliste

Generering af master-playliste

En enkelt m3u8 masterfil refererer til alle videoopløsninger og lydspor med sprogmetadata — hvilket muliggør adaptiv streaming og sprogskifte i enhver moderne afspiller.

Upload, oprydning og autoskalering

Upload, oprydning og autoskalering

Alle filer uploades parallelt til S3 via en 500-trådet pool. Gamle HLS-segmenter ryddes op inden det nye sæt lander. Autoskaleren skalerer noder til nul, når køen er tom.

Løsninger

De vigtigste funktioner i løsningen

  • Adaptiv bitrate-video - 5 niveauer —240p (300 kbps) → 1080p (5000 kbps) i én playliste. Automatisk kvalitetsvalg baseret på forbindelseshastighed.

  • Multi-spors lyd med sprogmærker — Detekterer og konverterer alle lydspor, inklusive kommentarer og beskrivelser, samtidig med at sprogmetadata bevares.

  • Automatisk codec-detektion — Bruger NVIDIA / Intel / AMD acceleration eller software-nødplan hvis ingen GPU er tilgængelig.

  • Zero Idle Cost Autoscaling — EC2-noder skaleres ned til nul, når køen er tom. Aktive job er beskyttet mod for tidlig afbrydelse.

  • Multi-projekt S3-isolering — Hvert projekt har sin egen S3 output-sti. Understøtter både udgiver- og serie-baserede mappestrukturer.


Image

Resultater i tal

Videokvalitetsdækning

1080p

Fem adaptive bitrate-niveauer fra 240p ved 300 kbps op til fuld HD 1080p ved 5000 kbps — afspilleren skifter kvalitet automatisk baseret på forbindelseshastighed.

Parallelle upload-tråde

500x

Hundredevis af output-filer — segmenter, playlister, thumbnails, previews — uploades til S3 samtidigt via en tråd-pool, hvilket holder leveringstiden minimal.

HLS segmenteret varighed

4sek

4-sekunders HLS-segmenter balancerer adaptiv skiftes hastighed med buffer-effektivitet — afspilleren reagerer på netværksændringer inden for en enkelt segmentgrænse.

Audio bitrate-niveauer pr. spor

5x

Hvert lydspor — inklusive kommentar og beskrivelse — får op til fem kvalitetsniveauer fra 32 kbps (HE-AAC) til 192 kbps (LC-AAC) med lydstyrkekorrektion.

Byg en skalerbar mediepipe til din platform!

Få et fuldautomatisk HLS-konverteringssystem, der skalerer med dit indhold - og vi hjælper dig med at finde den optimale arkitektur til dit projekt.

Message not sent.
Message not sent.
×
Er du i tvivl om, hvor du skal starte? Vi hjælper dig med at skitsere de næste trin!
Samtykke til behandling af personlige oplysninger
×
Har du en udfordring? Vores team vil gøre den til en løsning.
Samtykke til behandling af personlige oplysninger