Использование протокола WebRTC
WebRTC (Web Real-Time Communications) — это P2P (peer-to-peer) протокол общения между двумя клиентами, регламентирующий двунаправленную безопасную передачу данных в реальном времени.
Давайте разобьём определение на части. P2P (peer-to-peer) значит, что два агента (клиента) взаимодействуют друг с другом напрямую без каких-либо посредников. Двунаправленный указывает на функционирование в двух (противоположных) направлениях. Безопасный значит, что доступ к информации осуществляется через шифрование одним или несколькими протоколами безопасности. Коммуникация в реальном времени говорит о том, что обмен данными происходит без задержек либо с минимальными задержками.
У WebRTC есть множество преимуществ, например:
- сверхнизкая задержка (менее одной секунды),
- обязательное шифрование по протоколам DTLS и SRTP,
- стандарт с открытым исходным кодом,
- не требует установки программного обеспечения, плагинов и т.д.
- поддержка адаптивного потокового вещания (ABR).
Как работает WebRTC
Протокол WebRTC используется для обмена данными между браузерами (без установки плагинов или иных расширений) или другими поддерживающими его приложениями по типу "один-к-одному", или "клиент-клиент". Например, для связи двух браузеров по протоколу WebRTC необходимо зайти на один и тот же сайт в интернете.
Однако используя Flussonic как сигнальный сервер между клиентами, вы можете с легкостью организовать и связь "один-ко-многим". Сигнальный сервер — посредник, который позволяет передавать данные о соединении от одного клиента к другому. Следовательно, соединение из "клиент-клиент" превращается в "клиент-сервер-клиент". С помощью него возможно перейти от "один-к-одному" к "один-ко-многим", предоставляя бо́льшую функциональность.
Чтобы начать коммуникацию между клиентами, или агентами, по 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).
Читайте также:
-
Публикация по WebRTC о настройке публикации по WHIP.
-
Проигрывание по WebRTC о настройке проигрывания по WHEP.