Meediumikonverteerimise teenus
Juhtumi ülevaade
See on pilvepõhine meediumikonverteerimise teenus, mis võtab vastu video- ja helifailid ning teisendab need HLS voogedastusvormingusse adaptatiivse bitikiiruse toega. Süsteem kuulab SQS järjekorda uute failide jaoks, käivitab iga faili jaoks Kubernetes ülesanded ning genereerib täieliku m3u8 esitusloendite ja .ts segmentide komplekti, mis on valmis esitamiseks mis tahes kaasaegses videopleieris.
Toetab mitut videosagedust, mitut heliriba bitikiiruse taset ning töötleb videoid mitme helirajaga – kaasa arvatud erinevad keeled või kommentaarid. Teenus töötab samaaegselt mitme projektiga ja organiseerib väljundandmed eraldi kaustadesse S3-s vastavalt projektile või väljaandjale.
Eesmärk: Luuakse täielikult automatiseeritud teenus, mis teisendab mistahes video- või helifaili HLS vormingusse ilma käsitsi sekkumiseta — töötades mitme projekti raames, töötledes erinevat tüüpi sisu ja skaleerudes nullini tegevusetuse korral.
Projekti põhiteave
Tööstusharud
Meedia ja meelelahutus, voogedastusplatvormid, OTT ja keeleteenused, digitaalne kirjastamine, sisujagamise võrgustikud – kõik ettevõtted, mis vajavad video- või helisisu kohaletoimetamist lõppkasutajatele erinevates seadmetes ja võrgu tingimustes.
Teenused
SQS järjekorra töötlemine pika päringu ja nähtavustimeri haldusega, meedia transkodeerimine ja FFmpeg ning FFprobe voo analüüs, Kubernetes tööde orkestreerimine efemeersete mahtudega ja sõlmede sobivuste haldamisega, paralleelne failide üleslaadimine S3-sse eelneva puhastusega.
Lahendused
HLS video mitme eraldusvõimega — 1080p, 720p, 480p, 360p, 240p adaptiivse bitikiirusega, HLS heli mitme bitikiirusega — 32, 64, 96, 128, 192 kbps iga heliriba kohta, automaatne kõigi helivoolude tuvastamine keelemetaandmetega, pisipildid 2. sekundil, madala eraldusvõimega MP4 eelvaade, MP3 ja WAV koopiad.
Tehnoloogiad
AWS SQS, S3, Kubernetes, FFmpeg, FFprobe, H.264, AAC/HE-AAC, HLS/m3u8, NVIDIA NVENC, Intel Quick Sync, EC2 Auto Scaling, Docker, Helm
The challenges
Protsess
Terve ahel töötab inimese sekkumiseta — alates faili saabumisest S3-sse kuni valmisse HLS väljundini esitamiseks. Iga samm annab sujuvalt üle kontrolli järgmisele, sisaldades sisseehitatud kaitseid rikete, duplikaatide ja ressursikonkurentsi vastu. Allpool kirjeldatakse, kuidas süsteem viib faili läbi täieliku konverteerimistsükli.
Järjekorra päring
Tööde haldur käivitub Kuberneteses ja pärib SQS järjekorda pika päringuga. Kui saabub sõnum, analüüsib ta S3 ämbrit ja objekti võtit, et määrata lähtefail.
Duplikaatide vältimine
Enne uue ülesande loomist kontrollib haldur, kas samale failile on juba Kubernetesi ülesanne olemas. Kui leidub, pannakse sõnum viivitusega uuesti järjekorda, et vältida topelttöötlust.
Kubernetesi ülesande loomine
Uus pod luuakse mallist õige ressursside piirangute, ARM baasil sõlmede sobivuse ja efemeersete mahtudega ajutiste failide, sisendi, väljundi ja logide jaoks.
Video ja heli konverteerimine
FFmpeg konverteerib video viide HLS eraldusvõimesse (1080p→240p) 4-sekundiliste segmentidega. Iga heliriba tuvastatakse ja konverteeritakse viide bitikiiruse tasemele – 32 kuni 192 kbps.
Põhiesitusloendi genereerimine
Üks m3u8 master fail viitab kõigile video eraldusvõimetele ja keelemetaandmetega heliradadele — võimaldades adaptiivset voogesituse esitamist ja keele vahetust mis tahes kaasaegses mängijas.
Üleslaadimine, puhastus ja automaatne skaleerimine
Kõik failid laaditakse samaaegselt S3-sse läbi 500 lõimega basseini. Vana HLS segment koristatakse enne uue komplekti ilmumist. Automaatne skaleerija vähendab sõlmed nulli, kui järjekord on tühi.
Lahendused
Lahenduse põhijooned
Adaptiivne video muutuvate bitikiirustega - 5 taset — 240p (300 kbps) → 1080p (5000 kbps) ühes esitusloendis. Kvaliteedi automaatne valik ühenduse kiiruse alusel.
Heli mitme keelemärgistusega rajaga — Tuvastab ja konverteerib kõik helirajad, sh kommentaarid ja kirjeldused, säilitades keele metaandmed.
Koodide automaatne tuvastamine — Kasutab NVIDIA / Intel / AMD riistvarakiirendust või tarkvaralist taastamist, kui GPU puudub.
Automaatne skaleerimine nullkulu ooterežiimis — EC2 sõlmed vähendavad mastaabi nullini, kui järjekord on tühi. Aktiivsed ülesanded on kaitstud enneaegse lõpetamise eest.
Mitme projekti S3 isolatsioon — Igal projektil on oma väljunditee S3-sse. Toetab kaustastruktuure nii väljaandja kui seeria jaoks.
Tulemused numbrites
1080p
Viis adaptiivse kiiruse taset alates 240p juures 300 kbps kuni täis-HD 1080p juures 5000 kbps — mängija lülitab kvaliteedi automaatselt ühenduse kiiruse järgi.
500x
Sajad väljundfailid — segmentide, esitusloendite, pisipiltide, eelvaadete segmendid — laaditakse korraga S3-sse vooressursside kaudu, minimeerides tarnimise aega.
4sek
4-sekundilised HLS segmendid tasakaalustavad adaptiivse lülitamise kiirust ja puhvrimise efektiivsust — mängija reageerib võrgu muutustele ühe segmendi jooksul.
5x
Iga audiotrack — kaasa arvatud kommentaarid ja kirjeldused — omab kuni viit kvaliteeditaset alates 32 kbps (HE-AAC) kuni 192 kbps (LC-AAC) helitugevuse normaliseerimisega.