Table of Contents
Handle Active Talkers
During a multi-party video conference, more server and Client-End-Point resources are consumed. Therefore, the portal 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, The portal 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
The Portal 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)
Parameters: numTalkers
– 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 } }