К содержанию
b8q
Войти Запросить демо
ПродуктВозможностиЧат, звонки, документы, канбан, ИИТехнологииWebRTC, WebSocket, PWA, CRDTБезопасностьTLS 1.3, P2P, шифрование данныхИнтеграцииTelegram, API, вебхуки
API-документацияREST, WebSocket, Webhooks
РешенияSelf-HostedРазвёртывание на вашем сервереWhite LabelВаш бренд, ваш доменКейсыСценарии использованияКомплаенс152-ФЗ, ФСТЭК, аудит
МиграцияПереход со Slack, Teams, Telegram
ТарифыТарифы
РесурсыБлогСтатьи и руководстваОбновленияИстория версийДорожная картаПланы развития продуктаВопросы и ответыОтветы на частые вопросы
КомпанияО проектеКоманда и миссияКонтактыСвяжитесь с намиПартнёрамПартнёрская программа
Запросить демоВойти

WebRTC: как работают корпоративные видеозвонки изнутри

16 марта 2026 · 19 мин чтения

Содержание

  1. Что такое WebRTC (без маркетинга)
  2. Краткая история: от Google до W3C-стандарта
  3. Как устанавливается соединение
  4. STUN и TURN: обход NAT
  5. Кодеки: VP8, VP9, H.264, AV1
  6. Качество: от чего зависит и как управлять
  7. P2P vs SFU vs MCU: архитектуры звонков
  8. Безопасность WebRTC
  9. WebRTC vs проприетарные протоколы
  10. WebRTC в корпоративной среде
  11. Проблемы и их решения
  12. Будущее WebRTC
  13. Заключение

Вы нажимаете кнопку «Позвонить» в мессенджере. Через 2 секунды видите лицо коллеги и слышите его голос. Ничего не устанавливали — звонок работает прямо в браузере. Качество — как в Zoom или лучше. Что за магия?

Никакой магии. Это WebRTC — открытый стандарт для аудио и видеокоммуникаций в реальном времени. Технология, которая работает в каждом браузере (Chrome, Firefox, Safari, Edge), не требует плагинов и поддерживает шифрование из коробки.

В этой статье разберём WebRTC с инженерной точки зрения: как устанавливается соединение, какие кодеки используются, чем P2P отличается от SFU, и почему для корпоративных звонков WebRTC — оптимальный выбор.

Что такое WebRTC (без маркетинга)

WebRTC (Web Real-Time Communication) — набор API и протоколов для передачи аудио, видео и произвольных данных между браузерами напрямую, без промежуточных серверов. Технически это три API:

  • MediaStream (getUserMedia). Получает доступ к камере и микрофону устройства. Возвращает поток медиаданных.
  • RTCPeerConnection. Устанавливает peer-to-peer соединение между двумя браузерами. Обрабатывает кодирование, шифрование, адаптацию к пропускной способности.
  • RTCDataChannel. Канал для передачи произвольных данных (текст, файлы, игровые состояния) с низкой задержкой.

Ключевое слово — «напрямую». В классической архитектуре (Zoom, Teams) видеопоток идёт от вашего браузера на сервер, а сервер передаёт его собеседнику. В WebRTC при P2P-соединении поток идёт от вашего браузера напрямую в браузер собеседника. Сервер нужен только для начального «знакомства» (signaling).

Зачем это важно для бизнеса

P2P-соединение даёт три практических преимущества:

Низкая задержка. Данные не проходят через промежуточный сервер — путь короче. Для звонка между Москвой и Петербургом задержка P2P составляет 5-15 мс. Через сервер в Амстердаме — 40-60 мс. Разница ощутима: при задержке выше 150 мс разговор становится некомфортным, люди начинают перебивать друг друга.

Приватность. Если медиаданные не проходят через сервер — сервер не может их перехватить. Даже если сервер скомпрометирован, видеопоток остаётся между участниками. Для компаний, обсуждающих конфиденциальные вопросы, это критически важно.

Стоимость. Медиасерверы дороги — они обрабатывают большие объёмы трафика и требуют мощного железа. P2P-звонки разгружают серверную инфраструктуру. Для self-hosted развёртываний это ощутимая экономия.

