Web програми з webrtc. Технологія WebRTC: аудіо- та відеочат у браузері. Поняття та використання WebRTC

Привіт друзі, як ви вже знаєте, ми повідомляємо вам регулярно нові технології, сьогодні я представлю WebRTC, технологія, розроблена компанією Google, яка дозволяє користувачам говорити безпосередньо у браузері відео та аудіо, не вимагаючи, що використання plugin- Веб-сайти або програми. Відео та аудіо пряме з'єднання між користувачами здійснюється безпосередньо у браузері.
Технологія WebRTC підтримується в Mozilla Firefox браузерів Google Chrome і на будь-якій операційній системі, незабаром приєднається і Opera.
Що таке WebRTC?
WebRTC короткий для Web Real Time Comunication, ця технологія дозволяє відкривати аудіо та відео чатів безпосередньо в браузері без необхідності інших плагінів, програм або послуг в Інтернеті для цього. Підключення здійснюється безпосередньо з браузера у браузері.
Якщо відомі послуги (Skype, Yahoo Messenger, Apple FaceTime, Google Hago тощо) вимагають сервера, який з'єднує користувачів, щоб ініціювати та керувати трафіком. Використовуючи ці послуги, нам потрібно зареєструватися і встановив список клієнтів і контактів.
З WebRTC нам не потрібні сервери, програми або сервери, які підключаються до заступитися.
WebRTC переваги:
1. Немає більше програм, що споживають використання ресурсів та акумулятора.
2. У чатах більш приватні (щодо).
3. Як зв'язатись можна зробити на місцевому рівні, а не Flos США сервери для локальних з'єднань.
4. Простота, зручність використання.
5. Можливість подальшого розвитку та в інших напрямках.
6. Зв'язок стабільний і не залежить від зовнішніх з'єднань, які іноді вкрай нестабільні.
У підручнику я використав демо, що люди в Google розробили, це демо досить просто, більш розширені можливості та більш швидкі з'єднання можуть використовувати один із додатків, які підтримують WebRTC, вони простіше у використанні. Незабаром ми робитимемо підручник і про програми WebRTC.
Як використовувати WebRTC демо?
Дуже просто натисніть посилання нижче, він автоматично генерує чат. зв'язати цю кімнату, ви повинні відправити друг / подруга ви хочете, щоб увійти в контакт.
Друг / подруга і ваш, але ви повинні використовувати тільки останні версії Mozilla Firefox або Google Chrome.

Demo WebRTC(Вступний чат аудіо-відео)

Увага:
Демо не дуже стабільне, виробляється тільки для демонстрації. Він може бути використаний протягом обмеженого періоду, протягом якого невеликі помилки можуть виникнути з'єднання.
Якщо у вас є проблеми із підключенням, спробуйте створити інший чат.

На сьогоднішній день WebRTC є гарячою технологією для потокового аудіо та відео в браузерах. Консервативні технології, такі як HTTP Streaming і Flash, більше підходять для роздачі записаного контенту (video on demand) і значно поступаються WebRTC щодо реалтайму і онлайн трансляцій, тобто. там, де потрібна мінімальна затримка відео, що дозволяє глядачам бачити те, що відбувається у прямому ефірі.

Можливість якісної комунікації в реальному часі походить від самої архітектури WebRTC, де для транспорту відеопотоків використовується UDP протокол, що є стандартною основою для передачі відео з мінімальними затримками та широко використовується в комунікаційних системах реального часу.

Комунікаційна затримка важлива в системах онлайн трансляцій, вебінарах та інших додатках, де потрібний інтерактивний зв'язок із джерелом відео, кінцевих користувачів та потребує вирішення.

Інша вагома причина спробувати WebRTC це, безумовно, тренд. Сьогодні кожен Android Chrome браузер підтримує цю технологію, що гарантує мільйони пристроїв, які готові до перегляду трансляції без встановлення будь-якого додаткового ПЗ та конфігурацій.

