WebRTC (Web Real Time Communications) — это стандарт, который описывает передачу потоковых аудиоданных, видеоданных и контента между браузерами (без установки плагинов или иных расширений) или другими поддерживающими его приложениями в режиме реального времени. Данная технология позволяет превратить браузер в оконечный терминал видеоконференцсвязи. Чтобы начать общение, достаточно просто открыть веб-страницу конференции.
Данный материал рассматривает:
Технологию WebRTC и ключевые особенности, сделавшие её столь необходимой для ВКС-решений и современных коммуникаций в целом.
Рассмотрим работу технологии на примере звонка между двумя абонентами через браузер:
Не требуется установка ПО
Использование современных видео- и аудиокодеков
Автоматическое подстраивание качества потока под условия соединения
Автоматическое регулировка уровня чувствительности микрофонов участников (АРУ)
Возможность реализации любого интерфейса управления на основе HTML5 и JavaScript
Высокий уровень безопасности: все соединения защищены и зашифрованы согласно протоколам DTLS и SRTP. При этом WebRTC работает только по протоколу HTTPS, а использующий технологию сайт должен быть подписан сертификатом
Поддержка технологии SVC добавлена как часть реализации кодеков VP9 и AV1. Несмотря на то, что на текущий момент всё ещё нет реализации в самих браузерах, программные решения TrueConf позволяют использование SVC в браузерных клиентах
Настоящая кросс-платформенность: одно и то же WebRTC приложение будет одинаково хорошо работать на любой операционной системе, десктопной или мобильной, при условии, что браузер поддерживает WebRTC. Это значительно экономит ресурсы на разработку ПО
Есть встроенный механизм захвата контента, например, рабочего стола
Проект с открытым исходным кодом — можно внедрить в свой продукт или сервис
Встроенное системе эхо- и шумоподавления
Все WebRTC решения несовместимы между собой, т. к. стандарт описывает лишь способы передачи видео и звука, оставляя реализацию способов адресации абонентов, отслеживания их доступности, обмена сообщениями и файлами, планирования и прочего за разработчиком. Другими словами, вы не сможете позвонить из одного WebRTC приложения в другое.
Для пользователей, которые беспокоятся о своей приватности, неприятным открытием станет то, что WebRTC определяет их реальные IP-адреса. При этом сохранить анонимность не поможет ни прокси, ни использование сети Tor. Скрыть IP-адрес можно с помощью различных VPN сервисов, а также при использовании TURN-сервера. При необходимости использование WebRTC можно отключить.
WebRTC не поддерживает удалённое управление рабочим столом. Да, транслировать происходящее на экране устройства можно, но это будет такой же односторонний видеопоток, как и изображение, передающееся с камеры и способа взаимодействия с источником потока нет. Сделано это из соображений безопасности: код Javascript не может управлять чем-либо за пределами текущего окна браузера. Больше возможностей, включая удалённое управление рабочим столом, можно получить при использовании специально разработанных клиентских приложений вендоров ВКС.
Популярность технологии
На сегодняшний день WebRTC второй по популярности после проприетарного протокола Zoom протокол видеосвязи и опережает все остальные стандартные (H.323 и SIP) и проприетарные (Microsoft Teams и Cisco Webex) протоколы.
Использование в специализированных решениях
Использование различных JavaScript библиотек и API облачных сервисов с поддержкой WebRTC позволяет легко добавить поддержку видеосвязи в любые веб-проекты. Ранее для передачи данных в реальном времени разработчикам приходилось изучать принципы работы протоколов и использовать наработки других компаний, которые чаще всего требовали дополнительного лицензирования, что увеличивало расходы. Уже сейчас WebRTC активно используется для организации видео-контакт-центров, проведения вебинаров и т. п.
Увеличение числа ВКС-терминалов
Технология WebRTC оказала сильное влияние на развитие рынка ВКС. После выхода в свет первых браузеров с поддержкой WebRTC в 2013 году потенциальное количество терминалов видеоконференцсвязи по всему миру сразу увеличилось на 1 млрд. устройств. По сути, каждый браузер стал ВКС терминалом, обладающим базовыми возможностями для участия в видеоконференциях.
Конкуренция с Flash
WebRTC и HTML5 стали смертельным ударом для технологии Flash, которая и так переживала свои далеко не лучшие годы. С 2017 года ведущие браузеры официально перестали поддерживать Flash и технология окончательно исчезла с рынка.
В зависимости от конкретной реализации WebRTC возможны отличия в версиях совместимых браузеров. Подробный список поддерживаемых десктопных и мобильных браузеров для TrueConf доступен на странице системных требований.
Если вам интересно узнать, как будет развиваться технология WebRTC, то рекомендуем посетить официальный сайт разработки, а также страницы стандарта проекта и репозитория.
Как работает WebRTC (API)?
В этом разделе мы расскажем о том, как работает WebRTC в JavaScript. WebRTC — это технология, которая позволяет совершать видео и аудио звонки или обмениваться данными между браузерами без необходимости устанавливать какие-либо дополнительные плагины или программы.
RTCPeerConnection
Это сессия в которой происходит общение. Она объединяет все протоколы, которые необходимы для работы WebRTC.
addTrack
Эта функция создает новый поток данных, который может передавать аудио, видео или другие данные. Каждый такой поток имеет свой уникальный номер (SSRC).
createDataChannel
Эта функция создает новый поток данных для передачи текста, файлов, и других данных.
createOffer
Эта функция создает предложение для связи. Это предложение содержит информацию о том, какие виды данных мы хотим передавать (аудио, видео, текст и т.д.) и как мы хотим их передавать.
setLocalDescription
Эта функция позволяет зафиксировать наши настройки, которые указаны в createOffer.
setRemoteDescription
Эта функция используется, чтобы сообщить нашему компьютеру о настройках.
addIceCandidate
Это метод, который позволяет устройству, использующему технологию WebRTC добавлять новых кандидатов для подключения к другим устройствам. Эти кандидаты представляют собой различные пути, по которым можно установить соединение.
ontrack
Это событие, которое происходит, когда у нас появляется новый медиа-поток (аудио, видео или что-то ещё) от другого устройства. Когда вы получаете звук или видео от кого-то другого.
oniceconnectionstatechange
Это событие, которое происходит, когда состояние нашего соединения меняется. Например, когда соединение устанавливается, или когда оно закрывается.
onconnectionstatechange
Это событие, аналогичное oniceconnectionstatechange, но оно учитывает состояние другого компонента соединения, DTLS (это протокол безопасности, используемый для шифрования данных).
PeerConnection API
getUserMedia
dataChannels
TURN Support
Echo cancellation
MediaStream API
mediaConstraints
Multiple Streams
Simulcast
Screen Sharing
Stream re-broadcasting
getStats API
ORTC API
H.264 video
VP8 video
Canary
Chrome
Opera
Nightly
Firefox
Browser
Edge
Safari
Обновление мессенджера и ВКС-системы TrueConf Server 5.4.2: автоувеличение выступающего в браузере, поддержка 60 к/c и новый режим — MCU