WebRTC - переваги, недоліки, секрети, як працює, підключення
- Що таке WebRTC?
- Що потрібно знати про WebRTC?
- Еволюція стандартів і технологій відеозв'язку
- Як працює WebRTC
- Схема роботи WebRTC сервера
- переваги стандарту
- WebRTC для ринку ВКС
- Використання в спеціалізованих рішеннях
- Ex-користувачам Skype для Linux
- Конкуренція з Flash
- відеопрезентації WebRTC
- Кодеки в WebRTC
- відеокодеки
- WebRTC API
- Підключення по WebRTC
- WebRTC, Microsoft і Internet Explorer
- WebRTC, Apple і Safari
- Підтримка технологій в браузерах
- Корисні посилання
WebRTC (Web Real Time Communications) - це стандарт, який описує передачу потокових аудіо, відео даних і контенту від браузера і до браузеру в режимі реального часу без установки плагінів необхідних розширень. Стандарт дозволяє перетворити браузер в крайовий термінал відеоконференцзв'язку, досить просто відкрити веб-сторінку, щоб почати спілкування.
зміст
Що таке WebRTC?
У цій статті ми розглянемо все, що необхідно знати про технології WebRTC для звичайного користувача. Розглянемо переваги і недоліки проекту, розкриємо деякі секрети, розповімо як працює, де і для чого застосовується WebRTC.
Що потрібно знати про WebRTC?
Лев Якупов, TrueConf, Відео + Конференція 2013
Еволюція стандартів і технологій відеозв'язку
Еволюція стандартів і технологій відеозв'язку Сергій Юцайтіс, Cisco, Відео + Конференція 2016
Як працює WebRTC
На стороні клієнта
- Користувач відкриває сторінку, яка містить HTML5 тег <video>.
- Браузер запитує доступ до веб-камері і мікрофону користувача.
- JavaScript код на сторінці користувача контролює параметри з'єднання (IP-адреси і порти сервера WebRTC або інших WebRTC клієнтів) для обходу NAT і Firewall.
- При отриманні інформації про співрозмовника або про потік зі змікшованого на сервері конференцією, браузер починає узгодження використовуваних аудіо і відео кодеків.
- Починається процес кодування і передача потокових даних між WebRTC клієнтами (в нашому випадку, між браузером і сервером).
На стороні WebRTC сервера
Для обміну даними між двома учасниками відеосервер не потрібно, але якщо потрібно об'єднати в одній конференції кілька учасників, сервер необхідний.
Схема роботи WebRTC сервера
Відеосервер буде отримувати медіа-трафік з різних джерел, перетворювати його і відправляти користувачам, які в якості терміналу використовують WebRTC.
Також WebRTC сервер буде отримувати медіа-трафік від WebRTC бенкетів та передавати його учасникам конференції, які використовують програми для настільних комп'ютерів або мобільних пристроїв, в разі наявності таких.
переваги стандарту
- Не потрібно установка ПО.
- Дуже висока якість зв'язку, завдяки:
- Використанню сучасних відео (VP8, H.264) і аудіокодеків (Opus).
- Автоматичне підстроювання якості потоку під умови з'єднання.
- Вбудована система луна і шумозаглушення.
- Автоматичне регулювання рівня чутливості мікрофонів учасників (АРУ).
- Високий рівень безпеки: всі з'єднання захищені і зашифровані згідно з протоколами TLS і SRTP.
- Є вбудований механізм захоплення контенту, наприклад, на робочий стіл.
- Можливість реалізації будь-якого інтерфейсу управління на основі HTML5 і JavaScript.
- Можливість інтеграції інтерфейсу з будь-якими back-end системами за допомогою WebSockets.
- Проект з відкритим вихідним кодом - можна впровадити в свій продукт або сервіс.
- Справжня крос-платформенность: один і той же WebRTC додаток буде однаково добре працювати на будь-якій операційній системі, деськтопной або мобільного, за умови, що браузер підтримує WebRTC. Це значно економить ресурси на розробку ПО.
недоліки стандарту
- Для організації групових аудіо і відеоконференцій потрібно сервер ВКС, який би мікшував відео і звук від учасників, тому що браузер не вміє синхронізувати кілька вхідних потоків між собою.
- Все WebRTC рішення несумісні між собою, тому що стандарт описує лише способи передачі відео і звуку, залишаючи реалізацію способів адресації абонентів, відстеження їх доступності, обміну повідомленнями та файлами, планування та іншого за вендором.
- Іншими словами ви не зможете зателефонувати з WebRTC додатки одного розробника в WebRTC додаток іншого розробника.
- Мікшування групових конференцій вимагає великих обчислювальних ресурсів, тому такий тип відеозв'язку вимагає покупки платної підписки або інвестування в свою інфраструктуру, де на кожну конференцію потрібно 1 цієї статті фізична ядро сучасного процесора.
Секрети WebRTC: як вендори отримують користь із проривний веб-технології
секрети WebRTC
Цахи Левент-Леві, Bloggeek.me, Відео + Конференція 2015
WebRTC для ринку ВКС
Збільшення числа ВКС-терміналів
Технологія WebRTC вплинула на розвиток ринку ВКС. Після виходу в світ перших браузерів з підтримкою WebRTC в 2013 році потенційна кількість терміналів відеоконференцзв'язку по всьому світу відразу збільшилася на 1 млрд. Пристроїв. По суті, кожен браузер став ВКС терміналом, який не поступається своїм апаратним аналогам з точки зору качетсва зв'язку.
Використання в спеціалізованих рішеннях
Використання різних JavaScript бібліотек і API хмарних сервісів з підтримкою WebRTC дозволяє легко додати підтримку відеозв'язку в будь-які веб-проекти. Раніше для передачі даних в реальному часі розробникам доводилося вивчати принципи роботи протоколів і використовувати напрацювання інших компаній, які найчастіше вимагають додаткового ліцензування, що збільшувало витрати. Уже зараз WebRTC активно використовується в сервісах виду "Зателефонувати з сайту", "Он-лайн чат підтримки", і т.п.
Ex-користувачам Skype для Linux
У 2014 році Microsoft оголосила про припинення підтримки проекту Skype для Linux, що викликало велике роздратування у IT-фахівців. Технологія WebRTC не прив'язана до операційної системи, а реалізована на рівні браузера, тобто Linux користувачі зможуть побачити в продуктах і сервісах на основі WebRTC повноцінну заміну Skype.
Конкуренція з Flash
WebRTC і HTML5 стали смертельним ударом для технології Flash, яка і так переживала свої далеко не найкращі роки. З 2017 року провідні браузери офіційно перестали підтримувати Flash і технологія остаточно зникла з ринку. Але потрібно віддати Flash належне, адже саме він створив ринок веб-конференцій та запропонував технічні можливості для живого спілкування в браузерах.
Детальний порівняння технологій WebRTC і 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 і навіть вище).
Opus - це кодек з низькою затримкою кодування (від 2.5 мс до 60 мс), підтримкою змінного бітрейта і високим рівнем стиснення, що ідеально підходить для передачі потокового аудіо сигналу в мережах зі змінною пропускною спроможністю. 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:
- MediaStream (відповідає за прийняття веб-браузером аудіо і відеосигналу від камер або робочого столу користувача).
- RTCPeerConnection (відповідає за з'єднання між браузерами для "обміну" отриманими від камери, мікрофона і робочого столу, медіаданими. Також в "обов'язки" цього API входить обробка сигналу (очищення його від сторонніх шумів, регулювання гучності мікрофона) і контроль над використовуваними аудіо і відеокодеками ).
- RTCData Channel (забезпечує двосторонню передачу даних через встановлений з'єднання).
MediaStream. Перш ніж отримати доступ до мікрофона і камері користувача, браузер запитує на це дозвіл. У Google Chrome можна заздалегідь налаштувати доступ в розділі "Налаштування", в Opera і Firefox вибір пристроїв здійснюється безпосередньо в момент отримання доступу, зі списку. Запит на дозвіл буде з'являтися завжди при використанні протоколу HTTP і одноразово, якщо використовувати HTTPS:
RTCPeerConnection. Кожен браузер, який бере участь в WebRTC конференції, повинен мати доступ до даного об'єкта. Завдяки використанню RTCPeerConnection медіаданні від одного браузера до іншого можуть проходити навіть через NAT і мережеві екрани. Для успішної передачі медіапотоків учасники повинні обмінятися такими даними за допомогою транспорту, наприклад, веб-сокетів:
- учасник-ініціатор направляє другому учаснику Offer-SDP (структура даних, з характеристиками медіапотоку, які він буде передавати);
- другий учасник формує "відповідь" - Answer-SDP і пересилає його ініціатору;
- потім між учасниками організовується обмін ICE-кандидатами, якщо такі виявлені (якщо учасники знаходяться за NAT або мережевими екранами).
Після успішного завершення даного обміну між учасниками організовується безпосередньо передача медіапотоків (аудіо і відео).
RTCData Channel. Підтримка протоколу Data Channel з'явилася в браузерах порівняно недавно, тому даний API можна розглядати виключно у випадках використання WebRTC в браузерах Mozilla Firefox 22+ і Google Chrome 26+. З його допомогою учасники можуть обмінюватися текстовими повідомленнями в браузері.
Підключення по WebRTC
Підтримувані десктопні браузери
- Google Chrome (17+) і всі браузери на основі движка Chromium;
- Mozilla FireFox (18+);
- Opera (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 for Business, що відкриває для WebRTC ще більше бізнес застосувань.
WebRTC, Apple і Safari
За прогнозами аналітиків WebRTC для Safari вже на підході, чекаємо його в 2017 році. Станом на липень 2017 року підтримка WebRTC заявлена в мобільній версії ОС iOS 11, яка вийде цієї осені, а поки рекомендуємо використовувати і в iOS і в macOS браузер Chrome. Реалізація від Apple найімовірніше буде розширена підтримкою відеокодеків H.264 і H.265, а так само аудіокодеком AAC-ELD, який відповідає за кодування аудіо в FaceTime (додаток для відеодзвінків від Apple).
Підтримка технологій в браузерах
Приклад WebRTC конференції за допомогою TrueConf
Наше рішення TrueConf Server 4.4.2 також підтримує стандарт WebRTC. З його допомогою ви можете проводити групові конференції розміром до 250 учасників, в тому числі підключених через браузер. Детальніше про наш WebRTC-додатку можна дізнатися тут .
Корисні посилання
Офіційний сайт WebRTC WebRTC на Wiki WebRTC для розробників WebRTC в TrueConf
Що таке WebRTC?Що потрібно знати про WebRTC?
Що потрібно знати про WebRTC?