From a2d93fce811acc83ad5ff0b4a93403db22795a10 Mon Sep 17 00:00:00 2001
From: winfed <chinesezwf@gmail.com>
Date: 星期五, 09 六月 2023 15:19:18 +0800
Subject: [PATCH] fix:修复拉流代理配置展示问题:音频、录制、无人观看
---
src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java | 62 +++++++++++++++++++++++++-----
1 files changed, 51 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
index 56fdb5b..29bf66f 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
@@ -1,11 +1,13 @@
package com.genersoft.iot.vmp.gb28181.utils;
+import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.bean.RemoteAddressInfo;
import com.genersoft.iot.vmp.utils.GitUtil;
import gov.nist.javax.sip.address.AddressImpl;
import gov.nist.javax.sip.address.SipUri;
import gov.nist.javax.sip.header.Subject;
import gov.nist.javax.sip.message.SIPRequest;
+import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.util.ObjectUtils;
import javax.sip.PeerUnavailableException;
@@ -13,7 +15,6 @@
import javax.sip.header.FromHeader;
import javax.sip.header.Header;
import javax.sip.header.UserAgentHeader;
-import javax.sip.header.ViaHeader;
import javax.sip.message.Request;
import java.text.ParseException;
import java.util.ArrayList;
@@ -51,10 +52,10 @@
}
public static String getNewViaTag() {
- return "z9hG4bK" + System.currentTimeMillis();
+ return "z9hG4bK" + RandomStringUtils.randomNumeric(10);
}
- public static UserAgentHeader createUserAgentHeader(SipFactory sipFactory, GitUtil gitUtil) throws PeerUnavailableException, ParseException {
+ public static UserAgentHeader createUserAgentHeader(GitUtil gitUtil) throws PeerUnavailableException, ParseException {
List<String> agentParam = new ArrayList<>();
agentParam.add("WVP-Pro ");
if (gitUtil != null ) {
@@ -66,7 +67,7 @@
agentParam.add(gitUtil.getCommitTime());
}
}
- return sipFactory.createHeaderFactory().createUserAgentHeader(agentParam);
+ return SipFactory.getInstance().createHeaderFactory().createUserAgentHeader(agentParam);
}
public static String getNewFromTag(){
@@ -113,6 +114,12 @@
strTmp = String.format("%02X", moveSpeed);
builder.append(strTmp, 0, 2);
builder.append(strTmp, 0, 2);
+
+ //浼樺寲zoom浣庡�嶉�熶笅鐨勫彉鍊嶉�熺巼
+ if ((zoomSpeed > 0) && (zoomSpeed <16))
+ {
+ zoomSpeed = 16;
+ }
strTmp = String.format("%X", zoomSpeed);
builder.append(strTmp, 0, 1).append("0");
//璁$畻鏍¢獙鐮�
@@ -133,21 +140,54 @@
String remoteAddress;
int remotePort;
if (sipUseSourceIpAsRemoteAddress) {
- remoteAddress = request.getRemoteAddress().getHostAddress();
- remotePort = request.getRemotePort();
+ remoteAddress = request.getPeerPacketSourceAddress().getHostAddress();
+ remotePort = request.getPeerPacketSourcePort();
+
}else {
// 鍒ゆ柇RPort鏄惁鏀瑰彉锛屾敼鍙樺垯璇存槑璺敱nat淇℃伅鍙樺寲锛屼慨鏀硅澶囦俊鎭�
// 鑾峰彇鍒伴�氫俊鍦板潃绛変俊鎭�
- ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
- remoteAddress = viaHeader.getReceived();
- remotePort = viaHeader.getRPort();
+ remoteAddress = request.getTopmostViaHeader().getReceived();
+ remotePort = request.getTopmostViaHeader().getRPort();
// 瑙f瀽鏈湴鍦板潃鏇夸唬
if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) {
- remoteAddress = viaHeader.getHost();
- remotePort = viaHeader.getPort();
+ remoteAddress = request.getPeerPacketSourceAddress().getHostAddress();
+ remotePort = request.getPeerPacketSourcePort();
}
}
return new RemoteAddressInfo(remoteAddress, remotePort);
}
+
+ public static DeviceChannel updateGps(DeviceChannel deviceChannel, String geoCoordSys) {
+ if (deviceChannel.getLongitude()*deviceChannel.getLatitude() > 0) {
+
+ if (geoCoordSys == null) {
+ geoCoordSys = "WGS84";
+ }
+ if ("WGS84".equals(geoCoordSys)) {
+ deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeWgs84(deviceChannel.getLatitude());
+ Double[] position = Coordtransform.WGS84ToGCJ02(deviceChannel.getLongitude(), deviceChannel.getLatitude());
+ deviceChannel.setLongitudeGcj02(position[0]);
+ deviceChannel.setLatitudeGcj02(position[1]);
+ }else if ("GCJ02".equals(geoCoordSys)) {
+ deviceChannel.setLongitudeGcj02(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeGcj02(deviceChannel.getLatitude());
+ Double[] position = Coordtransform.GCJ02ToWGS84(deviceChannel.getLongitude(), deviceChannel.getLatitude());
+ deviceChannel.setLongitudeWgs84(position[0]);
+ deviceChannel.setLatitudeWgs84(position[1]);
+ }else {
+ deviceChannel.setLongitudeGcj02(0.00);
+ deviceChannel.setLatitudeGcj02(0.00);
+ deviceChannel.setLongitudeWgs84(0.00);
+ deviceChannel.setLatitudeWgs84(0.00);
+ }
+ }else {
+ deviceChannel.setLongitudeGcj02(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeGcj02(deviceChannel.getLatitude());
+ deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude());
+ deviceChannel.setLatitudeWgs84(deviceChannel.getLatitude());
+ }
+ return deviceChannel;
+ }
}
--
Gitblit v1.8.0