Table of Contents

Handle Active Talkers

During a multi-party video conference, more server and Client-End-Point resources are consumed. Therefore, EnableX sends only 6 streams of users actively talking (generating sound) in the Room to each end-point. Additionally, it sends 2 streams, viz. Screen Share (Stream# 11) and Canvas Stream (Stream# 21).

On getting connected to Room, your Client End Point will also receive streamAdded Callback for all these 6+2 streams available in the Room. You need to subscribe to each of these streams.

Subsequently, whenever there is change in Talkers List, EnableX sends out an updated Active Talkers List to each End Point. The list of Active-Talkers is available in JSON format and sent through activeTalkerList callback. The list of Active Talkers comprises a list of talkers in ascending order i.e. latest talker will be listed first. Therefore, you can expect to receive the event frequently in a noisy room.

Callback: activeTalkerList – Comes with JSON given below:

Active Talkers List JSON

{    "active" : true,
      "activeList": [
           {   "clientId" : "String", 
               "mediatype" : "audiovideo", // Enum: audiovideo, audioonly
               "name" : "String",
               "reason" : "user",
               "streamId" : Number,
               "videoaspectratio" : "16:9", 
               "videomuted" : Boolean
           }
       ]
   }

This Active Talkers JSON is used for managing the UI and to play audio and video streams from remote users. To play a specific stream, you need the Remote Stream object related to the streamId of a Talker. Please remember before you can play any stream from the Active Talkers list, you should have subscribed to all “dummy” streams received through Callback streamAdded.

activeTalkerList: event => {
	var tempArray = [];
        tempArray = event;
   	if (tempArray.length > 0) {
		this.setState({activeTalkerStreams: tempArray});
        }
	return (
	      <View>
		{this.state.activeTalkerStreams.map(function(element, index) {
		    return (
		      <EnxPlayerView key={String(element.streamId)}
			streamId={String(element.streamId)}
			style={{ width: width, height: height }}/>
		    );
		})}
	      </View>
	);
}

Note: The local Stream will not  be included in the Active Talkers JSON list sent to an End-Point even if the End Point is talking. Hence the Active Talker JSON list sent to different End Points varies. In case you need to play own stream, please use the local stream.

Get maximum permissible Talker Count

To know maximum permissible Active Talkers that you may receive and you can set, you may use Enx.getMaxTalkers() method.

Method: Enx.getMaxTalkers() – without parameter

Callback: getMaxTalkersResponse

Enx.getMaxTalkers();

getMaxTalkersResponse : event{
     // event: { "result": 0, "numTalkers": 6 } 
}

Get Talker Count

It may be necessary to know how many talkers are expected to receive with  activeTalkerList Callback, i.e. to know either the preset value of talkers or any custom value in effect which is either by the Application Developer or opted by End-Point User.

Method: Enx.getTalkerCount() – without parameter

Callback: getTalkerCountResponse

Enx.getTalkerCount();

getTalkerCountResponse : event{
     // event: { "result": 0, "numTalkers": 6 } 
}

Set Talker Count

EnableX sets a maximum of 6 active talkers in the active talker-list with  activeTalkerList Callback. However, you may opt to receive less talkers at a Client End Point if you so require. This may either be a predefined value, or this value may be set at run-time in a connected session. If required you can create UI for the connected user to opt for number of active-talkers the user wants to receive.

Method: Enx.setTalkerCount(numTalkers)

ParametersnumTalkers – No. of talkers you want to receive. Range 0-6

  • If you set numTalkers to any value from 1 to 6 – you will receive those many talkers in the list.
  • If you set numTalkers to 0 (zero), then list doesn’t become empty. Rather, you would start receiving 3 audio streams only. Video Streams will not be carried.

Callback: setTalkerCountResponse

Enx.setTalkerCount(4);

setTalkerCountResponse : event{
     // event: { "result": 0, "numTalkers": 4 } 
}