Peer-to-peer видео чат, базиран на WebRTC. WebRTC

Peer-to-peer видео чат, базиран на WebRTC.  WebRTC
Peer-to-peer видео чат, базиран на WebRTC. WebRTC

Целта на тази статия е да използва демонстрационна проба на peer-to-peer видео чат (p2p видео чат), за да се запознаете с неговата структура и принцип на работа. За тази цел ще използваме демонстрацията на многопотребителски peer-to-peer видеочат webrtc.io-demo. Може да бъде изтеглен от връзката: https://github.com/webRTC/webrtc.io-demo/tree/master/site.

Трябва да се отбележи, че GitHub е сайт или уеб услуга за съвместно разработване на уеб проекти. На него разработчиците могат да публикуват кодовете на своите разработки, да ги обсъждат и да комуникират помежду си. Освен това някои големи ИТ компании публикуват официалните си хранилища на този сайт. Услугата е безплатна за проекти с отворен код. GitHub е хранилище за отворени, безплатни библиотеки с изходен код.

Така че ще поставим демонстрационния образец на peer-to-peer видео чат, изтеглен от GitHub, на C устройството на персонален компютър в създадената директория за нашето приложение „webrtc_demo“.


Ориз. 1

Както следва от структурата (фиг. 1), видеочатът peer-to-peer се състои от клиентски script.js и сървърни server.js скриптове, реализирани на програмния език JavaScript. Скрипт (библиотека) webrtc.io.js (КЛИЕНТ) - осигурява организирането на комуникации в реално време между браузъри, използващи схема peer-to-peer: "клиент-клиент", и webrtc.io.js (КЛИЕНТ) и webrtc. io.js (SERVER), Използвайки протокола WebSocket, те осигуряват дуплексна комуникация между браузъра и уеб сървъра, използвайки архитектура клиент-сървър.

Скриптът webrtc.io.js (SERVER) е включен в библиотеката webrtc.io и се намира в директорията node_modules\webrtc.io\lib. Интерфейсът за видео чат index.html е реализиран в HTML5 и CSS3. Съдържанието на файловете на приложението webrtc_demo може да се види с помощта на един от html редакторите, например "Notepad++".

Ще проверим принципа на работа на видео чата във файловата система на компютъра. За да стартирате сървъра (server.js) на компютър, трябва да инсталирате средата за изпълнение node.js. Node.js ви позволява да стартирате JavaScript код извън браузъра. Можете да изтеглите node.js от връзката: http://nodejs.org/ (версия v0.10.13 от 07/15/13). На главната страница на уебсайта node.org щракнете върху бутона за изтегляне и отидете на http://nodejs.org/download/. За потребители на Windows, първо изтеглете win.installer (.msi), след това стартирайте win.installer (.msi) на компютъра и инсталирайте nodejs и "npm package manager" в директорията Program Files.




Ориз. 2

По този начин node.js се състои от среда за разработване и изпълнение на JavaScript код, както и набор от вътрешни модули, които могат да бъдат инсталирани с помощта на мениджъра или мениджъра на пакети npm.

За да инсталирате модули, трябва да изпълните командата в командния ред от директорията на приложението (например "webrtc_demo"): npm инсталира име на модул. По време на инсталирането на модули мениджърът на npm създава папка node_modules в директорията, от която е извършена инсталацията. По време на работа nodejs автоматично свързва модули от директорията node_modules.

Така че, след като инсталирате node.js, отворете командния ред и актуализирайте експресния модул в папката node_modules на директорията webrtc_demo, като използвате мениджъра на пакети npm:

C:\webrtc_demo>npm инсталирайте експресно

Експресният модул е ​​уеб рамка за node.js или уеб платформа за разработка на приложения. За да имате глобален достъп до express, можете да го инсталирате по следния начин: npm install -g express.

След това актуализирайте модула webrtc.io:

C:\webrtc_demo>npm инсталирайте webrtc.io

След това от командния ред стартираме сървъра: server.js:

C:\webrtc_demo>node server.js


Ориз. 3

Това е всичко, сървърът работи успешно (Фигура 3). Сега, като използвате уеб браузър, можете да се свържете със сървъра чрез IP адрес и да заредите уеб страницата index.html, от която уеб браузърът ще извлече кода на клиентския скрипт - script.js и кода на скрипта webrtc.io.js, и изпълни ги. За да управлявате peer-to-peer видео чат (за да установите връзка между два браузъра), трябва да се свържете със сървъра за сигнали, работещ на node.js от два браузъра, които поддържат webrtc.

