李勇

新增音视频状态字段更新

此 diff 太大无法显示。
@@ -27,7 +27,7 @@ import Server from "config/Server"; @@ -27,7 +27,7 @@ import Server from "config/Server";
27 import UTF8 from 'utf-8'; 27 import UTF8 from 'utf-8';
28 28
29 let loger = Loger.getLoger('McuClient'); 29 let loger = Loger.getLoger('McuClient');
30 -let _sdkInfo = {"version": "v1.14.1.20170505", "author": "www.3mang.com"}; 30 +let _sdkInfo = {"version": "v1.15.2.20170507", "author": "www.3mang.com"};
31 31
32 //APE 32 //APE
33 let _sass; 33 let _sass;
@@ -337,7 +337,10 @@ GlobalConfig.speakerVolume=50;//扬声器音量(0-80) @@ -337,7 +337,10 @@ GlobalConfig.speakerVolume=50;//扬声器音量(0-80)
337 GlobalConfig.micCode=0;//麦克风模式 337 GlobalConfig.micCode=0;//麦克风模式
338 338
339 339
340 - 340 +GlobalConfig.audioRecords=[];
  341 +GlobalConfig.videoRecords=[];
  342 +GlobalConfig.status=0
  343 +GlobalConfig.mobileDirection=0;
341 344
342 345
343 GlobalConfig.nodeId=0;//随机生成 mcu中的唯一ID 346 GlobalConfig.nodeId=0;//随机生成 mcu中的唯一ID
@@ -25,6 +25,7 @@ class AudioApe extends Ape { @@ -25,6 +25,7 @@ class AudioApe extends Ape {
25 this.mediaModule=new MediaModule(); 25 this.mediaModule=new MediaModule();
26 this.mediaModule.MEDIA_OBJ_TABLE_ID=ApeConsts.AUDIO_OBJ_TABLE_ID; 26 this.mediaModule.MEDIA_OBJ_TABLE_ID=ApeConsts.AUDIO_OBJ_TABLE_ID;
27 this.mediaModule.mediaChannels={}; 27 this.mediaModule.mediaChannels={};
  28 + this.mediaModule.mediaType=ApeConsts.MEDIA_TYPE_AUDIO;
28 // Ape Models 29 // Ape Models
29 this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer); 30 this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer);
30 this.registerObj(pdu.RCPDU_REG_REGISTER_TABLE, ApeConsts.AUDIO_OBJ_TABLE_ID, ApeConsts.AUDIO_OBJ_TABLE_NAME, ApeConsts.AUDIO_OBJ_TABLE_TAG, 0, new ArrayBuffer); 31 this.registerObj(pdu.RCPDU_REG_REGISTER_TABLE, ApeConsts.AUDIO_OBJ_TABLE_ID, ApeConsts.AUDIO_OBJ_TABLE_NAME, ApeConsts.AUDIO_OBJ_TABLE_TAG, 0, new ArrayBuffer);
@@ -122,6 +122,7 @@ class ConferApe extends Ape { @@ -122,6 +122,7 @@ class ConferApe extends Ape {
122 122
123 return nodeInfoRecordPdu; 123 return nodeInfoRecordPdu;
124 } 124 }
  125 +
