正在显示
4 个修改的文件
包含
109 行增加
和
6 行删除
| @@ -62,7 +62,7 @@ export default class MessageEntrance extends Emiter { | @@ -62,7 +62,7 @@ export default class MessageEntrance extends Emiter { | ||
| 62 | constructor() { | 62 | constructor() { |
| 63 | super(); | 63 | super(); |
| 64 | //sdk 信息 | 64 | //sdk 信息 |
| 65 | - GlobalConfig.sdkVersion = "v2.20.0.20171021"; | 65 | + GlobalConfig.sdkVersion = "v2.20.5.20171023"; |
| 66 | loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); | 66 | loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); |
| 67 | 67 | ||
| 68 | //设置 | 68 | //设置 |
| @@ -2010,6 +2010,7 @@ export default class MessageEntrance extends Emiter { | @@ -2010,6 +2010,7 @@ export default class MessageEntrance extends Emiter { | ||
| 2010 | } | 2010 | } |
| 2011 | if (_video_ape) { | 2011 | if (_video_ape) { |
| 2012 | //if(_data.status==WebRtcApe.RECORD_STATUS_1&&!_data.publishUrl){ | 2012 | //if(_data.status==WebRtcApe.RECORD_STATUS_1&&!_data.publishUrl){ |
| 2013 | + loger.log("webRtc推流状态发生改变->发送同步消息",_data); | ||
| 2013 | if(_data.status==WebRtcApe.RECORD_STATUS_1){ | 2014 | if(_data.status==WebRtcApe.RECORD_STATUS_1){ |
| 2014 | let publishData=this._getVideoPublishPath(); | 2015 | let publishData=this._getVideoPublishPath(); |
| 2015 | let publishUrl=""; | 2016 | let publishUrl=""; |
| @@ -50,6 +50,9 @@ class RecordPlayBackParse extends Emiter { | @@ -50,6 +50,9 @@ class RecordPlayBackParse extends Emiter { | ||
| 50 | this._musicShareApeMssages={};//伴音媒体共享 | 50 | this._musicShareApeMssages={};//伴音媒体共享 |
| 51 | this._timerCounter = new TimerCounter();//计时器 | 51 | this._timerCounter = new TimerCounter();//计时器 |
| 52 | this._timerCounter.addTimerCallBack(this._timerCounterUptate.bind(this), 1); | 52 | this._timerCounter.addTimerCallBack(this._timerCounterUptate.bind(this), 1); |
| 53 | + | ||
| 54 | + this.agoTiemstampMessages={};//ago推流时间戳消息数据集合 | ||
| 55 | + this.agoAllMedias={};//ago录制的文件集合 | ||
| 53 | } | 56 | } |
| 54 | 57 | ||
| 55 | //method--------------------内部--------------------------------------------- | 58 | //method--------------------内部--------------------------------------------- |
| @@ -303,6 +306,7 @@ class RecordPlayBackParse extends Emiter { | @@ -303,6 +306,7 @@ class RecordPlayBackParse extends Emiter { | ||
| 303 | //解析录制的rec数据 | 306 | //解析录制的rec数据 |
| 304 | this.isLoadTxRecordInfo=true; | 307 | this.isLoadTxRecordInfo=true; |
| 305 | if(this.isLoadTxRecordInfo&&this.isLoadAgoRecordInfo&&this.isgetRecordFileURLFromAgo){ | 308 | if(this.isLoadTxRecordInfo&&this.isLoadAgoRecordInfo&&this.isgetRecordFileURLFromAgo){ |
| 309 | + this.matchingVideoUrlFromTime(this.agoTiemstampMessages,this.agoAllMedias); | ||
| 306 | this.parseArrayBuf(); | 310 | this.parseArrayBuf(); |
| 307 | } | 311 | } |
| 308 | }); | 312 | }); |
| @@ -310,6 +314,7 @@ class RecordPlayBackParse extends Emiter { | @@ -310,6 +314,7 @@ class RecordPlayBackParse extends Emiter { | ||
| 310 | this.isLoadAgoRecordInfo=true; | 314 | this.isLoadAgoRecordInfo=true; |
| 311 | //解析录制的rec数据 | 315 | //解析录制的rec数据 |
| 312 | if(this.isLoadTxRecordInfo&&this.isLoadAgoRecordInfo&&this.isgetRecordFileURLFromAgo){ | 316 | if(this.isLoadTxRecordInfo&&this.isLoadAgoRecordInfo&&this.isgetRecordFileURLFromAgo){ |
| 317 | + this.matchingVideoUrlFromTime(this.agoTiemstampMessages,this.agoAllMedias); | ||
| 313 | this.parseArrayBuf(); | 318 | this.parseArrayBuf(); |
| 314 | } | 319 | } |
| 315 | }); | 320 | }); |
| @@ -317,11 +322,70 @@ class RecordPlayBackParse extends Emiter { | @@ -317,11 +322,70 @@ class RecordPlayBackParse extends Emiter { | ||
| 317 | this.isgetRecordFileURLFromAgo=true; | 322 | this.isgetRecordFileURLFromAgo=true; |
| 318 | //解析录制的rec数据 | 323 | //解析录制的rec数据 |
| 319 | if(this.isLoadTxRecordInfo&&this.isLoadAgoRecordInfo&&this.isgetRecordFileURLFromAgo){ | 324 | if(this.isLoadTxRecordInfo&&this.isLoadAgoRecordInfo&&this.isgetRecordFileURLFromAgo){ |
| 325 | + this.matchingVideoUrlFromTime(this.agoTiemstampMessages,this.agoAllMedias); | ||
| 320 | this.parseArrayBuf(); | 326 | this.parseArrayBuf(); |
| 321 | } | 327 | } |
| 322 | }) | 328 | }) |
| 323 | } | 329 | } |
| 324 | } | 330 | } |
| 331 | + //时间戳转换为UTC 时间字符串 | ||
| 332 | + timestampToUTCTime(_timestamp){ | ||
| 333 | + var date=new Date(_timestamp); | ||
| 334 | + var y=""+date.getFullYear(); | ||
| 335 | + var month=""+(date.getMonth()+1); | ||
| 336 | + var d=""+date.getDate(); | ||
| 337 | + var h=""+(date.getHours()-8);//GMT 转UTC 减8 | ||
| 338 | + var minutes=""+date.getMinutes(); | ||
| 339 | + var s=""+date.getSeconds(); | ||
| 340 | + if (month.length<2){ | ||
| 341 | + month="0"+month; | ||
| 342 | + } | ||
| 343 | + if (d.length<2){ | ||
| 344 | + d="0"+d; | ||
| 345 | + } | ||
| 346 | + if (h.length<2){ | ||
| 347 | + h="0"+h; | ||
| 348 | + } | ||
| 349 | + if (minutes.length<2){ | ||
| 350 | + minutes="0"+minutes; | ||
| 351 | + } | ||
| 352 | + if (s.length<2){ | ||
| 353 | + s="0"+s; | ||
| 354 | + } | ||
| 355 | + var tiemStr=y+month+d+h+minutes+s; | ||
| 356 | + //console.log(_timestamp,tiemStr,date); | ||
| 357 | + return tiemStr | ||
| 358 | + } | ||
| 359 | + //匹配时间戳和录制的视频地址 | ||
| 360 | + matchingVideoUrlFromTime(_tiemstampMessages,_allMedias){ | ||
| 361 | + if(!_tiemstampMessages||!_allMedias){ | ||
| 362 | + console.log("没有数据无法解析匹配",_tiemstampMessages,_allMedias) | ||
| 363 | + return; | ||
| 364 | + } | ||
| 365 | + let finelMediaInfo={}; | ||
| 366 | + let tItem; | ||
| 367 | + for(let j in _tiemstampMessages){ | ||
| 368 | + tItem=_tiemstampMessages[j]; | ||
| 369 | + let videoUrl=""; | ||
| 370 | + if(_allMedias[tItem.uid+"_"+tItem.createTimeUTC]){ | ||
| 371 | + videoUrl=_allMedias[tItem.uid+"_"+tItem.createTimeUTC]; | ||
| 372 | + //console.log(tItem.uid+"_"+tItem.createTimeUTC,videoUrl); | ||
| 373 | + }else { | ||
| 374 | + let t=parseInt(tItem.createTimeUTC); | ||
| 375 | + console.log(tItem.uid+"_"+t,"没有数据->查找最近的数据"); | ||
| 376 | + videoUrl=_allMedias[tItem.uid+"_"+(t-1)]; | ||
| 377 | + if(!videoUrl){ | ||
| 378 | + videoUrl=_allMedias[tItem.uid+"_"+(t+1)]; | ||
| 379 | + } | ||
| 380 | + } | ||
| 381 | + //console.log(tItem.uid+"_"+t+" "+videoUrl); | ||
| 382 | + tItem.video_url=videoUrl; | ||
| 383 | + finelMediaInfo[tItem.timestamp]=tItem; | ||
| 384 | + MediaModule.streams[tItem.stream_id]=tItem.video_url; | ||
| 385 | + } | ||
| 386 | + console.log("finelMediaInfo",finelMediaInfo); | ||
| 387 | + } | ||
| 388 | + | ||
| 325 | //获取媒体录制的地址信息-时间戳流名称和文件地址对应 | 389 | //获取媒体录制的地址信息-时间戳流名称和文件地址对应 |
| 326 | getRecordFileURLFromAgo(_callback){ | 390 | getRecordFileURLFromAgo(_callback){ |
| 327 | if(!GlobalConfig.getRecordFileURLAgoInterfaces){ | 391 | if(!GlobalConfig.getRecordFileURLAgoInterfaces){ |
| @@ -354,7 +418,7 @@ class RecordPlayBackParse extends Emiter { | @@ -354,7 +418,7 @@ class RecordPlayBackParse extends Emiter { | ||
| 354 | } | 418 | } |
| 355 | }) | 419 | }) |
| 356 | .then(ret => { | 420 | .then(ret => { |
| 357 | - loger.log('AGOR-获取媒体录制地址信息-完成',ret); | 421 | + loger.log('AGOR-获取媒体录制地址信息-完成'); |
| 358 | /* {"code": 200, | 422 | /* {"code": 200, |
| 359 | "returnData":{ | 423 | "returnData":{ |
| 360 | "data":{ | 424 | "data":{ |
| @@ -408,6 +472,21 @@ class RecordPlayBackParse extends Emiter { | @@ -408,6 +472,21 @@ class RecordPlayBackParse extends Emiter { | ||
| 408 | }) | 472 | }) |
| 409 | .then(ret => { | 473 | .then(ret => { |
| 410 | loger.log('AG-获取媒体录制信息-完成',ret); | 474 | loger.log('AG-获取媒体录制信息-完成',ret); |
| 475 | + //console.log("getRecordInfo success",ret); | ||
| 476 | + if(ret&&ret.returnData&&ret.returnData.data){ | ||
| 477 | + let dataArr=ret.returnData.data; | ||
| 478 | + for (let i=0;i<dataArr.length;i++){ | ||
| 479 | + let item=dataArr[i]; | ||
| 480 | + if(item.status==1){ | ||
| 481 | + //console.log(JSON.stringify(item)); | ||
| 482 | + let time=parseInt(item.createTime); | ||
| 483 | + item.createTimeUTC=this.timestampToUTCTime(time); | ||
| 484 | + item.stream_id=item.channel+"_"+item.userId+"_"+item.timestamp; | ||
| 485 | + this.agoTiemstampMessages[item.timestamp]=item; | ||
| 486 | + } | ||
| 487 | + } | ||
| 488 | + } | ||
| 489 | + console.log("agoTiemstampMessages", this.agoTiemstampMessages); | ||
| 411 | if(_callback){ | 490 | if(_callback){ |
| 412 | _callback(); | 491 | _callback(); |
| 413 | } | 492 | } |
| @@ -497,7 +576,7 @@ class RecordPlayBackParse extends Emiter { | @@ -497,7 +576,7 @@ class RecordPlayBackParse extends Emiter { | ||
| 497 | loger.log("AGOR-外部录制的视频数据无效"); | 576 | loger.log("AGOR-外部录制的视频数据无效"); |
| 498 | return; | 577 | return; |
| 499 | } | 578 | } |
| 500 | - let backFile=_data.backFile; | 579 | + /* let backFile=_data.backFile; |
| 501 | if(!backFile){ | 580 | if(!backFile){ |
| 502 | loger.log("AGOR-外部录制的视频数据无效->backFile"); | 581 | loger.log("AGOR-外部录制的视频数据无效->backFile"); |
| 503 | return; | 582 | return; |
| @@ -518,7 +597,30 @@ class RecordPlayBackParse extends Emiter { | @@ -518,7 +597,30 @@ class RecordPlayBackParse extends Emiter { | ||
| 518 | } | 597 | } |
| 519 | } | 598 | } |
| 520 | } | 599 | } |
| 521 | - console.log("AGO MediaModule.streams", MediaModule.streams); | 600 | + console.log("AGO MediaModule.streams", MediaModule.streams);*/ |
| 601 | + if(!_data.fschannefiles) return; | ||
| 602 | + let items=_data.fschannefiles; | ||
| 603 | + //console.log(JSON.stringify(items)); | ||
| 604 | + for(let k=0;k<items.length;k++) { | ||
| 605 | + | ||
| 606 | + let item=items[k]; | ||
| 607 | +// if(item.indexOf(".aac")>=0||item.indexOf(".webm")>=0){ | ||
| 608 | +// console.log(item) | ||
| 609 | +// } | ||
| 610 | + //console.log("item.indexOf ts",item.indexOf(".ts")) | ||
| 611 | + // if(item.indexOf(".m3u8")>=0&&item.indexOf(".ts")<0&&item.indexOf(".m3u8.swp")<0){ | ||
| 612 | + let indexStr=".m3u8"; | ||
| 613 | + if(item.lastIndexOf(indexStr)+indexStr.length==item.length){ | ||
| 614 | + //http://networkschool.xuedianyun.com:8899/20171021/markettest_188409305_030739/555257911_20171021031224730.mp4 | ||
| 615 | + //http://networkschool.xuedianyun.com:8899/20171021/markettest_1785982263_080003/572805001_20171021080041402_av.m3u8 | ||
| 616 | + let itemUrl=_data.channefiles+"/"+item; | ||
| 617 | + //console.log(item,itemUrl); | ||
| 618 | + item=item.substr(0,item.length-11); | ||
| 619 | + this.agoAllMedias[item]=itemUrl; | ||
| 620 | + } | ||
| 621 | + | ||
| 622 | + } | ||
| 623 | + console.log("agoAllMedias",this.agoAllMedias); | ||
| 522 | } | 624 | } |
| 523 | 625 | ||
| 524 | //解析TXY录制的视频数据,数组[] | 626 | //解析TXY录制的视频数据,数组[] |
| @@ -647,7 +647,7 @@ class ConferApe extends Ape { | @@ -647,7 +647,7 @@ class ConferApe extends Ape { | ||
| 647 | let adapterPdu = new pdu['RCAdapterPdu']; | 647 | let adapterPdu = new pdu['RCAdapterPdu']; |
| 648 | adapterPdu.type = pdu.RCPDU_REG_ADAPTER; | 648 | adapterPdu.type = pdu.RCPDU_REG_ADAPTER; |
| 649 | adapterPdu.item.push(adapterItemPdu); | 649 | adapterPdu.item.push(adapterItemPdu); |
| 650 | - loger.log('发送更新课堂信息->'); | 650 | + //loger.log('发送更新课堂信息->'); |
| 651 | this.sendUniform(adapterPdu, true); | 651 | this.sendUniform(adapterPdu, true); |
| 652 | } | 652 | } |
| 653 | 653 |
-
请 注册 或 登录 后发表评论