李勇

增加MS地址无效时的判断

@@ -35,7 +35,7 @@ import QuestionApe from 'apes/QuestionApe'; @@ -35,7 +35,7 @@ import QuestionApe from 'apes/QuestionApe';
35 import UTF8 from 'utf-8'; 35 import UTF8 from 'utf-8';
36 36
37 let loger = Loger.getLoger('McuClient'); 37 let loger = Loger.getLoger('McuClient');
38 -let _sdkInfo = {"version": "v1.59.0.20170729", "author": "www.3mang.com"}; 38 +let _sdkInfo = {"version": "v1.60.0.20170729", "author": "www.3mang.com"};
39 39
40 //APE 40 //APE
41 let _sass; 41 let _sass;
@@ -907,6 +907,21 @@ export default class MessageEntrance extends Emiter { @@ -907,6 +907,21 @@ export default class MessageEntrance extends Emiter {
907 loger.warn('HLS拉流地址->HLS->', GlobalConfig.MS_PLAY_HLS_IP, GlobalConfig.MS_PLAY_HLS_PORT); 907 loger.warn('HLS拉流地址->HLS->', GlobalConfig.MS_PLAY_HLS_IP, GlobalConfig.MS_PLAY_HLS_PORT);
908 loger.warn('HLS录制回放拉流地址->HLS->', GlobalConfig.RS_RECORD_PLAY_IP, GlobalConfig.RS_RECORD_PLAY_PORT); 908 loger.warn('HLS录制回放拉流地址->HLS->', GlobalConfig.RS_RECORD_PLAY_IP, GlobalConfig.RS_RECORD_PLAY_PORT);
909 909
  910 + if(!GlobalConfig.MS_PUBLISH_IP){
  911 + loger.error("推流MS地址地址无效");
  912 + }
  913 + if(!GlobalConfig.MS_PLAY_RTMP_IP){
  914 + loger.warn("RTMP拉流地址无效->使用推流地址作为RTMP拉流地址");
  915 + GlobalConfig.MS_PLAY_RTMP_IP=GlobalConfig.MS_PUBLISH_IP;
  916 + GlobalConfig.MS_PLAY_RTMP_PORT=GlobalConfig.MS_PUBLISH_PORT
  917 + }
  918 +
  919 + if(!GlobalConfig.MS_PLAY_HLS_IP){
  920 + loger.warn("HLS拉流地址无效->使用HLS回放地址作为HLS拉流地址");
  921 + GlobalConfig.MS_PLAY_HLS_IP=GlobalConfig.MS_PLAY_HLS_PORT;
  922 + GlobalConfig.RS_RECORD_PLAY_IP=GlobalConfig.RS_RECORD_PLAY_PORT
  923 + }
  924 +
910 if (_mcu) { 925 if (_mcu) {
911 _mcu.joinMCU(GlobalConfig.getClassInfo()); 926 _mcu.joinMCU(GlobalConfig.getClassInfo());
912 } 927 }
@@ -12,38 +12,40 @@ let loger = Loger.getLoger('MediaModule'); @@ -12,38 +12,40 @@ let loger = Loger.getLoger('MediaModule');
12 12
13 class MediaModule { 13 class MediaModule {
14 constructor() { 14 constructor() {
15 - this.needPublishMediaChannel={};//记录准备推流的频道信息 15 + this.needPublishMediaChannel = {};//记录准备推流的频道信息
16 this.mediaChannels = {}; 16 this.mediaChannels = {};
17 - this.maxMediaChannel=0;  
18 - this.mediaType=ApeConsts.MEDIA_TYPE_DEFAULT;  
19 - this.MEDIA_OBJ_TABLE_ID=0;  
20 - this.SCREENSHARING_OBJ_TABLE_ID=ApeConsts.SCREENSHARING_OBJ_TABLE_ID; 17 + this.maxMediaChannel = 0;
  18 + this.mediaType = ApeConsts.MEDIA_TYPE_DEFAULT;
  19 + this.MEDIA_OBJ_TABLE_ID = 0;
  20 + this.SCREENSHARING_OBJ_TABLE_ID = ApeConsts.SCREENSHARING_OBJ_TABLE_ID;
21 } 21 }
22 22
23 //获取播流地址 23 //获取播流地址
24 getMediaPlayPath(_param) { 24 getMediaPlayPath(_param) {
25 loger.log('获取播放地址->'); 25 loger.log('获取播放地址->');
26 - if (_param == null||_param.streamId == null)  
27 - { 26 + if (_param == null || _param.streamId == null) {
28 loger.warn('获取播放地址->参数错误', _param); 27 loger.warn('获取播放地址->参数错误', _param);
29 //this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); 28 //this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
30 return {"code": ApeConsts.RETURN_FAILED, "data": ""}; 29 return {"code": ApeConsts.RETURN_FAILED, "data": ""};
31 } 30 }
32 31
33 let path = ""; 32 let path = "";
34 - let port="";  
35 - let fileName=''; 33 + let port = "";
  34 + let fileName = '';
36 if (_param.type == "m3u8") { 35 if (_param.type == "m3u8") {
37 //M3U8 36 //M3U8
  37 + if (!GlobalConfig.MS_PLAY_HLS_IP) {
  38 + loger.error("HLS拉流地址地址无效");
  39 + }
38 //http://123.56.73.119:6001/live/h5dev_2106728010_8ab3b0ed5a3a9220015a3a958f0d0003_983041_1489113860/index.m3u8 40 //http://123.56.73.119:6001/live/h5dev_2106728010_8ab3b0ed5a3a9220015a3a958f0d0003_983041_1489113860/index.m3u8
39 - if(GlobalConfig.siteId==GlobalConfig.siteId_letv){ 41 + if (GlobalConfig.siteId == GlobalConfig.siteId_letv) {
40 //乐视的hls地址规则 42 //乐视的hls地址规则
41 - fileName='desc.m3u8';  
42 - }else { 43 + fileName = 'desc.m3u8';
  44 + } else {
43 //fileName='index.m3u8'; 45 //fileName='index.m3u8';
44 - fileName='playlist.m3u8'; 46 + fileName = 'playlist.m3u8';
45 } 47 }
46 - port = (GlobalConfig.MS_PLAY_HLS_PORT == "" || GlobalConfig.MS_PLAY_HLS_PORT == null) ? "":":" + GlobalConfig.MS_PLAY_HLS_PORT; 48 + port = (GlobalConfig.MS_PLAY_HLS_PORT == "" || GlobalConfig.MS_PLAY_HLS_PORT == null) ? "" : ":" + GlobalConfig.MS_PLAY_HLS_PORT;
47 path = "http://" + GlobalConfig.MS_PLAY_HLS_IP 49 path = "http://" + GlobalConfig.MS_PLAY_HLS_IP
48 + port + "/live/" 50 + port + "/live/"
49 + _param.streamId 51 + _param.streamId
@@ -53,35 +55,37 @@ class MediaModule { @@ -53,35 +55,37 @@ class MediaModule {
53 55
54 } else { 56 } else {
55 //RTMP 57 //RTMP
56 - port = (GlobalConfig.MS_PLAY_RTMP_PORT == "" || GlobalConfig.MS_PLAY_RTMP_PORT == null) ? "":":" + GlobalConfig.MS_PLAY_RTMP_PORT; 58 + if (!GlobalConfig.MS_PLAY_RTMP_IP) {
  59 + loger.error("RTMP拉流地址地址无效");
  60 + }
  61 + port = (GlobalConfig.MS_PLAY_RTMP_PORT == "" || GlobalConfig.MS_PLAY_RTMP_PORT == null) ? "" : ":" + GlobalConfig.MS_PLAY_RTMP_PORT;
57 path = "rtmp://" + GlobalConfig.MS_PLAY_RTMP_IP 62 path = "rtmp://" + GlobalConfig.MS_PLAY_RTMP_IP
58 + port + "/live/" 63 + port + "/live/"
59 + _param.streamId; 64 + _param.streamId;
60 } 65 }
61 66
62 67
63 - path=path.replace("::",":");//如果ip和port之间有多的:需要去掉  
64 - return {"code": ApeConsts.RETURN_SUCCESS, "data": "","playUrl": path}; 68 + path = path.replace("::", ":");//如果ip和port之间有多的:需要去掉
  69 + return {"code": ApeConsts.RETURN_SUCCESS, "data": "", "playUrl": path};
65 } 70 }
66 71
67 72
68 //获取录制回放时点播的地址,只有m3u8 73 //获取录制回放时点播的地址,只有m3u8
69 getMediaRecordPlaybackPath(_param) { 74 getMediaRecordPlaybackPath(_param) {
70 loger.log('获取录制回放时点播的地址->m3u8'); 75 loger.log('获取录制回放时点播的地址->m3u8');
71 - if (_param == null||_param.streamId == null)  
72 - { 76 + if (_param == null || _param.streamId == null) {
73 loger.warn('获取录制回放时点播的地址->参数错误', _param); 77 loger.warn('获取录制回放时点播的地址->参数错误', _param);
74 return {"code": ApeConsts.RETURN_FAILED, "data": ""}; 78 return {"code": ApeConsts.RETURN_FAILED, "data": ""};
75 } 79 }
76 //M3U8 http://123.56.73.119:6001/live/h5dev_2106728010_8ab3b0ed5a3a9220015a3a958f0d0003_983041_1489113860/total.m3u8 80 //M3U8 http://123.56.73.119:6001/live/h5dev_2106728010_8ab3b0ed5a3a9220015a3a958f0d0003_983041_1489113860/total.m3u8
77 - let port = (GlobalConfig.RS_RECORD_PLAY_PORT == "" || GlobalConfig.RS_RECORD_PLAY_PORT == null) ? "":":" + GlobalConfig.RS_RECORD_PLAY_PORT; 81 + let port = (GlobalConfig.RS_RECORD_PLAY_PORT == "" || GlobalConfig.RS_RECORD_PLAY_PORT == null) ? "" : ":" + GlobalConfig.RS_RECORD_PLAY_PORT;
78 let path = "http://" + GlobalConfig.RS_RECORD_PLAY_IP 82 let path = "http://" + GlobalConfig.RS_RECORD_PLAY_IP
79 + port + "/live/" 83 + port + "/live/"
80 + _param.streamId 84 + _param.streamId
81 + "/total.m3u8"; 85 + "/total.m3u8";
82 86
83 - path=path.replace("::",":");//如果ip和port之间有多的:需要去掉  
84 - return {"code": ApeConsts.RETURN_SUCCESS, "data": "","playUrl": path}; 87 + path = path.replace("::", ":");//如果ip和port之间有多的:需要去掉
  88 + return {"code": ApeConsts.RETURN_SUCCESS, "data": "", "playUrl": path};
85 } 89 }
86 90
87 //获取推流地址 91 //获取推流地址
@@ -90,115 +94,118 @@ class MediaModule { @@ -90,115 +94,118 @@ class MediaModule {
90 //判断当前开启的视频数量是否已经是最大值,如果已经是最大值,不能再开启 94 //判断当前开启的视频数量是否已经是最大值,如果已经是最大值,不能再开启
91 let freeChannel = this.getFreeMediaChannel(); 95 let freeChannel = this.getFreeMediaChannel();
92 if (freeChannel == 0) { 96 if (freeChannel == 0) {
93 - return {"code":ApeConsts.RETURN_FAILED, "data": "不能再打开更多的设备","mediaChannels":this.mediaChannels}; 97 + return {"code": ApeConsts.RETURN_FAILED, "data": "不能再打开更多的设备", "mediaChannels": this.mediaChannels};
94 } 98 }
95 99
96 //默认方式推流 100 //默认方式推流
97 - let pubType="live";  
98 - ////flash推流  
99 - //if(_param&&_param.type=="flash"){  
100 - // pubType ="flash";  
101 - //} 101 + let pubType = "live";
  102 +
  103 + if (!GlobalConfig.MS_PUBLISH_IP) {
  104 + loger.error("MS推流地址地址无效");
  105 + }
102 106
103 //端口,有端口就显示 ":xxx",没有端口就是"" 107 //端口,有端口就显示 ":xxx",没有端口就是""
104 - let port = (GlobalConfig.MS_PUBLISH_PORT == "" || GlobalConfig.MS_PUBLISH_PORT == null) ? "":":" + GlobalConfig.MS_PUBLISH_PORT; 108 + let port = (GlobalConfig.MS_PUBLISH_PORT == "" || GlobalConfig.MS_PUBLISH_PORT == null) ? "" : ":" + GlobalConfig.MS_PUBLISH_PORT;
105 //时间戳 109 //时间戳
106 let timestamp = EngineUtils.creatTimestamp(); 110 let timestamp = EngineUtils.creatTimestamp();
107 111
108 - let streamId=GlobalConfig.siteId+"_"  
109 - + GlobalConfig.classId + "_"+GlobalConfig.userId  
110 - +"_" + freeChannel + "_" + timestamp; 112 + let streamId = GlobalConfig.siteId + "_"
  113 + + GlobalConfig.classId + "_" + GlobalConfig.userId
  114 + + "_" + freeChannel + "_" + timestamp;
111 115
112 //生成推流地址和推流数据(同步数据的时候用) 116 //生成推流地址和推流数据(同步数据的时候用)
113 let publishUrl = "rtmp://" + GlobalConfig.MS_PUBLISH_IP 117 let publishUrl = "rtmp://" + GlobalConfig.MS_PUBLISH_IP
114 - + port + "/"+pubType+"/" +streamId; 118 + + port + "/" + pubType + "/" + streamId;
115 119
116 - publishUrl=publishUrl.replace("::",":");//如果ip和port之间有多的:需要去掉  
117 - this.needPublishMediaChannel[publishUrl]={  
118 - "channelId":freeChannel,  
119 - "publishUrl":publishUrl,  
120 - "streamId":streamId,  
121 - "timestamp":timestamp,  
122 - "nodeId":GlobalConfig.nodeId 120 + publishUrl = publishUrl.replace("::", ":");//如果ip和port之间有多的:需要去掉
  121 + this.needPublishMediaChannel[publishUrl] = {
  122 + "channelId": freeChannel,
  123 + "publishUrl": publishUrl,
  124 + "streamId": streamId,
  125 + "timestamp": timestamp,
  126 + "nodeId": GlobalConfig.nodeId
123 }; 127 };
124 - return {"code": ApeConsts.RETURN_SUCCESS,  
125 - "data":"",  
126 - "mediaId":freeChannel,  
127 - "userId":GlobalConfig.userId,  
128 - "userName":GlobalConfig.userName,  
129 - "userRole":GlobalConfig.userRole, 128 + return {
  129 + "code": ApeConsts.RETURN_SUCCESS,
  130 + "data": "",
  131 + "mediaId": freeChannel,
  132 + "userId": GlobalConfig.userId,
  133 + "userName": GlobalConfig.userName,
  134 + "userRole": GlobalConfig.userRole,
130 "publishUrl": publishUrl 135 "publishUrl": publishUrl
131 }; 136 };
132 } 137 }
  138 +
133 //监课获取推流地址 139 //监课获取推流地址
134 getMediaPublishPathForInVisible(_param) { 140 getMediaPublishPathForInVisible(_param) {
135 - let mediaLen=Object.keys(MediaModule.allMediaChannelsList).length;  
136 - let freeChannel=(this.MEDIA_OBJ_TABLE_ID-20-mediaLen)||GlobalConfig.nodeId;  
137 - loger.log('监课获取推流地址->'+freeChannel+" mediaLen:"+mediaLen); 141 + let mediaLen = Object.keys(MediaModule.allMediaChannelsList).length;
  142 + let freeChannel = (this.MEDIA_OBJ_TABLE_ID - 20 - mediaLen) || GlobalConfig.nodeId;
  143 + loger.log('监课获取推流地址->' + freeChannel + " mediaLen:" + mediaLen);
138 //默认方式推流 144 //默认方式推流
139 - let pubType="live"; 145 + let pubType = "live";
140 ////flash推流 146 ////flash推流
141 //if(_param&&_param.type=="flash"){ 147 //if(_param&&_param.type=="flash"){
142 // pubType ="flash"; 148 // pubType ="flash";
143 //} 149 //}
144 150
145 //端口,有端口就显示 ":xxx",没有端口就是"" 151 //端口,有端口就显示 ":xxx",没有端口就是""
146 - let port = (GlobalConfig.MS_PUBLISH_PORT == "" || GlobalConfig.MS_PUBLISH_PORT == null) ? "":":" + GlobalConfig.MS_PUBLISH_PORT; 152 + let port = (GlobalConfig.MS_PUBLISH_PORT == "" || GlobalConfig.MS_PUBLISH_PORT == null) ? "" : ":" + GlobalConfig.MS_PUBLISH_PORT;
147 //时间戳 153 //时间戳
148 let timestamp = EngineUtils.creatTimestamp(); 154 let timestamp = EngineUtils.creatTimestamp();
149 155
150 - let streamId=GlobalConfig.siteId+"_"  
151 - + GlobalConfig.classId + "_"+GlobalConfig.userId  
152 - +"_" + freeChannel + "_" + timestamp; 156 + let streamId = GlobalConfig.siteId + "_"
  157 + + GlobalConfig.classId + "_" + GlobalConfig.userId
  158 + + "_" + freeChannel + "_" + timestamp;
153 159
154 //生成推流地址和推流数据(同步数据的时候用) 160 //生成推流地址和推流数据(同步数据的时候用)
155 let publishUrl = "rtmp://" + GlobalConfig.MS_PUBLISH_IP 161 let publishUrl = "rtmp://" + GlobalConfig.MS_PUBLISH_IP
156 - + port + "/"+pubType+"/" +streamId; 162 + + port + "/" + pubType + "/" + streamId;
157 163
158 - publishUrl=publishUrl.replace("::",":");//如果ip和port之间有多的:需要去掉  
159 - this.needPublishMediaChannel[publishUrl]={  
160 - "channelId":freeChannel,  
161 - "publishUrl":publishUrl,  
162 - "streamId":streamId,  
163 - "timestamp":timestamp,  
164 - "nodeId":GlobalConfig.nodeId 164 + publishUrl = publishUrl.replace("::", ":");//如果ip和port之间有多的:需要去掉
  165 + this.needPublishMediaChannel[publishUrl] = {
  166 + "channelId": freeChannel,
  167 + "publishUrl": publishUrl,
  168 + "streamId": streamId,
  169 + "timestamp": timestamp,
  170 + "nodeId": GlobalConfig.nodeId
165 }; 171 };
166 - return {"code": ApeConsts.RETURN_SUCCESS,  
167 - "data":"",  
168 - "userId":GlobalConfig.userId,  
169 - "userName":GlobalConfig.userName,  
170 - "userRole":GlobalConfig.userRole,  
171 - "mediaId":freeChannel, 172 + return {
  173 + "code": ApeConsts.RETURN_SUCCESS,
  174 + "data": "",
  175 + "userId": GlobalConfig.userId,
  176 + "userName": GlobalConfig.userName,
  177 + "userRole": GlobalConfig.userRole,
  178 + "mediaId": freeChannel,
172 "publishUrl": publishUrl 179 "publishUrl": publishUrl
173 }; 180 };
174 } 181 }
175 182
176 //桌面共享获取推流地址,频道号由外部传入 183 //桌面共享获取推流地址,频道号由外部传入
177 - getMediaPublishPathForScreenShare(_shareChannel,_publishType) { 184 + getMediaPublishPathForScreenShare(_shareChannel, _publishType) {
178 185
179 - let shareChannel=_shareChannel||this.SCREENSHARING_OBJ_TABLE_ID;  
180 - loger.log('桌面共享获取推流地址->'+shareChannel); 186 + let shareChannel = _shareChannel || this.SCREENSHARING_OBJ_TABLE_ID;
  187 + loger.log('桌面共享获取推流地址->' + shareChannel);
181 //默认方式推流 188 //默认方式推流
182 - let pubType="live";//统一使用live 20170615 189 + let pubType = "live";//统一使用live 20170615
183 /*//flash推流 190 /*//flash推流
184 if(_publishType=="live"){ 191 if(_publishType=="live"){
185 pubType ="live"; 192 pubType ="live";
186 }*/ 193 }*/
187 194
188 //端口,有端口就显示 ":xxx",没有端口就是"" 195 //端口,有端口就显示 ":xxx",没有端口就是""
189 - let port = (GlobalConfig.MS_PUBLISH_PORT == "" || GlobalConfig.MS_PUBLISH_PORT == null) ? "":":" + GlobalConfig.MS_PUBLISH_PORT; 196 + let port = (GlobalConfig.MS_PUBLISH_PORT == "" || GlobalConfig.MS_PUBLISH_PORT == null) ? "" : ":" + GlobalConfig.MS_PUBLISH_PORT;
190 //时间戳 197 //时间戳
191 let timestamp = EngineUtils.creatTimestamp(); 198 let timestamp = EngineUtils.creatTimestamp();
192 199
193 - let streamId=GlobalConfig.siteId+"_"  
194 - + GlobalConfig.classId + "_"+GlobalConfig.userId  
195 - +"_" + shareChannel + "_" + timestamp; 200 + let streamId = GlobalConfig.siteId + "_"
  201 + + GlobalConfig.classId + "_" + GlobalConfig.userId
  202 + + "_" + shareChannel + "_" + timestamp;
196 203
197 //生成推流地址和推流数据(同步数据的时候用) 204 //生成推流地址和推流数据(同步数据的时候用)
198 let publishUrl = "rtmp://" + GlobalConfig.MS_PUBLISH_IP 205 let publishUrl = "rtmp://" + GlobalConfig.MS_PUBLISH_IP
199 - + port + "/"+pubType+"/" +streamId; 206 + + port + "/" + pubType + "/" + streamId;
200 207
201 - publishUrl=publishUrl.replace("::",":");//如果ip和port之间有多的:需要去掉 208 + publishUrl = publishUrl.replace("::", ":");//如果ip和port之间有多的:需要去掉
202 /* this.needPublishMediaChannel[publishUrl]={ 209 /* this.needPublishMediaChannel[publishUrl]={
203 "channelId":shareChannel, 210 "channelId":shareChannel,
204 "publishUrl":publishUrl, 211 "publishUrl":publishUrl,
@@ -206,14 +213,15 @@ class MediaModule { @@ -206,14 +213,15 @@ class MediaModule {
206 "timestamp":timestamp, 213 "timestamp":timestamp,
207 "nodeId":GlobalConfig.nodeId 214 "nodeId":GlobalConfig.nodeId
208 };*/ 215 };*/
209 - return {"code": ApeConsts.RETURN_SUCCESS,  
210 - "data":"",  
211 - "mediaId":shareChannel,  
212 - "userId":GlobalConfig.userId,  
213 - "userName":GlobalConfig.userName,  
214 - "userRole":GlobalConfig.userRole, 216 + return {
  217 + "code": ApeConsts.RETURN_SUCCESS,
  218 + "data": "",
  219 + "mediaId": shareChannel,
  220 + "userId": GlobalConfig.userId,
  221 + "userName": GlobalConfig.userName,
  222 + "userRole": GlobalConfig.userRole,
215 "publishUrl": publishUrl, 223 "publishUrl": publishUrl,
216 - "streamId":streamId 224 + "streamId": streamId
217 }; 225 };
218 } 226 }
219 227
@@ -223,12 +231,12 @@ class MediaModule { @@ -223,12 +231,12 @@ class MediaModule {
223 for (let key in this.mediaChannels) { 231 for (let key in this.mediaChannels) {
224 let item = this.mediaChannels[key]; 232 let item = this.mediaChannels[key];
225 if (item && item.status == ApeConsts.CHANNEL_STATUS_RELEASED) { 233 if (item && item.status == ApeConsts.CHANNEL_STATUS_RELEASED) {
226 - loger.log("已获取空闲的通道->channelId:"+item.channelId); 234 + loger.log("已获取空闲的通道->channelId:" + item.channelId);
227 return item.channelId; 235 return item.channelId;
228 } 236 }
229 counter++; 237 counter++;
230 } 238 }
231 - loger.log("获取空闲的通道","mediaChannels",this.mediaChannels,"counter:",counter); 239 + loger.log("获取空闲的通道", "mediaChannels", this.mediaChannels, "counter:", counter);
232 //loger.log(this.mediaChannels); 240 //loger.log(this.mediaChannels);
233 if (counter < this.maxMediaChannel) { 241 if (counter < this.maxMediaChannel) {
234 return this.MEDIA_OBJ_TABLE_ID + (counter); 242 return this.MEDIA_OBJ_TABLE_ID + (counter);
@@ -237,21 +245,21 @@ class MediaModule { @@ -237,21 +245,21 @@ class MediaModule {
237 } 245 }
238 246
239 //获取准备推流的频道信息 247 //获取准备推流的频道信息
240 - getNeedPublishMediaChannel(_publishUrl){ 248 + getNeedPublishMediaChannel(_publishUrl) {
241 return this.needPublishMediaChannel[_publishUrl]; 249 return this.needPublishMediaChannel[_publishUrl];
242 } 250 }
243 251
244 //获取当前属于nodeId的已经打开的的channel,返回值为0代表没有打开的,否则返回的就是打开的channelId 252 //获取当前属于nodeId的已经打开的的channel,返回值为0代表没有打开的,否则返回的就是打开的channelId
245 - getOpeningMediaChannelForNodeId(_nodeId){  
246 - loger.log("getOpeningMediaChannel","nodeId",_nodeId,"mediaChannels:",this.mediaChannels);  
247 - let channelInfo={};  
248 - channelInfo.channelId=0;  
249 - if(_nodeId==null||_nodeId==0){ 253 + getOpeningMediaChannelForNodeId(_nodeId) {
  254 + loger.log("getOpeningMediaChannel", "nodeId", _nodeId, "mediaChannels:", this.mediaChannels);
  255 + let channelInfo = {};
  256 + channelInfo.channelId = 0;
  257 + if (_nodeId == null || _nodeId == 0) {
250 return channelInfo; 258 return channelInfo;
251 } 259 }
252 for (let key in this.mediaChannels) { 260 for (let key in this.mediaChannels) {
253 let item = this.mediaChannels[key]; 261 let item = this.mediaChannels[key];
254 - if (item && item.status == ApeConsts.CHANNEL_STATUS_OPENING&&item.fromNodeId==_nodeId) { 262 + if (item && item.status == ApeConsts.CHANNEL_STATUS_OPENING && item.fromNodeId == _nodeId) {
255 return item; 263 return item;
256 } 264 }
257 } 265 }
@@ -259,51 +267,52 @@ class MediaModule { @@ -259,51 +267,52 @@ class MediaModule {
259 } 267 }
260 268
261 //检查频道是否已经被占用 269 //检查频道是否已经被占用
262 - checkChannelIsOpening(_channelId){  
263 - if(_channelId==null){  
264 - loger.warn("checkChannelIsOpening error,channel=",_channelId); 270 + checkChannelIsOpening(_channelId) {
  271 + if (_channelId == null) {
  272 + loger.warn("checkChannelIsOpening error,channel=", _channelId);
265 return true; 273 return true;
266 } 274 }
267 - let channelInfo=this.mediaChannels[_channelId];  
268 - if(channelInfo==null||channelInfo.status==ApeConsts.CHANNEL_STATUS_RELEASED){ 275 + let channelInfo = this.mediaChannels[_channelId];
  276 + if (channelInfo == null || channelInfo.status == ApeConsts.CHANNEL_STATUS_RELEASED) {
269 return false; 277 return false;
270 } 278 }
271 return true; 279 return true;
272 } 280 }
273 281
274 //获取当前所有频道的信息 282 //获取当前所有频道的信息
275 - getAllMediaChannelInfo(){  
276 - let channels=[];  
277 - for (let key in this.mediaChannels){  
278 - let channel=this.mediaChannels[key];  
279 - if(channel){  
280 - channels.push({"mediaId":channel.channelId,"status":channel.status,"fromNodeId":channel.fromNodeId}); 283 + getAllMediaChannelInfo() {
  284 + let channels = [];
  285 + for (let key in this.mediaChannels) {
  286 + let channel = this.mediaChannels[key];
  287 + if (channel) {
  288 + channels.push({"mediaId": channel.channelId, "status": channel.status, "fromNodeId": channel.fromNodeId});
281 } 289 }
282 } 290 }
283 - if(channels.length<this.maxMediaChannel){  
284 - for (let i=channels.length;i<this.maxMediaChannel;i++){  
285 - let channelId=this.MEDIA_OBJ_TABLE_ID + (i);  
286 - channels.push({"mediaId":channelId,"status":ApeConsts.CHANNEL_STATUS_RELEASED,"fromNodeId":0}); 291 + if (channels.length < this.maxMediaChannel) {
  292 + for (let i = channels.length; i < this.maxMediaChannel; i++) {
  293 + let channelId = this.MEDIA_OBJ_TABLE_ID + (i);
  294 + channels.push({"mediaId": channelId, "status": ApeConsts.CHANNEL_STATUS_RELEASED, "fromNodeId": 0});
287 } 295 }
288 } 296 }
289 return channels; 297 return channels;
290 } 298 }
  299 +
291 //获取默认的频道信息 300 //获取默认的频道信息
292 - getDefaultChannelInfo(){  
293 - let channelInfo={};  
294 - channelInfo.owner=0;//这个很重要,释放的时候必须设置为0,占用的时候设置为自己的nodeId  
295 - channelInfo.status=ApeConsts.CHANNEL_STATUS_RELEASED;  
296 - channelInfo.fromNodeId=GlobalConfig.nodeId;  
297 - channelInfo.channelId=0;//channelId不能为0  
298 - channelInfo.streamId="";  
299 - channelInfo.classId=GlobalConfig.classId;  
300 - channelInfo.siteId=GlobalConfig.siteId;  
301 - channelInfo.toNodeId=0;  
302 - channelInfo.userId=GlobalConfig.userId;  
303 - channelInfo.mediaType=this.mediaType||ApeConsts.MEDIA_TYPE_DEFAULT; 301 + getDefaultChannelInfo() {
  302 + let channelInfo = {};
  303 + channelInfo.owner = 0;//这个很重要,释放的时候必须设置为0,占用的时候设置为自己的nodeId
  304 + channelInfo.status = ApeConsts.CHANNEL_STATUS_RELEASED;
  305 + channelInfo.fromNodeId = GlobalConfig.nodeId;
  306 + channelInfo.channelId = 0;//channelId不能为0
  307 + channelInfo.streamId = "";
  308 + channelInfo.classId = GlobalConfig.classId;
  309 + channelInfo.siteId = GlobalConfig.siteId;
  310 + channelInfo.toNodeId = 0;
  311 + channelInfo.userId = GlobalConfig.userId;
  312 + channelInfo.mediaType = this.mediaType || ApeConsts.MEDIA_TYPE_DEFAULT;
304 return channelInfo; 313 return channelInfo;
305 } 314 }
306 } 315 }
307 -MediaModule.allMediaChannelsList={};//当前已经创建的所有音视频通道(包含释放或未未释放的) 316 +MediaModule.allMediaChannelsList = {};//当前已经创建的所有音视频通道(包含释放或未未释放的)
308 export default MediaModule; 317 export default MediaModule;
309 318