参会者通过呼入同一个会议室进行音视频通话,对于有密码的会议室需同时输入会议室密码进入会议。可以通过事件回调获取当前呼叫状态,根据呼叫状态进行相应的处理。
呼叫成功后,参会者进入会议,此时需要采集音视频流进行推送。音视频通话过程中参会人员信息状态变更以事件回调方式进行通知,收到回调消息后可根据业务场景进行后续处理。
按照步骤执行完整的呼叫会议流程;
调用 XYRTCClient.makeCall 方法进行会议呼叫。此方法接受参数类型
try {
await XYClient.makeCall({
// 会议室号
confNumber: 'xxx',
// 会议室密码
password: 'xxx',
// 显示名称
displayName: 'xxx',
// 是否静音视频
muteVideo: false,
// 是否静音音频
muteAudio: false,
});
} catch (error) {
console.log('呼叫异常:', error);
}
执行呼叫过程中,可监听 disconnected 事件获取退会消息提醒,监听 call-status 获取会议连接状态;
监听 disconnected 强制退会事件消息,则可能是会控结束会议、远端主持人结束全体会议、云服务异常等造成的不可逆的失败情况,则需要业务主动离开会议,尝试重新加入会议操作,适当时可以向用户进行提醒;
监听 call-status 呼叫状态事件消息,会推送会议的连接状态,当收到此消息时,通过状态码可以获取会议连接状态,其中可能的状态码如下:
XYClient.on('call-status', (e: IReturnResult) => {
console.log('呼叫状态: ', e);
});
当 XYRTCClient.makeCall 呼叫函数执行完成后,可调用 XYRTCClient.createVideoAudioTrack 方法执行创建音视频轨道(VideoAudioTrack),通过此轨道实例,可以管理后续的音视频流媒体;
const peopleTrack = await XYClient.createVideoAudioTrack();
上一步获取到 VideoAudioTrack 模块后,可以调用 VideoAudioTrack.capture 方法进行采集音视频流;
提示
如果 makeCall 时配置关闭麦克风和摄像头入会,则此处将不进行采集音视频流操作,仅创建接收远端音视频流通道,保证接收远端数据正常;
await peopleTrack.capture();
采集完成后,执行 XYRTCCilent.publish 方法推送音视频轨道,执行后自动开始推送音视频流到远端;此时,远端参会者即可查看到本地的画面;
XYClient.publish(peopleTrack);
// 呼叫会议函数
const makeCall = async() => {
try {
await XYClient.makeCall({
// 会议室号
confNumber: 'xxx',
// 会议室密码
password: 'xxx',
// 显示名称
displayName: 'xxx',
// 是否静音视频
muteVideo: false,
// 是否静音音频
muteAudio: false,
});
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);
});
// 测试UI
<div onClick={makeCall}>呼叫会议</div>
回调参数:IReturnResult