Vum Skype op WebRTC: wéi mir Videokommunikatioun iwwer de Web organiséiert hunn

Vum Skype op WebRTC: wéi mir Videokommunikatioun iwwer de Web organiséiert hunn

Videokommunikatioun ass den Haapt Wee fir Kommunikatioun tëscht Enseignant a Student op der Vimbox Plattform. Mir hunn Skype viru laanger Zäit opginn, e puer Drëtt-Partei-Léisungen probéiert a schliisslech op der WebRTC - Janus-Gateway Kombinatioun néiergelooss. Zënter enger Zäit ware mir mat allem zefridden, awer nach ëmmer negativ Aspekter koumen weider. Als Resultat gouf eng separat Videorichtung erstallt.

Ech hunn de Kirill Rogovoy, de Chef vun der neier Richtung, gefrot fir iwwer d'Evolutioun vun der Videokommunikatioun zu Skyeng ze schwätzen, d'Problemer déi entdeckt goufen, d'Léisungen an d'Krüchen déi mir schlussendlech benotzt hunn. Mir hoffen, datt den Artikel nëtzlech ass fir Firmen déi och Video eleng duerch eng Webapplikatioun erstellen.

E bësse vun der Geschicht

Am Summer 2017 huet de Chef vun der Skyeng Entwécklung, Sergey Safonov, um Backend Conf geschwat mat enger Geschicht iwwer wéi mir "Skype opginn an WebRTC implementéiert hunn." Interesséierter kënnen den Opnahmen vun der Ried um Link (~ 45 min), an hei wäert ech kuerz seng Essenz skizzéieren.

Fir Skyeng School, Video Kommunikatioun war ëmmer eng prioritär Manéier vun Enseignant-Schüler Kommunikatioun. Fir d'éischt gouf Skype benotzt, awer et war kategoresch net zefriddestellend aus enger Rei vu Grënn, virun allem wéinst dem Mangel u Logbicher an der Onméiglechkeet vun der Integratioun direkt an der Webapplikatioun. Dofir hu mir all méiglech Experimenter duerchgefouert.

