Netflix adaptyvaus transliavimo kokybės algoritmas

Kaip Netflix žino, kokios kokybės vaizdo jums reikia būtent dabar

Turbūt ne kartą pastebėjote, kad žiūrint filmą ar serialą Netflix platformoje, kartais vaizdas tampa šiek tiek miglotesnis, o po kelių sekundžių vėl atgauna ryškumą. Tai nėra jūsų interneto gedimas ar kompiuterio problema – tai dirba išmanusis Netflix adaptyvaus transliavimo algoritmas. Šis technologinis sprendimas yra viena iš priežasčių, kodėl Netflix tapo tokia populiaria platformos – jie sugebėjo padaryti taip, kad žmonės galėtų žiūrėti turinį beveik bet kokiomis interneto sąlygomis, nuo greitojo 5G ryšio iki lėtoko viešbučio Wi-Fi.

Esmė paprasta: vietoj to, kad transliuotų vieną fiksuotą vaizdo kokybę, Netflix nuolat stebi jūsų interneto greitį ir prisitaiko prie jo. Jei ryšys sulėtėja, sistema automatiškai sumažina vaizdo kokybę, kad filmas nenutrūktų. Kai ryšys vėl pagerėja, kokybė grįžta į normalią būseną. Visa tai vyksta fone, ir dažniausiai žiūrovas net nepastebės perėjimų.

Iš kur atsirado ši technologija

Kai Netflix 2007 metais pradėjo transliuoti turinį internetu, jie susidūrė su rimta problema. Tuo metu interneto greičiai labai skyrėsi – kai kurie žmonės turėjo greitą kabelinį internetą, kiti vis dar naudojo lėtą DSL ryšį. Jei Netflix būtų transliavęs aukštos kokybės vaizdo srautą visiems, daugelis žiūrovų matytų nuolat sustojantį, kraunantį vaizdą. Jei būtų transliavę žemos kokybės – žmonės su greitu internetu būtų nepatenkinti.

Pirmieji sprendimai buvo gana primityvūs. Sistema leisdavo žiūrovui pasirinkti kokybę rankiniu būdu – žema, vidutinė ar aukšta. Bet kas nori sustoti filmą viduryje ir keisti nustatymus? Niekas. Todėl Netflix inžinieriai pradėjo kurti adaptyvų sprendimą, kuris veiktų automatiškai.

2011 metais jie įdiegė pirmąją adaptyvaus bitų srauto (adaptive bitrate streaming) versiją. Technologija buvo paremta HTTP Live Streaming (HLS) protokolu, kurį sukūrė Apple. Pagrindinis proveržis buvo tas, kad vietoj vieno vaizdo failo, Netflix pradėjo saugoti kiekvieną filmą ar serialą keliais skirtingais kokybės lygiais – nuo 240p iki 4K raiškos.

Kaip visa tai veikia techninėje pusėje

Įsivaizduokite, kad kiekvienas filmas yra supjaustomas į mažus gabalėlius – segmentus, kurie trunka maždaug 2-4 sekundes. Kiekvienas toks segmentas yra užkoduotas keliais skirtingais kokybės lygiais. Pavyzdžiui, vienas segmentas gali turėti versijas su 235 kbps, 375 kbps, 560 kbps, 750 kbps, 1050 kbps, 1750 kbps, 2350 kbps, 3000 kbps, 4300 kbps, 5800 kbps ir net aukštesniu bitų srautu 4K turiniui.

Kai pradedate žiūrėti filmą, jūsų įrenginys (televizorius, kompiuteris, telefonas) pradeda atsisiųsti pirmąjį segmentą. Tuo pačiu metu Netflix grotuvas stebi, kaip greitai tas segmentas atsisiunčiamas. Jei 2 sekundžių segmentas atsisiunčia per 1 sekundę, sistema supranta, kad interneto greitis yra pakankamas ir gali pabandyti atsisiųsti kitą segmentą aukštesne kokybe. Jei segmentas kraunasi ilgiau nei 2 sekundes, sistema žino, kad reikia sumažinti kokybę.

Čia slypi gudrus dalykas: sistema nesprendžia tik pagal dabartinį greitį. Ji analizuoja tendencijas, prognozuoja būsimą greitį ir net atsižvelgia į tai, kiek vaizdo jau yra atmintyje (buffer). Jei atmintyje yra 30 sekundžių vaizdo, sistema gali rizikuoti ir pabandyti aukštesnę kokybę, nes net jei atsisiuntimas truks ilgiau, filmas nenustos groti.

Kodavimo magiją, kuri leidžia taupyti duomenis

