李勇

1.音视频模块在录制状态发生改变的时候增加更新接口,把当前的音视频模块数据录制;

2.音视频模块发起人的身份和名称不对应的bug修复
3.媒体共享模块的消息中增加SEEK字段
4.录制回放中增加媒体共享的SEEK功能
此 diff 太大无法显示。
@@ -32,7 +32,7 @@ import QuestionApe from 'apes/QuestionApe'; @@ -32,7 +32,7 @@ import QuestionApe from 'apes/QuestionApe';
32 import UTF8 from 'utf-8'; 32 import UTF8 from 'utf-8';
33 33
34 let loger = Loger.getLoger('McuClient'); 34 let loger = Loger.getLoger('McuClient');
35 -let _sdkInfo = {"version": "v1.32.0.20170613", "author": "www.3mang.com"}; 35 +let _sdkInfo = {"version": "v1.32.1.20170614", "author": "www.3mang.com"};
36 36
37 //APE 37 //APE
38 let _sass; 38 let _sass;
@@ -332,11 +332,26 @@ export default class MessageEntrance extends Emiter { @@ -332,11 +332,26 @@ export default class MessageEntrance extends Emiter {
332 332
333 //开启录制成功 333 //开启录制成功
334 _onClassRecordSuccess(_param) { 334 _onClassRecordSuccess(_param) {
  335 + this.updaterRecordAllApeStatus(_param);
  336 + }
  337 +
  338 + //录制状态发送改变,更新所有模块的当前数据发送到MCU
  339 + updaterRecordAllApeStatus(_param){
  340 + //老师身份和非录制回放的时候执行,录制状态发送改变,需要更新当前的数据,否则已有的消息会录制不上
  341 + if(GlobalConfig.isHost&&!GlobalConfig.isRecordPlayBack){
  342 + loger.warn('录制状态发送改变->更新所有模块的当前数据发送到MCU');
335 if (_doc_ape) { 343 if (_doc_ape) {
336 - _doc_ape.updaterRecordStatus(); 344 + _doc_ape.updaterRecordApeStatus();
337 } 345 }
338 if (_whiteboard_ape) { 346 if (_whiteboard_ape) {
339 - _whiteboard_ape.updaterRecordStatus(); 347 + _whiteboard_ape.updaterRecordApeStatus();
  348 + }
  349 + if (_video_ape) {
  350 + _video_ape.updaterRecordApeStatus();
  351 + }
  352 + if (_audio_ape) {
  353 + _audio_ape.updaterRecordApeStatus();
  354 + }
340 } 355 }
341 } 356 }
342 357
@@ -518,6 +533,7 @@ export default class MessageEntrance extends Emiter { @@ -518,6 +533,7 @@ export default class MessageEntrance extends Emiter {
518 GlobalConfig.fps = _data.fps || 15; 533 GlobalConfig.fps = _data.fps || 15;
519 GlobalConfig.gop = _data.gop || 3; 534 GlobalConfig.gop = _data.gop || 3;
520 GlobalConfig.videoQuality = parseInt(_data.videoQuality); 535 GlobalConfig.videoQuality = parseInt(_data.videoQuality);
  536 + GlobalConfig.curVideoQuality= GlobalConfig.videoQuality;
521 537
522 //是否自动开始(身份是host的时候才用到的) 538 //是否自动开始(身份是host的时候才用到的)
523 GlobalConfig.isAutoStartClass = _data.autoRecord || 0; 539 GlobalConfig.isAutoStartClass = _data.autoRecord || 0;
@@ -399,16 +399,24 @@ class RecordPlayBackParse extends Emiter { @@ -399,16 +399,24 @@ class RecordPlayBackParse extends Emiter {
399 //音视频模块的查找规则和其他模块不一样,音视频按频道查找,如果课堂内存在多个频道,都要查 399 //音视频模块的查找规则和其他模块不一样,音视频按频道查找,如果课堂内存在多个频道,都要查
400 this.searchMediaApeMessageKeyfram(this.mediaChannleList); 400 this.searchMediaApeMessageKeyfram(this.mediaChannleList);
401 401
  402 + //媒体共享模块
  403 + this.searchMediaShareApeMessageKeyfram(this._mediaShareApeMssages);
  404 +
402 //聊天模块、白板标注模块的比较特殊,消息是累计的,默认最多30条 405 //聊天模块、白板标注模块的比较特殊,消息是累计的,默认最多30条
403 this._searchChatHistoryMessageKeyfram(this._chatApeMssages, ApeConsts.CHAT_SESSION_ID); 406 this._searchChatHistoryMessageKeyfram(this._chatApeMssages, ApeConsts.CHAT_SESSION_ID);
404 this._searchWhiteboradHistoryMessageKeyfram(this._whiteApeMssages, ApeConsts.WHITEBOARD_SESSION_ID); 407 this._searchWhiteboradHistoryMessageKeyfram(this._whiteApeMssages, ApeConsts.WHITEBOARD_SESSION_ID);
405 408
  409 +
  410 +
406 //各个ape模块无论有没有找到关键帧数据,都继续播放 411 //各个ape模块无论有没有找到关键帧数据,都继续播放
407 this._startTimerCounter(); 412 this._startTimerCounter();
408 } 413 }
409 414
410 //查找ape关键帧数据 415 //查找ape关键帧数据
411 _searchApeMessageKeyfram(_apeMessages, _apeId) { 416 _searchApeMessageKeyfram(_apeMessages, _apeId) {
  417 + if(!_apeMessages){
  418 + return;
  419 + }
412 let messageItem; 420 let messageItem;
413 let keyFrameSeekTime = 0; 421 let keyFrameSeekTime = 0;
414 for (let i = this._recordPlaybackTimestamp; i > 0; i--) { 422 for (let i = this._recordPlaybackTimestamp; i > 0; i--) {
@@ -434,7 +442,9 @@ class RecordPlayBackParse extends Emiter { @@ -434,7 +442,9 @@ class RecordPlayBackParse extends Emiter {
434 442
435 //音视频模块seek的时候,查找当前seek点的关键帧数据,所有频道的数据都需要查一下,否则多路视频的时候会显示不全 443 //音视频模块seek的时候,查找当前seek点的关键帧数据,所有频道的数据都需要查一下,否则多路视频的时候会显示不全
436 searchMediaApeMessageKeyfram(_apeMessages){ 444 searchMediaApeMessageKeyfram(_apeMessages){
437 - loger.log("SEEK->查找音视频模块数据"); 445 + if(!_apeMessages){
  446 + return;
  447 + }
438 console.log('SEEK->查找音视频模块数据',_apeMessages) 448 console.log('SEEK->查找音视频模块数据',_apeMessages)
439 if(_apeMessages) { 449 if(_apeMessages) {
440 for (let k in _apeMessages) { 450 for (let k in _apeMessages) {
@@ -453,8 +463,33 @@ class RecordPlayBackParse extends Emiter { @@ -453,8 +463,33 @@ class RecordPlayBackParse extends Emiter {
453 } 463 }
454 } 464 }
455 } 465 }
  466 + //媒体共享模块查找关键帧时间戳的消息
  467 + searchMediaShareApeMessageKeyfram(_apeMessages){
  468 + if(!_apeMessages){
  469 + return;
  470 + }
  471 + let messageItem;
  472 + let keyFrameSeekTime = 0;
  473 + for (let i = this._recordPlaybackTimestamp; i > 0; i--) {
  474 + messageItem = _apeMessages[i];
  475 + if (messageItem) {
  476 + keyFrameSeekTime = (this._recordPlaybackTimestamp - i)
  477 + loger.log("SEEK->APE",'媒体共享',this._recordPlaybackTimestamp, "查找到相连的timestamp->", i, '需要seek->', keyFrameSeekTime, "秒");
  478 + //把时间点对应的数据发送,同一秒内有存在多个数据的情况
  479 + for (let k = 0; k < messageItem.length; k++) {
  480 + this._everSocketMsgReceivedHandler(messageItem[k].byteData, keyFrameSeekTime);
  481 + }
  482 + return;
  483 + }
  484 + }
  485 + loger.log("SEEK->APE->媒体共享", this._recordPlaybackTimestamp, "没有查找到相连的数据");
  486 + }
  487 +
456 //查找聊天模块ape关键帧数据,聊天模块比较特殊,消息是累积的,当前时间戳之前的都需要显示 488 //查找聊天模块ape关键帧数据,聊天模块比较特殊,消息是累积的,当前时间戳之前的都需要显示
457 _searchChatHistoryMessageKeyfram(_apeMessages) { 489 _searchChatHistoryMessageKeyfram(_apeMessages) {
  490 + if(!_apeMessages){
  491 + return;
  492 + }
458 //最多30条数据 493 //最多30条数据
459 let counter=0; 494 let counter=0;
460 let messageItem; 495 let messageItem;
@@ -485,6 +520,9 @@ class RecordPlayBackParse extends Emiter { @@ -485,6 +520,9 @@ class RecordPlayBackParse extends Emiter {
485 520
486 //查找白板标注模块ape关键帧数据,聊天模块比较特殊,消息是累积的,当前时间戳之前的都需要显示 521 //查找白板标注模块ape关键帧数据,聊天模块比较特殊,消息是累积的,当前时间戳之前的都需要显示
487 _searchWhiteboradHistoryMessageKeyfram(_apeMessages) { 522 _searchWhiteboradHistoryMessageKeyfram(_apeMessages) {
  523 + if(!_apeMessages){
  524 + return;
  525 + }
488 //最多30条数据 526 //最多30条数据
489 let counter=0; 527 let counter=0;
490 let messageItem; 528 let messageItem;
@@ -160,7 +160,7 @@ export default class Ape extends Emiter { @@ -160,7 +160,7 @@ export default class Ape extends Emiter {
160 } 160 }
161 161
162 //文档数据数组内部自己处理数组 162 //文档数据数组内部自己处理数组
163 - this.tableInsertApeHandler(tableInsertItems); 163 + this.tableInsertApeHandler(tableInsertItems,seekTime);
164 break; 164 break;
165 case pdu.RCPDU_REG_TABLE_DELETE_PDU: 165 case pdu.RCPDU_REG_TABLE_DELETE_PDU:
166 let tableDeleteData = pdu['RCRegistryTableDeleteItemPdu'].decode(user_data); 166 let tableDeleteData = pdu['RCRegistryTableDeleteItemPdu'].decode(user_data);
@@ -181,7 +181,7 @@ export default class Ape extends Emiter { @@ -181,7 +181,7 @@ export default class Ape extends Emiter {
181 } 181 }
182 182
183 //白板,文档数据数组内部自己处理数组 183 //白板,文档数据数组内部自己处理数组
184 - this.tableUpdateApeHandler(tableUpdateItems); 184 + this.tableUpdateApeHandler(tableUpdateItems,seekTime);
185 break; 185 break;
186 case pdu.RCPDU_REG_QUEUE_UPDATE_PDU: 186 case pdu.RCPDU_REG_QUEUE_UPDATE_PDU:
187 case pdu.RCPDU_REG_QUEUE_DELETE_PDU: 187 case pdu.RCPDU_REG_QUEUE_DELETE_PDU:
@@ -424,6 +424,22 @@ class AudioApe extends Ape { @@ -424,6 +424,22 @@ class AudioApe extends Ape {
424 this._emit(MessageTypes.AUDIO_UPDATE, unpackChannelInfo); 424 this._emit(MessageTypes.AUDIO_UPDATE, unpackChannelInfo);
425 } 425 }
426 426
  427 + //更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次
  428 + updaterRecordApeStatus(_param){
  429 + console.warn("录制状态发送改变->更新当前的状态->",this.mediaModule.mediaChannels);
  430 + for (let i in this.mediaModule.mediaChannels){
  431 + let channelInfo=this.mediaModule.mediaChannels[i];
  432 + if(channelInfo){
  433 + if(channelInfo.status==ApeConsts.CHANNEL_STATUS_RELEASED){
  434 + channelInfo.owner=0;
  435 + }else {
  436 + channelInfo.owner=channelInfo.fromNodeId;
  437 + }
  438 + this.sendTableUpdateHandler(channelInfo);
  439 + }
  440 + }
  441 + }
  442 +
427 ///////数据的封包和解包///////////////////////////////////////// 443 ///////数据的封包和解包/////////////////////////////////////////
428 packPdu(_param, _itemIdx) { 444 packPdu(_param, _itemIdx) {
429 //验证坐标点集合数组是否合法 445 //验证坐标点集合数组是否合法
@@ -443,10 +459,10 @@ class AudioApe extends Ape { @@ -443,10 +459,10 @@ class AudioApe extends Ape {
443 packPduModel.userId =_param.userId||"0"; 459 packPduModel.userId =_param.userId||"0";
444 packPduModel.mediaType =_param.mediaType|| ApeConsts.MEDIA_TYPE_AUDIO; 460 packPduModel.mediaType =_param.mediaType|| ApeConsts.MEDIA_TYPE_AUDIO;
445 packPduModel.timestamp =_param.timestamp||EngineUtils.creatTimestamp(); 461 packPduModel.timestamp =_param.timestamp||EngineUtils.creatTimestamp();
446 - packPduModel.fromNodeId = GlobalConfig.nodeId;  
447 - packPduModel.userName=GlobalConfig.userName||""; 462 + packPduModel.fromNodeId =_param.nodeId|| GlobalConfig.nodeId;
  463 + packPduModel.userName=_param.userName||GlobalConfig.userName||"";
448 packPduModel.toNodeId = 0; 464 packPduModel.toNodeId = 0;
449 - packPduModel.userRole=GlobalConfig.userRole||ApeConsts.normal; 465 + packPduModel.userRole=_param.userRole||GlobalConfig.userRole;
450 packPduModel.screenWidth=_param.screenWidth||GlobalConfig.screenWidth; 466 packPduModel.screenWidth=_param.screenWidth||GlobalConfig.screenWidth;
451 packPduModel.screenHeight=_param.screenHeight||GlobalConfig.screenHeight; 467 packPduModel.screenHeight=_param.screenHeight||GlobalConfig.screenHeight;
452 loger.log("packPdu->",packPduModel); 468 loger.log("packPdu->",packPduModel);
@@ -309,14 +309,19 @@ class DocApe extends Ape { @@ -309,14 +309,19 @@ class DocApe extends Ape {
309 return itemDataInfo; 309 return itemDataInfo;
310 } 310 }
311 //更新文档模块的录制信息,每次开启录制的时候需要把当前文档的信息更新一次 311 //更新文档模块的录制信息,每次开启录制的时候需要把当前文档的信息更新一次
312 - updaterRecordStatus(_param){  
313 - if(GlobalConfig.isHost&&!GlobalConfig.isRecordPlayBack&&GlobalConfig.activeDocId>0){  
314 - loger.log("开启录制成功->更新当前的文档数据->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage); 312 + updaterRecordApeStatus(_param){
  313 + /* if(GlobalConfig.isHost&&!GlobalConfig.isRecordPlayBack&&GlobalConfig.activeDocId>0){
  314 + loger.log("录制状态发送改变->更新当前的文档数据->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
  315 + this.documentSwitchPage({
  316 + "itemIdx": GlobalConfig.activeDocId,
  317 + "curPageNo":GlobalConfig.activeDocCurPage
  318 + });
  319 + }*/
  320 + loger.warn("录制状态发送改变->更新当前的文档数据->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
315 this.documentSwitchPage({ 321 this.documentSwitchPage({
316 "itemIdx": GlobalConfig.activeDocId, 322 "itemIdx": GlobalConfig.activeDocId,
317 "curPageNo":GlobalConfig.activeDocCurPage 323 "curPageNo":GlobalConfig.activeDocCurPage
318 }); 324 });
319 - }  
320 } 325 }
321 //清除当前文档模块的数据 326 //清除当前文档模块的数据
322 clearData(){ 327 clearData(){
@@ -283,7 +283,7 @@ class MediaModule { @@ -283,7 +283,7 @@ class MediaModule {
283 channelInfo.status=ApeConsts.CHANNEL_STATUS_RELEASED; 283 channelInfo.status=ApeConsts.CHANNEL_STATUS_RELEASED;
284 channelInfo.fromNodeId=GlobalConfig.nodeId; 284 channelInfo.fromNodeId=GlobalConfig.nodeId;
285 channelInfo.channelId=0;//channelId不能为0 285 channelInfo.channelId=0;//channelId不能为0
286 - channelInfo.streamId="" 286 + channelInfo.streamId="";
287 channelInfo.classId=GlobalConfig.classId; 287 channelInfo.classId=GlobalConfig.classId;
288 channelInfo.siteId=GlobalConfig.siteId; 288 channelInfo.siteId=GlobalConfig.siteId;
289 channelInfo.toNodeId=0; 289 channelInfo.toNodeId=0;
@@ -149,21 +149,26 @@ class MediaSharedApe extends Ape { @@ -149,21 +149,26 @@ class MediaSharedApe extends Ape {
149 //组织完整的媒体文件信息,包含上传时的信息和转换后的完整地址信息 149 //组织完整的媒体文件信息,包含上传时的信息和转换后的完整地址信息
150 _mediaSharedPackFullInfo(_itemDataInfo){ 150 _mediaSharedPackFullInfo(_itemDataInfo){
151 let itemDataInfo=_itemDataInfo; 151 let itemDataInfo=_itemDataInfo;
152 - if(itemDataInfo.seek==null){ 152 + if(!itemDataInfo.seek){
153 itemDataInfo.seek=1; 153 itemDataInfo.seek=1;
154 } 154 }
155 loger.log('mediaPackFullInfo->', itemDataInfo); 155 loger.log('mediaPackFullInfo->', itemDataInfo);
156 return itemDataInfo; 156 return itemDataInfo;
157 } 157 }
158 //更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次 158 //更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次
159 - updaterRecordStatus(_param){  
160 - if(GlobalConfig.isHost&&!GlobalConfig.isRecordPlayBack&&GlobalConfig.activeMediaId>0){ 159 + updaterRecordApeStatus(_param){
  160 + /*if(GlobalConfig.isHost&&!GlobalConfig.isRecordPlayBack&&GlobalConfig.activeMediaId>0){
161 loger.log("开启录制成功->更新当前的媒体文件数据->fileId:", GlobalConfig.activeMediaId, 'page:',GlobalConfig.activeMediaSeek); 161 loger.log("开启录制成功->更新当前的媒体文件数据->fileId:", GlobalConfig.activeMediaId, 'page:',GlobalConfig.activeMediaSeek);
162 this.mediaSharedSeek({ 162 this.mediaSharedSeek({
163 "itemIdx": GlobalConfig.activeMediaId, 163 "itemIdx": GlobalConfig.activeMediaId,
164 "seek":GlobalConfig.activeMediaSeek 164 "seek":GlobalConfig.activeMediaSeek
165 }); 165 });
166 - } 166 + }*/
  167 + loger.warn("录制状态发送改变->更新当前的媒体文件数据->fileId:", GlobalConfig.activeMediaId, 'page:',GlobalConfig.activeMediaSeek);
  168 + this.mediaSharedSeek({
  169 + "itemIdx": GlobalConfig.activeMediaId,
  170 + "seek":GlobalConfig.activeMediaSeek
  171 + });
167 } 172 }
168 //清除当前媒体文件模块的数据 173 //清除当前媒体文件模块的数据
169 clearData(){ 174 clearData(){
@@ -331,16 +336,17 @@ class MediaSharedApe extends Ape { @@ -331,16 +336,17 @@ class MediaSharedApe extends Ape {
331 tableInsertApeHandler(_tableUpdateItems, _seekTime) { 336 tableInsertApeHandler(_tableUpdateItems, _seekTime) {
332 let tableInsertItems =_tableUpdateItems; 337 let tableInsertItems =_tableUpdateItems;
333 let tableInsertItemsLen = tableInsertItems.length; 338 let tableInsertItemsLen = tableInsertItems.length;
334 - loger.log('添加媒体文件->', "activeDocId->", GlobalConfig.activeMediaId, "tableUpdateItemsLen->", tableInsertItemsLen); 339 + loger.log('添加媒体文件->_seekTime:'+_seekTime, "activeMediaId->", GlobalConfig.activeMediaId, "tableUpdateItemsLen->", tableInsertItemsLen);
335 for (let i = 0; i < tableInsertItemsLen; ++i) { 340 for (let i = 0; i < tableInsertItemsLen; ++i) {
336 let insertItem = tableInsertItems[i]; 341 let insertItem = tableInsertItems[i];
337 //this.tableInsertHandler(insertItem.owner, insertItem.itemIdx, insertItem.itemData); 342 //this.tableInsertHandler(insertItem.owner, insertItem.itemIdx, insertItem.itemData);
338 let itemDataInfo = this.unPackPdu(insertItem.owner, insertItem.itemIdx, insertItem.itemData); 343 let itemDataInfo = this.unPackPdu(insertItem.owner, insertItem.itemIdx, insertItem.itemData);
339 if(itemDataInfo){ 344 if(itemDataInfo){
  345 + itemDataInfo.seek=itemDataInfo.seek+parseInt(_seekTime);//seek是媒体文件自己的,_seekTime是录制回放时进度条换算的
340 this.mediaSharedList[insertItem.itemIdx] = itemDataInfo; 346 this.mediaSharedList[insertItem.itemIdx] = itemDataInfo;
341 if (itemDataInfo.status == 1) { 347 if (itemDataInfo.status == 1) {
342 GlobalConfig.activeMediaId = itemDataInfo.itemIdx;//当前激活的媒体文件ID 348 GlobalConfig.activeMediaId = itemDataInfo.itemIdx;//当前激活的媒体文件ID
343 - GlobalConfig.activeMediaSeek = itemDataInfo.seek;//当前激活的媒体文件的当前页 349 + GlobalConfig.activeMediaSeek = itemDataInfo.seek;
344 loger.log('添加媒体文件->设置当前激活的媒体文件id'); 350 loger.log('添加媒体文件->设置当前激活的媒体文件id');
345 } 351 }
346 let getMediaPackFullInfo= this._mediaSharedPackFullInfo(itemDataInfo); 352 let getMediaPackFullInfo= this._mediaSharedPackFullInfo(itemDataInfo);
@@ -376,15 +382,16 @@ class MediaSharedApe extends Ape { @@ -376,15 +382,16 @@ class MediaSharedApe extends Ape {
376 } 382 }
377 tableUpdateApeHandler(_tableUpdateItems, _seekTime) { 383 tableUpdateApeHandler(_tableUpdateItems, _seekTime) {
378 let tableUpdateItemsLen = _tableUpdateItems.length; 384 let tableUpdateItemsLen = _tableUpdateItems.length;
379 - loger.log('更新媒体文件->', "activeDocId->", GlobalConfig.activeMediaId, "更新的数量->", tableUpdateItemsLen); 385 + loger.log('更新媒体文件->_seekTime:'+_seekTime, "activeDocId->", GlobalConfig.activeMediaId, "更新的数量->", tableUpdateItemsLen);
380 for (let i = 0; i < tableUpdateItemsLen; ++i) { 386 for (let i = 0; i < tableUpdateItemsLen; ++i) {
381 let tableItem = _tableUpdateItems[i]; 387 let tableItem = _tableUpdateItems[i];
382 let itemDataInfo = this.unPackPdu(tableItem.owner, tableItem.itemIdx, tableItem.itemData); 388 let itemDataInfo = this.unPackPdu(tableItem.owner, tableItem.itemIdx, tableItem.itemData);
383 if (itemDataInfo != null) { 389 if (itemDataInfo != null) {
  390 + itemDataInfo.seek=itemDataInfo.seek+parseInt(_seekTime);
384 this.mediaSharedList[tableItem.itemIdx] = itemDataInfo; 391 this.mediaSharedList[tableItem.itemIdx] = itemDataInfo;
385 if (itemDataInfo && itemDataInfo.status ==1) { 392 if (itemDataInfo && itemDataInfo.status ==1) {
386 GlobalConfig.activeMediaId = itemDataInfo.itemIdx;//当前激活的媒体文件ID 393 GlobalConfig.activeMediaId = itemDataInfo.itemIdx;//当前激活的媒体文件ID
387 - GlobalConfig.activeMediaSeek = itemDataInfo.seek;//当前激活的媒体文件的当前页 394 + GlobalConfig.activeMediaSeek = itemDataInfo.seek;
388 loger.log('更新媒体文件->设置当前激活的媒体文件id->', GlobalConfig.activeMediaId, "curPageNum->", GlobalConfig.activeMediaSeek); 395 loger.log('更新媒体文件->设置当前激活的媒体文件id->', GlobalConfig.activeMediaId, "curPageNum->", GlobalConfig.activeMediaSeek);
389 } 396 }
390 let getMediaPackFullInfo= this._mediaSharedPackFullInfo(itemDataInfo); 397 let getMediaPackFullInfo= this._mediaSharedPackFullInfo(itemDataInfo);
@@ -352,11 +352,9 @@ class VideoApe extends Ape { @@ -352,11 +352,9 @@ class VideoApe extends Ape {
352 352
353 if (!videoSendPdu.isPublic && 0 != videoSendPdu.toNodeId) { 353 if (!videoSendPdu.isPublic && 0 != videoSendPdu.toNodeId) {
354 //发送给制定的人 354 //发送给制定的人
355 - //loger.log('发送私聊Video消息.');  
356 this.send(videoSendPdu); 355 this.send(videoSendPdu);
357 } else { 356 } else {
358 //发送给所有人 357 //发送给所有人
359 - //loger.log('发送公聊Video消息.');  
360 this.sendChatUniform(videoSendPdu); 358 this.sendChatUniform(videoSendPdu);
361 } 359 }
362 return {"code": ApeConsts.RETURN_SUCCESS, "data": ""}; 360 return {"code": ApeConsts.RETURN_SUCCESS, "data": ""};
@@ -538,6 +536,21 @@ class VideoApe extends Ape { @@ -538,6 +536,21 @@ class VideoApe extends Ape {
538 } 536 }
539 537
540 } 538 }
  539 + //更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次
  540 + updaterRecordApeStatus(_param){
  541 + console.warn("录制状态发送改变->更新当前的状态->",this.mediaModule.mediaChannels);
  542 + for (let i in this.mediaModule.mediaChannels){
  543 + let channelInfo=this.mediaModule.mediaChannels[i];
  544 + if(channelInfo){
  545 + if(channelInfo.status==ApeConsts.CHANNEL_STATUS_RELEASED){
  546 + channelInfo.owner=0;
  547 + }else {
  548 + channelInfo.owner=channelInfo.fromNodeId;
  549 + }
  550 + this.sendTableUpdateHandler(channelInfo);
  551 + }
  552 + }
  553 + }
541 554
542 //清除当前模块的数据 555 //清除当前模块的数据
543 clearData(){ 556 clearData(){
@@ -547,7 +560,6 @@ class VideoApe extends Ape { @@ -547,7 +560,6 @@ class VideoApe extends Ape {
547 560
548 ///////数据的封包和解包///////////////////////////////////////// 561 ///////数据的封包和解包/////////////////////////////////////////
549 packPdu(_param, _itemIdx) { 562 packPdu(_param, _itemIdx) {
550 - loger.log("packPdu ");  
551 //验证坐标点集合数组是否合法 563 //验证坐标点集合数组是否合法
552 if (_param == null || _itemIdx == null) { 564 if (_param == null || _itemIdx == null) {
553 this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); 565 this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
@@ -564,13 +576,13 @@ class VideoApe extends Ape { @@ -564,13 +576,13 @@ class VideoApe extends Ape {
564 packPduModel.userId =_param.userId||"0"; 576 packPduModel.userId =_param.userId||"0";
565 packPduModel.mediaType =_param.mediaType|| ApeConsts.MEDIA_TYPE_VIDEO; 577 packPduModel.mediaType =_param.mediaType|| ApeConsts.MEDIA_TYPE_VIDEO;
566 packPduModel.timestamp =_param.timestamp||0; 578 packPduModel.timestamp =_param.timestamp||0;
567 - packPduModel.fromNodeId = GlobalConfig.nodeId;  
568 - packPduModel.userName=GlobalConfig.userName||""; 579 + packPduModel.fromNodeId = _param.nodeId||GlobalConfig.nodeId;
  580 + packPduModel.userName=_param.userName||GlobalConfig.userName;
569 packPduModel.toNodeId = 0; 581 packPduModel.toNodeId = 0;
570 - packPduModel.userRole=GlobalConfig.userRole||ApeConsts.normal; 582 + packPduModel.userRole=_param.userRole||GlobalConfig.userRole;
571 packPduModel.screenWidth=_param.screenWidth||GlobalConfig.screenWidth; 583 packPduModel.screenWidth=_param.screenWidth||GlobalConfig.screenWidth;
572 packPduModel.screenHeight=_param.screenHeight||GlobalConfig.screenHeight; 584 packPduModel.screenHeight=_param.screenHeight||GlobalConfig.screenHeight;
573 - loger.log(packPduModel); 585 + loger.log('packPdu->',packPduModel);
574 return packPduModel; 586 return packPduModel;
575 } 587 }
576 588
@@ -65,8 +65,8 @@ class WhiteBoardApe extends Ape { @@ -65,8 +65,8 @@ class WhiteBoardApe extends Ape {
65 this.insertHistory = [];//添加的白板记录,用于撤回操作 65 this.insertHistory = [];//添加的白板记录,用于撤回操作
66 } 66 }
67 //更新文档模块的录制信息,每次开启录制的时候需要把当前文档的信息更新一次 67 //更新文档模块的录制信息,每次开启录制的时候需要把当前文档的信息更新一次
68 - updaterRecordStatus(_param){  
69 - if(GlobalConfig.isHost&&!GlobalConfig.isRecordPlayBack){ 68 + updaterRecordApeStatus(_param){
  69 + /* if(GlobalConfig.isHost&&!GlobalConfig.isRecordPlayBack){
70 let curPageAnnos={}; 70 let curPageAnnos={};
71 for (let key in this.annoInfos) { 71 for (let key in this.annoInfos) {
72 let item = this.annoInfos[key]; 72 let item = this.annoInfos[key];
@@ -80,6 +80,19 @@ class WhiteBoardApe extends Ape { @@ -80,6 +80,19 @@ class WhiteBoardApe extends Ape {
80 }else { 80 }else {
81 loger.log("开启录制成功->当前没有标注数据需要更新->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage); 81 loger.log("开启录制成功->当前没有标注数据需要更新->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
82 } 82 }
  83 + }*/
  84 + let curPageAnnos={};
  85 + for (let key in this.annoInfos) {
  86 + let item = this.annoInfos[key];
  87 + if (item && item.parentId == GlobalConfig.activeDocId && item.curPageNo == GlobalConfig.activeDocCurPage) {
  88 + curPageAnnos[key]=item;
  89 + }
  90 + }
  91 + if(Object.keys(curPageAnnos).length>0){
  92 + loger.warn("录制状态发送改变->更新当前的标注数据->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
  93 + this.sendUpdaterAnnotaion({"itemIdxArr":curPageAnnos});
  94 + }else {
  95 + loger.warn("录制状态发送改变->当前没有标注数据需要更新->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
83 } 96 }
84 } 97 }
85 98