aboutsummaryrefslogtreecommitdiff
path: root/DEVELOP.md
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2020-03-24 19:39:40 +0100
committerJonas Smedegaard <dr@jones.dk>2020-03-24 19:39:40 +0100
commit0cef4b1c7886851397cfe24329b3b65d6e350534 (patch)
treee22030fd6fbd30889ab481d7a2f01a71543f9fc7 /DEVELOP.md
parent45f64b8bb7d2de89a87ad0baf8913bf4710fc39d (diff)
categorize options as good, bad, or ugly; move sections Features and Platforms to document DEVELOPMENT.md
Diffstat (limited to 'DEVELOP.md')
-rw-r--r--DEVELOP.md180
1 files changed, 180 insertions, 0 deletions
diff --git a/DEVELOP.md b/DEVELOP.md
new file mode 100644
index 0000000..ff67ed1
--- /dev/null
+++ b/DEVELOP.md
@@ -0,0 +1,180 @@
+#Designing a realtime audio/video conferencing service
+
+## Features
+
+Functionality to consider when considering tool/platform.
+
+ * topology
+ + mesh (P2P)
+ all processing at end-points, participants limited by bandwidth
+ + routing (SFU)
+ light server processing, participants limited by bandwidth
+ + mixing (MCU)
+ heavy server processing
+ * stream source efficiency
+ + Support [simulcast](https://webrtcglossary.com/simulcast/)
+ i.e. encode multiple streams that an SFU can "hop" between
+ + Support spatial/temporal/quality [SVC](https://webrtcglossary.com/svc/)
+ i.e. encode a stream that an SFU can efficiently "slice" without recoding
+ + Support suspending simulcast streams
+ <https://webrtchacks.com/suspending-simulcast-streams/>
+ + Support [SCReAM](https://github.com/EricssonResearch/scream)
+ * security
+ + Support [PERC](https://webrtcglossary.com/perc/)
+ + Support [ZRTP](https://en.wikipedia.org/wiki/ZRTP)
+ * stream forwarding efficiency
+ * meeting management
+ + Personalized Meeting rooms
+ + Scheduled/Meet-me Meetings
+ + Instant/Direct Meetings
+ + Presence Support
+ + Recording
+ + Text chat
+ + Screen sharing
+ * conference stream efficiency
+ + Skip video streams beyond a threshold of participants
+ + Skip video streams tied to quiet audio streams
+ + Skip streams of explicitly tagged non-speaker participants
+ * conference management
+ + Conference Recording
+ + force-mute participants
+ + "Raise a hand" for muted participants
+ * meeting room
+ + Dual stream for dual screen
+ * Dial in from telephone
+ * Dial in from SIP audio-only
+ * Dial in from SIP with video
+ * Dial in from SIP with SIMPLE text chat
+
+## See also
+
+### Tools
+
+[Janus Gateway](https://janus.conf.meetecho.com/)
+WebRTC SFU/bridge/broker
+written in C
+
+[Mediasoup](https://mediasoup.org/)
+WebRTC SFU
+written in C
+
+[Kurento](https://www.kurento.org/)
+WebRTC MCU
+written in C++
+
+[drachtio](https://drachtio.org/)
+SIP "SFU"
+written in C++
+
+[Licode](https://lynckia.com/licode/)
+WebRTC MCU
+written in C++
+
+[Medooze WebRTC Media Server](https://github.com/medooze/media-server)
+WebRTC/SIP MCU
+written in C++
+
+[SylkServer](https://sylkserver.com/)
+SIP "SFU"
+written in Python
+
+[Spreed WebRTC](https://github.com/strukturag/spreed-webrtc)
+WebRTC SFU
+written in NodeJS and Go
+
+[Jitsi Videobridge](https://jitsi.org/jitsi-videobridge/)
+XMPP SFU
+written in Java
+
+[Jigasi](https://jitsi.org/jitsi-meet/)
+WebRTC bridge to Jitsi Videobridge
+written in Java
+
+### Platforms
+
+[multiparty-meeting](https://github.com/havfo/multiparty-meeting)
+using Mediasoup
+(and optionally drachtio and Kurento)
+written in JavaScript
+hosted at <https://letsmeet.no/>
+
+[Jangouts](https://github.com/jangouts/jangouts)
+using Janus
+written in CoffeeScript
+
+[tawk.space](https://github.com/invisible-college/tawk.space)
+using Janus
+written in CoffeeScript
+hosted at <https://tawk.space/>
+
+[SIP2SIP](https://ag-projects.com/sip2sip/)
+using SylkServer and Janus
+hosted at <https://sip2sip.info/>
+and <https://webrtc.sipthor.net/>
+
+[Roll Call](https://github.com/mikeal/roll-call)
+audio-only
+hosted at <https://roll.call>
+
+[Spreed.ME](https://www.spreed.me/)
+using Spreed WebRTC
+
+[Nextcloud Talk](https://nextcloud.com/talk/)
+using Spreed WebRTC
+
+[Jitsi Meet](https://jitsi.org/jitsi-meet/)
+using Jigasi and Jitsi Videobridge
+hosted at <https://meet.jit.si/>
+
+[Matrix](https://matrix.org/)
+using Jigasi and Jitsi Videobridge
+
+[BigBlueButton](https://bigbluebutton.org/)
+using Kurento
+written in Java
+
+[mConf](http://mconf.org/)
+using Kurento
+written in Java and Ruby
+
+[OpenMeeting](https://openmeetings.apache.org/)
+written in Java
+
+[Wire](https://wire.com/)
+proprietary-protocol [Free Software](https://github.com/wireapp/wire) stack
+written in Haskell, Rust, C
+
+[Talky](https://about.talky.io/)
+cloud SFU service
+hosted at <https://talky.io/>
+
+[Me](https://join.me/)
+cloud SFU service
+
+GoToMeeting
+cloud SFU service
+
+[Zoom Meetings](https://zoom.us/)
+cloud SFU service
+supporting "up to 50 participants at once"
+(but client bandwidth and resource demands and stability of such session is unknown)
+
+Hangouts Meet
+cloud SFU service
+
+Webex Meetings
+cloud SFU service
+
+Skype
+cloud SFU service
+suporting "up to 25 participants at once"
+(but client bandwidth and resource demands and stability of such session is unknown)
+
+MoxieMeet
+cloud SFU service
+requiring Google account
+supporting "up to 32 users all on video together"
+(but client bandwidth and resource demands and stability of such session is unknown)
+
+TeamViewer
+cloud SFU service