WebRTC API
WebRTC (Web Real-Time Communications) — это технология, которая позволяет Web-приложениям и сайтам захватывать и выборочно передавать аудио и/или видео медиа-потоки, а также обмениваться произвольными данными между браузерами, без обязательного использования посредников. Набор стандартов, которые включает в себя технология WebRTC, позволяет обмениваться данными и проводить пиринговые телеконференции, без необходимости пользователю устанавливать плагины или любое другое стороннее программное обеспечение.
WebRTC состоит из нескольких взаимосвязанных программных интерфейсов (API) и протоколов, которые работают вместе. Документация, которую вы здесь найдёте, поможет вам понять основы WebRTC, как настроить и использовать соединение для передачи данных и медиа-потока, и многое другое.
Понятия и использование WebRTC
WebRTC является многоцелевым и вместе с Media Capture and Streams API (en-US) , предоставляют мощные мультимедийные возможности для Web, включая поддержку аудио и видео конференций, обмен файлами, захват экрана, управление идентификацией и взаимодействие с устаревшими телефонными системами, включая поддержку передачи сигналов тонового набора DTMF (en-US). Соединения между узлами могут создаваться без использования специальных драйверов или плагинов, и часто без промежуточных сервисов.
Соединение между двумя узлами представлено как объект интерфейса RTCPeerConnection . Как только соединение установлено и открыто, используя объект RTCPeerConnection , медиапотоки ( MediaStream s) и/или каналы данных ( RTCDataChannel (en-US)s) могут быть добавлены в соединение.
Медиа потоки могут состоять из любого количества треков (дорожек) медиаинформации. Эти треки, представлены объектами интерфейса MediaStreamTrack , и могут содержать один или несколько типов медиаданных, включая аудио, видео, текст (такие как субтитры или название глав). Большинство потоков состоят, как минимум, только из одного аудио трека (одной аудио дорожки), или видео дорожки, и могут быть отправлены и получены, как потоки (медиаданные в настоящим времени) или сохранены в файл.
Так же, можно использовать соединение между двумя узлами для обмена произвольными данными, используя объект интерфейса RTCDataChannel (en-US), что может быть использовано для передачи служебной информации, биржевых данных , пакетов игровых статусов, передача файлов или закрытых каналов передачи данных.
Совместимость
В целом WebRTC хорошо поддерживается современными браузерами, но некоторые проблемы всё же есть. Библиотека adapter.js позволяет приложениям избавиться от проблем несовместимости.
WebRTC интерфейсы
По причине того, что WebRTC предоставляет интерфейсы, работающие совместно для выполнения различных задач, мы разделили их на категории. Смотрите алфавитный указатель боковой панели для быстрой навигации.
Настройка соединения и управление
Эти интерфейсы используются для настройки, открытия и управлением WebRTC соединениями. Они представляют одноуровневые медиа соединения, каналы данных, и интерфейсы, использующиеся при обмене информацией о возможностях каждого узла, для выбора наилучшей конфигурации при установки двустороннего мультимедийного соединения.
Представляет WebRTC соединение между локальным компьютером и удалённым узлом. Используется для обработки успешной передачи данных между двумя узлами.
Представляет параметры сессии. Каждый RTCSessionDescription содержит описания типа (en-US) , показывающего какую часть (предложение/ответ) процесса переговоров он описывает, и SDP-дескриптор сессии .
Представляет собой кандидата сервера установки интернет соединения (ICE) для установления соединения RTCPeerConnection .
Представляет информацию о средстве подключения к Интернету (ICE).
Представляет события, которые происходят в отношении кандидатов ICE, обычно RTCPeerConnection . Один тип передаётся данному объекту события: icecandidate .
Управляет кодированием и передачей данных через объект типа MediaStreamTrack для объекта типа RTCPeerConnection .
Управляет получением и декодированием данных через объект типа MediaStreamTrack для объекта типа RTCPeerConnection .
Указывает на то, что новый входящий объект типа MediaStreamTrack был создан и объект типа RTCRtpReceiver (en-US) был добавлен в объект RTCPeerConnection .
Представляет сертификат, который использует объект RTCPeerConnection .
Представляет двунаправленный канал данных между двумя узлами соединения.
Представляет события, которые возникают при присоединении объекта типа RTCDataChannel (en-US) к объекту типа RTCPeerConnection . Один тип передаётся этому событию datachannel .
Управляет кодированием и передачей двухтональной мультичастотной (DTMF) сигнализацией для объекта типа RTCPeerConnection .
Указывает на входящее событие изменение тона двутоновой мультичастотной сигнализации (DTMF). Это событие не всплывает (если не указано иначе) и не является отменяемым (если не указано иначе).
Асинхронно сообщает статус для переданного объекта типа MediaStreamTrack .
Регистрирует провайдер идентификации (idP).
Активирует возможность браузеру запросить создание или проверку объявления идентификации.
Представляет идентификатор удалённого узла текущего соединения. Если узел ещё не установлен и подтверждён, ссылка на интерфейс вернёт null . После установки не изменяется.
Представляет объект события объявление идентификатора провайдером идентификации (idP). Событие объекта типа RTCPeerConnection . Один тип передаётся этому событию identityresult .
Представляет объект события ошибки, связанной с провайдером идентификации (idP). Событие объекта типа RTCPeerConnection . Два типа ошибки передаются этому событию : idpassertionerror и idpvalidationerror .
Руководства
Под API, который применяют разработчики, чтобы создавать и использовать WebRTC, расположен набор сетевых протоколов и стандартов соединения. Этот обзор — витрина этих стандартов.
WebRTC позволяет вам организовать соединение в режиме узел-узел для передачи произвольных данных, аудио-, видео-потоков или любую их комбинацию в браузере. В этой статье мы взглянем на жизнь WebRTC-сессии, начиная с установки соединения и пройдём весь путь до его завершения, когда оно больше не нужно.
WebRTC состоит из нескольких взаимосвязанных программных интерфейсов (API) и протоколов, которые работают вместе, чтобы обеспечить поддержку обмена данными и медиа-потоками между двумя и более узлами. В этой статье представлен краткий обзор каждого из этих API и какую цель он преследует.
Эта статья проведёт вас через создание кросс-браузерного RTC-приложения. К концу этой статьи вы должны иметь работающий дата- и медиа-канал, работающий в режиме точка-точка.
В этой статье представлены протоколы, в дополнение к которым создан API WebRTC.
Это руководство описывает как вы можете использовать соединение узел-узел и связанный RTCDataChannel (en-US) для обмена произвольными данными между двумя узлами.
В этой статье описано то, как протоколы, связанные с WebRTC, взаимодействуют друг с другом для того, чтобы создать соединение и передавать данные и/или медиа-потоки между узлами.
Учебные материалы
Организация WebRTC предлагает на GitHub библиотеку adapter.js для решения вопросов совместимости WebRTC реализаций в различных браузерах. Эта библиотека является JavaScript клином, который позволяет писать код, согласно спецификации, так, что бы он просто взял, и заработал во всех браузерах с поддержкой WebRTC, не смотря на проблемы совместимости браузеров.
Статья описывает как использовать WebRTC для получения доступа к камере на компьютере или мобильном устройстве с поддержкой WebRTC, и захват кадров с его помощью.
Интерфейс RTCDataChannel (en-US) — это функциональность, которая позволяет открыть канал передачи данных между двумя узлами, по которому можно предавать произвольные данные. Эти API намеренно подобны WebSocket API (en-US) , так, что бы в обоих могла использоваться единая модель программирования.
Например, мы берём чат на веб сокете, который мы создали в другом примере, и добавляем в него способность создавать видео вызовы. Сервер чата расширяется функциональностью обработки WebRTC сигнализации.
Ресурсы
Протоколы
WebRTC- текущие протоколы
- Протокол согласования соединения для Web RTC
- WebRTC Аудио кодек и требования к обработке
- RTCWeb Каналы данных
- RTCWeb Протокол канала данных
- Связь в реальном времени (WebRTC): Медиа транспорт и использование RTP
- WebRTC Безопасная архитектура
- Транспорты для RTCWEB
Связанные поддерживающие протоколы
- Установка интерактивной связи (ICE): Протокол обхода транслятора сетевых адресов (NAT) при доставки объектов Offer/Answer
- Сети обхода NAT (STUN)
- Схема URI для протокола сетей обхода NAT (STUN)
- Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers
- An Offer/Answer Model with Session Description Protocol (SDP)
- Session Traversal Utilities for NAT (STUN) Extension for Third Party Authorization
WebRTC статистика
Спецификации
| Specification |
|---|
| WebRTC: Real-Time Communication Between Browsers |
| Media Capture and Streams |
| Media Capture from DOM Elements |
В дополнение к этим спецификациям, определяющим API, необходимый для использования WebRTC, имеется несколько протоколов, перечисленных в разделе ресурсы.
Смотрите также
- MediaDevices
- MediaStreamEvent (en-US)
- MediaStreamConstraints (en-US)
- MediaStreamTrack
- MessageEvent (en-US)
- MediaStream
- Firefox multistream and renegotiation for Jitsi Videobridge
- Peering Through the WebRTC Fog with SocketPeer
- Inside the Party Bus: Building a Web App with Multiple Live Video Streams + Interactive Graphics
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 8 дек. 2023 г. by MDN contributors.
Your blueprint for a better internet.
Что такое WebRTC?
WebRTC (Web Real Time Communications) — это стандарт, который описывает передачу потоковых аудиоданных, видеоданных и контента между браузерами (без установки плагинов или иных расширений) или другими поддерживающими его приложениями в режиме реального времени. Данная технология позволяет превратить браузер в оконечный терминал видеоконференцсвязи. Чтобы начать общение, достаточно просто открыть веб-страницу конференции.
В этой статье мы раскроем некоторые особенности применения WebRTC, а также рассмотрим преимущества и недостатки данной технологии.
Как работает WebRTC
Рассмотрим работу технологии на примере звонка между двумя абонентами через браузер:

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

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