В резултат на това интерфейсът на клиентската част на приложението за комуникация (видео чат) ще се отвори с искане за разрешение за достъп до камерата и микрофона (фиг. 4).



Ориз. 4

След натискане на бутона "Разрешаване", камерата и микрофонът са свързани за мултимедийна комуникация. Освен това можете да комуникирате чрез текстови данни чрез интерфейса за видео чат (фиг. 5).



Ориз. 5

Трябва да бъде отбелязано че. Сървърът е сигнализиращ сървър и е предназначен основно за установяване на връзки между потребителски браузъри. Node.js се използва за работа със сървърния скрипт server.js, който предоставя WebRTC сигнализация.

Европейските интернет потребители са разделени на две части: според проучване на Института за изследване на общественото мнение в Аленбах (Германия), Skype, чат и системите за незабавни съобщения са станали неразделна част от ежедневието на 16,5 милиона възрастни и деца, 9 милиона използват тези услуги от случай след случай, а 28 милиона не ги докосват.

Това може да се промени с интегрирането на Firefox технология за комуникация в реално време (WebRTC), както и на самия клиент. Стартирането на аудио и видео чат сега не е по-трудно от отварянето на уебсайт. Услуги като Facebook и Skype, от друга страна, разчитат на решения, използващи отделен клиент и създаване на акаунт.

WebRTC се отличава не само с лекотата на използване. Този метод дори ви позволява да инсталирате директна връзка между два браузъра. По този начин аудио и видео данните не преминават през сървър, където може да има претоварване или където администраторът не е особено чувствителен към поверителността или защитата на данните. Благодарение на директната връзка, WebRTC не изисква регистрация или акаунт в която и да е услуга.

За да започнете разговор, трябва само да следвате връзката. Комуникацията остава лична, тъй като потокът от данни е криптиран. Google започна активно да се ангажира с комуникация в реално време през браузъра през 2011 г., когато публикува изходния код на своята WebRTC реализация.

Скоро след това Chrome и Firefox получиха свои собствени WebRTC двигатели. В момента техните мобилни версии са оборудвани както с тази технология, така и с WebView 3.6 енджин, инсталиран с Android 5.0, който се използва от приложенията.

За комуникация в реално време, подходящи JavaScript интерфейси трябва да бъдат внедрени в уеб визуализатора. С GetUserMedia софтуерът позволява заснемане от аудио и видео източници, т.е. уеб камера и микрофон. RTCPeerConnection отговаря за установяването на връзката, както и за самата комуникация.

Успоредно с интегрирането на браузъра, работна група на World Wide Web Consortium (W3C) ускори процеса на стандартизация на WebRTC. Той трябва да бъде завършен през 2015 г.

WebRTC се задоволява с малко

Използването на услугата WebRTC не изисква много ресурси, тъй като сървърът свързва само събеседниците. Установяването на връзка също не е особено трудно. Първо, браузърът сигнализира на WebRTC сървъра, че планира да инициира повикване. Получава HTTPS връзка от сървъра - комуникацията е криптирана. Потребителят изпраща тази връзка на своя събеседник. След това браузърът пита потребителя за разрешение за достъп до уеб камерата и микрофона.

За да установи директна поточно връзка със събеседника, браузърът получава своя IP адрес и данни за конфигурация от услугата WebRTC. Уеб визуализаторът на другия човек прави същото.

За да може стрийминг връзката да функционира гладко и с добро качество, в браузъра работят три двигателя. Два от тях оптимизират и компресират аудио и видео данни, третият отговаря за тяхното транспортиране. Той изпраща данни чрез SRTP протокол(Secure Real-time Transport Protocol), който позволява криптиран стрийминг в реално време.

Ако не може да се установи директна връзка, WebRTC търси друг път. Например, това се случва, когато мрежовите настройки не позволяват на STUN сървъра да може да докладва IP адреса. Стандартът WebRTC предвижда, че в този случай разговорът ще се проведе, но с междинно активиране на сървъра TURN (Traversal Using Relays around NAT). Така че на уебсайта netscan.co можете да проверите дали WebRTC е внедрен на вашия компютър и с вашия достъп до мрежата.

Как се осъществява връзката

Първо трябва да регистрирате разговора (1). Услугата WebRTC предоставя връзка, която трябва да бъде изпратена на събеседника. Браузърът, използвайки STUN сървъра, открива собствения си IP адрес (2), изпраща го на услугата и получава IP на партньора, за да установи директна връзка (3). Ако STUN не успее, разговорът се пренасочва с помощта на сървъра TURN (4).

