From db075b5255c5a9b3444d48849743543fb147d570 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Wed, 10 Jan 2024 23:11:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/StreamProxyServiceImpl.java | 44 +++++++++++++++++++ web_src/src/components/GBRecordDetail.vue | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java index a07165e7..3e8abf12 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java @@ -434,6 +434,50 @@ public class StreamProxyServiceImpl implements IStreamProxyService { } } + public void startProxy(StreamProxy streamProxy, MediaServerItem mediaInfo, GeneralCallback callback) { + String talkKey = UUID.randomUUID().toString(); + String delayTalkKey = UUID.randomUUID().toString(); + + HookSubscribeForStreamChange hookSubscribeForStreamChange = HookSubscribeFactory.on_stream_changed(streamProxy.getApp(), streamProxy.getStream(), true, "rtsp", mediaInfo.getId()); + hookSubscribe.addSubscribe(hookSubscribeForStreamChange, (mediaServerItem, response) -> { + dynamicTask.stop(talkKey); + streamProxy.setStatus(true); + saveProxyToDb(streamProxy); + StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream( + mediaInfo, streamProxy.getApp(), streamProxy.getStream(), null, null); + callback.run(ErrorCode.SUCCESS.getCode(), ErrorCode.SUCCESS.getMsg(), streamInfo); + }); + + dynamicTask.startDelay(delayTalkKey, ()->{ + hookSubscribe.removeSubscribe(hookSubscribeForStreamChange); + dynamicTask.stop(talkKey); + callback.run(ErrorCode.ERROR100.getCode(), "启用超时,请检查源地址是否可用", null); + if (streamProxy.isEnableRemoveNoneReader()) { + return; + } + streamProxy.setProxyError("启用超时"); + streamProxy.setStatus(false); + saveProxyToDb(streamProxy); + }, 10000); + JSONObject jsonObject = addStreamProxyToZlm(streamProxy); + if (jsonObject != null && jsonObject.getInteger("code") != 0) { + hookSubscribe.removeSubscribe(hookSubscribeForStreamChange); + dynamicTask.stop(talkKey); + callback.run(ErrorCode.ERROR100.getCode(), jsonObject.getString("msg"), null); + if (streamProxy.isEnableRemoveNoneReader()) { + return; + } + streamProxy.setProxyError("启用失败: " + jsonObject.getString("msg")); + streamProxy.setStatus(false); + saveProxyToDb(streamProxy); + } + } + + public void stopProxy(StreamProxy streamProxy, GeneralCallback callback) { + + } + + private void saveProxyToDb(StreamProxy param) { // 未启用的数据可以直接保存了 if (!ObjectUtils.isEmpty(param.getGbId())) { diff --git a/web_src/src/components/GBRecordDetail.vue b/web_src/src/components/GBRecordDetail.vue index 37ec377f..15f142ce 100755 --- a/web_src/src/components/GBRecordDetail.vue +++ b/web_src/src/components/GBRecordDetail.vue @@ -298,7 +298,7 @@ downloadRecord: function (row) { if (!row) { let startTimeStr = moment(new Date(this.chooseDate + " 00:00:00").getTime() + this.playTime[0]*1000).format("YYYY-MM-DD HH:mm:ss"); - let endTimeStr = moment(new Date(this.chooseDate + " 00:00:00").getTime() + this.playTime[1]*1000).format("YYYY-MM-DD HH:mm:ss"); + let endTimeStr = moment(new Date(this.chooseDate + " 00:p400:00").getTime() + this.playTime[1]*1000).format("YYYY-MM-DD HH:mm:ss"); console.log(startTimeStr); console.log(endTimeStr); row = {