Netflix naudoja pažangius vaizdo kodavimo algoritmus, kad kiekvienas kadras užimtų kuo mažiau vietos, bet atrodytų kuo geriau. Pagrindinis jų ginklas yra H.264 (AVC) ir naujesnysis H.265 (HEVC) kodekai, o naujausiems įrenginiams – VP9 ir AV1.

Bet štai įdomybė: ne visas turinys koduojamas vienodai. Animacinis filmas su paprastais, plokščiais spalvų plotais gali atrodyti puikiai net su žemesniu bitų srautu. Tuo tarpu veiksmo filmas su daug judančių detalių, tamsių scenų ar grūdėtos faktūros reikalauja didesnio bitų srauto, kad atrodytų gerai. Netflix tai supranta ir naudoja tai, ką jie vadina „per-title encoding” – kiekvienam filmui ar serialui jie parenka optimalius kodavimo nustatymus.

Pavyzdžiui, jei tai yra animacinis filmas „Mano mažasis ponis”, jis gali atrodyti puikiai su 1500 kbps bitų srautu. Bet jei tai „Blade Runner 2049” su tamsiais, sudėtingais kadrais, tam pačiam vaizdo kokybės lygiui gali prireikti 4000 kbps. Netflix sistema tai žino ir automatiškai pritaiko.

Sprendimų priėmimo algoritmas realiu laiku

Netflix adaptyvus algoritmas veikia kaip protingas vairuotojas, kuris nuolat stebi kelią ir prisitaiko prie sąlygų. Štai pagrindiniai parametrai, kuriuos jis analizuoja:

**Interneto greitis** – sistema nuolat matuoja, kaip greitai atsisiunčiami segmentai. Bet ji nesižiūri tik į paskutinį matavimą – ji skaičiuoja vidurkį per paskutines 10-20 sekundžių, kad atskirti tikrus greičio pokyčius nuo atsitiktinių svyravimų.

**Buferio lygis** – kiek sekundžių vaizdo jau yra atmintyje ir paruošta groti. Jei buferis pilnas (pvz., 30 sekundžių), sistema gali drąsiau bandyti aukštesnę kokybę. Jei buferis beveik tuščias, ji pereis į saugų režimą ir sumažins kokybę.

**Įrenginio galimybės** – ne visi įrenginiai gali groti 4K vaizdą. Sistema žino, ar jūsų telefonas, planšetė ar televizorius palaiko tam tikrą raišką ir kodeką.

**Tinklo tipas** – ar naudojate Wi-Fi, mobilųjį ryšį ar laidinį internetą. Mobilusis ryšys linkęs labiau svyruoti, todėl algoritmas būna atsargesnis.

Visa ši informacija sujungiama į sprendimą: kokios kokybės segmentą atsisiųsti toliau. Sprendimas priimamas kas 2-4 sekundes – būtent tiek trunka vienas segmentas.

Kodėl kartais matote kokybės šuolius

Jei esate atidus žiūrovas, turbūt pastebėjote, kad kartais vaizdas akimirksniu tampa miglotesnis, o po kelių sekundžių vėl pagerėja. Tai vyksta dėl kelių priežasčių.

Pirma, jūsų interneto greitis nėra pastovus. Net jei turite 100 Mbps planą, realus greitis gali svyruoti nuo 80 iki 120 Mbps priklausomai nuo to, kas dar naudoja tinklą jūsų namuose, kaip apkrautas jūsų interneto tiekėjo tinklas ir dar dešimties kitų faktorių.

Antra, Netflix algoritmas kartais „eksperimentuoja”. Jei jis mato, kad greitis atrodo stabilus, jis pabandys pakelti kokybę ir pažiūrės, ar pavyks. Jei nepavyksta – greitai grįš atgal. Tai kaip vairuotojas, kuris pabando pakeisti juostą, bet pamato, kad kita juosta ne greitesnė, ir grįžta atgal.

Trečia, kai pradedame žiūrėti filmą, sistema dar nežino tikslaus jūsų interneto greičio. Ji pradeda nuo vidutinės kokybės ir per pirmąsias 10-20 sekundžių „mokosi” – kelia ar mažina kokybę, kol randa optimalų lygį.

Kaip Netflix tobulina šį algoritmą

Netflix turi didžiulę duomenų bazę apie tai, kaip žmonės žiūri turinį visame pasaulyje. Jie žino, kokiomis sąlygomis žmonės sustabdo filmą, kada jie patiria buferizacijos problemų, kokia vidutinė kokybė buvo per seansą. Visa ši informacija naudojama algoritmo tobulinimui.

