Služba pro převod médií

Přehled případu

Jedná se o cloudovou službu pro převod médií, která převádí video a audio soubory do formátu HLS s podporou adaptivního přenosu datové rychlosti. Systém sleduje frontu SQS pro nové soubory, spouští pro každý z nich úlohu v Kubernetes a vytváří kompletní sadu playlistů m3u8 a segmentů .ts připravených pro jakýkoliv moderní video přehrávač.


Podporuje více rozlišení pro video, více úrovní bitrate pro audio a zvládá videa s několika zvukovými stopami — včetně různých jazyků nebo komentářů. Služba pracuje současně pro více projektů a organizuje výstupy do samostatných složek na S3 podle projektu nebo vydavatele.

Cíl: Vytvořit plně automatizovanou službu, která převede jakýkoli video nebo audio soubor do formátu HLS bez ručního zásahu - fungující napříč více projekty, zvládající různé typy obsahu a škálující na nulu, když je nečinná.

Image

Klíčové informace o projektu

Průmyslová odvětví

Průmyslová odvětví

Média a zábava, platformy pro streamování videa, OTT a vysílací služby, digitální vydavatelství, sítě pro doručování obsahu — jakýkoli podnik, který potřebuje doručovat video nebo audio obsah koncovým uživatelům na různých zařízeních a při různých podmínkách sítí.

Služby

Služby

Zpracování fronty SQS s dlouhým čekáním a správa timeoutů viditelnosti, transkódování médií a analýza streamů pomocí FFmpeg a FFprobe, orchestrace úloh Kubernetes s efemérními volume a node affinity, paralelní pipeline nahrávání do S3 s čištěním před nahráváním.

Řešení

Řešení

Více rozlišení HLS videa — 1080p, 720p, 480p, 360p, 240p s adaptivním bitrate, více bitrate úrovní audio HLS — 32, 64, 96, 128, 192 kbps na audio stopu, automatická detekce všech audio streamů s jazykovými metadaty, náhledy na 2 sekundě, nízkorozlišovací MP4 náhled, kopie ve formátech MP3 a WAV.

Technologie

Technologie

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

Výzvy

Mnoho výstupních formátů
ze jednoho vstupu

Mnoho výstupních formátů ze jednoho vstupu

Jeden video soubor může vytvořit stovky souborů — pět video rozlišení, pět audio bitrate na audio stopu, plus náhledy a preview. Museli jsme to vše uspořádat přehledně a nahrát rychle.

Více zvukových stop na jeden video soubor

Více zvukových stop na jeden video soubor

Některá videa mají několik audio stop v různých jazycích. Systém je musel všechny automaticky detekovat, převést každou zvlášť a vytvořit hlavní playlist, který odkazuje na všechny stopy s odpovídajícím jazykovým tagem.

Spolehlivost fronty
a logika opakování

Spolehlivost fronty a logika opakování

U SQS je potřeba správně řešit duplicity, timeouty viditelnosti a neúspěšné úlohy. Pokud úloha selže, měla by se zpráva vrátit do fronty k opakování. Pokud je stejný soubor ve frontě dvakrát, neměli bychom ho zpracovávat znovu.

Správa v Kubernetes

Správa v Kubernetes

Každá převodní úloha využívá hodně CPU a paměti. Museli jsme nastavit efemérní volume, pravidla affinita node a správné čištění, aby se úlohy nehromadily a neblokovaly se navzájem.

Izolace vícero projektů na S3

Izolace vícero projektů na S3

Služba běží současně pro více projektů. Každý potřebuje vlastní výstupní cestu na S3 a museli jsme podporovat struktury složek podle vydavatele i podle série, aniž by se něco poškodilo.

Automatický výběr kodeku

Automatický výběr kodeku

Ne každý počítač má GPU akceleraci. Systém musel automaticky zjistit, jaké kodeky jsou k dispozici — NVIDIA, Intel Quick Sync, AMD nebo jen software — a vybrat ten nejlepší.

Proces

Celý proces běží bez lidského zásahu — od momentu, kdy soubor přistane na S3, až po finální HLS výstup připravený k přehrávání. Každý krok přechází plynule do dalšího, s vestavěnou ochranou proti chybám, duplicitám a konfliktům zdrojů. Níže je popsáno, jak systém zpracovává soubor v celém cyklu převodu.

