Služba na prevod médií
Prehľad prípadu
Ide o cloudovú službu na prevod médií, ktorá prevezme video a audio súbory a prevedie ich do formátu HLS so streamovaním s adaptívnou bitovou rýchlosťou. Systém počúva na frontu SQS pre nové súbory, spúšťa úlohu Kubernetes pre každý z nich a vytvára kompletný súbor prehrávacích zoznamov m3u8 a segmentov .ts pripravených pre akýkoľvek moderný prehrávač videa.
Podporuje viaceré rozlíšenia videa, rôzne úrovne bitových rýchlostí pre audio a spracováva videá s viacerými zvukovými stopami — vrátane rôznych jazykov alebo komentárov. Služba pracuje súčasne pre viacero projektov a organizuje výstupy do samostatných priečinkov na S3 podľa projektu alebo vydavateľa.
Cieľ: Vytvoriť plne automatizovanú službu, ktorá prevedie akýkoľvek video alebo audio súbor do formátu HLS bez manuálneho zásahu - pracovať naprieč viacerými projektmi, spracovávať rôzne typy obsahu a škálovať na nulu, keď je nečinná.
Kľúčové informácie o projekte
Odvetvia
Médiá a zábava, platformy na streamovanie videa, OTT a vysielacie služby, digitálne vydavateľstvo, siete na doručovanie obsahu — každý podnik, ktorý potrebuje doručovať video alebo audio obsah koncovým používateľom na rôznych zariadeniach a v rôznych sieťových podmienkach.
Služby
Spracovanie fronty SQS s dlhým vyvolávaním a správou viditeľnosti, mediálny transcoding a analýza streamu pomocou FFmpeg & FFprobe, orchestrácia úloh Kubernetes s dočasnými zväzkami a príslušnosťou uzlov, paralelný prenos S3 s čistením pred prenosom.
Riešenia
Viacrozlíšené HLS video — 1080p, 720p, 480p, 360p, 240p s adaptívnou bitovou rýchlosťou, viacúrovňové audio HLS — 32, 64, 96, 128, 192 kbps úrovne na zvukovú stopu, automatická detekcia všetkých audio streamov s jazykovými metadátami, náhľady na 2-sekundovej značke, nízke rozlíšenie MP4 náhľad, kópie MP3 a WAV.
Technológie
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
Proces
Celý proces prebieha bez ľudského zásahu — od momentu, keď súbor pristane na S3, až po finálny výstup HLS pripravený na prehrávanie. Každý krok plynulo nadväzuje na nasledujúci, so zabudovanými bezpečnostnými opatreniami pre zlyhania, duplikáty a súťaž o zdroje. Nižšie je spôsob, akým systém spracováva súbor cez celý konverzný cyklus.
Vyvolávanie fronty
Manažér úloh beží na Kubernetes a vyvoláva frontu SQS s dlhým pollingom. Keď príde správa, rozparsuje S3 bucket a kľúč objektu, aby identifikoval zdrojový súbor.
Prevencia duplikátov
Pred vytvorením novej úlohy manažér skontroluje existujúcu úlohu Kubernetes pre ten istý súbor. Ak ju nájde, správa sa znovu zaradí do fronty s oneskorením, aby sa zabránilo dvojitému spracovaniu.
Vytváranie úloh Kubernetes
Nový pod je vytvorený z šablóny so správnymi limitmi zdrojov, príslušnosťou uzlov pre ARM inštancie a dočasnými zväzkami pre dočasné súbory, vstup, výstup a logy.
Video a audio konverzia
FFmpeg prevádza video do piatich HLS rozlíšení (1080p→240p) so segmentmi po 4 sekundách. Každá zvuková stopa sa detekuje a prekonvertuje do piatich bitových úrovní — 32 až 192 kbps.
Vytváranie hlavného prehrávacieho zoznamu
Jeden hlavný m3u8 súbor odkazuje na všetky video rozlíšenia a audio stopy s jazykovými metadátami — umožňujúci adaptívne streamovanie a prepínanie jazykov v akomkoľvek modernom prehrávači.
Nahrávanie, čistenie a automatické škálovanie
Všetky súbory sa nahrávajú do S3 paralelne cez 500-vláknový pool. Staré segmenty HLS sa čistia pred príchodom novej množiny. Autoscaler škáluje uzly na nulu, keď je fronta prázdna.
Riešenia
Kľúčové vlastnosti riešenia
Adaptívne video s bitovou rýchlosťou - 5 úrovní —240p (300 kbps) → 1080p (5000 kbps) v jednom prehrávacom zozname. Automatický výber kvality založený na rýchlosti pripojenia.
Viacstopy audio s jazykovými značkami — Detekuje a prevádza všetky zvukové stopy, vrátane komentárov a popisov, pričom zachováva jazykové metadáta.
Automatická detekcia kodeku — Používa zrýchlenie NVIDIA / Intel / AMD alebo softvérový záložný režim, ak nie je GPU.
Automatické škálovanie so žiadnymi nákladmi počas nečinnosti — EC2 uzly sa znižujú na nulu, keď je fronta prázdna. Aktívne úlohy sú chránené pred predčasným ukončením.
Izolácia viacerých projektov v S3 — Každý projekt má vlastnú výstupnú cestu v S3. Podporuje priečinkové štruktúry založené na vydavateľovi i sérii.
Výsledky v číslach
1080p
Päť úrovní adaptívneho bitratu od 240p pri 300 kbps až po full HD 1080p pri 5000 kbps — prehrávač automaticky prepína kvalitu na základe rýchlosti pripojenia.
500x
Stovky výstupných súborov — segmenty, playlisty, náhľady, ukážky — sa nahrávajú na S3 súčasne pomocou vlákien, čím sa minimalizuje doba dodania.
4sek
4-sekundové HLS segmenty vyvažujú rýchlosť adaptívneho prepínania a efektívnosť vyrovnávacej pamäte — prehrávač reaguje na zmeny siete v rámci jedného segmentu.
5x
Každá zvuková stopa — vrátane komentára a popisu — má až päť kvalitatívnych úrovní od 32 kbps (HE-AAC) do 192 kbps (LC-AAC) s normalizáciou hlasitosti.