From 7609d7836c52a7619a51fa8b707502f027c2e1f0 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期日, 03 七月 2022 16:23:31 +0800 Subject: [PATCH] 优化对讲逻辑 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java | 2 +- src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 4 +--- src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 8 ++++++-- web_src/src/components/dialog/devicePlayer.vue | 12 ++++++++---- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java index 7b7136f..7a80de4 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java @@ -830,7 +830,7 @@ subscribeKey.put("app", app); subscribeKey.put("stream", stream); subscribeKey.put("regist", true); - subscribeKey.put("schema", "rtmp"); + subscribeKey.put("schema", "rtsp"); subscribeKey.put("mediaServerId", mediaServerItem.getId()); String finalSsrc = ssrc; // 娴佸凡缁忓瓨鍦ㄦ椂鐩存帴鎺ㄦ祦 diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java index 4ea9cf1..b47475c 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java @@ -339,9 +339,7 @@ @PostMapping(value = "/on_stream_changed", produces = "application/json;charset=UTF-8") public ResponseEntity<String> onStreamChanged(@RequestBody MediaItem item){ - if (logger.isDebugEnabled()) { - logger.debug("[ ZLM HOOK ]on_stream_changed API璋冪敤锛屽弬鏁帮細" + JSONObject.toJSONString(item)); - } + logger.info("[ ZLM HOOK ]on_stream_changed API璋冪敤锛屽弬鏁帮細" + JSONObject.toJSONString(item)); String mediaServerId = item.getMediaServerId(); JSONObject json = (JSONObject) JSON.toJSON(item); ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, json); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java index b944375..1a8c5de 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java @@ -689,6 +689,9 @@ logger.warn("璇煶骞挎挱宸茬粡寮�鍚細 {}", channelId); event.call("璇煶骞挎挱宸茬粡寮�鍚�"); return; + }else { + audioBroadcastManager.del(deviceChannel.getDeviceId(),channelId); + redisCatchStorage.deleteSendRTPServer(device.getDeviceId(), channelId, sendRtpItem.getCallId(), sendRtpItem.getStreamId()); } } } @@ -710,7 +713,7 @@ public void stopAudioBroadcast(String deviceId, String channelId){ AudioBroadcastCatch audioBroadcastCatch = audioBroadcastManager.get(deviceId, channelId); if (audioBroadcastCatch != null) { - audioBroadcastManager.del(deviceId, audioBroadcastCatch.getChannelId()); + try { SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(deviceId, audioBroadcastCatch.getChannelId(), null, null); if (sendRtpItem != null) { @@ -722,11 +725,12 @@ param.put("stream", sendRtpItem.getStreamId()); zlmresTfulUtils.stopSendRtp(mediaInfo, param); // 绔嬪埢缁撴潫璁惧鐨勬帹娴侊紝绛夊緟鑷缁撴潫澶參 -// zlmresTfulUtils.closeStreams(mediaInfo, sendRtpItem.getApp(), sendRtpItem.getStreamId()); + zlmresTfulUtils.closeStreams(mediaInfo, sendRtpItem.getApp(), sendRtpItem.getStreamId()); } if (audioBroadcastCatch.getStatus() == AudioBroadcastCatchStatus.Ok) { cmder.streamByeCmd(audioBroadcastCatch.getDialog(), audioBroadcastCatch.getRequest(), null); } + audioBroadcastManager.del(deviceId, channelId); } catch (SipException e) { throw new RuntimeException(e); diff --git a/web_src/src/components/dialog/devicePlayer.vue b/web_src/src/components/dialog/devicePlayer.vue index a33e8a4..25628f2 100644 --- a/web_src/src/components/dialog/devicePlayer.vue +++ b/web_src/src/components/dialog/devicePlayer.vue @@ -278,8 +278,9 @@ </el-tab-pane> <el-tab-pane label="璇煶瀵硅" name="broadcast" > <div class="trank" style="text-align: center;"> - <el-button @click="broadcastStatusClick()" :type="getBroadcastStatus()" circle icon="el-icon-microphone" style="font-size: 32px; padding: 24px;margin-top: 24px;"/> + <el-button @click="broadcastStatusClick()" :type="getBroadcastStatus()" :disabled="broadcastStatus === -2" circle icon="el-icon-microphone" style="font-size: 32px; padding: 24px;margin-top: 24px;"/> <p> + <span v-if="broadcastStatus === -2">姝e湪閲婃斁璧勬簮</span> <span v-if="broadcastStatus === -1">鐐瑰嚮寮�濮嬪璁�</span> <span v-if="broadcastStatus === 0">绛夊緟鎺ラ�氫腑...</span> <span v-if="broadcastStatus === 1">璇疯璇�</span> @@ -371,7 +372,7 @@ showTimeText: "00:00:00", streamInfo: null, broadcastRtc: null, - broadcastStatus: -1, // -1 榛樿鐘舵�� 0 绛夊緟鎺ラ�� 1 鎺ラ�氭垚鍔� + broadcastStatus: -1, // -2 姝e湪閲婃斁璧勬簮 -1 榛樿鐘舵�� 0 绛夊緟鎺ラ�� 1 鎺ラ�氭垚鍔� }; }, methods: { @@ -821,6 +822,9 @@ }); }, getBroadcastStatus() { + if (this.broadcastStatus == -2) { + return "primary" + } if (this.broadcastStatus == -1) { return "primary" } @@ -835,6 +839,7 @@ broadcastStatusClick() { if (this.broadcastStatus == -1) { // 榛樿鐘舵�侊紝 寮�濮� + this.broadcastStatus = 0 // 鍙戣捣璇煶瀵硅 this.$axios({ method: 'get', @@ -924,7 +929,7 @@ }); }, stopBroadcast(){ - this.broadcastRtc.close() + this.broadcastStatus = -2; this.broadcastRtc = null; this.$axios({ method: 'get', @@ -932,7 +937,6 @@ }).then( (res)=> { if (res.data.code == 0) { // this.broadcastStatus = -1; - }else { this.$message({ showClose: true, -- Gitblit v1.8.0