Краткая история: от Google до W3C-стандарта

2010 год. Google покупает компании GIPS (кодеки) и On2 Technologies (видеокодек VP8) за $124 млн. На базе их технологий начинает разработку открытого проекта.

2011 год. Google выпускает WebRTC как open-source проект. Ericsson демонстрирует первый видеозвонок между двумя браузерами.

2012-2014 годы. Chrome и Firefox добавляют поддержку WebRTC. Появляются первые коммерческие продукты. Стандартизация идёт через W3C и IETF.

2017 год. Apple добавляет WebRTC в Safari. Теперь технология работает во всех основных браузерах.

2021 год. WebRTC 1.0 получает статус W3C Recommendation — официальный веб-стандарт.

2023-2026 годы. Развитие WebRTC NV (Next Version): поддержка AV1/AV2 кодеков, улучшенный SVC (Scalable Video Coding), WebTransport, WebCodecs API для низкоуровневого контроля. Качество приближается к «кинематографическому» даже на слабых каналах.

Как устанавливается соединение

Давайте проследим, что происходит от нажатия кнопки «Позвонить» до появления видео собеседника. Весь процесс занимает 1-3 секунды, но внутри — сложная последовательность действий.

Шаг 1: Signaling (сигнализация)

WebRTC не определяет протокол сигнализации — это задача приложения. Мессенджер использует WebSocket-соединение с сервером для обмена метаданными между участниками.

Алиса нажимает «Позвонить Борису». Мессенджер отправляет на сервер сигнал: «Алиса хочет начать звонок с Борисом». Сервер передаёт этот сигнал Борису. Борис видит входящий звонок и принимает его.

На этом этапе никакие медиаданные ещё не передаются. Только метаданные: кто звонит, кому, какие кодеки поддерживает каждая сторона.

Шаг 2: SDP Offer/Answer

SDP (Session Description Protocol) — формат описания медиасессии. Содержит:

  • Поддерживаемые кодеки (VP8, VP9, H.264, Opus)
  • Разрешения видео
  • Параметры шифрования (DTLS fingerprint)
  • ICE-кандидаты (адреса для соединения)

Алиса создаёт SDP Offer (предложение) и отправляет его Борису через signaling-сервер. Борис создаёт SDP Answer (ответ) с информацией о своих возможностях. Стороны договариваются о параметрах сессии: какой кодек использовать, какое разрешение, какой битрейт.

Шаг 3: ICE (Interactive Connectivity Establishment)

Самый сложный этап. Задача — найти путь для прямого соединения между Алисой и Борисом. Проблема в том, что оба сидят за NAT (Network Address Translation) — их реальные IP-адреса скрыты за маршрутизатором.

ICE-агент на каждой стороне собирает «кандидатов» — адреса, по которым к нему можно подключиться:

  • Host candidates — локальные адреса (192.168.1.100:5000). Работают, только если оба в одной сети.
  • Server-reflexive candidates — внешние адреса, полученные от STUN-сервера. Это адрес, который видит интернет.
  • Relay candidates — адреса TURN-сервера. Запасной вариант, если прямое соединение невозможно.

ICE проверяет все пары кандидатов и выбирает лучшую. Приоритет: прямое P2P-соединение. Если не получается — через TURN-сервер.

Шаг 4: DTLS Handshake

Соединение установлено, но данные ещё нужно зашифровать. WebRTC использует DTLS (Datagram Transport Layer Security) — это TLS, адаптированный для UDP. Стороны обмениваются сертификатами и устанавливают зашифрованный канал.

Важный момент: шифрование в WebRTC обязательно. Нельзя отключить. Каждый звонок зашифрован — это требование стандарта, а не опция.

Шаг 5: SRTP — передача медиа

Наконец, начинается передача аудио и видео. WebRTC использует SRTP (Secure Real-time Transport Protocol) — зашифрованную версию RTP. Видеопоток кодируется выбранным кодеком, разбивается на пакеты, шифруется и отправляется по установленному каналу.

Весь процесс: Signaling → SDP → ICE → DTLS → SRTP. 1-3 секунды. Пользователь видит только анимацию ожидания.

