Skype'тан WebRTCге: веб аркылуу видео байланышты кантип уюштурганбыз

Skype'тан WebRTCге: веб аркылуу видео байланышты кантип уюштурганбыз

Видео байланыш Vimbox платформасында мугалим менен студенттин ортосундагы байланыштын негизги жолу. Биз Skype'тан көп убакыт мурун баш тарттык, бир нече үчүнчү тараптын чечимдерин сынап көрдүк жана акыры WebRTC - Janus-шлюз айкалышында отурукташып калдык. Бир канча убакытка чейин биз бардыгына ыраазы болдук, бирок дагы эле кээ бир терс жактары чыга берди. Натыйжада өзүнчө видео багыт түзүлдү.

Мен жаңы багыттын жетекчиси Кирилл Роговойдон Скайенгдеги видеобайланыштын эволюциясы, табылган көйгөйлөр, чечүү жолдору жана акыры биз колдонгон балдактар ​​тууралуу айтып берүүсүн өтүндүм. Макала веб-тиркеме аркылуу өз алдынча видео жараткан компаниялар үчүн пайдалуу болот деп ишенебиз.

Бир аз тарыхы

2017-жылдын жайында Skyeng өнүктүрүү бөлүмүнүн башчысы Сергей Сафонов Backend Conf конференциясында биз "Skype'ди таштап, WebRTCди кантип ишке ашырганыбыз" тууралуу айтып берди. Каалоочулар сөздүн жазуусун дарегинен көрө алышат байланыш (~45 мин) жана бул жерде мен анын маңызын кыскача айтып берейин.

Skyeng мектеби үчүн видео байланыш дайыма мугалим менен окуучунун байланышынын артыкчылыктуу жолу болуп келген. Башында Skype колдонулган, бирок ал бир катар себептерден, биринчи кезекте, журналдардын жоктугунан жана веб-тиркемеге түздөн-түз интеграциялоонун мүмкүн эместигинен улам канааттандырарлык эмес болчу. Ошондуктан биз ар кандай эксперименттерди жүргүздүк.

Чынында, видео байланыш үчүн талаптарыбыз болжол менен төмөнкүдөй болгон:
- туруктуулук;
— бир сабактын төмөн баасы;
— сабактарды жаздыруу;
— ким канча сүйлөп жатканын байкоо (сабак учурунда окуучулардын мугалимге караганда көбүрөөк сүйлөгөнү биз үчүн маанилүү);
— сызыктуу масштабдоо;
- UDP жана TCP да колдонуу мүмкүнчүлүгү.

Биринчи аракет Tokbox 2013-жылы ишке ашырылган. Баары жакшы болду, бирок ал абдан кымбат болуп чыкты - бир сабак үчүн 113 рубл - жана пайда жеп.

Андан кийин 2015-жылы Voximplant интеграцияланган. Бул жерде бизге ким канча сүйлөп жатканын байкоо үчүн зарыл болгон функция болгон жана ошол эле учурда чечим бир топ арзаныраак болду: эгер аудио гана жазылса, бир сабак үчүн 20 рубль турат. Бирок, ал UDP аркылуу гана иштеген жана TCPге өтө алган эмес. Бирок, студенттердин 40% га жакыны аны колдонушту.

Бир жылдан кийин бизде өздөрүнүн өзгөчө талаптары бар корпоративдик кардарлар пайда боло баштады. Мисалы, баары браузер аркылуу иштеши керек, компания http жана https гана ачат; башкача айтканда Skype же UDP жок. Корпоративдик кардарлар = акча, ошондуктан алар Токбокско кайтып келишти, бирок баа маселеси чечилген жок.

Чечим - WebRTC жана Janus

колдонууну чечти тең-теңге видео байланыш үчүн браузер платформа WebRTC. Ал туташууну орнотуу, агымдарды коддоо жана декоддоо, тректерди синхрондоштуруу жана тармак мүчүлүштүктөрүн чечүү менен сапатты көзөмөлдөө үчүн жооптуу. Биз өз тарапыбыздан камерадан жана микрофондон агымдарды окууну, видео тартууну, байланышты башкарууну, WebRTC байланышын орнотууну жана ага агымдарды өткөрүп берүүнү, ошондой эле байланыш түзүү үчүн кардарлардын ортосунда сигналдык билдирүүлөрдү берүүнү камсыз кылышыбыз керек (WebRTC өзү гана сүрөттөйт маалымат форматы, бирок анын механизмдери эмес). Эгерде кардарлар NATтын артында турса, WebRTC STUN серверлерин туташтырат; эгерде бул жардам бербесе, серверлерди TURN.