Преимущества стандарта
- Не требуется установка ПО.
- Высокое качество связи благодаря:
- использованию современных видео- и аудиокодеков;
- автоматическому подстраиванию качества потока под условия соединения;
- встроенной системе эхо- и шумоподавления;
- автоматической регулировке уровня чувствительности микрофонов участников (АРУ).
Недостатки стандарта
- Все WebRTC решения несовместимы между собой, т. к. стандарт описывает лишь способы передачи видео и звука, оставляя реализацию способов адресации абонентов, отслеживания их доступности, обмена сообщениями и файлами, планирования и прочего за разработчиком. Другими словами, вы не сможете позвонить из одного WebRTC приложения в другое.
- Для пользователей, которые беспокоятся о своей приватности, неприятным открытием станет то, что WebRTC определяет их реальные IP-адреса. При этом сохранить анонимность не поможет ни прокси, ни использование сети Tor. Скрыть IP-адрес можно с помощью различных VPN сервисов, а также при использовании TURN-сервера. При необходимости использование WebRTC можно отключить.
- WebRTC не поддерживает удалённое управление рабочим столом. Да, транслировать происходящее на экране устройства можно, но это будет такой же односторонний видеопоток, как и изображение, передающееся с камеры и способа взаимодействия с источником потока нет. Сделано это из соображений безопасности: код Javascript не может управлять чем-либо за пределами текущего окна браузера. Больше возможностей, включая удалённое управление рабочим столом, можно получить при использовании специально разработанных клиентских приложений вендоров ВКС.
Особенности работы WebRTC на мобильных устройствах
Кодеки в WebRTC
Кодеки WebRTC можно разделить на обязательные (браузеры, реализующие данную технологию должны их поддерживать) и дополнительные (не включённые в стандарт, но добавленные некоторыми браузерами).
Аудиокодеки
Для сжатия аудиотрафика в WebRTC используются обязательные кодеки (Opus и G.711) и дополнительные (G.722, iLBC, iSAC).
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 заняли у разработчиков несколько лет, в итоге в стандарт вошли VP8 и H.264. Также существуют реализации необязательных видеокодеков (H.265, VP9, AV1).
VP8
VP8 — свободный видеокодек с открытой лицензией, отличается высокой скоростью декодирования видеопотока и повышенной устойчивостью к потере кадров. Кодек универсален, его легко внедрить в аппаратные платформы, поэтому очень часто разработчики систем видеоконференцсвязи используют его в своих продуктах. Совместим с браузерами Chrome, Edge, Firefox и Safari (12.1+).
Платный видеокодек H.264 стал известен намного раньше своего собрата. Это кодек с высокой степенью сжатия видеопотока при сохранении высокого качества видео. Широкая распространенность этого кодека среди аппаратных систем видеоконференцсвязи предполагает его использование в стандарте WebRTC. Совместим с браузерами Chrome (52+), Edge, Firefox (в версиях 68+ для Android поддержка была прекращена) и Safari.
VP9
VP9 — открытый и бесплатный стандарт сжатия видео, разработанный в 2012 году компанией Google. Является развитием идей, заложенных в VP8 и в последующем был расширен в рамках AV1. Совместим с браузерами Chrome (48+) и Firefox.
H.265
H.265 — платный видеокодек, являющийся преемником H.264, обеспечивающий такое же визуальное качество при вдвое меньшем битрейте. Это достигается с помощью более эффективных алгоритмов сжатия. В настоящее время этот кодек конкурирует с бесплатным AV1.
AV1
AV1 — открытый кодек для сжатия видео, разработанный специально для передачи видео по сети Интернет. Поддерживается в Chrome (70+) и Firefox (67+).
При указании совместимости кодека с браузером Chrome подразумевается совместимостьсо всеми Chromium-based браузерами соответствующих версий.
Тонкости работы с технологией WebRTC
Подключение по WebRTC
В зависимости от конкретной реализации WebRTC возможны отличия в версиях совместимых браузеров. Подробный список поддерживаемых десктопных и мобильных браузеров для TrueConf доступен на странице системных требований.
Если вам интересно узнать, как будет развиваться технология WebRTC, то рекомендуем посетить официальный сайт разработки, а также страницы стандарта проекта и репозитория.
WebRTC для рынка ВКС
Популярность технологии
На сегодняшний день WebRTC второй по популярности после проприетарного протокола Zoom протокол видеосвязи и опережает все остальные стандартные (H.323 и SIP) и проприетарные (Microsoft Teams и Cisco Webex) протоколы.
Увеличение числа ВКС-терминалов
Технология WebRTC оказала сильное влияние на развитие рынка ВКС. После выхода в свет первых браузеров с поддержкой WebRTC в 2013 году потенциальное количество терминалов видеоконференцсвязи по всему миру сразу увеличилось на 1 млрд. устройств. По сути, каждый браузер стал ВКС терминалом, обладающим базовыми возможностями для участия в видеоконференциях.
Использование в специализированных решениях
Использование различных JavaScript библиотек и API облачных сервисов с поддержкой WebRTC позволяет легко добавить поддержку видеосвязи в любые веб-проекты. Ранее для передачи данных в реальном времени разработчикам приходилось изучать принципы работы протоколов и использовать наработки других компаний, которые чаще всего требовали дополнительного лицензирования, что увеличивало расходы. Уже сейчас WebRTC активно используется для организации видео-контакт-центров, проведения вебинаров и т. п.
Конкуренция с Flash
WebRTC и HTML5 стали смертельным ударом для технологии Flash, которая и так переживала свои далеко не лучшие годы. С 2017 года ведущие браузеры официально перестали поддерживать Flash и технология окончательно исчезла с рынка.
Примеры сервисов, использующих WebRTC

