From 5ed44c3e0934bdef4b6547d3a101e934ac9c2637 Mon Sep 17 00:00:00 2001
From: 648540858 <456panlinlin>
Date: 星期六, 02 四月 2022 14:13:32 +0800
Subject: [PATCH] 支持级联云台控制
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 4 ++--
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java | 2 +-
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java | 30 +++++++++++++++++++++++++-----
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java | 5 ++---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java | 1 -
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java | 6 +-----
6 files changed, 31 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java
index 6439e8c..2aabbe7 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorObserver.java
@@ -4,7 +4,6 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
import com.genersoft.iot.vmp.gb28181.transmit.event.response.ISIPResponseProcessor;
import com.genersoft.iot.vmp.gb28181.transmit.event.timeout.ITimeoutProcessor;
-import gov.nist.javax.sip.message.SIPRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -14,7 +13,6 @@
import javax.sip.*;
import javax.sip.header.CSeqHeader;
import javax.sip.header.CallIdHeader;
-import javax.sip.header.Header;
import javax.sip.message.Response;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -35,6 +33,7 @@
@Autowired
private SipSubscribe sipSubscribe;
+
// @Autowired
// @Qualifier(value = "taskExecutor")
@@ -73,7 +72,7 @@
@Override
@Async
public void processRequest(RequestEvent requestEvent) {
- logger.debug("\n鏀跺埌璇锋眰锛歕n{}", requestEvent.getRequest());
+ logger.info("\n鏀跺埌璇锋眰锛歕n{}", requestEvent.getRequest());
String method = requestEvent.getRequest().getMethod();
ISIPRequestProcessor sipRequestProcessor = requestProcessorMap.get(method);
if (sipRequestProcessor == null) {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
index a33640d..6b8a6ae 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
@@ -22,7 +22,6 @@
* @param channelId 棰勮閫氶亾
* @param leftRight 闀滃ご宸︾Щ鍙崇Щ 0:鍋滄 1:宸︾Щ 2:鍙崇Щ
* @param upDown 闀滃ご涓婄Щ涓嬬Щ 0:鍋滄 1:涓婄Щ 2:涓嬬Щ
- * @param moveSpeed 闀滃ご绉诲姩閫熷害
*/
boolean ptzdirectCmd(Device device,String channelId,int leftRight, int upDown);
@@ -52,7 +51,6 @@
* @param device 鎺у埗璁惧
* @param channelId 棰勮閫氶亾
* @param inOut 闀滃ご鏀惧ぇ缂╁皬 0:鍋滄 1:缂╁皬 2:鏀惧ぇ
- * @param zoomSpeed 闀滃ご缂╂斁閫熷害
*/
boolean ptzZoomCmd(Device device,String channelId,int inOut, int moveSpeed);
@@ -87,7 +85,7 @@
* @param channelId 棰勮閫氶亾
* @param cmdString 鍓嶇鎺у埗鎸囦护涓�
*/
- boolean fronEndCmd(Device device, String channelId, String cmdString);
+ boolean fronEndCmd(Device device, String channelId, String cmdString, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent);
/**
* 璇锋眰棰勮瑙嗛娴�
@@ -181,7 +179,6 @@
* 鎶ヨ甯冮槻/鎾ら槻鍛戒护
*
* @param device 瑙嗛璁惧
- * @param setGuard true: SetGuard, false: ResetGuard
*/
boolean guardCmd(Device device, String guardCmdStr, SipSubscribe.Event errorEvent);
@@ -315,7 +312,6 @@
* @param expires 璁㈤槄杩囨湡鏃堕棿锛�0 = 鍙栨秷璁㈤槄锛�
* @param startPriority 鎶ヨ璧峰绾у埆锛堝彲閫夛級
* @param endPriority 鎶ヨ缁堟绾у埆锛堝彲閫夛級
- * @param alarmMethods 鎶ヨ鏂瑰紡鏉′欢锛堝彲閫夛級
* @param alarmType 鎶ヨ绫诲瀷
* @param startTime 鎶ヨ鍙戠敓璧峰鏃堕棿锛堝彲閫夛級
* @param endTime 鎶ヨ鍙戠敓缁堟鏃堕棿锛堝彲閫夛級
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
index 99ff6d7..a8cc8fb 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -303,7 +303,7 @@
* @param cmdString 鍓嶇鎺у埗鎸囦护涓�
*/
@Override
- public boolean fronEndCmd(Device device, String channelId, String cmdString) {
+ public boolean fronEndCmd(Device device, String channelId, String cmdString, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) {
try {
StringBuffer ptzXml = new StringBuffer(200);
ptzXml.append("<?xml version=\"1.0\" ?>\r\n");
@@ -323,7 +323,7 @@
: udpSipProvider.getNewCallId();
Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader);
- transmitRequest(device, request);
+ transmitRequest(device, request, errorEvent, okEvent);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
e.printStackTrace();
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
index 2cd5b00..e8554f7 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
@@ -70,7 +70,6 @@
@Autowired
private UserSetting userSetting;
-
@Autowired
private SubscribeHolder subscribeHolder;
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
index 089cbc9..770d2f7 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
@@ -19,13 +19,11 @@
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
-import javax.sip.ListeningPoint;
-import javax.sip.ObjectInUseException;
-import javax.sip.RequestEvent;
-import javax.sip.SipProvider;
+import javax.sip.*;
import javax.sip.address.SipURI;
import javax.sip.header.HeaderAddress;
import javax.sip.header.ToHeader;
+import java.text.ParseException;
import java.util.Iterator;
import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText;
@@ -105,7 +103,29 @@
if (!StringUtils.isEmpty(getText(rootElement,"PTZCmd")) && !parentPlatform.getServerGBId().equals(targetGBId)) {
String cmdString = getText(rootElement,"PTZCmd");
Device deviceForPlatform = storager.queryVideoDeviceByPlatformIdAndChannelId(parentPlatform.getServerGBId(), channelId);
- cmder.fronEndCmd(deviceForPlatform, channelId, cmdString);
+ cmder.fronEndCmd(deviceForPlatform, channelId, cmdString, eventResult -> {
+ // 澶辫触鐨勫洖澶�
+ try {
+ responseAck(evt, eventResult.statusCode, eventResult.msg);
+ } catch (SipException e) {
+ e.printStackTrace();
+ } catch (InvalidArgumentException e) {
+ e.printStackTrace();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ }, eventResult -> {
+ // 鎴愬姛鐨勫洖澶�
+ try {
+ responseAck(evt, eventResult.statusCode);
+ } catch (SipException e) {
+ e.printStackTrace();
+ } catch (InvalidArgumentException e) {
+ e.printStackTrace();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ });
}
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
index 9f22f82..57afd93 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
@@ -244,7 +244,7 @@
logger.error("RTP鎺ㄦ祦澶辫触: 璇锋鏌LM鏈嶅姟");
} else if (jsonObject.getInteger("code") == 0) {
result= true;
- logger.info("RTP鎺ㄦ祦鎴愬姛[ {}/{} ]锛屾湰鍦版帹娴佺鍙o細{}" ,param.get("app"), param.get("stream"), jsonObject.getString("local_port"));
+ logger.info("RTP鎺ㄦ祦鎴愬姛[ {}/{} ]锛寋}->{}:{}, " ,param.get("app"), param.get("stream"), jsonObject.getString("local_port"), param.get("dst_url"), param.get("dst_port"));
} else {
logger.error("RTP鎺ㄦ祦澶辫触: {}, 鍙傛暟锛歿}",jsonObject.getString("msg"),JSONObject.toJSON(param));
}
--
Gitblit v1.8.0