Kaip pradėjo veikti vaizdo srautai internete
Kai pirmą kartą atsidarėte YouTube ir pradėjote žiūrėti vaizdo įrašą, tikriausiai nė nesusimąstėte, kokia sudėtinga technologija veikia už to paprasčiausio mygtuko „Play”. O juk dar prieš kokius 20 metų net įsivaizduoti negalėjome, kad galėsime akimirksniu paleisti bet kokį vaizdo įrašą savo telefone ar kompiuteryje be jokio laukimo.
YouTube srautų technologija – tai ne vienas konkretus dalykas, o visa sistema, kuri dirba kartu, kad jūs galėtumėte mėgautis vaizdo turiniu. Pradėkime nuo to, kad senais laikais, kai dar dominavo RealPlayer ir Windows Media Player, turėjote atsisiųsti visą failą prieš pradėdami žiūrėti. Įsivaizduokite – norite pažiūrėti 10 minučių vaizdo įrašą, o jums reikia laukti 30 minučių, kol jis atsisiųs. Absurdas, tiesa?
Viskas pasikeitė, kai atsirado srautinio perdavimo (streaming) technologija. Pagrindinė idėja paprasta – vaizdo įrašas siunčiamas jums nedideliais gabalėliais, kuriuos jūsų įrenginys iškart apdoroja ir rodo. Jums nereikia laukti, kol atsisiųs visas failas – pradedame žiūrėti beveik iš karto.
Adaptyvaus bitų srauto paslaptis
Dabar įdomiausia dalis – kaip YouTube žino, kokios kokybės vaizdo įrašą jums siųsti? Čia įsijungia technologija, vadinama adaptyviu bitų srautu (adaptive bitrate streaming arba ABR). Tai tikrai genialus išradimas.
Kai įkeliate vaizdo įrašą į YouTube, jis automatiškai konvertuojamas į daugybę skirtingų kokybių versijų – nuo 144p iki 4K ar net 8K. Kiekviena versija turi skirtingą bitų srautą, t.y. kiek duomenų per sekundę reikia perduoti. 4K vaizdo įrašui gali prireikti 20-50 Mbps (megabitų per sekundę), o 360p versijai užtenka vos 1-2 Mbps.
Jūsų naršyklėje veikia specialus grotuvas, kuris nuolat stebi jūsų interneto ryšio greitį. Jei ryšys geras – gauna aukštos kokybės vaizdo gabalėlius. Jei ryšys prastėja (pavyzdžiui, važiuojate traukiniu ir įvažiuojate į tunelį) – automatiškai pereina prie žemesnės kokybės versijos. Tai vyksta sklandžiai, dažnai net nepastebite perėjimo.
Techniškai tai veikia maždaug taip: vaizdo įrašas supjaustomas į 2-10 sekundžių trukmės segmentus. Kiekvienas segmentas egzistuoja visose kokybėse. Grotuvas nuolat sprendžia, kurios kokybės kitą segmentą parsisiųsti, remdamasis tuo, kaip greitai parsisiuntė ankstesnius.
DASH ir HLS – dvi pagrindinės technologijos
YouTube naudoja technologiją, vadinamą DASH (Dynamic Adaptive Streaming over HTTP). Tai atviras standartas, kurį palaiko dauguma šiuolaikinių įrenginių. Bet yra ir kita populiari technologija – HLS (HTTP Live Streaming), kurią sukūrė Apple.
Abi veikia panašiai, bet turi savo niuansų. DASH yra lankstesnė ir leidžia tiksliau valdyti kokybę, o HLS geriau veikia su Apple įrenginiais ir turi platesnį suderinamumą su senesniais įrenginiais. YouTube dažniausiai naudoja DASH, bet tam tikrais atvejais gali persijungti į HLS.
Įdomu tai, kad abi šios technologijos naudoja paprastą HTTP protokolą – tą patį, kuris naudojamas įprastoms interneto svetainėms. Tai reiškia, kad srautinis perdavimas gali veikti per įprastus interneto serverius, nereikia jokios specialios infrastruktūros. Tai labai supaprastino srautinio perdavimo plitimą.
Vaizdo kodavimas ir kompresija
Dabar pamąstykime apie tai, kaip vaizdo įrašas iš viso tampa skaitmeniniu failu. Čia įsijungia vaizdo kodavimo technologijos. Jei imtume nesuglaudintą vaizdo įrašą (raw video), vienos minutės 1080p vaizdo failas svertu apie 10-15 GB. Niekas negali tokių failų siųsti internetu realiu laiku!
Todėl naudojami vaizdo kodekai – algoritmai, kurie suglaudina vaizdo įrašą išlaikydami priimtiną kokybę. YouTube šiuo metu naudoja kelis kodekus:
H.264 (AVC) – seniausias ir plačiausiai palaikomas kodeka. Veikia visuose įrenginiuose, bet ne pats efektyviausias.
VP9 – Google sukurtas kodeka, kuris 30-50% efektyvesnis už H.264. Tai reiškia, kad tą pačią kokybę galite gauti su mažesniu failu.
AV1 – naujausias kodeka, dar efektyvesnis už VP9. Bet jis reikalauja daug skaičiavimo galios, todėl dar ne visi įrenginiai jį palaiko.
Kai įkeliate vaizdo įrašą, YouTube serveriai jį perkoduoja į visus šiuos formatus ir visas kokybės versijas. Tai užima nemažai laiko ir skaičiavimo resursų – štai kodėl kartais matote pranešimą “Apdorojama” po įkėlimo.
Turinio pristatymo tinklai ir serverių infrastruktūra
Dabar kyla klausimas – kaip YouTube gali aptarnauti milijardus žiūrovų visame pasaulyje? Juk negali būti vienas serveris, kuris siunčia vaizdo įrašus visiems. Atsakymas – turinio pristatymo tinklai (Content Delivery Networks arba CDN).
YouTube (kaip Google dalis) turi vieną didžiausių CDN tinklų pasaulyje. Jų serveriai išdėstyti šimtuose duomenų centrų įvairiose šalyse. Kai žiūrite vaizdo įrašą, jis siunčiamas ne iš JAV (kur yra YouTube būstinė), o iš artimiausio jums serverio – galbūt net jūsų paties mieste.
Kaip tai veikia? Populiarūs vaizdo įrašai automatiškai kopijuojami į daugelį serverių visame pasaulyje. Kai prašote vaizdo įrašo, specialus sistema (vadinama load balancer) nusprendžia, kuris serveris jums artimiausias ir mažiausiai apkrautas, ir nukreipia jūsų užklausą ten.
Dar įdomesnis dalykas – YouTube serveriai dažnai yra tiesiogiai pas jūsų interneto paslaugų tiekėją (ISP). Google turi programą “Google Global Cache”, kuri leidžia ISP įsidiegti YouTube serverius savo tinkle. Tai reiškia, kad populiarūs vaizdo įrašai gali būti saugomi tiesiog jūsų ISP serveriuose, todėl juos gaunate žaibiškai ir ISP sutaupo tarptinklinio srauto kaštus.
Buferizacija ir jos valdymas
Visi esame matę tą besisukantį ratą, kai vaizdo įrašas “kraunasi”. Tai vadinama buferizacija. Bet kas iš tikrųjų vyksta?
Jūsų grotuvas visada bando parsisiųsti šiek tiek daugiau vaizdo nei dabar žiūrite – tai vadinama buferiu. Paprastai grotuvas bando išlaikyti 10-30 sekundžių buferį. Tai reiškia, kad jei jūsų interneto ryšys trumpam nutrūks, vaizdo įrašas vis tiek tęsis, kol bus išnaudotas buferis.
Bet kodėl grotuvas nesisiunčia viso vaizdo įrašo iš karto? Kelios priežastys:
Pirma, daugelis žmonių nežiūri vaizdo įrašų iki galo. Jei grotuvas iš karto atsisiųstų visą vaizdo įrašą, daug duomenų būtų švaistomai.
Antra, jei nuspręsite pakeisti kokybę ar peršokti į kitą vaizdo įrašo vietą, jau parsisiųsti duomenys gali tapti nenaudingi.
Trečia, per didelis buferis gali sukelti problemų, jei jūsų interneto greitis svyruoja – grotuvas gali parsisiųsti aukštos kokybės segmentus, o paskui negalėti jų laiku gauti.
YouTube grotuvas naudoja sudėtingus algoritmus, kad nuspręstų, kiek didelis buferis turėtų būti. Jei ryšys stabilus – buferis mažesnis. Jei ryšys svyruoja – grotuvas bando sukurti didesnį buferį, kad išvengtų pertraukimų.
Tiesioginių transliacijų ypatybės
Tiesioginės transliacijos (live streaming) – tai visiškai kitas žvėris. Čia negalite iš anksto perkoduoti vaizdo įrašo į visas kokybės versijas, nes jis kuriamas realiu laiku.
Kai transliuojate tiesiogiai, jūsų įrenginys arba programa (pvz., OBS) siunčia vaizdo srautą į YouTube serverius. Šie serveriai realiu laiku perkoduoja jį į skirtingas kokybės versijas ir išsiunčia žiūrovams. Visas šis procesas turi įvykti per kelias sekundes.
Štai kodėl tiesioginėse transliacijose visada yra nedidelis vėlavimas (latency) – paprastai 10-30 sekundžių. YouTube turi “mažo vėlavimo” režimą, kuris sumažina vėlavimą iki 3-5 sekundžių, bet jis mažiau stabilus ir gali dažniau buferizuotis.
Įdomu tai, kad tiesioginių transliacijų metu YouTube naudoja specialius algoritmus, kad nustatytų optimalų vėlavimą kiekvienam žiūrovui. Jei jūsų ryšys geras – gausite srautą su mažesniu vėlavimu. Jei ryšys prastas – vėlavimas padidės, bet transliacija bus stabilesnė.
Ateities technologijos ir kas laukia toliau
Srautinio perdavimo technologijos nuolat tobulėja. Štai kelios kryptys, kuriomis judama:
AV1 kodeko plitimas – kai daugiau įrenginių pradės palaikyti AV1, galėsime žiūrėti aukštesnės kokybės vaizdo įrašus su mažesniu duomenų srautu. Tai ypač svarbu mobiliesiems įrenginiams ir regionams su lėtesniu internetu.
8K ir HDR – nors 8K dar nėra labai populiarus, technologija jau veikia. Didžiausia problema – reikalingi milžiniški duomenų srautai ir galingi įrenginiai.
Dirbtinis intelektas – AI jau dabar naudojamas optimizuoti vaizdo kokybę ir kompresijos efektyvumą. Ateityje AI galės dar geriau prognozuoti jūsų interneto ryšio svyravimus ir iš anksto prisitaikyti.
WebRTC ir ultra mažas vėlavimas – naujos technologijos leidžia sumažinti vėlavimą iki mažiau nei sekundės. Tai svarbu interaktyvioms transliacijoms ir žaidimų srautams.
Įdomu tai, kad visa ši technologija veikia sklandžiai ir nepastebimai. Jūs tiesiog spaudžiate “Play” ir žiūrite. Bet už to slypi tūkstančiai inžinierių darbo valandų, sudėtingi algoritmai ir milžiniška infrastruktūra. YouTube kasdien aptarnauja daugiau nei 2 milijardus vartotojų ir siunčia šimtus milijonų valandų vaizdo įrašų. Tai vienas įspūdingiausių technologijos pasiekimų, kurį dažnai laikome savaime suprantamu.
Kai kitą kartą žiūrėsite YouTube vaizdo įrašą, galbūt prisiminsit, kiek daug technologijos dirba, kad tas vaizdo įrašas pasiektų jūsų ekraną. Nuo adaptyvaus bitų srauto iki pasaulinių serverių tinklų – visa ši sistema dirba kartu, kad jūsų patirtis būtų kuo sklandesnė. Ir gražiausia, kad technologija tik tobulėja – ateityje galėsime mėgautis dar geresne kokybe, mažesniais vėlavimais ir patikimesniu srautiniu perdavimu.

