类名 VhallInteraction

说明:互动直播(主持端)。

方法

1.初始化

new VhallInteraction 互动对象初始化

    //简单调用
    var  interaction = new VhallInteraction({
        inavId:"", //互动房间id,必填
        videoNode:"my-interaction", //互动直播显示容器,必填
        //成功回调,非必填
        success: function(result){
          //TODO
        },
        //失败回调,非必填
        fail: function(reason){
          //TODO
        },
        //混流事件回调,服务端混流后触发此事件,开启旁路直播方法需写在此事件里
        mixed: function(){
            //开启旁路直播
            window.interaction.startBroadCast({
                roomId:'',
                success:function(){
                   console.info('开启旁路成功'); 
                },
                fail:function(reason){
                    console.info(reason.msg)
                }
            });
        }
    });
    

参数说明:

参数名称 参数说明 是否必填
inavId 互动房间id
videoNode 互动直播显示容器
success 初始化成功回调
fail 初始化失败回调

所有参数均使用的调用示例


        //所有参数均使用的调用示例
        window.interaction = new VhallInteraction({
           //互动房间Id
           inavId: 'xxx',
           //互动容器,可如上简单调用,传入一个容器id,也支持自定义,如下传入对象,分别设置local和remote的容器,自定义模式下,需将template的值设为custom
           videoNode:{
             //本地视频容器
             local:'my-local-video',
             //远程视频容器
             remote:'my-remote-video',
             //远程视频容器需要嵌入式的element节点
             remoteAfterElement:'<div class="action-box"></div>',
             //本地视频容器需要嵌入式的element节点
             localAfterElement:'<div class="action-box"></div>',
           },
           //模版,如需要自定义videoNode,需传值为custom。
           template:'custom',
           //本地视频宽度像素值,(如160px或100%)
           localVideoWidth:'320px',
           //本地视频高度像素值,(如90px或100%)
           localVideoHeight:'180px',
           //远程视频宽度像素值,示例同上
           remoteVideoWidth:'160px',
           //远程视频高度像素值,示例同上
           remoteVideoHeight:'90px',
           //推流配置
           conf:{
                //推流视频分辨率,Array类型,四个值,第1、3个值为分辨率的宽,2、4 个值为视频的高 
                videoSize: [320,180,320,180],
                //推流视频分辨率。此参数会自动设置该分辨率对应的码率,设置后videoSize变为无效,可设值见下面对照表
                resolution:'VIDEO_QUALITY_HIGH',
                //参数宏定义,传参后,自动设置对应参数:videoSize、resolution、bitrate、framerate,同时自定义的这三个参数失效,可设值见下面对照表
                profile:'VIDEO_PROFILE_120P_1',
           },
           //是否自动上麦推流,如果设置为true,实例化成功后自动上麦推流。
           autoPublish:false,
           /*
             打开视频用户名单,非必填,默认都打开。
             只对远程视频用户有效,设置后,只有名单中的视频会打开,其它均都被关闭。
             如想再开启或关闭,可调用muteRemoteVideo方法。
             与muteVideoUsers参数互斥,同时使用时,unmuteVideoUsers生效
            */
           unmuteVideoUsers:['guest1','guest2','guest3'],
            /*
              关闭视频用户名单,非必填,默认都打开。
              只对远程视频用户有效,设置后,被设置的用户可以上麦,但上麦后不会显示视频。
              如想再开启或关闭,可调用muteRemoteVideo方法。
              与muteVideoUsers参数互斥,同时使用时,unmuteVideoUsers生效
            */
           muteVideoUsers:['guest4','guest5','guest6'],
           //实例化成功回调
           success: function(){
    
           },
           //实例化失败回调
           fail: function(reason){
             alert(reason);
           },
           //本地视频流加载完成事件
           localLoaded: function(){
  
           },
           //远程视频加载完成事件
           remoteLoaded: function(){
  
           }
        });

互动初始化conf.resolution参数对应的分辨率和码率对照表

可选值 对应分辨率 对应码率
VIDEO_QUALITY_NORMAL 320x240 250
VIDEO_QUALITY_LOW 160x120 150
VIDEO_QUALITY_MEDIUM 320x240 250
VIDEO_QUALITY_HIGH 480x360 300
VIDEO_QUALITY_360P 640x360 375
VIDEO_QUALITY_480P 640x480 500
VIDEO_QUALITY_540P 960x540 750
VIDEO_QUALITY_720P 960x720 900
VIDEO_QUALITY_720P_0 960x720 900
VIDEO_QUALITY_720P_1 1280x720 1000
VIDEO_QUALITY_SCREEN 1080(适用桌面推流) 1500

