Mediakonvertteripalvelu
Tapauskatsaus
Tämä on pilvipohjainen mediakonversiopalvelu, joka ottaa video- ja äänitiedostot ja muuntaa ne HLS-suoratoistomuotoon adaptiivisella bittinopeustueella. Järjestelmä kuuntelee SQS-jonoa uusien tiedostojen varalta, käynnistää Kubernetes-tehtävän jokaiselle tiedostolle ja tuottaa täydellisen sarjan m3u8-soittolistoja ja .ts-segmenttejä valmiina mille tahansa nykyaikaiselle videotoistimelle.
Se tukee monia videoresoluutioita, useita ääniraidan bittinopeustasoja ja käsittelee videoita, joissa on useita ääniraitoja – mukaan lukien eri kielet tai selostukset. Palvelu toimii useille projekteille samanaikaisesti ja järjestää tulosteet erillisiin kansioihin S3:ssa projektin tai julkaisijan mukaan.
Tavoite: Rakentaa täysin automatisoitu palvelu, joka muuntaa minkä tahansa video- tai äänitiedoston HLS-muotoon ilman manuaalista puuttumista – toimien useissa projekteissa, käsitellen monenlaista sisältöä ja skaalaantuen nollaan ollessaan käyttämättömänä.
Keskeiset projektitiedot
Toimialat
Media & viihde, videon suoratoistoalustat, OTT- ja lähetyspalvelut, digitaalinen julkaiseminen, sisällönjakeluverkostot – kaikki yritykset, jotka tarvitsevat toimittaa video- tai äänisisältöä käyttäjille eri laitteilla ja vaihtelevissa verkko-olosuhteissa.
Palvelut
SQS-jonon käsittely pitkällä pollauksella ja näkyvyysajanhallinnalla, FFmpeg & FFprobe -median koodaus ja virtausanalysi, Kubernetes-tehtävien orkestrointi tilapäisillä volyymeilla ja solmun taipuvuudella, rinnakkainen S3-tallennusputki esipuhdistuksella.
Ratkaisut
Moniresoluutioinen HLS-video – 1080p, 720p, 480p, 360p, 240p adaptiivisella bittinopeudella, monibittinopeuksinen HLS-ääni – 32, 64, 96, 128, 192 kbps-tasot per ääniraita, kaikkien äänivirtojen automaattinen tunnistus kielitietoineen, kohokuvat 2 sekunnin kohdalla, matalan resoluution 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, aina valmiiksi HLS-tulosteeksi ja toistettavaksi asti. Jokainen vaihe siirtyy siististi seuraavaan, sisäänrakennetuilla varotoimilla epäonnistumisia, kaksoiskappaleita ja resurssikilpailua vastaan. Alla on kuvaus siitä, miten järjestelmä käsittelee tiedoston koko konversiokierroksen ajan.
Jonon kysely
Tehtävien hallinta toimii Kubernetesissä ja kyselee SQS-jonoa pitkällä pollauksella. Viestin saapuessa se jäsentää S3-korin ja objektin avaimen löytääkseen lähdetiedoston.
Kaksoiskappaleiden esto
Ennen uuden tehtävän luontia hallinnoija tarkistaa, onko Kubernetesissä jo olemassa tehtävä samalle tiedostolle. Jos löytyy, viesti laitetaan viiveellä uudelleen jonoon kaksinkertaisen käsittelyn estämiseksi.
Kubernetes-tehtävän luonti
Uusi podi luodaan mallipohjasta oikeilla resurssirajoilla, ARM-pohjaisten instanssien node affinityllä ja tilapäisillä volyymeilla väliaikaisille tiedostoille, syötteelle, tulosteelle ja lokeille.
Video- ja äänimuunnos
FFmpeg muuntaa videon viiteen HLS-resoluutioon (1080p→240p) 4 sekunnin segmentteihin. Kukin ääniraita havaitaan ja muunnetaan viiteen bittinopeustasoon – 32:sta 192 kbps:iin.
Pääsoittolistan luonti
Yksi m3u8-pääsoittolista viittaa kaikkiin videoresoluutioihin ja ääniraitoihin kielitiedon kera – mahdollistaen adaptiivisen suoratoiston ja kielivalinnat missä tahansa nykyaikaisessa toistimessa.
Lataus, siivous ja automaattinen skaalaus
Kaikki tiedostot ladataan S3:een rinnakkain 500-säikeisessä poolissa. Vanhoja HLS-segmenttejä siivotaan ennen uusien saapumista. Automaattinen skaalain pudottaa solmut nollaan, kun jono tyhjenee.
Ratkaisut
Ratkaisun keskeiset ominaisuudet
Adaptiivinen bittinopeusvideo - 5 tasoa —240p (300 kbps) → 1080p (5000 kbps) yhdessä soittolistassa. Automaattinen laadunvalinta yhteysnopeuden perusteella.
Moniraitainen ääni kielitarroilla — Havaitsee ja muuntaa kaikki ääniraidat, mukaan lukien selostus ja kuvaukset, säilyttäen kielitiedot.
Automaattinen koodekin tunnistus — Käyttää NVIDIA:n / Intelin / AMD:n kiihdytystä tai ohjelmiston vararatkaisua, jos GPU:ta ei ole.
Nolla tyhjäkäyntikustannus automaattinen skaalaus — EC2-solmut skaalautuvat nollaan, kun jono on tyhjä. Aktiiviset tehtävät suojataan ennenaikaiselta päättymiseltä.
Moniprojektin S3-eristys — Jokaisella projektilla on oma S3-lähtöpolku. Tukee sekä julkaisijan että sarjojen mukaista kansiorakennetta.
Tulokset numeroina
1080p
Viisi adaptiivista bittinopeustasoa 240p:n 300 kbps:stä täyteen HD 1080p 5000 kbps:ään — soitin vaihtaa laatua automaattisesti yhteysnopeuden mukaan.
500x
Satoja lähtötiedostoja — segmenttejä, soittolistoja, pikkukuvia, esikatseluita — ladataan S3:een samanaikaisesti ketjupoolin kautta, mikä pitää toimitusajan minimissä.
4sek
4 sekunnin pituiset HLS-segmentit tasapainottavat adaptiivisen vaihdon nopeuden ja puskurin tehokkuuden — soitin reagoi verkkovaihteluihin yksittäisen segmentin sisällä.
5x
Jokainen ääniraita — mukaan lukien selostus ja kuvaukset — saa jopa viisi laatutasoa 32 kbps:stä (HE-AAC) 192 kbps:ään (LC-AAC) äänenvoimakkuuden normalisoinnilla.