Slides presented in WebRTC un-conference discussing ideas to optimize use experience for large rooms, specially around saving bandwidth and cpu resources for audio and video processing.
2. Large rooms motivation
Rooms are getting even larger because videoconferencing is getting more popular and ubiquitous
(remote work, education) and this trend has been accelerated because of pandemic
4. User Interface
● Auto mute when joining a big room
● Different layouts and pagination
● Speaking and dominant speaker detection
● Non verbal communication features (raise hands, emojis, chat, q&a, polls…)
● Spacial audio
5. Architecture
Typical architecture for videoconferencing assigns a single SFU to each room.
For large rooms you usually need to split it in multiple SFUs and connect them
(that also provide advantages in terms of latency and retransmissions)
Images from bloggeek.me
6. Video
● Scalable video (Simulcast or SVC) to adapt video to the
conditions of each receiver
● Preferences and priorities (prioritize screensharing,
dominant speaker… don’t send more pixels than needed...)
● Codecs choice (to save bandwidth and cpu cost). VP9 can
be a good choice
● Pagination (how to make it efficient and transition fast)
● Limit amount of KeyFrame requests
● Mixing video?
7. Audio
WebRTC only renders the 3 loudest speakers.
● DTX (send 5 packets per second when not speaking)
● Optimized mute (send 0 packets when muted)
● Selective Forwarding (forward only packets for the 3 loudest speakers)
● Rewriting ssrcs (forward only 3 loudest and use only 3 decoders)
● Mixing (mix and receive only one stream)
Facebook DTX, Selective
Google Meet Rewriting
Houseparty DTX
Jitsi Selective
Discord DTX