Tiny Webrtc Gw Save

tiny/fast webRTC video conferencing gateway

Project README

webRTC videoconference-in-a-box (C monolith)

tiny-webrtc-gw: a webRTC conferencing server "monolith" written in C/C++

Welcome to the tiny-webrtc-gw readme!

Goals

  • Infinite ⌚ duration streams (security 📹 friendly)
  • private rooms
  • 1-click-join links
  • VP8,VP9,H.264
  • very fast stream multiplexing via lightweight C
  • NO cloud or external STUN/TURN involved ergo: raspberry-pi + airgapped LAN
  • SD/HD bitrates
  • High-performance: ~68Mbit/sec per stream+thread on an 800Mhz ARM7
  • friendly chatroom-style UX (e.g. justin.tv)

Features

  • Very low latency 1-many streaming
  • HD stream (via media constraints) support
  • text chat room
  • highly scalable (native c/c++ code)
  • end-to-end encrypted
  • chrome/firefox/opera/safari (iOS) support
  • easy compilation (just git checkout --recursive and "make all")
  • select media devices
  • code includes submodule referencing the standalone HTTPS server + example certificate
  • Works directly with OBS via WHIP

Demo:

📷chat lobby on a raspi4;

Pics:

☁"cloud"☁ Web interface + lobby + chat

Caveats:

since browsers won't allow webRTC to be negotiated unencrypted (https) you will need to run an SSL frontend in front of the built-in http server (see config.txt for that port) lots of better built-ins exist but I use a tool I wrote as a proxy [https://github.com/justinb01981/SSLTools] (maybe just use a (free) self-signed certificate generated by openssl(2) for now and import it into the conferencee's browser/OS certificate trust-store)

Building:

building requires 'go' to compile boringssl (so install those packages) from the base directory just run 'make all'.

Etc:

  • 8/15 - NO host setup necessary (beyond making ports accessible) - this is possible with the new stun_client.c code - but in airgapped networks config.txt is the way to go.
  • 9/14 - OBS-direct (no browser) streaming support coming - see https://webrtchacks.com/webrtc-cracks-the-whip-on-obs/
  • constructing a share URL:
<your_https_prefix>/content/index_broadcast.html?joinroom=<roomname>&camera=0

--- e.g. https://tinyurl.com/jbhatestypingthis

(drops a user in "lobby" with camera disabled)
Open Source Agenda is not affiliated with "Tiny Webrtc Gw" Project. README Source: justinb01981/tiny-webrtc-gw
Stars
70
Open Issues
0
Last Commit
4 weeks ago

Open Source Agenda Badge

Open Source Agenda Rating