李勇

新增音视频状态字段更新

此 diff 太大无法显示。
... ... @@ -27,7 +27,7 @@ import Server from "config/Server";
import UTF8 from 'utf-8';
let loger = Loger.getLoger('McuClient');
let _sdkInfo = {"version": "v1.14.1.20170505", "author": "www.3mang.com"};
let _sdkInfo = {"version": "v1.15.2.20170507", "author": "www.3mang.com"};
//APE
let _sass;
... ...
... ... @@ -337,7 +337,10 @@ GlobalConfig.speakerVolume=50;//扬声器音量(0-80)
GlobalConfig.micCode=0;//麦克风模式
GlobalConfig.audioRecords=[];
GlobalConfig.videoRecords=[];
GlobalConfig.status=0
GlobalConfig.mobileDirection=0;
GlobalConfig.nodeId=0;//随机生成 mcu中的唯一ID
... ...
... ... @@ -25,6 +25,7 @@ class AudioApe extends Ape {
this.mediaModule=new MediaModule();
this.mediaModule.MEDIA_OBJ_TABLE_ID=ApeConsts.AUDIO_OBJ_TABLE_ID;
this.mediaModule.mediaChannels={};
this.mediaModule.mediaType=ApeConsts.MEDIA_TYPE_AUDIO;
// Ape Models
this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer);
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 {
return nodeInfoRecordPdu;
}
//更新角色数据
updateUserInfo(){
let nodeInfoRecordPdu = this.getNodeInfo();
... ... @@ -669,16 +670,18 @@ class ConferApe extends Ape {
let newNodeData = nodeData;
newNodeData.userData = userDataObj;
//如果是监课,不告诉其他人
if (nodeData.role == ApeConsts.NR_INVISIBLE) {
if (nodeData.role == ApeConsts.NR_INVISIBLE&&GlobalConfig.userRole!=ApeConsts.invisible) {
loger.log("NR_INVISIBLE");
return;
}
if (!rosterExists) {
loger.log("人员加入->",newNodeData);
this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData});
this.emitRosterChange();
} else {
//loger.log("更新人员列表数据,rosterExists已经存在",rosterExists);
loger.log("人员更新信息->",newNodeData);
this._emit(MessageTypes.CLASS_UPDATE_ROSTER, {"nodeId": nodeId, "nodeData": newNodeData});
}
... ... @@ -692,11 +695,38 @@ class ConferApe extends Ape {
//视频模块发生更新,人员状态需要更新
updaterRosterStatus(_param) {
//loger.log("媒体模块发生更新,人员状态需要更新,fromNodeId->",_param.fromNodeId);
//loger.log("媒体模块发生更新,人员状态需要更新,fromNodeId->",_param);
//如果视频消息中channel的占用人 fromNodeId在人员列表中不存在,需要释放这channel,因为这个有可能是之前没释放成功的
if (_param && _param.status == ApeConsts.CHANNEL_STATUS_OPENING && this.rosters[_param.fromNodeId] == null) {
/* if (_param && _param.status == ApeConsts.CHANNEL_STATUS_OPENING && this.rosters[_param.fromNodeId] == null) {
loger.log("媒体模块被占用,占有人已经不存在课堂中,释放Channel,_param->", _param);
this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": _param.fromNodeId});
}*/
if (_param && _param.status == ApeConsts.CHANNEL_STATUS_OPENING) {
if(this.rosters[_param.fromNodeId] == null){
loger.log("媒体模块被占用,占有人已经不存在课堂中,释放Channel,_param->", _param);
this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": _param.fromNodeId});
}
//如果音视频消息是自己的,需要设置麦克风和摄像头状态
if(_param.fromNodeId==GlobalConfig.nodeId){
if(_param.mediaId==ApeConsts.MEDIA_TYPE_AUDIO){
GlobalConfig.openMicrophones=EngineUtils.creatTimestamp();
GlobalConfig.openCamera=0;
}else {
GlobalConfig.openCamera=EngineUtils.creatTimestamp();
GlobalConfig.openMicrophones=GlobalConfig.openCamera;
}
this.updateUserInfo();
}
}else if (_param && _param.status == ApeConsts.CHANNEL_STATUS_RELEASED) {
//如果音视频消息是自己的,需要设置麦克风和摄像头状态
if(_param.fromNodeId==GlobalConfig.nodeId){
GlobalConfig.openCamera=0;
GlobalConfig.openMicrophones=0;
this.updateUserInfo();
}
}
}
... ...
... ... @@ -15,6 +15,7 @@ class MediaModule {
this.needPublishMediaChannel={};//记录准备推流的频道信息
this.mediaChannels = {};
this.maxMediaChannel=0;
this.mediaType=ApeConsts.MEDIA_TYPE_DEFAULT;
this.MEDIA_OBJ_TABLE_ID=0;
}
... ... @@ -204,7 +205,7 @@ class MediaModule {
channelInfo.siteId=GlobalConfig.siteId;
channelInfo.toNodeId=0;
channelInfo.userId=GlobalConfig.userId;
channelInfo.mediaType=ApeConsts.MEDIA_TYPE_DEFAULT;
channelInfo.mediaType=this.mediaType||ApeConsts.MEDIA_TYPE_DEFAULT;
return channelInfo;
}
}
... ...
... ... @@ -24,6 +24,7 @@ class VideoApe extends Ape {
this.mediaModule=new MediaModule();
this.mediaModule.MEDIA_OBJ_TABLE_ID=ApeConsts.VIDEO_OBJ_TABLE_ID;
this.mediaModule.mediaChannels={};
this.mediaModule.mediaType=ApeConsts.MEDIA_TYPE_VIDEO;
// Ape Models
this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer);
... ... @@ -378,7 +379,6 @@ class VideoApe extends Ape {
}else {
loger.warn("视频消息是自己发送的或者是视频消息无效,不需要处理,消息内容如下:");
loger.log(unpackChannelInfo);
}
this._emit(MessageTypes.VIDEO_UPDATE, unpackChannelInfo);
... ...