From 0cef4b1c7886851397cfe24329b3b65d6e350534 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Tue, 24 Mar 2020 19:39:40 +0100 Subject: categorize options as good, bad, or ugly; move sections Features and Platforms to document DEVELOPMENT.md --- DEVELOP.md | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 DEVELOP.md (limited to 'DEVELOP.md') 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 + + + 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 + +[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 + +[SIP2SIP](https://ag-projects.com/sip2sip/) +using SylkServer and Janus +hosted at +and + +[Roll Call](https://github.com/mikeal/roll-call) +audio-only +hosted at + +[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 + +[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 + +[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 -- cgit v1.2.3