From 724963324aaa63feca2c6aed13785dc8485bc02c Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期一, 26 六月 2023 19:06:14 +0800 Subject: [PATCH] 修复上级点播时如果推流信息中mediaServerID错误的情况 --- src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java | 53 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 43 insertions(+), 10 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..d6037a1 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,5 +1,6 @@ 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; @@ -13,7 +14,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; @@ -54,7 +54,7 @@ return "z9hG4bK" + System.currentTimeMillis(); } - 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 +66,7 @@ agentParam.add(gitUtil.getCommitTime()); } } - return sipFactory.createHeaderFactory().createUserAgentHeader(agentParam); + return SipFactory.getInstance().createHeaderFactory().createUserAgentHeader(agentParam); } public static String getNewFromTag(){ @@ -133,21 +133,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