Комуникацията чрез технологията WebRTC в браузъра се стартира с помощта на JavaScript код. След това три двигателя отговарят за комуникацията: гласовите и видео двигателите събират мултимедийни данни от уеб камерата и микрофона, а транспортният двигател комбинира информацията и изпраща потока в криптирана форма, използвайки SRTP (Secure Real-time Protocol).

Кои браузъри работят с WebRTC

Chrome и Firefox имат WebRTC двигател, който използва услуги като talky.io. Браузърът на Mozilla може да работи директно със собствения си клиент.

Google и Mozilla продължават да развиват идеята за комуникация в реално време: Chrome може да хоства WebRTC конференции с множество участници, а новият клиент Hello на Firefox е разработен в сътрудничество с дъщерно дружество на телекомуникационния гигант Telefonica. Apple засега остава встрани; все още не трябва да очаквате WebRTC в Safari. Има обаче много алтернативни приложения за iOS и добавки за Safari.

Microsoft следва малко по-различен курс. Като собственик на конкурентната услуга Skype, тази компания няма да капитулира толкова лесно пред WebRTC. Вместо това Microsoft разработва технология, наречена ORTC (Object Real-Time Communications) за Internet Explorer.

Разликите от WebRTC, като различни кодеци и протоколи за установяване на контакт със сървъра, са незначителни и с времето най-вероятно ще се превърнат в допълнение към стандарта WebRTC, което включва тези разлики. Така остава само Apple - както обикновено.

снимка:производствени компании; goodluz/Fotolia.com

WebRTC (съкращение от уеб комуникации в реално време) е технология, която позволява поточно предаване на аудио и видео между браузъри и мобилни приложения.


Развитието на тази технология се конкурира със Skype. WebRTC може да се използва за организиране на видеоконференции директно в браузъра. Проектът е с отворен код и се рекламира активно от Google и по-специално от екипа за разработка на браузъра Google Chrome.


Потребителските браузъри, благодарение на технологията WebRTC, могат да прехвърлят данни директно един към друг. WebRTC не се нуждае от отделен сървър за съхраняване и обработка на данни. Всички данни се обработват директно от браузърите и мобилните приложения на крайните потребители.


Технологията WebRTC се поддържа от всички популярни браузъри Mozilla Firefox, Opera, Google Chrome (и всички браузъри, базирани на Google Chrome), както и мобилни приложения, базирани на Android и iOS.

Опасността от WebRTC

Опасността от технологията WebRTC се крие в определянето на вашия реален IP адрес. Тъй като връзката е директна към друг потребител, браузър, уебсайт или мобилно приложение, мрежовите настройки се игнорират. За да създадат аудио и видео комуникация, браузърите трябва да обменят външни и локални IP адреси.

Анонимна VPN услуга решава този проблем и скрива истинския IP адрес. Максимумът, който може да бъде открит, е локалният IP адрес, зададен на потребителя от VPN мрежата. Това не е опасно, тъй като ще се показват същите локални IP адреси, ако използвате рутер за разпространение на интернет.


Ако използвате прокси, тогава WebRTC ще може да определи вашия реален IP адрес зад проксито или IP адреса на VPN сървъра, ако използвате VPN + прокси верига.


WebRTC също определя вашия реален IP адрес, когато използвате мрежата Tor.


Най-доброто решение е да деактивирате WebRTC технологията, ако не я използвате.

Как да деактивирате WebRTC в браузърите

Бърза навигация на тази страница.

Как да деактивирате WebRTC в Mozilla Firefox

Браузърът Mozilla Firefox е единственият браузър, който ви позволява да деактивирате технологията WebRTC, без да инсталирате допълнителни добавки.

Ръчна настройка

Ако не използвате технологията WebRTC, можете да я деактивирате напълно. В случай, че е необходимо периодично да използвате WebRTC, това е по-удобно.

За да деактивирате WebRTC технологията в Mozilla Firefox, трябва да въведете следния текст в адресната лента на браузъра и да натиснете бутона Enter.

Относно: config


Щракнете върху бутона Приемам риска.


Направете следното:

  1. Въведете текст в лентата за търсене и натиснете Enter.
  2. media.peerconnection.enabled
  3. Щракнете с десния бутон върху линията и изберете Превключване. Или кликнете два пъти върху линията.


След тези стъпки WebRTC ще бъде деактивиран.

Конфигуриране чрез приставката WebRTC Control

Ако използвате технологията WebRTC, тогава деактивирането и активирането чрез настройките ще отнеме много време. Инсталирайте плъгин, който ще ви помогне да включвате и изключвате WebRTC с 1 щракване.

