李勇

1.修改视频和音频模块代码,清理无效代码

@@ -63,8 +63,8 @@ class AudioApe extends Ape { @@ -63,8 +63,8 @@ class AudioApe extends Ape {
63 63
64 //同一个nodeId只允许推一个流,如果已经推了就不能再推 64 //同一个nodeId只允许推一个流,如果已经推了就不能再推
65 if(this.mediaModule.getOpeningMediaChannel(GlobalConfig.nodeId)!=0){ 65 if(this.mediaModule.getOpeningMediaChannel(GlobalConfig.nodeId)!=0){
66 - loger.warn("publishVideo,已经存在一个流,不能再推");  
67 - return; 66 + loger.warn("publishAudio,已经存在一个流,不能再推");
  67 + return {"code": ApeConsts.RETURN_FAILED, "data": "已经存在一个流,不能再推"};
68 } 68 }
69 69
70 //判断当前是否还有空闲的channle 70 //判断当前是否还有空闲的channle
@@ -146,12 +146,7 @@ class AudioApe extends Ape { @@ -146,12 +146,7 @@ class AudioApe extends Ape {
146 return {"code": ApeConsts.RETURN_FAILED, "data": "不能再打开更多的设备"}; 146 return {"code": ApeConsts.RETURN_FAILED, "data": "不能再打开更多的设备"};
147 } 147 }
148 } 148 }
149 - /* message RCVideoSendDataRequestPdu {  
150 - required uint32 from_node_id = 1;//发起人  
151 - optional uint32 to_node_id = 2;//接收人,如果是0就是所有人都接收  
152 - optional uint32 actionType = 3;//消息指令类型;  
153 - optional bytes data = 4;//其他数据,这个根据actionType来确定数据的结构  
154 - }*/ 149 +
155 150
156 let audioSendPdu = new pdu['RCAudioSendDataRequestPdu']; 151 let audioSendPdu = new pdu['RCAudioSendDataRequestPdu'];
157 audioSendPdu.type = pdu.RCPDU_AUDIO_SEND_DATA_REQUEST; 152 audioSendPdu.type = pdu.RCPDU_AUDIO_SEND_DATA_REQUEST;
@@ -177,14 +172,14 @@ class AudioApe extends Ape { @@ -177,14 +172,14 @@ class AudioApe extends Ape {
177 172
178 sendTableUpdateHandler(_channelInfo) { 173 sendTableUpdateHandler(_channelInfo) {
179 loger.log("audio,sendTableUpdateHandler "); 174 loger.log("audio,sendTableUpdateHandler ");
180 - let updateModelPdu = this.packPdu(_channelInfo, _channelInfo.channelId);//let updateModelPdu=this.packPdu({},ApeConsts.VIDEO_OBJ_TABLE_ID+2); 175 + let updateModelPdu = this.packPdu(_channelInfo, _channelInfo.channelId);
181 if(updateModelPdu==null){ 176 if(updateModelPdu==null){
182 loger.warn("sendTableUpdateHandler error,updateModelPdu=null"); 177 loger.warn("sendTableUpdateHandler error,updateModelPdu=null");
183 return; 178 return;
184 } 179 }
185 180
186 let tableItemPdu = new pdu['RCRegistryTableItemPdu']; 181 let tableItemPdu = new pdu['RCRegistryTableItemPdu'];
187 - tableItemPdu.itemIdx = _channelInfo.channelId;//tableItemPdu.itemIdx=ApeConsts.VIDEO_OBJ_TABLE_ID+2; 182 + tableItemPdu.itemIdx = _channelInfo.channelId;
188 tableItemPdu.owner = 0;//收到flash的是这个值,不清楚先写固定 183 tableItemPdu.owner = 0;//收到flash的是这个值,不清楚先写固定
189 tableItemPdu.itemData = updateModelPdu.toArrayBuffer(); 184 tableItemPdu.itemData = updateModelPdu.toArrayBuffer();
190 185
@@ -235,39 +230,11 @@ class AudioApe extends Ape { @@ -235,39 +230,11 @@ class AudioApe extends Ape {
235 230
236 tableUpdateHandler(owner, itemIdx, itemData) { 231 tableUpdateHandler(owner, itemIdx, itemData) {
237 // debugger; 232 // debugger;
238 - let videoChannelInfo = this.unPackPdu(owner, itemIdx, itemData);  
239 - //videoChannelInfo.owner = owner;  
240 - //videoChannelInfo.channelId = itemIdx;  
241 - //videoChannelInfo.status = owner === 0 ? ApeConsts.CHANNEL_STATUS_RELEASED : videoChannelInfo.status;  
242 - //loger.log('视频消息处理 tableUpdateHandler.',videoChannelInfo);  
243 - this.mediaModule.mediaChannels[itemIdx] = videoChannelInfo;  
244 -  
245 - this._emit(MessageTypes.AUDIO_UPDATE, videoChannelInfo);  
246 - /* switch (videoChannelInfo.status) {  
247 - case ApeConsts.CHANNEL_STATUS_RELEASED:  
248 - // 只能关闭自己的流  
249 - if (this.activeChannelId === videoChannelInfo.channelId) {  
250 - this.activeChannelId = 0;  
251 - this.activeURL = '';  
252 - this.emitVideoChange();  
253 - }  
254 - break;  
255 - case ApeConsts.CHANNEL_STATUS_OPENING:  
256 - //_playUrl = "rtmfp://" + Config.mediaServerAddr + ":" + Config.mediaServerPort + "/message/" + _streamName;  
257 - //_cdnUrl = "rtmp://" + Config.mediaCDNServerAddr + ":" + Config.mediaCDNServerPort + "/message/" + _streamName;  
258 - //this.activeChannelId = videoChannelInfo.channelId;  
259 - //// AMS/FMS  
260 - //if (this._classInfo.msType ==ApeConsts.MS_TYPE_FMS) {  
261 - // this.activeURL = `http://dazhi.3mang.com/live/${this._classInfo.classId}/${this._classInfo.classId}_${videoChannelInfo.channelId}_flash_cam_mic_aac/playlist.m3u8`;  
262 - //}else {  
263 - // this.activeURL = `http://hls.3mang.com/live/${this._classInfo.classId}_${videoChannelInfo.channelId}_flash_cam_mic_aac/playlist.m3u8`;  
264 - //}  
265 - // 任何人都可以打开流  
266 - this.emitVideoChange();  
267 - break;  
268 - default:  
269 - break;  
270 - }*/ 233 + let updateChannelInfo = this.unPackPdu(owner, itemIdx, itemData);
  234 +
  235 + this.mediaModule.mediaChannels[itemIdx] = updateChannelInfo;
  236 +
  237 + this._emit(MessageTypes.AUDIO_UPDATE, updateChannelInfo);
271 } 238 }
272 239
273 ///////数据的封包和解包///////////////////////////////////////// 240 ///////数据的封包和解包/////////////////////////////////////////
@@ -279,14 +246,6 @@ class AudioApe extends Ape { @@ -279,14 +246,6 @@ class AudioApe extends Ape {
279 return null; 246 return null;
280 } 247 }
281 248
282 - /* message RCVideoChannelInfoPdu {  
283 - optional uint32 status = 1;//开启的状态  
284 - optional uint32 channel_id = 2;//唯一的频道id  
285 - optional uint32 timestamp = 3;//更新的时间戳  
286 - optional uint32 from_node_id = 4;//发起者的id  
287 - optional uint32 to_node_id = 5;//接收者的id,(如果是0,所有人都接收)  
288 - }*/  
289 -  
290 //判断type类型,根据type设置不同的参数 249 //判断type类型,根据type设置不同的参数
291 let packPduModel = new pdu['RCAudioChannelInfoPdu']; 250 let packPduModel = new pdu['RCAudioChannelInfoPdu'];
292 packPduModel.status = _param.status||ApeConsts.CHANNEL_STATUS_RELEASED; 251 packPduModel.status = _param.status||ApeConsts.CHANNEL_STATUS_RELEASED;
@@ -309,9 +268,9 @@ class AudioApe extends Ape { @@ -309,9 +268,9 @@ class AudioApe extends Ape {
309 return null; 268 return null;
310 } 269 }
311 try { 270 try {
312 - let videoChannelInfo = pdu['RCAudioChannelInfoPdu'].decode(itemData);  
313 - loger.log("unPackPdu",videoChannelInfo);  
314 - return videoChannelInfo; 271 + let packChannelInfo = pdu['RCAudioChannelInfoPdu'].decode(itemData);
  272 + loger.log("unPackPdu",packChannelInfo);
  273 + return packChannelInfo;
315 } catch (err) { 274 } catch (err) {
316 loger.log("unPackPdu error,itemIdx=" + itemIdx + " err:" + err.message); 275 loger.log("unPackPdu error,itemIdx=" + itemIdx + " err:" + err.message);
317 } 276 }
@@ -67,7 +67,7 @@ class VideoApe extends Ape { @@ -67,7 +67,7 @@ class VideoApe extends Ape {
67 //同一个nodeId只允许推一个流,如果已经推了就不能再推 67 //同一个nodeId只允许推一个流,如果已经推了就不能再推
68 if(this.mediaModule.getOpeningMediaChannel(GlobalConfig.nodeId)!=0){ 68 if(this.mediaModule.getOpeningMediaChannel(GlobalConfig.nodeId)!=0){
69 loger.warn("publishVideo,已经存在一个流,不能再推"); 69 loger.warn("publishVideo,已经存在一个流,不能再推");
70 - return; 70 + return {"code": ApeConsts.RETURN_FAILED, "data": "已经存在一个流,不能再推"};
71 } 71 }
72 72
73 //判断当前是否还有空闲的channle 73 //判断当前是否还有空闲的channle
@@ -250,38 +250,8 @@ class VideoApe extends Ape { @@ -250,38 +250,8 @@ class VideoApe extends Ape {
250 tableUpdateHandler(owner, itemIdx, itemData) { 250 tableUpdateHandler(owner, itemIdx, itemData) {
251 // debugger; 251 // debugger;
252 let videoChannelInfo = this.unPackPdu(owner, itemIdx, itemData); 252 let videoChannelInfo = this.unPackPdu(owner, itemIdx, itemData);
253 - //videoChannelInfo.owner = owner;  
254 - //videoChannelInfo.channelId = itemIdx;  
255 - //videoChannelInfo.status = owner === 0 ? ApeConsts.CHANNEL_STATUS_RELEASED : videoChannelInfo.status;  
256 - //loger.log('视频消息处理 tableUpdateHandler.',videoChannelInfo);  
257 this.mediaModule.mediaChannels[itemIdx] = videoChannelInfo; 253 this.mediaModule.mediaChannels[itemIdx] = videoChannelInfo;
258 -  
259 this._emit(MessageTypes.VIDEO_UPDATE, videoChannelInfo); 254 this._emit(MessageTypes.VIDEO_UPDATE, videoChannelInfo);
260 - /* switch (videoChannelInfo.status) {  
261 - case ApeConsts.CHANNEL_STATUS_RELEASED:  
262 - // 只能关闭自己的流  
263 - if (this.activeChannelId === videoChannelInfo.channelId) {  
264 - this.activeChannelId = 0;  
265 - this.activeURL = '';  
266 - this.emitVideoChange();  
267 - }  
268 - break;  
269 - case ApeConsts.CHANNEL_STATUS_OPENING:  
270 - //_playUrl = "rtmfp://" + Config.mediaServerAddr + ":" + Config.mediaServerPort + "/message/" + _streamName;  
271 - //_cdnUrl = "rtmp://" + Config.mediaCDNServerAddr + ":" + Config.mediaCDNServerPort + "/message/" + _streamName;  
272 - //this.activeChannelId = videoChannelInfo.channelId;  
273 - //// AMS/FMS  
274 - //if (this._classInfo.msType ==ApeConsts.MS_TYPE_FMS) {  
275 - // this.activeURL = `http://dazhi.3mang.com/live/${this._classInfo.classId}/${this._classInfo.classId}_${videoChannelInfo.channelId}_flash_cam_mic_aac/playlist.m3u8`;  
276 - //}else {  
277 - // this.activeURL = `http://hls.3mang.com/live/${this._classInfo.classId}_${videoChannelInfo.channelId}_flash_cam_mic_aac/playlist.m3u8`;  
278 - //}  
279 - // 任何人都可以打开流  
280 - this.emitVideoChange();  
281 - break;  
282 - default:  
283 - break;  
284 - }*/  
285 } 255 }
286 256
287 ///////数据的封包和解包///////////////////////////////////////// 257 ///////数据的封包和解包/////////////////////////////////////////
@@ -293,14 +263,6 @@ class VideoApe extends Ape { @@ -293,14 +263,6 @@ class VideoApe extends Ape {
293 return null; 263 return null;
294 } 264 }
295 265
296 - /* message RCVideoChannelInfoPdu {  
297 - optional uint32 status = 1;//开启的状态  
298 - optional uint32 channel_id = 2;//唯一的频道id  
299 - optional uint32 timestamp = 3;//更新的时间戳  
300 - optional uint32 from_node_id = 4;//发起者的id  
301 - optional uint32 to_node_id = 5;//接收者的id,(如果是0,所有人都接收)  
302 - }*/  
303 -  
304 //判断type类型,根据type设置不同的参数 266 //判断type类型,根据type设置不同的参数
305 let packPduModel = new pdu['RCVideoChannelInfoPdu']; 267 let packPduModel = new pdu['RCVideoChannelInfoPdu'];
306 packPduModel.status = _param.status||ApeConsts.CHANNEL_STATUS_RELEASED; 268 packPduModel.status = _param.status||ApeConsts.CHANNEL_STATUS_RELEASED;