李勇

音视频模块新增获取推流地址和推流结果4个事件监听消息

此 diff 太大无法显示。
@@ -26,7 +26,7 @@ import ArrayBufferUtil from 'libs/ArrayBufferUtil'; @@ -26,7 +26,7 @@ import ArrayBufferUtil from 'libs/ArrayBufferUtil';
26 import UTF8 from 'utf-8'; 26 import UTF8 from 'utf-8';
27 27
28 let loger = Loger.getLoger('MessageEntrance'); 28 let loger = Loger.getLoger('MessageEntrance');
29 -let _sdkInfo = {"version": "v.1.9.2.20170413", "author": "www.3mang.com"}; 29 +let _sdkInfo = {"version": "v.1.9.3.20170414", "author": "www.3mang.com"};
30 30
31 //APE 31 //APE
32 let _sass; 32 let _sass;
@@ -38,14 +38,19 @@ MessageTypes.CHAT_RECEIVE ="chat_receive_message";// 'chat.receive'; @@ -38,14 +38,19 @@ MessageTypes.CHAT_RECEIVE ="chat_receive_message";// 'chat.receive';
38 MessageTypes.VIDEO_PLAY ="video_play";// 'video.play';//播放视频 38 MessageTypes.VIDEO_PLAY ="video_play";// 'video.play';//播放视频
39 MessageTypes.VIDEO_STOP ="video_stop"; //'video.stop';//停止视频 39 MessageTypes.VIDEO_STOP ="video_stop"; //'video.stop';//停止视频
40 MessageTypes.VIDEO_UPDATE ="video_update";// //这个监听事件不能删除,需要通知课堂模块,检查channel占用(内部使用) 40 MessageTypes.VIDEO_UPDATE ="video_update";// //这个监听事件不能删除,需要通知课堂模块,检查channel占用(内部使用)
41 -MessageTypes.VIDEO_BROADCAST= "video_broadcast";//'video.broadcast'; 41 +MessageTypes.VIDEO_BROADCAST= "video_broadcast";//'视频控制广播消息;
  42 +MessageTypes.VIDEO_GET_PUBLISH_PATH= "video_get_publish_path";//获取视频推流地址
  43 +MessageTypes.VIDEO_PUBLISH_RESULT= "video_publish_result";//获取视频推流结果
  44 +
  45 +
42 46
43 //音频模块事件定义 47 //音频模块事件定义
44 MessageTypes.AUDIO_PLAY ="audio_play";// 'audio.play';//播放 48 MessageTypes.AUDIO_PLAY ="audio_play";// 'audio.play';//播放
45 MessageTypes.AUDIO_STOP = "audio_stop";//'audio.stop';//停止 49 MessageTypes.AUDIO_STOP = "audio_stop";//'audio.stop';//停止
46 MessageTypes.AUDIO_UPDATE = "audio_update";//这个监听事件不能删除,需要通知课堂模块,检查channel占用(内部使用) 50 MessageTypes.AUDIO_UPDATE = "audio_update";//这个监听事件不能删除,需要通知课堂模块,检查channel占用(内部使用)
47 MessageTypes.AUDIO_BROADCAST= "audio_broadcast";//'audio.broadcast'; 51 MessageTypes.AUDIO_BROADCAST= "audio_broadcast";//'audio.broadcast';
48 - 52 +MessageTypes.AUDIO_GET_PUBLISH_PATH= "audio_get_publish_path";//获取音频推流地址
  53 +MessageTypes.AUDIO_PUBLISH_RESULT= "audio_publish_result";//获取音频推流结果
49 54
50 //文档模块事件定义 55 //文档模块事件定义
51 MessageTypes.DOC_DELETE="document_delete";//'document.delete';//删除文档 56 MessageTypes.DOC_DELETE="document_delete";//'document.delete';//删除文档
@@ -52,7 +52,9 @@ class AudioApe extends Ape { @@ -52,7 +52,9 @@ class AudioApe extends Ape {
52 loger.warn(GlobalConfig.getCurrentStatus()); 52 loger.warn(GlobalConfig.getCurrentStatus());
53 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};; 53 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};;
54 } 54 }
55 - return this.mediaModule.getMediaPublishPath(_param); 55 + let result=this.mediaModule.getMediaPublishPath(_param);
  56 + this._emit( MessageTypes.AUDIO_GET_PUBLISH_PATH,result);
  57 + return result;
