From b2fa4608a2e0abb3d744f4f91bd423380e45f9c4 Mon Sep 17 00:00:00 2001
From: Lawrence <1934378145@qq.com>
Date: 星期三, 16 十二月 2020 12:43:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'upstream/master'
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 111 ++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 89 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
index ee142d7..c987f5e 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
@@ -34,7 +34,7 @@
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
import org.springframework.util.StringUtils;
-
+import com.genersoft.iot.vmp.common.StreamInfo;
/**
* @Description:MESSAGE璇锋眰澶勭悊鍣�
* @author: swwheihei
@@ -64,6 +64,7 @@
private static final String MESSAGE_DEVICE_INFO = "DeviceInfo";
private static final String MESSAGE_ALARM = "Alarm";
private static final String MESSAGE_RECORD_INFO = "RecordInfo";
+ private static final String MESSAGE_MEDIA_STATUS = "MediaStatus";
// private static final String MESSAGE_BROADCAST = "Broadcast";
// private static final String MESSAGE_DEVICE_STATUS = "DeviceStatus";
// private static final String MESSAGE_MOBILE_POSITION = "MobilePosition";
@@ -98,6 +99,11 @@
} else if (MESSAGE_RECORD_INFO.equals(cmd)) {
logger.info("鎺ユ敹鍒癛ecordInfo娑堟伅");
processMessageRecordInfo(evt);
+ }else if (MESSAGE_MEDIA_STATUS.equals(cmd)) {
+ logger.info("鎺ユ敹鍒癕ediaStatus娑堟伅");
+ processMessageMediaStatus(evt);
+ } else {
+ logger.info("鎺ユ敹鍒版秷鎭細" + cmd);
}
} catch (DocumentException e) {
e.printStackTrace();
@@ -178,10 +184,11 @@
DeviceChannel deviceChannel = new DeviceChannel();
deviceChannel.setName(channelName);
deviceChannel.setChannelId(channelDeviceId);
- if (status.equals("ON") || status.equals("On")) {
+ // ONLINE OFFLINE HIKVISION DS-7716N-E4 NVR鐨勫吋瀹规�у鐞�
+ if (status.equals("ON") || status.equals("On") || status.equals("ONLINE")) {
deviceChannel.setStatus(1);
}
- if (status.equals("OFF") || status.equals("Off")) {
+ if (status.equals("OFF") || status.equals("Off") || status.equals("OFFLINE")) {
deviceChannel.setStatus(0);
}
@@ -191,30 +198,57 @@
deviceChannel.setCivilCode(XmlUtil.getText(itemDevice, "CivilCode"));
deviceChannel.setBlock(XmlUtil.getText(itemDevice, "Block"));
deviceChannel.setAddress(XmlUtil.getText(itemDevice, "Address"));
- deviceChannel.setParental(itemDevice.element("Parental") == null ? 0
- : Integer.parseInt(XmlUtil.getText(itemDevice, "Parental")));
+ if (XmlUtil.getText(itemDevice, "Parental") == null || XmlUtil.getText(itemDevice, "Parental") == "") {
+ deviceChannel.setParental(0);
+ } else {
+ deviceChannel.setParental(Integer.parseInt(XmlUtil.getText(itemDevice, "Parental")));
+ }
deviceChannel.setParentId(XmlUtil.getText(itemDevice, "ParentID"));
- deviceChannel.setSafetyWay(itemDevice.element("SafetyWay") == null ? 0
- : Integer.parseInt(XmlUtil.getText(itemDevice, "SafetyWay")));
- deviceChannel.setRegisterWay(itemDevice.element("RegisterWay") == null ? 1
- : Integer.parseInt(XmlUtil.getText(itemDevice, "RegisterWay")));
+ if (XmlUtil.getText(itemDevice, "SafetyWay") == null || XmlUtil.getText(itemDevice, "SafetyWay")== "") {
+ deviceChannel.setSafetyWay(0);
+ } else {
+ deviceChannel.setSafetyWay(Integer.parseInt(XmlUtil.getText(itemDevice, "SafetyWay")));
+ }
+ if (XmlUtil.getText(itemDevice, "RegisterWay") == null || XmlUtil.getText(itemDevice, "RegisterWay") =="") {
+ deviceChannel.setRegisterWay(1);
+ } else {
+ deviceChannel.setRegisterWay(Integer.parseInt(XmlUtil.getText(itemDevice, "RegisterWay")));
+ }
deviceChannel.setCertNum(XmlUtil.getText(itemDevice, "CertNum"));
- deviceChannel.setCertifiable(itemDevice.element("Certifiable") == null ? 0
- : Integer.parseInt(XmlUtil.getText(itemDevice, "Certifiable")));
- deviceChannel.setErrCode(itemDevice.element("ErrCode") == null ? 0
- : Integer.parseInt(XmlUtil.getText(itemDevice, "ErrCode")));
+ if (XmlUtil.getText(itemDevice, "Certifiable") == null || XmlUtil.getText(itemDevice, "Certifiable") == "") {
+ deviceChannel.setCertifiable(0);
+ } else {
+ deviceChannel.setCertifiable(Integer.parseInt(XmlUtil.getText(itemDevice, "Certifiable")));
+ }
+ if (XmlUtil.getText(itemDevice, "ErrCode") == null || XmlUtil.getText(itemDevice, "ErrCode") == "") {
+ deviceChannel.setErrCode(0);
+ } else {
+ deviceChannel.setErrCode(Integer.parseInt(XmlUtil.getText(itemDevice, "ErrCode")));
+ }
deviceChannel.setEndTime(XmlUtil.getText(itemDevice, "EndTime"));
deviceChannel.setSecrecy(XmlUtil.getText(itemDevice, "Secrecy"));
deviceChannel.setIpAddress(XmlUtil.getText(itemDevice, "IPAddress"));
- deviceChannel.setPort(itemDevice.element("Port") == null ? 0
- : Integer.parseInt(XmlUtil.getText(itemDevice, "Port")));
+ if (XmlUtil.getText(itemDevice, "Port") == null || XmlUtil.getText(itemDevice, "Port") =="") {
+ deviceChannel.setPort(0);
+ } else {
+ deviceChannel.setPort(Integer.parseInt(XmlUtil.getText(itemDevice, "Port")));
+ }
deviceChannel.setPassword(XmlUtil.getText(itemDevice, "Password"));
- deviceChannel.setLongitude(itemDevice.element("Longitude") == null ? 0.00
- : Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
- deviceChannel.setLatitude(itemDevice.element("Latitude") == null ? 0.00
- : Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
- deviceChannel.setPTZType(itemDevice.element("PTZType") == null ? 0
- : Integer.parseInt(XmlUtil.getText(itemDevice, "PTZType")));
+ if (XmlUtil.getText(itemDevice, "Longitude") == null || XmlUtil.getText(itemDevice, "Longitude") == "") {
+ deviceChannel.setLongitude(0.00);
+ } else {
+ deviceChannel.setLongitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
+ }
+ if (XmlUtil.getText(itemDevice, "Latitude") == null || XmlUtil.getText(itemDevice, "Latitude") =="") {
+ deviceChannel.setLatitude(0.00);
+ } else {
+ deviceChannel.setLatitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
+ }
+ if (XmlUtil.getText(itemDevice, "PTZType") == null || XmlUtil.getText(itemDevice, "PTZType") == "") {
+ deviceChannel.setPTZType(0);
+ } else {
+ deviceChannel.setPTZType(Integer.parseInt(XmlUtil.getText(itemDevice, "PTZType")));
+ }
deviceChannel.setHasAudio(true); // 榛樿鍚湁闊抽锛屾挱鏀炬椂鍐嶆鏌ユ槸鍚︽湁闊抽鍙婃槸鍚AC
storager.updateChannel(device.getDeviceId(), deviceChannel);
}
@@ -307,7 +341,11 @@
String deviceId = deviceIdElement.getText().toString();
recordInfo.setDeviceId(deviceId);
recordInfo.setName(XmlUtil.getText(rootElement, "Name"));
- recordInfo.setSumNum(Integer.parseInt(XmlUtil.getText(rootElement, "SumNum")));
+ if (XmlUtil.getText(rootElement, "SumNum")== null || XmlUtil.getText(rootElement, "SumNum") =="") {
+ recordInfo.setSumNum(0);
+ } else {
+ recordInfo.setSumNum(Integer.parseInt(XmlUtil.getText(rootElement, "SumNum")));
+ }
String sn = XmlUtil.getText(rootElement, "SN");
Element recordListElement = rootElement.element("RecordList");
if (recordListElement == null || recordInfo.getSumNum() == 0) {
@@ -399,6 +437,35 @@
}
}
+
+ private void processMessageMediaStatus(RequestEvent evt){
+ try {
+ // 鍥炲200 OK
+ responseAck(evt);
+ Element rootElement = getRootElement(evt);
+ String deviceId = XmlUtil.getText(rootElement, "DeviceID");
+ String NotifyType =XmlUtil.getText(rootElement, "NotifyType");
+ if (NotifyType.equals("121")){
+ logger.info("濯掍綋鎾斁瀹屾瘯锛岄�氱煡鍏虫祦");
+ StreamInfo streamInfo = storager.queryPlaybackByDevice(deviceId, "*");
+ if (streamInfo != null) {
+ storager.stopPlayback(streamInfo);
+ cmder.streamByeCmd(streamInfo.getSsrc());
+ }
+ }
+ } catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ /***
+ * 鍥炲200 OK
+ * @param evt
+ * @throws SipException
+ * @throws InvalidArgumentException
+ * @throws ParseException
+ */
private void responseAck(RequestEvent evt) throws SipException, InvalidArgumentException, ParseException {
Response response = getMessageFactory().createResponse(Response.OK, evt.getRequest());
getServerTransaction(evt).sendResponse(response);
--
Gitblit v1.8.0