diff --git a/src/EngineEntrance.js b/src/EngineEntrance.js index a9baa27..49030e8 100644 --- a/src/EngineEntrance.js +++ b/src/EngineEntrance.js @@ -62,9 +62,9 @@ export default class MessageEntrance extends Emiter { constructor() { super(); //sdk 信息 - GlobalConfig.sdkVersion = "v2.20.5.20171023"; + GlobalConfig.sdkVersion = "v2.21.3.20171024"; loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); - + console.log("sdkVersion:" + GlobalConfig.sdkVersion); //设置 let locationProtocol= location.protocol; if(locationProtocol=="https:"){ @@ -92,6 +92,7 @@ export default class MessageEntrance extends Emiter { this.isGetFastestHlsPullCallback = false; //是否HLS拉流地址测试结束 this.isGetFastestRsCallback = false; //是否录制回放HLS拉流地址测试结束 this.saveClassStatusTimer=0;//保存课堂数据的计时器间隔,防止同一瞬间多次提交 + this.joinChannelTimer=0;//加入音视频通道的间隔 //全局的Error处理 this.on(MessageTypes.MCU_ERROR, this._mcuErrorHandler.bind(this)); @@ -307,6 +308,8 @@ export default class MessageEntrance extends Emiter { this.setDebugInfo = this._setDebugInfo.bind(this); //设置debug信息 this.setOpenSendLogToServer = this._setOpenSendLogToServer.bind(this); //设置是否上报日志 + this.reJoinChannel = this._reJoinChannel.bind(this); //重新加入频道 + this.addLog = this._addLog.bind(this); this.addWarn = this._addWarn.bind(this); this.addError = this._addError.bind(this); @@ -1677,11 +1680,11 @@ export default class MessageEntrance extends Emiter { } //离开视频通话频道 - if(GlobalConfig.deviceType==0||GlobalConfig.deviceType==3){ + /* if(GlobalConfig.deviceType==0||GlobalConfig.deviceType==3){ if(_webRtc){ - _webRtc.leaveChannel();; + _webRtc.leaveChannel(); } - } + }*/ //停止推流 if (_video_ape) { @@ -1712,6 +1715,8 @@ export default class MessageEntrance extends Emiter { _mcu.leaveMCU(); GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_3); } + //离开视频通话模块 + this._leaveChannel(); } //获取课堂所有参数(20170727新规则) api/meeting/detail.do? flash中的接口文件是 getClassParam.do @@ -2830,7 +2835,36 @@ export default class MessageEntrance extends Emiter { }); } } + /* + * 重新加入频道 + * */ + _reJoinChannel(_params){ + if(GlobalConfig.appId&&!GlobalConfig.openFlash){ + //先离开频道 + this._leaveChannel(); + //主讲人和老师可以设置旁录 + //加入之前先设置旁录地址,只有直播支持旁路(1路流) + if(_webRtc&&GlobalConfig.isTeachOrAssistant&&GlobalConfig.maxMediaChannels==1){ + let curTimestamp = new Date().getTime(); + let streamId=GlobalConfig.siteId+"_"+GlobalConfig.classId+"_"+GlobalConfig.userId+"_"+curTimestamp; + //传入固定的流Id + let publishData=this._getVideoPublishPath({streamId:streamId}); + loger.log("加入之前先设置旁录地址",publishData); + if(publishData&&publishData.code==0){ + _webRtc.setConfigPublisherUrl(publishData.publishUrl); + let m3u8Stream = _video_ape.getPlayVideoPath({"type": "m3u8", "streamId":streamId}); + let rtmpStream = _video_ape.getPlayVideoPath({"type": "rtmp", "streamId":streamId}); + _webRtc.setRtmpM3u8Path({m3u8Url:m3u8Stream.playUrl,rtmpUrl:rtmpStream.playUrl}); + } + } + clearTimeout(this.joinChannelTimer); + this.joinChannelTimer=setTimeout(()=>{ + //加入音视频通话模块,延迟一秒处理,因为视频需要根据用户列表信息来判断放的位置,太早的话用户列表没有数据 + this._joinChannel({channelId:GlobalConfig.channelId,channelKey:GlobalConfig.channelKey ,uid:GlobalConfig.userUid,info:""+GlobalConfig.userRole}); + },1600); + } + } /* * 加入视频通话 * */ diff --git a/src/apes/WebRtcApe.js b/src/apes/WebRtcApe.js index f955883..0a44cd9 100644 --- a/src/apes/WebRtcApe.js +++ b/src/apes/WebRtcApe.js @@ -416,10 +416,11 @@ class WebRtcApe extends Emiter { } leaveChannel() { - loger.log("离开视频通话频道"); + loger.log("调用离开视频通话频道->isPublish"+this.isPublish); if (!this.client) { return; } + this.unpublish(); this.client.leave(() => { loger.log("离开视频通话频道->成功"); }, (err)=> {