STUN и TURN: обход NAT

NAT — главный враг P2P-соединений. Почти все устройства в интернете находятся за NAT: домашний роутер, корпоративный файрвол, мобильный оператор. NAT скрывает реальный адрес устройства, и два компьютера не могут найти друг друга напрямую.

STUN (Session Traversal Utilities for NAT)

STUN-сервер — простой сервер, который отвечает на один вопрос: «Какой у меня внешний адрес?» Ваш браузер отправляет запрос на STUN-сервер, тот видит, с какого IP пришёл запрос, и возвращает этот IP.

Теперь браузер знает свой внешний адрес и может сообщить его собеседнику. Если оба абонента за простым NAT (например, домашний роутер) — P2P-соединение устанавливается успешно. STUN-сервер почти не потребляет ресурсов — он отвечает на одиночные запросы и не обрабатывает медиатрафик.

Статистика: STUN успешно устанавливает P2P-соединение в 85-90% случаев для домашних пользователей.

TURN (Traversal Using Relays around NAT)

Иногда STUN не помогает. Это бывает при:

  • Симметричном NAT (типичен для корпоративных сетей)
  • Строгом файрволе, блокирующем UDP
  • Двойном NAT (мобильный оператор + домашний роутер)

В этих случаях подключается TURN-сервер. Он работает как ретранслятор: принимает поток от Алисы и передаёт Борису. P2P не получилось, но звонок всё равно работает.

TURN-сервер — дорогой компонент. Он обрабатывает весь медиатрафик, а это гигабайты для видеозвонков. Для корпоративного использования TURN-сервер развёртывается внутри инфраструктуры компании, что одновременно снижает задержки и обеспечивает безопасность — трафик не покидает корпоративную сеть.

ICE в цифрах

Типичная статистика для корпоративных звонков:

  • 60-70% звонков устанавливаются через прямой P2P (STUN)
  • 25-35% через TURN (корпоративные файрволы)
  • 2-5% — fallback на TCP-TURN (когда UDP полностью заблокирован)
  • Менее 1% — не удаётся установить соединение

Кодеки: VP8, VP9, H.264, AV1

Кодек определяет, как видеопоток сжимается для передачи по сети. Выбор кодека влияет на качество картинки, потребление трафика и нагрузку на процессор.

VP8

Первый видеокодек WebRTC. Open-source, разработан Google (On2 Technologies). Поддерживается всеми браузерами. Качество: хорошее для SD и 720p. Для 1080p требует высокий битрейт (2-4 Mbps). Нагрузка на CPU: средняя.

Когда использовать: legacy-совместимость, слабые устройства.

VP9

Наследник VP8. На 30-50% эффективнее по компрессии — то же качество при меньшем битрейте. Поддерживает SVC (Scalable Video Coding) — ключевая функция для групповых звонков. Нагрузка на CPU: выше, чем VP8.

Когда использовать: основной кодек для групповых звонков. 1080p при 1.5-2.5 Mbps.

H.264 (AVC)

Проприетарный кодек (Cisco предоставляет бесплатную реализацию OpenH264 для WebRTC). Аппаратное ускорение на большинстве устройств — низкая нагрузка на CPU. Качество сопоставимо с VP8.

Когда использовать: мобильные устройства с аппаратным ускорением H.264, низкий CPU-бюджет.

AV1

Новейший открытый кодек от Alliance for Open Media (Google, Mozilla, Microsoft, Apple). На 30% эффективнее VP9. Поддерживается в Chrome и Firefox с 2024 года. Аппаратная поддержка появляется в новых чипах (Apple M3+, Intel 14th gen+).

Когда использовать: максимальное качество при ограниченной пропускной способности. 1080p при 1-1.5 Mbps. Идеален для 4K-видеоконференций.

Opus — аудиокодек

Единый аудиокодек WebRTC. Поддерживает речь и музыку, адаптируется к пропускной способности от 6 kbps до 510 kbps. Задержка: 5-66 мс (настраивается). Качество при 32 kbps — сопоставимо с телефонной линией. При 64 kbps — как FM-радио. При 128 kbps — как CD.

