Procházet zdrojové kódy

fix:
1. 修复语音对讲无法找到zlm的返回
add:
1. zlm 新增axios 请求失败事件

kindring před 2 roky
rodič
revize
6253fa359f

+ 8 - 0
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java

@@ -386,6 +386,14 @@ public class PlayController {
 
 		Device device = storager.queryVideoDevice(deviceId);
 		MediaServerItem mediaServerItem = playService.getNewMediaServerItem(device);
+
+		// 流媒体服务异常处理
+		if(mediaServerItem == null){
+			wvpResult.setCode(ErrorCode.ERR_MEDIA.getCode());
+			wvpResult.setMsg("暂时无法找到可用的zlm流媒体服务");
+			return wvpResult;
+		}
+
 		String app = "audio";
 		String stream = "rtc_" + deviceId + "_" + channelId;
 		String type = "push";

+ 8 - 3
web_src/src/assets/ZLMRTCClient.js

@@ -12,7 +12,8 @@ let ZLMRTCClient = (function (exports) {
 	  WEBRTC_ON_DATA_CHANNEL_CLOSE: 'WEBRTC_ON_DATA_CHANNEL_CLOSE',
 	  WEBRTC_ON_DATA_CHANNEL_ERR: 'WEBRTC_ON_DATA_CHANNEL_ERR',
 	  WEBRTC_ON_DATA_CHANNEL_MSG: 'WEBRTC_ON_DATA_CHANNEL_MSG',
-	  CAPTURE_STREAM_FAILED: 'CAPTURE_STREAM_FAILED'
+	  CAPTURE_STREAM_FAILED: 'CAPTURE_STREAM_FAILED',
+    CONNECT_FAIL: 'CONNECT_FAIL',// web端连接 zlm 失败
 	};
 
   /// ^rtpmap:\d+ PCMU\/8000(\r\n|\n)?$/g
@@ -7979,7 +7980,9 @@ let ZLMRTCClient = (function (exports) {
 	          }).catch(e => {
 	            error(this.TAG, e);
 	          });
-	        });
+	        }).catch(e => {
+            this.dispatch(Events$1.CONNECT_FAIL,e);
+          });
 	      });
 	    }).catch(e => {
 	      error(this.TAG, e);
@@ -8097,7 +8100,9 @@ let ZLMRTCClient = (function (exports) {
 	            }).catch(e => {
 	              error(this.TAG, e);
 	            });
-	          });
+	          }).catch(e => {
+              this.dispatch(Events$1.CONNECT_FAIL,e);
+            });
 	        });
 	      }).catch(e => {
 	        error(this.TAG, e);

+ 7 - 0
web_src/src/components/common/microphone.vue

@@ -142,11 +142,18 @@ export default {
         );
         this.player = player;
         // console.log(player);
+        player.on('error', async (err) => {
+          console.log('error', err);
+          this.audioStartFailed(err,`与设备交互错误信息失败${err.message}`)
+          this.mediaStream = null;
+          return player.close();
+        });
         player.on(ZLMRTCClient.Events.WEBRTC_ON_CONNECTION_STATE_CHANGE, async (state) => {// RTC 状态变化 ,详情参考 https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/connectionState
           console.log('当前状态==>', state);
           if (state === 'connected') {
             // 等待1秒
             await sleep(2500);
+            // todo 分析sdp,看最终使用的是什么音频协议,传输给wvp下发invite 与创建zlm转流服务
             [err, res] = await handle(this.sendBroaderCast(this.pushConfig.stream,this.pushConfig.app));
             let response = res.data;
             if (err|| response.code!==0 ) {