I have the same question as the OP. Maybe rewording it a bit might elicit a response this time?
Wowza’s docs shows that the Wowza Streaming Engine supports having each participant in a WebRTC session send one stream to it, and WSE will send that stream to every other participant. This is in contrast to the pure P2P approach where every participant connects to every other participant, and sends n-1 streams.
My question is, how does WSE do it? WebRTC is fundamentally a 1:1 technology – the sender listens to feedback from the receiver and will finely tune the streams bitrate to match available bandwidth. It does not – normally – use a set of predetermined bitrates.
So how does WSE turn a 1:1 tech into something where a single stream can be sent to multiple recipients?
One approach is to act as a Multipoint Conferencing Unit (MCU). If WSE is taking this approach, then when a stream is sent to WSE, it will be transrated n-1 times and sent along to every other participant. Each participant gets a stream who’s overall bandwidth is tailored for their connection. This is great, but requires a fairly powerful server and can’t scale very high.
Another approach is to act as a Selective Forwarding Unit (SFU). In this approach, WSE would receive a stream and send it along to the other n-1 participants unchanged. But how to ensure that the stream fits within the participant’s available bandwidth? The n-1 receivers will all send feedback about their receipt of the stream, and WSE will coalesce that feedback into one “worst case” feedback summary that’s fed back to the stream’s sender. Under this approach, WSE would do no transrate work, which means it scales well computationally, but every recipient receives a stream that’s tailored for the recipient with the worst bandwidth, so video quality can suffer.
There are other possibilities. WSE could act like a MCU, but instead of transrating to match each recipient’s bandwidth, it could transrate to just a handful of pre-determined bitrates and send the “best-fit” version to the recipient (sort of like how HLS or DASH works).
So… with all that laid out…
What DOES Wowza Streaming Engine actually do? I didn’t see any info in the docs about explaining what approach is being used, and it’s a really important question when it comes to understanding how WSE will scale, and how video quality will react if user with a lousy connection tries to participate,