Отворете Добавки.


Изберете:

  1. Секция за търсене
  2. Въведете името на приставката в лентата за търсене: WebRTC контрол
  3. Щракнете върху бутона Инсталиране


Как да деактивирате WebRTC в браузъра Opera

За да деактивирате WebRTC в браузъра Opera, отидете в галерията с разширения.


Следвай тези стъпки:

  1. Въведете името на приставката в лентата за търсене: WebRTC контрол
  2. Кликнете върху плъгина


Щракнете върху Добавяне към Opera.


Активирайте плъгина. Иконата на приставката трябва да стане синя, за да блокира WebRTC.

Как да деактивирате WebRTC в Google Chrome

За да деактивирате WebRTC в браузъра Google Chrome, отидете в секцията Разширения.


Превъртете надолу страницата и щракнете върху Още разширения.


Следвай тези стъпки:

  1. Въведете името на приставката в лентата за търсене: WebRTC контрол
  2. Щракнете върху бутона Инсталиране.



Активирайте плъгина. Иконата на приставката трябва да стане синя, за да блокира WebRTC.

Как да деактивирате WebRTC в браузъра Yandex

За да деактивирате WebRTC в браузъра Yandex, отидете в секцията Добавки.


Превъртете надолу страницата и щракнете върху Каталог с разширения за Yandex Browser.


Следвай тези стъпки:

  1. Въведете името на приставката в лентата за търсене: WebRTC контрол
  2. Кликнете върху приставката, за да инсталирате.


Щракнете върху Добавяне към браузъра Yandex.


Щракнете върху Инсталиране на разширение.


Активирайте плъгина. Иконата на приставката трябва да стане синя, за да блокира WebRTC.

Как да деактивирате WebRTC в браузъра SRWare Iron

Браузърът SRWare Iron е базиран на Google Chrome.

Инсталирайте приставката WebRTC Control според инструкциите за .

WebRTC(Web Real-Time Communications) е технология, която позволява на уеб приложенията и сайтовете да улавят и избирателно да предават аудио и/или видео медийни потоци, както и да обменят произволни данни между браузъри, без непременно да използват посредници. Наборът от стандарти, които технологията WebRTC включва, ви позволява да обменяте данни и да провеждате peer-to-peer телеконференции, без потребителят да трябва да инсталира добавки или друг софтуер на трета страна.

WebRTC се състои от няколко взаимосвързани интерфейса за програмиране на приложения (API) и протоколи, които работят заедно. Документацията, която ще намерите тук, ще ви помогне да разберете основите на WebRTC, как да настроите и използвате връзка за поточно предаване на данни и медии и много повече.

Съвместимост

Тъй като внедряването на WebRTC е все още в начален стадий и всеки браузър има WebRTC функционалност, ние силно препоръчваме да използвате библиотеката на Google Adapter.js polyfill, преди да започнете да работите върху вашия код.

Adapter.js използва клинове и полифили, за да преодолее безпроблемно разликите в реализациите на WebRTC сред контекстите, които го поддържат. Adapter.js също обработва префикси на доставчици и други разлики в именуването на свойства, което улеснява разработването на WebRTC с най-съвместими резултати. Библиотеката се предлага и като NPM пакет.

За да проучите допълнително библиотеката Adapter.js, разгледайте.

Концепции и използване на WebRTC

WebRTC е многофункционален и заедно с предоставя мощни мултимедийни възможности за уеб, включително поддръжка за аудио и видео конференции, споделяне на файлове, заснемане на екрана, управление на самоличността и оперативна съвместимост с наследени телефонни системи, включително поддръжка за DTMF тонално набиране. Връзките между възлите могат да се създават без използването на специални драйвери или добавки и често без междинни услуги.

Връзката между два възела е представена като интерфейсен обект RTCPeerConnection. След като връзката бъде установена и отворена, с помощта на обекта RTCPeerConnection, медийни потоци ( MediaStream s) и/или канали за данни ( RTCDataChannel s) могат да бъдат добавени към връзката.

Медийните потоци могат да се състоят от произволен брой песни (тракове) с медийна информация. Тези записи са представени от интерфейсни обекти на MediaStreamTrack и могат да съдържат един или повече типове медийни данни, включително аудио, видео, текст (като субтитри или заглавия на глави). Повечето потоци се състоят от поне само един аудио запис (един аудио запис) или видео запис и могат да бъдат изпращани и получавани като потоци (медия в реално време) или записвани във файл.