Для того, щоб перевірити технологію WebRTC у справі та запустити на ній просту онлайн трансляцію, ми використовували серверне програмне забезпечення Flashphoner WebRTC Media & Broadcasting Server. У фічах заявлена ​​можливість транслювати WebRTC потоки в режимі "один до багатьох" (one-to-many), а також підтримка IP камер і систем відеоспостереження через протокол RTSP; У цьому огляді ми зосередимося на web-web трансляціях та їх особливостях.

Встановлення WebRTC Media & Broadcasting Server

Оскільки для Windows системи версії сервера не виявилося, а встановлювати віртуалку типу VMWare+Linux не хотілося, протестувати онлайн-трансляції на домашньому Windows комп'ютері не вийшло. Щоб заощадити час, вирішили взяти інстанс на хмарному хостингу на кшталт такого:

Це був Centos x86_64 версії 6.5 без будь-якого попередньо встановленого ПЗ в датацентрі Амстердама. Таким чином, все, що ми отримали в розпорядження, це сервер і ssh доступ до нього. Для тих, хто знайомий з консольними командами Linux, встановлення WebRTC сервера обіцяє пройти просто і безболісно. Отже, що ми зробили:

1. Завантажити архів:

$wget https://сайт/download-wcs5-server.tar.gz

2. Розпакувати:

$tar -xzf download-wcs5-server.tar.gz

3. Встановити:

$cd FlashphonerWebCallServer

Під час інсталяції ввести IP адресу сервера: XXX.XXX.XXX.XXX

4. Активувати ліцензію:

$cd /usr/local/FlashphonerWebCallServer/bin

$./activation.sh

5. Запустити WCS сервер:

$service webcallserver start

6. Перевірити лог:

$tail - f /usr/local/FlashphonerWebCallServer/logs/flashphoner_manager.log

7. Перевірити, що два процеси на місці:

$ps aux | grep Flashphoner

Процес встановлення закінчено.

Тестування WebRTC онлайн-трансляцій

Тестування трансляцій виявилося справою нехитрою. Крім сервера є web-клієнт, який складається з десятка Javascript, HTML і CSS файлів і був розгорнутий нами в папку /var/www/html на етапі установки. Єдине, що довелося зробити, це вписати IP адресу сервера в конфіг flashphoner.xml, щоб web-клієнт міг встановити з'єднання з сервером HTML5 Websockets. Опишемо процес тестування.

1. Відкриваємо сторінку тестового клієнта index.html у Chrome браузері:

2. Щоб розпочати трансляцію, потрібно натиснути кнопку «Start» посередині екрана.
Перед тим, як це зробити, необхідно переконатися, що веб-камера підключена та готова до роботи. Особливих вимог до вебкамери немає, ми, наприклад, використовували стандартну вбудовану в ноутбук камеру з роздільною здатністю 1280х800.

Chrome браузер обов'язково попросить доступ до камери та мікрофону для того, щоб користувач розумів, що його відео буде відправлено на Інтернет-сервер і дозволив це зробити.

3. Інтерфейс є успішною трансляцією відеопотоку з камери на WebRTC сервер. У верхньому правому куті індикатор вказує, що потік йде на сервер, у нижньому куті кнопка «Стоп» для зупинки відправки відео.

Зверніть увагу на посилання у полі знизу. Вона містить унікальний ідентифікатор цього потоку, тому будь-хто може приєднатися до перегляду. Досить відкрити це посилання у браузері. Щоб її скопіювати в буфер обміну, потрібно клікнути по кнопці «Copy».

У реальних додатках на кшталт вебінарів, лекцій, онлайн-відео трансляцій або інтерактивного TV розробникам доведеться реалізовувати роздачу цього ідентифікатора певним групам глядачів для того, щоб вони змогли підключитися до потрібних потоків, але це вже логіка роботи програми. WebRTC Media & Broadcasting Server її не зачіпає, а займається лише роздачею відео.

