李勇

增加媒体共享模块的数据更新

此 diff 太大无法显示。
... ... @@ -30,7 +30,7 @@ import MediaSharedApe from 'apes/MediaSharedApe';
import UTF8 from 'utf-8';
let loger = Loger.getLoger('McuClient');
let _sdkInfo = {"version": "v1.30.3.20170602", "author": "www.3mang.com"};
let _sdkInfo = {"version": "v1.30.5.20170605", "author": "www.3mang.com"};
//APE
let _sass;
... ... @@ -1540,7 +1540,7 @@ export default class MessageEntrance extends Emiter {
return;
}
if (_mediaShareApe) {
_mediaShareApe.mediaSharedDelete(_param);
_mediaShareApe.mediaSharedPlay(_param);
}
}
//停止
... ... @@ -1579,26 +1579,24 @@ export default class MessageEntrance extends Emiter {
loger.log("媒体共享模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.sharedMediaList.length);
console.log("媒体共享模数据->", GlobalConfig.sharedMediaList);
//如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传
/* if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0) {
if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0) {
for (let i = 0; i < GlobalConfig.sharedMediaList.length; i++) {
let value = GlobalConfig.sharedMediaList[i];
if (value) {
//loger.log("判断是否需要把提前上传的文档上传到mcu", value);
let paramInfo = {
"pageNum": value.pdfSize,
"fileName": value.name,
"status": 0,
"creatUserId": value.creatUserId,
"creatUserName": value.createUserName,
"url": value.url,
"fileType": value.type,
"relativeUrl": value.relativeLocation,
"url": value.absoluteLocation,
"creatUserId": value.createUserID,
"docId": value.id,
"md5": value.MD5,
"visible": false
"fileId": ""+value.id,
"fileName": value.name,
"seek": 0
};
this._sendDocumentUpload(paramInfo);
this._sendMediaSharedUpload(paramInfo);
}
}
}*/
}
}
//录制回放相关的处理------------------------------------------------
... ...
... ... @@ -567,8 +567,7 @@ class ConferApe extends Ape {
tableUpdateHandler(owner, itemIdx, itemData) {
try {
let model = this.unPackPdu(owner, itemIdx, itemData);
loger.log('课堂数据更新');
loger.log(model);
loger.log('课堂数据更新->',model);
//处理课堂更新的信息
if (model && model.classStatusInfo) {
... ... @@ -579,8 +578,11 @@ class ConferApe extends Ape {
this._emit(MessageTypes.STOP_ALL_MEDIA_PUBLISH);
}
}
//通知应用层更新课堂状态
this._emit(MessageTypes.CLASS_UPTATE_STATUS, GlobalConfig.classStatusInfo);
let classInfo=GlobalConfig.classStatusInfo;
loger.log('通知应用层更新课堂状态->CLASS_UPTATE_STATUS')
this._emit(MessageTypes.CLASS_UPTATE_STATUS,classInfo);
//如果MCU已经断开连接,停止计时器
if (!this.mcu.connected) {
... ... @@ -596,8 +598,8 @@ class ConferApe extends Ape {
//停止计时
this.stopTimerCounter();
}
} catch (e) {
loger.warn('ConferApe table update got exception. itemIdx', itemIdx);
} catch (err) {
loger.warn('ConferApe table update got exception->err', err.message);
}
}
... ...
... ... @@ -145,98 +145,14 @@ class MediaSharedApe extends Ape {
loger.log("发送更新媒体文件.itemIdx=" + tableItemPdu.itemIdx);
this.sendUniform(adapterPdu, true);
}
//获取媒体文件的完整地址和所有图片
getMediaSharedAddress(_param){
if (_param == null || _param.url == null || _param.itemIdx ==null) {
loger.warn('获取媒体文件完整地址->传递的参数不正确->', _param);
return {"code":ApeConsts.RETURN_FAILED, "data": "获取媒体文件时传递的参数不对"};
}
let fullPath='';//媒体文件路径地址
let pageNum=1;//总页数
let docType="";//媒体文件地址的后缀类型
let fileType="";//媒体文件的原始类型
let docItem=this.mediaSharedList[_param.itemIdx];
if(docItem){
fullPath=docItem.url||"";
pageNum=docItem.pageNum||1;
fileType=docItem.fileType||""
}else {
fullPath =_param.url;
}
//获取当前媒体文件的后缀名
docType=this._getMediaType(fullPath);
let substrFullPath=this._getMediaPath(fullPath);//获取去掉后缀和文件名的地址,需要获取同目录下其他文件
let imagesArr=[];
let htmlPath="";
let pdfPath="";
//根据文件后缀名,生成对应的访问地址
if(docType=="jpg"||docType=="png"||docType=="swf"||docType=="pdf"||docType=="doc"||docType=="pptx"){
//页数从1开始
for (let i = 1; i <=pageNum; i++) {
imagesArr.push(substrFullPath + "/" + i + ".jpg");
}
}
if(docType=="swf"||docType=="pdf"||docType=="doc"||docType=="pptx"){
pdfPath=fullPath.replace(/\.swf/g, ".pdf")||"";
}
//动态PPT
if(docType=="html"){
htmlPath=fullPath;
}
//返回媒体文件第所有地址
return {'code':ApeConsts.RETURN_SUCCESS, 'data': '','docFullAddress':{
'images':imagesArr,
'pdf':pdfPath,
'html':htmlPath
}};
}
_getMediaType(_fullPath){
if(!_fullPath){
return "";
}
if(_fullPath.lastIndexOf(".jpg")>=0){
return "jpg";
}
if(_fullPath.lastIndexOf(".png")>=0){
return "png";
}
if(_fullPath.lastIndexOf(".swf")>=0){
return "swf";
}
if(_fullPath.lastIndexOf(".pdf")>=0){
return "pdf";
}
if(_fullPath.lastIndexOf(".doc")>=0){
return "doc";
}
if(_fullPath.lastIndexOf(".html")>=0){
return "html";
}
if(_fullPath.lastIndexOf(".pptx")>=0){
return "pptx";
}
return "";
}
//获取去掉文件名和后缀名的地址 http://www.xxx.xxx/image/aa.jpg -->http://www.xxx.xxx/image/
_getMediaPath(_fullPath){
if(!_fullPath){
return "";
}
var lastIndex = _fullPath.lastIndexOf("/");
if (lastIndex > 0) {
return _fullPath.substr(0, lastIndex);
}
return _fullPath;
}
//组织完整的媒体文件信息,包含上传时的信息和转换后的完整地址信息
_mediaSharedPackFullInfo(_itemDataInfo){
let itemDataInfo=_itemDataInfo;
let getDocAddress=this.getMediaSharedAddress(_itemDataInfo);
if(itemDataInfo.seek==null){
itemDataInfo.seek=1;
}
/*let getDocAddress=this.getMediaSharedAddress(_itemDataInfo);
if(getDocAddress.code==ApeConsts.RETURN_SUCCESS){
itemDataInfo.images=getDocAddress.docFullAddress.images||[];
itemDataInfo.pdf=getDocAddress.docFullAddress.pdf||"";
... ... @@ -245,8 +161,8 @@ class MediaSharedApe extends Ape {
itemDataInfo.images=[];
itemDataInfo.pdf='';
itemDataInfo.html='';
}
loger.log('docPackFullInfo->', itemDataInfo);
}*/
loger.log('mediaPackFullInfo->', itemDataInfo);
return itemDataInfo;
}
//更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次
... ... @@ -281,17 +197,17 @@ class MediaSharedApe extends Ape {
return;
}
if (paramInfo.itemIdx == GlobalConfig.activeMediaId && GlobalConfig.activeMediaId != 0) {
/* if (paramInfo.itemIdx == GlobalConfig.activeMediaId && GlobalConfig.activeMediaId != 0) {
loger.warn('媒体文件已经显示', paramInfo.itemIdx, GlobalConfig.activeMediaId);
return;
}
}*/
//更新切换之前的媒体文件的数据,要显示当前切换的媒体文件,上一个媒体文件需要隐藏
let oldPduDataModel;
if (GlobalConfig.activeMediaId != 0) {
oldPduDataModel = this.mediaSharedList[GlobalConfig.activeMediaId];
if (oldPduDataModel) {
oldPduDataModel.status = 1;//设置为不可见
oldPduDataModel.status = 0;//设置为不可见
}
}
... ... @@ -312,18 +228,64 @@ class MediaSharedApe extends Ape {
this.updaterMediaShared(pduDataModel, pduDataModel.itemIdx);
//更新上一个媒体文件 隐藏
if (oldPduDataModel) {
if (oldPduDataModel&&oldPduDataModel.itemIdx!=pduDataModel.itemIdx) {
this.updaterMediaShared(oldPduDataModel, oldPduDataModel.itemIdx);
}
}
//停止媒体文件
mediaSharedStop(paramInfo) {
loger.log('停止媒体文件->', paramInfo);
if (GlobalConfig.isRecordPlayBack) {
loger.warn('录制回放状态不允许停止媒体文件');
return;
}
if (paramInfo == null || paramInfo.itemIdx == null) {
loger.warn('停止媒体文件,参数错误', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//获取已经存在的数据
let pduDataModel = this.mediaSharedList[paramInfo.itemIdx];
if (pduDataModel == null) {
loger.warn('停止媒体文件,媒体文件不存在', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//更新当前选择的媒体文件数据的字段
pduDataModel.status = 0;//默认是0
//更新当前选择的媒体文件
this.updaterMediaShared(pduDataModel, pduDataModel.itemIdx);
}
//暂停媒体文件
mediaSharedPause(paramInfo) {
loger.log('暂停媒体文件->', paramInfo);
if (GlobalConfig.isRecordPlayBack) {
loger.warn('录制回放-》暂停媒体文件');
return;
}
if (paramInfo == null || paramInfo.itemIdx == null) {
loger.warn('暂停媒体文件,参数错误', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//获取已经存在的数据
let pduDataModel = this.mediaSharedList[paramInfo.itemIdx];
if (pduDataModel == null) {
loger.warn('暂停媒体文件,媒体文件不存在', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//更新当前选择的媒体文件数据的字段
pduDataModel.status = 2;//默认是0
//更新当前选择的媒体文件
this.updaterMediaShared(pduDataModel, pduDataModel.itemIdx);
}
//媒体文件SEEK
mediaSharedSeek(paramInfo) {
... ... @@ -425,7 +387,7 @@ class MediaSharedApe extends Ape {
if (GlobalConfig.isRecordPlayBack || !GlobalConfig.isHost || GlobalConfig.activeMediaId > 0) {
return;
}
/*
let tempDocItemIdx;//临时记录媒体文件数据,用于显示默认媒体文件
for (let key in this.mediaSharedList) {
tempDocItemIdx= this.mediaSharedList[key];
... ... @@ -439,7 +401,7 @@ class MediaSharedApe extends Ape {
//选择完成就跳出循环
return;
}
}
}*/
}
onJoinChannelHandlerSuccess() {
... ... @@ -482,6 +444,17 @@ class MediaSharedApe extends Ape {
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return null;
}
/* optional uint32 item_idx=1;//唯一标识
optional uint32 owner=2;
optional uint32 from=3;
optional string file_type=4;
optional string creat_user_id=5;//创建文件userid
optional string url =6;//文件地址
optional uint32 status=7;//状态0停止 1播放 2暂停
optional string fileId=8;//文件在服务器数据库中的唯一id
optional string file_name=9;//文件的名字
optional uint32 seek=10;//seek*/
//判断type类型,根据type设置不同的参数
let pduDataModel = new pdu['RCMediaSharedSendDataModelPdu'];
pduDataModel.itemIdx = _itemIdx;
... ... @@ -493,6 +466,7 @@ class MediaSharedApe extends Ape {
pduDataModel.status = _param.status || 0;
pduDataModel.fileId = _param.fileId || "";//媒体文件在服务器数据库中的唯一id,必须有
pduDataModel.fileName = _param.fileName || "media_" + _itemIdx;//媒体文件的名字
pduDataModel.seek= parseInt(_param.seek) ||1;
return pduDataModel;
}
... ...
... ... @@ -754,6 +754,7 @@ message RCMediaSharedSendDataModelPdu {
optional uint32 status=7;//状态0停止 1播放 2暂停
optional string fileId=8;//文件在服务器数据库中的唯一id
optional string file_name=9;//文件的名字
optional uint32 seek=10;//seek
}
message RCDocBroadcastDataRequestPdu {
... ...