Можете също така да използвате връзка между два възела, за да обменяте произволни данни, като използвате интерфейсния обект RTCDataChannel, който може да се използва за предаване на информация за услугата, данни за фондовия пазар, пакети за състояние на играта, прехвърляне на файлове или частни канали за данни.

необходими са повече подробности и връзки към съответните ръководства и уроци

WebRTC интерфейси

Тъй като WebRTC предоставя интерфейси, които работят заедно за изпълнение на различни задачи, ние ги разделихме на категории. Вижте индекса на страничната лента за бърза навигация.

Настройка и управление на връзката

Тези интерфейси се използват за конфигуриране, отваряне и управление на WebRTC връзки. Те представляват еднослойни медийни връзки, канали за данни и интерфейси, които се използват за обмен на информация относно възможностите на всеки възел за избор на най-добрата конфигурация за установяване на двупосочна мултимедийна връзка.

RTCPeerConnection Представлява WebRTC връзка между локален компютър и отдалечен възел. Използва се за обработка на успешен трансфер на данни между два възела. RTCSessionDescription Представлява параметрите на сесията. Всяко RTCSessionDescription съдържа описания от тип, указващи коя част (оферта/отговор) от процеса на преговори описва, и SDP дескриптор за сесията. RTCIceCandidate Представлява кандидата за сървър за установяване на интернет връзка (ICE) за установяване на връзка RTCPeerConnection. RTCIceTransport Представлява информация за Internet Connectivity Facility (ICE). RTCPeerConnectionIceEvent Представлява събития, които се случват на ICE кандидати, обикновено RTCPeerConnection. Към този обект на събитие се предава един тип: icecandidate. RTCRtpSender Управлява стрийминг и предаване на данни чрез обект от тип MediaStreamTrack за обект от тип RTCPeerConnection. RTCRtpReceiver Управлява приемането и декодирането на данни чрез обект от тип MediaStreamTrack за обект от тип RTCPeerConnection. RTCTrackEvent Показва, че е създаден нов входящ обект MediaStreamTrack и обект RTCRtpReceiver е добавен към обекта RTCPeerConnection. RTCCertificate Представлява сертификат, който използва обекта RTCPeerConnection. RTCDataChannel Представлява двупосочен канал за данни между два свързващи възела. RTCDataChannelEvent Представлява събития, които се предизвикват, когато обект от тип RTCDataChannel е прикачен към обект от тип RTCPeerConnection datachannel. RTCDTMFSender Управлява кодирането и предаването на двутонално многочестотно (DTMF) сигнализиране за обект от тип RTCPeerConnection. RTCDTMFToneChangeEvent Показва входящо събитие за промяна на двутонален многочестотен тон (DTMF). Това събитие не се показва (освен ако не е посочено друго) и не може да бъде отменено (освен ако не е посочено друго). RTCStatsReport Асинхронно отчита състоянието за предадения обект от тип MediaStreamTrack. RTCIdentityProviderRegistrar Регистрира доставчик на идентичност (idP). RTCIdentityProvider Позволява на браузъра да поиска създаване или проверка на декларация за самоличност. RTCIdentityAssertion Представлява идентификатора на отдалечения възел на текущата връзка. Ако възелът все още не е инсталиран и потвърден, препратката към интерфейса ще върне null. Не се променя след монтажа. RTCIdentityEvent Представлява обект на събитие за декларация на доставчик на идентичност (idP). Събитие на обект от тип RTCPeerConnection. Един тип се предава на това събитие identityresult. RTCIdentityErrorEvent Представлява обект на събитие за грешка, свързан с доставчик на идентичност (idP). Събитие на обект от тип RTCPeerConnection. Към това събитие се предават два вида грешки: idpassertionerror и idpvalidationerror.

Ръководства

Преглед на WebRTC архитектурата Под API, който разработчиците използват за създаване и използване на WebRTC, се крие набор от мрежови протоколи и стандарти за връзка. Този преглед е демонстрация на тези стандарти. WebRTC ви позволява да организирате връзка в режим от възел до възел, за да прехвърляте произволни данни, аудио, видео потоци или всякаква комбинация от тях в браузъра. В тази статия ще разгледаме живота на една WebRTC сесия, като започнем с установяването на връзката и стигнем до нейното прекъсване, когато вече не е необходима. Преглед на WebRTC API WebRTC се състои от няколко взаимосвързани интерфейса за програмиране на приложения (API) и протоколи, които работят заедно, за да поддържат обмена на данни и медийни потоци между два или повече възли. Тази статия предоставя кратък преглед на всеки от тези API и каква цел служат. Основи на WebRTC Тази статия ще ви преведе през създаването на RTC приложение за различни браузъри. До края на тази статия трябва да имате работещ канал за данни от точка до точка и медиен канал. WebRTC протоколи Тази статия представя протоколите, които допълват WebRTC API. Това ръководство описва как можете да използвате връзка от възел до възел и свързани

