Практические семинары
Труконф в городах России!

Что такое

WebRTC?

WebRTC (Web Real Time Communications) — это стандарт, который описывает передачу потоковых аудиоданных, видеоданных и контента между браузерами (без установки плагинов или иных расширений) или другими поддерживающими его приложениями в режиме реального времени. Данная технология позволяет превратить браузер в оконечный терминал видеоконференцсвязи. Чтобы начать общение, достаточно просто открыть веб-страницу конференции.

Как работает WebRTC

Рассмотрим работу технологии на примере звонка между двумя абонентами через браузер:

Пользователь открывает страницу, содержащую WebRTC контент.

1
Как работает WebRTC?

Браузер запрашивает доступ к веб-камере и микрофону, если это необходимо. Пока пользователь не разрешит доступ к устройству, оно не будет использоваться. В случаях, когда это необязательно (например, при просмотре трансляций), никаких дополнительных разрешений не требуется.

2

Пользователь открывает страницу, содержащую WebRTC контент.

3
Как работает WebRTC?

В зависимости от реализации технологии, инициатор соединения передаёт этот пакет другим участникам. Зачастую для этого используется сигнальный сервер и WebSocket протокол.

4

На принимающей стороне браузер получает SDP-пакет, а затем генерирует подобный, но с учетом информации из первого. Второй пакет отправляется назад, к инициирующей стороне. Теперь оба клиента уже имеют минимальное представление друг о друге.

5

В зависимости от реализации, параллельно с предыдущими шагами происходит анализ состояния подключения к сети. Клиентам передаётся адрес STUN-сервера, который используется, чтобы узнать внешний IP-адрес устройства. Он сравнивается с внутренним IP-адресом для того, чтобы определить используется ли NAT в данном подключении и, если да, то как маршрутизируются UDP-пакеты. В более сложных случаях (например, когда используется двойной NAT), применяются TURN-сервера. Они, по сути, являются ретрансляторами, превращая соединение клиент-клиент (P2P) в клиент-сервер-клиент.

6

Если все шаги пройдены успешно, то соединение устанавливается. Периодически вызывается событие onicecandidate, которое передаёт информацию об IP-адресах, настройках NAT, попытках подключения между клиентами.

7
Как работает 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 на мобильных устройствах

Кодеки в WebRTC

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

Аудиокодеки

Для сжатия аудиотрафика в WebRTC используются обязательные кодеки (Opus и G.711) и дополнительные (G.722, iLBC, iSAC).

Видеокодеки

Вопросы выбора видеокодека для WebRTC заняли у разработчиков несколько лет, в итоге в стандарт вошли VP8 и H.264. Также существуют реализации необязательных видеокодеков (H.265, VP9, AV1).

Opus

Opus — это аудиокодек с низкой задержкой кодирования (от 2.5 мс до 60 мс), поддержкой переменного битрейта и высоким уровнем сжатия, что идеально подходит для передачи потокового аудиосигнала в сетях с переменной пропускной способностью. Является основным аудиокодеком для WebRTC. Opus — гибридное решение, сочетающее в себе лучшие характеристики кодеков SILK (компрессия голоса, устранение искажений человеческой речи) и CELT (кодирование аудиоданных).

Кодек находится в свободном доступе, разработчикам, которые его используют, не нужно платить отчисления правообладателям. По сравнению с другими аудиокодеками, Opus, несомненно, выигрывает по множеству показателей. По ряду параметров он превосходит довольно популярные кодеки с низким битрейтом, такие, как MP3, Vorbis, AAC LC. Opus восстанавливает наиболее приближенную к оригиналу “картину” звука, чем AMR-WB и Speex.

G.711

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

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

G.722

G.722 — является стандартом ITU-T, принят в 1988 году, в настоящее время является бесплатным. Может работать со скоростью 48, 56 и 64 кбит/с, обеспечивая качество звука на уровне G.711. И аналогично G.711 является устаревшим. Поддерживается в Chrome, Safari и Firefox.

iLBC

iLBC (internet Low Bitrate Codec) — узкополосный речевой кодек с открытым исходным кодом. Доступен в Chrome и Safari. Из-за высокого сжатия потока при использовании данного кодека возрастает нагрузка на процессор.

iSAC

iSAC (internet Speech Audio Codec) — широкополосный речевой аудиокодек, ранее проприетарный, который в настоящее время является частью проекта WebRTC, тем не менее не обязателен для использования. Поддерживается в Chrome и Safari. В реализации для WebRTC используется адаптивный битрейт от 10 до 52 кбит/с с частотой дискретизации 32 kHz.

Тонкости работы с технологией WebRTC

WebRTC для рынка ВКС

Популярность технологии

На сегодняшний день WebRTC второй по популярности после проприетарного протокола Zoom протокол видеосвязи и опережает все остальные стандартные (H.323 и SIP) и проприетарные (Microsoft Teams и Cisco Webex) протоколы.

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

Использование различных JavaScript библиотек и API облачных сервисов с поддержкой WebRTC позволяет легко добавить поддержку видеосвязи в любые веб-проекты. Ранее для передачи данных в реальном времени разработчикам приходилось изучать принципы работы протоколов и использовать наработки других компаний, которые чаще всего требовали дополнительного лицензирования, что увеличивало расходы. Уже сейчас WebRTC активно используется для организации видео-контакт-центров, проведения вебинаров и т. п.

Увеличение числа ВКС-терминалов

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

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

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

Подключение по WebRTC

В зависимости от конкретной реализации WebRTC возможны отличия в версиях совместимых браузеров. Подробный список поддерживаемых десктопных и мобильных браузеров для TrueConf доступен на странице системных требований.

Если вам интересно узнать, как будет развиваться технология WebRTC, то рекомендуем посетить официальный сайт разработки, а также страницы стандарта проекта и репозитория.

Как работает WebRTC (API)?

В этом разделе мы расскажем о том, как работает WebRTC в JavaScript. WebRTC — это технология, которая позволяет совершать видео и аудио звонки или обмениваться данными между браузерами без необходимости устанавливать какие-либо дополнительные плагины или программы.

RTCPeerConnection

Это сессия в которой происходит общение. Она объединяет все протоколы, которые необходимы для работы WebRTC.

addTrack

Эта функция создает новый поток данных, который может передавать аудио, видео или другие данные. Каждый такой поток имеет свой уникальный номер (SSRC).

createDataChannel

Эта функция создает новый поток данных для передачи текста, файлов, и других данных.

createOffer

Эта функция создает предложение для связи. Это предложение содержит информацию о том, какие виды данных мы хотим передавать (аудио, видео, текст и т.д.) и как мы хотим их передавать.

setLocalDescription

Эта функция позволяет зафиксировать наши настройки, которые указаны в createOffer.

setRemoteDescription

Эта функция используется, чтобы сообщить нашему компьютеру о настройках.

addIceCandidate

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

ontrack

Это событие, которое происходит, когда у нас появляется новый медиа-поток (аудио, видео или что-то ещё) от другого устройства. Когда вы получаете звук или видео от кого-то другого.

oniceconnectionstatechange

Это событие, которое происходит, когда состояние нашего соединения меняется. Например, когда соединение устанавливается, или когда оно закрывается.

onconnectionstatechange

Это событие, аналогичное oniceconnectionstatechange, но оно учитывает состояние другого компонента соединения, DTLS (это протокол безопасности, используемый для шифрования данных).

Примеры сервисов, использующих WebRTC

TrueConf Server

TrueConf Server — отечественная ВКС платформа, основанная на современной масштабируемой архитектуре SVC, работает как в локальных сетях, так и через Интернет. Сервер вебинаров разворачивается на оборудовании вашей компании, что гарантирует защиту персональных данных от доступа третьих лиц. Благодаря высокому разрешению видео (до 4К) и инструментам для совместной работы прекрасно подходит для трансляций онлайн-мероприятий, дистанционного образования и удаленной работы.

Google Meet

Google Meet — сервис мгновенного обмена сообщениями, а также проведения видео- и аудиозвонков, выпущенный в 2017 году компанией Google. В браузерах, основанных на Chromium (Google Chrome и др.) используется много скрытых возможностей WebRTC, которые не описаны в документации и периодически появляются первыми в его решениях для Meet (как и в его предшественнике Hangouts). Так было с захватом экрана, размытием фона, поддержкой аппаратного кодирования на некоторых платформах.

Jitsi Meet

Jitsi Meet — приложение с открытым исходным кодом, выпущенное компанией 8x8. Технология Jitsi основана на архитектуре Simulcast, что означает нестабильную работу на слабых каналах связи и высокие требования к скорости подключения на стороне сервера. Позволяет проводить веб-конференции только в браузере и не имеет полноценных клиентских приложений для совместной работы, поддержаны конференции с количеством участников не более 75 (до 35 с высоким качеством связи). Для полноценного использования Jitsi в корпоративной среде необходима самостоятельная разработка и установка дополнительного ПО.

BigBlueButton

BigBlueButton – это свободное программное обеспечение для видеоконференцсвязи. Особый акцент разработчики делают на дистанционном образовании (присутствуют такие функции как интерактивная доска, показ контента, поддержка опросов и т. п.). Поддерживает веб-конференции до 100 участников.

Zoom

Вопреки расхожему мнению в Zoom технология WebRTC не используется для передачи и декодирования медиа-данных. Сделано это для экономии серверных ресурсов. На стороне браузера задействованы другие web технологии – низкоуровневый WebAssembly и WebSocket. При использовании подобных нестандартных подходов передачи видеопотока могут возникать проблемы с качеством картинки у некоторых участников.

Актуальные браузеры

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

Canary

Chrome

Chrome

Opera

Opera

Nightly

Nightly

Firefox

Firefox

Browser

Browser

Edge

Edge

Safari

Safari

Попробуйте безопасную ВКС-платформу Труконф!

Попробуйте безопасную ВКС-платформу Труконф!

Принимайте вызовы и участвуйте в конференциях на любых доступных устройствах — история чата синхронизируется автоматически.

Наши новости

Обновление TrueConf Server 5.4.3: исправления и улучшения

Обновление TrueConf Server 5.4.3: исправления и улучшения

Обновление мессенджера и ВКС-системы TrueConf Server 5.4.2: автоувеличение выступающего в браузере, поддержка 60 к/c и новый режим — MCU

Обновление мессенджера и ВКС-системы TrueConf Server 5.4.2: автоувеличение выступающего в браузере, поддержка 60 к/c и новый режим — MCU

Обновление TrueConf Server 5.4.1: исправления и улучшения

Обновление TrueConf Server 5.4.1: исправления и улучшения

Содержание