WebRTC - что это такое, настройка, как работает
Стандартом WebRTC называют передачу видео, аудио данных напрямую через браузеры, без установки дополнительных программ. По сути, это готовый канал коммуникации без сложной настройки сети и дорогостоящего оборудования. Технологию разработала компания Google.
WebRTC изначально была создана для одноранговой видеосвязи без дополнительного сервера. Однако, со временем технология стала популярнее и сейчас на базе WebRTC разработчики систем ВКС создают мобильные приложения для групповых конференций, обмена сообщениями и передачи файлов. Пользователи такого ПО устанавливают соединение через интернет или в локальной сети.
WebRTC: что такое в локальных сетях и сетях интернет
Принцип работы WebRTC
Технология WebRTC является набором API и сетевых протоколов, через которые терминалы пользователей обмениваются данными. API позволяет создавать свои решения на базе этого стандарта и имеющейся инфраструктуры. Протоколы представляют собой правила, обеспечивающие условия для коммуникации.
Чтобы установить соединение, при запуске WebRTC сначала формируются медиа потоки (MediaStream).
1. Создание MediaStream
Потоки состоят из видео- и аудиоданных, которые отправляет пользователь. Бывает удаленный и локальный поток. Первый получает данные по сети, а второй — с ваших устройств, например, камер.
Может быть один или несколько не синхронизированных локальных медиа потоков. Обычно используется первый вариант, когда один поток объединяет две дорожки — видео и аудио, каждая из которых направлена из своего основного канала. В локальном описании при настройке звука и картинки используются специальные метки потока.
2. Сигнализация
Подготовка звонка осуществляется протоколом описания сессии SDP. Дескриптор сессии состоит из текстового файла настроек соединения и параметров сессии. Он формируется когда один из агентов делает отправку запроса на подключение. Что сохраняется в файле протокола SDP:
- Аудио и видеокодеки, которые поддерживает каждый из терминалов.
- Описания локального медиапотока.
- Тип данных, которые будут передаваться (аудио или видео).
- IP и порты для последующего доступа агентов друг к другу.
Несмотря на то, что WebRTC предоставляет интерфейсы для разных задач, протокола для отправки данных о соединении у технологии нет. Нужны другие способы передачи. Передачу SDP осуществляет сигнальный сервер или технология WebSocket. После получения и обработки данных принимающий клиент отправляет аналогичный файл со своими параметрами.
Для подключения формируются дескрипторы с описаниями сессий
3. Попытка соединения с помощью NAT и ICE
Чтобы произвести установку p2p соединения браузеры должны обнаружить друг друга и это сложнее, чем в случае серверной видеосвязи. На это есть две возможных причины:
- Агенты не имеют публичных внешних IP.
- Узлы находятся в разных сетях: локальный пир и публичный.
Эту проблему можно решить, используя протоколы ICE, серверы TURN, STUN и функцию преобразования сетевых адресов NAT.
Механизм NAT помогает временно перевести локальный IP в публичный внешний IP-адрес. Протоколы STUN и TURN предоставляют информацию о созданных IP и портах. Через STUN создаются отображения NAT и определяются публичные IP-адреса клиентов. TURN является частью STUN, иногда используется как подобие сервера в клиент-серверной связи.
На этапе сигнализации каждый терминал формирует информацию о транспортном пути (candidates), по которому его можно найти. Эти данные передаются в текстовом виде в SDP. Одни транспортные пути передаются из локальных сетевых интерфейсов, другие могут быть сформированы STUN или TURN сервером.
Агенты ICE получают данные пути и создают оптимальное соединение. Они позволяют устанавливать наиболее подходящую пару адресов, используя локальные пути и дополнительных кандидатов, найденных с помощью серверов.
4. Обеспечение шифрования
Технологии WebRTC позволяют передавать информацию через зашифрованные протоколами DTLS и SRTP каналы данных. После шифрования, при стабильном соединении, начинается обмен данными.
WebRTC обеспечивает прямую передачу данных и обмен файлами без сторонних дополнений
Плюсы стандарта
По сравнению с серверными решениями, эта технология предоставляет некоторые преимущества своим пользователям:
- Это простой способ видеосвязи, потому что не требуется дополнительное оборудование. Вы сможете организовать конференцию с вашим компьютером, смартфоном или планшетом без потери качества видео.
- Нет необходимости также и в дополнительном программном обеспечении. Поддержку WebRTC осуществляют все основные браузеры, включая Chrome, Mozilla Firefox, Safari, Yandex и Edge. Организатору видеовстречи не придется устанавливать плагины (flash и другие).
- Для приглашенных на онлайн-встречу конечных пользователей коммуникация также становится удобнее — они могут открывать страницу с мероприятием без регистрации во всех популярных браузерах.
- Еще одно преимущество в том, что технология поддерживает передачу данных с минимальной задержкой. Когда пользователям сначала приходится отправлять данные на сервер, задержка увеличивается и это сказывается на качестве общения. WebRTC гарантирует низкую задержку 0,5 секунд потому что агенты передают данные напрямую и без обработки.
- Каналы передачи зашифровываются. DTLS, SRTP и работа по протоколу HTTPS обеспечивают безопасные коммуникации. Кроме того, для полноценной работы с WebRTC ваш сайт необходимо подписать сертификатом.
- Эта технология — с доступным исходным кодом и она наилучший способ внедрить видеосвязь в свой проект.
При обмене информацией WebRTC может открывать реальный и локальный ip-адрес
Минусы стандарта
Первый недостаток WebRTC заключается в возможной утечке вашего IP-адреса пользователя в процессе коммуникации. Это приводит к необходимости использования VPN сервисов, скрывающих реальный IP-адрес.
Однако, этого бывает недостаточно и у пользователя VPN также может происходить утечка данных, связанная уже со второй уязвимостью технологии. Она заключается в возможности утечки данных WebRTC из-за плохого шифрования. Стандарт поддерживает протоколы DTLS и SRTP, но их бывает недостаточно для обеспечения безопасности.
Третья проблема технологии — несовместимость приложений, созданных на ее базе. Иными словами, у вас не получится использовать в процессе одной конференции два разных решения WebRTC для передачи сообщений и звонков.
Браузеры определяют ваш реальный публичный ip адрес
Кодеки в технологии WebRTC
В WebRTC поддерживаются две группы кодеков: стандартные и дополнительные. Поддержку кодеков из первой группы осуществляют все браузеры с WebRTC, вторые присутствуют не везде.
Аудиокодеки
- Opus.
Этот кодек создан для кодирования и передачи данных в нестабильных сетях. Поддержку аудио кодека Opus обеспечивают все браузеры.
- G.722.
Бесплатное ПО, работающее со скоростью до 64 кбит/с. Поддерживается всеми популярными браузерами: Chrome, Firefox, Safari.
- iLBC.
Дополнительное ПО с открытым исходным кодом. Этот узкополосный речевой кодек хорошо сжимает данные, но одновременно с этим сильно нагружает процессор.
- iSAC.
Широкополосный кодек, не обязательная часть программного обеспечения WebRTC. Поддерживается только двумя агентами: Chrome и Safari.
Видеокодеки
Поддержку обмена видео осуществляют 4 кодека:
- VP8
Универсальный кодек с открытой лицензией. Обеспечивает высокую скорость кодирования и низкую потерю кадров. Включен во всех популярных браузерах: Chrome, Edge, Firefox и Safari.
- H.264
Второй обязательный видеософт — H.264 также гарантирует хорошее качество видео с высокой степенью сжатия.
- VP9.
Усовершенствованный VP8, также в свободном доступе, но поддержка есть только в Chrome и Firefox.
- H.265.
Обеспечивает качество видео H.264, но с более низким битрейтом.
Проблемы WebRTC на мобильных устройствах
Технология работает на любом устройстве, но с разработкой мобильных приложений на ее базе могут возникнуть несколько проблем:
- Неустойчивое соединение при передвижении пользователя.
- Большая нагрузка на процессор и быстрая разрядка устройства.
- Невозможность отображения всех пользователей из-за небольшого экрана.
Способы решения проблем:
- Использование бинарных данных для уменьшения объема данных.
- Оптимизация команд сигнального протокола (количество подключений и отключений).
- Использование минимально возможного количества PeerConnection, STUN и TURN-серверов.
- Приоритизация кандидатов с использованием параметра network-kost.
- Использование архитектуры SVC или MCU.
Стандарт поддерживает передачу медиа потоков без сторонних программ
Как подключить WebRTC
Большинство браузеров автоматически поддерживает этот протокол и для включения не потребуется использования дополнительных плагинов.
Однако бывает, что стандарт отключили вручную. В этом случае нужно зайти в список скачанных расширений и поискать в перечне плагины типа WebRTC Control, WebRTC Network Limiter или Easy WebRTC Block. Если они есть, удалите их.
В браузере Opera активировать протокол можно в разделе с настройками. Найдите в поиске этого раздела WebRTC и активируйте режим. В Safari также нужно зайти в «Настройки», выбрать «Дополнения», прокрутить вниз и открыть меню «Разработка». Затем в появившемся меню выбрать экспериментальные функции.
Настройка WebRTC также может потребовать настройки HTTPS соединения на сервере. В противном случае приглашенные абоненты при открытии страницы с видеоконференцией будут получать предупреждение о небезопасности ссылки.
Для включения WebRTC не требуется дополнительный инструмент
Проблемы безопасности WebRTC
Одна из сложностей работы с WebRTC заключается в том, что третьи лица могут узнать ваш реальный IP адрес. Обычно эта уязвимость закрывается посредством использования VPN.
В рамках обеспечения конфиденциальности также рекомендуется:
- Использование браузеров и ПО только из официальных источников.
- Отзыв неактуальных разрешений на камеру и микрофон.
- Использование https вместо http.
- Установка случайного ключа сессии.
- Использование протокола шифрования DTLS для передачи ключей SRTP.
- Аутентификация пользователей.
Как отключать WebRTC
Для отключения WebRTC нужно зайти в настройки браузера и воспользоваться специальными расширениями. Также есть возможность полностью отключить стандарт, не используя сторонние решения. Для этого существует специальная команда и опции в вашем браузере.
В браузере Mozilla Firefox можно применять второй способ. В верхнюю строку скопируйте команду about:config. Нажмите «Принять». В открывшемся окне вставьте в пустую строку текст media.peerconnection.enabled. Кликните по стрелкам в этой же строке справа, чтобы надпись true заменилась на false. Всё. WebRTC отключен, можно перезагружать браузер и работать.
Технология может открывать реальные ip-адреса при обмене данными
В Google Chrome придется установить плагин. Для этого нужно зайти в «Настройки», прокрутить страницу вниз и слева выбрать «Расширения». Найти и скачать WebRTC Control. После установки плагина, его нужно активировать, нажав на значок-паззл рядом с адресной строкой.
Для защиты ip-адрес пользователя иногда используют VPN
В Edge также потребуется плагин. Для его установки нужно набрать в адресной строке edge://extensions/, найти WebRTC Control, установить дополнение и перезагрузить браузер. Таким же образом, за исключением адреса магазина, действуйте в Opera и «Яндекс».
В Safari технология отключается в меню «Дополнения». Нужно открыть раздел «Разработка в меню» и в списке настроек отключить Remove Legacy WebRTC API.
Отключить технологию можно, если установить расширение
Какое влияние оказал стандарт WebRTC на рынок ВКС
Через несколько лет после появления, WebRTC опередил остальные типы стандартов, включая SIP-телефонию и протоколы Microsoft Teams, Cisco Webex. Первые браузеры с поддержкой новой технологии увеличили число потенциальных терминалов ВКС на 1 млрд — каждый из них стал готовым терминалом для участия в конференциях.
API облачные платформы, которые поддерживают WebRTC, упростили внедрение видеосвязи в различные веб-проекты. Ранее разработчикам приходилось использовать наработки других компаний, что влекло за собой дополнительное лицензирование и увеличение расходов.
3 сервиса видеосвязи, использующих WebRTC
1. Вебинары от МТС Линк
Это российская платформа для онлайн-обучения и вебинаров, доступная в двух версиях: для облачного использования и для локальной сети. Пользователи платформы Вебинары — промышленные предприятия, госсектор, вузы и школы, частный бизнес. Инструменты платформы позволяют передавать аудио и видео в хорошем качестве для 5000 слушателей одновременно. Основной набор инструментов включает:
- Загрузку и обмен файлами во всех популярных форматах.
- Интеграцию с онлайн-доской для совместной работы.
- Деление участников на группы для практических заданий.
- Редактор лендинга вебинара и рассылку приглашений.
- Автоматическую запись мероприятия.
- Демонстрацию экрана.
- Тестирование и опросы.
При необходимости можно подключать дополнительные настройки, например, брендирование, автовебинары, метрики. Реализация WebRTC отличается от других вебинарных площадок — разработана собственная технология с поддержкой HD и внедрением технологии в мобильные приложения. Здесь вы можете ознакомиться со списком совместимых браузеров, в которых поддерживается разработанный стандарт.
Для использования платформы Вебинары от МТС Линк не требуется специальное дополнение
2. Trueconf
Многофункциональный видеосервис для бизнеса. Trueconf реализуют в облачной и коробочной версии. Есть все необходимые функции для проведения конференций:
- Быстрый запуск видеозвонка.
- Демонстрация экрана спикера.
- Простая интеграция с IT-системами.
- Мультиплатформенность.
- Корпоративный мессенджер.
Trueconf не использует сторонние ресурсы и все сервисы уже встроены в продукт.
3. Jitsi Meet
Данная площадка представляет собой пример бесплатного программного обеспечения с открытым исходным кодом. JItsi работает на стационарных и мобильных устройствах через интернет. Для участников конференций — при прямом соединении через браузер. Информация об установке и настройке ПО выложена на сайте.
Возможности программы:
- Трансляция видео, рабочего стола и презентации.
- Общение с телефонными абонентами.
- Чат для обмена аудио и текстовыми сообщениями.
- Редактор текста с функцией совместной работы.
Инструменты Jitsi предоставляют возможность доработки сервиса под свои нужды.