Tina Skype ka WebRTC: kumaha urang ngatur komunikasi pidéo liwat wéb

Tina Skype ka WebRTC: kumaha urang ngatur komunikasi pidéo liwat wéb

Komunikasi pidéo mangrupikeun cara utama komunikasi antara guru sareng murid dina platform Vimbox. Urang nyerah Skype geus lila pisan, diusahakeun sababaraha solusi pihak-katilu sarta ahirna netep dina WebRTC - kombinasi Janus-gateway. Pikeun sawatara waktu kami senang jeung sagalana, tapi tetep sababaraha aspék négatip terus muncul. Hasilna, hiji arah video misah dijieun.

Kuring nanya ka Kirill Rogovoy, kapala arah anyar, ngobrol ngeunaan évolusi komunikasi video di Skyeng, masalah kapanggih, solusi na crutches nu pamustunganana kami dipaké. Kami ngarepkeun tulisan éta bakal mangpaat pikeun perusahaan anu ogé nyiptakeun pidéo nyalira ngalangkungan aplikasi wéb.

A sajarah saeutik

Dina usum panas 2017, kapala pamekaran Skyeng, Sergey Safonov, nyarios di Backend Conf kalayan carita ngeunaan kumaha urang "ngantunkeun Skype sareng ngalaksanakeun WebRTC." Anu minat tiasa nonton rekaman pidato di link (~ 45 mnt), sareng di dieu kuring bakal ngajelaskeun sakeudeung hakekatna.

Pikeun Skyeng School, komunikasi vidéo sok janten cara prioritas komunikasi guru-murid. Dina awalna, Skype dipaké, tapi éta categorically teu nyugemakeun pikeun sababaraha alesan, utamana alatan kurangna log jeung impossibility integrasi langsung kana aplikasi wéb. Ku alatan éta, urang ngalaksanakeun sagala sorts percobaan.

Sabenerna, sarat kami pikeun komunikasi video kira-kira kieu:
- stabilitas;
- harga low per palajaran;
- ngarékam palajaran;
— nyukcruk saha nu nyarita sabaraha (penting pikeun urang yén siswa nyarita leuwih ti guru salila palajaran);
- skala liniér;
- kamampuan ngagunakeun duanana UDP sareng TCP.

Anu mimiti dicoba nyaéta nerapkeun Tokbox dina 2013. Sagalana éta alus, tapi tétéla pisan mahal - 113 rubles per palajaran - sarta dahar nepi kauntungan.

Lajeng dina 2015, Voximplant ieu terpadu. Ieu mangrupikeun fungsi anu urang peryogikeun pikeun ngalacak saha anu nyarios sabaraha, sareng dina waktos anu sami solusina langkung mirah: upami ngan ukur audio dirékam, hargana 20 rubles per palajaran. Nanging, éta ngan ukur tiasa dianggo via UDP sareng henteu tiasa ngalih ka TCP. Tapi, sakitar 40% murid parantos nganggo éta.

Sataun saterusna, urang mimiti boga klien perusahaan kalawan sarat husus sorangan. Salaku conto, sadayana kedah dianggo dina browser, perusahaan ngan ukur muka http sareng https; nyaéta euweuh Skype atanapi UDP. Klien perusahaan = duit, ngarah balik ka Tokbox, tapi masalah harga teu dileungitkeun.

Solusi - WebRTC sareng Janus

Mutuskeun ngagunakeun platform browser pikeun WebRTC komunikasi video peer-to-peer. Éta tanggung jawab pikeun nyieun sambungan, encoding sareng decoding aliran, nyingkronkeun lagu sareng kontrol kualitas sareng nanganan gangguan jaringan. Pikeun bagian urang, urang kedah mastikeun maca aliran tina kaméra jeung mikropon, ngagambar video, ngatur sambungan, ngadegkeun sambungan WebRTC sarta ngalirkeun aliran ka dinya, kitu ogé ngirimkeun pesen signalling antara klien pikeun nyieun sambungan (WebRTC sorangan ngajelaskeun ngan format data, tapi teu mindahkeun mékanisme na). Upami klien aya di tukangeun NAT, WebRTC nyambungkeun server STUN; upami ieu henteu ngabantosan, TURN server.