5. З'єднання встановлено та глядач бачить потік на екрані. Тепер він може надіслати посилання комусь іншому, зупинити відтворення потоку або включити повноекранний режим, користуючись контролем у правому нижче кутку.

Результати тестування WebRTC сервера онлайн трансляцій

Під час тестів затримка виглядала бездоганною. Пінг до датацентру склав близько 100 мілісекунд і затримка була не помітна оком. Звідси можна припустити, що реальна затримка становить ті ж 100 плюс мінус кілька десятків мілісекунд на час буферизації. Якщо порівнювати з Flash відео: у подібних тестах Flash поводиться не так добре, як WebRTC. Так, якщо на схожій мережі ворухнути рукою, рух на екрані можна побачити тільки через одну/дві секунди.

Щодо якості зазначимо, що на рухах іноді можна розрізнити кубики. Це відповідає природі кодека VP8 та його основне завдання – забезпечити відео зв'язок у реальному часі з прийнятною якістю і без затримок у комунікації.

Сервер досить простий в установці та налаштуванні, для його запуску не потрібні серйозні навички крім знання Linux на рівні просунутого користувача, що вміє виконувати команди з консолі через ssh і користуватися текстовим редактором. У результаті нам вдалося налагодити онлайн-трансляцію one-to-many між браузерами. Підключення додаткових глядачів до потоку також не викликало проблем.

Якість трансляції виявилася цілком прийнятною для вебінарів та онлайн мовлень. Єдине, що викликало деякі питання, - це дозвіл відео. Камера підтримує 1280х800, але дозвіл на тестовій картинці дуже схоже на 640х480. Мабуть, це питання слід уточнювати у розробників.

Відео з тестування трансляції з веб-камери
через WebRTC-сервер

OpenTok, PubNub та WebRTC

Хмарні платформи OpenTok та PubNub для розробки комунікаційних сервісів на основі WebRTC

2016-04-08

В даний час Web Video Chats стають все більш популярними. Web Video Chat - це веб-додаток для діалогового спілкування, побудований на основі Web-сервера та браузерів.

Зі всіх існуючих технологій побудови Web відеочатів (Ajax; Java; Flash-технології; ASP.Net + Silverlight; HTML5 + JavaScript на базі WebRTC API та ін) найбільш перспективною технологією є WebRTC API. Web чати, побудовані на базі технології WebRTC, забезпечують якісну передачу тексту, голосу, відео та даних (файлів) без установки в браузер додаткових плагінів або розширень. Основними елементами відеочату на WebRTC є браузер та контактний сервер.

Браузер, що підтримує WebRTC, стає єдиним інтерфейсом для всіх пристроїв користувача (ПК, смартфонів, айпадів, IP-телефонів, мобільних телефонів і т.д.), які працюють з комунікаційними сервісами. WebRTC із WebSocket, HTML5, CSS3 та JavaScript дозволяють створювати веб-комунікаційні сервіси нового покоління. Технологія WebRTC реалізується трьома інтерфейсами JavaScript API.

Для роботи пірингового необхідно з двох браузерів, що підтримують WebRTC, звернутися за ip-адресою до сигнального сервера (наприклад, WebSocket сервера), що працює на node.js. Сервер не бере участі у передачі інформаційних потоків між браузерами, а є сигнальним та призначений для встановлення з'єднання між браузерами користувачів.

У зв'язку з тим, що підтримка WebRTC здійснюється не всіма хостингами, для реалізації комунікаційних додатків на основі WebRTC API та інтеграції їх у веб-сайти мережі Інтернет можна використовувати спеціальні платформи, що підтримують WebRTC і надають APIs і SDKs .

API забезпечує взаємодію комунікаційних програм з платформою (Web сервісом), що надає цей API, а SDK забезпечує розробку комунікаційних програм, які можуть взаємодіяти з платформою, що надає цей SDK.