WebRTC (Web Real Time Communications) е стандарт, който описва предаването на поточни аудио данни, видео данни и съдържание от и към браузъра в реално време без инсталиране на плъгини или други разширения. Стандартът ви позволява да превърнете браузъра си в терминал за видеоконференции; просто трябва да отворите уеб страница, за да започнете комуникация.

Какво е WebRTC?

В тази статия ще разгледаме всичко, което трябва да знаете за технологията WebRTC за обикновения потребител. Нека да разгледаме предимствата и недостатъците на проекта, да разкрием някои тайни, да ви кажем как работи, къде и за какво се използва WebRTC.

Какво трябва да знаете за WebRTC?

Еволюция на стандартите и технологиите за видео комуникация

Сергей Юцайтис, Cisco, Видео+конференция 2016 г

Как работи WebRTC

Клиентска страна

  • Потребителят отваря страница, съдържаща HTML5 таг
  • Браузърът иска достъп до уеб камерата и микрофона на потребителя.
  • JavaScript кодът на потребителската страница контролира параметрите на връзката (IP адреси и портове на WebRTC сървъра или други WebRTC клиенти) за заобикаляне на NAT и защитната стена.
  • При получаване на информация за събеседника или за потока от конференцията, смесен на сървъра, браузърът започва да преговаря за използваните аудио и видео кодеци.
  • Започва процесът на кодиране и прехвърлянето на поточни данни между WebRTC клиенти (в нашия случай между браузъра и сървъра).

От страната на WebRTC сървъра

Не е необходим видео сървър за обмен на данни между двама участници, но ако трябва да комбинирате няколко участници в една конференция, е необходим сървър.



Видео сървърът ще получава медиен трафик от различни източници, ще го конвертира и изпраща на потребители, които използват WebRTC като терминал.

Също така WebRTC сървърът ще получава медиен трафик от партньори на WebRTC и ще го предава на участници в конференцията, които използват приложения за настолни компютри или мобилни устройства, ако има такива.

Предимства на стандарта

  • Не е необходима инсталация на софтуер.
  • Много високо качество на комуникация, благодарение на:
    • Използване на съвременни видео (VP8, H.264) и аудио кодеци (Opus).
    • Автоматично регулиране на качеството на потока към условията на връзката.
    • Вградена система за намаляване на ехото и шума.
    • Автоматично регулиране на нивото на чувствителност на микрофоните на участниците (AGC).
  • Високо ниво на сигурност: всички връзки са защитени и криптирани с помощта на протоколи TLS и SRTP.
  • Има вграден механизъм за заснемане на съдържание, например работния плот.
  • Възможност за внедряване на всеки интерфейс за управление, базиран на HTML5 и JavaScript.
  • Възможността за интегриране на интерфейса с всякакви back-end системи, използващи WebSockets.
  • Проект с отворен код - можете да го внедрите във вашия продукт или услуга.
  • Истинска крос-платформа: едно и също WebRTC приложение ще работи еднакво добре на всяка операционна система, настолна или мобилна, при условие че браузърът поддържа WebRTC. Това значително спестява ресурси за разработка на софтуер.

Недостатъци на стандарта

  • За организиране на групови аудио и видео конференции е необходим сървър за видеоконференции, който да смесва видео и звук от участниците, т.к. Браузърът не знае как да синхронизира множество входящи потоци един с друг.
  • Всички WebRTC решения са несъвместими едно с друго, защото... стандартът описва само методи за предаване на видео и аудио, оставяйки прилагането на методи за адресиране на абонати, проследяване на тяхната наличност, обмен на съобщения и файлове, планиране и други неща на доставчика.
  • С други думи, няма да можете да се обадите от WebRTC приложение на един разработчик към WebRTC приложение на друг разработчик.
  • Смесването на групови конференции изисква големи изчислителни ресурси, така че този тип видео комуникация изисква закупуване на платен абонамент или инвестиция във вашата инфраструктура, където всяка конференция изисква 1 физическо ядро ​​от модерен процесор.

Тайните на WebRTC: Как доставчиците се възползват от революционната уеб технология


Цачи Левент-Леви, Bloggeek.me, видео+конференция 2015 г

