From a56d8c70d6dd8f6fedc98aa768c3a2182d54acb8 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期二, 13 四月 2021 11:33:26 +0800
Subject: [PATCH] 优化编码信息信息页面
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 258 +++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 217 insertions(+), 41 deletions(-)
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 c174455..e186649 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
@@ -1,21 +1,18 @@
package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
import java.text.ParseException;
-import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.sip.*;
import javax.sip.address.SipURI;
import javax.sip.header.CallIdHeader;
-import javax.sip.header.Header;
import javax.sip.header.ViaHeader;
import javax.sip.message.Request;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.MediaServerConfig;
-import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe;
import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
@@ -26,6 +23,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import com.genersoft.iot.vmp.conf.SipConfig;
@@ -43,13 +42,24 @@
* @date: 2020骞�5鏈�3鏃� 涓嬪崍9:22:48
*/
@Component
+@DependsOn("sipLayer")
public class SIPCommander implements ISIPCommander {
private final Logger logger = LoggerFactory.getLogger(SIPCommander.class);
@Autowired
private SipConfig sipConfig;
-
+
+ @Lazy
+ @Autowired
+ @Qualifier(value="tcpSipProvider")
+ private SipProvider tcpSipProvider;
+
+ @Lazy
+ @Autowired
+ @Qualifier(value="udpSipProvider")
+ private SipProvider udpSipProvider;
+
@Autowired
private SIPRequestHeaderProvider headerProvider;
@@ -61,14 +71,6 @@
@Autowired
private IRedisCatchStorage redisCatchStorage;
-
- @Autowired
- @Qualifier(value="tcpSipProvider")
- private SipProvider tcpSipProvider;
-
- @Autowired
- @Qualifier(value="udpSipProvider")
- private SipProvider udpSipProvider;
@Autowired
private ZLMRTPServerFactory zlmrtpServerFactory;
@@ -88,7 +90,9 @@
@Autowired
private SipSubscribe sipSubscribe;
-
+ public SipConfig getSipConfig() {
+ return sipConfig;
+ }
/**
* 浜戝彴鏂瑰悜鏀炬帶鍒讹紝浣跨敤閰嶇疆鏂囦欢涓殑榛樿闀滃ご绉诲姩閫熷害
@@ -238,7 +242,11 @@
ptzXml.append("</Control>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtz" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader);
transmitRequest(device, request);
return true;
@@ -275,7 +283,11 @@
ptzXml.append("</Control>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtz" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader);
transmitRequest(device, request);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -285,6 +297,40 @@
}
/**
+ * 鍓嶇鎺у埗鎸囦护锛堢敤浜庤浆鍙戜笂绾ф寚浠わ級
+ * @param device 鎺у埗璁惧
+ * @param channelId 棰勮閫氶亾
+ * @param cmdString 鍓嶇鎺у埗鎸囦护涓�
+ */
+ @Override
+ public boolean fronEndCmd(Device device, String channelId, String cmdString) {
+ try {
+ StringBuffer ptzXml = new StringBuffer(200);
+ ptzXml.append("<?xml version=\"1.0\" ?>\r\n");
+ ptzXml.append("<Control>\r\n");
+ ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n");
+ ptzXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
+ ptzXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
+ ptzXml.append("<PTZCmd>" + cmdString + "</PTZCmd>\r\n");
+ ptzXml.append("<Info>\r\n");
+ ptzXml.append("</Info>\r\n");
+ ptzXml.append("</Control>\r\n");
+
+ String tm = Long.toString(System.currentTimeMillis());
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader);
+ transmitRequest(device, request);
+ return true;
+ } catch (SipException | ParseException | InvalidArgumentException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
+ /**
* 璇锋眰棰勮瑙嗛娴�
* @param device 瑙嗛璁惧
* @param channelId 棰勮閫氶亾
@@ -294,7 +340,7 @@
@Override
public void playStreamCmd(Device device, String channelId, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent) {
try {
-
+ if (device == null) return;
String ssrc = streamSession.createPlaySsrc();
String streamId = null;
if (rtpEnable) {
@@ -378,7 +424,6 @@
content.append("a=setup:passive\r\n");
content.append("a=connection:new\r\n");
} else if ("TCP-ACTIVE".equals(streamMode)) { // tcp涓诲姩妯″紡
- } else if ("TCP-ACTIVE".equals(streamMode)) { // tcp涓诲姩妯″紡
content.append("a=setup:active\r\n");
content.append("a=connection:new\r\n");
}
@@ -388,12 +433,14 @@
content.append("y="+ssrc+"\r\n");//ssrc
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), null, "FromInvt" + tm, null, ssrc);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), null, "FromInvt" + tm, null, ssrc, callIdHeader);
ClientTransaction transaction = transmitRequest(device, request, errorEvent);
- streamSession.put(streamId, transaction);
-
-
+ streamSession.put(streamId,ssrc, transaction);
} catch ( SipException | ParseException | InvalidArgumentException e) {
e.printStackTrace();
@@ -488,10 +535,14 @@
content.append("y="+ssrc+"\r\n");//ssrc
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, "fromplybck" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, "fromplybck" + tm, null, callIdHeader);
ClientTransaction transaction = transmitRequest(device, request, errorEvent);
- streamSession.put(streamId, transaction);
+ streamSession.put(streamId, ssrc, transaction);
} catch ( SipException | ParseException | InvalidArgumentException e) {
e.printStackTrace();
@@ -572,10 +623,66 @@
*/
@Override
public boolean audioBroadcastCmd(Device device, String channelId) {
- // TODO Auto-generated method stub
+ // 鏀逛负鏂扮殑瀹炵幇
return false;
}
+ /**
+ * 璇煶骞挎挱
+ *
+ * @param device 瑙嗛璁惧
+ * @param channelId 棰勮閫氶亾
+ */
+ @Override
+ public boolean audioBroadcastCmd(Device device) {
+ try {
+ StringBuffer broadcastXml = new StringBuffer(200);
+ broadcastXml.append("<?xml version=\"1.0\" ?>\r\n");
+ broadcastXml.append("<Notify>\r\n");
+ broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
+ broadcastXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
+ broadcastXml.append("<SourceID>" + sipConfig.getSipId() + "</SourceID>\r\n");
+ broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
+ broadcastXml.append("</Notify>\r\n");
+
+ String tm = Long.toString(System.currentTimeMillis());
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), "z9hG4bK-ViaBcst-" + tm, "FromBcst" + tm, null, callIdHeader);
+ transmitRequest(device, request);
+ return true;
+ } catch (SipException | ParseException | InvalidArgumentException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+ @Override
+ public void audioBroadcastCmd(Device device, SipSubscribe.Event errorEvent) {
+ try {
+ StringBuffer broadcastXml = new StringBuffer(200);
+ broadcastXml.append("<?xml version=\"1.0\" ?>\r\n");
+ broadcastXml.append("<Notify>\r\n");
+ broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
+ broadcastXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
+ broadcastXml.append("<SourceID>" + sipConfig.getSipId() + "</SourceID>\r\n");
+ broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
+ broadcastXml.append("</Notify>\r\n");
+
+ String tm = Long.toString(System.currentTimeMillis());
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), "z9hG4bK-ViaBcst-" + tm, "FromBcst" + tm, null, callIdHeader);
+ transmitRequest(device, request, errorEvent);
+ } catch (SipException | ParseException | InvalidArgumentException e) {
+ e.printStackTrace();
+ }
+ }
+
+
/**
* 闊宠棰戝綍鍍忔帶鍒�
*
@@ -600,7 +707,11 @@
cmdXml.append("</Control>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromRecord" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromRecord" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -627,7 +738,11 @@
cmdXml.append("</Control>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromBoot" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromBoot" + tm, null, callIdHeader);
transmitRequest(device, request);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -655,7 +770,11 @@
cmdXml.append("</Control>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromGuard" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromGuard" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -694,7 +813,11 @@
cmdXml.append("</Control>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromAlarm" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromAlarm" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -726,7 +849,11 @@
cmdXml.append("</Control>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromBoot" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromBoot" + tm, null, callIdHeader);
transmitRequest(device, request);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -776,7 +903,11 @@
cmdXml.append("</Control>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromGuard" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromGuard" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -843,7 +974,11 @@
cmdXml.append("</Control>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -869,7 +1004,11 @@
catalogXml.append("</Query>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, "FromStatus" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, "FromStatus" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
return true;
@@ -897,7 +1036,11 @@
catalogXml.append("</Query>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "ViaDeviceInfoBranch", "FromDev" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "z9hG4bK-ViaDeviceInfo-" + tm, "FromDev" + tm, null, callIdHeader);
transmitRequest(device, request);
@@ -927,7 +1070,11 @@
catalogXml.append("</Query>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "ViaCatalogBranch", "FromCat" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "z9hG4bK-ViaCatalog-" + tm, "FromCat" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -962,7 +1109,12 @@
recordInfoXml.append("</Query>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(), "ViaRecordInfoBranch", "fromRec" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(),
+ "z9hG4bK-ViaRecordInfo-" + tm, "fromRec" + tm, null, callIdHeader);
transmitRequest(device, request);
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1015,7 +1167,11 @@
cmdXml.append("</Query>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromAlarm" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromAlarm" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1048,7 +1204,11 @@
cmdXml.append("</Query>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1078,7 +1238,11 @@
cmdXml.append("</Query>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
return true;
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1105,7 +1269,11 @@
mobilePostitionXml.append("</Query>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), "viaTagPos" + tm, "fromTagPos" + tm, null);
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, callIdHeader);
transmitRequest(device, request, errorEvent);
@@ -1138,7 +1306,11 @@
subscribePostitionXml.append("</Query>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), "viaTagPos" + tm, "fromTagPos" + tm, null, expires, "presence" ); //Position;id=" + tm.substring(tm.length() - 4));
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, expires, "presence" ,callIdHeader); //Position;id=" + tm.substring(tm.length() - 4));
transmitRequest(device, request);
return true;
@@ -1191,7 +1363,11 @@
cmdXml.append("</Query>\r\n");
String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), "viaTagPos" + tm, "fromTagPos" + tm, null, expires, "presence" );
+
+ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+
+ Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, expires, "presence" , callIdHeader);
transmitRequest(device, request);
return true;
--
Gitblit v1.8.0