From 52f9c295f90188d3346b9c129a00e817ab7f14e4 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期六, 10 六月 2023 00:33:00 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wvp-28181-2.0' into wvp-28181-2.0
---
src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java | 61 ++++++++++++++++++++++++++++++
1 files changed, 60 insertions(+), 1 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 d6037a1..29f1654 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,14 +1,19 @@
package com.genersoft.iot.vmp.gb28181.utils;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
+import com.genersoft.iot.vmp.gb28181.bean.Gb28181Sdp;
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.sdp.SdpFactory;
+import javax.sdp.SdpParseException;
+import javax.sdp.SessionDescription;
import javax.sip.PeerUnavailableException;
import javax.sip.SipFactory;
import javax.sip.header.FromHeader;
@@ -51,7 +56,7 @@
}
public static String getNewViaTag() {
- return "z9hG4bK" + System.currentTimeMillis();
+ return "z9hG4bK" + RandomStringUtils.randomNumeric(10);
}
public static UserAgentHeader createUserAgentHeader(GitUtil gitUtil) throws PeerUnavailableException, ParseException {
@@ -113,6 +118,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");
//璁$畻鏍¢獙鐮�
@@ -183,4 +194,52 @@
}
return deviceChannel;
}
+
+ public static Gb28181Sdp parseSDP(String sdpStr) throws SdpParseException {
+
+ // jainSip涓嶆敮鎸亂= f=瀛楁锛� 绉婚櫎浠ヨВ鏋愩��
+ int ssrcIndex = sdpStr.indexOf("y=");
+ int mediaDescriptionIndex = sdpStr.indexOf("f=");
+ // 妫�鏌ユ槸鍚︽湁y瀛楁
+ SessionDescription sdp;
+ String ssrc = null;
+ String mediaDescription = null;
+ if (mediaDescriptionIndex == 0 && ssrcIndex == 0) {
+ sdp = SdpFactory.getInstance().createSessionDescription(sdpStr);
+ }else {
+ int baseSdpIndex = Math.min(mediaDescriptionIndex, ssrcIndex);
+ //ssrc瑙勫畾闀垮害涓�10瀛楄妭锛屼笉鍙栦綑涓嬮暱搴︿互閬垮厤鍚庣画杩樻湁鈥渇=鈥濆瓧娈�
+ String substring = sdpStr.substring(0, baseSdpIndex);
+ sdp = SdpFactory.getInstance().createSessionDescription(substring);
+
+ String lines[] = sdpStr.split("\\r?\\n");
+ for (String line : lines) {
+ if (line.trim().startsWith("y=")) {
+ ssrc = line.substring(2);
+ }else if (line.trim().startsWith("f=")) {
+ mediaDescription = line.substring(2);
+ }
+ if (ssrc != null && mediaDescription != null) {
+ break;
+ }
+ }
+ }
+ return Gb28181Sdp.getInstance(sdp, ssrc, mediaDescription);
+ }
+
+ public static String getSsrcFromSdp(String sdpStr) {
+
+ // jainSip涓嶆敮鎸亂= f=瀛楁锛� 绉婚櫎浠ヨВ鏋愩��
+ int ssrcIndex = sdpStr.indexOf("y=");
+ if (ssrcIndex == 0) {
+ return null;
+ }
+ String lines[] = sdpStr.split("\\r?\\n");
+ for (String line : lines) {
+ if (line.trim().startsWith("y=")) {
+ return line.substring(2);
+ }
+ }
+ return null;
+ }
}
--
Gitblit v1.8.0