aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2019-03-17 17:48:53 +0100
committerJonas Smedegaard <dr@jones.dk>2019-03-17 21:54:36 +0100
commit39de0c57566ee9fec981bfc7fdf4f388e32aca8d (patch)
treee88a05de548797f5b2491e3c36cafe341c9d35f2
Initial draft.
-rw-r--r--README.md168
-rw-r--r--TODO48
2 files changed, 216 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..81cf235
--- /dev/null
+++ b/README.md
@@ -0,0 +1,168 @@
+Multi-party: mesh, routing, or mixing.
+
+## Features
+
+ * 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](http://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](http://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
+hosted at <https://talk.space/>
+
+[tawk.space](https://github.com/invisible-college/tawk.space)
+using Janus
+written in CoffeeScript
+hosted at <https://talk.space/>
+
+[SIP2SIP](http://ag-projects.com/sip2sip/)
+using SylkServer and Janus
+hosted at <http://sip2sip.info/>
+and <https://webrtc.sipthor.net/>
+
+[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
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..8114326
--- /dev/null
+++ b/TODO
@@ -0,0 +1,48 @@
+ * Document setup of coturn
+ + Enable options needed for WebRTC
+ <https://github.com/coturn/coturn/wiki/turnserver#webrtc-usage>
+ * Support adaptive streaming
+ + Simulcast
+ - HLS for MPEG4
+ - DASH for WebM
+ + Scalable Video Codec (spatial/temporal/quality)
+ + DASH for WebM (VP9 only?)
+ <https://webrtchacks.com/sfu-simulcast/>
+ <http://www.rtcbits.com/2017/04/howto-implement-temporal-scalability.html>
+ * Support MSE-aided sub-second streaming
+ <https://stackoverflow.com/questions/5858936/html5-live-streaming/39750043#39750043>
+ + Support client-side graceful fallback to HLS/DASH (or maybe RTMP)
+ <https://www.quora.com/Which-protocol-is-best-for-a-video-live-streaming-from-a-server-to-an-Android-RTSP-RTMP-HTTP-or-something-else>
+ * Support variety of streaming setups
+ + stream live (e.g. IP cam) RTSP feeds to web clients
+ <https://flashphoner.com/rtsp-demo-player>
+ + stream WebRTC Screen Sharing session to webRTC clients
+ <https://flashphoner.com/screen-sharing-from-a-web-browser>
+ + host WebRTC 1-on-1 videochat session
+ <https://flashphoner.com/webrtc-video-chat-in-a-browser>
+ + grab webcam with WebRTC and stream to web clients
+ <https://flashphoner.com/browser-online-broadcasting-from-a-web-cam>
+ + accept RTMP Live Encoder streams and forward as RTMP feed
+ <https://flashphoner.com/broadcasting-of-a-streaming-video-from-a-professional-video-capturing-device-live-encoder-via-the-rtmp-protocol>
+ + proxy WebRTC to HLS broadcasting feed
+ <https://flashphoner.com/live-broadcasting-of-a-webrtc-stream-to-hls/>
+ + grab webcam with WebRTC and forward streams as RTMP broadcasting feed
+ <https://flashphoner.com/webrtc-as-rtmp-re-publishing/>
+ * Support WebRTC multi-party videochat session
+ <https://flashphoner.com/webrtc-video-conferencing/>
+ + Support SFU interactive limiting of concurrent streams
+ <https://support.livestorm.co/article/21-invite-someone-on-stage-during-the-webinar>
+ + Support SFU automated limiting of concurrent streams
+ by routing only most noisy audio and corresponding video
+ + Support MCU/SFU hybrid limiting of concurrent streams
+ by down-mixing audio and route only video tied to most noisy audio
+ * Support bridging with SIP
+ + accept SIP calls and forward streams as RTMP feed
+ <https://flashphoner.com/broadcasting-of-a-sip-call-to-rtmp-cdn>
+ + accept SIP calls and stream to web clients
+ <https://flashphoner.com/browser-based-web-telephone-with-the-sip-support>
+ + initiate SIP calls from web clients
+ <https://flashphoner.com/online-call-from-a-website-to-mobile-phones-and-sip-click-to-call-function>
+ * Offer test tools
+ + WebRTC Troubleshooter
+ <https://caniuse.spreed.me/>