百家云 WebSDK 使用 Client 对象来管理一个本地用户在房间内的行为,在进入房间之前需要先创建一个 Client 对象。
调用 BRTC.createClient 即可创建 Client 对象。在创建 Client 对象时,需要指定使用的 appId 、编码格式、房间类型、是否采用 String 类型用户 ID
let client = this.client = BRTC.createClient({ appId: this.appId, comments: 'brtc-js-demo-web', //自定义注释, codec: this.videoCodec, //编码格式,"h264" useStringUserId: this.useStringUserId, audioLevelInterval: 200, //音量获取间隔,默认 1000 roomType: this.roomType, //房间类型,默认为normal silence: this.silence, enableSEI: this.enableSEI //是否开启SEI功能 })
codec 设置目前只支持 "h264"(H.264)视频编码格式。
直播场景(mode)是百家云为了对不同的实时音视频场景进行针对性算法优化而提供的一种设置选项。SDK 目前只支持一种频道场景:"rtc"(实时互动场景)。
通信场景
"rtc"(实时互动场景)适用于房间内所有用户需要相互交流且用户总数不太多的场景,如多人会议和在线聊天。
comments 自定义注释,建议为客户应用名称,或者其他对客户有意义的自定义字符串。长度小于 64 个字符,超过的会被截断
useStringUserId , 是否使用 string 作为 userId 类型 , 默认 false, userId 为 int32 类型
audioLevelInterval 音量获取间隔。 默认 1000,最大 10000,若需要更小间隔则设置此属性值。
roomType 房间类型
enableSEI 是否开启 sei 功能
创建 Client 对象后,调用 client.join 进入房间。
进房代表开始一个音视频通话会话,这时候 SDK 会监听远端用户进房退房情况,若有远端用户进房并且发布流,本地会收到 'stream-added' 事件。 进房后用户可以通过 publish() 发布本地流,本地流发布成功后远端用户就会收到相应 'stream-added' 事件通知从而完成一个双向的音视频通话连接。
该方法为异步方法,使用时需要配合 Promise 或 async/await
注意 join 方法的前三个参数 roomId,userId,sig 为必填项,如果为空,会报错,提示无效参数。
请确保房间内用户 ID 的唯一性。建议在业务层面避免用户使用相同的 ID 加入一个百家云。
Promise.all([this.client.join(roomId, userId, token)]).then( () => { //加入房间成功 if (this.videoOn || this.audioOn) { //本地流已经创建,直接 publish if (this.publishStream) { this.client.publish(this.publishStream) }else{ // 先创建,再 publish this.publishCameraStream() } } resolve() }, (error) => { //加入房间失败' } )
调用 client.leave 可以离开当前教室。该方法可以在任何时候调用,包括正在加入频道时或者正在重连时。
该方法为异步方法,使用时需要配合 Promise 或 async/await。
退房前请确保已经通过 unpublish() 取消发布本地流,若未取消发布本地流,SDK 内部会自动取消发布本地流。 同时退房会关闭所有远端流。 如果需要再次进入房间,在调用 leave 后再调用 join 即可。
this.client.leave().then(() => {...})
在进入房间的过程中,因为 SDK 使用不当或者网络异常等原因,可能会抛出以下错误:
加入和离开房间
百家云 WebSDK 使用 Client 对象来管理一个本地用户在房间内的行为,在进入房间之前需要先创建一个 Client 对象。
创建Client对象
调用 BRTC.createClient 即可创建 Client 对象。在创建 Client 对象时,需要指定使用的 appId 、编码格式、房间类型、是否采用 String 类型用户 ID
选择视频编码格式
codec 设置目前只支持 "h264"(H.264)视频编码格式。
选择直播场景
直播场景(mode)是百家云为了对不同的实时音视频场景进行针对性算法优化而提供的一种设置选项。SDK 目前只支持一种频道场景:"rtc"(实时互动场景)。
通信场景
"rtc"(实时互动场景)适用于房间内所有用户需要相互交流且用户总数不太多的场景,如多人会议和在线聊天。
自定义注释
comments 自定义注释,建议为客户应用名称,或者其他对客户有意义的自定义字符串。长度小于 64 个字符,超过的会被截断
userId是否为String
useStringUserId , 是否使用 string 作为 userId 类型 , 默认 false, userId 为 int32 类型
音量获取间隔
audioLevelInterval 音量获取间隔。 默认 1000,最大 10000,若需要更小间隔则设置此属性值。
房间类型
roomType 房间类型
SEI功能
enableSEI 是否开启 sei 功能
进入房间
创建 Client 对象后,调用 client.join 进入房间。
进房代表开始一个音视频通话会话,这时候 SDK 会监听远端用户进房退房情况,若有远端用户进房并且发布流,本地会收到 'stream-added' 事件。 进房后用户可以通过 publish() 发布本地流,本地流发布成功后远端用户就会收到相应 'stream-added' 事件通知从而完成一个双向的音视频通话连接。
该方法为异步方法,使用时需要配合 Promise 或 async/await
注意 join 方法的前三个参数 roomId,userId,sig 为必填项,如果为空,会报错,提示无效参数。
请确保房间内用户 ID 的唯一性。建议在业务层面避免用户使用相同的 ID 加入一个百家云。
离开房间
调用 client.leave 可以离开当前教室。该方法可以在任何时候调用,包括正在加入频道时或者正在重连时。
该方法为异步方法,使用时需要配合 Promise 或 async/await。
退房前请确保已经通过 unpublish() 取消发布本地流,若未取消发布本地流,SDK 内部会自动取消发布本地流。 同时退房会关闭所有远端流。 如果需要再次进入房间,在调用 leave 后再调用 join 即可。
错误处理
在进入房间的过程中,因为 SDK 使用不当或者网络异常等原因,可能会抛出以下错误: