李勇

1.修复录制回放消息和视频对应;2.默认禁用底层日志输出

... ... @@ -62,7 +62,7 @@ export default class MessageEntrance extends Emiter {
constructor() {
super();
//sdk 信息
GlobalConfig.sdkVersion = "v2.20.0.20171021";
GlobalConfig.sdkVersion = "v2.20.5.20171023";
loger.warn("sdkVersion:" + GlobalConfig.sdkVersion);
//设置
... ... @@ -2010,6 +2010,7 @@ export default class MessageEntrance extends Emiter {
}
if (_video_ape) {
//if(_data.status==WebRtcApe.RECORD_STATUS_1&&!_data.publishUrl){
loger.log("webRtc推流状态发生改变->发送同步消息",_data);
if(_data.status==WebRtcApe.RECORD_STATUS_1){
let publishData=this._getVideoPublishPath();
let publishUrl="";
... ...
... ... @@ -89,7 +89,7 @@ class Loger {
}
}
Loger.IS_DEBUG = true;
Loger.IS_DEBUG = false;
Loger.LOG = 3;
Loger.WARN = 2;
Loger.ERROR = 1;
... ...
... ... @@ -50,6 +50,9 @@ class RecordPlayBackParse extends Emiter {
this._musicShareApeMssages={};//伴音媒体共享
this._timerCounter = new TimerCounter();//计时器
this._timerCounter.addTimerCallBack(this._timerCounterUptate.bind(this), 1);
this.agoTiemstampMessages={};//ago推流时间戳消息数据集合
this.agoAllMedias={};//ago录制的文件集合
}
//method--------------------内部---------------------------------------------
... ... @@ -303,6 +306,7 @@ class RecordPlayBackParse extends Emiter {
//解析录制的rec数据
this.isLoadTxRecordInfo=true;
if(this.isLoadTxRecordInfo&&this.isLoadAgoRecordInfo&&this.isgetRecordFileURLFromAgo){
this.matchingVideoUrlFromTime(this.agoTiemstampMessages,this.agoAllMedias);
this.parseArrayBuf();
}
});
... ... @@ -310,6 +314,7 @@ class RecordPlayBackParse extends Emiter {
this.isLoadAgoRecordInfo=true;
//解析录制的rec数据
if(this.isLoadTxRecordInfo&&this.isLoadAgoRecordInfo&&this.isgetRecordFileURLFromAgo){
this.matchingVideoUrlFromTime(this.agoTiemstampMessages,this.agoAllMedias);
this.parseArrayBuf();
}
});
... ... @@ -317,11 +322,70 @@ class RecordPlayBackParse extends Emiter {
this.isgetRecordFileURLFromAgo=true;
//解析录制的rec数据
if(this.isLoadTxRecordInfo&&this.isLoadAgoRecordInfo&&this.isgetRecordFileURLFromAgo){
this.matchingVideoUrlFromTime(this.agoTiemstampMessages,this.agoAllMedias);
this.parseArrayBuf();
}
})
}
}
//时间戳转换为UTC 时间字符串
timestampToUTCTime(_timestamp){
var date=new Date(_timestamp);
var y=""+date.getFullYear();
var month=""+(date.getMonth()+1);
var d=""+date.getDate();
var h=""+(date.getHours()-8);//GMT 转UTC 减8
var minutes=""+date.getMinutes();
var s=""+date.getSeconds();
if (month.length<2){
month="0"+month;
}
if (d.length<2){
d="0"+d;
}
if (h.length<2){
h="0"+h;
}
if (minutes.length<2){
minutes="0"+minutes;
}
if (s.length<2){
s="0"+s;
}
var tiemStr=y+month+d+h+minutes+s;
//console.log(_timestamp,tiemStr,date);
return tiemStr
}
//匹配时间戳和录制的视频地址
matchingVideoUrlFromTime(_tiemstampMessages,_allMedias){
if(!_tiemstampMessages||!_allMedias){
console.log("没有数据无法解析匹配",_tiemstampMessages,_allMedias)
return;
}
let finelMediaInfo={};
let tItem;
for(let j in _tiemstampMessages){
tItem=_tiemstampMessages[j];
let videoUrl="";
if(_allMedias[tItem.uid+"_"+tItem.createTimeUTC]){
videoUrl=_allMedias[tItem.uid+"_"+tItem.createTimeUTC];
//console.log(tItem.uid+"_"+tItem.createTimeUTC,videoUrl);
}else {
let t=parseInt(tItem.createTimeUTC);
console.log(tItem.uid+"_"+t,"没有数据->查找最近的数据");
videoUrl=_allMedias[tItem.uid+"_"+(t-1)];
if(!videoUrl){
videoUrl=_allMedias[tItem.uid+"_"+(t+1)];
}
}
//console.log(tItem.uid+"_"+t+" "+videoUrl);
tItem.video_url=videoUrl;
finelMediaInfo[tItem.timestamp]=tItem;
MediaModule.streams[tItem.stream_id]=tItem.video_url;
}
console.log("finelMediaInfo",finelMediaInfo);
}
//获取媒体录制的地址信息-时间戳流名称和文件地址对应
getRecordFileURLFromAgo(_callback){
if(!GlobalConfig.getRecordFileURLAgoInterfaces){
... ... @@ -354,7 +418,7 @@ class RecordPlayBackParse extends Emiter {
}
})
.then(ret => {
loger.log('AGOR-获取媒体录制地址信息-完成',ret);
loger.log('AGOR-获取媒体录制地址信息-完成');
/* {"code": 200,
"returnData":{
"data":{
... ... @@ -408,6 +472,21 @@ class RecordPlayBackParse extends Emiter {
})
.then(ret => {
loger.log('AG-获取媒体录制信息-完成',ret);
//console.log("getRecordInfo success",ret);
if(ret&&ret.returnData&&ret.returnData.data){
let dataArr=ret.returnData.data;
for (let i=0;i<dataArr.length;i++){
let item=dataArr[i];
if(item.status==1){
//console.log(JSON.stringify(item));
let time=parseInt(item.createTime);
item.createTimeUTC=this.timestampToUTCTime(time);
item.stream_id=item.channel+"_"+item.userId+"_"+item.timestamp;
this.agoTiemstampMessages[item.timestamp]=item;
}
}
}
console.log("agoTiemstampMessages", this.agoTiemstampMessages);
if(_callback){
_callback();
}
... ... @@ -497,7 +576,7 @@ class RecordPlayBackParse extends Emiter {
loger.log("AGOR-外部录制的视频数据无效");
return;
}
let backFile=_data.backFile;
/* let backFile=_data.backFile;
if(!backFile){
loger.log("AGOR-外部录制的视频数据无效->backFile");
return;
... ... @@ -518,7 +597,30 @@ class RecordPlayBackParse extends Emiter {
}
}
}
console.log("AGO MediaModule.streams", MediaModule.streams);
console.log("AGO MediaModule.streams", MediaModule.streams);*/
if(!_data.fschannefiles) return;
let items=_data.fschannefiles;
//console.log(JSON.stringify(items));
for(let k=0;k<items.length;k++) {
let item=items[k];
// if(item.indexOf(".aac")>=0||item.indexOf(".webm")>=0){
// console.log(item)
// }
//console.log("item.indexOf ts",item.indexOf(".ts"))
// if(item.indexOf(".m3u8")>=0&&item.indexOf(".ts")<0&&item.indexOf(".m3u8.swp")<0){
let indexStr=".m3u8";
if(item.lastIndexOf(indexStr)+indexStr.length==item.length){
//http://networkschool.xuedianyun.com:8899/20171021/markettest_188409305_030739/555257911_20171021031224730.mp4
//http://networkschool.xuedianyun.com:8899/20171021/markettest_1785982263_080003/572805001_20171021080041402_av.m3u8
let itemUrl=_data.channefiles+"/"+item;
//console.log(item,itemUrl);
item=item.substr(0,item.length-11);
this.agoAllMedias[item]=itemUrl;
}
}
console.log("agoAllMedias",this.agoAllMedias);
}
//解析TXY录制的视频数据,数组[]
... ...
... ... @@ -647,7 +647,7 @@ class ConferApe extends Ape {
let adapterPdu = new pdu['RCAdapterPdu'];
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
adapterPdu.item.push(adapterItemPdu);
loger.log('发送更新课堂信息->');
//loger.log('发送更新课堂信息->');
this.sendUniform(adapterPdu, true);
}
... ...