Jie naudoja mašininio mokymosi modelius, kurie bando prognozuoti būsimą interneto greitį. Pavyzdžiui, jei sistema mato, kad greitis pamažu krenta paskutines 30 sekundžių, ji gali nuspręsti sumažinti kokybę anksčiau, nei iš tikrųjų atsirastų problema – tai užkerta kelią vaizdo sustojimui.

Netflix taip pat testuoja skirtingas algoritmo versijas su skirtingomis žiūrovų grupėmis (A/B testavimas). Viena grupė gali gauti algoritmą, kuris agresyviau kelia kokybę, kita – konservatyvesnį variantą. Po kelių savaičių jie palygina rezultatus: kuri grupė dažniau patyrė buferizacijos, kuri matė geresnę kokybę, kuri suvartojo mažiau duomenų. Geriausia versija tampa standartine.

Ką tai reiškia jums kaip žiūrovui

Suprasdami, kaip veikia Netflix adaptyvus algoritmas, galite geriau kontroliuoti savo žiūrėjimo patirtį. Štai keletas praktinių patarimų:

Jei matote dažnus kokybės šuolius, pirmiausia patikrinkite, ar niekas kitas jūsų namuose nenaudoja daug interneto – torrentai, atsisiuntimai, kiti žmonės žiūrintys vaizdo įrašus. Visa tai konkuruoja dėl jūsų interneto pralaidumo.

Jei naudojate Wi-Fi, pabandykite priartėti prie maršrutizatoriaus arba, dar geriau, prijunkite įrenginį laidu. Laidinis ryšys yra daug stabilesnis ir duoda geresnę, pastovesnę kokybę.

Netflix nustatymuose galite pasirinkti duomenų naudojimo lygį. Jei turite ribotą duomenų planą (ypač mobiliajame ryšyje), nustatykite žemesnę kokybę. Jei internetas neribotas ir greitas – pasirinkite „Aukšta” arba „Auto”, kad sistema pati optimizuotų.

Įdomu tai, kad kai kurie žmonės tyčia nustato žemesnę kokybę net turėdami greitą internetą. Kodėl? Nes skirtumai tarp 1080p ir 4K nėra tokie akivaizdūs mažuose ekranuose, o duomenų suvartojama kelis kartus mažiau. Jei žiūrite telefone ar planšetėje, 720p dažnai visiškai pakanka.

Kas laukia ateityje – technologijos, kurios keičia žaidimo taisykles

Netflix ir kitos transliavimo platformos nuolat ieško būdų, kaip pagerinti žiūrėjimo patirtį. Viena įdomiausių naujovių yra AV1 kodekas, kuris gali suteikti tą pačią vaizdo kokybę naudodamas 30-50% mažiau duomenų nei H.265. Problema ta, kad ne visi įrenginiai jį palaiko, bet tai keičiasi – naujesni telefonai, kompiuteriai ir televizoriai jau turi AV1 palaikymą.

Kitas svarbus dalykas – 5G tinklai. Jie žada ne tik didesnį greitį, bet ir stabilesnį ryšį su mažesniu vėlavimu. Tai reikš, kad adaptyvus algoritmas galės drąsiau rinktis aukštesnę kokybę net mobiliajame ryšyje, nes svyravimai bus mažesni.

Netflix taip pat eksperimentuoja su dar protingesniais algoritmais, kurie gali prognozuoti ne tik interneto greitį, bet ir tai, kokios scenos filmo laukia toliau. Jei sistema žino, kad po 10 sekundžių prasidės tamsi, sudėtinga scena, ji gali iš anksto sumažinti kokybę arba užtikrinti, kad buferis būtų pilnas. Tai reikalauja analizuoti patį turinį, ne tik tinklo sąlygas.

Dar viena kryptis – personalizacija. Galbūt ateityje algoritmas žinos jūsų asmenines preferencijas. Jei esate tas žmogus, kuris labiau vertina sklandų grojimą nei aukščiausią kokybę, sistema bus konservatyvesnė. Jei jums svarbu kiekvienas detalės pikseli, algoritmas drąsiau bandys aukštesnę kokybę net rizikuodamas trumpais sustojimais.

Visa ši technologija rodo, kaip sudėtingas yra, atrodytų, paprastas dalykas – žiūrėti filmą internetu. Netflix adaptyvus algoritmas dirba fone, priima šimtus sprendimų per kiekvieną žiūrėjimo valandą, ir daro tai taip sklandžiai, kad dažniausiai net nepastebime jo darbo. Tai puikus pavyzdys, kaip gera technologija turėtų veikti – nepastebimai, efektyviai, visada prisitaikant prie mūsų poreikių ir sąlygų.