Sambungan p2p biasa henteu cekap pikeun urang, sabab urang hoyong ngarékam pelajaran pikeun analisa salajengna upami aya keluhan. Kituna urang ngirim WebRTC aliran ngaliwatan relay a Janus Gateway ku Meetecho. Hasilna, klien teu nyaho alamat silih urang, ngan ningali alamat server Janus; eta oge ngalakukeun fungsi hiji server sinyal. Janus ngagaduhan seueur fitur anu urang peryogikeun: otomatis ngalih ka TCP upami klienna diblokir UDP; tiasa ngarekam duanana aliran UDP sareng TCP; scalable; Malah aya plugin anu diwangun pikeun tés gema. Upami diperlukeun, server STUN sareng TURN ti Twilio otomatis disambungkeun.

Dina usum panas taun 2017, kami ngagaduhan dua server Janus ngajalankeun, ditambah hiji server tambahan pikeun ngolah file audio sareng pidéo anu dirékam, ku kituna henteu ngeusian prosesor anu utama. Nalika nyambungkeun, server Janus dipilih dina dasar ganjil-genap (nomer sambungan). Waktu éta, ieu cukup, nurutkeun parasaan urang, éta masihan kira margin kaamanan fourfold, persentase palaksanaan éta ngeunaan 80. Dina waktu nu sarua, harga diréduksi jadi ~ 2 rubles per palajaran, tambah ngembangkeun sarta rojongan.

Tina Skype ka WebRTC: kumaha urang ngatur komunikasi pidéo liwat wéb

Balik deui ka topik komunikasi video

Urang terus-terusan ngawas eupan balik ti siswa jeung guru guna ngaidentipikasi jeung ngabenerkeun masalah dina ragam timely. Dina usum panas taun 2018, kualitas sauran tetep di tempat munggaran diantara keluhan. Di hiji sisi, ieu hartosna urang parantos suksés ngatasi kakurangan sanés. Di sisi anu sanés, éta kedah dilakukeun sacara gancang: upami palajaran kaganggu, urang résiko kaleungitan nilaina, sakapeung sareng biaya mésér pakét salajengna, sareng upami pelajaran perkenalan kaganggu, urang résiko kaleungitan calon klien. sakabehna.

Dina waktos éta, komunikasi video urang masih dina mode MVP. Kantun nempatkeun, aranjeunna ngaluncurkeun éta, éta damel, aranjeunna skala sakali, aranjeunna ngartos kumaha ngalakukeunana - saé, saé. Lamun jalan, ulah ngalereskeun eta. Henteu aya anu ngahaja ngémutan masalah kualitas komunikasi. Ku Agustus, janten jelas yén ieu teu bisa neruskeun, sarta kami dibuka arah misah pikeun inohong kaluar naon salah WebRTC na Janus.

Dina input, arah ieu narima: hiji solusi MVP, euweuh metrics, euweuh tujuan, euweuh prosés pikeun perbaikan, bari 7% guru ngawadul ngeunaan kualitas komunikasi (teu aya data dina siswa boh).

Tina Skype ka WebRTC: kumaha urang ngatur komunikasi pidéo liwat wéb

A arah anyar keur lumangsung

Paréntah sigana sapertos kieu:

  • Kapala departemen, anu ogé pamekar utama.
  • QA mantuan nguji parobahan, néangan cara anyar pikeun nyieun kaayaan komunikasi teu stabil, sarta ngalaporkeun masalah ti garis hareup.
  • Analis terus-terusan milarian sababaraha korélasi dina data téknis, ningkatkeun analisa eupan balik pangguna, sareng mariksa hasil percobaan.
  • Manajer produk mantuan kalawan arah sakabéh jeung alokasi sumberdaya pikeun percobaan.
  • Pangembang kadua sering ngabantosan program sareng tugas anu aya hubunganana.

Pikeun mimitian, urang nyetél métrik anu rélatif dipercaya anu ngalacak parobahan dina penilaian kualitas komunikasi (rata-rata dina dinten, minggu, bulan). Dina waktos éta, ieu mangrupikeun sasmita ti guru; sasmita salajengna ti murid-muridna ditambahkeun kana éta. Teras aranjeunna mimiti ngawangun hipotesis ngeunaan naon anu salah, ngabenerkeunana, sareng ningali parobahan dina dinamika. Urang indit pikeun buah low-nongkrong: contona, urang ngaganti codec vp8 kalawan vp9, kinerja ningkat. Kami nyobian maén sareng setélan Janus sareng ngalaksanakeun percobaan sanés - dina kalolobaan kasus aranjeunna henteu ngakibatkeun nanaon.

Dina tahap kadua, hipotesa mecenghul: WebRTC mangrupakeun solusi peer-to-peer, sarta kami nganggo server di tengah. Panginten masalahna aya di dieu? Urang mimiti ngagali sareng mendakan perbaikan anu paling signifikan dugi ka ayeuna.

Dina waktos éta, server ti kolam renang dipilih nganggo algoritma anu rada bodo: masing-masing ngagaduhan "beurat" sorangan, gumantung kana saluran sareng kakuatan, sareng kami nyobian ngirim pangguna ka anu ngagaduhan "beurat" panggedéna. merhatikeun dimana pamaké éta lokasina géografis. Hasilna, guru ti St Petersburg bisa komunikasi jeung murid ti Sibéria ngaliwatan Moscow, teu ngaliwatan server Janus kami di St.

Algoritma parantos didamel deui: ayeuna, nalika pangguna muka platform kami, kami ngumpulkeun ping ti anjeunna ka sadaya server nganggo Ajax. Nalika nyieun sambungan, urang milih sapasang pings (guru-server jeung murid-server) kalawan jumlah pangleutikna. Kirang ping hartosna kirang jarak jaringan ka server; jarak pondok hartina probability handap kaleungitan pakét; Leungitna pakét mangrupikeun faktor négatip pangbadagna dina komunikasi pidéo. Pangsa negativity turun ku satengah dina tilu bulan (janten adil, ékspérimén sanésna dilaksanakeun dina waktos ayeuna, tapi ieu ampir pasti gaduh pangaruh anu paling ageung).

Tina Skype ka WebRTC: kumaha urang ngatur komunikasi pidéo liwat wéb

Tina Skype ka WebRTC: kumaha urang ngatur komunikasi pidéo liwat wéb

Kami nembe mendakan anu sanés anu teu jelas, tapi katingalina penting: tibatan hiji server Janus anu kuat dina saluran anu kandel, langkung saé gaduh dua anu langkung sederhana kalayan bandwidth anu langkung ipis. Ieu janten jelas sanggeus urang meuli mesin kuat dina harepan cramming saloba kamar (sesi komunikasi) kana éta dina waktos anu sareng. Server boga wates rubakpita, nu urang akurat bisa narjamahkeun kana Jumlah kamar - urang terang sabaraha bisa dibuka, contona, dina 300 Mbit / s. Pas aya loba teuing kamar kabuka dina server a, urang eureun milih eta pikeun kagiatan anyar dugi beban nurun. Ide éta, sanggeus meuli mesin kuat, urang bakal ngamuat saluran ka maksimum nu, ku kituna dina tungtungna bakal diwatesan ku processor na memori, teu ku rubakpita. Tapi tétéla yén sanggeus sababaraha kamar kabuka (420), sanajan kanyataan yén beban dina processor, memori sareng disk masih jauh pisan tina wates, negativity mimiti anjog di rojongan teknis. Tétéla, aya anu parah di jero Janus, sigana ogé aya sababaraha larangan. Urang mimitian experimenting, lowered wates rubakpita ti 300 ka 200 Mbit / s, sarta masalah indit jauh. Ayeuna urang meuli tilu server anyar sakaligus kalawan wates lemah sareng ciri, urang mikir yén ieu bakal ngakibatkeun perbaikan stabil dina kualitas komunikasi. Tangtosna, kami henteu nyobian terang naon anu aya di dinya; crutches kami sadayana. Dina pertahanan urang, hayu urang nyebutkeun yén dina momen anu diperlukeun pikeun ngajawab masalah mencet gancang-gancang, sarta teu ngalakukeun eta beautifully; sajaba ti, Janus keur urang kotak hideung ditulis dina C, eta pisan mahal tinker kalawan eta.

Tina Skype ka WebRTC: kumaha urang ngatur komunikasi pidéo liwat wéb