conf.profile参数对应的分辨率和码率对照表

可选值 对应分辨率 对应码率 对应帧率
VIDEO_PROFILE_120P_0 [160, 120, 160, 120] [150, 200] [0, 30]
VIDEO_PROFILE_120P_1 [160, 90, 160, 90] [100, 160] [0, 30]
VIDEO_PROFILE_180P_0 [160, 120, 240, 180] [225, 280] [0, 30]
VIDEO_PROFILE_180P_1 [160, 90, 320, 180] [225, 280] [0, 30]
VIDEO_PROFILE_240P_0 [160, 120, 320, 240] [250, 280] [0, 30]
VIDEO_PROFILE_240P_1 [160, 120, 424, 240] [250, 320] [0, 30]
VIDEO_PROFILE_360P_0 [240, 180, 480, 360] [300, 360] [0, 30]
VIDEO_PROFILE_360P_1 [320, 180, 640, 360] [375, 440] [0, 30]
VIDEO_PROFILE_480P_0 [640, 480, 640, 480] [500, 640] [0, 30]
VIDEO_PROFILE_480P_1 [848, 480, 848, 480] [750, 860] [0, 30]
VIDEO_PROFILE_720P_0 [960, 720, 960, 720] [900, 1000] [0, 30]
VIDEO_PROFILE_720P_1 [1280, 720, 1280, 720] [1000, 1100] [0, 30]
VIDEO_PROFILE_720P_DESKTOP [1280, 720, 1280, 720] [600, 800] [0, 15]
VIDEO_PROFILE_1080P_0 [1440, 1080, 1440, 1080] [1200, 1300] [0, 30]
VIDEO_PROFILE_1080P_1 [1920, 1080, 1920, 1080] [1500, 1600] [0, 30]
VIDEO_PROFILE_1080P_DESKTOP [1920, 1080, 1920, 1080] [1150, 1350] [0, 15]

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.resolution =  'VIDEO_QUALITY_480P'; // 桌面共享为:VIDEO_QUALITY_SCREEN
	//调用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

interaction.getUserId

    //获取当前用户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.onApply

    //监听用户申请上麦事件,处理方式一, 直接上麦
    interaction.onApply(function(event){
         event.consent();
    });
    
    /**
    * 监听用户申请上麦事件,处理方式二,调对话框提示,把选择权给用户
    * @param  {object} event 回调事件参数,包含一个属性userId,和两个方法:consent 、 reject
    */
    interaction.onApply(function(event){
        if(confirm('用户:' + event.userId + '申请上麦,同意吗?')){
            //如果同意,调用此方法
            event.consent();
        }else{
            //如果拒绝,调用此方法
            event.reject();
        }
    }); 
    
    
    /**
    * 监听用户申请上麦事件,处理方式三,调对话框,把选择权给用户,并且监听同意&拒绝之后的回调事件
    * @param  {object} event 回调事件参数,包含一个属性userId,和两个方法:consent 、 reject
    */
    interaction.onApply(function(event){
        if(confirm('用户:' + event.userId + '申请上麦,同意吗?')){

            //同意申请,带参数调用方法
            event.consent({
                    //同意申请后成功回调
                    success:function(){
                      //TODO
                    },
                    ////同意申请后失败回调
                    fail:function(reason){
                      //TODO
                    }
                });
        }else{

            //拒绝申请,带参数调用方法
            event.reject({
                    //拒绝申请后成功回调
                    success:function(){
                      //TODO
                    },
                    ////拒绝申请后失败回调
                    fail:function(reason){
                      //TODO
                    }
                });
        }
    }); 
    

23.同意申请上麦

interaction.consentApply

    //简单调用
    interaction.consentApply('用户Id');

    //带参数调用
    /**
    * 同意申请上麦
    * @params {object} userId 用户ID
    * @params {object} success 成功回调
    * @params {object} fail 失败回调
    */
    interaction.consentApply({
        userId:'',
        success: function(userId){
          //TODO
        },
        fail: function(userId){
          //TODO
        }
    });
    

24.拒绝申请上麦

interaction.rejectApply

    //简单调用
    interaction.rejectApply('用户Id');

    //带参数调用
    /**
    * 拒绝申请上麦
    * @params {object} userId 用户ID
    * @params {object} success 成功回调
    * @params {object} fail 失败回调
    */
    interaction.rejectApply({
        userId:'',
        success: function(userId){
          //TODO
        },
        fail: function(userId){
          //TODO
        }
    });
    

