李勇

音视频模块推流逻辑处理,调用接口需要判断是否还能推流

此 diff 太大无法显示。
@@ -27,7 +27,7 @@ import Server from "config/Server"; @@ -27,7 +27,7 @@ import Server from "config/Server";
27 import UTF8 from 'utf-8'; 27 import UTF8 from 'utf-8';
28 28
29 let loger = Loger.getLoger('McuClient'); 29 let loger = Loger.getLoger('McuClient');
30 -let _sdkInfo = {"version": "v1.16.1.201705010", "author": "www.3mang.com"}; 30 +let _sdkInfo = {"version": "v1.17.0.201705010", "author": "www.3mang.com"};
31 31
32 //APE 32 //APE
33 let _sass; 33 let _sass;
@@ -189,8 +189,14 @@ export default class MessageEntrance extends Emiter { @@ -189,8 +189,14 @@ export default class MessageEntrance extends Emiter {
189 this.setMessageDelay = this._setMessageDelay.bind(this);//设置是否延迟消息 189 this.setMessageDelay = this._setMessageDelay.bind(this);//设置是否延迟消息
190 this.switchServer = this._switchMcuIpHandler.bind(this);//切换mcu服务器 190 this.switchServer = this._switchMcuIpHandler.bind(this);//切换mcu服务器
191 this.switchMediaServer = this._switchMsIpHandler.bind(this);//切换ms服务器 191 this.switchMediaServer = this._switchMsIpHandler.bind(this);//切换ms服务器
  192 + this.setDebugInfo= this._setDebugInfo.bind(this);//设置debug信息
  193 + }
  194 + _setDebugInfo(_data){
  195 + loger.log("设置debug信息-->", _data);
  196 + if(_data){
  197 + Loger.IS_DEBUG=_data.isDebug;
  198 + }
192 } 199 }
193 -  
194 //设置设备信息 200 //设置设备信息
195 _setDeviceInfo(_data) { 201 _setDeviceInfo(_data) {
196 loger.log("设置设备信息-->", _data); 202 loger.log("设置设备信息-->", _data);
@@ -58,8 +58,10 @@ class Loger { @@ -58,8 +58,10 @@ class Loger {
58 this._log(Loger.DATA, msg); 58 this._log(Loger.DATA, msg);
59 } 59 }
60 _log(type, msg) { 60 _log(type, msg) {
  61 + if(!Loger.IS_DEBUG){
  62 + return;
  63 + }
61 msg = JSON.stringify(msg); 64 msg = JSON.stringify(msg);
62 -  
63 let logMsg = `${this.id} -> ${msg}`; 65 let logMsg = `${this.id} -> ${msg}`;
64 if (type >= Loger.logLevel) { 66 if (type >= Loger.logLevel) {
65 switch (type) { 67 switch (type) {
@@ -79,7 +81,7 @@ class Loger { @@ -79,7 +81,7 @@ class Loger {
79 } 81 }
80 } 82 }
81 } 83 }
82 - 84 +Loger.IS_DEBUG=true;
83 Loger.LOG = 0; 85 Loger.LOG = 0;
84 Loger.WARN = 1; 86 Loger.WARN = 1;
85 Loger.ERROR = 2; 87 Loger.ERROR = 2;
@@ -53,6 +53,21 @@ class AudioApe extends Ape { @@ -53,6 +53,21 @@ 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 + let openChannel=0;
  58 + let allChannels= MediaModule.allMediaChannelsList;
  59 + for(let i in allChannels){
  60 + let channel=allChannels[i];
  61 + if(channel&&channel.status==ApeConsts.CHANNEL_STATUS_OPENING){
  62 + openChannel++;
  63 + }
  64 + }
  65 + //如果已经开启的数量大于等于最大允许开启的数量,不允许再推流
  66 + if(openChannel>=GlobalConfig.maxMediaChannels){
  67 + loger.warn('不能再打开设备->当前开启的设备数量->',openChannel);
  68 + return {"code": ApeConsts.RETURN_FAILED, "data": "不能再打开设备,当前开启的设备数量"};
  69 + }
  70 +
56 let result=this.mediaModule.getMediaPublishPath(_param); 71 let result=this.mediaModule.getMediaPublishPath(_param);
57 this._emit( MessageTypes.AUDIO_GET_PUBLISH_PATH,result); 72 this._emit( MessageTypes.AUDIO_GET_PUBLISH_PATH,result);
58 return result; 73 return result;
@@ -209,6 +209,6 @@ class MediaModule { @@ -209,6 +209,6 @@ class MediaModule {
209 return channelInfo; 209 return channelInfo;
210 } 210 }
211 } 211 }
212 - 212 +MediaModule.allMediaChannelsList={};//当前已经创建的所有音视频通道(包含释放或未未释放的)
213 export default MediaModule; 213 export default MediaModule;
214 214
@@ -51,8 +51,23 @@ class VideoApe extends Ape { @@ -51,8 +51,23 @@ class VideoApe extends Ape {
51 loger.log('获取推流地址->'); 51 loger.log('获取推流地址->');
52 if(!this.mcu.connected){ 52 if(!this.mcu.connected){
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 + }
  56 + //需要判断当前已经使用的流路数
  57 + let openChannel=0;
  58 + let allChannels= MediaModule.allMediaChannelsList;
  59 + for(let i in allChannels){
  60 + let channel=allChannels[i];
  61 + if(channel&&channel.status==ApeConsts.CHANNEL_STATUS_OPENING){
  62 + openChannel++;
  63 + }
55 } 64 }
  65 + //如果已经开启的数量大于等于最大允许开启的数量,不允许再推流
  66 + if(openChannel>=GlobalConfig.maxMediaChannels){
  67 + loger.warn('不能再打开设备->当前开启的设备数量->',openChannel);
  68 + return {"code": ApeConsts.RETURN_FAILED, "data": "不能再打开设备,当前开启的设备数量"};
  69 + }
  70 +
56 let result=this.mediaModule.getMediaPublishPath(_param); 71 let result=this.mediaModule.getMediaPublishPath(_param);
57 this._emit( MessageTypes.VIDEO_GET_PUBLISH_PATH,result); 72 this._emit( MessageTypes.VIDEO_GET_PUBLISH_PATH,result);
58 return result; 73 return result;
@@ -396,6 +411,8 @@ class VideoApe extends Ape { @@ -396,6 +411,8 @@ class VideoApe extends Ape {
396 }); 411 });
397 } 412 }
398 413
  414 + MediaModule.allMediaChannelsList[itemIdx]=unpackChannelInfo;
  415 + console.log('MediaModule.allMediaChannelsList',MediaModule.allMediaChannelsList);
399 this._emit(MessageTypes.VIDEO_UPDATE, unpackChannelInfo); 416 this._emit(MessageTypes.VIDEO_UPDATE, unpackChannelInfo);
400 } 417 }
401 418