Služba konvertora médií
Prehľad prípadu použitia
Toto je cloudová služba na konverziu médií, ktorá premieňa video a audio súbory do HLS streamovacieho formátu s podporou adaptívnej bitovej rýchlosti. Systém počúva frontu SQS na nové súbory, spúšťa Kubernetes job pre každý súbor a vytvára kompletnú sadu m3u8 prehrávacích zoznamov a .ts segmentov pripravených pre akýkoľvek moderný video prehrávač.
Podporuje viacnásobné rozlíšenia videa, viaceré úrovne bitovej rýchlosti pre audio a zvláda videá s niekoľkými audio stopami — vrátane rôznych jazykov alebo komentárov. Služba pracuje súčasne pre viaceré projekty a upravuje výstupy do samostatných priečinkov na S3 podľa projektu alebo vydavateľa.
Cieľ: Vybudovať plne automatizovanú službu, ktorá konvertuje akýkoľvek video alebo audio súbor do formátu HLS bez manuálneho zásahu - pracujúc cez viaceré projekty, zvládajúcu rôzne typy obsahu a škálujúcu 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 — akýkoľvek biznis, ktorý potrebuje doručiť 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 pollingom a správou viditeľnosti, mediálne transkódovanie a analýza streamov pomocou FFmpeg & FFprobe, orchestrácia Kubernetes jobov s dočasnými úložiskami a pravidlami pre príslušnosť na uzol, paralelný upload na S3 s čistením pred uploadom.
Riešenia
Multi-resolution HLS video — 1080p, 720p, 480p, 360p, 240p s adaptívnou bitovou rýchlosťou, multi-bitrate audio HLS — 32, 64, 96, 128, 192 kbps pre každú audio stopu, automatická detekcia všetkých audio streamov s metadátami jazyka, náhľady na 2-sekundovej značke, nízkorozlišovací 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 chvíle, keď súbor pristane na S3, až po finálny HLS výstup pripravený na prehrávanie. Každý krok hladko prechádza do ďalšieho s zabudovanými ochrannými mechanizmami proti zlyhaniam, duplikátom a súťaženiu o zdroje. Nižšie je popísané, ako systém posúva súbor cez celý konverzný cyklus.
Polling fronty
Manažér jobov beží na Kubernetes a dotazuje sa fronty 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 nového jobu manažér skontroluje existujúci Kubernetes job pre rovnaký súbor. Ak ho nájde, správa sa s oneskorením znovu vloží do fronty, aby sa zabránilo dvojitému spracovaniu.
Vytvorenie Kubernetes jobu
Nový pod je vytvorený z šablóny s správnymi limitmi zdrojov, pravidlami príslušnosti na ARM-based inštancie a dočasnými úložiskami pre dočasné súbory, vstup, výstup a logy.
Konverzia videa a audia
FFmpeg konvertuje video do piatich HLS rozlíšení (1080p→240p) so 4-sekundovými segmentmi. Každá audio stopa je detekovaná a konvertovaná do piatich úrovní bitovej rýchlosti — 32 až 192 kbps.
Generovanie hlavného playlistu
Jeden hlavný m3u8 súbor odkazuje na všetky video rozlíšenia a audio stopy s metadátami jazyka — čo umožňuje adaptívne streamovanie a prepínanie jazykov v akomkoľvek modernom prehrávači.
Nahrávanie, čistenie a autoskalovanie
Všetky súbory sa nahrávajú paralelne na S3 pomocou 500-vláknového poolu. Staré HLS segmenty sa vyčistia pred pristátím novej sady. Autoskalér š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 podľa rýchlosti pripojenia.
Viacstopové audio s jazykovými značkami — Detekuje a prevádza všetky zvukové stopy, vrátane komentárov a popisov, pričom zachováva metadáta jazyka.
Automatická detekcia kodekov — Používa akceleráciu NVIDIA / Intel / AMD alebo softvérový záložný režim, ak nie je k dispozícii GPU.
Autoskalovanie so žiadnymi nákladmi v nečinnosti — EC2 uzly sa zmenš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á svoju vlastnú výstupnú cestu v S3. Podporuje štruktúry zložiek založené na vydavateľovi aj sérii.
Výsledky v číslach
1080p
Päť úrovní adaptívneho bitratu od 240p pri 300 kbps až po plné HD 1080p pri 5000 kbps — prehrávač automaticky prepína kvalitu podľa rýchlosti pripojenia.
500x
Stovky výstupných súborov — segmenty, playlisty, náhľady, preview — sa nahrávajú do S3 súčasne cez vlákna, čím sa minimalizuje čas dodania.
4sek
4-sekundové segmenty HLS vyvažujú rýchlosť adaptívneho prepínania s efektívnosťou bufferovania — 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) po 192 kbps (LC-AAC) s normalizáciou hlasitosti.