正在显示
2 个修改的文件
包含
90 行增加
和
10 行删除
| @@ -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.12.6.20170925"; | 65 | + GlobalConfig.sdkVersion = "v2.12.8.20170926"; |
| 66 | loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); | 66 | loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); |
| 67 | 67 | ||
| 68 | //设置 | 68 | //设置 |
| @@ -389,7 +389,6 @@ class VideoApe extends Ape { | @@ -389,7 +389,6 @@ class VideoApe extends Ape { | ||
| 389 | } | 389 | } |
| 390 | // to, message | 390 | // to, message |
| 391 | loger.log('视频模块广播消息.', _param); | 391 | loger.log('视频模块广播消息.', _param); |
| 392 | - | ||
| 393 | //如果是控制开启摄像头推流,需要判断是否还有空闲频道 | 392 | //如果是控制开启摄像头推流,需要判断是否还有空闲频道 |
| 394 | if (_param.actionType != null && _param.actionType == ApeConsts.MEDIA_ACTION_OPEN_CAMERA) { | 393 | if (_param.actionType != null && _param.actionType == ApeConsts.MEDIA_ACTION_OPEN_CAMERA) { |
| 395 | //判断当前开启的视频数量是否已经是最大值,如果已经是最大值,不能再开启 | 394 | //判断当前开启的视频数量是否已经是最大值,如果已经是最大值,不能再开启 |
| @@ -466,9 +465,8 @@ class VideoApe extends Ape { | @@ -466,9 +465,8 @@ class VideoApe extends Ape { | ||
| 466 | } | 465 | } |
| 467 | 466 | ||
| 468 | /////收到消息处理////////////////////////////////////////////////// | 467 | /////收到消息处理////////////////////////////////////////////////// |
| 469 | - | ||
| 470 | // 视频消息处理,内部处理,不需要告诉应用层 | 468 | // 视频消息处理,内部处理,不需要告诉应用层 |
| 471 | - receiveVideoCommandHandler(_data) { | 469 | + receiveVideoCommandHandler(_data,seek) { |
| 472 | let videoReceivePdu = pdu['RCVideoSendDataRequestPdu'].decode(_data); | 470 | let videoReceivePdu = pdu['RCVideoSendDataRequestPdu'].decode(_data); |
| 473 | if (videoReceivePdu == null) { | 471 | if (videoReceivePdu == null) { |
| 474 | loger.warn("视频控制消息处理,收到的消息为null,不做处理"); | 472 | loger.warn("视频控制消息处理,收到的消息为null,不做处理"); |
| @@ -484,13 +482,56 @@ class VideoApe extends Ape { | @@ -484,13 +482,56 @@ class VideoApe extends Ape { | ||
| 484 | dataObj = videoReceivePdu.data; | 482 | dataObj = videoReceivePdu.data; |
| 485 | } | 483 | } |
| 486 | videoReceivePdu.data = dataObj; | 484 | videoReceivePdu.data = dataObj; |
| 487 | - //判断接收者的id,如果不是0,并且也不是自己的nodeId,那么消息不做处理 | ||
| 488 | - if (videoReceivePdu.toNodeId != 0 && videoReceivePdu.toNodeId != GlobalConfig.nodeId) { | ||
| 489 | - loger.log('视频消息不处理 toNodeId=', videoReceivePdu.toNodeId, "my nodeId=", GlobalConfig.nodeId); | ||
| 490 | - } else { | ||
| 491 | - loger.log('视频控制消息处理 .', videoReceivePdu); | ||
| 492 | - this._emit(MessageTypes.VIDEO_BROADCAST, videoReceivePdu); | 485 | + if(GlobalConfig.isRecordPlayBack){ |
| 486 | + //录制回放的处理 | ||
| 487 | + if (videoReceivePdu.toNodeId!=0){ | ||
| 488 | + //只处理发送给所有人的消息,发给指定人的消息不处理 | ||
| 489 | + return; | ||
| 490 | + } | ||
| 491 | + let data=videoReceivePdu.data; | ||
| 492 | + if(!data) return; | ||
| 493 | + /* "data": { | ||
| 494 | + "appId": "eb253cc7b40c4a8b82f0a5b6f93c2ce0", | ||
| 495 | + "channel": "markettest_1880101695", | ||
| 496 | + "channelKey": "", | ||
| 497 | + "uid": 886346081, | ||
| 498 | + "status": 1, | ||
| 499 | + "userId": "user_338621", | ||
| 500 | + "userName": "user_338621", | ||
| 501 | + "userRole": "normal", | ||
| 502 | + "timestamp": 1505886364100, | ||
| 503 | + "recordTimestamp": 27 | ||
| 504 | + }*/ | ||
| 505 | + switch (videoReceivePdu.actionType){ | ||
| 506 | + case ApeConsts.MEDIA_ACTION_PUBLISH_STATUS: | ||
| 507 | + //webRtc的推流和停止推流的消息 | ||
| 508 | + let videoInfo={}; | ||
| 509 | + let videoData=data; | ||
| 510 | + videoData.streamId=data.channel+"_"+data.userId+"_"+data.uid+"_"+(parseInt(parseInt(data.timestamp)/1000)); | ||
| 511 | + if(data.status==1){ | ||
| 512 | + loger.log("播放文件->", "userName",data.userName,"uid",data.uid,"时间:"+new Date(1505886364100).toString()); | ||
| 513 | + videoInfo=this.packVideoInfoAndSendToClient(videoData,seek); | ||
| 514 | + this._emit(MessageTypes.VIDEO_PLAY, videoInfo); | ||
| 515 | + }else if(data.status==0){ | ||
| 516 | + loger.log("停止播放文件->", "userName",data.userName,"uid",data.uid,"时间:"+new Date(1505886364100).toString()); | ||
| 517 | + videoInfo=this.packVideoInfoAndSendToClient(videoData,seek); | ||
| 518 | + this._emit(MessageTypes.VIDEO_STOP, videoInfo); | ||
| 519 | + } | ||
| 520 | + break; | ||
| 521 | + default: | ||
| 522 | + break | ||
| 523 | + } | ||
| 524 | + | ||
| 525 | + }else { | ||
| 526 | + //判断接收者的id,如果不是0,并且也不是自己的nodeId,那么消息不做处理 | ||
| 527 | + if (videoReceivePdu.toNodeId != 0 && videoReceivePdu.toNodeId != GlobalConfig.nodeId) { | ||
| 528 | + loger.log('视频消息不处理 toNodeId=', videoReceivePdu.toNodeId, "my nodeId=", GlobalConfig.nodeId); | ||
| 529 | + } else { | ||
| 530 | + loger.log('视频控制消息处理 .', videoReceivePdu); | ||
| 531 | + this._emit(MessageTypes.VIDEO_BROADCAST, videoReceivePdu); | ||
| 532 | + } | ||
| 493 | } | 533 | } |
| 534 | + | ||
| 494 | } | 535 | } |
| 495 | //切换了MS,重新更新一下当前正在播放的流地址 | 536 | //切换了MS,重新更新一下当前正在播放的流地址 |
| 496 | changeMediaMs(){ | 537 | changeMediaMs(){ |
| @@ -609,6 +650,45 @@ class VideoApe extends Ape { | @@ -609,6 +650,45 @@ class VideoApe extends Ape { | ||
| 609 | 650 | ||
| 610 | } | 651 | } |
| 611 | 652 | ||
| 653 | + /* | ||
| 654 | + * 组织视频数据发送给客户端 | ||
| 655 | + * */ | ||
| 656 | + packVideoInfoAndSendToClient(_param,seek){ | ||
| 657 | + let mediaChannelInfo = {}; | ||
| 658 | + mediaChannelInfo.mediaId = _param.channelId; | ||
| 659 | + mediaChannelInfo.fromNodeId = _param.fromNodeId; | ||
| 660 | + mediaChannelInfo.userName = _param.userName || ""; | ||
| 661 | + mediaChannelInfo.userRole = _param.userRole || ApeConsts.normal; | ||
| 662 | + mediaChannelInfo.mediaType = _param.mediaType || ApeConsts.MEDIA_TYPE_DEFAULT; | ||
| 663 | + mediaChannelInfo.screenWidth = _param.screenWidth || GlobalConfig.screenWidth; | ||
| 664 | + mediaChannelInfo.screenHeight = _param.screenHeight || GlobalConfig.screenHeight; | ||
| 665 | + mediaChannelInfo.deviceType = _param.deviceType || 0; | ||
| 666 | + mediaChannelInfo.optionJsonData = _param.optionJsonData || ""; | ||
| 667 | + mediaChannelInfo.m3u8Url = ""; | ||
| 668 | + mediaChannelInfo.rtmpUrl = ""; | ||
| 669 | + mediaChannelInfo.replay = ""; | ||
| 670 | + mediaChannelInfo.seek = seek || 0;//这个是录制回放时使用的seek | ||
| 671 | + //消息不是自己同步的,需要处理 | ||
| 672 | + if (_param.status == ApeConsts.CHANNEL_STATUS_OPENING) { | ||
| 673 | + let m3u8Stream = this.mediaModule.getMediaPlayPath({"type": "m3u8", "streamId": _param.streamId}); | ||
| 674 | + let rtmpStream = this.mediaModule.getMediaPlayPath({"type": "rtmp", "streamId": _param.streamId}); | ||
| 675 | + let replay = this.mediaModule.getMediaRecordPlaybackPath({ | ||
| 676 | + "type": "m3u8", | ||
| 677 | + "streamId": _param.streamId | ||
| 678 | + }); | ||
| 679 | + if (m3u8Stream.code == 0) { | ||
| 680 | + mediaChannelInfo.m3u8Url = m3u8Stream.playUrl; | ||
| 681 | + } | ||
| 682 | + if (rtmpStream.code == 0) { | ||
| 683 | + mediaChannelInfo.rtmpUrl = rtmpStream.playUrl; | ||
| 684 | + } | ||
| 685 | + if (replay.code == 0) { | ||
| 686 | + mediaChannelInfo.replay = replay.playUrl; | ||
| 687 | + } | ||
| 688 | + } | ||
| 689 | + return mediaChannelInfo; | ||
| 690 | + } | ||
| 691 | + | ||
| 612 | //更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次 | 692 | //更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次 |
| 613 | updaterRecordApeStatus(_param) { | 693 | updaterRecordApeStatus(_param) { |
| 614 | loger.warn("录制状态发送改变->更新当前的状态->", this.mediaModule.mediaChannels); | 694 | loger.warn("录制状态发送改变->更新当前的状态->", this.mediaModule.mediaChannels); |
-
请 注册 或 登录 后发表评论