Кадимки p2p байланышы биз үчүн жетишсиз, анткени биз даттануулар болгон учурда андан ары талдоо үчүн сабактарды жазгыбыз келет. Ошондуктан биз WebRTC агымдарын реле аркылуу жөнөтөбүз Meetecho тарабынан Janus Gateway. Натыйжада, кардарлар Janus серверинин дарегин гана көрүп, бири-биринин даректерин билишпейт; сигнал серверинин функцияларын да аткарат. Janus бизге керектүү көптөгөн функцияларга ээ: эгерде кардар UDP бөгөттөлсө, автоматтык түрдө TCPге өтөт; UDP жана TCP агымдарын да жаздыра алат; масштабдуу; Эхо тесттери үчүн орнотулган плагин да бар. Зарыл болсо, Twilioдан STUN жана TURN серверлери автоматтык түрдө туташтырылат.

2017-жылдын жайында бизде эки Janus сервери, ошондой эле негизгилеринин процессорлорун ээлеп калбоо үчүн жазылган чийки аудио жана видео файлдарды иштетүү үчүн кошумча сервер иштеп турду. Туташуу учурунда Janus серверлери жуп-так негизде тандалып алынган (кошуу номери). Ошол учурда, бул жетиштүү болгон, биздин сезимдер боюнча, ал болжол менен төрт эсе коопсуздук маржа берди, ишке ашыруу пайызы жөнүндө 80. Ошол эле учурда, баасы сабакка ~ 2 рублга чейин кыскарган, плюс өнүктүрүү жана колдоо.

Skype'тан WebRTCге: веб аркылуу видео байланышты кантип уюштурганбыз

Видео байланыш темасына кайтуу

Көйгөйлөрдү өз убагында аныктоо жана оңдоо үчүн студенттердин жана мугалимдердин пикирлерин такай көзөмөлдөп турабыз. 2018-жылдын жай айларында чалуунун сапаты даттануулар арасында биринчи орунда турган. Бул бир жагынан биз башка кемчиликтерди ийгиликтуу чечтик дегендикке жатат. Экинчи жагынан, шашылыш түрдө бир нерсе кылуу керек болчу: эгер сабак үзгүлтүккө учураса, биз анын баасын жоготуп алуу коркунучу бар, кээде кийинки пакетти сатып алуу баасы менен бирге, ал эми киришүү сабагы үзгүлтүккө учураса, потенциалдуу кардарды жоготуп алуу коркунучу бар. толугу менен.

Ал убакта биздин видео байланыш дагы эле MVP режиминде болчу. Жөнөкөй сөз менен айтканда, алар аны ишке киргизишти, иштеди, алар аны бир жолу чоңойтушту, алар муну кантип жасоону түшүнүштү - жакшы, сонун. Эгер ал иштесе, аны оңдобоңуз. Байланыш сапаты маселесин эч ким атайылап көтөргөн жок. Август айына чейин муну улантуу мүмкүн эместиги айкын болду жана биз WebRTC жана Janus менен эмне туура эмес экенин аныктоо үчүн өзүнчө багыт баштадык.

Киргизүүдө бул багыт алынды: MVP чечими, метрика жок, максаттар жок, жакшыртуу процесстери жок, ал эми мугалимдердин 7% байланыштын сапатына нааразы болушат (окуучулар жөнүндө да маалымат жок).

Skype'тан WebRTCге: веб аркылуу видео байланышты кантип уюштурганбыз

Жаңы багыт жүрүп жатат

Буйрук төмөнкүдөй көрүнөт:

  • Негизги иштеп чыгуучу да болум башчысы.
  • QA өзгөрүүлөрдү текшерүүгө жардам берет, туруксуз байланыш шарттарын түзүүнүн жаңы жолдорун издейт жана көйгөйлөрдү алдыңкы саптан кабарлайт.
  • Аналитик ар дайым техникалык маалыматтарда ар кандай корреляцияларды издейт, колдонуучунун пикирлерин талдоону жакшыртат жана эксперименттердин натыйжаларын текшерет.
  • Продукт менеджери эксперименттер үчүн ресурстарды жалпы багыттоо жана бөлүштүрүү менен жардам берет.
  • Экинчи иштеп чыгуучу көбүнчө программалоо жана ага байланыштуу тапшырмалар менен жардам берет.

Баштоо үчүн, биз байланыш сапатына баа берүүдөгү өзгөрүүлөргө көз салган салыштырмалуу ишенимдүү метрика түздүк (күндөр, жумалар, айлар боюнча орточо). Ал кезде бул мугалимдердин баалары болчу, кийин аларга окуучулардын баалары кошулчу. Андан кийин алар туура эмес иштеп жаткан нерселер жөнүндө гипотеза куруп, аны оңдоп, динамикадагы өзгөрүүлөрдү карай башташты. Биз төмөн илинип турган мөмө үчүн бардык: мисалы, биз vp8 кодегин vp9 менен алмаштырдык, аткаруу жакшырды. Биз Janus орнотуулары менен ойноого жана башка эксперименттерди жүргүзүүгө аракет кылышкан - көпчүлүк учурда алар эч нерсеге алып келген жок.