Eigentlech waren eis Ufuerderunge fir Videokommunikatioun ongeféier déi folgend:
- Stabilitéit;
- niddereg Präis pro Lektioun;
- Lektioune opzehuelen;
- Tracking wien schwätzt wéi vill (et ass wichteg fir eis datt d'Schüler méi wéi den Enseignant während de Lektioune schwätzen);
- linear Skala;
- Fäegkeet souwuel UDP an TCP ze benotzen.

Déi éischt fir ze probéieren war Tokbox am 2013 ëmzesetzen. Alles war gutt, awer et war ganz deier - 113 Rubel pro Lektioun - an huet de Gewënn giess.

Dann am 2015 gouf Voximplant integréiert. Hei war d'Funktioun déi mir gebraucht hunn fir ze verfolgen wien geschwat huet wéi vill, a gläichzäiteg war d'Léisung vill méi bëlleg: wann nëmmen Audio opgeholl gouf, kascht et 20 Rubel pro Lektioun. Wéi och ëmmer, et huet nëmmen iwwer UDP geschafft a konnt net op TCP wiesselen. Wéi och ëmmer, ongeféier 40% vun de Studenten hunn et um Enn benotzt.

E Joer méi spéit hu mir ugefaang Firmeclienten mat hiren eegene spezifesche Ufuerderungen ze hunn. Zum Beispill soll alles duerch e Browser funktionnéieren, d'Firma mécht nëmmen http an https op; dh keng Skype oder UDP. Firmenclienten = Suen, sou datt se zréck op Tokbox sinn, awer de Problem vum Präis ass net fortgaang.

Léisung - WebRTC an Janus

Entscheet ze benotzen Browser Plattform fir Peer-to-Peer Video Kommunikatioun WebRTC. Et ass verantwortlech fir eng Verbindung ze grënnen, d'Kodéierung an d'Dekodéierung vun Streamen, d'Synchroniséierung vun Tracks a Qualitéitskontrolle mat Ëmgank mat Netzglitches. Fir eisen Deel musse mir suergen, datt Streams vun der Kamera an dem Mikrofon liesen, Video zeechnen, d'Verbindung verwalten, eng WebRTC Verbindung opbauen an d'Streamen dohinner iwwerdroen, souwéi d'Signaléierungsmeldungen tëscht Clienten iwwerdroen fir eng Verbindung z'etabléieren (WebRTC selwer beschreift nëmmen de Dateformat, awer net seng Mechanismus Transfere). Wann Clienten hannert NAT sinn, verbënnt WebRTC STUN Serveren; wann dëst net hëlleft, TURN Serveren.

Eng regulär p2p Verbindung geet net duer fir eis, well mir wëllen Lektioune fir weider Analyse am Fall vu Reklamatiounen ophuelen. Dofir schécken mir WebRTC Streams duerch e Relais Janus Gateway vum Meetecho. Als Resultat kennen d'Clienten net d'Adressen vuneneen, se gesinn nëmmen d'Janus Server Adress; et mécht och d'Funktioune vun engem Signal Server. Janus huet vill vun de Fonctiounen mir brauchen: automatesch schalt op TCP wann de Client UDP blockéiert huet; ka souwuel UDP wéi och TCP Streams ophuelen; skalierbar; Et gëtt souguer en agebaute Plugin fir Echo Tester. Wann néideg, STUN an TURN Serveren vun Twilio sinn automatesch ugeschloss.

Am Summer 2017 hu mir zwee Janus Serveren lafen, plus en zousätzleche Server fir opgeholl rau Audio- a Videodateien ze veraarbecht, fir net d'Prozessoren vun den Haapt ze besetzen. Wann Dir konnektéiert, goufen Janus Serveren op eng komesch-och Basis ausgewielt (Verbindungsnummer). Zu där Zäit war dat genuch, no eise Gefiller, huet et ongeféier e véiermol Sécherheetsmarge ginn, d'Ëmsetzungsprozent war ongeféier 80. Zur selwechter Zäit gouf de Präis op ~2 Rubel pro Lektioun reduzéiert, plus Entwécklung an Ënnerstëtzung.

Vum Skype op WebRTC: wéi mir Videokommunikatioun iwwer de Web organiséiert hunn

Zréck op d'Thema vun der Videokommunikatioun

Mir iwwerwaachen dauernd Feedback vu Studenten an Enseignanten fir d'Problemer op eng fristgerecht Manéier z'identifizéieren an ze korrigéieren. Bis de Summer 2018 war d'Uruffqualitéit fest op der éischter Plaz ënner de Reklamatiounen. Engersäits huet dat bedeit datt mir aner Mängel erfollegräich iwwerwonne haten. Op der anerer Säit war et néideg dréngend eppes ze maachen: wann d'Lektioun gestéiert ass, riskéiere mir säi Wäert ze verléieren, heiansdo zesumme mat de Käschte vum Kaf vum nächste Package, a wann d'Aféierungscourse gestéiert ass, riskéiere mir e potenzielle Client ze verléieren ganz.

Zu där Zäit war eis Videokommunikatioun nach am MVP Modus. Einfach gesot, si hunn et lancéiert, et huet geschafft, si hunn et eemol skaléiert, si hu verstanen wéi se et maachen - gutt, super. Wann et funktionnéiert, fixéiert et net. Keen huet bewosst d'Fro vun der Kommunikatiounsqualitéit ugeschwat. Bis August gouf et kloer datt dëst net weiderfuere konnt, a mir hunn eng separat Richtung lancéiert fir erauszefannen wat mat WebRTC a Janus falsch war.

Um Input krut dës Richtung: eng MVP-Léisung, keng Metriken, keng Ziler, keng Verbesserungsprozesser, während 7% vun den Enseignanten iwwer d'Qualitéit vun der Kommunikatioun beschwéieren (et gouf och keng Daten iwwer Studenten).

Vum Skype op WebRTC: wéi mir Videokommunikatioun iwwer de Web organiséiert hunn

Eng nei Richtung ass ënnerwee

De Kommando gesäit sou eppes aus:

  • De Chef vum Departement, deen och den Haaptentwéckler ass.
  • QA hëlleft Ännerungen ze testen, sicht nei Weeër fir onbestänneg Kommunikatiounsbedéngungen ze kreéieren, a bericht Probleemer vun der Frontlinn.
  • Den Analyst sicht stänneg fir verschidde Korrelatiounen an techneschen Donnéeën, verbessert d'Analyse vum Benotzer Feedback a kontrolléiert d'Resultater vun Experimenter.
  • De Produktmanager hëlleft mat der Gesamtrichtung an der Allokatioun vu Ressourcen fir Experimenter.
  • En zweeten Entwéckler hëlleft dacks mat Programméiere a verbonne Aufgaben.

Fir unzefänken, hu mir eng relativ zouverlässeg Metrik opgestallt déi Ännerungen an der Kommunikatiounsqualitéit Bewäertungen verfollegt (Duerchschnëtt iwwer Deeg, Wochen, Méint). Deemools waren dat d’Note vun den Enseignanten, spéider goufen d’Schouljoere vun de Schüler derbäigesat. Dunn hunn se ugefaang Hypothesen ze bauen iwwer wat falsch funktionnéiert, et korrigéiert a kuckt op Ännerungen an der Dynamik. Mir si fir déi niddereg hängend Fruucht gaang: zum Beispill hu mir de vp8 Codec duerch vp9 ersat, d'Performance verbessert. Mir hu probéiert mat de Janus Astellungen ze spillen an aner Experimenter ze maachen - an de meeschte Fäll hunn se näischt zu näischt gefouert.

Op der zweeter Stuf ass eng Hypothese entstanen: WebRTC ass eng Peer-to-Peer Léisung, a mir benotzen e Server an der Mëtt. Vläicht läit de Problem hei? Mir hunn ugefaang ze graven an hunn déi bedeitendst Verbesserung bis elo fonnt.

Dee Moment gouf e Server aus dem Pool mat engem zimlech dommen Algorithmus ausgewielt: jidderee hat säin eegent "Gewiicht", jee no Kanal a Kraaft, a mir hu probéiert de Benotzer op dee mat dem gréisste "Gewiicht" ze schécken, ouni oppassen op wou de Benotzer geographesch läit. Als Resultat konnt en Enseignant aus St. Petersburg mat engem Schüler aus Sibirien duerch Moskau kommunizéieren, an net duerch eise Janus Server zu St.

Den Algorithmus gouf nei gemaach: elo, wann e Benotzer eis Plattform opmaacht, sammele mir Pings vun him op all Server mat Ajax. Wann Dir eng Verbindung opstellt, wielt e Paar Pings (Léierpersonal-Server a Student-Server) mat dem klengste Betrag. Manner Ping heescht manner Reseau Distanz zum Server; méi kuerz Distanz heescht manner Wahrscheinlechkeet Pakete verléieren; Packet Verloscht ass de gréissten negativen Faktor bei der Videokommunikatioun. Den Undeel vun der Negativitéit ass an dräi Méint ëm d'Halschent gefall (fir fair ze sinn, aner Experimenter goufen zu dëser Zäit duerchgefouert, awer dëst hat bal sécher de gréissten Impakt).

Vum Skype op WebRTC: wéi mir Videokommunikatioun iwwer de Web organiséiert hunn

Vum Skype op WebRTC: wéi mir Videokommunikatioun iwwer de Web organiséiert hunn

Mir hunn viru kuerzem eng aner net offensichtlech, awer scheinbar wichteg Saach entdeckt: amplaz vun engem mächtege Janus Server op engem décke Kanal, ass et besser zwee méi einfach mat méi dënnem Bandbreed ze hunn. Dëst gouf kloer nodeems mir mächteg Maschinnen kaaft hunn an der Hoffnung esou vill Zëmmeren (Kommunikatiounssitzungen) zur selwechter Zäit an hinnen ze kräischen. Serveren hunn eng Bandbreedungslimit, déi mir präzis an d'Zuel vun de Raim iwwersetzen kënnen - mir wësse wéi vill kënnen opgemaach ginn, zum Beispill bei 300 Mbit / s. Soubal et ze vill Zëmmeren op engem Server sinn, stoppen mir et fir nei Aktivitéiten ze wielen bis d'Laascht erof geet. D'Iddi war datt mir eng mächteg Maschinn kaaft hunn, mir de Kanal op de Maximum lueden, sou datt et um Enn vum Prozessor an der Erënnerung limitéiert ass, an net vun der Bandbreedung. Mä et huet sech erausgestallt, datt no enger gewësser Unzuel vun oppenen Zëmmeren (420), trotz der Tatsaach, datt d'Laascht op de Prozessor, Erënnerung an Disk nach ganz wäit vun de Grenzen ass, fänkt d'Negativitéit un der technescher Ënnerstëtzung un. Anscheinend gëtt eppes am Janus verschlechtert, vläicht ginn et och e puer Restriktiounen. Mir hunn ugefaang ze experimentéieren, hunn d'Bandbreedlimit vun 300 op 200 Mbit / s erofgesat, an d'Problemer sinn fortgaang. Elo hu mir dräi nei Serveren gläichzäiteg mat nidderegen Grenzen a Charakteristiken kaaft, mir mengen datt dëst zu enger stabiler Verbesserung vun der Kommunikatiounsqualitéit féiert. Natierlech hu mir net probéiert erauszefannen wat do lass ass; eis Krutzen sinn alles. An eiser Verteidegung, loosst eis soen, datt et dee Moment néideg war, den dréngende Problem sou séier wéi méiglech ze léisen, an net schéin ze maachen; ausserdeem, Janus fir eis ass eng schwaarz Këscht am C geschriwwen, et ass ganz deier mat et ze knacken.

Vum Skype op WebRTC: wéi mir Videokommunikatioun iwwer de Web organiséiert hunn

Gutt, am Prozess mir:

  • aktualiséiert all Ofhängegkeeten déi aktualiséiert kënne ginn, souwuel um Server wéi och um Client (dëst waren och Experimenter, mir hunn d'Resultater iwwerwaacht);
  • fixéiert all identifizéiert Bugs am Zesummenhang mat spezifesche Fäll, zum Beispill, wann d'Verbindung erofgaang ass an net automatesch restauréiert gouf;
  • Mir hu vill Reunioune mat Firmen, déi am Beräich vun der Videokommunikatioun schaffen a mat eise Probleemer vertraut sinn: Streaming Spiller, Organisatioun vun Webinaren; mir hunn alles probéiert wat eis nëtzlech schéngt;
  • Eng technesch Iwwerpréiwung vun der Hardware a Kommunikatiounsqualitéit vun den Enseignanten gemaach, vun deenen déi meeschte Reklamatiounen komm sinn.

D'Experimenter an déi spéider Ännerungen hunn et méiglech gemaach, d'Onzefriddenheet mat der Kommunikatioun tëscht den Enseignanten vu 7,1% am Januar 2018 op 2,5% am Januar 2019 ze reduzéieren.

Wat ass Next

Stabiliséierung vun eiser Vimbox Plattform ass ee vun den Haaptprojete vun der Firma fir 2019. Mir hunn héich Hoffnungen datt mir fäeg sinn de Momentum ze halen an d'Videokommunikatioun net méi an den Top Reklamatiounen ze gesinn. Mir verstinn, datt e groussen Deel vun dëse Reklamatiounen sinn Zesummenhang mat lags Benotzer Computeren an Internet, mä mir mussen dësen Deel bestëmmen an de Rescht léisen. Alles anescht ass en technesche Problem, et schéngt mir et fäeg ze sinn.

D'Haaptschwieregkeet ass datt mir net wëssen op wéi engem Niveau et tatsächlech méiglech ass d'Qualitéit ze verbesseren. Dës Plafong erauszefannen ass d'Haaptaufgab. Dofir sinn zwee Experimenter geplangt:

  1. vergläicht Video iwwer Janus mat reguläre p2p a Kampfbedéngungen. Dëst Experiment gouf scho gemaach, kee statistesch signifikanten Ënnerscheed gouf tëscht eiser Léisung a p2p fonnt;
  2. Loosst eis (deier) Servicer vu Firmen ubidden, déi exklusiv op Videokommunikatiounsléisungen Sue verdéngen, a vergläichen d'Quantitéit vun der Negativitéit vun hinnen mat der existéierender.

Dës zwee Experimenter erlaben eis en erreechbar Zil z'identifizéieren an dorop ze fokusséieren.

Zousätzlech ginn et eng Rei vun Aufgaben déi routinéiert geléist kënne ginn:

  • Mir kreéieren eng technesch Metrik vu Kommunikatiounsqualitéit anstatt subjektiv Bewäertungen;
  • Mir maachen méi detailléiert Sessiounsprotokoller fir méi präzis d'Feeler ze analyséieren déi optrieden, ze verstoen wéini a wou se genee opgetruede sinn, a wéi eng scheinbar onrelatéiert Eventer zu deem Moment stattfonnt hunn;
  • Mir preparéieren en automateschen Verbindungsqualitéitstest virun der Lektioun, a ginn dem Client och d'Méiglechkeet d'Verbindung manuell ze testen fir d'Quantitéit vun der Negativitéit ze reduzéieren, déi duerch seng Hardware a Kanal verursaacht gëtt;
  • mir wäerten entwéckelen a méi Video Kommunikatioun Belaaschtung Tester an aarme Konditiounen, mat variabelen Pak Verloscht, etc .
  • mir änneren d'Behuele vun Serveren am Fall vun Problemer Feeler Toleranz ze Erhéijung;
  • Mir warnen de Benotzer wann iwwerhaapt eppes falsch mat senger Verbindung ass, wéi Skype dat mécht, fir datt hien versteet datt de Problem op senger Säit ass.

Zënter Abrëll ass d'Videokommunikatiounsrichtung e vollwäertege separaten Projet bannent Skyeng ginn, deen mat sengem eegene Produkt handelt, net nëmmen en Deel vu Vimbox. Dëst bedeit datt mir ufänken no Leit ze sichen op mat Video am Vollzäitmodus ze schaffen. Gutt, wéi ëmmer Mir sichen vill gutt Leit.

An, natierlech, si mir weider aktiv mat Leit a Firmen ze kommunizéieren, déi mat Videokommunikatioun schaffen. Wann Dir Erfahrungen mat eis austausche wëllt, si mir frou! Kommentéiert, mell dech - mir äntweren jiddereen.

Source: will.com