WebRTC за пазара на видеоконференции

Увеличаване на броя на терминалите за видеоконференции

Технологията WebRTC оказа силно влияние върху развитието на пазара на видеоконференции. След пускането на първите браузъри с поддръжка на WebRTC през 2013 г. потенциалният брой терминали за видеоконференции по света веднага се увеличи с 1 милиард устройства. Всъщност всеки браузър се превърна в терминал за видеоконферентна връзка, който не отстъпва на своите хардуерни аналози по отношение на качеството на комуникацията.

Използва се в специализирани решения

Използването на различни библиотеки на JavaScript и API на облачни услуги с поддръжка на WebRTC улеснява добавянето на поддръжка за видео комуникация към всякакви уеб проекти. Преди това, за да предават данни в реално време, разработчиците трябваше да изучават принципите на работа на протокола и да използват разработките на други компании, които най-често изискваха допълнително лицензиране, което увеличаваше разходите. WebRTC вече се използва активно в услуги като „Обаждане от сайта“, „Онлайн чат поддръжка“ и др.

Бивши потребители на Skype за Linux

През 2014 г. Microsoft обяви края на поддръжката на проекта Skype за Linux, което предизвика голямо раздразнение сред ИТ специалистите. Технологията WebRTC не е обвързана с операционната система, а се реализира на ниво браузър, т.е. Потребителите на Linux ще могат да видят продукти и услуги, базирани на WebRTC, като пълноправен заместител на Skype.

Конкуренция с Flash

WebRTC и HTML5 бяха смъртоносен удар за технологията Flash, която вече преживяваше най-лошите си години. От 2017 г. водещите браузъри официално спряха да поддържат Flash и технологията напълно изчезна от пазара. Но трябва да отдадем дължимото на Flash, защото именно той създаде пазара за уеб конференции и предложи техническите възможности за комуникация на живо в браузърите.

WebRTC видео презентации

Дмитрий Одинцов, TrueConf, видео+конференция октомври 2017 г

Кодеци в WebRTC

Аудио кодеци

WebRTC използва кодеци Opus и G.711 за компресиране на аудио трафик.

G.711- най-старият гласов кодек с висок битрейт (64 kbps), който най-често се използва в традиционните телефонни системи. Основното предимство е минималното изчислително натоварване поради използването на леки алгоритми за компресиране. Кодекът има ниско ниво на компресия на гласови сигнали и не въвежда допълнително аудио забавяне по време на комуникация между потребителите.

G.711 се поддържа от голям брой устройства. Системите, които използват този кодек, са по-лесни за използване от тези, базирани на други аудио кодеци (G.723, G.726, G.728 и др.). По отношение на качеството, G.711 получи оценка 4,2 при MOS тестване (резултат между 4-5 е най-високият и означава добро качество, подобно на качеството на ISDN гласовия трафик и дори по-високо).

Опусе кодек с ниска латентност на кодиране (от 2,5 ms до 60 ms), поддръжка на променлив битрейт и високи нива на компресия, който е идеален за стрийминг на аудио през мрежи с променлива честотна лента. Opus е хибридно решение, което комбинира най-добрите характеристики на кодеците SILK (компресия на глас, премахване на изкривяването на човешката реч) и CELT (кодиране на аудио данни). Кодекът е свободно достъпен; разработчиците, които го използват, не трябва да плащат възнаграждения на притежателите на авторските права. В сравнение с други аудио кодеци, Opus несъмнено печели в много отношения. Той засенчи доста популярни кодеци с нисък битрейт като MP3, Vorbis, AAC LC. Opus възстановява звуковата „картина“ по-близо до оригинала от AMR-WB и Speex. Този кодек е бъдещето, поради което създателите на технологията WebRTC го включиха в задължителната гама от поддържани аудио стандарти.

Видео кодеци

Проблемите с избора на видео кодек за WebRTC отнеха на разработчиците няколко години и в крайна сметка те решиха да използват H.264 и VP8. Почти всички съвременни браузъри поддържат и двата кодека. Сървърите за видеоконференции трябва да поддържат само един, за да работят с WebRTC.

VP8- безплатен видео кодек с отворен лиценз, характеризиращ се с висока скорост на декодиране на видео поток и повишена устойчивост на загуба на кадри. Кодекът е универсален и лесен за внедряване в хардуерни платформи, поради което разработчиците на системи за видеоконференции много често го използват в своите продукти.

Платен видео кодек H.264стана известен много по-рано от брат си. Това е кодек с висока степен на компресия на видео потока, като същевременно поддържа високо качество на видеото. Голямото разпространение на този кодек сред хардуерните системи за видеоконференции предполага използването му в стандарта WebRTC.

