webRTC видеоконференция в коробке (монолит C)
tiny-webrtc-gw: сервер конференц-связи webRTC «монолит», написанный на C/C++.
Добро пожаловать в файл readme tiny-webrtc-gw!
Цели
- Бесконечная продолжительность потоков (безопасность и безопасность)
- отдельные комнаты
- Ссылки в 1 клик
- ВП8, ВП9, H.264
- очень быстрое мультиплексирование потоков с помощью облегченного C
- НЕТ облака или внешнего STUN/TURN, следовательно: raspberry-pi + LAN с воздушным зазором
- Битрейт SD/HD
- Высокая производительность: ~68 Мбит/с на поток+поток на 800 МГц ARM7.
- дружелюбный пользовательский интерфейс в стиле чата (например, justin.tv)
Функции
- Очень низкая задержка
- Поддержка HD-потока (через ограничения мультимедиа)
- текстовый чат
- высокая масштабируемость (собственный код C/C++)
- сквозное шифрование
- поддержка Chrome/Firefox/opera/safari (iOS)
- простая компиляция (просто git checkout --recursive и «сделать все»)
- выберите мультимедийные устройства
- код включает подмодуль, ссылающийся на автономный сервер HTTPS + пример сертификата
- Работает напрямую с OBS через WHIP.
Демо:
?чат-лобби на raspi4; ☝URL-адрес WHIP (для OBS)
Фото:
Предостережения:
поскольку браузеры не позволяют согласовывать webRTC в незашифрованном виде (https), вам нужно будет запустить интерфейс SSL перед встроенным http-сервером (см. config.txt для этого порта). Существует множество лучших встроенных модулей, но я использую инструмент, который я написал в качестве прокси [https://github.com/justinb01981/SSLTools] (возможно, просто используйте (бесплатный) самозаверяющий сертификат, сгенерированный openssl(2) на данный момент и импортируйте его в доверенное хранилище сертификатов браузера/ОС конференции)
Здание:
для сборки требуется «go» для компиляции Borsssl (поэтому установите эти пакеты) из базового каталога, просто запустите «make all».
И т. д:
- 15 августа — НЕТ необходимости в настройке хоста (кроме обеспечения доступа к портам) — это возможно с помощью нового кода stun_client.c — но в сетях с воздушными зазорами лучше всего использовать config.txt.
- 14 сентября — появится поддержка прямой потоковой передачи через OBS (без браузера) — см. https://webrtchacks.com/webrtc-cracks-the-whip-on-obs/
- создание общего URL-адреса:
<your_https_prefix>/content/index_broadcast.html?joinroom=<roomname>&camera=0
--- например https://tinyurl.com/jbhatetypingthis
(drops a user in "lobby" with camera disabled)