56 } 58 }
57 59
58 //获取当前所有频道信息 60 //获取当前所有频道信息
@@ -65,13 +67,15 @@ class AudioApe extends Ape { @@ -65,13 +67,15 @@ class AudioApe extends Ape {
65 publishAudio(_param) { 67 publishAudio(_param) {
66 if(!this.mcu.connected){ 68 if(!this.mcu.connected){
67 loger.warn(GlobalConfig.getCurrentStatus()); 69 loger.warn(GlobalConfig.getCurrentStatus());
68 - return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"}; 70 + this._emit( MessageTypes.AUDIO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_FAILED, "data":"已经断开连接!","mediaId":0});
  71 + return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接","mediaId":0};
69 } 72 }
70 73
71 if (_param == null||_param.publishUrl == null) 74 if (_param == null||_param.publishUrl == null)
72 { 75 {
73 loger.warn('推流->参数错误', _param); 76 loger.warn('推流->参数错误', _param);
74 this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); 77 this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
  78 + this._emit( MessageTypes.AUDIO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_FAILED, "data":"参数错误!","mediaId":0});
75 return {"code": ApeConsts.RETURN_FAILED, "data": "参数错误"}; 79 return {"code": ApeConsts.RETURN_FAILED, "data": "参数错误"};
76 } 80 }
77 81
@@ -79,27 +83,22 @@ class AudioApe extends Ape { @@ -79,27 +83,22 @@ class AudioApe extends Ape {
79 let needPublishChannelInfo=this.mediaModule.getNeedPublishMediaChannel(_param.publishUrl); 83 let needPublishChannelInfo=this.mediaModule.getNeedPublishMediaChannel(_param.publishUrl);
80 if(needPublishChannelInfo==null){ 84 if(needPublishChannelInfo==null){
81 loger.warn('推流->推流数据已经无效', _param); 85 loger.warn('推流->推流数据已经无效', _param);
  86 + this._emit( MessageTypes.AUDIO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_FAILED, "data":"推流数据已经无效!","mediaId":0});
82 return {"code": ApeConsts.RETURN_FAILED, "data": "推流数据已经无效"}; 87 return {"code": ApeConsts.RETURN_FAILED, "data": "推流数据已经无效"};
83 } 88 }
84 89
85 - /* //20170302 修改频道占用规则,同一个人可以推多路流,暂停下面的限制  
86 - //同一个nodeId只允许推一个流,如果已经推了就不能再推  
87 - if(this.mediaModule.getOpeningMediaChannel(GlobalConfig.nodeId)!=0){  
88 - loger.warn("publishAudio,已经存在一个流,不能再推");  
89 - return {"code": ApeConsts.RETURN_FAILED, "data": "已经存在一个流,不能再推","mediaChannels":this.mediaModule.mediaChannels};  
90 - }*/  
91 -  
92 -  
93 //判断当前是否还有空闲的channle 90 //判断当前是否还有空闲的channle
94 let freeChannel = this.mediaModule.getFreeMediaChannel(); 91 let freeChannel = this.mediaModule.getFreeMediaChannel();
95 if (freeChannel == 0) { 92 if (freeChannel == 0) {
96 loger.warn("推流->不能再打开更多的设备"); 93 loger.warn("推流->不能再打开更多的设备");
  94 + this._emit( MessageTypes.AUDIO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_FAILED, "data": "不能再打开更多的设备","mediaId":0});
97 return {"code": ApeConsts.RETURN_FAILED, "data": "不能再打开更多的设备","mediaChannels":this.mediaModule.mediaChannels}; 95 return {"code": ApeConsts.RETURN_FAILED, "data": "不能再打开更多的设备","mediaChannels":this.mediaModule.mediaChannels};
98 } 96 }
99 97
100 //判断当前的频道是否已经占用 98 //判断当前的频道是否已经占用
101 if(this.mediaModule.checkChannelIsOpening(needPublishChannelInfo.channelId)){ 99 if(this.mediaModule.checkChannelIsOpening(needPublishChannelInfo.channelId)){
102 loger.warn(needPublishChannelInfo.channelId,"频道已经被占用"); 100 loger.warn(needPublishChannelInfo.channelId,"频道已经被占用");
  101 + this._emit( MessageTypes.AUDIO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_FAILED, "data":"频道已经被占用!","mediaId":0});
103 return {"code": ApeConsts.RETURN_FAILED, "data":"频道已经被占用!"}; 102 return {"code": ApeConsts.RETURN_FAILED, "data":"频道已经被占用!"};
104 } 103 }
105 104
@@ -111,6 +110,7 @@ class AudioApe extends Ape { @@ -111,6 +110,7 @@ class AudioApe extends Ape {
111 channelInfo.timestamp=needPublishChannelInfo.timestamp;//EngineUtils.creatTimestamp(); 110 channelInfo.timestamp=needPublishChannelInfo.timestamp;//EngineUtils.creatTimestamp();
112 channelInfo.mediaType=ApeConsts.MEDIA_TYPE_AUDIO; 111 channelInfo.mediaType=ApeConsts.MEDIA_TYPE_AUDIO;
113 this.sendTableUpdateHandler(channelInfo); 112 this.sendTableUpdateHandler(channelInfo);
  113 + this._emit( MessageTypes.AUDIO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_SUCCESS, "data":"推流成功!","mediaId":needPublishChannelInfo.channelId});
114 return {"code": ApeConsts.RETURN_SUCCESS, "data":"推流成功!","mediaId":needPublishChannelInfo.channelId}; 114 return {"code": ApeConsts.RETURN_SUCCESS, "data":"推流成功!","mediaId":needPublishChannelInfo.channelId};
115 } 115 }
116 116
@@ -52,7 +52,9 @@ class VideoApe extends Ape { @@ -52,7 +52,9 @@ class VideoApe extends Ape {
52 loger.warn(GlobalConfig.getCurrentStatus()); 52 loger.warn(GlobalConfig.getCurrentStatus());
53 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};; 53 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};;
54 } 54 }
55 - return this.mediaModule.getMediaPublishPath(_param); 55 + let result=this.mediaModule.getMediaPublishPath(_param);
  56 + this._emit( MessageTypes.VIDEO_GET_PUBLISH_PATH,result);
  57 + return result;
56 } 58 }
57 59
58 //获取当前所有频道信息 60 //获取当前所有频道信息
@@ -65,6 +67,7 @@ class VideoApe extends Ape { @@ -65,6 +67,7 @@ class VideoApe extends Ape {
65 publishVideo(_param) { 67 publishVideo(_param) {
66 if(!this.mcu.connected){ 68 if(!this.mcu.connected){
67 loger.warn(GlobalConfig.getCurrentStatus()); 69 loger.warn(GlobalConfig.getCurrentStatus());
  70 + this._emit( MessageTypes.VIDEO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_FAILED, "data":"已经断开连接!","mediaId":0});
68 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"}; 71 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};
69 } 72 }
70 73
@@ -72,6 +75,7 @@ class VideoApe extends Ape { @@ -72,6 +75,7 @@ class VideoApe extends Ape {
72 { 75 {
73 loger.warn('推流->参数错误', _param); 76 loger.warn('推流->参数错误', _param);
74 this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); 77 this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
  78 + this._emit( MessageTypes.VIDEO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_FAILED, "data":"参数错误!","mediaId":0});
75 return {"code": ApeConsts.RETURN_FAILED, "data": "参数错误"}; 79 return {"code": ApeConsts.RETURN_FAILED, "data": "参数错误"};
76 } 80 }
77 81
@@ -79,21 +83,15 @@ class VideoApe extends Ape { @@ -79,21 +83,15 @@ class VideoApe extends Ape {
79 let needPublishChannelInfo=this.mediaModule.getNeedPublishMediaChannel(_param.publishUrl); 83 let needPublishChannelInfo=this.mediaModule.getNeedPublishMediaChannel(_param.publishUrl);
80 if(needPublishChannelInfo==null){ 84 if(needPublishChannelInfo==null){
81 loger.warn('推流->推流数据已经无效', _param); 85 loger.warn('推流->推流数据已经无效', _param);
  86 + this._emit( MessageTypes.VIDEO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_FAILED, "data":"推流数据已经无效!","mediaId":0});
82 return {"code": ApeConsts.RETURN_FAILED, "data": "推流数据已经无效"}; 87 return {"code": ApeConsts.RETURN_FAILED, "data": "推流数据已经无效"};
83 } 88 }
84 89
85 - /* //20170302 修改频道占用规则,同一个人可以推多路流,暂停下面的限制  
86 -  
87 - //同一个nodeId只允许推一个流,如果已经推了就不能再推  
88 - if(this.mediaModule.getOpeningMediaChannel(GlobalConfig.nodeId)!=0){  
89 - loger.warn("publishVideo,已经存在一个流,不能再推");  
90 - return {"code": ApeConsts.RETURN_FAILED, "data": "已经存在一个流,不能再推"};  
91 - }*/  
92 -  
93 //判断当前是否还有空闲的channle 90 //判断当前是否还有空闲的channle
94 let freeChannel = this.mediaModule.getFreeMediaChannel(); 91 let freeChannel = this.mediaModule.getFreeMediaChannel();
95 if (freeChannel == 0) { 92 if (freeChannel == 0) {
96 loger.warn("推流->不能再打开更多的设备 "); 93 loger.warn("推流->不能再打开更多的设备 ");
  94 + this._emit( MessageTypes.VIDEO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_FAILED, "data":"不能再打开更多的设备!","mediaId":0});
97 return {"code": ApeConsts.RETURN_FAILED, "data": "不能再打开更多的设备","mediaChannels":this.mediaModule.mediaChannels}; 95 return {"code": ApeConsts.RETURN_FAILED, "data": "不能再打开更多的设备","mediaChannels":this.mediaModule.mediaChannels};
98 } 96 }
99 97
@@ -101,6 +99,7 @@ class VideoApe extends Ape { @@ -101,6 +99,7 @@ class VideoApe extends Ape {
101 //判断当前的频道是否已经占用 99 //判断当前的频道是否已经占用
102 if(this.mediaModule.checkChannelIsOpening(needPublishChannelInfo.channelId)){ 100 if(this.mediaModule.checkChannelIsOpening(needPublishChannelInfo.channelId)){
103 loger.warn(needPublishChannelInfo.channelId,"频道已经被占用"); 101 loger.warn(needPublishChannelInfo.channelId,"频道已经被占用");
  102 + this._emit( MessageTypes.VIDEO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_FAILED, "data":"频道已经被占用!","mediaId":0});
104 return {"code": ApeConsts.RETURN_FAILED, "data":"频道已经被占用!","mediaChannels":this.mediaModule.mediaChannels}; 103 return {"code": ApeConsts.RETURN_FAILED, "data":"频道已经被占用!","mediaChannels":this.mediaModule.mediaChannels};
105 } 104 }
106 105
@@ -113,6 +112,7 @@ class VideoApe extends Ape { @@ -113,6 +112,7 @@ class VideoApe extends Ape {
113 channelInfo.mediaType=ApeConsts.MEDIA_TYPE_VIDEO; 112 channelInfo.mediaType=ApeConsts.MEDIA_TYPE_VIDEO;
114 this.sendTableUpdateHandler(channelInfo); 113 this.sendTableUpdateHandler(channelInfo);
115 114
  115 + this._emit( MessageTypes.VIDEO_PUBLISH_RESULT,{"code": ApeConsts.RETURN_SUCCESS, "data":"推流成功!","mediaId":needPublishChannelInfo.channelId});
116 return {"code": ApeConsts.RETURN_SUCCESS, "data":"推流成功!","mediaId":needPublishChannelInfo.channelId}; 116 return {"code": ApeConsts.RETURN_SUCCESS, "data":"推流成功!","mediaId":needPublishChannelInfo.channelId};
117 } 117 }
118 118