From b0e494b842448568b6c20c9fbc7baa1df106b595 Mon Sep 17 00:00:00 2001
From: 朱俊杰 <502612493@qq.com>
Date: 星期二, 29 三月 2022 17:31:41 +0800
Subject: [PATCH] 2个小bug

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java |   25 ++++++++++++++++++++-----
 1 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
index fef3412..b1c7a31 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
@@ -29,6 +29,7 @@
 import gov.nist.javax.sdp.fields.TimeField;
 import gov.nist.javax.sip.address.AddressImpl;
 import gov.nist.javax.sip.address.SipUri;
+import gov.nist.javax.sip.header.Subject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.InitializingBean;
@@ -43,6 +44,7 @@
 import javax.sip.address.SipURI;
 import javax.sip.header.CallIdHeader;
 import javax.sip.header.FromHeader;
+import javax.sip.header.Header;
 import javax.sip.message.Request;
 import javax.sip.message.Response;
 import java.text.ParseException;
@@ -114,7 +116,9 @@
 		try {
 			Request request = evt.getRequest();
 			SipURI sipURI = (SipURI) request.getRequestURI();
-			String channelId = sipURI.getUser();
+			//浠巗ubject璇诲彇channelId,涓嶅啀浠巖equest-line璇诲彇銆� 鏈変簺骞冲彴request-line鏄钩鍙板浗鏍囩紪鐮侊紝涓嶆槸璁惧鍥芥爣缂栫爜銆�
+			//String channelId = sipURI.getUser();
+			String channelId = SipUtils.getChannelIdFromHeader(request);
 			String requesterId = SipUtils.getUserIdFromFromHeader(request);
 			CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME);
 			if (requesterId == null || channelId == null) {
@@ -221,6 +225,9 @@
 								mediaTransmissionTCP = true;
 								if ("active".equals(setup)) {
 									tcpActive = true;
+									// 涓嶆敮鎸乼cp涓诲姩
+									responseAck(evt, Response.NOT_IMPLEMENTED, "tcp active not support"); // 鐩綍涓嶆敮鎸佺偣鎾�
+									return;
 								} else if ("passive".equals(setup)) {
 									tcpActive = false;
 								}
@@ -372,12 +379,12 @@
 							}
 						}
 						if (playTransaction == null) {
-							SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, null, true);
+							String streamId = null;
 							if (mediaServerItem.isRtpEnable()) {
-								sendRtpItem.setStreamId(String.format("%s_%s", device.getDeviceId(), channelId));
-							}else {
-								sendRtpItem.setStreamId(ssrcInfo.getStream());
+								streamId = String.format("%s_%s", device.getDeviceId(), channelId);
 							}
+							SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, true);
+							sendRtpItem.setStreamId(ssrcInfo.getStream());
 							// 鍐欏叆redis锛� 瓒呮椂鏃跺洖澶�
 							redisCatchStorage.updateSendRTPSever(sendRtpItem);
 							playService.play(mediaServerItem, ssrcInfo, device, channelId, hookEvent, errorEvent, (code, msg)->{
@@ -424,6 +431,14 @@
 					content.append("m=video "+ sendRtpItem.getLocalPort()+" RTP/AVP 96\r\n");
 					content.append("a=sendonly\r\n");
 					content.append("a=rtpmap:96 PS/90000\r\n");
+					if (sendRtpItem.isTcp()) {
+						content.append("a=connection:new\r\n");
+						if (!sendRtpItem.isTcpActive()) {
+							content.append("a=setup:active\r\n");
+						}else {
+							content.append("a=setup:passive\r\n");
+						}
+					}
 					content.append("y="+ ssrc + "\r\n");
 					content.append("f=\r\n");
 

--
Gitblit v1.8.0