Kurento / bugtracker

[ARCHIVED] Contents migrated to monorepo: https://github.com/Kurento/kurento
46 stars 10 forks source link

setRembOnConnect not working #610

Open thekwonster opened 3 years ago

thekwonster commented 3 years ago

Prerequisites

These are MANDATORY, otherwise the issue will be automatically closed.

Issue description

The video encoding bitrate always start from around 100kbps even though setting the initial REMB value to some bigger value by calling setRembOnConnect API. (All the test server and client is set in the private local network. so there is no network bandwidth problem)

https://doc-kurento.readthedocs.io/en/latest/_static/client-javadoc/org/kurento/client/RembParams.html#setRembOnConnect-java.lang.Integer-

Context

What i am trying to accomplish is a one to many SFU video call with a start encoding/transmit bitrate larger than default value. I want to send FHD resolution. So if it begins with 100kbps, it takes more than a minute till it gets to bitrate that is enough for the FHD.

Also I don't want to change a min bitrate. I know that changing the min bitrate by adding x-google-min-bitrate in the SDP would change the default value i want. However it could lead to other problem.

Adding a x-google-start-bitrate in the answer SDP does not work. However in the P2P, adding x-google-start-bitrate in the answer SDP works fine.

How to reproduce?

With the"kurento-tutorial-java-master\kurento-one2many-call" example, I changed CallHandler.presenter like below.

private synchronized void presenter(final WebSocketSession session, JsonObject jsonMessage) throws IOException { if (presenterUserSession == null) { presenterUserSession = new UserSession(session); pipeline = kurento.createMediaPipeline(); presenterUserSession.setWebRtcEndpoint(new WebRtcEndpoint.Builder(pipeline).build()); WebRtcEndpoint presenterWebRtc = presenterUserSession.getWebRtcEndpoint();

// the below is what I added to change default value to 4mbps RembParams rembParams = presenterWebRtc.getRembParams(); rembParams.setRembOnConnect(new Integer(4000*1000)); presenterWebRtc.setRembParams(rembParams);

Expected & current behavior

1) Expected googActualEncBitrate, googTransmitBitrate value begins with the value i set above (4mbps)

2) what happens instead no difference. (same as without calling setRembOnConnect)

(Optional) Possible solution

Info about your environment

About Kurento Media Server

About your Application Server

About end-user clients

github-actions[bot] commented 3 years ago

Hello @thekwonster! :wave: we're sorry you found a bug... so first of all, thank you very much for reporting it.

To know about progress, check in Triage. All issues are considered Backlog Candidates until work priorities align and the issue is selected for development. It will then become part of our official Backlog.

j1elo commented 3 years ago

Please check the Debug Logging page in order to enable the REMB debug category.

In essence, you can set the environment var like this:

export GST_DEBUG="2,KurentoBaseRtpEndpointImpl:5,basertpendpoint:5,kmsremb:5"

Then attach the logs or upload them somewhere and share the link here; we're especially interested in these messages:

thekwonster commented 3 years ago

2021-09-06T031613.00000.pid1.log

The log file is attached. The below messages were found in the log file.
The test result was same. Which means the encoding bitrate starts from around 0.1~0.3 Mbps not 4Mbps.

2021-09-06T03:16:13,215657 1 0x00007f080b22f700 debug KurentoBaseRtpEndpointImpl BaseRtpEndpointImpl.cpp:370 setRembParams() New 'remb-on-connect' value 4000000 2021-09-06T03:16:13,215891 1 0x00007f080b22f700 debug basertpendpoint kmsbasertpendpoint.c:2429 kms_base_rtp_endpoint_set_property() Set to aux structure