Использование протокола 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.
Flussonic оценивает состояние WHIP и WHEP сессий по полезным данным (payload) следующим образом:
- Если в течение 30 секунд Flussonic не получает хотя бы одного ICE-запроса на привязку или связывание (binding request) либо сообщения RTCP RR (Receiver Report), то WHEP-сессия (сессия проигрывания) завершается.
- Если в течение трёх секунд Flussonic не получает хотя бы одного ICE-запроса на привязку или связывание (binding request) либо RTP или RTCP SR (Sender Request) сообщения, то WHIP-сессия (сессия публикации) завершается.
Подробнее о процессе обмена данными для установления соединения между сервером (в нашем случае Flussonic) и клиентским приложением читайте в разделах Overview следующих стандартов:
Читайте также:
- Публикация по WebRTC о настройке публикации по WHIP.
- Проигрывание по WebRTC о настройке проигрывания по WHEP.