参会者通过呼入同一个会议室进行音视频通话,对于有密码的会议室需同时输入会议室密码进入会议。
可以通过事件回调获取当前呼叫状态,根据呼叫状态进行相应的处理。
呼叫成功后,参会者进入会议,此时需要采集音视频流进行推送。音视频通话过程中参会人员信息状态变更以事件回调方式进行通知,收到回调消息后可根据业务场景进行后续处理。
您可以通过 XYRTCClient.makeCall 方法进行呼叫,方法参数类型是:IMakeCall,呼叫完成后,会返回一个类型Promise.resolve状态,可继续执行后续的代码逻辑;如果遇到异常,可通过try catch方式捕获登录异常信息;
执行呼叫过程中,可监听 disconnected 事件获取退会消息提醒,监听 call-status 获取会议连接状态;
触发 disconnected 事件消息,则可能是会控结束会议、远端主持人结束全体会议、云服务异常等造成的不可逆的失败情况,则需要业务主动离开会议,尝试重新加入会议操作,适当时可以向用户进行提醒;
呼叫状态 call-status 事件会推送会议的连接状态,当收到此消息时,通过状态码可以获取会议连接状态,其中可能的状态码如下:
当 XYRTCClient.makeCall 呼叫函数执行完成后,可调用 XYRTCClient.createVideoAudioTrack 方法执行创建音视频轨道(VideoAudioTrack),通过此轨道实例,可以管控后续的音视频流媒体;
上一步获取到 VideoAudioTrack 模块后,开始同步执行采集音视频流的方法,可以调用 VideoAudioTrack.capture 方法进行采集操作;
此函数是Promise函数,请同步等待执行完成后再继续后续的步骤;执行过程中,会进行麦克风和摄像头授权操作,请同意浏览器授权行为,否则会导致采集视频和音频流失败;
采集完成后,执行 XYRTCCilent.publish 方法推送音视频轨道,执行后自动开始推送音视频流到远端;此时,远端参会者即可查看到本地的画面;
try {
await XYClient.makeCall({
confNumber: 'xxx',
password: 'xxx',
displayName: 'xxx',
muteVideo,
muteAudio,
});
const peopleTrack = await XYClient.createVideoAudioTrack();
await peopleTrack.capture();
XYClient.publish(peopleTrack);
} catch (error) {
console.log('呼叫异常:', error);
}
// 会议呼叫状态事件
XYClient.on('call-status', (e: IReturnResult) => {
// 呼叫状态处理
console.log('call state: ', e);
});
// 强制挂断会议消息
XYClient.on('disconnected', (e: IReturnResult) => {
console.log('disconnected: ', e);
});
回调参数:IReturnResult