Služba převodníku médií
Přehled případu
Jedná se o cloudovou službu pro převod médií, která přijímá video a audio soubory a převádí je do formátu HLS streamování s podporou adaptivního bitrate. Systém naslouchá frontě SQS na nové soubory, spouští práci v Kubernetes pro každý z nich a vytváří kompletní sadu playlistů m3u8 a segmentů .ts připravených pro jakýkoli moderní video přehrávač.
Podporuje více rozlišení videa, různá bitrate audio stop a zpracovává videa s několika audio stopami – včetně různých jazyků nebo komentářů. Služba pracuje pro více projektů současně 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řevádí jakýkoli video nebo audio soubor do formátu HLS bez manuálního zásahu – fungující napříč více projekty, zvládající různorodé typy obsahu a škálující na nulu při nečinnosti.
Klíčové informace o projektu
Průmysly
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 – každý podnik, který potřebuje doručovat video nebo audio obsah koncovým uživatelům na různých zařízeních a za různých síťových podmínek.
Služby
Zpracování front SQS s dlouhým dotazováním a správou timeoutů viditelnosti, mediální transkódování a analýza streamů pomocí FFmpeg a FFprobe, orchestraci úloh Kubernetes s efemérními volume a pravidly pro přiřazení uzlů, paralelní nahrávání na S3 s předchozím úklidem.
Řešení
Více rozlišení HLS videa – 1080p, 720p, 480p, 360p, 240p s adaptivním bitrate, HLS multi-bitrate audio – úrovně 32, 64, 96, 128, 192 kbps pro každou audio stopu, automatické zjištění všech audio streamů s jazykovými metadaty, náhledy na 2 sekundě, nízkorozlišovací MP4 náhled, kopie MP3 a WAV.
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
Proces
Celý proces běží bez zásahu člověka – od okamžiku, kdy soubor přistane na S3, až po finální HLS výstup připravený k přehrávání. Každý krok hladce předává úlohu dalšímu s vestavěnými ochranami proti selháním, duplicitám a konfliktům o zdroje. Níže je popsáno, jak systém přesouvá soubor přes celý konverzní cyklus.
Dotazování fronty
Správce úloh běží na Kubernetes a dlouze dotazuje frontu SQS. Když přijde zpráva, analyzuje bucket a klíč objektu S3, aby identifikoval zdrojový soubor.
Prevence duplicit
Před vytvořením nové úlohy správce kontroluje existující Kubernetes úlohu pro stejný soubor. Pokud je nalezena, zpráva se znovu zařadí s prodlevou, aby se zabránilo dvojímu zpracování.
Vytvoření úlohy Kubernetes
Nový pod je vytvořen z šablony s správnými limity zdrojů, pravidly node affinity pro instance ARM a efemérními volume pro dočasné soubory, vstup, výstup a logy.
Převod videa a audia
FFmpeg převádí video do pěti HLS rozlišení (1080p→240p) se segmenty o délce 4 sekund. Každá audio stopa je detekována a převedena do pěti úrovní bitrate – od 32 do 192 kbps.
Generování hlavního playlistu
Jeden soubor m3u8 hlavního playlistu odkazuje na všechna video rozlišení a audio stopy s jazykovými metadaty – umožňující adaptivní streamování a přepínání jazyků v jakémkoli moderním přehrávači.
Nahrávání, úklid a autoskalování
Všechny soubory se nahrávají na S3 paralelně přes bazén 500 vláken. Staré HLS segmenty se před nahráním nových vyčistí. Autoscaler škáluje uzly na nulu, jakmile je fronta prázdná.
Řešení
Klíčové vlastnosti řešení
Adaptivní video s bitrate - 5 úrovní —240p (300 kbps) → 1080p (5000 kbps) v jednom playlistu. Automatický výběr kvality podle rychlosti připojení.
Audio s více stopami a jazykovými značkami — Detekuje a převádí všechny zvukové stopy, včetně komentářů a popisů, přičemž zachovává metadata jazyka.
Automatická detekce kodeku — Používá akceleraci NVIDIA / Intel / AMD, nebo softwarový záložní režim, pokud není k dispozici GPU.
Autoskalování s nulovými náklady v klidu — EC2 uzly se sníží na nulu, když je fronta prázdná. Aktivní úlohy jsou chráněny před předčasným ukončením.
Izolace více projektů v S3 — Každý projekt má vlastní výstupní cestu v S3. Podporuje složkové struktury založené jak na vydavateli, tak na sérii.
Výsledky v číslech
1080p
Pět úrovní adaptivního datového toku 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í.
500x
Stovky výstupních souborů — segmenty, playlisty, miniatury, náhledy — jsou nahrávány na S3 současně pomocí poolu vláken, což minimalizuje dobu dodání.
4sek
4sekundové segmenty HLS vyvažují rychlost adaptivního přepínání s efektivitou načítání — přehrávač reaguje na změny v síti během jednoho segmentu.
5x
Každá zvuková stopa — včetně komentářů a popisu — má až pět úrovní kvality od 32 kbps (HE-AAC) do 192 kbps (LC-AAC) s normalizací hlasitosti.