Meedia konverteerimise teenus
Juhtumi ülevaade
See on pilvepõhine meedia konverteerimise teenus, mis võtab video- ja helifailid ning muudab need HLS voogedastusvorminguks adaptatiivse bitikiiruse toega. Süsteem kuulab SQS järjekorda uute failide jaoks, käivitab igaühe jaoks Kubernetes töö, ja toodab täiskomplekti m3u8 esitusloendeid ning .ts segmentide komplekti, mis on valmis igaks moodsaks videopleieriks.
See toetab mitut videotugevust, mitut helikvaliteedi taset ja haldab videoid, millel on mitu helirada — sh erinevad keeled või kommentaarid. Teenus töötab samaaegselt mitme projektiga ja organiseerib väljundid S3 erinevatesse kaustadesse projekti või väljaandja järgi.
Eesmärk: Luuakse täielikult automatiseeritud teenus, mis konverteerib iga video- või helifaili HLS vormingusse ilma käsitsi sekkumiseta — töötab mitmes projektis, haldab erinevaid sisutüüpe ja skaleerub nulli, kui pole tegevust.
Peamised projekti andmed
Tööstusharud
Meedia ja meelelahutus, videovoogedastuse platvormid, OTT ja ringhäälinguteenused, digitaalne väljaandmine, sisutarnejõudluse võrgud — iga ettevõte, kellel on vaja tarbida video- või helisisu erinevatel seadmetel ja erinevate võrguoludega.
Teenused
SQS järjekorra töötlemine pikkade päringutega ja nähtavuse ajapiirangute haldamine, FFmpeg & FFprobe meedia transkodeerimine ja voo analüüs, Kubernetes töökorraldus efemeersete mahtudega ja sõlme afiniidsuse reeglitega, paralleelne S3 üleslaadimise torujuhe eelneva puhastusega.
Lahendused
Mitmetugi HLS video—1080p, 720p, 480p, 360p, 240p adaptatiivse bitikiirusega, mitmetasandiline heliline HLS—32, 64, 96, 128, 192 kbps igal heliradal, automaatne kõigi helivoogude tuvastus keelemetaandmetega, pisipildid 2-sekundilisel hetkel, 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 automaatskaleerimine, Docker, Helm
Väljakutsed
Protsess
Kogu torujuhe töötab ilma inimsekkumiseta — alates hetkest, mil fail maandub S3-le, kuni lõpliku HLS väljundi valmis esitamiseks. Iga samm annab korralikult järgmisele üle, sisseehitatud veakaitsega ebaõnnestumiste, duplikaatide ja ressursside jagamise vastu. Allpool on kirjas, kuidas süsteem liigutab faili täieliku konverteerimistsükli läbi.
Järjekorra pärimine
Töö haldur töötab Kuberneteses ja pärib SQS järjekorda pika pärimisega. Sõnumi saabudes analüüsib ta S3 ämbri ning objekti võtme, et määrata lähtefail.
Duplikaadi vältimine
Enne uue töö loomist kontrollib haldur, kas Kuberneteses on juba tegemisel sarnane töö. Kui on, pannakse sõnum uuesti järjekorda viivitusega, et vältida topelt töötlemist.
Kubernetes töö loomine
Uus pod luuakse mallist, kus on õige ressursipiirang, ARM-põhiste sõlmede afiniidsus ning efemeersed mahud ajutiste failide, sisendi, väljundi ja logide jaoks.
Video ja heli konverteerimine
FFmpeg konverteerib video viieks HLS resolutsiooniks (1080p→240p) 4-sekundiliste segmentidega. Iga helirada tuvastatakse ja konverteeritakse viide bitikiiruse tasemesse — 32 kuni 192 kbps.
Põhiesitusloendi genereerimine
Üks m3u8 põhifail viitab kõigile video resolutsioonidele ja heliradadele keelemetaandmetega — võimaldades adaptatiivset voogesitust ja keelevahetust igas moodsas pleieris.
Üleslaadimine, puhastus ja automaatne skaleerimine
Kõik failid laaditakse S3-le paralleelselt 500-niidilise puulõngaga. Vanu HLS segmente puhastatakse enne uue kogumi saabumist. Automaatne skaleerija vähendab sõlmed nullini, kui järjekord on tühi.
Lahendused
Lahenduse peamised omadused
Adaptatiivne bitikiirusega video - 5 taset —240p (300 kbps) → 1080p (5000 kbps) ühes esitusloendis. Automaatne kvaliteedi valik ühenduse kiiruse alusel.
Mitmeraadiline heli keelemärkidega — Tuvastab ja konverteerib kõik helirajad, sh kommentaarid ja kirjeldused, säilitades keelemetaandmed.
Automaatne koodeki tuvastus — Kasutab NVIDIA / Intel / AMD kiirendust või tarkvaralist tagavaralahendust, kui GPU puudub.
Null tühikäigukulu automaatne skaala — EC2 sõlmed skaleeruvad nulli, kui järjekord on tühi. Aktiivsed tööd on kaitstud enneaegse lõpetamise eest.
Mitme projekti S3 isoleerimine — Iga projekt omab oma S3 väljundteed. Toetab nii kirjastaja- kui ka sarja-põhiseid kaustastruktuure.
Tulemused numbrites
1080p
Viis adaptiivse bitikiirusega kihti alates 240p 300 kbps juurest kuni täis-HD 1080p 5000 kbps-ni — mängija valib kvaliteedi automaatselt vastavalt ühenduse kiirusele.
500x
Sajad väljundfailid — segmentid, esitusloendid, pisipildid, eelvaated — laaditakse samaaegselt S3-sse lõimepõhise töötlusega, hoides kohaletoimetamise aja minimaalsena.
4sek
4-sekundilised HLS segmentide kestused tasakaalustavad adaptiivse vahetuse kiirust ja puhverdamise efektiivsust — mängija reageerib võrgu muutustele ühe segmendi piires.
5x
Iga audiorada — kaasa arvatud kommentaar ja kirjeldus — saab kuni viis kvaliteeditaset vahemikus 32 kbps (HE-AAC) kuni 192 kbps (LC-AAC) koos helitugevuse normaliseerimisega.