Skenování fronty

Skenování fronty

Správce úloh běží na Kubernetes a skenuje frontu SQS s dlouhým čekáním. Když přijde zpráva, analyzuje bucket S3 a klíč objektu, aby identifikoval zdrojový soubor.

Prevence duplicit

Prevence duplicit

Před vytvořením nové úlohy správce kontroluje, zda již neexistuje úloha Kubernetes pro stejný soubor. Pokud ano, zpráva je opět zařazena do fronty s prodlevou, aby se předešlo dvojímu zpracování.

Vytvoření úlohy v Kubernetes

Vytvoření úlohy v Kubernetes

Nový pod je vytvořen z šablony s nastavenými limity zdrojů, affinita node pro instance na bázi ARM a efemérní volume pro dočasné soubory, vstup, výstup a logy.

Převod videa a zvuku

Převod videa a zvuku

FFmpeg převádí video do pěti HLS rozlišení (1080p→240p) s 4 sekundovými segmenty. Každá audio stopa je detekována a převedena do pěti bitrate úrovní — 32 až 192 kbps.

Generování hlavního playlistu

Generování hlavního playlistu

Jeden m3u8 hlavní soubor odkazuje na všechna video rozlišení a audio stopy s jazykovými metadaty — umožňuje adaptivní streamování a přepínání jazyků v jakémkoliv moderním přehrávači.

Nahrávání, čištění a autoscaling

Nahrávání, čištění a autoscaling

Všechny soubory se nahrávají do S3 paralelně přes pool se 500 vlákny. Staré HLS segmenty jsou odstraněny před tím, než přistane nová sada. Autoscaler škáluje uzly na nulu, jakmile se fronta vyprázdní.

Řešení

Klíčové vlastnosti řešení

  • Video s adaptivním přenosem datové rychlosti - 5 úrovní —240p (300 kbps) → 1080p (5000 kbps) v jedné playlistu. Automatický výběr kvality podle rychlosti připojení.

  • Více stop audio s jazykovými značkami — Detekuje a převádí všechny audio stopy, včetně komentářů a popisů, přičemž zachovává jazyková metadata.

  • Automatická detekce kodeku — Používá akceleraci NVIDIA / Intel / AMD, nebo softwarovou zálohu, pokud není k dispozici GPU.

  • Autoscaling bez nákladů na nečinnost — EC2 uzly se zmenšují na nulu, když je fronta prázdná. Aktivní úlohy jsou chráněny před předčasným ukončením.

  • Izolace Multi-Project S3 — Každý projekt má vlastní cestu výstupu S3. Podporuje struktury složek založené jak na vydavateli, tak na sériích.


Image

Výsledky v číslech

Pokrytí kvality videa

1080p

Pět adaptivních úrovní přenosové rychlosti od 240p při 300 kbps až po plné HD 1080p při 5000 kbps — přehrávač automaticky přepíná kvalitu podle rychlosti připojení.

Paralelní nahrávací vlákna

500x

Stovky výstupních souborů — segmenty, seznamy skladeb, miniatury, náhledy — jsou nahrávány do S3 současně pomocí vláknového poolu, což minimalizuje dobu dodání.

Doba trvání HLS segmentů

4s

4sekundové HLS segmenty vyvažují rychlost adaptivního přepínání s účinností vyrovnávací paměti — přehrávač reaguje na změny sítě v rámci jedné hranice segmentu.

Úrovně přenosové rychlosti zvuku na stopu

5x

Každá zvuková stopa — včetně komentářů a popisů — má až pět úrovní kvality od 32 kbps (HE-AAC) do 192 kbps (LC-AAC) s normalizací hlasitosti.

Vybudujte škálovatelné mediální potrubí pro svou platformu!

Získejte plně automatizovaný systém převodu HLS, který roste s vaším obsahem - a my vám pomůžeme najít optimální architekturu pro váš projekt.

Message not sent.
Message not sent.
×
Nejste si jistí, kde začít? Pomůžeme vám naplánovat další kroky!
×
Máte výzvu? Náš tým ji promění v řešení.
Souhlas se zpracováním osobních údajů