Google и Mozilla активно рекламират кодека VP8, а Microsoft, Apple и Cisco активно рекламират H.264 (за да осигурят съвместимост с традиционните системи за видеоконференции). И тук възниква много голям проблем за разработчиците на облачни WebRTC решения, защото ако всички участници в една конференция използват един и същ браузър, тогава е достатъчно да смесите конференцията веднъж с един кодек, а ако браузърите са различни и Safari / Edge са сред тях тогава конференцията ще трябва да бъде кодирана два пъти с различни кодеци, което ще удвои системните изисквания за медийния сървър и в резултат на това цената на абонаментите за WebRTC услуги.

WebRTC API

Технологията WebRTC се основава на три основни API:

  • (отговорен за това, че уеб браузърът получава аудио и видео сигнали от камерите или работния плот на потребителя).
  • RTCPeer връзка(отговаря за връзката между браузърите за „обмен“ на медийни данни, получени от камерата, микрофона и работния плот. Също така „отговорностите“ на този API включват обработка на сигнала (почистване от външен шум, регулиране на силата на звука на микрофона) и контрол върху използвани аудио и видео кодеци).
  • RTCData канал(осигурява двупосочен трансфер на данни чрез установена връзка).

Преди достъп до микрофона и камерата на потребителя, браузърът иска разрешение за това. В Google Chrome можете да конфигурирате достъпа предварително в секцията „Настройки“, в Opera и Firefox устройствата се избират директно в момента на получаване на достъп от падащ списък. Заявката за разрешение ще се показва винаги, когато се използва HTTP протокол и само веднъж, ако се използва HTTPS:


RTCPeer връзка. Всеки браузър, участващ в WebRTC конференция, трябва да има достъп до този обект. Благодарение на използването на RTCPeerConnection, медийните данни от един браузър към друг могат дори да преминават през NAT и защитни стени. За да предават успешно медийни потоци, участниците трябва да обменят следните данни, използвайки транспорт като уеб сокети:

  • иницииращият участник изпраща на втория участник Оферта-SDP (структура от данни с характеристиките на медийния поток, който ще предава);
  • вторият участник генерира „отговор“ - Answer-SDP и го изпраща на инициатора;
  • след това се организира обмен на ICE кандидати между участниците, ако бъдат открити такива (ако участниците са зад NAT или защитни стени).

След успешно завършване на този обмен се организира директното прехвърляне на медийни потоци (аудио и видео) между участниците.

RTCData канал. Поддръжката на протокола Data Channel се появи в браузърите сравнително наскоро, така че този API може да се разглежда само при използване на WebRTC в браузъри Mozilla Firefox 22+ и Google Chrome 26+. С негова помощ участниците могат да обменят текстови съобщения в браузъра.

Връзка чрез WebRTC

Поддържани настолни браузъри

  • Google Chrome (17+) и всички браузъри, базирани на двигателя Chromium;
  • Mozilla FireFox (18+);
  • Опера (12+);
  • Safari (11+);

Поддържани мобилни браузъри за Android

  • Google Chrome (28+);
  • Mozilla Firefox (24+);
  • Opera Mobile (12+);
  • Safari (11+).

WebRTC, Microsoft и Internet Explorer

Много дълго време Microsoft запази мълчание относно поддръжката на WebRTC в Internet Explorer и новия му браузър Edge. Момчетата от Редмънд наистина не обичат да поставят технологии, които не контролират, в ръцете на потребителите, това е политиката. Но постепенно въпросът се отмести от мъртва точка, защото... Вече не беше възможно да се игнорира WebRTC и беше обявен проектът ORTC, производен на стандарта WebRTC.

Според разработчиците ORTC е разширение на стандарта WebRTC с подобрен набор от API, базирани на JavaScript и HTML5, което, преведено на обикновен език, означава, че всичко ще бъде същото, само Microsoft, а не Google, ще контролира стандарта и неговото развитие. Наборът от кодеци е разширен с поддръжка на H.264 и някои аудио кодеци от серията G.7ХХ, използвани в телефонията и хардуерните видеоконферентни системи. Може да има вградена поддръжка за RDP (за прехвърляне на съдържание) и съобщения. Между другото, потребителите на Internet Explorer нямат късмет; поддръжката на ORTC ще бъде достъпна само в Edge. И, разбира се, този набор от протоколи и кодеци лесно се свързва със Skype за бизнеса, което отваря още повече бизнес приложения за WebRTC.