diff --git a/src/EngineEntrance.js b/src/EngineEntrance.js index e1eaf3d..5774bc0 100644 --- a/src/EngineEntrance.js +++ b/src/EngineEntrance.js @@ -63,7 +63,7 @@ export default class MessageEntrance extends Emiter { super(); this.lastClassActiveTime=0;//最后一次课堂激活的时间戳 //sdk 信息 - GlobalConfig.sdkVersion = "v2.29.5.20171114"; + GlobalConfig.sdkVersion = "v2.30.2.20171117"; loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); console.log("sdkVersion:" + GlobalConfig.sdkVersion); //设置 diff --git a/src/RecordInfoMatch.js b/src/RecordInfoMatch.js index 23a366a..331f549 100644 --- a/src/RecordInfoMatch.js +++ b/src/RecordInfoMatch.js @@ -10,7 +10,7 @@ import EngineUtils from 'EngineUtils'; // 日志对象 -const loger = Loger.getLoger('RecordInfoParse'); +const loger = Loger.getLoger('RecordInfoMatch'); class RecordInfoMatch extends Emiter { constructor() { super(); @@ -24,10 +24,18 @@ class RecordInfoMatch extends Emiter { this.unMatchUid = {};//没有匹配到的uid } - start() { - let serverIp = GlobalConfig.recordFileSever || "123.56.73.119:8080"; + start(_recordMessagesList) { + this.recordMessagesList=_recordMessagesList; + let serverIp = GlobalConfig.recordFileSever || "playbak.xuedianyun.com:8080"; this.filePath = `${GlobalConfig.locationProtocol + serverIp}`; - this.getRecordInfo(()=> { + + if(GlobalConfig.locationProtocol=="https://"){ + this.filePath=this.filePath.replace(":8080",""); + } + + //this.getRecordInfo(()=> { + this.parseRecordMessage(_recordMessagesList,()=> { + console.log("JSON数据列表",this.jsonPathList); let requestLen = Object.keys(this.jsonPathList).length; let currentLen = 0; let fileNameArr; @@ -53,7 +61,7 @@ class RecordInfoMatch extends Emiter { } //筛除一些重复流地址,会出现多录制的情况,保留一个即可 this.m3u8jsonDataList[fileNameArr[0]][stream] = { - video_url: this.filePath + "/" + i + "/" + k + "/" + j, + video_url: this.filePath + "/samples/" + i + "/" + k + "/" + j, creatDate: i, folder: k, stream: j, @@ -102,7 +110,8 @@ class RecordInfoMatch extends Emiter { }) .then(ret => { loger.log('AG-获取媒体录制信息-完成'); - for (let i = 0; i < ret.returnData.data.length; i++) { + this.parseRecordMessage(ret.returnData.data,_callback); + /* for (let i = 0; i < ret.returnData.data.length; i++) { let item = ret.returnData.data[i]; if (item.status == 1) { this.streamInfoLen++; @@ -126,7 +135,7 @@ class RecordInfoMatch extends Emiter { } if (_callback) { _callback(); - } + }*/ }) .catch(err => { loger.error(`AG-获取媒体录制信息-异常.状态码:${err}`); @@ -136,6 +145,38 @@ class RecordInfoMatch extends Emiter { }); } + parseRecordMessage(_data,_callback){ + if(!_data||_data.length<1){ + console.log("录制消息数据无效",_data) + return; + } + for (let i = 0; i <_data.length; i++) { + let item =_data[i]; + if (item.status == 1) { + this.streamInfoLen++; + //console.log(JSON.stringify(item)); + delete item.appId; + delete item.id; + let time = parseInt(item.createTime); + let timeInfo = this.timestampToUTCTime(time); + //return {yymmddhhmmss:yymmddhhmmss,yymmdd:yymmdd} + item.seek = 0; + item.createTimeUTC = timeInfo.yymmddhhmmss; + item.creatDate = timeInfo.yymmdd; + this.jsonPathList [timeInfo.yymmdd] = this.filePath + "/samples/" + timeInfo.yymmdd + "/json/" + item.channel + ".json"; + item.stream_id = item.channel + "_" + item.userId + "_" + item.timestamp; + + if (!this.recordMessages[item.uid]) { + this.recordMessages[item.uid] = {}; + } + this.recordMessages[item.uid][item.timestamp] = item; + } + } + if (_callback) { + _callback(); + } + } + getRecordFileJSON(path, _callback) { let url = path + "?t=" + new Date().getTime(); /* $.ajax( diff --git a/src/RecordPlayBackParse.js b/src/RecordPlayBackParse.js index 7f3ed62..6e6a5dd 100644 --- a/src/RecordPlayBackParse.js +++ b/src/RecordPlayBackParse.js @@ -39,6 +39,7 @@ class RecordPlayBackParse extends Emiter { this.isgetRecordFileURLFromAgo = false;//是否已经加载AGO的录制文件地址数据 this._apes = {}; + this.videoPublishMessages=[];//记录推流控制的消息 this._videoApeBroadcastMssages = {};//视频模块的广播消息 this.mediaChannleList = {}; this._conferApeMssages = {};//会议数据 @@ -229,8 +230,9 @@ class RecordPlayBackParse extends Emiter { } } console.warn("最终匹配完成的视频流数据", MediaModule.streams); - //解析课堂录制的rec文件 - this.parseArrayBuf(); + this._emit(RecordPlayBackParse.CLASS_JOIN_RECORD_PLAYBACK_SUCCESS, {"recordPlaybackMaxTime": this._recordPlaybackMaxTime}); + ////解析课堂录制的rec文件 + //this.parseArrayBuf(); } //保存各个模块的MCU原始数据 @@ -353,8 +355,9 @@ class RecordPlayBackParse extends Emiter { } })*/ this.getMediaRecrodInfoFromTx(()=> { - //AGO启动录制消息和文件匹配 - this.recordInfoMatch.start(); + /*//AGO启动录制消息和文件匹配 + this.recordInfoMatch.start();*/ + this.parseArrayBuf(); }); } @@ -771,7 +774,12 @@ class RecordPlayBackParse extends Emiter { console.log('聊天数据', this._chatApeMssages); console.log('视频模块广播消息', this._videoApeBroadcastMssages); loger.log("录制回放数据解析完成,录制回放的总时间长为->", this._recordPlaybackMaxTime, "recordTimestamp:" + GlobalConfig.recordTimestamp); - this._emit(RecordPlayBackParse.CLASS_JOIN_RECORD_PLAYBACK_SUCCESS, {"recordPlaybackMaxTime": this._recordPlaybackMaxTime}); + console.log('videoPublishMessages', this.videoPublishMessages); + + //AGO启动录制消息和文件匹配 + this.recordInfoMatch.start(this.videoPublishMessages); + + //this._emit(RecordPlayBackParse.CLASS_JOIN_RECORD_PLAYBACK_SUCCESS, {"recordPlaybackMaxTime": this._recordPlaybackMaxTime}); } //根据时间查找数据 @@ -1078,6 +1086,10 @@ class RecordPlayBackParse extends Emiter { timestamp: timestamp }; //this._videoApeBroadcastMssages[timestamp]={parseData:videoReceivePdu,byteData:data,timestamp: timestamp}; + if(videoReceivePdu&&videoReceivePdu.data){ + videoReceivePdu.data.createTime=videoReceivePdu.data.timestamp; + } + this.videoPublishMessages.push(videoReceivePdu.data); } } catch (err) {