До таких платформ відносяться: OpenTok від TokBox, PubNub, VoxImplant, Twilio, SkyWay від NTT Communications, Kandy.io, SightCall і т.д. Слід зазначити, що для створення контактного сервера можна розгорнути Node.js для веб-комунікаційних програм на орендованому віртуальному сервері VPS або використовувати хостинги хмарних платформ (PaaS), які підтримують проекти на базі Node.js, наприклад OpenShift/Red Hat, Heroku/ Salesforce, AWS Elastic Beanstalk/Amazon тощо.

Крім того, для створення комунікаційної програми можна придбати платформу Flashphoner Web Call Server (серверне програмне забезпечення, призначене для організації браузерних онлайн-трансляцій аудіо- та відео-потоків), яка заснована на HTML5 Websockets, WebRTC та Flash технології, та встановити її на веб -Сервер під OC Linux або орендований віртуальний сервер VPS. Зараз компанія Flashphoner розгорнула свій WebRTC сервер (Web Call Server 5) на хмарному хостингу Amazon Web Services.

У цьому огляді розглянемо найпопулярніші хмарні комунікаційні Web-сервіси на основі технології WebRTC – OpenTok від TokBox та PubNub.

OpenTok від TokBox

OpenTok – це хмарна платформа PaaS (платформа як послуга), яка є провідною комунікаційною платформою WebRTC для інтеграції у веб-сайти та мобільні програми відео комунікацій та засобів обміну повідомленнями. OpenTok має розподілену інфраструктуру, яка містить центри обробки даних у всьому світі.

Відкрита платформа OpenTok від TokBox забезпечує розробникам можливість вбудовувати кроссплатформенные відеочати на основі WebRTC API в Web-додатки (веб-сайти), Java/Android та ОС IOS програми.

Архітектура OpenTok складається з клієнтської частини бібліотеки WebRTC OpenTok (наприклад, OpenTok.js), яка забезпечує вбудовування відеозв'язку в клієнтську частину програми (веб-сторінку) та комплект засобів (OpenTok Client SDKs) для розробки клієнтських програм (JavaScript/Web додатків, ОС Java /Android та ОС IOS).

Крім того, складовою частиною архітектури OpenTok є серверні SDK (OpenTok Server SDKs), які призначені для розробки серверної інфраструктури (для управління та аутентифікації користувачів) програми, що забезпечує динамічну генерацію унікальних ідентифікаторів сеансів ID OpenTok (sessionId) та маркерів (token) для кожного користувача, а також роботу з архівами OpenTok. Web сервер передає відповідний ідентифікатор сеансу та маркер, який клієнт може потім використовувати для підключення до сесії.

Серверні SDKs OpenTok доступні для основних мов програмування серверної частини програм: Java, .NET, Node.js, PHP, Python, Ruby. Слід зазначити, що якщо для серверної частини програми потрібна інша мова програмування, яка не входить до переліку, то TokBox надає OpenTok REST API для створення сесій OpenTok і роботи з архівами OpenTok.

Таким чином, для створення комунікаційних програм для вузлів Інтернету слід використовувати серверні SDKs OpenTok у поєднанні з клієнтською бібліотекою WebRTC OpenTok та засобами OpenTok Client SDKs.


Щоб використовувати платформу OpenTok для створення відеочату WebRTC, вбудованого у вузол мережі Інтернет, в першу чергу необхідно створити обліковий запис на TokBox.com. Безкоштовний обліковий запис OpenTok діє протягом тридцяти днів. Зареєстрований користувач має можливість отримати ключ API (ApiKey), необхідний розробки комунікаційного додатка OpenTok. Ключ API ідентифікує обліковий запис розробника OpenTok.

