李勇

增加监课的推流地址获取接口,单独使用音视频通道,不占用课堂内的通道

此 diff 太大无法显示。
@@ -28,7 +28,7 @@ import MediaModule from 'apes/MediaModule'; @@ -28,7 +28,7 @@ import MediaModule from 'apes/MediaModule';
28 import UTF8 from 'utf-8'; 28 import UTF8 from 'utf-8';
29 29
30 let loger = Loger.getLoger('McuClient'); 30 let loger = Loger.getLoger('McuClient');
31 -let _sdkInfo = {"version": "v1.20.1.201705015", "author": "www.3mang.com"}; 31 +let _sdkInfo = {"version": "v1.21.1.201705017", "author": "www.3mang.com"};
32 32
33 //APE 33 //APE
34 let _sass; 34 let _sass;
@@ -53,6 +53,14 @@ class AudioApe extends Ape { @@ -53,6 +53,14 @@ class AudioApe extends Ape {
53 loger.warn(GlobalConfig.getCurrentStatus()); 53 loger.warn(GlobalConfig.getCurrentStatus());
54 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};; 54 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};;
55 } 55 }
  56 + //监课比较特殊,不占用课堂内的音视频路数,额外创建
  57 + if(GlobalConfig.userRole==ApeConsts.invisible){
  58 + let result=this.mediaModule.getMediaPublishPathForInVisible(_param);
  59 + this._emit( MessageTypes.AUDIO_GET_PUBLISH_PATH,result);
  60 + return result;
  61 + }
  62 +
  63 + //非监课的身份,需要判断是否可以继续推流
56 //需要判断当前已经使用的流路数 64 //需要判断当前已经使用的流路数
57 let openChannel=0; 65 let openChannel=0;
58 let allChannels= MediaModule.allMediaChannelsList; 66 let allChannels= MediaModule.allMediaChannelsList;
@@ -124,6 +124,45 @@ class MediaModule { @@ -124,6 +124,45 @@ class MediaModule {
124 "publishUrl": publishUrl 124 "publishUrl": publishUrl
125 }; 125 };
126 } 126 }
  127 + //监课获取推流地址
  128 + getMediaPublishPathForInVisible(_param) {
  129 + let mediaLen=Object.keys(MediaModule.allMediaChannelsList={}).length;
  130 + let freeChannel=(this.MEDIA_OBJ_TABLE_ID-20-mediaLen)||GlobalConfig.nodeId;
  131 + loger.log('getMediaPublishPathForInVisible->'+freeChannel+" mediaLen:"+mediaLen);
  132 + //默认方式推流
  133 + let pubType="live";
  134 + //flash推流
  135 + if(_param&&_param.type=="flash"){
  136 + pubType ="flash";
  137 + }
  138 +
  139 + //端口,有端口就显示 ":xxx",没有端口就是""
  140 + let port = (GlobalConfig.MS_PUBLISH_PORT == "" || GlobalConfig.MS_PUBLISH_PORT == null) ? "":":" + GlobalConfig.MS_PUBLISH_PORT;
  141 + //时间戳
  142 + let timestamp = EngineUtils.creatTimestamp();
  143 +
  144 + let streamId=GlobalConfig.siteId+"_"
  145 + + GlobalConfig.classId + "_"+GlobalConfig.userId
  146 + +"_" + freeChannel + "_" + timestamp;
  147 +
  148 + //生成推流地址和推流数据(同步数据的时候用)
  149 + let publishUrl = "rtmp://" + GlobalConfig.MS_PUBLISH_IP
  150 + + port + "/"+pubType+"/" +streamId;
  151 +
  152 + publishUrl=publishUrl.replace("::",":");//如果ip和port之间有多的:需要去掉
  153 + this.needPublishMediaChannel[publishUrl]={
  154 + "channelId":freeChannel,
  155 + "publishUrl":publishUrl,
  156 + "streamId":streamId,
  157 + "timestamp":timestamp,
  158 + "nodeId":GlobalConfig.nodeId
  159 + };
  160 + return {"code": ApeConsts.RETURN_SUCCESS,
  161 + "data":"",
  162 + "mediaId":freeChannel,
  163 + "publishUrl": publishUrl
  164 + };
  165 + }
127 166
128 //获取当前空闲的channel,返回值为0代表没有空闲的,否则返回的就是空闲的channelId 167 //获取当前空闲的channel,返回值为0代表没有空闲的,否则返回的就是空闲的channelId
129 getFreeMediaChannel() { 168 getFreeMediaChannel() {
@@ -53,6 +53,14 @@ class VideoApe extends Ape { @@ -53,6 +53,14 @@ class VideoApe extends Ape {
53 loger.warn(GlobalConfig.getCurrentStatus()); 53 loger.warn(GlobalConfig.getCurrentStatus());
54 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"}; 54 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};
55 } 55 }
  56 + //监课比较特殊,不占用课堂内的音视频路数,额外创建
  57 + if(GlobalConfig.userRole==ApeConsts.invisible){
  58 + let result=this.mediaModule.getMediaPublishPathForInVisible(_param);
  59 + this._emit( MessageTypes.VIDEO_GET_PUBLISH_PATH,result);
  60 + return result;
  61 + }
  62 +
  63 + //非监课的身份,需要判断是否可以继续推流
56 //需要判断当前已经使用的流路数 64 //需要判断当前已经使用的流路数
57 let openChannel=0; 65 let openChannel=0;
58 let allChannels= MediaModule.allMediaChannelsList; 66 let allChannels= MediaModule.allMediaChannelsList;