aboutsummaryrefslogtreecommitdiff
path: root/DEVELOP.md
blob: a20f413a71edcd4c08c5d859e1bf7d59d4d5b5f3 (plain)

#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 efficiency - recipient
    • Support suspending select streams at receiving end i.e. pause reception of stream (not just omit further processing it)
  • stream efficiency - forwarding
    • Support simulcast i.e. encode multiple streams that an SFU can "hop" between
    • Support spatial/temporal/quality SVC i.e. encode a stream that an SFU can efficiently "slice" without recoding
  • stream efficiency - source
  • stream efficiency - conference admin or shared room setting
    • Skip video streams beyond a threshold of participants
    • Skip video streams tied to quiet audio streams
    • Skip streams of explicitly tagged non-speaker participants
    • Mix audio streams (not stream each individually)
  • security
    • Support PERC
    • Support ZRTP i.e. end-to-end encryption (not only client-to-server)
  • meeting management
    • Personalized Meeting rooms
    • Scheduled/Meet-me Meetings
    • Instant/Direct Meetings
    • Presence Support
    • Recording
    • Text chat
    • Screen sharing
    • feedback on own audio level
    • feedback on encoding and streaming qualities
  • 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

SFU

Janus Gateway WebRTC SFU/bridge/broker written in C

Mediasoup WebRTC SFU written in C

Medooze SFU WebRTC SFU written in Node.js

Spreed WebRTC WebRTC SFU written in NodeJS and Go

Jitsi Videobridge XMPP SFU written in Java seems to require "plan B" SDP: https://github.com/jitsi/jitsi-meet/issues/4758

MCU

Kurento WebRTC MCU written in C++

Licode WebRTC MCU written in C++

Medooze WebRTC Media Server WebRTC/SIP MCU written in C++

Red5 server WebRTC SFU written in Java

Ant Media Server WebRTC SFU written in Java (fork of Red5 server)

Bridge/management

SylkServer SIP/XMPP Application Server using Janus written in Python

Jigasi WebRTC bridge to Jitsi Videobridge written in Java

Matrix using Jigasi and Jitsi Videobridge

BigBlueButton using Kurento written in Java

OpenMeetings written in Java

Wire proprietary-protocol Free Software stack written in Haskell, Rust, C

Web frontend

multiparty-meeting using Mediasoup (and optionally drachtio and Kurento) written in JavaScript hosted at https://letsmeet.no/

Jangouts using Janus written in CoffeeScript

tawk.space using Janus written in CoffeeScript hosted at https://tawk.space/

SIP2SIP using SylkServer and Janus hosted at https://sip2sip.info/ and https://webrtc.sipthor.net/

Roll Call audio-only hosted at https://roll.call

Spreed.ME using Spreed WebRTC

Nextcloud Talk using Spreed WebRTC

Jitsi Meet using Jigasi and Jitsi Videobridge hosted at https://meet.jit.si/

mConf using Kurento written in Java and Ruby

Veeting cloud SFU service using Janus hosted at https://rooms.veeting.com/ (free trial at https://rooms.veeting.com/home-office)

Talky cloud SFU service hosted at https://talky.io/

Me cloud SFU service

GoToMeeting cloud SFU service

Zoom Meetings 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

Wowza Streaming Cloud cloud streaming 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