API
初始化接口
SDK初始化
1import {BaiduRtcRoom, BaiduRtcRoomImp,VideoRenderController,userInterface,RTCEvent,StreamChangeInfo,STREAM_CHANGE_STATUS, streamsInterface,UserInfo,ScalingMode,CAMERAID } from 'baidurtcsdk'
2this.baiduRtcRoom = new BaiduRtcRoom();
3this.baiduRtcRoomIpm = this.baiduRtcRoom.initWithAppID(appId, roomName, token, XComponentController);
SDK初始化。
初始化SDK并创建RTC房间实例 初始化 SDK 时调用,初始化 SDK 失败会导致 SDK 功能异常。
参数
参数 | 类型 | 描述 |
---|---|---|
appId | String | 百度为App签发的 App ID, 用于识别应用, 全局唯一,详见创建应用。 |
roomName | number | 房间号 |
token | String | 百度RTC服务端鉴权使用的密钥,可缺省,使用应用鉴权可使得服务更加安全。 详见应用鉴权。 |
XComponentController | VideoRenderController | 本地视频渲染XComponentController |
返回
BaiduRtcRoomImp 实例对象:成功; null:失败;
房间相关接口
获取房间成员详细列表
1this.baiduRtcRoomIpm?.queryUserList() as Array<userInterface>;
查询房间用户详细信息。获取房间中所有参与者的详细信息列表。
userInterface参数说明:
属性 | 类型 | 描述 |
---|---|---|
display | string | 用户名 |
id | string | 用户Id |
room | number | 房间id |
session_id | number | 会议id |
streams | Array |
流信息 |
获取自己信息
1this.baiduRtcRoomIpm?.getSelfInfo() as userInterface
userInterface参数说明参考-获取房间成员详细列表-userInterface参数说明
踢出某成员
1this.baiduRtcRoomIpm?.kickOffUserWithId(userId:string)
踢出某用户。
房管/主播/会议主持 把某用户踢出聊天室。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | string | 在房间中的用户的 用户ID |
禁言某成员
1this.baiduRtcRoomIpm?.shutUpUserWithId(userId:string,disable:boolean)
是否禁言某成员。
房管/主播/会议主持 禁止某成员发言。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | string | 在房间中的用户的 用户ID |
disable | boolean | 禁言/取消禁言 |
解散房间
1this.baiduRtcRoomIpm?.disbandRoom()
解散房间。
房间管理员有权利解散整个房间,解散后,房间中的每个用户都被动退出房间。
销毁
1this.baiduRtcRoomIpm?.destroy()
退出房间。 执行destroy后,会停止音视频采集,断开与房间服务器的连接,取消音视频的传输,销毁音视频传输通道以及释放其他资源。
发布/订阅相关接口
订阅某成员媒体流
1this.baiduRtcRoomIpm?.subscribe(userId:string)
订阅远端成员订阅流。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | string | 远端用户ID |
停止订阅某成员媒体流
1this.baiduRtcRoomIpm?.stopSubscribeStreaming(userId:string)
停止订阅。
停止订阅流。
参数 | 类型 | 描述 |
---|---|---|
userId | string | 远端用户ID |
消息相关接口
向某成员发送消息
1this.baiduRtcRoomIpm?.sendMessageToUser(msg:string,id:string)
发送消息。
id="0",房间内广播消息, id = userID,指定用户发送消息
参数
参数 | 类型 | 描述 |
---|---|---|
msg | String | 消息 |
id | string | 远端用户ID |
设置用户属性
1this.baiduRtcRoomIpm?.setUserAttribute(attribute:string)
用户属性设置。
设置用户属性。
参数
参数 | 类型 | 描述 |
---|---|---|
attribute | String | 用户属性 |
获取用户属性
1this.baiduRtcRoomIpm?.getUserAttribute(userId:string)
用户属性获取。
获取用户属性。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 用户ID |
发送数据
1this.baiduRtcRoomIpm?.sendChannelData(data:ESObject)
发送Data数据。 通过datachannel发送数据
参数
参数 | 类型 | 描述 |
---|---|---|
data | ESObject | 要发送的数据 |
视频相关接口
开启本地预览
1this.baiduRtcRoomIpm?.startPreview()
本地预览。
打开camera,开始预览。
停止本地预览
1this.baiduRtcRoomIpm?.stopPreview()
停止预览。
关闭camera, 停止本地预览。
设置远端渲染窗口
1this.baiduRtcRoomIpm?.setRemoteDisplay(videoController:VideoRenderController, userId:string)
设置指定远端用户显示窗口。
参数
参数 | 类型 | 描述 |
---|---|---|
videoController | VideoRenderController | 远端画面显示窗口, 用于显示远端用户传输过来的视频数据 |
userId | string | 远端成员ID |
摄像头相关接口
切换摄像头
1this.baiduRtcRoomIpm?.switchCamera(CameraId?:CAMERAID)
切换摄像头。
前/后摄像头切换。默认开启前置摄像头。
参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
CameraId | CAMERAID | 否 | 摄像头ID 可取值: CAMERAID.CAMERA_FACING_BACK 前置摄像头ID CAMERAID.CAMERA_FACING_BACK 后置摄像头ID |
获取当前开启摄像头
1 const cameraId = this.baiduRtcRoomIpm?.getCameraId() as CAMERAID
CAMERAID枚举类型:
1 enum CAMERAID {
2 CAMERA_FACING_BACK = "environment",
3 CAMERA_FACING_FRONT = "user"
4 }
关闭/开启本地视频采集
1this.baiduRtcRoomIpm?.muteCamera(muted:boolean)
关闭/打开摄像头。
在关闭摄像头后,本地无法预览,且不传输本地视频数据给对方。
参数
参数 | 类型 | 描述 |
---|---|---|
muted | boolean | 是否打开摄像头,默认为打开 |
音频相关接口
关闭/开启麦克风静音
1this.baiduRtcRoomIpm?.muteMic(muted:boolean)
开启/关闭 麦克风静音(不关闭手机麦克风设备)。
参数
参数 | 类型 | 描述 |
---|---|---|
muted | boolean | true表示要静音, false表示取消静音 |
切换扬声器/听筒
1this.baiduRtcRoomIpm?.switchLoundSpeaker(CommunicationDeviceId?:CommunicationDeviceType)
开关扬声器。
听筒与扬声器切换(免提功能)
参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
CommunicationDeviceId | CommunicationDeviceType | 否 | 输出设备ID |
CommunicationDeviceType:
1 enum CommunicationDeviceType {
2 Earpiece = 1,
3 SPEAKER = 2,
4 }
获取当前音频输出设备
1const communicationDeviceId = this.baiduRtcRoomIpm?.getCommunicationDeviceId() as CommunicationDeviceType
CommunicationDeviceType:
1 enum CommunicationDeviceType {
2 Earpiece = 1,
3 SPEAKER = 2,
4 }
禁止/开启音频输出
1 this.baiduRtcRoomIpm?.muteSpeaker(mute:boolean)
2
开启/关闭音频输出。
参数
参数 | 类型 | 描述 |
---|---|---|
mute | boolean | true:禁止音频输出, false:开启音频输出 (默认) |
设置是否拉取某成员音频流
1this.baiduRtcRoomIpm?.setRemoteAudioPlayState(status:boolean, userId:string)
指定远端音频暂停/恢复播放。
通过控制音频流拉取,控制指定远端用户音频暂停/恢复播放。
参数
参数 | 类型 | 描述 |
---|---|---|
status | boolean | true:拉取,false:停止拉取。默认拉取 |
userId | string | 用户ID |
设置是否拉取某成员视频流
1this.baiduRtcRoomIpm?.setRemoteVideoPlayState(status:boolean, userId:string)
指定远端画面暂停/恢复播放。
通过控制流的拉取与否,指定远端画面暂停/恢复播放。
参数
参数 | 类型 | 描述 |
---|---|---|
status | boolean | true:拉取;false:停止拉取 |
userId | string | 用户ID |
通知相关接口
房间事件更新回调
用户登录成功回调
1this.baiduRtcRoomIpm.on(RTCEvent.LoginSuccess,(roomId:number,uid:number)=>{}`
房间用户登录成功通知。
参数
参数 | 类型 | 描述 |
---|---|---|
roomId | number | 房间ID |
number | string | 用户id |
远端用户加入
1this.baiduRtcRoomIpm.on(RTCEvent.RemoteUserJoinRoom,(user:userInterface)=>{})
远端用户加入房间
参数
参数 | 类型 | 描述 |
---|---|---|
room | number | 房间ID |
id | string | 用户id |
display | string | 用户名 |
session_id | number | 会议id |
streams | Array |
远端流 |
远端用户离开
1this.baiduRtcRoomIpm.on(RTCEvent.RemoteUserLeaveRoom,(userId:string)=>{})
远端用户离开房间
参数
参数 | 类型 | 描述 |
---|---|---|
userId | string | 用户id |
远端流变更
1this.baiduRtcRoomIpm.on(RTCEvent.StreamChangedState,(type:STREAM_CHANGE_STATUS,info:StreamChangeInfo)=>{})
远端流状态发生变更
参数
参数 | 类型 | 描述 |
---|---|---|
type | STREAM_CHANGE_STATUS | STREAM_CHANGE_STATUS.STREAM_CHANGE_COMING = 1 远端流到达 STREAM_CHANGE_STATUS.STREAM_CHANGE_LAVING = 2 远端流离开 |
info | StreamChangeInfo | 流信息 |
StreamChangeInfo参数说明:
参数 | 类型 | 描述 |
---|---|---|
uid | string | 远端用户ID |
name | string | 远端用户名 |
stream | Array<streamsInterface> | 远端流信息 |
streamsInterface参数说明:
参数 | 类型 | 描述 |
---|---|---|
mid | string | 远端流id |
type | string | 远端流类型,'audio' or 'video' |
active | boolean | 是否可用 |
description | string | 远端流描述 |
用户被禁言
1 this.baiduRtcRoomIpm.on(RTCEvent.UserShutUp,(user:UserInfo)=>{
2 console.log(`${user.id} 被禁言`)
3 })
4
用户被禁言
UserInfo参数说明
参数 | 类型 | 描述 |
---|---|---|
room | number | 房间id |
self | boolean | 是否是自己 |
id | number | 用户id |
audio | boolean | audio状态,true:未被禁言 false:被禁言 |
用户被解除禁言
1 this.baiduRtcRoomIpm.on(RTCEvent.UserDisShutUp,(user:UserInfo)=>{
2 console.log(`${user.id} 被解除禁言`)
3 })
用户被解除禁言
UserInfo参数:参考-用户被禁言-UserInfo参数说明
被踢出房间
1 this.baiduRtcRoomIpm.on(RTCEvent.UserKickOff,(uid:number)=>{
2 console.log(`${uid}被踢出了房间`)
3 })
用户被踢出房间
收到用户消息/广播
1 this.baiduRtcRoomIpm.on(RTCEvent.UserMessage,(uid:number,data:string)=> {
2 console.log(`收到用户id为:${uid} 消息内容是:${data}`)
3 })
收到用户消息、或者广播消息
收到DataChannel消息
1 this.baiduRtcRoomIpm.on(RTCEvent.DataChannelMessage,(msg:ESObject)=>{
2 console.log(`收到dataChannelMessage is ${msg}`)
3 })