Экинчи этапта гипотеза пайда болду: WebRTC - бул тең-теңге чечим жана биз ортодо серверди колдонобуз. Балким, маселе ушул жерде жаткандыр? Биз казып баштадык жана азыркыга чейин эң олуттуу жакшыртууну таптык.

Ошол учурда бассейнден сервер абдан акылсыз алгоритм менен тандалган: каналга жана кубаттуулукка жараша ар биринин өзүнүн "салмагы" бар болчу, биз колдонуучуну эң чоң "салмагы" менен жөнөтүүгө аракет кылдык. колдонуучунун географиялык жактан жайгашкан жерине көңүл буруу. Натыйжада Санкт-Петербургдан келген мугалим Сибирден келген студент менен биздин Санкт-Петербургдагы Janus серверибиз аркылуу эмес, Москва аркылуу байланыша алган.

Алгоритм кайра жасалды: азыр колдонуучу биздин платформаны ачканда, биз андан Ajax аркылуу бардык серверлерге пингдерди чогултабыз. Байланышты орнотууда биз эң аз өлчөмдөгү жуп пингди (мугалим-сервер жана студент-сервер) тандайбыз. Азыраак пинг серверге азыраак тармак аралыкты билдирет; кыскараак аралык пакеттерди жоготуу ыктымалдыгын билдирет; Пакеттин жоголушу видео байланыштагы эң чоң терс фактор. Терс үлүшү үч айдын ичинде эки эсеге кыскарды (адилеттүүлүк үчүн, башка эксперименттер ушул убакта жүргүзүлгөн, бирок бул дээрлик, албетте, абдан таасир эткен).

Skype'тан WebRTCге: веб аркылуу видео байланышты кантип уюштурганбыз

Skype'тан WebRTCге: веб аркылуу видео байланышты кантип уюштурганбыз

Жакында биз дагы бир ачык-айкын эмес, бирок көрүнгөн маанилүү нерсени таптык: калың каналдагы күчтүү Janus серверинин ордуна, өткөрүү жөндөмдүүлүгү жукараак эки жөнөкөй сервер болгону жакшы. Бул биз бир эле учурда ошончо бөлмөнү (байланыш сеансын) жыйноо үмүтү менен күчтүү машиналарды сатып алгандан кийин айкын болду. Серверлердин өткөрүү жөндөмдүүлүгүнүн чеги бар, аны биз бөлмөлөрдүн санына так которо алабыз - биз канча ачса болорун билебиз, мисалы, 300 Мбит/сек. Серверде өтө көп бөлмөлөр ачылса, жүк азаймайынча, биз аны жаңы иш-аракеттер үчүн тандоону токтотобуз. Идея күчтүү машинаны сатып алып, каналды максималдуу түрдө жүктөйбүз, акырында ал өткөрүү жөндөмдүүлүгү менен эмес, процессор жана эс тутум менен чектелет. Бирок белгилүү бир сандагы ачык бөлмөлөрдөн кийин (420) процессорго, эс тутумга жана дискке жүктөм дагы эле чектен өтө алыс болгонуна карабастан, техникалык колдоого терс көрүнүштөр келе баштаганы белгилүү болду. Кыязы, Янустун ичинде бир нерсе начарлап баратат, балким, ал жерде да кандайдыр бир чектөөлөр бар. Биз эксперимент жасай баштадык, өткөрүү жөндөмдүүлүгүнүн чегин 300дөн 200 Мбит/сек чейин түшүрдүк жана көйгөйлөр жок болду. Эми биз дароо эле үч жаңы серверди сатып алдык, бул байланыштын сапатынын туруктуу жакшырышына алып келет деп ойлойбуз. Албетте, биз ал жерде эмне болуп жатканын түшүнүүгө аракет кылган жокпуз; биздин балдактарыбыз бардыгы. Коргонгонубузда, ошол учурда актуалдуу проблеманы мүмкүн болушунча тезирээк чечиш керек эле, аны кооз жасабоо керек болчу дейли; Мындан тышкары, Janus биз үчүн C тилинде жазылган кара куту, аны менен иштөө абдан кымбат.

Skype'тан WebRTCге: веб аркылуу видео байланышты кантип уюштурганбыз