Використовуючи посібник розробника OpenTok (https://tokbox.com/developer/guides/) в акаунті розробника TokBox можна створити комунікаційну програму (веб-сторінку відеочата) за допомогою OpenTok Client SDKs. Щоб використати платформу OpenTok для програми, необхідно включити бібліотеку OpenTok.js на веб-сторінку.

https://static.opentok.com/webrtc/ .../opentok.js

Ідентифікатор сеансу (SESSIONID) і маркер (token), необхідні для функціонування програми, зазвичай створюються програмно на Web сервері з одним із серверних SDKs (OpenTok Server SDKs).

Але для створення тестової версії програми без серверних SDKs OpenTok можна на основі ключа API (ApiKey) отримати ідентифікатор сеансу та маркер для цього ідентифікатора сесії вручну за допомогою панелі інструментів розробника. Клієнту потрібен маркер, який дає йому доступ до сесії.

Зразки таких змінних як ключ "apiKey", ідентифікатор сесії "sessionId" та маркера "token" мають вигляд:

var apiKey = "17493650";
var sessionId= "2_MX40NT...tWXR-UH4";
var token= "T1==cGFyd...2RhdGE9";

Після створення об'єкта сеансу з ідентифікатором сеансу (SESSIONID) та маркера (token), програма ініціалізує об'єкт сесії.

var session = OT.initSession(apiKey, sessionId);

Потім здійснюється підключення клієнта до сеансу та публікація аудіо та відео потоків:

session.connect(token, function(error) (
publisher = OT.initPublisher("publisher");
session.publish(publisher);
});

Після підключення клієнта до сеансу програма ініціалізує об'єкт Publisher OpenTok та публікує аудіо та відео потік для даної сесії, щоб його могли побачити інші клієнти.

session.on((
streamCreated: function(event) (
session.subscribe(event.stream, "subscriber");
}});

Таким чином, відповідно до керівництва розробника можна створити основу відеочату WebRTC на базі платформи OpenTok, який можна впровадити на свій сайт. На малюнку 2 представлений інтерфейс скріншота цього відеочату на WebRTC, створеного в обліковому записі розробника TokBox.

Далі необхідно створити серверну частину відеочату, використовуючи OpenTok Server SDKs для однієї мови програмування. OpenTok Server SDKs дозволяють програмно створювати сеанси OpenTok, генерувати маркери та працювати з архівацією OpenTok.

Слід зазначити, що в TokBox застосовуються два режими передачі медіа потоків (Media Streams):

  • relayed (ретрансляція), в цьому режимі медіа потоки передаються безпосередньо між пірингами (наприклад, між браузерами користувачів відеочаті один-до-одному);
  • routed (маршрутизація), в цьому режимі використовуються OpenTok Media Router для маршрутизації аудіо-відео потоків між клієнтами (наприклад, у розрахованому на багато користувачів або груповому відеочаті для онлайн-нарад).

PubNub

PubNub – це глобальна мережа потокової передачі даних для: IoT (Internet of Things), Mobile та Web. PubNub – це хмарний Web сервіс обміну повідомленнями у режимі реального часу, який призначений для організації веб-комунікацій між різними платформами: мобільними телефонами, планшетами, веб-браузерами веб-вузлів тощо. PubNub надає більше 70 SDKs для основних мов програмування з метою створення кросплатформових комунікаційних додатків та вбудовування їх у Web-додатки (веб-сайти) та програми мобільних пристроїв (Java/Android та ОС IOS).

Список мов, що підтримуються, і SDKs сервісом PubNub представлений на сторінці: https://github.com/pubnub/pubnub-api. Слід зазначити, що крім API-інтерфейсів до конкретних програмних платформ PubNub також підтримує API REST. Наприклад, PubNub WebRTC SDK призначений для організації веб-комунікацій (пірінгових мереж) у реальному часі між браузерами по одноранговій архітектурі. Архітектура взаємодії компонентів комунікаційної програми на основі платформи PubNub та технології WebRTC представлена ​​на рис. 3.

Як випливає із схеми взаємодії компонентів WebRTC відеочата (рис.3) платформа PubNub використана як масштабований сервер сигналізації (сервера узгодження) для WebRTC додатків. Крім того, платформа PubNub забезпечує виконання таких додаткових функцій як присутність (надання інформації про доступні в мережі користувача або актуальний список користувачів), зберігання/відтворення (дозволяє користувачам бачити історію минулих розмов протягом певного періоду часу) та реєстрація.

У комунікаційних WebRTC додатках на основі платформи PubNub застосовуються два способи обміну повідомленнями (WebSockets та AJAX) між браузером та сервером узгодження. PubNub пропонує новий API для підключення WebRTC додатку до платформи PubNub. WebRTC API PubNub виконує сигналізацію між браузерами користувачів, щоб дозволити їм з'єднатися по одноранговій архітектурі, використовуючи API PeerConnection WebRTC. Після обміну сигнальними повідомленнями між браузерами, між ними встановлюється дуплексний зв'язок для обміну потоками відео і довільними даними. Зв'язок браузерів координується PubNub.

Сервіс PubNub забезпечує як взаємодія всіх компонентів необхідні встановлення зв'язку між браузерами по одноранговой схемою з метою обміну повідомленнями у часі, а й надає їм глобальну мережу потокової передачі.

Щоб використовувати платформу PubNub для створення відеочату, в першу чергу необхідно зареєструватися на PubNub з метою створення безкоштовного облікового запису. Зареєстрований користувач має можливість отримати API ключі subscribe_keyі publish_key, необхідні розробки комунікаційного додатка PubNub. Потім у своєму обліковому записі можна додати такі функції, як security, присутність та зберігання.

Після отримання API ключів можна приступити до створення комунікаційної програми на основі платформи PubNub, використовуючи SDKs однією з основних мов програмування, або використовувати демонстраційні програми (шаблони). Навчальний посібник для створення комунікаційної програми представлено на сторінці: https://www.pubnub.com/docs/tutorials/pubnub-publish-subscribe. Довідковий посібник із створення відеочату на основі PubNub WebRTC SDK розглянуто на сторінці https://www.pubnub.com/docs/webrtc-javascript/pubnub-javascript-sdk.

Для створення відеочату WebRTC з нуля відповідно до посібника необхідно застосувати кілька простих API для JavaScript:

  • підключити бібліотеку PubNub HTML сторінку, тобто. включити JavaScript PubNub SDK до коду HTML сторінки перед ініціалізацією клієнта;
  • init() – ініціалізувати клієнтське API PubNub;
  • subscribe() - передплатити певний канал (викликати метод subscribe() PubNub API);
  • publish() - надіслати повідомлення на конкретний канал (викликати метод publish() PubNub API);
  • unsubscribe() - відмовитися від передплати певного каналу.

Ініціалізація клієнтського API PubNub може бути представлена ​​у такому вигляді:
var PUBNUB = PUBNUB.init((
publish_key: "Your Publish Key",
subscribe_key: "Your Subscribe Key"
});

Для створення відеочату WebRTC на основі PubNub WebRTC можна скористатися шаблоном з відкритим вихідним кодом: https://www.pubnub.com/developers/demos/webrtc/. Для перевірки роботи цього відеочату необхідно з двох ПК звернутися за вказаною адресою, у інтерфейсі відеочата, що відкрився в браузерах, користувачам призначаються номери телефону. Для спілкування користувачі повинні ввести номери телефону в текстове поле "Type Recipient"s" та клацнути на кнопці із зображенням трубки.

В результаті зображення з відеокамер подаються до браузера та відображаються на екранах моніторів. Крім того, цей відеочат виконує функції чату передачі тексту. Для листування користувачі повинні ввести текст у полі "chat here" та натиснути клавішу "Enter". На малюнку 4 представлений скріншот відеочату користувача з номером телефону 164.



Рис. 4.PubNub з WebRTC

На малюнку 5 представлений скріншот відеочату користувача з номером телефону 128.



Рис. 5.PubNub з WebRTC

Призначений для користувача інтерфейс Web комунікаційної програми розроблений за допомогою гіпертекстової розмітки HTML5 та CSS3. Код клієнтської частини комунікаційної програми розроблено на JS. До Web комунікаційної програми були підключені бібліотеки: JQuery, PubNub JavaScript SDK та PubNub WebRTC SDK.

WebRTC дозволяє реалізувати real-time аудіо/відео зв'язок через браузер

У цьому топіку я розповім як реалізувати найпростіший WebRTC додаток.

1. getUserMedia - отримання доступу до медіа пристроїв (мікрофон/вебкамера)

Нічого складного, за допомогою 10 рядків javascript-коду ви зможете побачити та почути себе у браузері (демо).

Створіть index.html :

До елемента video можна застосувати css3-фільтри .

Засмучує тут те, що на даному етапі розвитку WebRTC я не можу сказати браузеру "цьому сайту я довіряю, завжди давай йому доступ до моєї камери та мікрофону" і потрібно натискати Allow після кожного відкриття/оновлення сторінки.

Ну і не зайвим буде нагадати, якщо ви дали доступ до камери в одному браузері, інший при спробі отримати доступ отримає PERMISSION_DENIED.

2. Signaling server (сигнальний сервер)

Тут я порушую послідовність більшості «webrtc getting started» інструкцій, оскільки вони другим кроком демонструють можливості webRTC на одному клієнті, що особисто мені тільки додало плутанини в пояснення.

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

Сигнальний сервер у нашому випадку це Node.js + socket.io + node-static, він слухатиме порт 1234.
Плюс до всього, node-static може віддати index.html, що зробить наш додаток максимально простим.

У папці програми встановимо необхідне:

NPM install socket.io NPM install node-static

Європейські користувачі Мережі розділилися на дві частини: згідно з опитуванням Інституту аналізу громадської думки в Алленбаху (Німеччина), 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 відповідає за встановлення з'єднання, а також за саму комунікацію.

Паралельно з інтеграцією до браузера робоча група Консорціуму Всесвітньої павутини (W3C) форсувала процес стандартизації WebRTC. Він має завершитися вже 2015-го року.

WebRTC задовольняється малим

Для використання служби WebRTC не потрібно багато ресурсів, оскільки сервер з'єднує лише співрозмовників. Установка з'єднання також не становить особливої ​​складності. Спочатку браузер подає серверу WebRTC сигнал, що він планує розпочати дзвінок. Від сервера він отримує HTTPS-посилання – зв'язок здійснюється в зашифрованому вигляді. Цей лінк користувач надсилає своєму співрозмовнику. Після цього браузер запитує у користувача дозвіл на доступ до веб-камери та мікрофону.

Щоб встановити пряме потокове з'єднання зі співрозмовником, браузер отримує від служби WebRTC її IP-адресу та дані конфігурації. Веб-переглядач співрозмовника надходить так само.

Щоб потокове з'єднання функціонувало без збоїв та у високій якості, в браузері працюють три двигуни. Два з них оптимізують і стискають аудіо відео, третій відповідальний за їх транспортування. Він пересилає дані за допомогою протоколу 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 поки що залишається осторонь, у Safari WebRTC чекати поки що не варто. Однак існує безліч альтернативних програм для iOS і плагінів для Safari.

Корпорація Microsoft йде дещо іншим курсом. Як власник конкурентного сервісу Skype ця компанія не збирається так просто капітулювати перед WebRTC. Натомість Microsoft розробляє технологію під назвою ORTC (Object Real-Time Communications) для Internet Explorer.

Такі відмінності від WebRTC, як інші кодеки та протоколи для встановлення контакту з сервером, незначні і згодом, швидше за все, перетворяться на додаток до WebRTC стандарту, який включає ці розбіжності. Таким чином, за бортом залишається лише Apple - як завжди.

Фото:компанії-виробники; goodluz/Fotolia.com

Програми