konferensi video webRTC-dalam-kotak (monolit C)
tiny-webrtc-gw: server konferensi webRTC "monolit" yang ditulis dalam C/C++
Selamat datang di readme tiny-webrtc-gw!
Sasaran
- Aliran durasi ⌚ tak terbatas (keamanan? Ramah)
- kamar pribadi
- Tautan 1-klik-gabung
- VP8,VP9,H.264
- multiplexing aliran sangat cepat melalui C. ringan
- TIDAK ADA cloud atau STUN/TURN eksternal yang terlibat, jadi: raspberry-pi + LAN airgapped
- Kecepatan bit SD/HD
- Performa tinggi: ~68Mbit/detik per streaming+thread pada ARM7 800Mhz
- UX bergaya ruang obrolan yang ramah (misalnya justin.tv)
Fitur
- Latensi sangat rendah, streaming 1-banyak
- Dukungan aliran HD (melalui batasan media).
- ruang obrolan teks
- sangat skalabel (kode c/c++ asli)
- terenkripsi ujung ke ujung
- dukungan chrome/firefox/opera/safari (iOS).
- kompilasi mudah (cukup git checkout --recursive dan "buat semua")
- pilih perangkat media
- kode menyertakan submodul yang mereferensikan server HTTPS mandiri + sertifikat contoh
- Bekerja langsung dengan OBS melalui WHIP
Demo:
?lobi obrolan di raspi4; ☝Url WHIP (untuk OBS)
foto:
Peringatan:
karena browser tidak mengizinkan webRTC dinegosiasikan tanpa terenkripsi (https), Anda harus menjalankan antarmuka SSL di depan server http bawaan (lihat config.txt untuk port itu) ada banyak bawaan yang lebih baik tetapi saya menggunakan alat yang saya tulis sebagai proxy [https://github.com/justinb01981/SSLTools] (mungkin cukup gunakan sertifikat (gratis) yang ditandatangani sendiri yang dihasilkan oleh openssl(2) untuk saat ini dan impor ke penyimpanan kepercayaan sertifikat OS/browser peserta konferensi)
Bangunan:
bangunan memerlukan 'go' untuk mengkompilasi membosankanssl (jadi instal paket-paket itu) dari direktori dasar, jalankan saja 'make all'.
Dll:
- 15/8 - TIDAK diperlukan pengaturan host (selain membuat port dapat diakses) - ini dimungkinkan dengan kode stun_client.c yang baru - tetapi dalam jaringan airgapped config.txt adalah cara yang tepat.
- 14/9 - Dukungan streaming langsung OBS (tanpa browser) akan hadir - lihat https://webrtchacks.com/webrtc-cracks-the-whip-on-obs/
- membuat URL berbagi:
<your_https_prefix>/content/index_broadcast.html?joinroom=<roomname>&camera=0
--- misalnya https://tinyurl.com/jbhatestypingthis
(drops a user in "lobby" with camera disabled)