BTW, until we have proper sender side BWE done, you can use an undocumented parameter in router.createWebRtcTransport():
* @param {Number} [initialAvailableOutgoingBitrate=600000] - Initial available
* outgoing bitrate (in bps) when the endpoint supports REMB or Transport-CC.
* @param {Number} [minimumAvailableOutgoingBitrate=300000] - Minimum available
* outgoing bitrate (in bps).
If you set minimumAvailableOutgoingBitrate: 2000000, the availableBitrate will never go below that value (even if the received REMB feedbacks say the opposite). Such an option is not documented because it’s a temporal hack until we do proper BWE.
Thanks. We don’t queue packets in mediasoup (I mean, packets are sent immediately to consumers, without “pacing” them), so hopefully that issue (even if it still exists) should not affect us.
Since mediasoup acts simply as a packet router, you can’t change the encoding bitrate in a continuous way as the browser does. So I think is a bit difficult to use google-cc or other similar control algorithms.
You should quantize the control action. Instead, you could choose the FEC to apply to outgoing flows.
I know about SFUs (proprietary SFUs) that use libwebrtc just for sender side BWE and it works fine (in fact it already works fine for us). The BWE lets mediasoup know the estimated available bandwidth of a receiving transport so it can accommodate to it by forcing the Consumers to up/down switch the selected spatial and temporal layers. Of course mediasoup cannot change the encoding bitrate of a stream, but it can filter spatial and temporal layers dynamically (as it already does) to fulfill the available outgoing bitrate.
BTW are you planning to make such a code public? We don’t know much about GStreamer and it would be extremely cool to have an example code about generating video simulcast with it.
@vpalmisano,
I am with @ibc in Naples at the Janus conference and would love to see your sample gstreamer pipeline script with the multiple ssrc that you are using as the PlainRtpTrandport producer so I can use it as a starting point to get my feet wet with mediasoup
Thanks in advance.
Regards,
Anand Setlur
We are still having some issues with the probation. It seems that probation packets or their received feedbacks are not being properly processed and they make the sender-side BWE to decrease sometimes. Investigating it.
NOTE: You need to update your mediasoup-client v3 as well (just use the latest NPM version or the “v3” branch), otherwise it won’t work with transport-cc.