مؤتمر فيديو webRTC في علبة (C monolith)
tiny-webrtc-gw: خادم مؤتمرات webRTC "متراص" مكتوب بلغة C/C++
مرحبًا بك في الملف التمهيدي tiny-webrtc-gw!
الأهداف
- تيارات لا نهائية ⌚ لمدة (الأمان؟ ودية)
- غرف خاصة
- 1-انقر على الروابط الانضمام
- VP8، VP9، H.264
- تعدد إرسال الدفق سريع جدًا عبر C خفيف الوزن
- لا توجد سحابة أو STUN/TURN خارجي يتضمن ذلك: raspberry-pi + شبكة LAN الهوائية
- معدل بت SD/HD
- أداء عالي: ~ 68 ميجابت/ثانية لكل تيار + خيط على 800 ميجا هرتز ARM7
- تجربة مستخدم ودية على طراز غرف الدردشة (مثل justin.tv)
سمات
- زمن الوصول منخفض جدًا 1- البث المباشر
- دعم البث عالي الدقة (عبر قيود الوسائط).
- غرفة الدردشة النصية
- قابلة للتطوير بدرجة كبيرة (كود c/c++ الأصلي)
- مشفرة من طرف إلى طرف
- دعم كروم/فايرفوكس/أوبرا/سفاري (iOS).
- تجميع سهل (فقط git checkout --recursive و"make all")
- حدد أجهزة الوسائط
- يتضمن الكود وحدة فرعية تشير إلى خادم HTTPS المستقل + شهادة المثال
- يعمل مباشرة مع OBS عبر WHIP
العرض التوضيحي:
?ردهة الدردشة على raspi4; ☝WHIP url (لـ OBS)
صور:
التحذيرات:
نظرًا لأن المتصفحات لن تسمح بالتفاوض على webRTC بشكل غير مشفر (https)، فستحتاج إلى تشغيل واجهة SSL الأمامية أمام خادم http المدمج (راجع config.txt لهذا المنفذ) توجد الكثير من العناصر المضمنة الأفضل ولكني أستخدمها أداة كتبتها كوكيل [https://github.com/justinb01981/SSLTools] (ربما فقط استخدم شهادة موقعة ذاتيًا (مجانية) تم إنشاؤها بواسطة openssl(2) في الوقت الحالي وقم باستيراده إلى المتجر الموثوق به لشهادة نظام التشغيل/المتصفح الخاص بالمؤتمر)
مبنى:
يتطلب البناء "go" لتجميع مملة (لذا قم بتثبيت هذه الحزم) من الدليل الأساسي فقط قم بتشغيل "make all".
إلخ:
- 8/15 - لا يلزم إعداد المضيف (بخلاف إتاحة الوصول إلى المنافذ) - هذا ممكن باستخدام كود stun_client.c الجديد - ولكن في شبكات airgapped، يعد config.txt هو الحل الأمثل.
- 14/9 - دعم البث المباشر لـ 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/jbhatestypingthis
(drops a user in "lobby" with camera disabled)