类名 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配合使用,来动态改变用户视频显示与否,不影响音频。