Качество: от чего зависит и как управлять

Bandwidth Estimation

WebRTC непрерывно оценивает доступную пропускную способность и адаптирует качество видео. Механизм называется Bandwidth Estimation (BWE) и работает через GCC (Google Congestion Control).

Как это выглядит на практике: вы разговариваете в HD, и вдруг сосед по Wi-Fi начинает качать фильм. Пропускная способность падает. WebRTC за 2-3 секунды обнаруживает это (по задержкам пакетов и потерям) и автоматически снижает разрешение и битрейт. Вы видите, что картинка стала чуть менее чёткой, но звонок не прервался и звук не прерывается.

Приоритеты адаптации: сначала снижается разрешение видео (с 1080p до 720p, затем до 480p), затем снижается фреймрейт (с 30 до 15 fps), и только в крайнем случае отключается видео, оставляя аудио.

Jitter Buffer

Пакеты в интернете приходят не равномерно — с разной задержкой (jitter). Для видео и аудио это критично: если пакет пришёл с опозданием на 200 мс, появится заикание.

Jitter Buffer — буфер, который накапливает несколько пакетов и воспроизводит их равномерно. Размер буфера — компромисс между плавностью (больше буфер) и задержкой (меньше буфер). WebRTC управляет им автоматически, адаптируя размер к текущему состоянию сети.

FEC и NACK

Что делать, если пакет потерялся? Два механизма:

FEC (Forward Error Correction). К данным добавляется избыточная информация. Если один пакет из группы потерян — его можно восстановить по оставшимся. Увеличивает трафик на 10-30%, но устраняет эффект потерь до 5-10%.

NACK (Negative Acknowledgment). Получатель обнаруживает потерю и запрашивает повторную отправку. Работает для видео (один потерянный I-frame может испортить всю картинку), не подходит для аудио (к моменту повторной отправки звук уже неактуален).

Simulcast

Simulcast — отправка нескольких версий видеопотока с разным качеством одновременно. Например: 1080p, 720p и 360p. Медиасервер (SFU) выбирает для каждого получателя подходящий поток в зависимости от его пропускной способности.

Это особенно полезно для групповых звонков: участник с быстрым каналом получает HD, участник с мобильного интернета — 360p. Никто не страдает.

P2P vs SFU vs MCU: архитектуры звонков

Три архитектуры для видеозвонков, каждая для своего сценария.

P2P (Peer-to-Peer)

Каждый участник соединён напрямую с каждым. Сервер не участвует в передаче медиа.

Плюсы: минимальная задержка, максимальная приватность, нулевая нагрузка на сервер.

Минусы: каждый участник отправляет свой видеопоток всем остальным. При 5 участниках — 4 исходящих потока с каждого устройства. При 10 участниках — 9 потоков. Канал и CPU перегружаются.

Оптимально: звонки 1-на-1 и небольшие группы до 4-5 человек.

SFU (Selective Forwarding Unit)

Центральный сервер (SFU) получает потоки от всех участников и пересылает каждому участнику потоки остальных. SFU не декодирует и не перекодирует видео — просто маршрутизирует зашифрованные потоки.

Плюсы: каждый участник отправляет только один исходящий поток (на SFU). SFU выбирает качество для каждого получателя (simulcast). Масштабируется до 50-100 участников.

Минусы: SFU-сервер нагружен трафиком. Задержка чуть выше, чем при P2P (на один hop).

Оптимально: групповые звонки 5-50 человек. Это стандартная архитектура для корпоративных видеоконференций.

MCU (Multipoint Control Unit)

Сервер декодирует все входящие потоки, микширует их в один «композитный» поток (все участники на одном экране) и отправляет каждому участнику одну картинку.

Плюсы: минимальная нагрузка на клиентские устройства (получают один поток). Работает даже на очень слабых устройствах.

Минусы: колоссальная нагрузка на сервер (декодирование + микширование + кодирование). Все видят одинаковую раскладку — нельзя выбрать, кого смотреть крупнее. Задержка выше (обработка на сервере добавляет 100-300 мс).

Оптимально: специфические сценарии (вебинары с записью, легаси-оборудование).