25.邀请上麦

interaction.invite

    //简单调用
    interaction.invite('用户ID');
    
    //带参数调用
    /**
    * 邀请上麦
    * @params {object} userId 用户ID
    * @params {object} consent 同意回调
    * @params {object} reject 拒绝回调
    * @params {object} fail 失败回调
    */
    interaction.invite({
        //用户ID
        userId: '',
        //同意回调
        consent: function(userId){
          //TODO
        },
        //拒绝回调
        reject: function(userId){
          //TODO
        },
        //失败回调
        fail: function(reason){
          //TODO
        }
    });
    

26.获取当前互动房间用户列表

interaction.getUsersList


    /**
    * 获取当前互动房间用户列表
    * @params {object} success 成功回调
    * @params {object} fail 失败回调
    * @params {object} update 更新回调
    */
    interaction.getUsersList({
        //成功回调
        success: function(users){
          //TODO
        },
        //失败回调
        fail: function(reason){
          //TODO
        },
        //更新回调
        update: function(){
          //TODO
        }
    });
    

27.将指定用户踢出房间

interaction.deleteUser

    //简单调用
    interaction.deleteUser('用户Id');

    //带参数调用
    /**
    * 将指定用户踢出房间
    * @params {object} userId 要踢出的用户ID,必填,不能为空。
    * @params {object} success 成功回调
    * @params {object} fail 失败回调
    */
    interaction.deleteUser({
        userId:'',
        success: function(result){
          //TODO
        },
        fail: function(result){
          //TODO
        }
    });
    

28.取消踢出指定用户

interaction.unDeleteUser

    //简单调用
    interaction.unDeleteUser('用户ID');
    
    //带参数调用
    /**
    * 取消踢出将指定用户
    * @params {object} userId 要取消踢出的用户ID
    * @params {object} success 成功回调
    * @params {object} fail 失败回调
    */
    interaction.unDeleteUser({
        userId:'',
        success: function(){
          //TODO
        },
        fail: function(){
          //TODO
        }
    })

29.获取被踢用户列表

interaction.getBlackList


    /**
    * 获取当前互动房间黑名单列表
    * @params {object} success 成功回调
    * @params {object} fail 失败回调
    * @params {object} update 更新回调
    */
    interaction.getBlackList({
        //成功回调
        success: function(users){
          //TODO
        },
        //失败回调
        fail: function(reason){
          //TODO
        },
        //更新回调
        update: function(){
          //TODO
        }
    });
    

30.获取旁路布局layout类型

interaction.getBroadCastLayouts

    /**
    *@return {array} 返回可用旁路布局layout类型
    *返回值示例:[{'layout':'CANVAS_LAYOUT_PATTERN_GRID_1','discription':'一人铺满'}]
    */
    interaction.getBroadCastLayouts();

返回值说明:

layout类型 布局说明
CANVAS_LAYOUT_PATTERN_GRID_1 一人铺满
CANVAS_LAYOUT_PATTERN_GRID_2_H 左右两格
CANVAS_LAYOUT_PATTERN_GRID_3_E 正品字
CANVAS_LAYOUT_PATTERN_GRID_3_D 倒品字
CANVAS_LAYOUT_PATTERN_GRID_4_M 2行x2列
CANVAS_LAYOUT_PATTERN_GRID_5_D 2行,上3下2
CANVAS_LAYOUT_PATTERN_GRID_6_E 2行x3列
CANVAS_LAYOUT_PATTERN_GRID_9_E 3行x3列
CANVAS_LAYOUT_PATTERN_FLOAT_2_1DR 大屏铺满,小屏悬浮右下角
CANVAS_LAYOUT_PATTERN_FLOAT_2_1DL 大屏铺满,小屏悬浮左下角
CANVAS_LAYOUT_PATTERN_FLOAT_3_2DL 大屏铺满,2小屏悬浮左下角
CANVAS_LAYOUT_PATTERN_FLOAT_6_5D 大屏铺满,一行5个悬浮于下面
CANVAS_LAYOUT_PATTERN_FLOAT_6_5T 大屏铺满,一行5个悬浮于上面
CANVAS_LAYOUT_PATTERN_TILED_5_1T4D 主次平铺,一行4个位于底部
CANVAS_LAYOUT_PATTERN_TILED_5_1D4T 主次平铺,一行4个位于顶部
CANVAS_LAYOUT_PATTERN_TILED_5_1L4R 主次平铺,一列4个位于右边
CANVAS_LAYOUT_PATTERN_TILED_5_1R4L 主次平铺,一列4个位于左边
CANVAS_LAYOUT_PATTERN_TILED_6_1T5D 主次平铺,一行5个位于底部
CANVAS_LAYOUT_PATTERN_TILED_6_1D5T 主次平铺,一行5个位于顶部
CANVAS_LAYOUT_PATTERN_TILED_9_1L8R 主次平铺,右边为(2列x4行=8个块)
CANVAS_LAYOUT_PATTERN_TILED_9_1R8L 主次平铺,左边为(2列x4行=8个块)
CANVAS_LAYOUT_PATTERN_TILED_13_1L12R 主次平铺,右边为(3列x4行=12个块)
CANVAS_LAYOUT_PATTERN_TILED_17_1TL12GRID 主次平铺,1V16
CANVAS_LAYOUT_PATTERN_CUSTOM 自定义,当使用坐标布局接口时

