From 5ba39861d73ee8c0332a2e37c1e5e65531f14f28 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期二, 06 四月 2021 18:08:58 +0800
Subject: [PATCH] 修复添加级联平台是三个布尔字段无效的bug
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookSubscribe.java | 21 +++++++
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java | 2
web_src/src/components/dialog/platformEdit.vue | 24 +-------
src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java | 11 ++-
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 4 +
web_src/src/components/PushVideoList.vue | 2
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java | 18 ++++++
src/main/resources/wvp.sqlite | 0
src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java | 6 +-
src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java | 56 ++++++++++++++++++
10 files changed, 112 insertions(+), 32 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java
index 0aec885..56d5e9c 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java
@@ -81,7 +81,7 @@
/**
* 鍏佽浜戝彴鎺у埗
*/
- private boolean PTZEnable;
+ private boolean ptz;
/**
* RTCP娴佷繚娲�
@@ -220,12 +220,12 @@
this.characterSet = characterSet;
}
- public boolean isPTZEnable() {
- return PTZEnable;
+ public boolean isPtz() {
+ return ptz;
}
- public void setPTZEnable(boolean PTZEnable) {
- this.PTZEnable = PTZEnable;
+ public void setPtz(boolean ptz) {
+ this.ptz = ptz;
}
public boolean isRtcp() {
@@ -251,4 +251,5 @@
public void setChannelCount(int channelCount) {
this.channelCount = channelCount;
}
+
}
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 0065b21..835dd9c 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
@@ -117,6 +117,10 @@
if (logger.isDebugEnabled()) {
logger.debug("ZLM HOOK on_play API璋冪敤锛屽弬鏁帮細" + json.toString());
}
+ ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_play, json);
+ if (subscribe != null ) {
+ subscribe.response(json);
+ }
JSONObject ret = new JSONObject();
ret.put("code", 0);
ret.put("msg", "success");
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookSubscribe.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookSubscribe.java
index 5aee00c..1633f43 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookSubscribe.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookSubscribe.java
@@ -70,6 +70,27 @@
return event;
}
+ public void removeSubscribe(HookType type, JSONObject hookResponse) {
+ Map<JSONObject, Event> eventMap = allSubscribes.get(type);
+ if (eventMap == null) {
+ return;
+ }
+ for (JSONObject key : eventMap.keySet()) {
+ Boolean result = null;
+ for (String s : key.keySet()) {
+ if (result == null) {
+ result = key.getString(s).equals(hookResponse.getString(s));
+ }else {
+ result = result && key.getString(s).equals(hookResponse.getString(s));
+ }
+
+ }
+ if (result) {
+ eventMap.remove(key);
+ }
+ }
+ }
+
/**
* 鑾峰彇鏌愪釜绫诲瀷鐨勬墍鏈夌殑璁㈤槄
* @param type
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
index 1bf5162..659502e 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
@@ -42,6 +42,9 @@
@Autowired
private IStreamPushService streamPushService;
+ @Autowired
+ private ZLMHttpHookSubscribe subscribe;
+
public void updateMediaList() {
storager.clearMediaList();
@@ -66,6 +69,15 @@
if (streamPushItems != null) {
storager.updateMediaList(streamPushItems);
+ for (StreamPushItem streamPushItem : streamPushItems) {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("app", streamPushItem.getApp());
+ jsonObject.put("stream", streamPushItem.getStream());
+ subscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_play,jsonObject,(response)->{
+ System.out.println(1222211111);
+ updateMedia(response.getString("app"), response.getString("stream"));
+ });
+ }
}
}));
@@ -73,6 +85,12 @@
public void addMedia(String app, String streamId) {
//浣跨敤寮傛鏇存柊鎺ㄦ祦
+ updateMedia(app, streamId);
+ }
+
+
+ public void updateMedia(String app, String streamId) {
+ //浣跨敤寮傛鏇存柊鎺ㄦ祦
zlmresTfulUtils.getMediaList(app, streamId, "rtmp", json->{
if (json == null) return;
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
index edce411..6e0bc60 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
@@ -123,7 +123,7 @@
param.put("ffmpeg.cmd","%s -fflags nobuffer -rtsp_transport tcp -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s");
param.put("hook.enable","1");
param.put("hook.on_flow_report","");
- param.put("hook.on_play","");
+ param.put("hook.on_play",String.format("%s/on_play", hookPrex));
param.put("hook.on_http_access","");
param.put("hook.on_publish",String.format("%s/on_publish", hookPrex));
param.put("hook.on_record_mp4","");
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
index 257ca9e..3049e5b 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java
@@ -14,10 +14,10 @@
public interface ParentPlatformMapper {
@Insert("INSERT INTO parent_platform (enable, name, serverGBId, serverGBDomain, serverIP, serverPort, deviceGBId, deviceIp, " +
- " devicePort, username, password, expires, keepTimeout, transport, characterSet, PTZEnable, rtcp, " +
+ " devicePort, username, password, expires, keepTimeout, transport, characterSet, ptz, rtcp, " +
" status) " +
" VALUES (${enable}, '${name}', '${serverGBId}', '${serverGBDomain}', '${serverIP}', ${serverPort}, '${deviceGBId}', '${deviceIp}', " +
- " '${devicePort}', '${username}', '${password}', '${expires}', '${keepTimeout}', '${transport}', '${characterSet}', ${PTZEnable}, ${rtcp}, " +
+ " '${devicePort}', '${username}', '${password}', '${expires}', '${keepTimeout}', '${transport}', '${characterSet}', ${ptz}, ${rtcp}, " +
" ${status})")
int addParentPlatform(ParentPlatform parentPlatform);
@@ -36,7 +36,7 @@
"keepTimeout=#{keepTimeout}, " +
"transport=#{transport}, " +
"characterSet=#{characterSet}, " +
- "PTZEnable=#{PTZEnable}, " +
+ "ptz=#{ptz}, " +
"rtcp=#{rtcp}, " +
"status=#{status} " +
"WHERE serverGBId=#{serverGBId}")
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
new file mode 100644
index 0000000..675fc01
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
@@ -0,0 +1,56 @@
+package com.genersoft.iot.vmp.vmanager.server;
+
+import com.genersoft.iot.vmp.VManageBootstrap;
+import com.genersoft.iot.vmp.utils.SpringBeanFactory;
+import com.genersoft.iot.vmp.vmanager.gbStream.bean.GbStreamParam;
+import gov.nist.javax.sip.SipStackImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.web.bind.annotation.*;
+
+import javax.sip.ListeningPoint;
+import javax.sip.ObjectInUseException;
+import javax.sip.SipProvider;
+import java.util.Iterator;
+
+@CrossOrigin
+@RestController
+@RequestMapping("/api/server")
+public class ServerController {
+
+ @Autowired
+ private ConfigurableApplicationContext context;
+
+
+ @RequestMapping(value = "/restart")
+ @ResponseBody
+ public Object restart(){
+ Thread restartThread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ Thread.sleep(3000);
+ SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
+ SipStackImpl stack = (SipStackImpl)up.getSipStack();
+ stack.stop();
+ Iterator listener = stack.getListeningPoints();
+ while (listener.hasNext()) {
+ stack.deleteListeningPoint((ListeningPoint) listener.next());
+ }
+ Iterator providers = stack.getSipProviders();
+ while (providers.hasNext()) {
+ stack.deleteSipProvider((SipProvider) providers.next());
+ }
+ VManageBootstrap.restart();
+ } catch (InterruptedException ignored) {
+ } catch (ObjectInUseException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+
+ restartThread.setDaemon(false);
+ restartThread.start();
+ return "success";
+ }
+}
diff --git a/src/main/resources/wvp.sqlite b/src/main/resources/wvp.sqlite
index 3cb64cf..2e73cdb 100644
--- a/src/main/resources/wvp.sqlite
+++ b/src/main/resources/wvp.sqlite
Binary files differ
diff --git a/web_src/src/components/PushVideoList.vue b/web_src/src/components/PushVideoList.vue
index 6e73f37..1199a39 100644
--- a/web_src/src/components/PushVideoList.vue
+++ b/web_src/src/components/PushVideoList.vue
@@ -15,8 +15,6 @@
</el-table-column>
<el-table-column prop="stream" label="娴両D" width="240" align="center">
</el-table-column>
- <el-table-column prop="totalReaderCount" label="鍦ㄧ嚎浜烘暟" width="240" align="center">
- </el-table-column>
<el-table-column prop="gbId" label="鍥芥爣缂栫爜" width="150" align="center">
</el-table-column>
<el-table-column label="寮�濮嬫椂闂�" align="center" >
diff --git a/web_src/src/components/dialog/platformEdit.vue b/web_src/src/components/dialog/platformEdit.vue
index 4a916e8..c3c5ac9 100644
--- a/web_src/src/components/dialog/platformEdit.vue
+++ b/web_src/src/components/dialog/platformEdit.vue
@@ -75,7 +75,7 @@
</el-form-item>
<el-form-item label="鍏朵粬閫夐」">
<el-checkbox label="鍚敤" v-model="platform.enable" @change="checkExpires"></el-checkbox>
- <el-checkbox label="浜戝彴鎺у埗" v-model="platform.PTZEnable"></el-checkbox>
+ <el-checkbox label="浜戝彴鎺у埗" v-model="platform.ptz"></el-checkbox>
<el-checkbox label="RTCP淇濇椿" v-model="platform.rtcp"></el-checkbox>
</el-form-item>
<el-form-item>
@@ -120,28 +120,10 @@
showDialog: false,
isLoging: false,
onSubmit_text: "绔嬪嵆鍒涘缓",
- // platform: {
- // enable: false,
- // PTZEnable: true,
- // rtcp: false,
- // name: null,
- // serverGBId: null,
- // serverGBDomain: null,
- // serverIP: null,
- // serverPort: null,
- // deviceGBId: null,
- // deviceIp: null,
- // devicePort: null,
- // username: null,
- // password: null,
- // expires: 300,
- // keepTimeout: 60,
- // transport: "UDP",
- // characterSet: "GB2312",
- // },
+
platform: {
enable: true,
- PTZEnable: true,
+ ptz: true,
rtcp: false,
name: "娴嬭瘯001",
serverGBId: "34020000002000000001",
--
Gitblit v1.8.0