Что использует b8q

Гибридная архитектура: P2P для звонков 1-на-1 (минимальная задержка, максимальная приватность) и SFU для групповых звонков (масштабируемость до десятков участников). Переключение автоматическое — пользователь не замечает разницы. Подробнее о технологиях — на странице технологий b8q.

Безопасность WebRTC

WebRTC — одна из немногих технологий, где шифрование обязательно по стандарту. Нельзя выключить. Нельзя обойти (без модификации браузера).

Обязательное шифрование

  • DTLS 1.2+ для установления ключей шифрования
  • SRTP для шифрования медиаданных (AES-128 Counter Mode)
  • DTLS-SRTP — связка, где ключи для SRTP генерируются через DTLS handshake

Каждый звонок шифруется уникальными ключами. Даже если злоумышленник перехватит трафик, он увидит только зашифрованные пакеты.

End-to-End шифрование в групповых звонках

При использовании SFU медиапоток проходит через сервер. Стандартный SRTP защищает от перехвата на уровне сети, но SFU-сервер теоретически мог бы получить доступ к медиа (хотя на практике он не декодирует поток).

Для максимальной безопасности существует Insertable Streams API — расширение, позволяющее шифровать медиаданные ещё до отправки на SFU. Сервер видит только зашифрованные фреймы и не может их декодировать. Расшифровка происходит только в браузерах участников.

Защита от атак

  • SRTP replay protection — защита от повторной отправки перехваченных пакетов
  • DTLS certificate fingerprint verification — защита от man-in-the-middle при signaling
  • Consent freshness — периодическая проверка, что собеседник всё ещё в звонке (защита от hijacking)
  • Origin-based security — доступ к камере/микрофону только с разрешения пользователя, привязан к домену

WebRTC vs проприетарные протоколы

Zoom использует собственный протокол. Teams — тоже. Чем WebRTC лучше?

Открытый стандарт vs чёрный ящик

WebRTC — открытый код. Любой эксперт может проверить реализацию, найти уязвимости, предложить улучшения. Проприетарные протоколы — чёрный ящик. Вы не знаете, как именно шифруются данные, нет ли бэкдоров, какие уязвимости существуют.

Для компаний, работающих с конфиденциальными данными, это принципиально. Как можно доверять безопасность коммуникаций системе, код которой нельзя проверить?

Нет зависимости от вендора

Zoom закрыл API для российских пользователей? С WebRTC такая ситуация невозможна — это открытый стандарт, реализованный в каждом браузере. Браузер не отзовут. Стандарт не заблокируют. Серверы, которые стоят на вашей территории, не отключат.

Нет клиентского приложения

WebRTC работает в браузере. Не нужно устанавливать Zoom Client (350 МБ), не нужно ждать обновлений, не нужно решать проблемы совместимости с корпоративными политиками установки ПО. Открыл ссылку — позвонил. Это критически важно для BYOD-сценариев.

Сравнительная таблица

Параметр WebRTC Zoom (проприетарный)
Код Открытый Закрытый
Клиент Браузер (0 МБ) Приложение (350 МБ)
Шифрование Обязательное (DTLS+SRTP) Опциональное E2EE
P2P Да Нет (всё через серверы)
Self-hosted Да Нет
Задержка (P2P) 5-30 мс 50-150 мс
Аудит кода Любой может Невозможен

WebRTC в корпоративной среде

WebRTC в офисе — это не то же самое, что WebRTC дома. Корпоративная сеть вносит свои особенности и ограничения.

Файрволы и прокси

Корпоративный файрвол может блокировать UDP-трафик (основной транспорт WebRTC). Решения:

  • TURN over TCP/443. Если UDP заблокирован, TURN-сервер работает через TCP на порту 443 (как обычный HTTPS). Файрвол пропускает.
  • TURN over TLS/443. Ещё надёжнее — трафик выглядит как обычный HTTPS. Не отличить от посещения сайта.
  • TURN внутри корпоративной сети. Если TURN-сервер развёрнут внутри — файрвол не мешает, трафик не покидает периметр.

QoS (Quality of Service)