TrueConf Server — отечественная ВКС платформа, основанная на современной масштабируемой архитектуре SVC, работает как в локальных сетях, так и через Интернет. Сервер вебинаров разворачивается на оборудовании вашей компании, что гарантирует защиту персональных данных от доступа третьих лиц. Благодаря высокому разрешению видео (до 4К) и инструментам для совместной работы прекрасно подходит для трансляций онлайн-мероприятий, дистанционного образования и удаленной работы.
Google Meet
Google Meet — сервис мгновенного обмена сообщениями, а также проведения видео- и аудиозвонков, выпущенный в 2017 году компанией Google. В браузерах, основанных на Chromium (Google Chrome и др.) используется много скрытых возможностей WebRTC, которые не описаны в документации и периодически появляются первыми в его решениях для Meet (как и в его предшественнике Hangouts). Так было с захватом экрана, размытием фона, поддержкой аппаратного кодирования на некоторых платформах.
Jitsi Meet
Jitsi Meet — приложение с открытым исходным кодом, выпущенное компанией 8×8. Технология Jitsi основана на архитектуре Simulcast, что означает нестабильную работу на слабых каналах связи и высокие требования к скорости подключения на стороне сервера. Позволяет проводить веб-конференции только в браузере и не имеет полноценных клиентских приложений для совместной работы, поддержаны конференции с количеством участников не более 75 (до 35 с высоким качеством связи). Для полноценного использования Jitsi в корпоративной среде необходима самостоятельная разработка и установка дополнительного ПО.
BigBlueButton
BigBlueButton – это свободное программное обеспечение для видеоконференцсвязи. Особый акцент разработчики делают на дистанционном образовании (присутствуют такие функции как интерактивная доска, показ контента, поддержка опросов и т. п.). Поддерживает веб-конференции до 100 участников.
А что насчёт Zoom
Вопреки расхожему мнению в Zoom технология WebRTC не используется для передачи и декодирования медиа-данных. Сделано это для экономии серверных ресурсов. На стороне браузера задействованы другие web технологии — низкоуровневый WebAssembly и WebSocket. При использовании подобных нестандартных подходов передачи видеопотока могут возникать проблемы с качеством картинки у некоторых участников.
Что такое WebRTC и как сделать онлайн коммуникацию комфортнее?

В живых стриминговых сервисах, таких как блоггинг, платформы для дистанционного обучения и гейминг, важно активное взаимодействие между автором и зрителями, которое позволяет им обмениваться мнениями и принимать важные решения в реальном времени. Для всех участников таких трансляций есть свои выгоды, но основным ресурсом для получения прибыли являются зрители и авторы. Поэтому платформа должна удовлетворять требованиям обеих сторон, иначе они просто перейдут на другую платформу.
- Что такое WebRTC?
- Зачем WebRTC, если есть готовые платформы?
- А что с технологиями?
- К чему нужно быть готовым перед началом работы с WebRTC?
- Недостатки WebRTC
- Популярность
Что такое WebRTC?
Существуют множество технологий и средств организации живых трансляций. Однако если, помимо самой трансляции, критически важным элементом является обеспечение комфортного общения группы людей в формате видео, разговора или чата в сети Интернет, то оптимальный и доступный вариант – это WebRTC.
WebRTC — это стандарт, реализующий высокоскоростную передачу данных через веб-браузер. В частности, он используется для видеочатов и веб-конференций, поскольку может отправлять и получать большие объёмы данных, таких как аудио и видео, в реальном времени. Проект был запущен в 2011 году для реализации дальнейшей коммуникации в реальном времени через API.
Метод связи WebRTC — P2P. P2P — это сокращение от «Peer to Peer» и значит что терминалы обмениваются данными напрямую друг с другом, минуя сервер. Однако в веб-конференцях, с большим колличеством участников, P2P увеличивает нагрузку и ухудшает качество, поэтому используется метод клиент-сервер, который может решать проблемы с линией, отправляя и получая данные через сервер.
WebRTC позволяет начать трансляцию без установки дополнительного ПО, позвонив прямо из браузера, а ощущение реальности между участниками создается за счет низкой и стабильной задержки.
Зачем WebRTC, если есть готовые платформы?
Существует множество готовых и популярных платформ. Среди них — Twitch, YouTube, Periscope, Zoom, Facebook, VK Live и OK Live, которые позволяют стримить вживую и получать обратную связь. Но есть ситуации, когда эти платформы ограничиваются пользовательским контентом и технологиями, которые могут не соответствовать поставленным задачам.
Например, в некоторых странах Zoom заблокирован или имеет ограничения для использования отдельными организациями, связанными с государством. Кроме того, популярные сервисы, такие как Twitch и YouTube, могут ограничивать некоторый контент, например, adult-стриминг, который может не пройти модерацию. Люди, которые записались на консультацию у психолога или виртуальный медицинский прием, вряд ли захотят использовать общедоступные сервисы, чтобы защитить свои данные. Компании, проводящие живые трансляции тренингов, также могут захотеть защитить свой контент. Кроме того, стоит учитывать, что на YouTube действуют строгие правила по авторским правам. Платформа имеет полное право заблокировать весь контент автора, если он нарушает эти правила, что может привести к серьезным последствиям для автора, вплоть до закрытия его канала.
Будьте всегда в курсе новых возможностей WebRTC!
Подпишитесь, чтобы получать последние новости отрасли и оставаться в курсе событий.
Подписаться на наши новости
А что с технологиями?
В техническом плане большинство платформ, которые перечислены выше, используют достаточно эффективные технологии ( MPEG-DASH и RTMP, HLS), но у них есть свои ограничения, связанные с качеством звука, подстройкой под нестабильные каналы интернета, не все они дают ожидаемо низкую задержку на iOS. И самое важное — все эти популярные платформы требуют установки приложений, чтобы начать трансляцию, что не всегда бывает удобно как автору, так и зрителю.
Действительно, не для каждого кейса живого стриминга нужна технология WebRTC, но если в конкретном случае критичен эффект физического присутствия, быстроты реакции, качества звука, каналов связи для авторов и зрителей, или на платформах действуют ограничения, указанные выше, тогда, конечно, логичнее остановиться на создании стриминговой платформы на базе WebRTC.

