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ä.

Image

Keskeiset projektitiedot

Toimialat

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

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

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

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

Monia tulostusmuotoja�yhdestä syötteestä

Monia tulostusmuotoja�yhdestä syötteestä

Yhdestä videotiedostosta voi syntyä satoja tiedostoja – viisi videoresoluutiota, viisi ääniraidan bittinopeustasoa per ääniraita, lisäksi kohokuvat ja esikatselut. Kaikki tämä piti järjestää siististi ja ladata nopeasti.

Useita äänivirtoja per videotiedosto

Useita äänivirtoja per videotiedosto

Jotkut videot sisältävät useita ääniraitoja eri kielillä. Järjestelmän piti tunnistaa ne kaikki automaattisesti, muuntaa jokainen erikseen ja rakentaa mestarisoittolista, joka viittaa jokaiseen raitaan oikealla kielitunnisteella.

Jonon luotettavuus�ja uudelleenyrityksen logiikka

Jonon luotettavuus�ja uudelleenyrityksen logiikka

SQS:n kanssa täytyy käsitellä kaksoiskappaleita, näkyvyysaikarajoituksia ja epäonnistuneita tehtäviä oikein. Jos tehtävä epäonnistuu, viestin tulee palautua jonoon uudelleenyritystä varten. Jos sama tiedosto joutuu jonoon kahdesti, emme saa käsitellä sitä uudestaan.

Hallinta Kubernetesissä

Hallinta Kubernetesissä

Jokainen konversiotehtävä käyttää paljon suorittimen ja muistin resursseja. Meidän piti määrittää tilapäiset volumet, solmun taipuvuussäännöt ja asianmukainen siivous, jotta tehtävät eivät kasaannu tai estä toisiaan.

Moniprojektieristys S3:ssa

Moniprojektieristys S3:ssa

Palvelu toimii useille projekteille yhtä aikaa. Jokainen tarvitsee oman tulostepolkunsa S3:ssa, ja meidän piti tukea sekä julkaisijakohtaisia että sarjakansiopohjaisia rakenneita rikkomatta mitään.

Automaattinen koodekin valinta

Automaattinen koodekin valinta

Kaikilla koneilla ei ole GPU-kiihdytystä. Järjestelmän piti tunnistaa käytettävissä olevat koodekit – NVIDIA, Intel Quick Sync, AMD tai pelkkä ohjelmisto – ja valita paras automaattisesti.

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

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

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

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

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

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

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.


Image

Tulokset numeroina

Videon laatutaso

1080p

Viisi adaptiivista bittinopeustasoa 240p:n 300 kbps:stä täyteen HD 1080p 5000 kbps:ään — soitin vaihtaa laatua automaattisesti yhteysnopeuden mukaan.

Samoissa yhteyksissä tapahtuva samanaikainen lataus

500x

Satoja lähtötiedostoja — segmenttejä, soittolistoja, pikkukuvia, esikatseluita — ladataan S3:een samanaikaisesti ketjupoolin kautta, mikä pitää toimitusajan minimissä.

HLS-segmenttien kesto

4sek

4 sekunnin pituiset HLS-segmentit tasapainottavat adaptiivisen vaihdon nopeuden ja puskurin tehokkuuden — soitin reagoi verkkovaihteluihin yksittäisen segmentin sisällä.

Äänen bittinopeustasot per raita

5x

Jokainen ääniraita — mukaan lukien selostus ja kuvaukset — saa jopa viisi laatutasoa 32 kbps:stä (HE-AAC) 192 kbps:ään (LC-AAC) äänenvoimakkuuden normalisoinnilla.

Rakenna skaalautuva mediaputki alustallesi!

Hanki täysin automaattinen HLS-muunnosjärjestelmä, joka skaalautuu sisällön mukaan - autamme sinua löytämään optimaalisen arkkitehtuurin projektiisi.

Message not sent.
Message not sent.
×
Etkö tiedä mistä aloittaa? Autamme sinua hahmottamaan seuraavat askeleet!
Suostumus henkilötietojen käsittelyyn
×
Onko haaste? Tiimimme muuttaa sen ratkaisuksi.
Suostumus henkilötietojen käsittelyyn