Ek was nog altyd nuuskierig oor hoe verskillende codecs op mekaar staan wanneer dit kom by skermdeling oor WebRTC. So, ek het besluit om self uit te vind deur die vier mees algemenes te toets: VP8, VP9, H.264 en AV1. Om seker te maak dat die resultate solied was, het ek toetse oor 'n verskeidenheid inhoudtipes en netwerktoestande uitgevoer. Ek het nie net op visuele indrukke staatgemaak nie - ek het raam-vir-raam vergelykings gebruik, die pieksein-tot-geraasverhouding (PSNR) bereken en gedetailleerde WebRTC-statistieke getrek om 'n duidelike, data-gedrewe aansig te kry. Om 'n stap verder te gaan, het ek selfs 'n pasgemaakte Chrome-inprop gebou wat SVE-gebruik tydens beide enkodering en dekodering naspoor. Dit het my 'n goeie blik gegee op hoe elke kodek stelselwerkverrigting beïnvloed - want kwaliteit is puik, maar nie as jou rekenaar aan die brand is en probeer byhou nie. Ek het gekyk na sleutelmaatstawwe soos bitsnelheid, raamtempo, resolusie, kwantisering (QP), PSNR en CPU-lading. Op grond van dit alles het ek met 'n paar praktiese aanbevelings vorendag gekom om enigiemand te help wat WebRTC-skermdeling vir hul eie gebruiksgevalle probeer optimaliseer. Oor die eksperiment Waarom skermdeling nie so eenvoudig is soos dit lyk nie As jy al ooit jou skerm tydens 'n video-oproep gedeel het en opgemerk het dat die kwaliteit daal - of die video raak wankelrig - is jy nie alleen nie. Om skermdeling skerp en glad te hou, is eintlik moeiliker as wat dit lyk. Die probleem? Dit gaan alles oor verskeidenheid. Sommige inhoud is stil, soos 'n skyfiedek of 'n dokument. Ander kere deel jy hoë-beweging video. Hierdie verskillende tipes inhoud vereis baie verskillende dinge van die kodek. Snelbewegende video vreet byvoorbeeld 'n ton bandwydte op, terwyl statiese beelde meer sensitief is vir kompressie-artefakte wat hulle vaag of blokkerig kan laat lyk. Gooi werklike internetkwessies soos pakkieverlies of bandwydtedalings in, en dinge raak nog morsiger. Dit is hoekom die keuse van die regte kodek - en fyn instel hoe dit werk - so belangrik is om skermdeling van hoë gehalte sowel as responsief te maak. Daar is reeds baie navorsing daar buite oor hoe video-kodeks in algemene stroomscenario's presteer. Maar skermdeling het sy eie eienaardighede. Dit gaan nie net oor die kyk van 'n video nie - dit gaan oor interaksie in reële tyd, en die inhoudtipes is oraloor. Dit beteken dat die gewone navorsing nie altyd van toepassing is nie. Wat ek van plan was om te doen Ek wou dieper in hierdie spesifieke gebruiksgeval delf. My doel was om te sien hoe verskillende codecs presteer wanneer dit kom by skermdeling, veral onder werklike beperkings soos verskillende inhoudtipes en onvoorspelbare netwerktoestande. Om dit te doen, het ek 'n metode ontwerp om skermdeelkwaliteit so akkuraat as moontlik te evalueer - nie net gebaseer op hoe dit lyk nie, maar gerugsteun deur soliede statistieke en data. Langs die pad het ek baie geleer oor watter codecs die beste hou en hoe om dinge te verfyn vir beter werkverrigting in intydse toepassings. Een ding het vinnig duidelik geword: skermdeelprestasie hang regtig af van jy deel. 'n Vinnige video tree baie anders op as 'n statiese dokument of 'n stadige blaai deur 'n webblad. wat Om dinge regverdig en konsekwent te hou, het ek seker gemaak dat elke toets met presies dieselfde toestande uitgevoer word - dieselfde resolusie, dieselfde beginpunt en dieselfde duur. Op dié manier kon ek vol vertroue wees dat die resultate alles oor die kodek-prestasie gaan, nie een of ander toevallige veranderlike nie. Ek het twee verskillende toetsgevalle geskep om werklike skermdeelsituasies te simuleer: – Dit was 'n regte snit van motorfietsryers wat deur 'n woud jaag. Baie vinnige beweging, gedetailleerde natuurskoon en 'n voortdurend veranderende visuele omgewing - perfek om die grense van kompressie te verskuif. Hoëbeweging-video - Ek het 'n eenvoudige HTML-bladsy met teks en beelde gebou, en dan JavaScript gebruik om dit teen 'n bestendige spoed te blaai. Dit boots 'n algemene gebruiksgeval na soos die deel van 'n dokument of lees vanaf 'n webblad. Outo-blaai teks Hierdie twee tipes inhoud het my 'n goeie mengsel gegee om te toets hoe elke kodek verskillende uitdagings hanteer - van tred hou met beweging tot die behoud van duidelikheid in meer statiese tonele. Hoe ek alles opstel Om die codecs behoorlik te toets, het ek 'n stewige opstelling nodig gehad wat kon vasvang - beide wat gestuur word en wat ontvang is. Ek het begin met 'n instrument genaamd (Terloops, jy kan meer oor hierdie hulpmiddel en nog vele meer leer in my ander pos: " "), wat wonderlik is om met WebRTC-interne te mors. Ek het dit uiteindelik nogal aangepas om skermdeling beter te hanteer en seker te maak dat ek beide die uitgaande en inkomende videostrome kan opneem. Elke toetslopie het vir my twee videolêers gegee – een vir wat gestuur is en een vir wat ontvang is – wat ek later vir sy-aan-sy-analise gebruik het. alles webrtc-sandbox Leer WebRTC in die praktyk: Beste gereedskap en demonstrasies Maar ek het nie by video gestop nie. Ek wou ook dophou wat onder die enjinkap gebeur. Daarvoor het ek gedetailleerde WebRTC-statistieke direk vanaf die Chrome-blaaier getrek. Hierdie statistieke het my 'n venster gegee in hoe elke kodek gevaar het en hoe die gesimuleerde netwerk tydens elke toets opgetree het. Een groot stuk van die legkaart was - en dit blyk 'n bietjie lastig te wees. Chrome se normale weergawe laat nie toe dat plugins SVE-lading vir individuele oortjies monitor nie, so ek het 'n ontwikkelingsbou van die blaaier gebruik en my eie inprop geskryf om dit te omseil. SVE-gebruik Ek het spesifiek gefokus op die meet van SVE-gebruik vanaf die oortjie wat die skermdeel gestuur of ontvang het. Op dié manier het ek onverwante leweringstake uit ander dele van die blaaier uitgesluit. Aangesien beide stuur en ontvang in dieselfde oortjie gebeur het, was die nommers wat ek gekry het 'n gekombineerde aansig - maar steeds redelik naby aan wat jy in 'n werklike gebruiksgeval sou sien. (Spoiler: enkodering tref gewoonlik die SVE harder as dekodering.) Versamel die data: 157 toetslopies later... Sodra die opstelling gereed was, was dit tyd om die werklike eksperimente uit te voer - en ek het baie daarvan uitgevoer. Ek het die toetse op dieselfde masjien oor en oor herhaal, met verskillende netwerktoestande en kodek-instellings om te sien hoe dinge stand gehou het. In totaal het ek ingesamel, om seker te maak dat elke kombinasie van toetstoestande goed verteenwoordig is. 157 datapunte Dit het my 'n stewige datastel gegee om mee te werk en het 'n bietjie diepgaande ontleding moontlik gemaak van hoe skermdeling in WebRTC onder verskillende scenario's optree. Hier is wat ek spesifiek getoets het: : Ek het twee tipes skermdeelinhoud gebruik om algemene gebruiksgevalle te weerspieël: Video tipe - Werklike beeldmateriaal met tonne pixel verander elke raam. Hoë-beweging video - Meestal statiese beeldmateriaal, maar met pixels wat posisie verskuif soos die teks blaai. Outo-gerol teks : Ek het die vier gewildste skermdeling-kodeks getoets: Kodek AV1 H.264 VP8 VP9 : Aangesien bandwydte 'n groot rol in videokwaliteit speel (veral in video-oproepe), het ek 'n verskeidenheid netwerktoestande gesimuleer om te sien hoe goed elke kodek stywe of wisselende bandwydte hanteer het. Netwerk bandwydte Deur hierdie veranderlikes op 'n gestruktureerde manier te meng en te pas, kon ek werklike skermdeel-scenario's naboots - die soort wat jy in 'n video-oproep, tydens 'n regstreekse demonstrasie of in 'n gesamentlike afgeleë sessie sou ontmoet. Die regstelling van die foute: hoe ek die toetse meer betroubaar gemaak het Soos met die meeste eksperimente, het die eerste paar lopies nie so glad verloop as wat ek gehoop het nie. Twee groot probleme het dadelik opgeduik: Aanvanklik het ek die skermdeling met die hand begin - letterlik op 'n knoppie geklik om dinge af te skop. Die probleem? Dit was byna onmoontlik om die begin van die opname met die begin van die video-inhoud te sinkroniseer. Dit het beteken dat elke toetslopie effens verskillende tydsberekening gehad het, wat die vergelykings van die hand gewys het. Handmatige begin = Morsige tydsberekening. Selfs wanneer die tydsberekening reg was, het intydse video sy eie eienaardighede. Danksy enkodering, dekodering en netwerkvertragings het die gestuurde en ontvangde strome nooit perfek in lyn gekom nie. Dit het raam-vir-raam kwaliteit vergelykings byna onmoontlik gemaak. Gestuur vs. Ontvang = Nie gesinkroniseer nie. Om hierdie probleme op te los, het ek 'n paar belangrike verbeterings aangebring: : In plaas daarvan om alles handmatig te begin, het ek 'n kode geskryf om die begin van die video of blaaiteks met die opnameproses te sinkroniseer. Op dié manier het elke toetslopie op presies dieselfde oomblik aan albei kante begin - probleem opgelos. Programmatiese sinkronisering : Vir die desinkroniseringskwessie het ek 'n klein QR-kode-oorleg by die gedeelde video gevoeg. Hierdie klein merker het soos 'n tydstempel opgetree - dit het my met presisie laat rame tussen die gestuurde en ontvangde strome pas. Skielik het raam-vir-raam-analise uitvoerbaar geword (en baie meer akkuraat). QR-kode-raampassing Daar was nog een ding waarvoor ek rekening moes hou: . Een van WebRTC se cool kenmerke is dat dit outomaties videokwaliteit aanpas op grond van beskikbare bandwydte. Maar daardie aanpassing gebeur nie onmiddellik nie – dit neem ’n paar sekondes om te stabiliseer. So, ek het 'n kort vertraging bygevoeg voordat die werklike opname begin het. Dit het die stelsel tyd gegee om teen die teikenbitsnelheid te vestig, sodat die resultate die werklike kwaliteit weerspieël wat jy sou kry nadat dinge gelyk is. WebRTC se aanpasbare bitsnelheid Hierdie veranderinge het die eksperiment baie meer betroubaar gemaak en het my vertroue gegee dat die data wat ek insamel eintlik weerspieël hoe skermdeling in die regte wêreld optree. Wat ek gemeet het (en hoekom dit saak maak) Ek het baie data tydens hierdie toetse ingesamel, maar om dinge eenvoudig te hou en maklik om te vergelyk, het ek gefokus op 'n paar kernstatistieke wat regtig die storie vertel van hoe elke kodek in 'n skermdeelscenario presteer. Hier is waarna ek gekyk het: Raamtempo Dit vertel my hoeveel rame per sekonde werklik geënkodeer, gestuur en ontvang is. Dit is 'n goeie aanduiding van hoe glad die videostroom voel - 'n hoër raamtempo beteken gewoonlik 'n meer vloeiende ervaring. Resolusie Resolusie gaan alles oor hoeveel visuele detail bewaar word. Ek het die aantal pixels per raam in elke stadium (gestuur en ontvang) opgespoor om te sien of die kodeks beeldkwaliteit behou of dit laat val het om bandwydte te bespaar. Video kwaliteit Ek het 'n paar sleutelmaatstawwe hier gebruik: - 'n Laer QP beteken oor die algemeen beter kwaliteit. Kwantiseringsparameter (QP) - Dit gee 'n numeriese gevoel van hoeveel die ontvangde video van die oorspronklike verskil. Hoër = beter. Piek sein-tot-geraas-verhouding (PSNR) SVE Gebruik Kodekverrigting gaan nie net oor wat jy sien nie – dit gaan ook oor wat jou masjien agter die skerms doen. Ek het gemeet hoeveel SVE-krag gebruik is vir enkodering en dekodering tydens elke toets, genormaliseer met verloop van tyd, om te sien watter kodeks liggewig is en watter hulpbronvarke is. Deur dinge met hierdie maatstawwe af te breek, kon ek die kodeks nie net op kwaliteit vergelyk nie, maar ook oor gladheid, doeltreffendheid en hoe veeleisend hulle is. Dit het gehelp om te onthul waar elke kodek skyn - en waar dit sukkel - in werklike skermdeeltoestande. Kom uiteindelik by die resultate Hoeveel maak die tipe inhoud saak? Baie meer as wat jy sou dink Een van die mees verrassende wegneemetes uit my eksperimente was net hoeveel die inhoud wat jy deel, die werkverrigting van skermdeling beïnvloed – beide in terme van videokwaliteit en hulpbrongebruik. En dit was waar vir kodek wat ek getoets het. tipe elke Die idee daaragter is redelik eenvoudig: wanneer meer pixels van raam tot raam verander (soos in 'n vinnigbewegende video), moet die stelsel harder werk. Dit beteken meer bandwydte is nodig, en jou SVE moet meer druk om by te hou. Neem , byvoorbeeld. Toe ek dit gebruik het om 'n 1,5-megapixel-skerm te deel, het die vereiste bandwydte baie gewissel na gelang van wat gedeel is. In een geval, waar die inhoud meer dinamies was, moes AV1 aansienlik meer data stoot om die stroom glad te hou. Ek het dit in vasgevang, wat wys hoe drasties inhoudskompleksiteit die bandwydtegebruik beïnvloed. AV1 die volgende grafiek Maar dit is nie net bandwydte nie - jou hardeware voel dit ook. wys hoe SVE-gebruik verander op grond van die inhoud wat gedeel word. Weereens, deur AV1 as die voorbeeld te gebruik, kan jy duidelik sien dat meer komplekse beeldmateriaal baie meer SVE-krag vereis om dinge teen dieselfde raamtempo en resolusie aan die gang te hou. Die volgende grafiek Dit is ook nie net 'n AV1-ding nie. Alle codecs maak staat op dieselfde basiese beginsels vir die enkodering en dekodering van video, so jy sou verwag dat hulle soortgelyke gedrag sal toon - maar die data vertel 'n ander storie. Die SVE-lading verander nie net met die inhoud nie, dit verander ook op grond van jy gebruik. watter kodek Om dit makliker te maak om te vergelyk, het ek saamgestel, wat wys hoeveel SVE elke kodek gebruik wanneer 'n 1,5-megapixel-video teen ongeveer 24 rame per sekonde stroom - 'n redelik tipiese opstelling vir gladde skermdeling. Die resultate beklemtoon 'n paar groot verskille in hoe doeltreffend elke kodek is wanneer dit kom by die gebruik van jou hardeware. die volgende tabel Kodek/SVE AV1 H264 VP8 VP9 Beweging 287% 213% 270% 364% Teks 175% 130% 179% 198% Dus, as jy iets bou of optimaliseer wat op WebRTC-skermdeling staatmaak, is die wegneemete duidelik: beide jou inhoud en jou keuse van kodek maak saak. Baie. Codec Showdown: Raamkoerse, SVE-lading en die werklike koste van kwaliteit As dit by skermdeling kom, is een van die eerste dinge wat jy opmerk hoe glad (of nie) die video voel. Dit is waar inkom. As jy hoë-beweging inhoud deel, soos videoterugspeel of animasies, is 'n hoër raamtempo noodsaaklik om strome wat moeilik is om te kyk, te vermy. raamtempo Vir hierdie deel van die eksperiment het ek gefokus op raamtempo-prestasie oor verskillende codecs, terwyl ek alles konstant gehou het: dieselfde resolusie (ongeveer 1,5 megapixels) en dieselfde inhoud vir elke toets. Ek het die WebRTC-instelling gebruik om seker te maak dat die resolusie oor die hele linie vasgesluit bly. contentHint In kan jy sien hoe verskillende kodeks hoë-beweging inhoud hanteer soos bandwydte toeneem. Op die x-as: bitsnelheid in Mbps. Op die y-as: raamtempo in rame per sekonde (fps). die volgende prent Hier is wat uitgestaan het: en het vorentoe getrek sodra die bandwydte 2 Mbps of meer bereik het, wat albei 20+ fps gelewer het - 'n gladde ervaring wat selfs op 'n ordentlike 3G-verbinding haalbaar is. H.264 AV1 en het nie so goed bygehou nie. Hulle het onder dieselfde toestande teen ongeveer die helfte van die raamtempo gesweef en het regtig 4 Mbps of meer nodig gehad om bruikbaar te voel - wat nie altyd realisties is op laer-end-netwerke nie. VP8 VP9 Toe het ek oorgeskakel na - 'n stadig blaai teks bladsy - om te sien hoe codecs presteer wanneer nie veel verander tussen rame. lae-beweging inhoud Dit is nie verbasend dat beide en selfs beter gevaar het in hierdie scenario, met . Dit is te danke aan 'n kenmerk genaamd , waarmee AV1 herkodering van dele van die skerm wat nie verander het nie, kan oorslaan. Dit is ongelooflik effektief vir statiese of semi-statiese skermdeling. H.264 AV1 AV1 wat bo uitkom Intra Block Copy In kan jy sien hoe doeltreffend AV1 hierdie lae-beweging situasies hanteer, wat bandwydtegebruik indrukwekkend laag hou terwyl hoë visuele kwaliteit gehandhaaf word. die volgende grafiek Maar ... daar is 'n afweging. AV1 gee jou dalk beter beeldmateriaal en kompressie, maar . wys dit duidelik: AV1 se SVE-gebruik klim geleidelik namate bitsnelheid toeneem, en verby H.264 met 'n lang skoot. H.264 het hier 'n groot voordeel danksy wydverspreide , wat sy SVE-lading laag en stabiel hou. dit vreet ook meer SVE op Volgende prent hardewareversnelling Interessant genoeg gebruik SVE as AV1 - volgens 'n soortgelyke neiging, maar met hoër pieke. Beide VP9 en AV1 maak staat op komplekse algoritmes om goeie gehalte te lewer, maar dit kom teen 'n prys: hulle is swaar op jou verwerker. VP9 selfs meer Daar was 'n kinkel toe ek herbesoek het. Hierdie keer het eintlik redelik doeltreffend gelyk - met minder SVE as AV1, soos in getoon. lae-beweging-inhoud VP8 en VP9 die volgende grafiek AV1, ondanks die feit dat dit ontwerp is met skermdeling in gedagte, het steeds die meeste SVE gebruik. Hoekom? Al daardie optimaliserings wat dit help om hoë-beweging-video saam te komprimeer, voeg ook bokoste by - selfs wanneer daar nie veel op die skerm gebeur nie. 'n Groot rede hiervoor? . Alhoewel dekodering relatief liggewig is, word enkodering steeds meestal in sagteware gedoen - en dit is 'n SVE-intensiewe taak, veral in intydse scenario's soos skermdeling waar beide enkodering en dekodering voortdurend plaasvind. AV1 het steeds nie wydverspreide hardeware-enkoderingondersteuning nie Dit is waar dinge moeilik raak vir soos skootrekenaars en tablette. Sonder hardeware-versnelling kan kodeks soos AV1 vinnig krag en varkhulpbronne dreineer – nie ideaal wanneer jy op pad is nie. Totdat beter hardeware-ondersteuning meer algemeen word, het AV1 se gevorderde kenmerke 'n redelik merkbare prestasiekoste. draagbare toestelle Kodeks en resolusie: wat gebeur as u raamtempo prioritiseer? Tot dusver kom die resultate wat ek gedeel het van toetse wat resolusie konstant gehou het. Wanneer bandwydte krap geraak het, sou die stelsel reageer deur die te verlaag - wat sin maak vir dinge soos statiese inhoud of teks. Maar wat as die doel is om , selfs al beteken dit dat resolusie opgeoffer word? raamtempo dinge vlot te laat beweeg Om dit te verken, het ek 'n nuwe stel eksperimente uitgevoer waar WebRTC opgestel is om eerder te prioritiseer. Dit is gedoen deur gebruik te maak van die -instelling in WebRTC, waarmee jy die blaaier kan vertel wat belangriker is – hoë resolusie of gladde beweging. raamtempo contentHint Ek het gemik om raamtempo teen 'n konsekwente te hou, wat algemeen erken word as die lieflike plek vir gladde, gemaklike kyk. Dit was moeilik om dit konsekwent te kry - aanpasbare streaming beteken dat daar altyd 'n bietjie fluktuasie is - maar die resultate het waardevolle insig gebied in hoe elke kodek hierdie afweging hanteer. 30 fps Om hierdie gedrag te help ontleed, het ek 'n nuwe maatstaf bekendgestel: Gestuurde piksels per sekonde = Raamtempo × Resolusie Dit gee 'n meer volledige prentjie as om net na FPS of resolusie alleen te kyk. Dit wys hoeveel visuele data die kodek werklik per sekonde lewer onder verskillende toestande. Vir hoë-beweging video - en met 'n merkbare marge. Selfs teen laer bitrate het dit daarin geslaag om aansienlik meer pixels per sekonde as enige ander kodek te stuur. Dit wys duidelik hoe goed AV1 dinamiese inhoud hanteer wanneer die stelsel onder druk is om 'n hoë raamtempo te handhaaf. Sien asseblief : het AV1 weereens bo uitgekom die volgende grafiek Toe ek oorgeskakel het na lae-beweging inhoud - soos 'n webblad met blaai teks - die speelveld het 'n bietjie meer gelyk. Die werkverrigting van alle codecs het meer eenvormig geword soos u op kan vind. , veral teen hoër bitrate. Die kompressie-optimalisasies het dit gehelp om sterk deurset te handhaaf sonder om hulpbrongebruik aansienlik te verhoog. die volgende prent AV1 het egter steeds 'n voorsprong behou Wat beteken dit alles in die praktyk? Wel, as jou gebruiksgeval dinamiese beeldmateriaal met hoë bewegings behels - soos video-deurlopers, lewendige animasies of speletjiestroming - , en AV1 blyk besonder bekwaam in daardie omgewing te wees. kan die prioritisering van raamtempo 'n groot verskil maak Selfs vir stadiger bewegende inhoud, toon AV1 steeds krag. Alhoewel die verskil kleiner kan wees, slaag dit konsekwent daarin om meer visuele data te stuur - wat beter gehalte teen dieselfde of laer bandwydte beteken - danksy sy gevorderde kompressiestrategieë. In beide gevalle was die -metriek nuttig om te verstaan hoe kodeks resolusie en raamtempo balanseer wanneer bandwydte beperk is. En AV1 se werkverrigting onder hierdie toestande bevestig dit verder as die mees bekwame opsie - mits jou stelsel die bykomende SVE-eise kan hanteer. "gestuurde pixels per sekonde" Hoe skoon is die beeld? Kom ons praat PSNR Behalwe raamtempo, resolusie en SVE-gebruik, is daar nog 'n belangrike deel van die skermdeelraaisel: Dit is waar inkom. hoe naby lyk die ontvangde prent aan die oorspronklike? die pieksein-tot-geraasverhouding (PSNR) PSNR is 'n wyd gebruikte maatstaf om die kwaliteit van saamgeperste video te meet. Dit vertel jou hoeveel vervorming - of "geraas" - ingestel is tydens enkodering. Dit word in gemeet, en die reël is eenvoudig: . 'n Hoë PSNR beteken die beeld lyk amper presies soos die oorspronklike; 'n laer telling beteken daar is meer sigbare agteruitgang. desibels (dB) hoe hoër, hoe beter Om dit in konteks te plaas, het ek PSNR-waardes oor codecs in twee verskillende scenario's getoets: een waar die prioriteit is, en 'n ander waar die voortou neem. Albei toetse het dieselfde gebruik om dinge konsekwent te hou. resolusie raamtempo hoë-beweging video-inhoud In hierdie opstelling, waar duidelikheid die fokus is (selfs al eindig die video 'n bietjie wankelrig), en skerp beeldmateriaal met minimale vervorming gelewer. Dit is 'n sterk keuse wanneer gladheid nie so krities is nie. het H.264 besonder goed gevaar Wanneer die doelwit verskuif na die handhawing van vloeiende beweging, , veral teen hoër bitsnelhede. Dit slaag daarin om beeldkwaliteit te behou, selfs terwyl dit aggressief saamgepers word om raamtempo-teikens te bereik. kom AV1 vooruit Alhoewel die verskille in PSNR tussen codecs nie altyd dramaties is nie, beklemtoon dit die wat u maak wanneer u 'n codec kies. Sommige prioritiseer skerpheid; ander streef na gladde beweging - en afhangende van jou gebruiksgeval, is die een dalk beter geskik as die ander. afwegings Toe het ek weer dieselfde toetse uitgevoer, hierdie keer met behulp van – iets wat die belangrikheid van resolusie en duidelikheid regtig beklemtoon. gerolde teksinhoud Wanneer beweging geprioritiseer word, lyk PSNR-waardes oor alle codecs redelik soortgelyk. Die inhoud verander nie veel nie, so die verskille in kompressiestrategie het nie veel impak op algehele beeldkwaliteit nie. Dit is waar dinge interessant raak. Met resolusie as die prioriteit, die ander kodeks – veral teen hoër bitsnelheid. Sy prestasie hier is uitsonderlik. trek AV1 ver voor Hoekom? AV1 bevat spesifieke optimaliserings vir die hantering van statiese, herhalende inhoud soos teks. Dit laat dit toe om te handhaaf, artefakte te vermy en meer doeltreffend saam te pers. Dit maak AV1 'n fantastiese keuse vir gebruiksgevalle soos die deel van dokumente of kode deurloop - enige plek waar . hoër beeldgetrouheid skerp, leesbare detail regtig saak maak Kortom, PSNR help om 'n subtiele maar belangrike dimensie van skermdeelkwaliteit uit te lig. Of jy nou beweging of skerpte prioritiseer, om te verstaan hoe codecs onder verskillende beperkings optree, laat jou die regte een vir die werk kies. Wat is die Deal met QP? Verstaan kompressie vs kwaliteit Nog 'n belangrike faktor in skermdeelkwaliteit is iets wat die , of , genoem word. As jy al ooit gewonder het wat beheer hoeveel detail tydens kompressie verlore gaan, is dit dit. Quantization Parameter QP In eenvoudige terme . vertel QP die enkodeerder hoe aggressief die video moet saamgepers word 'n beteken minder kompressie en beter beeldkwaliteit. Lae QP ’n beteken meer kompressie – wat bandwydte bespaar, maar die video erger kan laat lyk. Hoë QP Terwyl PSNR vir ons 'n resultaat gee – hoeveel beeldkwaliteit behoue gebly het – . So, ek het na albei gekyk. vertel QP vir ons waarna die enkodeerder gemik het In hierdie studie: is uit standaard WebRTC-metrieke getrek. QP-waardes is ná die feit gemeet deur elke oorspronklike raam met sy ontvangde weergawe te vergelyk. PSNR Hier is waar dinge interessant geword het. , wat beteken dat dit die beeldkwaliteit die beste behou het - maar dit het ook as die ander kodeks gehad. Dit lyk met die eerste oogopslag teenstrydig. AV1 het die beste PSNR-tellings gehad QP-waardes tot vier keer hoër Maar hier is die vangplek: , so die waardes is nie direk vergelykbaar nie. 'n QP van 50 in een kodek beteken nie noodwendig dieselfde vlak van kompressie as 'n QP van 50 in 'n ander nie. elke kodek definieer en hanteer QP anders Tog vertel QP-tendense ons iets nuttigs. Oor alle codecs het ek opgemerk dat . Dit maak sin – met meer bandwydte beskikbaar, kan die codecs bekostig om kompressie te verminder en beeldkwaliteit te verbeter. namate bandwydte toeneem, QP afneem So alhoewel ons nie QP-nommers langs mekaar kan opstel oor codecs nie, wys hulle steeds hoe elke kodek kompressie dinamies aanpas op grond van beskikbare netwerktoestande. Kortom: . Maar om na te spoor hoe dit met bandwydte verskuif, gee nuttige insig in wat die enkodeerder agter die skerms doen. En gekombineer met PSNR, gee dit 'n meer volledige beeld van kodekgedrag. QP is nie 'n gehaltetelling nie - dit is 'n instelling Finale gedagtes: wat dit alles beteken vir WebRTC-skermdeling Nadat jy diep geduik het in hoe WebRTC onder die enjinkap presteer, is een ding duidelik: - en die beste keuse hang regtig van jou prioriteite en omgewing af. nie alle kodeks is gelyk geskep nie Hier is die belangrikste wegneemetes uit my eksperimente: AV1: Beste kwaliteit, hoogste koste AV1 het konsekwent die gelewer, of ek vinnigbewegende video gedeel het of stadig blaai van teks. Sy gevorderde kompressie en optimalisering maak dit ongelooflik doeltreffend - maar dit kom met 'n prys. AV1 is , en aangesien hardeware-ondersteuning steeds inhaal, is dit nog nie ideaal vir laer-aangedrewe of mobiele toestelle . beste visuele kwaliteit SVE-honger nie H.264: Die Solid All-Rounder As jy 'n soek, is H.264 steeds 'n goeie keuse. Dit word wyd ondersteun, hardeware-versnel op die meeste platforms, en doen 'n goeie werk in byna elke scenario - veral wanneer stelselhulpbronne of batterylewe 'n bekommernis is. balans tussen werkverrigting en doeltreffendheid Inhoud maak meer saak as wat jy dink Die tipe inhoud wat jy deel het 'n op prestasie. Hoë-beweging video vereis veel meer van jou SVE en bandwydte as statiese inhoud soos dokumente of teks. Die keuse van die regte kodek - en die regte instellings - vir jou inhoud kan 'n groot verskil in kwaliteit en hulpbrongebruik maak. groot impak SVE-gebruik is nie net 'n voetnoot nie Danksy 'n pasgemaakte Chrome-inprop wat ek gebou het, kon ek SVE-gebruik akkuraat meet tydens skermdeling. Die resultate het , wat veral belangrik word op mobiele toestelle of in energie-sensitiewe omgewings. groot verskille getoon in hoe veeleisend elke kodek is Wat is volgende? Waarheen hierdie navorsing kan gaan Hierdie eksperiment het die deur oopgemaak vir 'n paar opwindende volgende stappe. Hier is waar ek dink toekomstige werk 'n selfs groter impak kan maak: Toets op mobiele toestelle Tot dusver is alle toetse op rekenaars gedoen - maar skermdeling is net so algemeen (indien nie meer nie) op . Om te toets hoe hierdie codecs op mobiele toestelle werk, sal 'n meer volledige prentjie gee, veral in terme van reaksie en kragverbruik. fone en tablette Energiedoeltreffendheid Van krag gepraat - codecs verbrand nie net SVE nie, hulle verbrand ook . Toekomstige navorsing moet ondersoek watter kodeks is, veral vir lang skermdeelsessies op draagbare toestelle. batterylewe die energiedoeltreffendste KI-aangedrewe kodek-instelling Stel jou voor of WebRTC outomaties kodek-instellings kon aanpas op grond van jou huidige inhoud en netwerkspoed. , deur dinamies die perfekte balans tussen kwaliteit en werkverrigting in real-time te vind. KI kan dit moontlik maak Om dit toe te draai Kodek-keuse is meer as net 'n tegniese besluit - dit beïnvloed direk die van jou skermdeelervaring. Of jy nou 'n videokonferensie-instrument bou, 'n samewerkingsplatform, of net jou eie werkvloeie optimaliseer, om te verstaan hoe hierdie codecs onder verskillende omstandighede optree, kan jou help om slimmer, doeltreffender besluite te neem. kwaliteit, gladheid en hulpbrongebruik Soos WebRTC voortgaan om te ontwikkel, sal die gereedskap en tegnieke daarom ook. Ek hoop hierdie diep duik help ander om beter te verstaan wat agter die skerms aangaan – en hoe om die meeste uit hul skermdelingstapel te kry. Wil jy self die data verken? As jy nuuskierig is om dieper in die resultate te delf of jou eie analise uit te voer, het ek die volledige datastel van hierdie studie hier beskikbaar gestel: Laai die datastel op Kaggle af Dit bevat rou statistieke vir raamtempo, resolusie, PSNR, QP, SVE-gebruik en meer - alles georganiseer volgens kodek, inhoudtipe en bandwydtetoestand. Gebruik dit gerus vir jou eie eksperimente, benchmarking, of net om te verken hoe WebRTC in verskillende scenario's optree.