李勇

1.课堂初始化接口增加是否是H5的字段;2.伴音和媒体共享模块SDK增加seek间隔处理,定期5秒同步一次数据,如果两次更新的数据中seek差值和两次消息的时间差 小于5秒不需要同步

... ... @@ -35,7 +35,7 @@ import QuestionApe from 'apes/QuestionApe';
import UTF8 from 'utf-8';
let loger = Loger.getLoger('McuClient');
let _sdkInfo = { "version": "v1.46.1.20170722", "author": "www.3mang.com" };
let _sdkInfo = { "version": "v1.48.2.20170723", "author": "www.3mang.com" };
//APE
let _sass;
... ... @@ -412,7 +412,7 @@ export default class MessageEntrance extends Emiter {
//Sass
//初始化
_init(_param) {
//{"classId":"1653304953","portal":"112.126.80.182:80","userRole":"normal","userId":0}
//{"classId":"1653304953","portal":"112.126.80.182:80","userRole":"normal","userId":0,isH5:false}
//判断传入的参数是否存在
if (_param == null || EngineUtils.isEmptyObject(_param)) {
loger.error('初始化课堂失败->参数错误', _param);
... ... @@ -431,6 +431,11 @@ export default class MessageEntrance extends Emiter {
GlobalConfig.isRecordPlayBack = false; //设置为非录制回放状态
GlobalConfig.classId = parseInt(_param.classId);
GlobalConfig.portal = _param.portal;
GlobalConfig.isH5=_param.isH5||false;//外部传入的参数,是否是H5
if(GlobalConfig.isH5==true){
GlobalConfig.platform = 3;//3是H5
loger.warn("设备类型是H5");
}
//GlobalConfig.userId = _param.userId || "0";
//如果没有名字,随机起一个名字
GlobalConfig.userName = _param.userName || "user_" + (new Date().getTime() % 1000000);
... ...
... ... @@ -20,7 +20,7 @@ class MediaSharedApe extends Ape {
ApeConsts.MEDIA_SESSION_NAME,
ApeConsts.MEDIA_SESSION_TAG
);
this.lastActiveData=null;//记录最后一次收到的激活的数据
this.mediaSharedList = {};//记录媒体数据
// Ape Models
this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer);
... ... @@ -166,6 +166,7 @@ class MediaSharedApe extends Ape {
//清除当前媒体文件模块的数据
clearData(){
loger.log("clearData->")
this.lastActiveData=null;
this.mediaSharedList={};
GlobalConfig.activeMediaId=0;
GlobalConfig.activeMediaSeek=1;
... ... @@ -344,7 +345,9 @@ class MediaSharedApe extends Ape {
loger.log('添加媒体文件->设置当前激活的媒体文件id');
}
let getMediaPackFullInfo= this._mediaSharedPackFullInfo(itemDataInfo);
this._emit(MessageTypes.MEDIA_SHARED_UPDATE, getMediaPackFullInfo);
//更新数据,发送给应用层
this._emit(MessageTypes.MEDIA_SHARED_UPDATE, getMediaPackFullInfo);
}
}
//媒体文件数据更新完毕,如果当前没有显示的媒体文件,默认选择一个显示
... ... @@ -364,6 +367,9 @@ class MediaSharedApe extends Ape {
GlobalConfig.activeMediaSeek = 1;//当前激活的媒体文件的当前页
loger.log('删除媒体文件数据->清除当前显示的媒体文件');
}
if(this.lastActiveData&&this.lastActiveData.itemIdx== itemIdxs[i]){
this.lastActiveData=null;
}
this._emit(MessageTypes.MEDIA_SHARED_DELETE, {"itemIdx": itemIdxs[i]});
delete this.mediaSharedList[itemIdxs[i]];
}
... ... @@ -389,9 +395,39 @@ class MediaSharedApe extends Ape {
loger.log('更新媒体文件->设置当前激活的媒体文件id->', GlobalConfig.activeMediaId, "curPageNum->", GlobalConfig.activeMediaSeek);
}
let getMediaPackFullInfo= this._mediaSharedPackFullInfo(itemDataInfo);
this._emit(MessageTypes.MEDIA_SHARED_UPDATE, getMediaPackFullInfo);
//如果上一次播放的文件和当前播放的文件是同一个,判断一下seek的间隔,如果间隔小于5就不需要再更新数据
//首先判断音量值是否发生改变
if(this.lastActiveData&&this.lastActiveData.status==1){
if(getMediaPackFullInfo&&
getMediaPackFullInfo.status==1&&
getMediaPackFullInfo.mediaVolume==this.lastActiveData.mediaVolume){
let timeDistance=Math.abs(new Date().getTime()-parseInt(this.lastActiveData.time))/1000;
let seekDistance=Math.abs(getMediaPackFullInfo.seek-this.lastActiveData.seek)-timeDistance;
if(seekDistance<=5){
//记录最后一次的数据
loger.warn("媒体共享更新数据->数据只有SEEK发生改变,低于5秒不需要再更新->timeDistance:"+timeDistance+"->seekDistance"+seekDistance);
//记录最后一次激活的数据
this.lastActiveData=getMediaPackFullInfo||{};
this.lastActiveData.time=new Date().getTime();
return;
}
}
}
this._emit(MessageTypes.MEDIA_SHARED_UPDATE, getMediaPackFullInfo);
if(getMediaPackFullInfo.status==1){
this.lastActiveData=getMediaPackFullInfo;
this.lastActiveData.time=new Date().getTime();
}else{
//如果状态发生改变就清除最后一次的记录
if( this.lastActiveData&& this.lastActiveData.itemIdx==getMediaPackFullInfo.itemIdx){
this.lastActiveData=null;
}
}
} else {
loger.log('更新媒体文件-> 数据无效--> itemIdx', itemIdx);
loger.log('更新媒体文件-> 数据无效--> itemIdx');
}
}
this._showDefaultMeida();
... ...
// //////////////////////////////////////////////////////////////////////////////
//
// 媒体共享模块
// 伴音共享模块
// //////////////////////////////////////////////////////////////////////////////
import Ape from './Ape';
... ... @@ -20,8 +20,8 @@ class MusicSharedApe extends Ape {
ApeConsts.MUSIC_SESSION_NAME,
ApeConsts.MUSIC_SESSION_TAG
);
this.musicSharedList = {}; //记录媒体数据
this.lastActiveData=null;
this.musicSharedList = {}; //记录伴音数据
// Ape Models
this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer);
... ... @@ -29,24 +29,24 @@ class MusicSharedApe extends Ape {
}
/////////////发送数据操作//////////////////////////////////////////////////////
//上传媒体文件
//上传伴音文件
musicSharedUpload(paramInfo) {
if (paramInfo == null || EngineUtils.isEmptyObject(paramInfo)) {
loger.warn('上传媒体文件->失败->参数错误->', paramInfo);
loger.warn('上传伴音文件->失败->参数错误->', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//判断媒体文件是否已经存在,每个媒体文件都有唯一的fileId,如果已经同步的媒体文件中存在相同的fileId就不需要再同步
//判断伴音文件是否已经存在,每个伴音文件都有唯一的fileId,如果已经同步的伴音文件中存在相同的fileId就不需要再同步
if (this.checkMusicSharedId(paramInfo.fileId)) {
//媒体文件已经存在相同的fileId,不需要同步上传
loger.warn('上传媒体文件->失败->媒体文件档的fileId无效或已经存在相同的fileId不需要上传');
//伴音文件已经存在相同的fileId,不需要同步上传
loger.warn('上传伴音文件->失败->伴音文件档的fileId无效或已经存在相同的fileId不需要上传');
return;
}
let itemIdx = EngineUtils.creatSoleNumberFromTimestamp(); //
let pduDataModel = this.packPdu(paramInfo, itemIdx);
if (pduDataModel == null) {
loger.log('上传媒体文件->失败->数据无效');
loger.log('上传伴音文件->失败->数据无效');
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
... ... @@ -78,11 +78,11 @@ class MusicSharedApe extends Ape {
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
adapterPdu.item.push(adapterItemPdu);
loger.log("上传媒体文件->发送->itemIdx=" + tableItemPdu.itemIdx);
loger.log("上传伴音文件->发送->itemIdx=" + tableItemPdu.itemIdx);
this.sendUniform(adapterPdu, true);
}
//删除媒体文件
//删除伴音文件
musicSharedDelete(paramInfo) {
let tableDeleteItemPdu = new pdu['RCRegistryTableDeleteItemPdu'];
tableDeleteItemPdu.type = pdu.RCPDU_REG_TABLE_DELETE_PDU; //
... ... @@ -113,7 +113,7 @@ class MusicSharedApe extends Ape {
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return null;
}
loger.log("媒体文件->更新 ", _pduDataModel);
loger.log("伴音文件->更新 ", _pduDataModel);
let pduDataModel = this.packPdu(_pduDataModel, _itemIdx);
let tableItemPdu = new pdu['RCRegistryTableItemPdu'];
... ... @@ -142,11 +142,11 @@ class MusicSharedApe extends Ape {
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
adapterPdu.item.push(adapterItemPdu);
loger.log("发送更新媒体文件.itemIdx=" + tableItemPdu.itemIdx);
loger.log("发送更新伴音文件.itemIdx=" + tableItemPdu.itemIdx);
this.sendUniform(adapterPdu, true);
}
//组织完整的媒体文件信息,包含上传时的信息和转换后的完整地址信息
//组织完整的伴音文件信息,包含上传时的信息和转换后的完整地址信息
_musicSharedPackFullInfo(_itemDataInfo) {
let itemDataInfo = _itemDataInfo;
if (!itemDataInfo.seek) {
... ... @@ -156,27 +156,28 @@ class MusicSharedApe extends Ape {
return itemDataInfo;
}
//更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次
//更新伴音文件模块的录制信息,每次开启录制的时候需要把当前伴音文件的信息更新一次
updaterRecordApeStatus(_param) {
loger.warn("录制状态发送改变->更新当前的媒体文件数据->fileId:", GlobalConfig.activeMusicId, 'page:', GlobalConfig.activeMusicSeek);
loger.warn("录制状态发送改变->更新当前的伴音文件数据->fileId:", GlobalConfig.activeMusicId, 'page:', GlobalConfig.activeMusicSeek);
this.musicSharedSeek({
"itemIdx": GlobalConfig.activeMusicId,
"seek": GlobalConfig.activeMusicSeek
});
}
//清除当前媒体文件模块的数据
//清除当前伴音文件模块的数据
clearData() {
loger.log("clearData->")
this.lastActiveData=null;
this.musicSharedList = {};
GlobalConfig.activeMusicId = 0;
GlobalConfig.activeMusicSeek = 1;
}
//更新媒体文件(播放,暂停,停止,seek)
//更新伴音文件(播放,暂停,停止,seek)
musicSharedUpdate(_param) {
if (_param == null || _param.itemIdx == null) {
loger.warn('媒体文件更新失败->参数错误', _param);
loger.warn('伴音文件更新失败->参数错误', _param);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
... ... @@ -184,39 +185,39 @@ class MusicSharedApe extends Ape {
//获取已经存在的数据
let pduDataModel = this.musicSharedList[_param.itemIdx];
if (pduDataModel == null) {
loger.warn('更新媒体文件->媒体文件不存在', _param);
loger.warn('更新伴音文件->伴音文件不存在', _param);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//更新当前选择的媒体文件数据的字段
//更新当前选择的伴音文件数据的字段
pduDataModel.status = parseInt(_param.status) || 0; //默认是0
pduDataModel.seek = parseInt(_param.seek) || 1;
pduDataModel.musicVolume = parseInt(_param.musicVolume) || 0;
//更新当前选择的媒体文件
//更新当前选择的伴音文件
this.updaterMusicShared(pduDataModel, pduDataModel.itemIdx);
}
//播放媒体文件
//播放伴音文件
musicSharedPlay(paramInfo) {
loger.log('切换媒体文件->', paramInfo);
loger.log('切换伴音文件->', paramInfo);
if (GlobalConfig.isRecordPlayBack) {
loger.warn('录制回放状态不允许切换媒体文件');
loger.warn('录制回放状态不允许切换伴音文件');
return;
}
if (paramInfo == null || paramInfo.itemIdx == null) {
loger.warn('切换媒体文件失败,参数错误', paramInfo);
loger.warn('切换伴音文件失败,参数错误', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
/* if (paramInfo.itemIdx == GlobalConfig.activeMusicId && GlobalConfig.activeMusicId != 0) {
loger.warn('媒体文件已经显示', paramInfo.itemIdx, GlobalConfig.activeMusicId);
loger.warn('伴音文件已经显示', paramInfo.itemIdx, GlobalConfig.activeMusicId);
return;
}*/
//更新切换之前的媒体文件的数据,要显示当前切换的媒体文件,上一个媒体文件需要隐藏
//更新切换之前的伴音文件的数据,要显示当前切换的伴音文件,上一个伴音文件需要隐藏
let oldPduDataModel;
if (GlobalConfig.activeMusicId != 0) {
oldPduDataModel = this.musicSharedList[GlobalConfig.activeMusicId];
... ... @@ -229,36 +230,36 @@ class MusicSharedApe extends Ape {
//获取已经存在的数据
let pduDataModel = this.musicSharedList[paramInfo.itemIdx];
if (pduDataModel == null) {
loger.warn('切换媒体文件失败,媒体文件不存在', paramInfo);
loger.warn('切换伴音文件失败,伴音文件不存在', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//更新当前选择的媒体文件数据的字段
//更新当前选择的伴音文件数据的字段
pduDataModel.status = paramInfo.status || 0; //默认是0
pduDataModel.seek = paramInfo.seek || 1;
pduDataModel.musicVolume = parseInt(paramInfo.musicVolume) || 0;
//loger.log('切换媒体文件,当前媒体文件和上一个显示的媒体文件都需要更新状态');
//loger.log('切换伴音文件,当前伴音文件和上一个显示的伴音文件都需要更新状态');
loger.log({ "oldDoc": oldPduDataModel, "nowDoc": pduDataModel });
//更新当前选择的媒体文件
//更新当前选择的伴音文件
this.updaterMusicShared(pduDataModel, pduDataModel.itemIdx);
//更新上一个媒体文件 隐藏
//更新上一个伴音文件 隐藏
if (oldPduDataModel && oldPduDataModel.itemIdx != pduDataModel.itemIdx) {
this.updaterMusicShared(oldPduDataModel, oldPduDataModel.itemIdx);
}
}
//停止媒体文件
//停止伴音文件
musicSharedStop(paramInfo) {
loger.log('停止媒体文件->', paramInfo);
loger.log('停止伴音文件->', paramInfo);
if (GlobalConfig.isRecordPlayBack) {
loger.warn('录制回放状态不允许停止媒体文件');
loger.warn('录制回放状态不允许停止伴音文件');
return;
}
if (paramInfo == null || paramInfo.itemIdx == null) {
loger.warn('停止媒体文件,参数错误', paramInfo);
loger.warn('停止伴音文件,参数错误', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
... ... @@ -266,29 +267,29 @@ class MusicSharedApe extends Ape {
//获取已经存在的数据
let pduDataModel = this.musicSharedList[paramInfo.itemIdx];
if (pduDataModel == null) {
loger.warn('停止媒体文件,媒体文件不存在', paramInfo);
loger.warn('停止伴音文件,伴音文件不存在', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//更新当前选择的媒体文件数据的字段
//更新当前选择的伴音文件数据的字段
pduDataModel.status = 0; //默认是0
pduDataModel.seek = 0;
pduDataModel.musicVolume = 60;
//更新当前选择的媒体文件
//更新当前选择的伴音文件
this.updaterMusicShared(pduDataModel, pduDataModel.itemIdx);
}
//暂停媒体文件
//暂停伴音文件
musicSharedPause(paramInfo) {
loger.log('暂停媒体文件->', paramInfo);
loger.log('暂停伴音文件->', paramInfo);
if (GlobalConfig.isRecordPlayBack) {
loger.warn('录制回放-》暂停媒体文件');
loger.warn('录制回放-》暂停伴音文件');
return;
}
if (paramInfo == null || paramInfo.itemIdx == null) {
loger.warn('暂停媒体文件,参数错误', paramInfo);
loger.warn('暂停伴音文件,参数错误', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
... ... @@ -296,24 +297,24 @@ class MusicSharedApe extends Ape {
//获取已经存在的数据
let pduDataModel = this.musicSharedList[paramInfo.itemIdx];
if (pduDataModel == null) {
loger.warn('暂停媒体文件,媒体文件不存在', paramInfo);
loger.warn('暂停伴音文件,伴音文件不存在', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//更新当前选择的媒体文件数据的字段
//更新当前选择的伴音文件数据的字段
pduDataModel.status = 2; //默认是0
//更新当前选择的媒体文件
//更新当前选择的伴音文件
this.updaterMusicShared(pduDataModel, pduDataModel.itemIdx);
}
//媒体文件SEEK
//伴音文件SEEK
musicSharedSeek(paramInfo) {
loger.log('媒体文件SEEK->', paramInfo);
loger.log('伴音文件SEEK->', paramInfo);
//获取已经存在的数据
let pduDataModel = this.musicSharedList[paramInfo.itemIdx];
if (pduDataModel == null) {
loger.log('媒体文件SEEK->媒体文件不存在', paramInfo);
loger.log('伴音文件SEEK->伴音文件不存在', paramInfo);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
... ... @@ -330,43 +331,43 @@ class MusicSharedApe extends Ape {
}
//添加媒体文件
//添加伴音文件
tableInsertApeHandler(_tableUpdateItems, _seekTime) {
let tableInsertItems = _tableUpdateItems;
let tableInsertItemsLen = tableInsertItems.length;
loger.log('添加媒体文件->_seekTime:' + _seekTime, "activeMusicId->", GlobalConfig.activeMusicId, "tableUpdateItemsLen->", tableInsertItemsLen);
loger.log('添加伴音文件->_seekTime:' + _seekTime, "activeMusicId->", GlobalConfig.activeMusicId, "tableUpdateItemsLen->", tableInsertItemsLen);
for (let i = 0; i < tableInsertItemsLen; ++i) {
let insertItem = tableInsertItems[i];
//this.tableInsertHandler(insertItem.owner, insertItem.itemIdx, insertItem.itemData);
let itemDataInfo = this.unPackPdu(insertItem.owner, insertItem.itemIdx, insertItem.itemData);
if (itemDataInfo) {
itemDataInfo.seek = itemDataInfo.seek + parseInt(_seekTime); //seek是媒体文件自己的,_seekTime是录制回放时进度条换算的
itemDataInfo.seek = itemDataInfo.seek + parseInt(_seekTime); //seek是伴音文件自己的,_seekTime是录制回放时进度条换算的
this.musicSharedList[insertItem.itemIdx] = itemDataInfo;
if (itemDataInfo.status == 1) {
GlobalConfig.activeMusicId = itemDataInfo.itemIdx; //当前激活的媒体文件ID
GlobalConfig.activeMusicId = itemDataInfo.itemIdx; //当前激活的伴音文件ID
GlobalConfig.activeMusicSeek = itemDataInfo.seek;
loger.log('添加媒体文件->设置当前激活的媒体文件id');
loger.log('添加伴音文件->设置当前激活的伴音文件id');
}
let getMusicPackFullInfo = this._musicSharedPackFullInfo(itemDataInfo);
this._emit(MessageTypes.MUSIC_SHARED_UPDATE, getMusicPackFullInfo);
}
}
//媒体文件数据更新完毕,如果当前没有显示的媒体文件,默认选择一个显示
//伴音文件数据更新完毕,如果当前没有显示的伴音文件,默认选择一个显示
this._showDefaultMeida();
}
tableDeleteHandler(object_id, tableDeleteData) {
loger.log('删除媒体文件数据->', object_id, tableDeleteData); //["tableDeleteHandler",1179649,{"type":231,"itemIdx":[1486301768]}]
loger.log('删除伴音文件数据->', object_id, tableDeleteData); //["tableDeleteHandler",1179649,{"type":231,"itemIdx":[1486301768]}]
if (tableDeleteData && tableDeleteData.itemIdx) {
let len = tableDeleteData.itemIdx.length;
let itemIdxs = tableDeleteData.itemIdx;
for (let i = 0; i < len; i++) {
if (this.musicSharedList[itemIdxs[i]]) {
loger.log("删除媒体文件数据:", itemIdxs[i]);
loger.log("删除伴音文件数据:", itemIdxs[i]);
let itemDataInfo = this.musicSharedList[itemIdxs[i]];
if (itemDataInfo && itemDataInfo.status == 1) {
GlobalConfig.activeMusicId = 0; //当前激活的媒体文件ID
GlobalConfig.activeMusicSeek = 1; //当前激活的媒体文件的当前页
loger.log('删除媒体文件数据->清除当前显示的媒体文件');
GlobalConfig.activeMusicId = 0; //当前激活的伴音文件ID
GlobalConfig.activeMusicSeek = 1; //当前激活的伴音文件的当前页
loger.log('删除伴音文件数据->清除当前显示的伴音文件');
}
this._emit(MessageTypes.MUSIC_SHARED_DELETE, { "itemIdx": itemIdxs[i] });
delete this.musicSharedList[itemIdxs[i]];
... ... @@ -381,7 +382,7 @@ class MusicSharedApe extends Ape {
tableUpdateApeHandler(_tableUpdateItems, _seekTime) {
let tableUpdateItemsLen = _tableUpdateItems.length;
loger.log('更新媒体文件->_seekTime:' + _seekTime, "activeDocId->", GlobalConfig.activeMusicId, "更新的数量->", tableUpdateItemsLen);
loger.log('更新伴音文件->_seekTime:' + _seekTime, "activeDocId->", GlobalConfig.activeMusicId, "更新的数量->", tableUpdateItemsLen);
for (let i = 0; i < tableUpdateItemsLen; ++i) {
let tableItem = _tableUpdateItems[i];
let itemDataInfo = this.unPackPdu(tableItem.owner, tableItem.itemIdx, tableItem.itemData);
... ... @@ -389,31 +390,59 @@ class MusicSharedApe extends Ape {
itemDataInfo.seek = itemDataInfo.seek + parseInt(_seekTime);
this.musicSharedList[tableItem.itemIdx] = itemDataInfo;
if (itemDataInfo && itemDataInfo.status == 1) {
GlobalConfig.activeMusicId = itemDataInfo.itemIdx; //当前激活的媒体文件ID
GlobalConfig.activeMusicId = itemDataInfo.itemIdx; //当前激活的伴音文件ID
GlobalConfig.activeMusicSeek = itemDataInfo.seek;
loger.log('更新媒体文件->设置当前激活的媒体文件id->', GlobalConfig.activeMusicId, "curPageNum->", GlobalConfig.activeMusicSeek);
loger.log('更新伴音文件->设置当前激活的伴音文件id->', GlobalConfig.activeMusicId, "curPageNum->", GlobalConfig.activeMusicSeek);
}
let getMusicPackFullInfo = this._musicSharedPackFullInfo(itemDataInfo);
if(this.lastActiveData&&this.lastActiveData.status==1){
if(getMusicPackFullInfo&&
getMusicPackFullInfo.status==1&&
getMusicPackFullInfo.mediaVolume==this.lastActiveData.mediaVolume){
let timeDistance=Math.abs(new Date().getTime()-parseInt(this.lastActiveData.time))/1000;
let seekDistance=Math.abs(getMusicPackFullInfo.seek-this.lastActiveData.seek)-timeDistance;
if(seekDistance<5){
//记录最后一次的数据
loger.warn("伴音更新数据->数据只有SEEK发生改变,低于5秒不需要再更新->timeDistance:"+timeDistance+"->seekDistance"+seekDistance);
//记录最后一次激活的数据
this.lastActiveData=getMusicPackFullInfo;
this.lastActiveData.time=new Date().getTime();
return;
}
}
}
this._emit(MessageTypes.MUSIC_SHARED_UPDATE, getMusicPackFullInfo);
if(getMusicPackFullInfo.status==1){
this.lastActiveData=getMusicPackFullInfo;
this.lastActiveData.time=new Date().getTime();
}else{
//如果状态发生改变就清除最后一次的记录
if( this.lastActiveData&& this.lastActiveData.itemIdx==getMusicPackFullInfo.itemIdx){
this.lastActiveData=null;
}
}
} else {
loger.log('更新媒体文件-> 数据无效--> itemIdx', itemIdx);
loger.log('更新伴音文件-> 数据无效--> itemIdx', itemIdx);
}
}
this._showDefaultMeida();
}
//果当前没有显示的媒体文件,默认选择一个显示媒体文件
//果当前没有显示的伴音文件,默认选择一个显示伴音文件
_showDefaultMeida() {
//显示默认媒体文件条件->1.非录制回放状态下 2.只有host有权限操作 3.当前激活的媒体文件id不为0
//显示默认伴音文件条件->1.非录制回放状态下 2.只有host有权限操作 3.当前激活的伴音文件id不为0
if (GlobalConfig.isRecordPlayBack || !GlobalConfig.isHost || GlobalConfig.activeMusicId > 0) {
return;
}
/*
let tempDocItemIdx;//临时记录媒体文件数据,用于显示默认媒体文件
let tempDocItemIdx;//临时记录伴音文件数据,用于显示默认伴音文件
for (let key in this.musicSharedList) {
tempDocItemIdx= this.musicSharedList[key];
if (tempDocItemIdx) {
loger.log("选择一个媒体文件作为默认媒体文件显示->", tempDocItemIdx);
loger.log("选择一个伴音文件作为默认伴音文件显示->", tempDocItemIdx);
let paramInfo = {
"itemIdx": tempDocItemIdx.itemIdx,
"status": 1
... ... @@ -426,7 +455,7 @@ class MusicSharedApe extends Ape {
}
onJoinChannelHandlerSuccess() {
loger.log(this._session_name + ' 媒体共享加入频道成功');
loger.log(this._session_name + ' 伴音模块共享加入频道成功');
if (this._apeDelayed) {
setTimeout(() => {
this._emit(MusicSharedApe.MUSICSHARED_JOIN_CHANNEL_SUCCESS);
... ... @@ -438,28 +467,28 @@ class MusicSharedApe extends Ape {
}
}
//检查媒体文件是否已经存在,如果存在 返回true,否则返回false
//检查伴音文件是否已经存在,如果存在 返回true,否则返回false
checkMusicSharedId(_fileId) {
if (_fileId == null) {
loger.warn('查找媒体文件->失败->参数为null');
loger.warn('查找伴音伴音文件->失败->参数为null');
return true;
}
//遍历查找
for (let key in this.musicSharedList) {
let item = this.musicSharedList[key];
if (item && item.fileId == _fileId) {
loger.log('查找媒体文件->已经存在->', _fileId);
loger.log('查找伴音伴音文件->已经存在->', _fileId);
return true;
}
}
loger.log('查找媒体文件->没有查找到媒体文件->', _fileId);
loger.log('查找伴音文件->没有查找到伴音文件->', _fileId);
//储存的数据中没有查找到
return false;
}
///////数据的封包和解包/////////////////////////////////////////
packPdu(_param, _itemIdx) {
loger.log("媒体文件->packPdu");
loger.log("伴音伴音文件->packPdu");
//验证坐标点集合数组是否合法
if (_param == null || _itemIdx == null) {
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
... ... @@ -485,8 +514,8 @@ class MusicSharedApe extends Ape {
pduDataModel.creatUserId = _param.creatUserId || "0";
pduDataModel.url = _param.url || ""; //这个地址没用到,数据太长占用资源 暂停使用//"http://101.200.150.192/DocSharing/data/h5test/20170206-171100025/7e9c4178cac1133e0dd9d5b583439122.jpg";
pduDataModel.status = _param.status || 0;
pduDataModel.fileId = _param.fileId || ""; //媒体文件在服务器数据库中的唯一id,必须有
pduDataModel.fileName = _param.fileName || "music_" + _itemIdx; //媒体文件的名字
pduDataModel.fileId = _param.fileId || ""; //伴音文件在服务器数据库中的唯一id,必须有
pduDataModel.fileName = _param.fileName || "music_" + _itemIdx; //伴音文件的名字
pduDataModel.seek = parseInt(_param.seek) || 1;
pduDataModel.musicVolume = parseInt(_param.musicVolume);
if (!pduDataModel.musicVolume) {
... ... @@ -502,10 +531,10 @@ class MusicSharedApe extends Ape {
}
try {
let pduDataModel = pdu['RCMusicSharedSendDataModelPdu'].decode(itemData);
loger.log("媒体文件===>unPackPdu");
loger.log("伴音文件===>unPackPdu");
return pduDataModel;
} catch (err) {
loger.log("媒体文件===>unPackPdu->Pdu解析错误->itemIdx=" + itemIdx + "->err:" + err.message);
loger.log("伴音文件===>unPackPdu->Pdu解析错误->itemIdx=" + itemIdx + "->err:" + err.message);
}
return null;
}
... ...