31.开启旁路直播推流

interaction.startBroadCast

注意:为了保证开启旁路成功,建议将此接口在初始化方法的mixed事件里调用,调用方法见 1.初始化

    //简单调用
    interaction.startBroadCast('直播房间ID');
    
    //带参数调用
    /**
    * 开启旁路推流
    * @params {string} roomId 直播房间ID,必填
    * @params {string} layout 旁路布局,具体可选值,可以通过getBroadCastLayouts 接口来获取,非必填
    * @params {string} resolution 旁路推流分辨率,可选值见下面参照表,非必填
    * @params {string} maxScreenStream,设置屏占比最大的流ID,非必填
    * @params {function} success 成功回调,非必填
    * @params {function} fail 失败回调,非必填
    */
    interaction.startBroadCast({
        roomId:'',
        layout:'',
        resolution:'',
        maxScreenStream:'',
        success:function(result){
          //TODO
        },
        fail: function(reason){
          //TODO
        }
    });

resolution参数,可选值对应的分辨率、码率对照表:

可选值 对应分辨率 对应的码率
BROADCAST_VIDEO_RESOLUTION_NORMAL 720P 1200
BROADCAST_VIDEO_RESOLUTION_480P 480P 800
BROADCAST_VIDEO_RESOLUTION_480P_1 480 800
BROADCAST_VIDEO_RESOLUTION_540P 540P 1000
BROADCAST_VIDEO_RESOLUTION_540P_1 540 800
BROADCAST_VIDEO_RESOLUTION_720P 720P 1200
BROADCAST_VIDEO_RESOLUTION_960P 960P 1200
BROADCAST_VIDEO_RESOLUTION_1080P 1080P 1200

32.停止旁路推流

interaction.stopBroadCast

    //简单调用
    interaction.stopBroadCast('直播房间ID');
    
    //带参数调用
    /**
    * 开启旁路推流
    * @params {object} roomId 直播房间ID,必填
    * @params {object} success 成功回调
    * @params {object} fail 失败回调
    */
    interaction.stopBroadCast({
        roomId:'',
        success:function(result){
          //TODO
        },
        fail: function(reason){
          //TODO
        }
    });

33.用户上麦事件

interaction.onPublish

	/**
    * 用户上麦事件
      @param  {Function}  事件回调函数,返回userId
    */
	interaction.onPublish(function(userId){
		console.info('用户id为['+ userId +']的用户上麦啦!');
	});

34.用户下麦事件

interaction.onUnpublish

	/**
    * 用户下麦事件
      @param  {Function}  事件回调函数,返回userId
    */
	interaction.onUnpublish(function(userId){
		console.info('用户id为['+ userId +']的用户下麦啦!');
	});

35.摄像头预览

interaction.camerasPreview


   	/**
	 * 摄像头预览
	 */
	var camPre = interaction.camerasPreview({
		//默认设备参数配置,缺省为默认设备
		conf:{
                //视频分辨率,Array类型,四个值,第1、3个值为分辨率的宽,2、4 个值为视频的高 
                videoSize: [320,180,320,180]
           },
		//回显容器,必填
		videoNode:'',
		//成功回调
		success:function(){
			
		},
		//失败回调
		fail: function(reason){
			console.log(reason);
		}
	});
	
	camPre.show();//显示预览
	camPre.reset({
		conf:{
                //视频分辨率,Array类型,四个值,第1、3个值为分辨率的宽,2、4 个值为视频的高 
                videoSize: [320,180,320,180]
           }
	});//重置,设备参数配置
	camPre.destroy();//销毁当前览实例对象
	
	

