类名 VhallInteraction
说明:互动直播(观众端)。
方法
1.初始化
new VhallInteractionGuest 互动对象初始化
var interaction = new VhallInteractionGuest({
inavId:"", //互动房间id,必填
videoNode:"my-interaction", //互动直播显示容器,必填
//成功回调,非必填
success: function(result){
//TODO
},
//失败回调,非必填
fail: function(reason){
//TODO
}
});
参数说明:
参数名称 | 参数说明 | 是否必填 |
---|---|---|
inavId | 互动房间id | 是 |
videoNode | 互动直播显示容器 | 是 |
success | 初始化成功回调 | 否 |
fail | 初始化失败回调 | 否 |
2.上麦
interaction.publish
/**
* 上麦
*/
interaction.publish({
success:function(){
},
fail:function(reason){
}
});
3.下麦
interaction.unpublish
/**
* 上麦
*/
interaction.unpublish({
success:function(){
},
fail:function(reason){
}
});
4.设置视频参数
interaction.changeSetting
//获取当前视频设置参数
var conf = window.interaction.getSetting();
//设置之后的摄像头ID
var v = '摄像头ID';
//设置之后的麦克风ID
var a = '麦克风ID';
//conf参数video的值
conf.video = v ? { deviceId: v } : false;
//conf参数audio的值
conf.audio = a ? { deviceId: a } : false;
//视频分辨率
conf.videoSize = [160,90,160,90];
//帧率
conf.videoFrameRate = [10,15];
//调用changeSetting方法,将设置好的conf参数传入
window.interaction.changeSetting({
conf:conf
});
conf中的参数缺省都为默认值
5.获取推流可选视频分辨率
interaction.getVideoSize
/**
* 获取推流可选视频分辨率
* @return {array} 可选分辨率数组,示例:[{'size':[240, 180, 240, 180],discription:'240*180'}];其中:size 为可选分辨率,discription为描述信息。
*/
interaction.getVideoSize();
6.获取可选帧率
interaction.getVideoFrameRate
/**
* 获取可选帧率
* @return {array} 可选帧率,示例:[{'rate':[5,8],discription:'Low'},{'rate':[10,15],discription:'Noraml'}];其中,rate为帧率,discription为描述。
*/
interaction.getVideoFrameRate();
7.获取当前视频设置参数
interaction.getSetting
/**
* 获取当前视频设置参数
* @return {object} 当前视频设置
* @retrun.audio 音频设置, true 为使用默认音频设备,{deviceId:''}中的deviceId为设备Id
* @retrun.video 视频设置, true 为使用默认视频设备,{deviceId:''}中的deviceId为设备Id
* @return.data,数据,true为使用数据,false为不使用数据
* @return.videoSize 视频分辨率
* @return.videoFrameRate 视频帧率
*/
interaction.getSetting()
8.获取音视频设备列表
interaction.getDevices
/**
* 获取音视频设备列表
* @return {object} 音视频设备列表,示例数据:{cameras:[{deviceId:'',label:''},{deviceId:'',label:''}],mics:[{deviceId:'',label:''},{deviceId:'',label:''}]}
*/
interaction.getDevices(function(devices){
console.log(devices);
},function(reason){});
9.设置大屏显示
interaction.setBigShow
/**
* 设置大屏
* @param {string} userId 用户Id
* @return {string} 返回提示,success为成功,其他为失败原因。
*/
interaction.setBigShow(userId);
10.获取用户当前是否在大屏显示
interaction.isBigShow
/**
* 获取用户当前是否在大屏显
* @param {string} userId 用户Id
* @return {Boolean} true为是,false为否 是否处在大屏显示中
*/
interaction.isBigShow(userId)
11.获取显示大屏的用户id
interaction.getBigShow
/**
* 获取显示大屏的用户id
* @return {string} 显示大屏的用户id
*/
interaction.getBigShow()
12.监听用户进入房间事件
interaction.onEnter
/**
* 监听用户进入房间事件
@param {Function} 事件回调函数,返回userId
*/
interaction.onEnter(function(userId){
//TODO
});
13.监听用户离开房间事件
/**
* 监听用户离开房间事件
@param {Function} 事件回调函数,返回userId
*/
interaction.onQuit(function(userId){
//TODO
});
14.进入房间
interaction.enter
/**
* 进入房间,简单调用
*/
interaction.enter();
/**
* 进入房间,带回调方式调用
*/
interaction.enter(function(){
//成功回调
},function(reason){
//失败回调,reason为失败原因。
});
注意:1.此方法使与离开房间接口(interaction.exit)配合使用,在使用了exit接口退出房间后,再此进入房间,才需要调用此方法。2.实例化互动对象时,会自动进入房间,不需调用此方法。
15.退出房间
interaction.exit
/**
* 退出房间
*/
interaction.exit();
/**
* 退出房间,带回调方式调用
*/
interaction.exit(function(){
//成功回调
},function(reason){
//失败回调,reason为失败原因。
});
16.获取流ID
interaction.getStreamId
//获取流ID
interaction.getStreamId();
17.获取当前用户id
//获用户ID
interaction.getUserId();
18.获取音频状态(是否静音)
interaction.isAudioMuted
/**
* 获取音频状态(是否静音)
* @return {Bealon} true/false
*/
interaction.isAudioMuted();
19.获取视频是否关闭(是否黑场)
interaction.isVideoMuted
/**
* 获取视频是否关闭(是否黑场)
* @return {Bealon} true/false
*/
interaction.isVideoMuted();
20. 关闭/打开音频(有音频数据,内容全零)
interaction.muteAudio
/**
* 关闭/打开音频(有音频数据,内容全零)
* @param {Bealon} true/false,如果参数为空,则改变当前状态。
*/
interaction.muteAudio(isMuted);
此方法在上麦成功之后调用才会生效
21. 关闭/开启视频(关闭后为黑场)
interaction.muteVideo
/**
* 关闭/开启视频(关闭后为黑场)
* @param {Bealon} true/false,如果参数为空,则改变当前状态。
*/
interaction.muteVideo(isMuted);
此方法在上麦成功之后调用才会生效
22.获取当前互动房间用户列表
interaction.getUsersList
/**
* 获取当前互动房间用户列表
* @params {object} success 成功回调
* @params {object} fail 失败回调
* @params {object} update 更新回调
*/
interaction.getUsersList({
//成功回调
success: function(users){
//TODO
},
//失败回调
fail: function(reason){
//TODO
},
//更新回调
update: function(){
//TODO
}
});
23.申请上麦
interaction.apply
/**
* 申请上麦
* @param {object} 参数
*/
interaction.apply({
//同意申请回调
consent: function(){
//TODO
},
//拒绝申请回调
reject: function(){
//TODO
},
//失败回调
fail: function(reason){
//TODO
}
});
24.监听被邀请上麦事件
interaction.onInvite
//监听被邀请上麦事件,处理方式一,被邀请后,默认同意
interaction.onInvite(function(event){
//直接调用同意方法
event.consent();
});
//监听被邀请上麦事件,处理方式二,被邀请后,调对话框提示,把选择权给用户
interaction.onInvite(function(event){
if(confirm('主持人喊你上麦,同意吗?')){
//如果同意,调用此方法
event.consent();
}else{
//如果拒绝,调用此方法
event.reject();
}
});
/**
* 监听被邀请上麦事件,处理方式三,调对话框,把选择权给用户,并且监听同意&拒绝之后的回调事件
* @param {object} event 回调事件参数,包含一个属性userId,和两个方法:consent 、 reject
*/
interaction.onInvite(function(event){
if(confirm('主持人喊你上麦,同意吗?')){
//同意申请,带参数调用方法
event.consent({
//同意后成功回调
success:function(){
//TODO
},
////同意后失败回调
fail:function(reason){
//TODO
}
});
}else{
//拒绝申请,带参数调用方法
event.reject({
//拒绝后成功回调
success:function(){
//TODO
},
////拒绝后失败回调
fail:function(reason){
//TODO
}
});
}
});
25.关闭远程视频
muteRemoteVideo
/**
* 关闭远程视频,保留音频
*@param {array} users 用户(id),只支持数组类型
多个用户则传用户数组,如:['guest1','guest2','guest3']
* @return {array} 操作成功的用户(id),如:['guest1','guest3']
*/
interaction.muteRemoteVideo(['guest1','guest2','guest3']);
- 此方法只会关闭当前页面视频显示,不会断开链接,音频会保留。一般于多方场景下,节省资源时使用。
- 此方法只针对麦上用户有效,也就是说,被关闭视频的用户,下麦后再上麦,视频会打开。如需将某用户视频始终关闭,可以设置初始化参数muteVideoUsers
26.打开远程视频
unmuteRemoteVideo
/**
* 打开远程视频
* @param {array} users 用户(id),只支持数组类型
* 多个用户则传用户数组,如:['guest1','guest2','guest3']
* @return {array} 操作成功的用户(id),如:['guest1','guest3']
*/
interaction.unmuteRemoteVideo(['guest1','guest2','guest3']);
此方法一般与muteRemoteVideo配合使用,来动态改变用户视频显示与否,不影响音频。