К чему нужно быть готовым перед началом работы с WebRTC?
Есть возможность самостоятельно разработать и интегрировать WebRTC в свою стриминговую платформу, так как WebRTC является открытым стандартом, но могут возникнуть сложности. WebRTC — сравнительно молодая технология и специалистов по разработке сервисов, в которые интегрирована технология WebRTC не так много. И если не вдаваться в подробности — это очень и очень сложно и ресурсозатратно.
Более эффективным решением может быть использование готового и проверенного инструмента. В Flussonic Media Server уже давно успешно реализована технология WebRTC. В нём удалось использовать все преимущества стека технологий WebRTC , чтобы стриминговые платформы могли адаптироваться к нужным сценариям использования и реальным условиям работы их авторов и зрителей.
Использование Flussonic Media Server для организации общения по типу связи “один-ко-многим” при помощи WebRTC в стриминговой платформе дает множество преимуществ, которые помогут создать ощущение присутствия во время лайвстриминга.
При этом решение отличают следующие характеристики:
- Высокий уровень безопасности: все соединения защищены и зашифрованы согласно протоколам DTLS и SRTP. При этом WebRTC работает только по протоколу HTTPS, а использующий технологию сайт должен быть подписан сертификатом.
- Минимальная задержка. WebRTC — самая быстрая из доступных технологий. Задержка менее 0,5 сек достигается за счёт возможности передавать данные без прохождения через сервер. Обычная односторонняя связь использует протокол TCP. В этом протоколе передача данных осуществляется через сервер: Поток идёт от клиента на сервер -> сервер подтверждает что вторая сторона его получила. Данные передаются путём постоянного повторения этих шагов. WebRTC же, напротив, использует протокол UDP. В отличие от TCP он отправляет данные напрямую от клиента к клиенту, и не требует никакой обработки для начала или завершения коммуникации.
- Гарантированное качество звука с минимальной задержкой, достаточной для телефонных разговоров, поможет сохранить качество звука и скорость реакции во время лайвстриминга.
- Наконец, использование WebRTC позволяет снизить задержку для зрителей, использующих iPhone, до субсекундного значения. Это особенно важно для лайвстриминга, так как любая задержка может сильно повлиять на восприятие контента.
Помимо этого, Flussonic Media Server:
- Обеспечивает точную балансировку с учетом загрузки узлов, позволяющую направлять поток на нужный сервер и эффективно утилизировать аппаратную инфраструктуру.
- Осуществляет автоматическое переключение между TCP и UDP и позволяет выбирать оптимальный протокол для передачи данных в зависимости от типа данных и сетевых условий.
- Постоянно анализирует состояние каналов и позволяет быстро реагировать на изменения качества исходящего видео.
- Отлично масштабируется и обеспечивает бесперебойную доставку видео с максимально возможным качеством для тысяч, сотен тысяч и миллионов зрителей
- Поддерживает адаптивное вещание WebRTC ABR: для каких-то зрителей максимально возможное качество будет только в низком разрешении (больше их канал не потянет), другие смогут без проблем потреблять максимально возможный битрейт
Недостатки WebRTC
Хоть WebRTC и имеет множество значимых преимуществ, но в некоторых случаях выгоднее использовать TCP-связь. Давайте разберём в каких:
- WebRTC использует UDP в качестве протокола. Это упрощает общение, но снижает надёжность с точки зрения безопасности. Как упоминалось выше, TCP представляет собой серию шагов от момента, когда клиент начинает подключаться к серверу, до момента, когда другая сторона подтверждает, что сигнал был получен. Другими словами, доступность гарантируется возможностью каждый раз подтверждать, получила ли другая сторона данные. C другой стороны, UDP, который отправляет данные беспрерывно, не может подтвердить, действительно ли другая сторона их получила.
- Все WebRTC решения несовместимы между собой, т. к. стандарт описывает лишь способы передачи видео и звука, оставляя реализацию способов адресации абонентов, отслеживания их доступности, обмена сообщениями и файлами, планирования и прочего за разработчиком. Другими словами, вы не сможете позвонить из одного WebRTC приложения в другое.
- WebRTC определяет реальные IP-адреса пользователей. При этом сохранить анонимность не поможет ни прокси, ни использование сети Tor. Скрыть IP-адрес можно с помощью различных VPN сервисов, а также при использовании TURN-сервера.
Популярность
На сегодняшний день технология WebRTC является второй по популярности после проприетарного протокола Zoom и опережает все остальные стандартные (H.323 и SIP) и проприетарные (Microsoft Teams и Cisco Webex) протоколы.
Flussonic Media Server гарантирует все преимущества стека технологий WebRTC без необходимости разрабатывать инфраструктуру с нуля. Это готовая платформа, которая позволит сосредоточиться на бизнесе, монетизации контента, привлечении авторов и зрителей, которым необходим “эффект присутствия”, в то время как Flussonic позаботится о технических аспектах стриминга.

