李勇

1.在录制回放的时候不做频道释放的检测

2.音视频模块,在获取推流信息的时候,增加时间戳字段信息
@@ -254,6 +254,11 @@ export default class MessageEntrance extends Emiter { @@ -254,6 +254,11 @@ export default class MessageEntrance extends Emiter {
254 //当前课堂中视频或音频占用channel的nodeId ,在人员列表中不存在,这种情况是占用channel的人员掉线或离开的时候没有释放channel 254 //当前课堂中视频或音频占用channel的nodeId ,在人员列表中不存在,这种情况是占用channel的人员掉线或离开的时候没有释放channel
255 //的占用状态导致,对于这种情况,需要释放掉 255 //的占用状态导致,对于这种情况,需要释放掉
256 _onClassNonentityRoster(_param) { 256 _onClassNonentityRoster(_param) {
  257 + if(GlobalConfig.isRecordPlayBack){
  258 + loger.warn("录制回放中,不处理")
  259 + return;
  260 + }
  261 +
257 if (_param == null || _param.nodeId == null) { 262 if (_param == null || _param.nodeId == null) {
258 loger.warn("onClassNonentityRoster.参数错误") 263 loger.warn("onClassNonentityRoster.参数错误")
259 return; 264 return;
@@ -96,7 +96,8 @@ class MediaModule { @@ -96,7 +96,8 @@ class MediaModule {
96 this.needPublishMediaChannel[publishUrl]={ 96 this.needPublishMediaChannel[publishUrl]={
97 "channelId":freeChannel, 97 "channelId":freeChannel,
98 "publishUrl":publishUrl, 98 "publishUrl":publishUrl,
99 - "streamId":streamId 99 + "streamId":streamId,
  100 + "timestamp":timestamp
100 }; 101 };
101 return {"code": ApeConsts.RETURN_SUCCESS, 102 return {"code": ApeConsts.RETURN_SUCCESS,
102 "data":"", 103 "data":"",
@@ -109,6 +109,7 @@ class VideoApe extends Ape { @@ -109,6 +109,7 @@ class VideoApe extends Ape {
109 channelInfo.status=ApeConsts.CHANNEL_STATUS_OPENING; 109 channelInfo.status=ApeConsts.CHANNEL_STATUS_OPENING;
110 channelInfo.channelId=needPublishChannelInfo.channelId; 110 channelInfo.channelId=needPublishChannelInfo.channelId;
111 channelInfo.streamId=needPublishChannelInfo.streamId;//按规则拼接的流名称 111 channelInfo.streamId=needPublishChannelInfo.streamId;//按规则拼接的流名称
  112 + channelInfo.timestamp=needPublishChannelInfo.timestamp;//时间戳
112 channelInfo.mediaType=ApeConsts.MEDIA_TYPE_VIDEO; 113 channelInfo.mediaType=ApeConsts.MEDIA_TYPE_VIDEO;
113 this.sendTableUpdateHandler(channelInfo); 114 this.sendTableUpdateHandler(channelInfo);
114 115
@@ -326,6 +327,7 @@ class VideoApe extends Ape { @@ -326,6 +327,7 @@ class VideoApe extends Ape {
326 receiveChannelInfo.m3u8Url=""; 327 receiveChannelInfo.m3u8Url="";
327 receiveChannelInfo.rtmpUrl=""; 328 receiveChannelInfo.rtmpUrl="";
328 receiveChannelInfo.replay=""; 329 receiveChannelInfo.replay="";
  330 +
329 let m3u8Stream=this.mediaModule.getMediaPlayPath({"type":"m3u8","streamId": unpackChannelInfo.streamId}); 331 let m3u8Stream=this.mediaModule.getMediaPlayPath({"type":"m3u8","streamId": unpackChannelInfo.streamId});
330 let rtmpStream=this.mediaModule.getMediaPlayPath({"type":"rtmp","streamId": unpackChannelInfo.streamId}); 332 let rtmpStream=this.mediaModule.getMediaPlayPath({"type":"rtmp","streamId": unpackChannelInfo.streamId});
331 let replay=this.mediaModule.getMediaRecordPlaybackPath({"type":"m3u8","streamId": unpackChannelInfo.streamId}); 333 let replay=this.mediaModule.getMediaRecordPlaybackPath({"type":"m3u8","streamId": unpackChannelInfo.streamId});
@@ -374,7 +376,7 @@ class VideoApe extends Ape { @@ -374,7 +376,7 @@ class VideoApe extends Ape {
374 packPduModel.classId =parseInt(_param.classId)||parseInt(GlobalConfig.classId); 376 packPduModel.classId =parseInt(_param.classId)||parseInt(GlobalConfig.classId);
375 packPduModel.userId =_param.userId||"0"; 377 packPduModel.userId =_param.userId||"0";
376 packPduModel.mediaType =_param.mediaType|| ApeConsts.MEDIA_TYPE_VIDEO; 378 packPduModel.mediaType =_param.mediaType|| ApeConsts.MEDIA_TYPE_VIDEO;
377 - packPduModel.timestamp =_param.timestamp||EngineUtils.creatTimestamp(); 379 + packPduModel.timestamp =_param.timestamp||0;
378 packPduModel.fromNodeId = GlobalConfig.nodeId; 380 packPduModel.fromNodeId = GlobalConfig.nodeId;
379 packPduModel.toNodeId = 0; 381 packPduModel.toNodeId = 0;
380 console.log(packPduModel); 382 console.log(packPduModel);