В корпоративной сети WebRTC-трафик конкурирует с другими приложениями: загрузка файлов, стриминг, бэкапы. Без приоритизации звонок может «задёргаться» из-за того, что кто-то качает ISO-образ.

Решение: настроить QoS на сетевом оборудовании. WebRTC-трафик маркируется DSCP-метками (Differentiated Services Code Point) и получает приоритет. Видео — EF (Expedited Forwarding), аудио — EF, данные — AF41. Большинство корпоративных роутеров и коммутаторов поддерживают DSCP.

Запись звонков

В корпоративной среде часто нужно записывать звонки: для обучения, для compliance, для решения спорных ситуаций. С WebRTC это делается через SFU: сервер параллельно записывает потоки, которые пересылает участникам. Запись хранится на сервере компании, защищена теми же политиками безопасности.

Демонстрация экрана

getDisplayMedia API — расширение WebRTC для захвата экрана. Работает в браузере без плагинов. Можно расшарить весь экран, отдельное окно или вкладку браузера. Качество — до 1080p при 30fps. Нагрузка ниже, чем у видео с камеры (статичная картинка требует меньше битрейта).

Проблемы и их решения

«Собеседник меня не видит»

Причина: ICE не смог установить соединение. Обычно — строгий файрвол.

Решение: проверить доступность TURN-сервера. Открыть порт 443/TCP для TURN over TLS.

«Видео дёргается»

Причина: недостаточная пропускная способность или высокий jitter.

Решение: снизить разрешение (720p вместо 1080p), настроить QoS, проверить нагрузку на канал другими приложениями.

«Эхо при звонке»

Причина: звук из динамика попадает обратно в микрофон.

Решение: WebRTC включает AEC (Acoustic Echo Cancellation) автоматически. Если не помогает — используйте гарнитуру вместо встроенных динамиков.

«Задержка 500+ мс»

Причина: соединение через TURN-сервер, расположенный далеко.

Решение: развернуть TURN-сервер ближе к пользователям. Для компании с офисами в Москве и Новосибирске — TURN в обоих городах.

«Высокая нагрузка на CPU»

Причина: программное кодирование VP9/AV1 на слабом устройстве.

Решение: переключиться на H.264 (аппаратное ускорение) или снизить разрешение.

Будущее WebRTC

WebRTC NV (Next Version)

Работа над следующей версией стандарта уже идёт. Ключевые направления:

  • WebTransport — новый транспортный протокол (на базе HTTP/3 и QUIC), более эффективный, чем Data Channel
  • WebCodecs — прямой доступ к аппаратным кодекам, кастомная обработка видео (фильтры, эффекты, подмена фона) на стороне клиента
  • AV1 SVC — масштабируемое кодирование AV1 для эффективных групповых звонков
  • ML-обработка в реальном времени — шумоподавление, улучшение освещения, виртуальные фоны — всё в браузере через WebGPU

AI и WebRTC

Интеграция AI с видеозвонками уже реальность:

  • Автоматические субтитры в реальном времени (speech-to-text)
  • Перевод на лету (участники говорят на разных языках)
  • Умное шумоподавление (устраняет фоновый шум, оставляя голос)
  • Автоматическое ведение протокола звонка
  • Анализ вовлечённости участников

b8q использует WebRTC для всех видео и аудиозвонков и интегрирует AI-функции прямо в звонки. Подробнее — на странице возможностей.

Заключение

WebRTC — не просто «ещё один способ сделать звонок». Это открытый стандарт, который даёт компаниям три вещи, недоступные при использовании проприетарных решений:

  1. Независимость. Никакой вендор не может отключить вам WebRTC. Технология встроена в каждый браузер и не зависит от чьей-то политики.
  2. Проверяемая безопасность. Открытый код = аудируемое шифрование. Для компаний, работающих с конфиденциальной информацией, это не опция, а требование.
  3. Гибкость. P2P для приватных звонков, SFU для конференций, запись, screen sharing — всё на одной технологии. Self-hosted для полного контроля.

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

Попробуйте b8q в своей команде

Чат, звонки, документы, канбан и ИИ — в одном мессенджере. На вашем сервере или в облаке.