From e91e96077ab5f4b6554fa9359fbd17f035842697 Mon Sep 17 00:00:00 2001 From: guoshq Date: Wed, 17 Sep 2025 13:38:23 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[=E5=90=8E=E7=AB=AF]=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E8=AE=BE=E7=BD=AE/=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E7=9A=84=E8=AE=A2=E9=98=85=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=9A=E8=AE=A2=E9=98=85=E5=91=A8=E6=9C=9F=E5=BF=85=E9=A1=BB?= =?UTF-8?q?=20=E2=89=A530=20=E7=A7=92=EF=BC=8C=E5=8F=96=E6=B6=88=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E6=97=B6=E5=85=81=E8=AE=B8=E5=91=A8=E6=9C=9F=E8=AE=BE?= =?UTF-8?q?=E4=B8=BA=200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gb28181/transmit/cmd/impl/SIPCommander.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 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 6d405efc2..3498d7ceb 100755 --- 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 @@ -1203,7 +1203,13 @@ public class SIPCommander implements ISIPCommander { } else { callIdHeader = sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()); } - SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), sipTransactionInfo, device.getSubscribeCycleForMobilePosition(), "presence",callIdHeader); //Position;id=" + tm.substring(tm.length() - 4)); + + int subscribeCycleForMobilePosition = device.getSubscribeCycleForMobilePosition(); + if (subscribeCycleForMobilePosition > 0) { + // 移动位置订阅有效期不小于 30 秒 + subscribeCycleForMobilePosition = Math.max(subscribeCycleForMobilePosition, 30); + } + SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), sipTransactionInfo, subscribeCycleForMobilePosition, "presence",callIdHeader); //Position;id=" + tm.substring(tm.length() - 4)); sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, okEvent); return request; @@ -1275,8 +1281,13 @@ public class SIPCommander implements ISIPCommander { callIdHeader = sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()); } + int subscribeCycleForCatalog = device.getSubscribeCycleForCatalog(); + if (subscribeCycleForCatalog > 0) { + // 目录订阅有效期不小于 30 秒 + subscribeCycleForCatalog = Math.max(subscribeCycleForCatalog, 30); + } // 有效时间默认为60秒以上 - SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, cmdXml.toString(), sipTransactionInfo, device.getSubscribeCycleForCatalog(), "Catalog", + SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, cmdXml.toString(), sipTransactionInfo, subscribeCycleForCatalog, "Catalog", callIdHeader); sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, okEvent); return request; From 99fd07d58dd129d133247bb4008f773ed500f06d Mon Sep 17 00:00:00 2001 From: Kairlec Date: Fri, 10 Oct 2025 10:39:54 +0800 Subject: [PATCH 2/4] fix: remove conflicting files `AblUrls.java` on Windows --- .../iot/vmp/media/abl/bean/AblUrls.java | 58 ------------------- 1 file changed, 58 deletions(-) delete mode 100644 src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblUrls.java diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblUrls.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblUrls.java deleted file mode 100644 index 42e05a04d..000000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblUrls.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean; - -public class AblUrls { - private String rtsp; - private String rtmp; - private String httpFlv; - private String wsFlv; - private String httpMp4; - private String httpHls; - - public String getRtsp() { - return rtsp; - } - - public void setRtsp(String rtsp) { - this.rtsp = rtsp; - } - - public String getRtmp() { - return rtmp; - } - - public void setRtmp(String rtmp) { - this.rtmp = rtmp; - } - - public String getHttpFlv() { - return httpFlv; - } - - public void setHttpFlv(String httpFlv) { - this.httpFlv = httpFlv; - } - - public String getWsFlv() { - return wsFlv; - } - - public void setWsFlv(String wsFlv) { - this.wsFlv = wsFlv; - } - - public String getHttpMp4() { - return httpMp4; - } - - public void setHttpMp4(String httpMp4) { - this.httpMp4 = httpMp4; - } - - public String getHttpHls() { - return httpHls; - } - - public void setHttpHls(String httpHls) { - this.httpHls = httpHls; - } -} From 5bafc3e389c7cea8e93ff5308b0c34e31dde614c Mon Sep 17 00:00:00 2001 From: Kairlec Date: Fri, 10 Oct 2025 10:54:46 +0800 Subject: [PATCH 3/4] fix: `AblUrls.java` file removed --- .../java/com/genersoft/iot/vmp/media/abl/bean/ABLUrls.java | 3 +++ .../vmp/media/abl/bean/hook/OnStreamArriveABLHookParam.java | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/ABLUrls.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/ABLUrls.java index 23a37c0e3..a3b74c8ab 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/ABLUrls.java +++ b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/ABLUrls.java @@ -17,5 +17,8 @@ public class ABLUrls { @JSONField(name = "http-mp4") private String httpMp4; + @JSONField(name = "http-hls") + private String httpHls; + private String download; } diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnStreamArriveABLHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnStreamArriveABLHookParam.java index 0f552d1c2..032a517e1 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnStreamArriveABLHookParam.java +++ b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnStreamArriveABLHookParam.java @@ -1,6 +1,6 @@ package com.genersoft.iot.vmp.media.abl.bean.hook; -import com.genersoft.iot.vmp.media.abl.bean.AblUrls; +import com.genersoft.iot.vmp.media.abl.bean.ABLUrls; import lombok.Getter; import lombok.Setter; @@ -108,5 +108,5 @@ public class OnStreamArriveABLHookParam extends ABLHookParam{ private Integer audioBitrate; - private AblUrls url; + private ABLUrls url; } From b151aec5a0f71bf4cb6736da46f3aa08f285f3f2 Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Fri, 24 Oct 2025 16:54:12 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BC=80=E5=90=AF?= =?UTF-8?q?=E8=AE=A2=E9=98=85=E5=92=8C=E5=8F=96=E6=B6=88=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E6=97=B6EventId=E4=B8=8D=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/gb28181/bean/SipTransactionInfo.java | 11 +++++++++++ .../transmit/cmd/SIPRequestHeaderProvider.java | 15 +++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SipTransactionInfo.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SipTransactionInfo.java index 74c63e112..3e2c40b15 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SipTransactionInfo.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SipTransactionInfo.java @@ -3,6 +3,8 @@ package com.genersoft.iot.vmp.gb28181.bean; import gov.nist.javax.sip.message.SIPResponse; import lombok.Data; +import javax.sip.header.EventHeader; + @Data public class SipTransactionInfo { @@ -12,6 +14,7 @@ public class SipTransactionInfo { private String viaBranch; private int expires; private String user; + private String eventId; // 自己是否媒体流发送者 private boolean asSender; @@ -22,6 +25,10 @@ public class SipTransactionInfo { this.toTag = response.getToTag(); this.viaBranch = response.getTopmostViaHeader().getBranch(); this.asSender = asSender; + EventHeader header = (EventHeader)response.getHeader(EventHeader.NAME); + if (header != null) { + this.eventId = header.getEventId(); + } } public SipTransactionInfo(SIPResponse response) { @@ -30,6 +37,10 @@ public class SipTransactionInfo { this.toTag = response.getToTag(); this.viaBranch = response.getTopmostViaHeader().getBranch(); this.asSender = false; + EventHeader header = (EventHeader)response.getHeader(EventHeader.NAME); + if (header != null) { + this.eventId = header.getEventId(); + } } public SipTransactionInfo() { diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java index f4820ff2b..a99e044a1 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java @@ -269,12 +269,15 @@ public class SIPRequestHeaderProvider { ExpiresHeader expireHeader = SipFactory.getInstance().createHeaderFactory().createExpiresHeader(expires); request.addHeader(expireHeader); - // Event - EventHeader eventHeader = SipFactory.getInstance().createHeaderFactory().createEventHeader(event); - - int random = (int) Math.floor(Math.random() * 10000); - eventHeader.setEventId(random + ""); - request.addHeader(eventHeader); + // Event + EventHeader eventHeader = SipFactory.getInstance().createHeaderFactory().createEventHeader(event); + if (sipTransactionInfo != null && sipTransactionInfo.getEventId() != null) { + eventHeader.setEventId(sipTransactionInfo.getEventId()); + }else { + int random = (int) Math.floor(Math.random() * 10000); + eventHeader.setEventId(random + ""); + } + request.addHeader(eventHeader); ContentTypeHeader contentTypeHeader = SipFactory.getInstance().createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml"); request.setContent(content, contentTypeHeader);