该插件实现腾讯云视频语音通话, 支持视频通话和语音通话, 提供类似微信的视频通话和语音通话功能,适用多人、双人视频语音模式、网络会议、在线医疗、视频客服、金融双录等场景。
腾讯云视频互动直播插件,提供互动直播的功能,包括直播、连麦PK、主播 PK、低延时观看、弹幕聊天等在互动直播场景下的相关能力。
该论坛提供了插件使用示例入口,您可以在论坛中找到使用的Demo,以及问题反馈。
原生插件本身使用复杂,音视频功能强大,造成接入难度不小。 建议使用前先联系我们的技术支持,协助接入。
我们的客服微信: ruanyunkeji006
接口列表 | 功能 |
---|---|
init | 初始化 |
setCallingListener | 设置监听器 |
removeCallingListener | 移除监听器 |
destroy | 销毁 |
接口列表 | 功能 |
---|---|
login | 登录 |
logout | 登出 |
接口列表 | 功能 |
---|---|
call | 单人通话邀请 |
groupCall | 群组邀请通话 |
accept | 接受当前通话 |
reject | 拒绝当前通话 |
hangup | 挂断当前通话 |
接口列表 | 功能 |
---|---|
startRemoteView | 显示远端画面 |
stopRemoteView | 停止显示远端画面 |
接口列表 | 功能 |
---|---|
openCamera | 开启摄像头 |
switchCamera | 切换前后摄像头 |
closeCamera | 关闭摄像头 |
setMicMute | 静音本地音频采集 |
setHandsFree | 开启免提 |
switchToAudio | 切换为语音 |
初始化
init({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
##代码示例
calling.init({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#setCallingListener
设置监听
setCallingListener({}, function(ret, err))
ret:
{
eventType: "onInvited",
...
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.setCallingListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#removeCallingListener
移除监听器
removeCallingListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.removeCallingListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#destroy
销毁
destroy({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.destroy({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#login
登录
login({params}, function(ret, err))
sdkAppId:
userId:
userSig:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.login({
sdkAppId: 14xxxxx16,
userId: 'test001',
userSig: 'eJw1zMEOgxxxxxeH3CNMZw_'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#logout
登出
logout({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.logout({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#call
修改个人信息
call({params}, function(ret, err))
userId:
type:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.call({
userId: 'test002',
type: 1
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#groupCall
群组邀请通话,被邀请方会收到 onInvited 回调。如果当前处于通话中,可以继续调用该函数继续邀请他人进入通话,同时正在通话的用户会收到 onGroupCallInviteeListUpdate 回调
groupCall({params}, function(ret, err))
userIdList:
type:
groupId:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.groupCall({
userIdList: [
'test001',
'test002'
],
type: 1,
groupId: 'group001'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#accept
接受当前通话。当您作为被邀请方收到 onInvited 的回调时,可以调用该函数接听来电
accept({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.accept({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#reject
拒绝当前通话。当您作为被邀请方收到 onInvited 的回调时,可以调用该函数拒绝来电
reject({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.reject({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#hangup
挂断当前通话。当您处于通话中,可以调用该函数结束通话
hangup({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.hangup({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#startRemoteView
远端用户的摄像头数据渲染
startRemoteView({params}, function(ret, err))
userId:
rect:
{
x: 0,
y: 0,
w: 100,
h: 200
}
x:
y:
w:
h:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.startRemoteView({
userId: 'test002',
rect: {
x: 0,
y: 0,
w: api.winWidth / 4,
h: api.winHeight / 4
}
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#stopRemoteView
停止渲染远端数据
stopRemoteView({params}, function(ret, err))
userId:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.stopRemoteView({
userId: 'test002'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#openCamera
开启摄像头
openCamera({params}, function(ret, err))
isFront:
rect:
{
x: 0,
y: 0,
w: 100,
h: 200
}
x:
y:
w:
h:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.openCamera({
isFront: isFront,
rect: {
x: 0,
y: 0,
w: api.winWidth / 2,
h: api.winHeight / 2
}
}, function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#switchCamera
切换前后摄像头
switchCamera({params}, function(ret, err))
isFront:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.switchCamera({
isFront: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#closeCamera
关闭摄像头
closeCamera({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.closeCamera({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#setMicMute
静音本地音频采集
setMicMute({params}, function(ret, err))
isMute:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.setMicMute({
isMute: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#setHandsFree
开启免提
setHandsFree({params}, function(ret, err))
isHandsFree:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.setHandsFree({
isHandsFree: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#switchToAudio
切换为语音
switchToAudio({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
calling.switchToAudio({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
##事件回调
###通用事件回调
#onError
错误回调
说明:
SDK 不可恢复的错误,一定要监听,并分情况给用户适当的界面提示
{
eventType: 'onError',
code: 12,
msg: 'This is a error msg'
}
eventType:
code:
msg
###邀请方回调
#onReject
拒绝通话回调
{
eventType: 'onReject',
userId: 'test002'
}
仅邀请者收到通知,其他用户应使用 onUserEnter
eventType:
userId:
#onNoResp
对方无回应回调。
{
eventType: 'onNoResp',
userId: 'test002'
}
仅邀请者受到通知,其他用户应使用 onUserEnter
eventType:
userId:
#onLineBusy
通话忙线回调。
{
eventType: 'onLineBusy',
userId: 'test002'
}
仅邀请者收到通知,其他用户应使用 onUserEnter
eventType:
userId:
###被邀请方回调
#onInvited
被邀请通话回调
{
eventType: 'onInvited',
sponsor: 'test002'
userIdList: [
'test001'
],
isFromGroup: true,
callType: 1
}
eventType:
sponsor:
userIdList:
isFromGroup:
callType:
#onCallingCancel
当前通话被取消回调。接收方未处理请求,邀请方取消后会收到此回调
{
eventType: 'onCallingCancel',
userId: 'test002'
}
eventType:
userId:
#onCallingTimeOut
当前通话超时回调
{
eventType: 'onCallingTimeOut'
}
eventType:
###通用回调
#onGroupCallInviteeListUpdate
群聊更新邀请列表回调
{
eventType: 'onGroupCallInviteeListUpdate',
userIdList: [
'test002'
]
}
eventType:
userIdList:
#onUserEnter
用户进入通话回调
{
eventType: 'onUserEnter',
userId: 'test002'
}
eventType:
userId:
#onUserLeave
用户离开通话回调
{
eventType: 'onUserLeave',
userId: 'test002'
}
eventType:
userId:
#onUserAudioAvailable
用户是否开启音频上行回调
{
eventType: 'onUserAudioAvailable',
userId: 'test002',
available: true
}
eventType:
userId:
available:
#onUserVideoAvailable
用户是否开启视频上行回调。收到通知后,用户可调用 startRemoteView 渲染远端视频
{
eventType: 'onUserVideoAvailable',
userId: 'test002',
available: true
}
eventType:
userId:
available:
#onUserVoiceVolume
用户是否开启视频上行回调。收到通知后,用户可调用 startRemoteView 渲染远端视频
{
eventType: 'onUserVoiceVolume',
volumeList: [
volumeInfo,
...
]
}
eventType:
volumeList:
volumeInfo:
{
userId: 'test002',
volume: 10
}
userId:
volume:
#onCallEnd
通话结束回调
{
eventType: 'onCallEnd'
}
eventType:
##接口列表
###初始化与监听
接口列表 | 功能 |
---|---|
init | 初始化 |
setLiveRoomListener | 设置监听器 |
removeLiveRoomListener | 移除监听器 |
destroy | 销毁 |
###登录与登出
接口列表 | 功能 |
---|---|
login | 登录 |
logout | 登出 |
setSelfProfile | 修改个人信息 |
###房间接口
接口列表 | 功能 |
---|---|
createRoom | 创建房间 |
destroyRoom | 销毁房间 |
enterRoom | 进入房间 |
exitRoom | 离开房间 |
getRoomInfos | 列表房间信息 |
getAnchorList | 获取房间内主播列表 |
getAudienceList | 获取房间内所有观众 |
###推拉流相关
接口列表 | 功能 |
---|---|
startCameraPreview | 开启视频本地预览 |
stopCameraPreview | 停止本地视频采集及预览 |
startPublish | 开始直播(推流) |
stopPublish | 停止直播(推流) |
startPlay | 播放远端视频画面 |
stopPlay | 停止渲染远端视频画面 |
###主播和观众连麦
接口列表 | 功能 |
---|---|
setLinkMicListener | 设置连麦监听 |
requestJoinAnchor | 观众请求连麦 |
responseJoinAnchor | 主播处理连麦请求 |
kickoutJoinAnchor | 主播踢除连麦观众 |
###主播跨房间 PK
接口列表 | 功能 |
---|---|
setRoomPKListener | 设置跨房PK监听 |
requestRoomPK | 主播请求跨房PK |
responseRoomPK | 主播响应跨房PK请求 |
quitRoomPK | 主动退出跨房PK |
###音视频控制
接口列表 | 功能 |
---|---|
switchCamera | 切换前后摄像头 |
setMirror | 设置是否镜像展示 |
muteLocalAudio | 静音本地音频 |
muteRemoteAudio | 静音远端音频 |
muteAllRemoteAudio | 静音所有远端音频 |
###消息发送
接口列表 | 功能 |
---|---|
sendRoomTextMsg | 发送普通文本消息 |
sendRoomCustomMsg | 发送自定义文本消息 |
##插件接口
#init
初始化
init({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
##代码示例
liveRoom.init({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#setLiveRoomListener
设置监听器
setLiveRoomListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onAnchorEnter'
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.setLiveRoomListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#removeLiveRoomListener
移除监听器
removeLiveRoomListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.removeLiveRoomListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#destroy
销毁
destroy({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.destroy({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#login
登录
login({params}, function(ret, err))
sdkAppId:
userId:
userSig:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.login({
sdkAppId: 140xxxx416,
userId: 'test001',
userSig: 'eJwtzExxxxxizphb3L40HQ'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#logout
登出
logout({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.logout({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#setSelfProfile
修改个人信息
setSelfProfile({params}, function(ret, err))
userName:
avatarUrl:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.setSelfProfile({
userName: 'userName001',
avatarUrl: 'http://xxxx.myqcloud.com/xxxx.png'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#createRoom
创建房间(主播调用)
createRoom({params}, function(ret, err))
主播开播的正常调用流程如下:
roomId:
roomName:
coverUrl:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.createRoom({
roomId: 1,
roomName: 'room001',
coverUrl: 'https://xxxx.myqcloud.com/cover001.jpg'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#destroyRoom
销毁房间(主播调用)
destroyRoom({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.destroyRoom({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#enterRoom
进入房间(观众调用)
enterRoom({params}, function(ret, err))
观众观看直播的正常调用流程如下:
roomId:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.enterRoom({
roomId: 1001
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#exitRoom
离开房间
exitRoom({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.exitRoom({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#getRoomInfos
获取房间列表的详细信息, 房间信息是主播在创建 createRoom() 时通过 roomInfo 设置的
getRoomInfos({params}, function(ret, err))
说明:
如果房间列表和房间信息都由您自行管理,可忽略该函数
roomIdList:
ret:
{
status: true, // 布尔类型, true表示操作成功
roomList: [
roomInfo,
...
]
}
roomList:
roomInfo:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.getRoomInfos({
roomIdList: [
1
]
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#getAnchorList
获取房间内所有的主播列表, enterRoom() 成功后调用才有效
getAnchorList({}, function(ret, err))
ret:
{
status: true, // 布尔类型, true表示操作成功
userList: [
userInfo,
...
]
}
userList:
userInfo:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.getAnchorList({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#getAudienceList
获取房间内所有的观众信息, enterRoom() 成功后调用才有效
getAudienceList({}, function(ret, err))
ret:
{
status: true, // 布尔类型, true表示操作成功
userList: [
userInfo,
...
]
}
userList:
userInfo:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.getAudienceList({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#startCameraPreview
开启本地视频的预览画面
startCameraPreview({params}, function(ret, err))
isFront:
rect:
{
x: 0,
y: 0,
w: 100,
h: 200
}
x:
y:
w:
h:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.startCameraPreview({
isFront: true,
rect: {
x: 0,
y: 0,
w: api.winWidth / 2,
h: api.winHeight / 2
}
}, function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#stopCameraPreview
停止本地视频采集及预览
stopCameraPreview({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.stopCameraPreview({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#startPublish
开始直播(推流)
startPublish({params}, function(ret, err))
适用于以下场景:
streamId:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.startPublish({
streamId: 'stream01'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#stopPublish
停止直播(推流)
stopPublish({}, function(ret, err))
适用于以下场景:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.stopPublish({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#startPlay
播放远端视频画面,可以在普通观看和连麦场景中调用
startPlay({params}, function(ret, err))
普通观看场景
直播连麦场景
发起连麦后,主播会收到来自 setLiveRoomListener 中的 onAnchorEnter(userId) 回调,此时使用回调中的 userId 调用 startPlay 传入userId即可播放连麦画面。
userId:
rect:
{
x: 0,
y: 0,
w: 100,
h: 200
}
x:
y:
w:
h:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.startPlay({
userId: 'test002',
rect: {
x: 0,
y: 0,
w: api.winWidth / 2,
h: api.winHeight / 2
}
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#stopPlay
停止渲染远端视频画面,需要再接收到onAnchorExit回调时,调用该接口
stopPlay({params}, function(ret, err))
userId:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.stopPlay({
userId: 'test002'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#setLinkMicListener
设置连麦监听
setLinkMicListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onSuccess',
...
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.setLinkMicListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#requestJoinAnchor
观众请求连麦
requestJoinAnchor({params}, function(ret, err))
主播和观众的连麦流程如下:
reason:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.requestJoinAnchor({
reason: 'this is a reason'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#responseJoinAnchor
主播处理连麦请求
responseJoinAnchor({params}, function(ret, err))
主播在收到 setLiveRoomListener 的 onRequestJoinAnchor() 回调后,需要调用该接口来处理观众的连麦请求
userId:
isAgree:
reason:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.responseJoinAnchor({
userId: 'test002',
isAgree: true,
reason: 'This is a reason'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#kickoutJoinAnchor
主播踢除连麦观众
kickoutJoinAnchor({params}, function(ret, err))
主播调用此接口踢除连麦观众后,被踢连麦观众会收到 setLiveRoomListener 的 onKickoutJoinAnchor() 回调通知
userId:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.kickoutJoinAnchor({
userId: 'test002'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#setRoomPKListener
设置跨房PK监听
setRoomPKListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onSuccess',
...
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.setRoomPKListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#requestRoomPK
主播请求跨房PK
requestRoomPK({params}, function(ret, err))
roomId:
roomName:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.requestRoomPK({
roomId: 2,
userId: 'test002'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#responseRoomPK
主播响应跨房PK请求
responseRoomPK({params}, function(ret, err))
主播和主播之间可以跨房间 PK,两个正在直播中的主播 A 和 B 之间的跨房 PK 流程如下:
userId:
isAgree:
reason:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.responseRoomPK({
userId: 'test002',
isAgree: true,
reason: 'This is a reason'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#quitRoomPK
退出跨房PK。PK 中的任何一个主播退出跨房 PK 状态后,另一个主播会收到 setLiveRoomListener 的 onQuitRoomPK 回调通知。
quitRoomPK({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.quitRoomPK({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#switchCamera
切换前后摄像头
switchCamera({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.switchCamera({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#setMirror
设置是否镜像展示
setMirror({params}, function(ret, err))
isMirror:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.setMirror({
isMirror: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#muteLocalAudio
静音本地音频
muteLocalAudio({params}, function(ret, err))
isMute:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.muteLocalAudio({
isMute: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#muteRemoteAudio
静音远端音频
muteRemoteAudio({params}, function(ret, err))
isMute:
userId:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.muteRemoteAudio({
userId: 'test002',
isMute: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#muteAllRemoteAudio
静音远端音频
muteAllRemoteAudio({params}, function(ret, err))
isMute:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.muteAllRemoteAudio({
isMute: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#sendRoomTextMsg
在房间中广播文本消息
sendRoomTextMsg({params}, function(ret, err))
msg:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.sendRoomTextMsg({
msg: 'Hello world'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#sendRoomCustomMsg
发送自定义文本消息
sendRoomCustomMsg({params}, function(ret, err))
cmd:
msg:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
liveRoom.sendRoomCustomMsg({
cmd: 'CMD_LIKE',
msg: 'Hello world'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
##事件回调
###通用事件回调
#onError
错误回调
说明:
SDK 不可恢复的错误,一定要监听,并分情况给用户适当的界面提示。
{
eventType: 'onError',
code: 11,
msg: 'this is a error msg'
}
eventType:
code:
msg:
#onWarning
警告回调
{
eventType: 'onWarning',
code: 11,
msg: 'this is a error msg'
}
eventType:
code:
msg:
#onDebugLog
Log 回调
{
eventType: 'onDebugLog',
log: 'xxxxx'
}
eventType:
log:
###房间事件回调
#onRoomDestroy
房间被销毁的回调。主播退房时,房间内的所有用户都会收到此通知
{
eventType: 'onRoomDestroy',
roomId: 10
}
eventType:
roomId:
#onRoomInfoChange
房间被销毁的回调。主播退房时,房间内的所有用户都会收到此通知
{
eventType: 'onRoomInfoChange',
roomInfo: {
...
}
}
eventType:
roomInfo:
#onRoomInfoChange
房间被销毁的回调。主播退房时,房间内的所有用户都会收到此通知
{
eventType: 'onRoomInfoChange',
roomInfo: {
...
}
}
eventType:
roomInfo:
###主播和观众进出事件回调
#onAnchorEnter
收到新主播进房通知。连麦观众和跨房 PK 主播进房后观众会收到新主播的进房事件,您可以调用 setLiveRoomListener 的 startPlay() 显示该主播的视频画面
{
eventType: 'onAnchorEnter',
userId: 'test001'
}
eventType:
userId:
#onAnchorExit
收到主播退房通知。房间内的主播(和连麦中的观众)会收到新主播的退房事件,您可以调用 TRTCLiveRoom 的 stopPlay() 关闭该主播的视频画面
{
eventType: 'onAnchorExit',
userId: 'test001'
}
eventType:
userId:
#onAudienceEnter
收到观众进房通知
{
eventType: 'onAudienceEnter',
userInfo: {
...
}
}
eventType:
userInfo:
#onAudienceExit
收到观众进房通知
{
eventType: 'onAudienceExit',
userInfo: {
...
}
}
eventType:
userInfo:
###主播和观众连麦事件回调
#onRequestJoinAnchor
主播收到观众连麦请求时的回调
{
eventType: 'onRequestJoinAnchor',
userInfo: {
...
},
reason: 'This is a reason',
timeout: 10
}
eventType:
userInfo:
reason:
timeout:
#onKickoutJoinAnchor
主播收到观众连麦请求时的回调
{
eventType: 'onKickoutJoinAnchor'
}
eventType:
###主播 PK 事件回调
#onRequestRoomPK
收到请求跨房 PK 通知。主播收到其他房间主播的 PK 请求,如果同意 PK ,您需要等待 TRTCLiveRoomDelegate 的 onAnchorEnter() 通知,然后调用 startPlay() 来播放邀约主播的流
{
eventType: 'onRequestRoomPK',
userInfo: {
...
},
timeout: 10
}
eventType:
userInfo:
timeout:
#onQuitRoomPK
收到请求跨房 PK 通知。主播收到其他房间主播的 PK 请求,如果同意 PK ,您需要等待 TRTCLiveRoomDelegate 的 onAnchorEnter() 通知,然后调用 startPlay() 来播放邀约主播的流
{
eventType: 'onQuitRoomPK'
}
eventType:
###消息事件回调
#onRecvRoomTextMsg
收到文本消息
{
eventType: 'onRecvRoomTextMsg',
fromUser: {
...
},
message: 'This is a message'
}
eventType:
fromUser:
message:
#onRecvRoomCustomMsg
收到自定义消息
{
eventType: 'onRecvRoomCustomMsg',
fromUser: {
...
},
command: 'This is a cmd',
message: 'This is a message'
}
eventType:
fromUser:
cmd:
message:
###请求连麦事件回调
#onSuccess
连麦成功
{
eventType: 'onSuccess',
reason: 'This is a reason'
}
eventType:
reason:
#onFailure
连麦失败
{
eventType: 'onFailure',
reason: 'This is a reason'
}
eventType:
reason:
###请求跨房PK事件回调
#onSuccess
跨房PK成功
{
eventType: 'onSuccess',
reason: 'This is a reason'
}
eventType:
reason:
#onFailure
跨房PK失败
{
eventType: 'onFailure',
reason: 'This is a reason'
}
eventType:
reason:
##数据结构
#roomInfo
房间信息
{
coverUrl: 'http://xxx.xxx.xxx/xxx.png',
memberCount: 5,
ownerId: 'test001',
ownerName: 'userName001',
roomId: 'room001'
roomName: 'roomName001',
roomStatus: 0,
streamUrl: 'streamId001'
}
coverUrl:
memberCount:
ownerId:
ownerName:
roomId:
roomName:
roomStatus:
streamUrl:
#userInfo
房间信息
{
avatarUrl: 'http://xxx.xxx.xxx/xxx.png',
userId: 'test001',
userName: 'Lucy'
}
userId:
userName:
avatarUrl:
##更多功能
获取内测功能和技术支持,请联系我们客户微信: ruanyunkeji006