Сегодня WebRTC является вторым по популярности протоколом видеосвязи после проприетарного протокола Zoom, опережая все другие стандартные (H.323 и SIP) и проприетарные (Microsoft Teams и Cisco Webex) протоколы.
WebRTC
Материалы из Национальной библиотеки имени Баумана. Национальная библиотека им. Н. Э. Баумана Последнее изменение на этой странице: 11:35, 9 ноября 2016 г.
Создатель: | Глобальные IP-решения |
---|---|
Разработчики: | |
Тип программного обеспечения: | Общение в режиме реального времени |
Лицензия: | Лицензия BSD. |
Веб-сайт: | https://webrtc.org/ |
WebRTC (связь в реальном времени) — это проект с открытым исходным кодом для потоковой передачи данных между браузерами или другими поддерживающими приложениями с использованием технологии «точка-точка». Его включение в Рекомендации W3C поддерживается Google Chrome, Mozilla и Opera. WebRTC распространяется под лицензией BSD-3, а исходный код основан на продукте компании Global IP Solution, которая была приобретена Google в мае 2010 года.
Содержание
В мае 2011 года компания Google выпустила проект с открытым исходным кодом, основанный на коммуникации в реальном времени через веб-браузер, известный как WebRTC. Затем последовала работа по стандартизации соответствующих протоколов в IETF и API браузеров в W3C.
Проект W3C WebRTC — работа над продвинутыми реализациями в браузерах Chrome и Firefox. API основан на предварительной работе WHATWG и был перенесен как API однорангового соединения, а в Ericsson Labs была создана реализация предварительной концепции стандартов. Web Real-Time Communications предполагает, что данная спецификация будет значительно развиваться на основе этих разработок:
- Результаты текущих обменов в группе поддержки IETF RTCWEB для определения набора протоколов, которые вместе с этим документом определяют коммуникации в реальном времени в веб-браузерах.
- Частные вопросы в зависимости от местных возможностей и обстоятельств.
- Технические дискуссии в группе, особенно по реализации каналов передачи данных.
- Уроки, извлеченные из первых испытаний.
- Отзывы групп и отдельных лиц.
Работа WebRTC со стороны клиента
- Пользователь открывает страницу с JavaScript, который обрабатывает данные из библиотеки WebRTC.
- В верхней части страницы появляется служебная панель, где можно разрешить или запретить медиатрафик с камеры и микрофона. Чтобы запустить аудио- и видеопоток, пользователь должен разрешить медиатрафик.
- JavaScript получает основную сетевую информацию (IP-адреса и порты) из библиотеки WebRTC для обмена информацией между другими клиентами WebRTC (peers), даже если используются NAT и брандмауэр.
- Когда появляются сверстники, происходит обмен информацией об аудио- и видеокодеках.
- Начинается поток данных между клиентами WebRTC.
Для обмена данными между двумя участниками видеосервер не требуется, но если в конференции необходимо объединить несколько участников, включая другие каналы медиатрафика (например, видеопотоки от IP-камер), сервер необходим.
Видеосервер получает мультимедийный трафик из различных источников, преобразует его и отправляет пользователям, использующим WebRTC в качестве терминала.
Сервер WebRTC также принимает мультимедийный трафик от сверстников WebRTC и отправляет его участникам конференции через приложения для настольных компьютеров или мобильных телефонов, если таковые имеются.
Поэтому для полной безопасности рекомендуется использовать Firefox, который предлагает полную деактивацию WebRTC через сам браузер. Кроме того, можно установить дополнение NoScript, которое блокирует выполнение всех скриптов в браузере (также доступно для Chrome).
Как работает WebRTC
В качестве примера работы технологии рассмотрим разговор между двумя абонентами через веб-браузер:
- Пользователь открывает страницу с содержимым WebRTC.
- Браузер запрашивает доступ к камере и микрофону, если это необходимо. Пока пользователь не авторизует доступ к устройству, оно не используется. В случаях, когда это не требуется (например, при просмотре передач), никаких дополнительных разрешений не требуется.
- В браузере создается SDP-пакет, который инициирует соединение. По сути, это текстовый файл, содержащий всю необходимую информацию о параметрах соединения. Например, что передается (аудио, видео, данные), с помощью каких кодеков, какие параметры поддерживаются браузером и т.д.
- В зависимости от применения технологии, инициатор соединения пересылает этот пакет другим участникам. Часто используется сервер сигнализации и протокол WebSocket.
- На принимающей стороне браузер получает SDP-пакет, а затем генерирует аналогичный пакет, но уже с информацией из первого пакета. Второй пакет отправляется обратно на сторону отправителя. Два клиента едва понимают друг друга.
- В зависимости от приложения, состояние сетевого соединения анализируется параллельно с предыдущими этапами. Клиентам сообщается адрес сервера STUN, который используется для определения внешнего IP-адреса устройства. Это сравнивается с внутренним IP-адресом, чтобы определить, используется ли NAT в этом соединении, и если да, то как пересылаются UDP-пакеты. В более сложных случаях (например, при использовании Dual NAT) используются серверы TURN. По сути, это реле, которые преобразуют соединение клиент-клиент (P2P) в соединение клиент-сервер-клиент.
- Если все шаги были успешными, соединение установлено. Через регулярные промежутки времени срабатывает событие «onicecandidate», которое передает информацию об IP-адресах, настройках NAT и попытках соединения между клиентами.
Преимущества стандарта
- Установка программного обеспечения не требуется.
- Высокое качество связи благодаря:
- Использование современных видео- и аудиокодеков,
- Автоматическая настройка качества потоковой передачи в зависимости от условий подключения,
- Встроенная система эхо- и шумоподавления,
- Автоматическая регулировка чувствительности задействованных микрофонов (AGC).
- Все решения WebRTC не совместимы друг с другом, так как стандарт описывает только передачу видео и аудио и оставляет реализацию адресации участников, контроля их доступности, обмена сообщениями и файлами, составления расписания и т.д. на усмотрение разработчика. Другими словами, вы не можете набирать номер из одного приложения WebRTC в другое.
- Для пользователей, беспокоящихся о своей конфиденциальности, неприятным открытием станет то, что WebRTC распознает их реальные IP-адреса. Ни прокси-серверы, ни использование сети Tor не помогают сохранить анонимность. Вы можете скрыть IP-адрес с помощью различных служб VPN или сервера TURN. При необходимости использование WebRTC можно отключить.
- WebRTC не поддерживает управление удаленным рабочим столом. Да, можно транслировать происходящее на экране устройства, но это такой же односторонний видеопоток, как и изображение, передаваемое с камеры, и нет возможности взаимодействовать с источником потока. Это делается из соображений безопасности: Код Javascript не может управлять чем-либо за пределами текущего окна браузера. Другие функции, включая удаленное управление рабочим столом, могут быть обеспечены специально разработанными клиентскими приложениями от поставщиков систем видеоконференций.
Особенности работы WebRTC на мобильных устройствах
Кодировщики WebRTC можно разделить на обязательные (браузеры, реализующие эту технологию, должны ее поддерживать) и опциональные (не включены в стандарт, но добавляются некоторыми браузерами).
Аудиокодеки
WebRTC использует обязательные кодеки (Opus и G.711) и дополнительные кодеки (G.722, iLBC, iSAC) для сжатия аудиотрафика.
Opus — это аудиокодек с низкой задержкой (от 2,5 мс до 60 мс), переменным битрейтом и высокой степенью сжатия, идеально подходящий для потоковой передачи аудио в сетях с переменной пропускной способностью. Это основной аудиокодер для WebRTC. Opus — это гибридное решение, сочетающее в себе лучшие характеристики кодеков SILK (сжатие речи, устранение искажений человеческой речи) и CELT (кодирование звука). Кодировщик находится в свободном доступе, разработчикам, использующим его, не нужно платить отчисления правообладателям. По сравнению с другими аудиокодеками, Opus, несомненно, выигрывает по многим показателям. По ряду параметров он превосходит несколько популярных кодеров с низким битрейтом, таких как MP3, Vorbis, AAC LC. По звучанию Opus ближе к оригиналу, чем AMR-WB и Speex.
G.711 — это устаревший голосовой кодек с высокой скоростью передачи данных (64 кбит/с), в основном используемый в обычных телефонных системах. Основное преимущество — минимальные вычислительные затраты благодаря использованию облегченных алгоритмов сжатия. Кодер имеет низкую степень сжатия голосовых сигналов и не вносит дополнительной звуковой задержки при обмене данными между пользователями.
G.711 поддерживается большим количеством устройств. Системы, использующие этот кодек, проще в использовании, чем системы, основанные на других аудиокодеках (G.723, G.726, G.728 и т.д.). С точки зрения качества, G.711 получил оценку 4,2 в тесте MOS (оценка в диапазоне 4-5 баллов является наивысшей и означает хорошее качество, аналогичное или выше, чем у голосового трафика по ISDN).
G.722 — это стандарт ITU-T, который был принят в 1988 году и в настоящее время является свободным. Он может работать на скоростях 48, 56 и 64 кбит/с и обеспечивает качество звука, сравнимое с G.711. G.711 также не получил дальнейшего развития. Он поддерживается браузерами Chrome, Safari и Firefox.
iLBC (internet Low Bitrate Codec) — это узкополосный речевой кодек с открытым исходным кодом. Он доступен в браузерах Chrome и Safari. Из-за сжатия с высокой скоростью передачи данных при использовании этого кодека увеличивается нагрузка на процессор.
iSAC (internet Speech Audio Codec) — широкополосный аудиокодек для речи, ранее был проприетарным, теперь является частью проекта WebRTC, но не обязателен. Поддерживается браузерами Chrome и Safari. В реализации для WebRTC используется адаптивная скорость передачи от 10 до 52 кбит/с с частотой дискретизации 32 кГц.
Видеокодеки
Выбор видеокодека для WebRTC занял у разработчиков несколько лет, но в итоге VP8 и H.264 были включены в стандарт. Существуют также реализации дополнительных видеокодеков (H.265, VP9, AV1).
VP8 — это бесплатный и открыто лицензируемый видеокодек с высокой скоростью декодирования и высокой устойчивостью к потере кадров. Кодек универсален и легко внедряется в аппаратные платформы, поэтому разработчики систем видеоконференцсвязи часто используют его в своих продуктах. Совместим с браузерами Chrome, Edge, Firefox и Safari (12.1+).