Ооба, процессте биз:

  • серверде да, кардарда да жаңыртылышы мүмкүн болгон бардык көз карандылыктарды жаңыртты (бул дагы эксперименттер болгон, биз натыйжаларга көз салдык);
  • конкреттүү учурларга байланышкан бардык аныкталган мүчүлүштүктөрдү, мисалы, байланыш үзүлүп, автоматтык түрдө калыбына келтирилбегенде;
  • Биз видеокоммуникация тармагында иштеген жана биздин көйгөйлөр менен таанышкан компаниялар менен көптөгөн жолугушууларды өткөрдүк: стриминг оюндары, вебинарларды уюштуруу; биз өзүбүзгө пайдалуу көрүнгөндүн баарын сынап көрдүк;
  • Эң көп даттануулар түшкөн мугалимдердин аппараттык жана байланыш сапатына техникалык кароо жүргүзүлдү.

Эксперимент жана андан кийинки өзгөртүүлөр мугалимдердин баарлашууга болгон нааразычылыгын 7,1-жылдын январындагы 2018%дан 2,5-жылдын январындагы 2019%га чейин төмөндөтүүгө мүмкүндүк берди.

кийинкиси эмне

Биздин Vimbox платформабызды турукташтыруу компаниянын 2019-жылдагы негизги долбоорлорунун бири. Биз ылдамдыкты сактап кала алабыз жана жогорку даттанууларда мындан ары видео байланышты көрбөйбүз деген үмүтүбүз чоң. Бул арыздардын олуттуу бөлүгү колдонуучулардын компьютерлеринин жана интернетинин артта калууларына байланыштуу экенин түшүнөбүз, бирок бул бөлүгүн аныктап, калганын чечишибиз керек. Калганынын баары техникалык көйгөй, биз аны жеңе алышыбыз керек окшойт.

Негизги кыйынчылык – биз сапатты кандай деңгээлде көтөрүү мүмкүн экенин билбейбиз. Бул шыпты табуу негизги милдет болуп саналат. Ошентип, эки эксперимент пландаштырылган:

  1. Janus аркылуу видеону согуштук шарттарда кадимки p2p менен салыштырыңыз. Бул эксперимент буга чейин жүргүзүлгөн, биздин чечим менен p2p ортосунда статистикалык маанилүү айырма табылган жок;
  2. Келгиле, видеобайланыш чечимдеринен акча тапкан компаниялардан (кымбат) кызматтарды сунуштайлы жана алардан болгон терс көрүнүштөрдүн көлөмүн учурдагы менен салыштырып көрөлү.

Бул эки эксперимент бизге жетүүгө мүмкүн болгон максатты аныктоого жана ага көңүл бурууга мүмкүндүк берет.

Мындан тышкары, күнүмдүк чечилиши мүмкүн болгон бир катар милдеттер бар:

  • Биз субъективдүү кароонун ордуна байланыш сапатынын техникалык метрикасын түзөбүз;
  • Биз пайда болгон мүчүлүштүктөрдү так талдоо, алар качан жана кайсы жерде болгонун жана ошол учурда кандай байланышы жок көрүнгөн окуялар болгонун түшүнүү үчүн кененирээк сессия журналдарын түзөбүз;
  • Сабактын алдында биз автоматтык туташуу сапатын текшерүүнү даярдайбыз, ошондой эле кардарга анын аппараттык жана каналынан келип чыккан терс көрүнүштөрдү азайтуу үчүн туташууну кол менен сынап көрүү мүмкүнчүлүгүн беребиз;
  • биз начар шарттарда, өзгөрүлмө пакет жоготуулары менен дагы видео байланыш жүктөө тесттерин иштеп чыгабыз жана өткөрөбүз;
  • катага чыдамдуулукту жогорулатуу үчүн көйгөйлөр болгон учурда серверлердин жүрүм-турумун өзгөртөбүз;
  • Биз колдонуучуга анын байланышында кандайдыр бир катачылык болсо, Skype сыяктуу эле эскертебиз, ал көйгөй анын тарабында экенин түшүнөт.

Апрель айынан бери видео байланыш багыты Skyeng ичиндеги толук кандуу өзүнчө долбоор болуп калды, ал Vimboxтун бир бөлүгү эмес, өзүнүн продуктусу менен алектенет. Бул биз адамдарды издей баштаганыбызды билдирет толук убакыт режиминде видео менен иштөө. Ооба, дайыма эле Биз көп жакшы адамдарды издеп жатабыз.

Анан, албетте, биз видео байланыш менен иштеген адамдар жана компаниялар менен активдүү баарлашууну улантабыз. Биз менен тажрыйба алмашууну кааласаңыз, биз кубанычтабыз! Комментарий калтырыңыз, байланышыңыз - биз баарына жооп беребиз.

Source: www.habr.com