Максим Клюшков
Flussonic Media Server Team LeadНа передовой инноваций Flussonic: отвечает за разработку Flussonic Media Server, видео-аналитики, UI-сервисов
Основы WebRTC: определение и принцип работы


Автор МТС Линк. Рассказывает, как организовать удалённое обучение, работу и найм сотрудников.
Стандартом WebRTC называют передачу видео, аудио данных напрямую через браузеры, без установки дополнительных программ. По сути, это готовый канал коммуникации без сложной настройки сети и дорогостоящего оборудования. Технологию разработала компания Google.
Видеовстречи с возможностью записи без ограничений по времени
WebRTC изначально была создана для одноранговой видеосвязи без дополнительного сервера. Однако, со временем технология стала популярнее и сейчас на базе WebRTC разработчики систем ВКС создают мобильные приложения для групповых конференций, обмена сообщениями и передачи файлов. Пользователи такого ПО устанавливают соединение через интернет или в локальной сети.

WebRTC: что такое в локальных сетях и сетях интернет
Принцип работы WebRTC
Технология WebRTC является набором API и сетевых протоколов, через которые терминалы пользователей обмениваются данными. API позволяет создавать свои решения на базе этого стандарта и имеющейся инфраструктуры. Протоколы представляют собой правила, обеспечивающие условия для коммуникации.
Чтобы установить соединение, при запуске WebRTC сначала формируются медиа потоки (MediaStream).
1. Создание MediaStream
Потоки состоят из видео- и аудиоданных, которые отправляет пользователь. Бывает удаленный и локальный поток. Первый получает данные по сети, а второй — с ваших устройств, например, камер.
Может быть один или несколько не синхронизированных локальных медиа потоков. Обычно используется первый вариант, когда один поток объединяет две дорожки — видео и аудио, каждая из которых направлена из своего основного канала. В локальном описании при настройке звука и картинки используются специальные метки потока.
Подготовка звонка осуществляется протоколом описания сессии 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 обеспечивают все браузеры.
Бесплатное ПО, работающее со скоростью до 64 кбит/с. Поддерживается всеми популярными браузерами: Chrome, Firefox, Safari.
Дополнительное ПО с открытым исходным кодом. Этот узкополосный речевой кодек хорошо сжимает данные, но одновременно с этим сильно нагружает процессор.
Широкополосный кодек, не обязательная часть программного обеспечения WebRTC. Поддерживается только двумя агентами: Chrome и Safari.
Видеокодеки
Поддержку обмена видео осуществляют 4 кодека:
Универсальный кодек с открытой лицензией. Обеспечивает высокую скорость кодирования и низкую потерю кадров. Включен во всех популярных браузерах: Chrome, Edge, Firefox и Safari.
Второй обязательный видеософт — H.264 также гарантирует хорошее качество видео с высокой степенью сжатия.
Усовершенствованный VP8, также в свободном доступе, но поддержка есть только в Chrome и Firefox.
Обеспечивает качество видео 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 предоставляют возможность доработки сервиса под свои нужды.
FAQ
- Как отключается WebRTC? Для отключения технологии в настройках Google Chrome используем плагин WebRTC Control из магазина приложений. Для блокировки WebRTC в других браузерах также потребуется установить специальное дополнение. Сторонние дополнения не потребуются для отключения стандарта в Mozilla Firefox и на мобильных устройствах iOS, Android.
- Что такое WebRTC? Это создание одноранговых соединений в режиме реального времени без использования пользователями дополнительных сервисов. Технология позволяет разработчикам создавать свои решения и приложения для звонков.
Поделиться в соцсетях:
Подпишитесь на блог МТС Линк
Читайте кейсы и инструкции по работе в онлайне на почте
Смотрите также
- Webinar переходит на технологию WebRTC
- Видеоконференции в браузере
- Как выбрать сервер видеоконференцсвязи