正在显示
3 个修改的文件
包含
20 行增加
和
46 行删除
此 diff 太大无法显示。
| @@ -28,7 +28,7 @@ import MediaModule from 'apes/MediaModule'; | @@ -28,7 +28,7 @@ import MediaModule from 'apes/MediaModule'; | ||
| 28 | import UTF8 from 'utf-8'; | 28 | import UTF8 from 'utf-8'; |
| 29 | 29 | ||
| 30 | let loger = Loger.getLoger('McuClient'); | 30 | let loger = Loger.getLoger('McuClient'); |
| 31 | -let _sdkInfo = {"version": "v1.23.2.201705018", "author": "www.3mang.com"}; | 31 | +let _sdkInfo = {"version": "v1.23.3.201705018", "author": "www.3mang.com"}; |
| 32 | 32 | ||
| 33 | //APE | 33 | //APE |
| 34 | let _sass; | 34 | let _sass; |
| @@ -61,6 +61,7 @@ class RecordPlayBackParse extends Emiter { | @@ -61,6 +61,7 @@ class RecordPlayBackParse extends Emiter { | ||
| 61 | this._chatApeMssages = {};//聊天数据 | 61 | this._chatApeMssages = {};//聊天数据 |
| 62 | this._videoApeMssages = {};//视频数据 | 62 | this._videoApeMssages = {};//视频数据 |
| 63 | this._audioApeMssages = {};//音频数据 | 63 | this._audioApeMssages = {};//音频数据 |
| 64 | + this.mediaChannleList={}; | ||
| 64 | this._docApeMssages = {};//文档数据 | 65 | this._docApeMssages = {};//文档数据 |
| 65 | this._whiteApeMssages = {};//白板数据 | 66 | this._whiteApeMssages = {};//白板数据 |
| 66 | } | 67 | } |
| @@ -119,7 +120,7 @@ class RecordPlayBackParse extends Emiter { | @@ -119,7 +120,7 @@ class RecordPlayBackParse extends Emiter { | ||
| 119 | 120 | ||
| 120 | //解析和储存,录制回放EverSocket底层消息处理 data-数据;timestamp-数据对应的时间戳 | 121 | //解析和储存,录制回放EverSocket底层消息处理 data-数据;timestamp-数据对应的时间戳 |
| 121 | _parseSaveSocketMsgReceivedHandler(data, timestamp) { | 122 | _parseSaveSocketMsgReceivedHandler(data, timestamp) { |
| 122 | - loger.log('解析和储存,录制回放EverSocket底层消息处理 '); | 123 | + loger.log('解析和储存录制回放数据-> '); |
| 123 | let pduMsg = pdu.decode_pdu(data); | 124 | let pduMsg = pdu.decode_pdu(data); |
| 124 | let pduType = pduMsg.get("type"); | 125 | let pduType = pduMsg.get("type"); |
| 125 | let pduData = pduMsg.get("data"); | 126 | let pduData = pduMsg.get("data"); |
| @@ -172,11 +173,11 @@ class RecordPlayBackParse extends Emiter { | @@ -172,11 +173,11 @@ class RecordPlayBackParse extends Emiter { | ||
| 172 | break; | 173 | break; |
| 173 | case ApeConsts.VIDEO_SESSION_ID: | 174 | case ApeConsts.VIDEO_SESSION_ID: |
| 174 | this.saveParseData(data, timestamp, this._videoApeMssages); | 175 | this.saveParseData(data, timestamp, this._videoApeMssages); |
| 175 | - this._pduRegAdapterHandler(pduMsg.data,timestamp,data,ApeConsts.VIDEO_SESSION_ID) | 176 | + this.unPackpduRegAdapterHandler(pduMsg.data,timestamp,data,ApeConsts.VIDEO_SESSION_ID) |
| 176 | break; | 177 | break; |
| 177 | case ApeConsts.AUDIO_SESSION_ID: | 178 | case ApeConsts.AUDIO_SESSION_ID: |
| 178 | this.saveParseData(data, timestamp, this._audioApeMssages); | 179 | this.saveParseData(data, timestamp, this._audioApeMssages); |
| 179 | - this._pduRegAdapterHandler(pduMsg.data,timestamp,data,ApeConsts.AUDIO_SESSION_ID) | 180 | + this.unPackpduRegAdapterHandler(pduMsg.data,timestamp,data,ApeConsts.AUDIO_SESSION_ID) |
| 180 | break; | 181 | break; |
| 181 | default: | 182 | default: |
| 182 | break; | 183 | break; |
| @@ -188,7 +189,7 @@ class RecordPlayBackParse extends Emiter { | @@ -188,7 +189,7 @@ class RecordPlayBackParse extends Emiter { | ||
| 188 | } | 189 | } |
| 189 | } | 190 | } |
| 190 | 191 | ||
| 191 | - //保存数据 | 192 | + //保存各个模块的MCU原始数据 |
| 192 | saveParseData(data, timestamp, apeMessages) { | 193 | saveParseData(data, timestamp, apeMessages) { |
| 193 | let messageItem = apeMessages[timestamp]; | 194 | let messageItem = apeMessages[timestamp]; |
| 194 | if (!messageItem) { | 195 | if (!messageItem) { |
| @@ -293,9 +294,9 @@ class RecordPlayBackParse extends Emiter { | @@ -293,9 +294,9 @@ class RecordPlayBackParse extends Emiter { | ||
| 293 | let byteData = parseBuffer.buffer.slice(position, (position + byteLen)); | 294 | let byteData = parseBuffer.buffer.slice(position, (position + byteLen)); |
| 294 | position += byteLen; | 295 | position += byteLen; |
| 295 | 296 | ||
| 297 | + //按时间戳解保存数据 | ||
| 296 | this._parseSaveSocketMsgReceivedHandler(byteData, timestamp); | 298 | this._parseSaveSocketMsgReceivedHandler(byteData, timestamp); |
| 297 | 299 | ||
| 298 | - | ||
| 299 | //记录最后一个数据的时间戳作为整个录制回放的总时间戳 | 300 | //记录最后一个数据的时间戳作为整个录制回放的总时间戳 |
| 300 | this._recordPlaybackMaxTime = timestamp; | 301 | this._recordPlaybackMaxTime = timestamp; |
| 301 | } | 302 | } |
| @@ -330,19 +331,6 @@ class RecordPlayBackParse extends Emiter { | @@ -330,19 +331,6 @@ class RecordPlayBackParse extends Emiter { | ||
| 330 | } | 331 | } |
| 331 | } | 332 | } |
| 332 | } | 333 | } |
| 333 | - | ||
| 334 | - /*_searchMessageFromTime(_timestamp,_apeMessages){ | ||
| 335 | - let msgDataArr=this._messages[_timestamp]; | ||
| 336 | - if(!msgDataArr){ | ||
| 337 | - //没有数据,需要查找当前时间点属于哪一个时间戳关键帧 | ||
| 338 | - }else { | ||
| 339 | - //把时间点对应的数据发送,同一秒内有存在多个数据的情况 | ||
| 340 | - for(let i=0;i<msgDataArr.length;i++){ | ||
| 341 | - this._everSocketMsgReceivedHandler(msgDataArr[i].byteData); | ||
| 342 | - } | ||
| 343 | - } | ||
| 344 | - }*/ | ||
| 345 | - | ||
| 346 | //method------------外部接口------------------------------------- | 334 | //method------------外部接口------------------------------------- |
| 347 | 335 | ||
| 348 | //开始播放 | 336 | //开始播放 |
| @@ -397,9 +385,13 @@ class RecordPlayBackParse extends Emiter { | @@ -397,9 +385,13 @@ class RecordPlayBackParse extends Emiter { | ||
| 397 | this._searchApeMessageKeyfram(this._conferApeMssages, ApeConsts.CONFERENCE_SESSION_ID); | 385 | this._searchApeMessageKeyfram(this._conferApeMssages, ApeConsts.CONFERENCE_SESSION_ID); |
| 398 | this._searchApeMessageKeyfram(this._docApeMssages, ApeConsts.DOCSHARING_SESSION_ID); | 386 | this._searchApeMessageKeyfram(this._docApeMssages, ApeConsts.DOCSHARING_SESSION_ID); |
| 399 | 387 | ||
| 388 | + /* | ||
| 389 | + //旧的音视频查找关键帧数据,多路音视频的时候存在显示问题,已经废弃 | ||
| 400 | //this._searchApeMessageKeyfram(this._videoApeMssages, ApeConsts.VIDEO_SESSION_ID); | 390 | //this._searchApeMessageKeyfram(this._videoApeMssages, ApeConsts.VIDEO_SESSION_ID); |
| 401 | //this._searchApeMessageKeyfram(this._audioApeMssages, ApeConsts.AUDIO_SESSION_ID); | 391 | //this._searchApeMessageKeyfram(this._audioApeMssages, ApeConsts.AUDIO_SESSION_ID); |
| 392 | + */ | ||
| 402 | 393 | ||
| 394 | + //音视频模块的查找规则和其他模块不一样,音视频按频道查找,如果课堂内存在多个频道,都要查 | ||
| 403 | this.searchMediaApeMessageKeyfram(this.mediaChannleList); | 395 | this.searchMediaApeMessageKeyfram(this.mediaChannleList); |
| 404 | 396 | ||
| 405 | //聊天模块、白板标注模块的比较特殊,消息是累计的,默认最多30条 | 397 | //聊天模块、白板标注模块的比较特殊,消息是累计的,默认最多30条 |
| @@ -435,9 +427,9 @@ class RecordPlayBackParse extends Emiter { | @@ -435,9 +427,9 @@ class RecordPlayBackParse extends Emiter { | ||
| 435 | loger.log("SEEK->APE", ApeConsts(_apeId), this._recordPlaybackTimestamp, "没有查找到相连的数据"); | 427 | loger.log("SEEK->APE", ApeConsts(_apeId), this._recordPlaybackTimestamp, "没有查找到相连的数据"); |
| 436 | } | 428 | } |
| 437 | 429 | ||
| 438 | - //音视频模块seek的时候,查找当前seek点的关键帧数据 | 430 | + //音视频模块seek的时候,查找当前seek点的关键帧数据,所有频道的数据都需要查一下,否则多路视频的时候会显示不全 |
| 439 | searchMediaApeMessageKeyfram(_apeMessages){ | 431 | searchMediaApeMessageKeyfram(_apeMessages){ |
| 440 | - loger.log("searchMediaApeMessageKeyfram->SEEK->APE") | 432 | + loger.log("SEEK->查找音视频模块数据"); |
| 441 | if(_apeMessages) { | 433 | if(_apeMessages) { |
| 442 | for (let k in _apeMessages) { | 434 | for (let k in _apeMessages) { |
| 443 | let channelInfos = _apeMessages[k]; | 435 | let channelInfos = _apeMessages[k]; |
| @@ -447,7 +439,7 @@ class RecordPlayBackParse extends Emiter { | @@ -447,7 +439,7 @@ class RecordPlayBackParse extends Emiter { | ||
| 447 | messageItem = channelInfos[i]; | 439 | messageItem = channelInfos[i]; |
| 448 | if (messageItem) { | 440 | if (messageItem) { |
| 449 | keyFrameSeekTime = (this._recordPlaybackTimestamp - i); | 441 | keyFrameSeekTime = (this._recordPlaybackTimestamp - i); |
| 450 | - loger.log("searchMediaApeMessageKeyfram->SEEK->APE->messageItem",messageItem,'keyFrameSeekTime->',keyFrameSeekTime) | 442 | + loger.log("SEEK->查找音视频模块数据->",messageItem,'keyFrameSeekTime->',keyFrameSeekTime) |
| 451 | this._everSocketMsgReceivedHandler(messageItem.byteData, keyFrameSeekTime); | 443 | this._everSocketMsgReceivedHandler(messageItem.byteData, keyFrameSeekTime); |
| 452 | break; | 444 | break; |
| 453 | } | 445 | } |
| @@ -505,9 +497,10 @@ class RecordPlayBackParse extends Emiter { | @@ -505,9 +497,10 @@ class RecordPlayBackParse extends Emiter { | ||
| 505 | } | 497 | } |
| 506 | } | 498 | } |
| 507 | } | 499 | } |
| 508 | - // 数据同步处理 regBuffer已经解开的数据,timestamp 时间戳,data原始数据 ApeConsts.VIDEO_SESSION_ID | ||
| 509 | - _pduRegAdapterHandler(regBuffer,timestamp,data,sessionId) { | ||
| 510 | 500 | ||
| 501 | + //音视频的数据需要解析,然后按频道储存数据 | ||
| 502 | + // 解析pdu RCAdapterPdu的数据: regBuffer(RCAdapterPdu数据),timestamp(时间戳), data(mcu的原始数据) sessionId(类型) | ||
| 503 | + unPackpduRegAdapterHandler(regBuffer, timestamp, data, sessionId) { | ||
| 511 | let regPdu; | 504 | let regPdu; |
| 512 | let regItems ; | 505 | let regItems ; |
| 513 | let regItemSize ; | 506 | let regItemSize ; |
| @@ -521,18 +514,12 @@ class RecordPlayBackParse extends Emiter { | @@ -521,18 +514,12 @@ class RecordPlayBackParse extends Emiter { | ||
| 521 | console.warn('RCAdapterPdu->unpack-error->type类型不对') | 514 | console.warn('RCAdapterPdu->unpack-error->type类型不对') |
| 522 | return; | 515 | return; |
| 523 | } | 516 | } |
| 524 | - | ||
| 525 | - //onsole.log('RCAdapterPdu',regPdu) | ||
| 526 | - | ||
| 527 | - //loger.log(this._session_name + '数据同步消息'); | ||
| 528 | - //loger.log(this._session_name + '数据同步消息.同步条数', regItemSize,"seekTime->",seekTime); | ||
| 529 | for (var i = 0; i < regItemSize; ++i) { | 517 | for (var i = 0; i < regItemSize; ++i) { |
| 530 | let regItem = regItems[i]; | 518 | let regItem = regItems[i]; |
| 531 | let regItemType = regItem.type; | 519 | let regItemType = regItem.type; |
| 532 | let regItemData = regItem.itemData; | 520 | let regItemData = regItem.itemData; |
| 533 | 521 | ||
| 534 | //根据数据包中的type处理数据是否同步 | 522 | //根据数据包中的type处理数据是否同步 |
| 535 | - | ||
| 536 | if (pdu.RCPDU_REG_UPDATE_OBJ !== regItemType) { | 523 | if (pdu.RCPDU_REG_UPDATE_OBJ !== regItemType) { |
| 537 | if (pdu.RCPDU_REG_RESPONSE_OBJ == regItemType) { | 524 | if (pdu.RCPDU_REG_RESPONSE_OBJ == regItemType) { |
| 538 | let regResponsePdu = pdu['RCRegistryResponseObjPdu'].decode(regItemData); | 525 | let regResponsePdu = pdu['RCRegistryResponseObjPdu'].decode(regItemData); |
| @@ -552,25 +539,19 @@ class RecordPlayBackParse extends Emiter { | @@ -552,25 +539,19 @@ class RecordPlayBackParse extends Emiter { | ||
| 552 | 539 | ||
| 553 | switch (sub_type) { | 540 | switch (sub_type) { |
| 554 | case pdu.RCPDU_REG_ROSTER_INSERT_PDU: | 541 | case pdu.RCPDU_REG_ROSTER_INSERT_PDU: |
| 555 | - //let rosterInsertData = pdu['RCRegstryRosterInsertItemPdu'].decode(user_data); | ||
| 556 | - // loger.log('RCPDU_REG_ROSTER_INSERT_PDU---->'); | ||
| 557 | - | ||
| 558 | let rosterInsertData = pdu['RCRegistryRosterInsertItemPdu'].decode(user_data); | 542 | let rosterInsertData = pdu['RCRegistryRosterInsertItemPdu'].decode(user_data); |
| 559 | - // console.log('RCRegistryRosterInsertItemPdu',rosterInsertData) | 543 | + |
| 560 | let rosterInsertItems = rosterInsertData.items; | 544 | let rosterInsertItems = rosterInsertData.items; |
| 561 | let rosterInsertItemsLen = rosterInsertItems.length; | 545 | let rosterInsertItemsLen = rosterInsertItems.length; |
| 562 | for (let i = 0; i < rosterInsertItemsLen; ++i) { | 546 | for (let i = 0; i < rosterInsertItemsLen; ++i) { |
| 563 | let record = rosterInsertItems[i]; | 547 | let record = rosterInsertItems[i]; |
| 564 | let recordId = record.item_id; | 548 | let recordId = record.item_id; |
| 565 | let recordData = pdu['RCNodeInfoRecordPdu'].decode(record.item_data); | 549 | let recordData = pdu['RCNodeInfoRecordPdu'].decode(record.item_data); |
| 566 | - //this.rosterInsertHandler(recordId, recordData); | ||
| 567 | - //console.log('RCNodeInfoRecordPdu',recordData) | ||
| 568 | } | 550 | } |
| 569 | break; | 551 | break; |
| 570 | case pdu.RCPDU_REG_ROSTER_DELETE_PDU: | 552 | case pdu.RCPDU_REG_ROSTER_DELETE_PDU: |
| 571 | let rosterDelData = pdu['RCRegistryRosterDeleteItemPdu'].decode(user_data); | 553 | let rosterDelData = pdu['RCRegistryRosterDeleteItemPdu'].decode(user_data); |
| 572 | // console.log('RCRegistryRosterDeleteItemPdu',rosterDelData) | 554 | // console.log('RCRegistryRosterDeleteItemPdu',rosterDelData) |
| 573 | - // this.rosterDelHandler(rosterDelData.nodeId); | ||
| 574 | break; | 555 | break; |
| 575 | case pdu.RCPDU_REG_ROSTER_UPDATE_PDU: | 556 | case pdu.RCPDU_REG_ROSTER_UPDATE_PDU: |
| 576 | let rosterUpdateData = pdu['RCRegistryRosterUpdateItemPdu'].decode(user_data); | 557 | let rosterUpdateData = pdu['RCRegistryRosterUpdateItemPdu'].decode(user_data); |
| @@ -582,7 +563,6 @@ class RecordPlayBackParse extends Emiter { | @@ -582,7 +563,6 @@ class RecordPlayBackParse extends Emiter { | ||
| 582 | let nodeId = node.nodeId; | 563 | let nodeId = node.nodeId; |
| 583 | let nodeData = pdu['RCNodeInfoRecordPdu'].decode(node.nodeData); | 564 | let nodeData = pdu['RCNodeInfoRecordPdu'].decode(node.nodeData); |
| 584 | // console.log('RCNodeInfoRecordPdu',nodeData) | 565 | // console.log('RCNodeInfoRecordPdu',nodeData) |
| 585 | - //this.rosterUpdateHandler(nodeId, nodeData); | ||
| 586 | } | 566 | } |
| 587 | break; | 567 | break; |
| 588 | case pdu.RCPDU_REG_TABLE_INSERT_PDU: | 568 | case pdu.RCPDU_REG_TABLE_INSERT_PDU: |
| @@ -595,15 +575,10 @@ class RecordPlayBackParse extends Emiter { | @@ -595,15 +575,10 @@ class RecordPlayBackParse extends Emiter { | ||
| 595 | //loger.log("insertItem",insertItem); | 575 | //loger.log("insertItem",insertItem); |
| 596 | //this.tableInsertHandler(insertItem.owner, insertItem.itemIdx, insertItem.itemData); | 576 | //this.tableInsertHandler(insertItem.owner, insertItem.itemIdx, insertItem.itemData); |
| 597 | } | 577 | } |
| 598 | - | ||
| 599 | - //文档数据数组内部自己处理数组 | ||
| 600 | - //this.tableInsertApeHandler(tableInsertItems); | ||
| 601 | break; | 578 | break; |
| 602 | case pdu.RCPDU_REG_TABLE_DELETE_PDU: | 579 | case pdu.RCPDU_REG_TABLE_DELETE_PDU: |
| 603 | let tableDeleteData = pdu['RCRegistryTableDeleteItemPdu'].decode(user_data); | 580 | let tableDeleteData = pdu['RCRegistryTableDeleteItemPdu'].decode(user_data); |
| 604 | //console.log("tableDeleteData",object_id,tableDeleteData); | 581 | //console.log("tableDeleteData",object_id,tableDeleteData); |
| 605 | - // console.log('RCRegistryTableDeleteItemPdu',tableDeleteData) | ||
| 606 | - //this.tableDeleteHandler(object_id, tableDeleteData); | ||
| 607 | break; | 582 | break; |
| 608 | case pdu.RCPDU_REG_TABLE_UPDATE_PDU: | 583 | case pdu.RCPDU_REG_TABLE_UPDATE_PDU: |
| 609 | let tableUpdateData = pdu['RCRegistryTableUpdateItemPdu'].decode(user_data); | 584 | let tableUpdateData = pdu['RCRegistryTableUpdateItemPdu'].decode(user_data); |
| @@ -638,7 +613,6 @@ class RecordPlayBackParse extends Emiter { | @@ -638,7 +613,6 @@ class RecordPlayBackParse extends Emiter { | ||
| 638 | loger.log("RCAudioChannelInfoPdu->unPackPdu->error->" + tableItem.itemIdx + " err:" + err.message); | 613 | loger.log("RCAudioChannelInfoPdu->unPackPdu->error->" + tableItem.itemIdx + " err:" + err.message); |
| 639 | } | 614 | } |
| 640 | } | 615 | } |
| 641 | - | ||
| 642 | } | 616 | } |
| 643 | break; | 617 | break; |
| 644 | case pdu.RCPDU_REG_QUEUE_UPDATE_PDU: | 618 | case pdu.RCPDU_REG_QUEUE_UPDATE_PDU: |
| @@ -646,11 +620,11 @@ class RecordPlayBackParse extends Emiter { | @@ -646,11 +620,11 @@ class RecordPlayBackParse extends Emiter { | ||
| 646 | case pdu.RCPDU_REG_QUEUE_INSERT_PDU: | 620 | case pdu.RCPDU_REG_QUEUE_INSERT_PDU: |
| 647 | loger.warn('REG QUEUE ARE IGNORED'); | 621 | loger.warn('REG QUEUE ARE IGNORED'); |
| 648 | break; | 622 | break; |
| 649 | - | 623 | + default : |
| 624 | + break; | ||
| 650 | } | 625 | } |
| 651 | } | 626 | } |
| 652 | } | 627 | } |
| 653 | - | ||
| 654 | } | 628 | } |
| 655 | 629 | ||
| 656 | RecordPlayBackParse.prototype.CLASS_JOIN_RECORD_PLAYBACK_SUCCESS = RecordPlayBackParse.CLASS_JOIN_RECORD_PLAYBACK_SUCCESS = 'class_join_recordPlayback_success';//加入录制回放成功 | 630 | RecordPlayBackParse.prototype.CLASS_JOIN_RECORD_PLAYBACK_SUCCESS = RecordPlayBackParse.CLASS_JOIN_RECORD_PLAYBACK_SUCCESS = 'class_join_recordPlayback_success';//加入录制回放成功 |
-
请 注册 或 登录 后发表评论