การประชุมผ่านวิดีโอ webRTC ในกล่อง (C monolith)
Tiny-webrtc-gw: เซิร์ฟเวอร์การประชุมผ่าน webRTC "monolith" ที่เขียนด้วยภาษา C/C++
ยินดีต้อนรับสู่ Tiny-webrtc-gw readme!
เป้าหมาย
- สตรีมระยะเวลาไม่สิ้นสุด ⌚ (ความปลอดภัย ? เป็นมิตร)
- ห้องส่วนตัว
- 1 คลิกเข้าร่วมลิงก์
- VP8,VP9,H.264
- สตรีมมัลติเพล็กซ์ที่รวดเร็วมากผ่าน C น้ำหนักเบา
- ไม่มีคลาวด์หรือ STUN/TURN ภายนอกที่เกี่ยวข้องกับ: raspberry-pi + airgapped LAN
- บิตเรต SD/HD
- ประสิทธิภาพสูง: ~68Mbit/วินาทีต่อสตรีม+เธรดบน 800Mhz ARM7
- UX สไตล์ห้องสนทนาที่เป็นมิตร (เช่น justin.tv)
คุณสมบัติ
- เวลาแฝงที่ต่ำมากการสตรีม 1-หลายรายการ
- รองรับการสตรีม HD (ผ่านข้อ จำกัด ของสื่อ)
- ห้องสนทนาข้อความ
- ปรับขนาดได้สูง (โค้ดเนทิฟ c/c++)
- เข้ารหัสจากต้นทางถึงปลายทาง
- รองรับ chrome/firefox/opera/safari (iOS)
- การรวบรวมง่าย ๆ (เพียง git checkout --recursive และ "make all")
- เลือกอุปกรณ์สื่อ
- รหัสประกอบด้วยโมดูลย่อยที่อ้างอิงถึงเซิร์ฟเวอร์ HTTPS แบบสแตนด์อโลน + ใบรับรองตัวอย่าง
- ทำงานโดยตรงกับ OBS ผ่าน WHIP
การสาธิต:
?ล็อบบี้แชทบน raspi4; urlWHIP url (สำหรับ OBS)
ภาพ:
คำเตือน:
เนื่องจากเบราว์เซอร์ไม่อนุญาตให้มีการเจรจา webRTC โดยไม่เข้ารหัส (https) คุณจะต้องเรียกใช้ส่วนหน้า SSL ที่ด้านหน้าเซิร์ฟเวอร์ http ในตัว (ดู config.txt สำหรับพอร์ตนั้น) มีบิวด์อินที่ดีกว่ามากมายอยู่ แต่ฉันใช้ เครื่องมือที่ฉันเขียนเป็นพร็อกซี [https://github.com/justinb01981/SSLTools] (อาจใช้ใบรับรองที่ลงนามด้วยตนเอง (ฟรี) ที่สร้างโดย openssl (2) สำหรับ ตอนนี้และนำเข้าไปยังที่จัดเก็บใบรับรองเบราว์เซอร์/ระบบปฏิบัติการของ conferencee)
อาคาร:
การสร้างต้องใช้ 'go' เพื่อคอมไพล์ Boringssl (ดังนั้นติดตั้งแพ็คเกจเหล่านั้น) จากไดเร็กทอรีฐานเพียงแค่เรียกใช้ 'make all'
ฯลฯ:
- 15 ก.ย. - ไม่จำเป็นต้องตั้งค่าโฮสต์ (นอกเหนือจากการทำให้พอร์ตเข้าถึงได้) - สิ่งนี้เป็นไปได้ด้วยรหัส stun_client.c ใหม่ - แต่ในเครือข่าย airgapped config.txt เป็นวิธีที่จะไป
- 9/14 - รองรับการสตรีม OBS-direct (ไม่มีเบราว์เซอร์) - ดู https://webrtchacks.com/webrtc-cracks-the-whip-on-obs/
- การสร้าง URL แชร์:
<your_https_prefix>/content/index_broadcast.html?joinroom=<roomname>&camera=0
--- เช่น https://tinyurl.com/jbhatestypingthis
(drops a user in "lobby" with camera disabled)