Search code examples
javascriptaudiostreamscreensharingvideo-conferencing

apirtc: Problem with screen share with audio system


I develop a webconference and I found a problem with screen share. When i share a screen with audio system, in the listener streamListChanged don't arrive the parameter "isScreensharing" to true. Another question is if this configuration option is optimal

{
    qos: {
        videoStartQuality: 'excellent',
        videoMinQuality: 'excellent',
        videoMinBitrate: 1500,
        videoStartBitrate: 2500
    },
    simulcast: {
        encodings: {
            high: {
                maxBitrate: 2500 // kbps
            },
            medium: {
                maxBitrate: 1500, // kbps
                scaleResolutionDownBy: 2
            },
            low: {
                maxBitrate: 800, // kbps
                scaleResolutionDownBy: 4
            }
        }
    }
}

Sorry for my bad english.


Solution

  • Concerning the first point, you're right, there is a bug concerning the screensharing with audio. The parameter "isScreensharing" is set to false in the streamListChanged event. I will open a ticket to dev team to fix this issue.

    There is a workaround that can be used to identify you screensharing stream using a publish option.

    You can pass a "context" object to your screensharing publish like that :

    var options = {
            context : { screensharingwithaudio : true}
                            
    }
    connectedConversation.publish(screensharingStream,options);
    

    This context in included in the streamListChanged event so you can easily identify the type of the available stream.

    For the second point, the qos option are not used if you're using simulcast, therefore and for your information quality option and bitrate option are exclusive. you must used one of them not the 2.

    Right now our production platform limit the bitrate for a publish stream to 2500 Kbps so in your simulcast configuration the highest stream will be disable by ApiRTC.

    You can try this configuration :

    simulcast: {
            encodings: {
                high: {
                    maxBitrate: 1700 // kbps
                },
                medium: {
                    maxBitrate: 600, // kbps
                    scaleResolutionDownBy: 2
                },
                low: {
                    maxBitrate: 200, // kbps
                    scaleResolutionDownBy: 4
                }
            }
        }