36.销毁互动实例

interaction.destroy


   	/**
	 * 销毁互动实例
	 */
	interaction.destroy();
	

37.获取上下行丢包率

getLossRate


	/**
	 * 获取上下行丢包率
	 * @return {object} 丢包率,返回值为key 、value形式;
	 * 其中,upload为上行丢包率,download为下行丢包率,实例:{ upload:0,download:0 }
	 */
	interaction.getLossRate();
	

38.获取视频设备支持分辨率

getVideoConstraints

    /**
     * 获取视频设备支持分辨率
     * @param  {string}   deviceId 摄像头的deviceId,通过getDevices接口获取,缺省为当前默认摄像头
     * @param  {number}   frameRate  帧率,缺省为25 
     * @param  {function} success 成功回调返回值如:
        [{
          //标签名称
          label: "VIDEO_PROFILE_480P_0",
          //分辨宽度
          width: 640,
          //分辨率高度
          height: 480,
          //屏幕比例
          ratio: "4:3"
        }]

      * @param  {function} fail 失败回调
      */
interaction.getVideoConstraints({
	//非必填,缺省为当前默认摄像头
	deviceId:'XXX',
	success:function(res){
		console.info(res);
    },
	fail:function(reason){
		console.error(reason);
	}
});

//调用方式二,此方法为静态方法,不依赖互动对象VhallInteraction,在未实例化互动对象之前也可用使用。
VhallInteractionTools.getVideoConstraints({
	//非必填,缺省为当前默认摄像头
	deviceId:'XXX',
	success:function(res){
		console.info(res);
    },
	fail:function(reason){
		console.error(reason);
	}
});

39.获取旁路布局的可选分辨率

getBroadCastResolutions

	/**
	 * 获取旁路布局的可选分辨率
	 * @return {object} 旁路布局的可选分辨率,返回值示例:[{'resolution':'BROADCAST_VIDEO_RESOLUTION_NORMAL',description:'说明:[1280, 720],比例:16:9'}]
	 */
	interaction.getBroadCastResolutions();
	

40.关闭远程视频

muteRemoteVideo

	/**
	 * 关闭远程视频,保留音频
	 * @param  {array} users 用户(id),只支持数组类型
	   多个用户则传用户数组,如:['guest1','guest2','guest3']
	 * @return {array}       操作成功的用户(id),如:['guest1','guest3']
	 */
	interaction.muteRemoteVideo(['guest1','guest2','guest3']);

  • 此方法只会关闭当前页面视频显示,不会断开链接,音频会保留。一般于多方场景下,节省资源时使用。
  • 此方法只针对麦上用户有效,也就是说,被关闭视频的用户,下麦后再上麦,视频会打开。如需将某用户视频始终关闭,可以设置初始化参数muteVideoUsers

41.打开远程视频

unmuteRemoteVideo

	/**
	 * 打开远程视频
	 * @param  {array} users 用户(id),只支持数组类型
	 * 多个用户则传用户数组,如:['guest1','guest2','guest3']
	 * @return {array}       操作成功的用户(id),如:['guest1','guest3']
	 */
	interaction.unmuteRemoteVideo(['guest1','guest2','guest3']);
	

此方法一般与muteRemoteVideo配合使用,来动态改变用户视频显示与否,不影响音频。

错误码对照表

code 说明
611001 没有推流权限
611003 缺少roomId
611005 你已经就在房间了
611007 已在推流中
611008 无音频/视频设备
611009 获取推流设备出错
611010 缺少用户id
611011 不能踢出自己
611012 不能踢自己的流
611013 缺少videoNode参数
611014 回显容器未找到
611016 没有指定摄像头
611017 videoNode参数错误
611018 videoNode.local参数对应的容器找不到
611019 videoNode.remote参数对应的容器找不到
611020 videoNode参数错误:模版为custom时,videoNode必须指定local和remote的节点
611021 videoNode参数对应的容器找不到
611022 videoNode参数错误:模版为非custom时,videoNode的值必须时容器Id
611023 互动房间ID不能为空!
611024 需https协议才能支持!
611025 访问摄像头或麦克风被拒绝
611028 权限验证失败
611029 设置旁路布局的模式失败
611031 此用户没用参与当前的互动
611036 重置摄像头时缺少参数
611037 重置摄像头时没有指定摄像头
611038 参数错误
611039 此方法不支持桌面共享
611040 获取视频设备支持分辨率出错
611041 没找到可用视频设备