Skip to content

Использование протокола WebRTC

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

Давайте разобьём определение на части. P2P (peer-to-peer) значит, что два агента (клиента) взаимодействуют друг с другом напрямую без каких-либо посредников. Двунаправленный указывает на функционирование в двух (противоположных) направлениях. Безопасный значит, что доступ к информации осуществляется через шифрование одним или несколькими протоколами безопасности. Коммуникация в реальном времени говорит о том, что обмен данными происходит без задержек либо с минимальными задержками.

У WebRTC есть множество преимуществ, например:

  • сверхнизкая задержка (менее одной секунды),
  • обязательное шифрование по протоколам DTLS и SRTP,
  • стандарт с открытым исходным кодом,
  • не требует установки программного обеспечения, плагинов и т.д.
  • поддержка адаптивного потокового вещания (ABR).

Попробуйте сами

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

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

Однако используя Flussonic как сигнальный сервер между клиентами, вы можете с легкостью организовать и связь "один-ко-многим". Сигнальный сервер — посредник, который позволяет передавать данные о соединении от одного клиента к другому. Следовательно, соединение из "клиент-клиент" превращается в "клиент-сервер-клиент". С помощью него возможно перейти от "один-к-одному" к "один-ко-многим", предоставляя бо́льшую функциональность.

Flussonic как сигнальный сервер WebRTC

Чтобы начать коммуникацию между клиентами, или агентами, по WebRTC, необходимо последовательное успешное выполнение четырёх шагов:

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

Публикация и проигрывание по WebRTC. Стандарты WHIP и WHEP

Долгое время WebRTC не использовался в области вещания и проигрывания потоков, так как у него нет стандартного протокола сигнализации и он слишком сложен для внедрения в инструменты и приложения для вещания. Для решения этой проблемы были разработаны стандарты WHIP (WebRTC-HTTP ingest protocol) и WHEP (WebRTC-HTTP egress protocol). WHIP используется для публикации на Flussonic, а WHEP — для проигрывания с Flussonic.

Эти протоколы предоставляют простой и независимый от медиа-сервера способ проигрывания потоков по WebRTC, который легко интегрировать в существующие инструменты вещания. Процесс согласования WebRTC в WHIP и WHEP сводится к отправке запроса HTTP POST с сообщением SDP и получению от медиа-сервера ответа 200/202 для получения ответного сообщения SDP. При этом WHIP и WHEP сохраняют все преимущества протокола WebRTC — низкую задержку, отказоустойчивость, адаптацию загрузки канала, шифрование, использование популярных кодеков, адаптивный битрейт и т.д.

Протоколы WHIP и WHEP практически полностью аналогичны. Единственное отличие заключается в том, что WHEP поддерживает два режима согласования сессии: 1) POST-запрос как в WHIP и 2) пустой POST+последующий PATCH. Второй способ позволяет серверу и клиенту заранее согласовать характеристики потока, такие как аудио и видео кодеки, чтобы клиенту не нужно было выделять ресурсы под все поддерживаемые кодеки. Подробнее о процессе обмена данными для установления соединения между сервером (в нашем случае Flussonic) и клиентским приложением читайте в стандартах: WHIP / WHEP (см. раздел Overview).

Читайте также: