Media Converter -palvelu
Tapausesittely
Tämä on pilvipohjainen mediamuunnospalvelu, joka ottaa vastaan video- ja äänitiedostoja ja muuntaa ne HLS-suoratoistoformaatiksi adaptiivisen bittinopeuden tuella. Järjestelmä kuuntelee SQS-jonoa uusille tiedostoille, käynnistää Kubernetes-tehtävän kutakin tiedostoa kohden ja tuottaa täydellisen joukon m3u8-soittolistoja ja .ts-segmenttejä, jotka ovat valmiita mille tahansa nykyaikaiselle videotoistimelle.
Se tukee useita videotarkkuuksia, useita äänen bittinopeusaluetta ja käsittelee videoita, joissa on useita ääniraitoja — mukaan lukien eri kielet tai kommentaarit. Palvelu toimii useille projekteille samanaikaisesti ja järjestää tulosteet erillisiin kansioihin S3:lla projektin tai julkaisijan perusteella.
Tavoite: Rakentaa täysin automatisoitu palvelu, joka muuntaa minkä tahansa video- tai äänitiedoston HLS-muotoon ilman manuaalista puuttumista — toimii useiden projektien yli, käsittelee erilaisia sisältötyyppejä ja skaalautuu nollaan, kun järjestelmä on käyttämättömänä.
Keskeiset projektitiedot
Toimialat
Media ja viihde, videon suoratoistoalustat, OTT- ja lähetyspalvelut, digitaalinen julkaisu, sisällönjakeluverkostot — kaikki yritykset, jotka tarvitsevat video- tai äänisisällön toimittamista loppukäyttäjille erilaisilla laitteilla ja vaihtelevissa verkkoyhteystilanteissa.
Palvelut
SQS-jonon käsittely pitkällä kyselyllä ja näkyvyysajan hallinnalla, FFmpeg- ja FFprobe-mediamuunnos ja suoratoiston analysointi, Kubernetes-tehtävien orkestrointi tilapäisillä volyymeilla ja solmuaffiniteetillä, rinnakkainen S3-latausputki esipuhdistuksella.
Ratkaisut
Moniresoluutioinen HLS-video — 1080p, 720p, 480p, 360p, 240p adaptiivisella bittinopeudella, monibittinopeuksinen ääni HLS — 32, 64, 96, 128, 192 kbps tasot ääniraitaa kohden, automaattinen kaikkien äänivirtojen tunnistus kielitiedoilla, pikkukuvat 2 sekunnin kohdalla, matalan tarkkuuden MP4-esikatselu, MP3- ja WAV-kopiot.
Teknologiat
AWS SQS, S3, Kubernetes, FFmpeg, FFprobe, H.264, AAC/HE-AAC, HLS/m3u8, NVIDIA NVENC, Intel Quick Sync, EC2 Auto Scaling, Docker, Helm
Haasteet
Prosessi
Koko putki toimii ilman ihmisen väliintuloa — siitä hetkestä, kun tiedosto saapuu S3:een, siihen asti kun lopullinen HLS-tulos on valmis toistettavaksi. Jokainen vaihe siirtyy sujuvasti seuraavaan, ja mukana on vian- ja kopionhallinnan sekä resurssiriitojen suojaus. Alla on kuvaus siitä, miten järjestelmä käsittelee tiedoston koko muunnossyklin ajan.
Jonon kysely
Työjohtaja pyörii Kubernetesissa ja kysyy SQS-jonoa pitkällä kyselyllä. Viestin saapuessa se jäsentää S3:n ämpärin ja objektin avaimen tunnistaakseen lähdetiedoston.
Kaksoiskäsittelyn esto
Ennen uuden tehtävän luontia johtaja tarkistaa, onko olemassa Kubernetes-tehtävä samalle tiedostolle. Jos löytyy, viesti laitetaan uudelleen jonoon viiveellä kaksoiskäsittelyn estämiseksi.
Kubernetes-tehtävän luonti
Uusi podi luodaan mallipohjasta oikeilla resurssirajoilla, ARM-pohjaisille instansseille solmuaffiniteetti, ja tilapäisillä volyymeilla väliaikaisia tiedostoja, syötettä, tulosteita ja lokeja varten.
Video- ja äänimuunnos
FFmpeg muuntaa videon viiteen HLS-resoluutioon (1080p→240p) 4 sekunnin segmenteillä. Jokainen ääniraita tunnistetaan ja muunnetaan viiteen bittinopeustasoon — 32–192 kbps.
Master-soittolistan luonti
Yksi m3u8-master-tiedosto viittaa kaikkiin videotarkkuuksiin ja ääniraitoihin kielitietoineen — mahdollistaen adaptiivisen suoratoiston ja kielenvaihdon kaikissa nykyaikaisissa soittimissa.
Lataus, siivous ja automaattinen skaalaus
Kaikki tiedostot ladataan S3:een rinnakkain 500 säikeen poolilla. Vanhoja HLS-segmenttejä siivotaan ennen uusien saapumista. Automaattinen skaalaus pienentää solmujen määrän nollaan heti kun jono tyhjenee.
Ratkaisut
Ratkaisun keskeiset ominaisuudet
Adaptiivinen bittinopeusvideo - 5 tasoa — 240p (300 kbps) → 1080p (5000 kbps) yhdellä soittolistalla. Automaattinen laadun valinta yhteysnopeuden perusteella.
Moniraidallinen ääni kielitunnisteilla — Havaitsee ja muuntaa kaikki ääniraidat, mukaan lukien selostukset ja kuvailut, säilyttäen kielitiedot.
Automaattinen koodekin tunnistus — Käyttää NVIDIA / Intel / AMD -kiihdytystä tai ohjelmistopohjaista vararatkaisua, jos GPU:ta ei ole.
Nollakustanteinen automaattinen skaalaus — EC2-solmut skaalaavat alas nollaan, kun jono on tyhjä. Aktiiviset tehtävät on suojattu ennenaikaiselta keskeytykseltä.
Moniprojektinen S3-eristys — Jokaisella projektilla on oma S3-lähtöpolkunsa. Tukee sekä julkaisijan että sarjan pohjaisia kansiorakenteita.
Tulokset lukuina
1080p
Viisi adaptiivista bittinopeustasoa 240p:stä 300 kbps:ään aina täyteen HD 1080p:hen 5000 kbps:ssä — soitin vaihtaa laadun automaattisesti yhteysnopeuden mukaan.
500x
Satoja lähtötiedostoja — segmenttejä, soittolistoja, pikkukuvia, esikatseluja — ladataan samanaikaisesti S3:een säikeiden hallintapoolin kautta, jolloin toimitusaika pysyy minimissä.
4 sek
4 sekunnin HLS-segmentit tasapainottavat adaptiivisen vaihtonopeuden ja puskurointitehokkuuden — soitin reagoi verkkomuutoksiin yhdellä segmentin rajalla.
5x
Jokainen ääniraita — mukaan lukien selostus ja kuvailu — saa jopa viisi laatutasoa 32 kbps (HE-AAC) – 192 kbps (LC-AAC) ja äänenvoimakkuuden normalisoinnin.