修改录制文件和录制消息匹配规则,录制消息的来源来自MCU录制的rec文件,不再从nodeJs获取,有些数据丢失;更换了录制回放的文件地址
正在显示
3 个修改的文件
包含
66 行增加
和
13 行删除
@@ -63,7 +63,7 @@ export default class MessageEntrance extends Emiter { | @@ -63,7 +63,7 @@ export default class MessageEntrance extends Emiter { | ||
63 | super(); | 63 | super(); |
64 | this.lastClassActiveTime=0;//最后一次课堂激活的时间戳 | 64 | this.lastClassActiveTime=0;//最后一次课堂激活的时间戳 |
65 | //sdk 信息 | 65 | //sdk 信息 |
66 | - GlobalConfig.sdkVersion = "v2.29.5.20171114"; | 66 | + GlobalConfig.sdkVersion = "v2.30.2.20171117"; |
67 | loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); | 67 | loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); |
68 | console.log("sdkVersion:" + GlobalConfig.sdkVersion); | 68 | console.log("sdkVersion:" + GlobalConfig.sdkVersion); |
69 | //设置 | 69 | //设置 |
@@ -10,7 +10,7 @@ import EngineUtils from 'EngineUtils'; | @@ -10,7 +10,7 @@ import EngineUtils from 'EngineUtils'; | ||
10 | 10 | ||
11 | 11 | ||
12 | // 日志对象 | 12 | // 日志对象 |
13 | -const loger = Loger.getLoger('RecordInfoParse'); | 13 | +const loger = Loger.getLoger('RecordInfoMatch'); |
14 | class RecordInfoMatch extends Emiter { | 14 | class RecordInfoMatch extends Emiter { |
15 | constructor() { | 15 | constructor() { |
16 | super(); | 16 | super(); |
@@ -24,10 +24,18 @@ class RecordInfoMatch extends Emiter { | @@ -24,10 +24,18 @@ class RecordInfoMatch extends Emiter { | ||
24 | this.unMatchUid = {};//没有匹配到的uid | 24 | this.unMatchUid = {};//没有匹配到的uid |
25 | } | 25 | } |
26 | 26 | ||
27 | - start() { | ||
28 | - let serverIp = GlobalConfig.recordFileSever || "123.56.73.119:8080"; | 27 | + start(_recordMessagesList) { |
28 | + this.recordMessagesList=_recordMessagesList; | ||
29 | + let serverIp = GlobalConfig.recordFileSever || "playbak.xuedianyun.com:8080"; | ||
29 | this.filePath = `${GlobalConfig.locationProtocol + serverIp}`; | 30 | this.filePath = `${GlobalConfig.locationProtocol + serverIp}`; |
30 | - this.getRecordInfo(()=> { | 31 | + |
32 | + if(GlobalConfig.locationProtocol=="https://"){ | ||
33 | + this.filePath=this.filePath.replace(":8080",""); | ||
34 | + } | ||
35 | + | ||
36 | + //this.getRecordInfo(()=> { | ||
37 | + this.parseRecordMessage(_recordMessagesList,()=> { | ||
38 | + console.log("JSON数据列表",this.jsonPathList); | ||
31 | let requestLen = Object.keys(this.jsonPathList).length; | 39 | let requestLen = Object.keys(this.jsonPathList).length; |
32 | let currentLen = 0; | 40 | let currentLen = 0; |
33 | let fileNameArr; | 41 | let fileNameArr; |
@@ -53,7 +61,7 @@ class RecordInfoMatch extends Emiter { | @@ -53,7 +61,7 @@ class RecordInfoMatch extends Emiter { | ||
53 | } | 61 | } |
54 | //筛除一些重复流地址,会出现多录制的情况,保留一个即可 | 62 | //筛除一些重复流地址,会出现多录制的情况,保留一个即可 |
55 | this.m3u8jsonDataList[fileNameArr[0]][stream] = { | 63 | this.m3u8jsonDataList[fileNameArr[0]][stream] = { |
56 | - video_url: this.filePath + "/" + i + "/" + k + "/" + j, | 64 | + video_url: this.filePath + "/samples/" + i + "/" + k + "/" + j, |
57 | creatDate: i, | 65 | creatDate: i, |
58 | folder: k, | 66 | folder: k, |
59 | stream: j, | 67 | stream: j, |
@@ -102,7 +110,8 @@ class RecordInfoMatch extends Emiter { | @@ -102,7 +110,8 @@ class RecordInfoMatch extends Emiter { | ||
102 | }) | 110 | }) |
103 | .then(ret => { | 111 | .then(ret => { |
104 | loger.log('AG-获取媒体录制信息-完成'); | 112 | loger.log('AG-获取媒体录制信息-完成'); |
105 | - for (let i = 0; i < ret.returnData.data.length; i++) { | 113 | + this.parseRecordMessage(ret.returnData.data,_callback); |
114 | + /* for (let i = 0; i < ret.returnData.data.length; i++) { | ||
106 | let item = ret.returnData.data[i]; | 115 | let item = ret.returnData.data[i]; |
107 | if (item.status == 1) { | 116 | if (item.status == 1) { |
108 | this.streamInfoLen++; | 117 | this.streamInfoLen++; |
@@ -126,7 +135,7 @@ class RecordInfoMatch extends Emiter { | @@ -126,7 +135,7 @@ class RecordInfoMatch extends Emiter { | ||
126 | } | 135 | } |
127 | if (_callback) { | 136 | if (_callback) { |
128 | _callback(); | 137 | _callback(); |
129 | - } | 138 | + }*/ |
130 | }) | 139 | }) |
131 | .catch(err => { | 140 | .catch(err => { |
132 | loger.error(`AG-获取媒体录制信息-异常.状态码:${err}`); | 141 | loger.error(`AG-获取媒体录制信息-异常.状态码:${err}`); |
@@ -136,6 +145,38 @@ class RecordInfoMatch extends Emiter { | @@ -136,6 +145,38 @@ class RecordInfoMatch extends Emiter { | ||
136 | }); | 145 | }); |
137 | } | 146 | } |
138 | 147 | ||
148 | + parseRecordMessage(_data,_callback){ | ||
149 | + if(!_data||_data.length<1){ | ||
150 | + console.log("录制消息数据无效",_data) | ||
151 | + return; | ||
152 | + } | ||
153 | + for (let i = 0; i <_data.length; i++) { | ||
154 | + let item =_data[i]; | ||
155 | + if (item.status == 1) { | ||
156 | + this.streamInfoLen++; | ||
157 | + //console.log(JSON.stringify(item)); | ||
158 | + delete item.appId; | ||
159 | + delete item.id; | ||
160 | + let time = parseInt(item.createTime); | ||
161 | + let timeInfo = this.timestampToUTCTime(time); | ||
162 | + //return {yymmddhhmmss:yymmddhhmmss,yymmdd:yymmdd} | ||
163 | + item.seek = 0; | ||
164 | + item.createTimeUTC = timeInfo.yymmddhhmmss; | ||
165 | + item.creatDate = timeInfo.yymmdd; | ||
166 | + this.jsonPathList [timeInfo.yymmdd] = this.filePath + "/samples/" + timeInfo.yymmdd + "/json/" + item.channel + ".json"; | ||
167 | + item.stream_id = item.channel + "_" + item.userId + "_" + item.timestamp; | ||
168 | + | ||
169 | + if (!this.recordMessages[item.uid]) { | ||
170 | + this.recordMessages[item.uid] = {}; | ||
171 | + } | ||
172 | + this.recordMessages[item.uid][item.timestamp] = item; | ||
173 | + } | ||
174 | + } | ||
175 | + if (_callback) { | ||
176 | + _callback(); | ||
177 | + } | ||
178 | + } | ||
179 | + | ||
139 | getRecordFileJSON(path, _callback) { | 180 | getRecordFileJSON(path, _callback) { |
140 | let url = path + "?t=" + new Date().getTime(); | 181 | let url = path + "?t=" + new Date().getTime(); |
141 | /* $.ajax( | 182 | /* $.ajax( |
@@ -39,6 +39,7 @@ class RecordPlayBackParse extends Emiter { | @@ -39,6 +39,7 @@ class RecordPlayBackParse extends Emiter { | ||
39 | this.isgetRecordFileURLFromAgo = false;//是否已经加载AGO的录制文件地址数据 | 39 | this.isgetRecordFileURLFromAgo = false;//是否已经加载AGO的录制文件地址数据 |
40 | 40 | ||
41 | this._apes = {}; | 41 | this._apes = {}; |
42 | + this.videoPublishMessages=[];//记录推流控制的消息 | ||
42 | this._videoApeBroadcastMssages = {};//视频模块的广播消息 | 43 | this._videoApeBroadcastMssages = {};//视频模块的广播消息 |
43 | this.mediaChannleList = {}; | 44 | this.mediaChannleList = {}; |
44 | this._conferApeMssages = {};//会议数据 | 45 | this._conferApeMssages = {};//会议数据 |
@@ -229,8 +230,9 @@ class RecordPlayBackParse extends Emiter { | @@ -229,8 +230,9 @@ class RecordPlayBackParse extends Emiter { | ||
229 | } | 230 | } |
230 | } | 231 | } |
231 | console.warn("最终匹配完成的视频流数据", MediaModule.streams); | 232 | console.warn("最终匹配完成的视频流数据", MediaModule.streams); |
232 | - //解析课堂录制的rec文件 | ||
233 | - this.parseArrayBuf(); | 233 | + this._emit(RecordPlayBackParse.CLASS_JOIN_RECORD_PLAYBACK_SUCCESS, {"recordPlaybackMaxTime": this._recordPlaybackMaxTime}); |
234 | + ////解析课堂录制的rec文件 | ||
235 | + //this.parseArrayBuf(); | ||
234 | } | 236 | } |
235 | 237 | ||
236 | //保存各个模块的MCU原始数据 | 238 | //保存各个模块的MCU原始数据 |
@@ -353,8 +355,9 @@ class RecordPlayBackParse extends Emiter { | @@ -353,8 +355,9 @@ class RecordPlayBackParse extends Emiter { | ||
353 | } | 355 | } |
354 | })*/ | 356 | })*/ |
355 | this.getMediaRecrodInfoFromTx(()=> { | 357 | this.getMediaRecrodInfoFromTx(()=> { |
356 | - //AGO启动录制消息和文件匹配 | ||
357 | - this.recordInfoMatch.start(); | 358 | + /*//AGO启动录制消息和文件匹配 |
359 | + this.recordInfoMatch.start();*/ | ||
360 | + this.parseArrayBuf(); | ||
358 | }); | 361 | }); |
359 | 362 | ||
360 | } | 363 | } |
@@ -771,7 +774,12 @@ class RecordPlayBackParse extends Emiter { | @@ -771,7 +774,12 @@ class RecordPlayBackParse extends Emiter { | ||
771 | console.log('聊天数据', this._chatApeMssages); | 774 | console.log('聊天数据', this._chatApeMssages); |
772 | console.log('视频模块广播消息', this._videoApeBroadcastMssages); | 775 | console.log('视频模块广播消息', this._videoApeBroadcastMssages); |
773 | loger.log("录制回放数据解析完成,录制回放的总时间长为->", this._recordPlaybackMaxTime, "recordTimestamp:" + GlobalConfig.recordTimestamp); | 776 | loger.log("录制回放数据解析完成,录制回放的总时间长为->", this._recordPlaybackMaxTime, "recordTimestamp:" + GlobalConfig.recordTimestamp); |
774 | - this._emit(RecordPlayBackParse.CLASS_JOIN_RECORD_PLAYBACK_SUCCESS, {"recordPlaybackMaxTime": this._recordPlaybackMaxTime}); | 777 | + console.log('videoPublishMessages', this.videoPublishMessages); |
778 | + | ||
779 | + //AGO启动录制消息和文件匹配 | ||
780 | + this.recordInfoMatch.start(this.videoPublishMessages); | ||
781 | + | ||
782 | + //this._emit(RecordPlayBackParse.CLASS_JOIN_RECORD_PLAYBACK_SUCCESS, {"recordPlaybackMaxTime": this._recordPlaybackMaxTime}); | ||
775 | } | 783 | } |
776 | 784 | ||
777 | //根据时间查找数据 | 785 | //根据时间查找数据 |
@@ -1078,6 +1086,10 @@ class RecordPlayBackParse extends Emiter { | @@ -1078,6 +1086,10 @@ class RecordPlayBackParse extends Emiter { | ||
1078 | timestamp: timestamp | 1086 | timestamp: timestamp |
1079 | }; | 1087 | }; |
1080 | //this._videoApeBroadcastMssages[timestamp]={parseData:videoReceivePdu,byteData:data,timestamp: timestamp}; | 1088 | //this._videoApeBroadcastMssages[timestamp]={parseData:videoReceivePdu,byteData:data,timestamp: timestamp}; |
1089 | + if(videoReceivePdu&&videoReceivePdu.data){ | ||
1090 | + videoReceivePdu.data.createTime=videoReceivePdu.data.timestamp; | ||
1091 | + } | ||
1092 | + this.videoPublishMessages.push(videoReceivePdu.data); | ||
1081 | } | 1093 | } |
1082 | 1094 | ||
1083 | } catch (err) { | 1095 | } catch (err) { |
-
请 注册 或 登录 后发表评论