ionorg / ion

Real-Distributed RTC System by pure Go and Flutter
MIT License
3.83k stars 519 forks source link

Publisher multi-stream #100

Closed OrlandoCo closed 4 years ago

OrlandoCo commented 4 years ago

Summary

In a one to many/many to many scenario, if a single user of the conference can't handle the bitrate, it would affect all the users in the conference lowering the quality of the video.

If the puplisher uploads at least 2 video quality at the same time [HD,QVGA...] , the SFU router can switch between these qualities, instead lowering the bitrate of publisher.

Additional context

Reference: opentok

cloudwebrtc commented 4 years ago

@OrlandoCo @Sean-Der We can support simulcast/SVC later so that a single publish stream can contain multiple bit rates and resolutions. When subscribing, you can subscribe to the corresponding stream by using parameters like T2, S2 | T0, S1. related issue https://github.com/pion/webrtc/issues/1016

akilude commented 4 years ago

WIth simulcast/SVC, It would also be nice to have voice detection in the server so that we know when we are on "stage" when there are lots of users in the call so that we can send only the required substreams (s0-s2) , Please see https://webrtchacks.com/suspending-simulcast-streams/

cloudwebrtc commented 4 years ago

@akilude Super good idea.

tarrencev commented 4 years ago

Looks like this will hopefully be supported soon! https://github.com/pion/webrtc/pull/1200