Nya, dina prosés urang:

  • diropéa sakabéh kagumantungan nu bisa diropéa, duanana dina server na on klien nu (ieu ogé percobaan, urang diawaskeun hasilna);
  • ngalereskeun sadaya bug anu dicirikeun anu aya hubunganana sareng kasus khusus, contona, nalika sambunganna turun sareng henteu dibalikeun sacara otomatis;
  • Urang ngayakeun loba rapat jeung pausahaan gawe dina widang komunikasi video jeung akrab jeung masalah urang: streaming kaulinan, pangatur webinars; urang diusahakeun sagalana nu seemed mangpaat pikeun kami;
  • Ngalaksanakeun tinjauan téknis ngeunaan hardware sareng kualitas komunikasi guru, anu paling seueur keluhan sumping.

Ékspérimén sareng parobihan saterasna ngamungkinkeun pikeun ngirangan sugema dina komunikasi antara guru tina 7,1% dina Januari 2018 janten 2,5% dina Januari 2019.

Naon salajengna

Stabilisasi platform Vimbox kami mangrupikeun salah sahiji proyék utama perusahaan pikeun 2019. Kami ngarep-arep yén urang bakal tiasa ngajaga moméntum sareng henteu deui ningali komunikasi pidéo dina keluhan luhur. Urang ngarti yén bagian signifikan tina keluhan ieu patali lags komputer pamaké sarta Internet, tapi urang kudu nangtukeun bagian ieu sareng ngajawab sésana. Sagalana sejenna mangrupakeun masalah teknis, sigana urang kudu bisa Cope jeung eta.

Kasusah utama nyaéta yén urang henteu terang ka tingkat naon éta leres-leres tiasa ningkatkeun kualitas. Milarian siling ieu mangrupikeun tugas utama. Ku kituna, dua percobaan direncanakeun:

  1. ngabandingkeun video via Janus kalawan p2p biasa dina kondisi tempur. Percobaan ieu parantos dilaksanakeun, teu aya bédana anu signifikan sacara statistik anu kapanggih antara solusi kami sareng p2p;
  2. Hayu urang nyayogikeun jasa (mahal) ti perusahaan anu ngahasilkeun artos sacara éksklusif pikeun solusi komunikasi pidéo, sareng ngabandingkeun jumlah negatip ti aranjeunna sareng anu tos aya.

Dua percobaan ieu bakal ngamungkinkeun urang pikeun ngaidentipikasi tujuan anu tiasa dihontal sareng fokus kana éta.

Salaku tambahan, aya sababaraha pancén anu tiasa direngsekeun rutin:

  • Urang nyieun métrik téknis kualitas komunikasi tinimbang ulasan subjektif;
  • Kami ngadamel log sési anu langkung rinci supados langkung akurat nganalisis kagagalan anu kajantenan, ngartos iraha sareng dimana persisna aranjeunna kajantenan, sareng kajadian anu katingalina teu aya hubunganana lumangsung dina waktos éta;
  • Urang nyiapkeun test kualitas sambungan otomatis saméméh palajaran, sarta ogé masihan klien kasempetan pikeun nguji sacara manual sambungan dina raraga ngurangan jumlah negativity disababkeun ku hardware na channel;
  • urang bakal ngamekarkeun jeung ngalaksanakeun leuwih tés beban komunikasi video dina kaayaan goréng, jeung leungitna pakét variabel, jsb;
  • urang ngarobah paripolah server bisi aya masalah pikeun ngaronjatkeun kasabaran sesar;
  • Kami bakal ngingetkeun pangguna upami aya anu lepat dina sambungan na, sapertos Skype, supados anjeunna ngartos yén masalahna aya di sisi na.

Kusabab April, arah komunikasi video geus jadi proyék misah full-fledged dina Skyeng, kaayaan produk sorangan, teu ngan bagian tina Vimbox. Ieu ngandung harti yén urang dimimitian néangan jalma on gawé bareng video dina modeu full time. Muhun, sakumaha salawasna Urang néangan loba jalma alus.

Sareng, tangtosna, urang terus aktip komunikasi sareng jalma sareng perusahaan damel sareng komunikasi video. Upami anjeun hoyong tukeur pangalaman sareng kami, kami bakal bungah! Koméntar, ngahubungan - kami bakal ngajawab sadayana.

sumber: www.habr.com