125 //更新角色数据 126 //更新角色数据
126 updateUserInfo(){ 127 updateUserInfo(){
127 let nodeInfoRecordPdu = this.getNodeInfo(); 128 let nodeInfoRecordPdu = this.getNodeInfo();
@@ -669,16 +670,18 @@ class ConferApe extends Ape { @@ -669,16 +670,18 @@ class ConferApe extends Ape {
669 let newNodeData = nodeData; 670 let newNodeData = nodeData;
670 newNodeData.userData = userDataObj; 671 newNodeData.userData = userDataObj;
671 //如果是监课,不告诉其他人 672 //如果是监课,不告诉其他人
672 - if (nodeData.role == ApeConsts.NR_INVISIBLE) { 673 + if (nodeData.role == ApeConsts.NR_INVISIBLE&&GlobalConfig.userRole!=ApeConsts.invisible) {
673 loger.log("NR_INVISIBLE"); 674 loger.log("NR_INVISIBLE");
674 return; 675 return;
675 } 676 }
676 if (!rosterExists) { 677 if (!rosterExists) {
  678 + loger.log("人员加入->",newNodeData);
677 this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData}); 679 this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData});
678 this.emitRosterChange(); 680 this.emitRosterChange();
679 681
680 } else { 682 } else {
681 //loger.log("更新人员列表数据,rosterExists已经存在",rosterExists); 683 //loger.log("更新人员列表数据,rosterExists已经存在",rosterExists);
  684 + loger.log("人员更新信息->",newNodeData);
682 this._emit(MessageTypes.CLASS_UPDATE_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData}); 685 this._emit(MessageTypes.CLASS_UPDATE_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData});
683 } 686 }
684 687
@@ -692,11 +695,38 @@ class ConferApe extends Ape { @@ -692,11 +695,38 @@ class ConferApe extends Ape {
692 695
693 //视频模块发生更新,人员状态需要更新 696 //视频模块发生更新,人员状态需要更新
694 updaterRosterStatus(_param) { 697 updaterRosterStatus(_param) {
695 - //loger.log("媒体模块发生更新,人员状态需要更新,fromNodeId->",_param.fromNodeId); 698 + //loger.log("媒体模块发生更新,人员状态需要更新,fromNodeId->",_param);
696 //如果视频消息中channel的占用人 fromNodeId在人员列表中不存在,需要释放这channel,因为这个有可能是之前没释放成功的 699 //如果视频消息中channel的占用人 fromNodeId在人员列表中不存在,需要释放这channel,因为这个有可能是之前没释放成功的
697 - if (_param && _param.status == ApeConsts.CHANNEL_STATUS_OPENING && this.rosters[_param.fromNodeId] == null) { 700 + /* if (_param && _param.status == ApeConsts.CHANNEL_STATUS_OPENING && this.rosters[_param.fromNodeId] == null) {
698 loger.log("媒体模块被占用,占有人已经不存在课堂中,释放Channel,_param->", _param); 701 loger.log("媒体模块被占用,占有人已经不存在课堂中,释放Channel,_param->", _param);
699 this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": _param.fromNodeId}); 702 this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": _param.fromNodeId});
  703 + }*/
  704 +
  705 + if (_param && _param.status == ApeConsts.CHANNEL_STATUS_OPENING) {
  706 + if(this.rosters[_param.fromNodeId] == null){
  707 + loger.log("媒体模块被占用,占有人已经不存在课堂中,释放Channel,_param->", _param);
  708 + this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": _param.fromNodeId});
  709 + }
  710 +
  711 + //如果音视频消息是自己的,需要设置麦克风和摄像头状态
  712 + if(_param.fromNodeId==GlobalConfig.nodeId){
  713 + if(_param.mediaId==ApeConsts.MEDIA_TYPE_AUDIO){
  714 + GlobalConfig.openMicrophones=EngineUtils.creatTimestamp();
  715 + GlobalConfig.openCamera=0;
  716 + }else {
  717 + GlobalConfig.openCamera=EngineUtils.creatTimestamp();
  718 + GlobalConfig.openMicrophones=GlobalConfig.openCamera;
  719 + }
  720 + this.updateUserInfo();
  721 + }
  722 +
  723 + }else if (_param && _param.status == ApeConsts.CHANNEL_STATUS_RELEASED) {
  724 + //如果音视频消息是自己的,需要设置麦克风和摄像头状态
  725 + if(_param.fromNodeId==GlobalConfig.nodeId){
  726 + GlobalConfig.openCamera=0;
  727 + GlobalConfig.openMicrophones=0;
  728 + this.updateUserInfo();
  729 + }
700 } 730 }
701 } 731 }
702 732
@@ -15,6 +15,7 @@ class MediaModule { @@ -15,6 +15,7 @@ class MediaModule {
15 this.needPublishMediaChannel={};//记录准备推流的频道信息 15 this.needPublishMediaChannel={};//记录准备推流的频道信息
16 this.mediaChannels = {}; 16 this.mediaChannels = {};
17 this.maxMediaChannel=0; 17 this.maxMediaChannel=0;
  18 + this.mediaType=ApeConsts.MEDIA_TYPE_DEFAULT;
18 this.MEDIA_OBJ_TABLE_ID=0; 19 this.MEDIA_OBJ_TABLE_ID=0;
19 } 20 }
20 21
@@ -204,7 +205,7 @@ class MediaModule { @@ -204,7 +205,7 @@ class MediaModule {
204 channelInfo.siteId=GlobalConfig.siteId; 205 channelInfo.siteId=GlobalConfig.siteId;
205 channelInfo.toNodeId=0; 206 channelInfo.toNodeId=0;
206 channelInfo.userId=GlobalConfig.userId; 207 channelInfo.userId=GlobalConfig.userId;
207 - channelInfo.mediaType=ApeConsts.MEDIA_TYPE_DEFAULT; 208 + channelInfo.mediaType=this.mediaType||ApeConsts.MEDIA_TYPE_DEFAULT;
208 return channelInfo; 209 return channelInfo;
209 } 210 }
210 } 211 }
@@ -24,6 +24,7 @@ class VideoApe extends Ape { @@ -24,6 +24,7 @@ class VideoApe extends Ape {
24 this.mediaModule=new MediaModule(); 24 this.mediaModule=new MediaModule();
25 this.mediaModule.MEDIA_OBJ_TABLE_ID=ApeConsts.VIDEO_OBJ_TABLE_ID; 25 this.mediaModule.MEDIA_OBJ_TABLE_ID=ApeConsts.VIDEO_OBJ_TABLE_ID;
26 this.mediaModule.mediaChannels={}; 26 this.mediaModule.mediaChannels={};
  27 + this.mediaModule.mediaType=ApeConsts.MEDIA_TYPE_VIDEO;
27 28
28 // Ape Models 29 // Ape Models
29 this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer); 30 this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer);
@@ -378,7 +379,6 @@ class VideoApe extends Ape { @@ -378,7 +379,6 @@ class VideoApe extends Ape {
378 }else { 379 }else {
379 loger.warn("视频消息是自己发送的或者是视频消息无效,不需要处理,消息内容如下:"); 380 loger.warn("视频消息是自己发送的或者是视频消息无效,不需要处理,消息内容如下:");
380 loger.log(unpackChannelInfo); 381 loger.log(unpackChannelInfo);
381 -  
382 } 382 }
383 383
384 this._emit(MessageTypes.VIDEO_UPDATE, unpackChannelInfo); 384 this._emit(MessageTypes.VIDEO_UPDATE, unpackChannelInfo);