From 625842fd0d53909066b37febcbe5d12ae53635ed Mon Sep 17 00:00:00 2001
From: Lawrence <1934378145@qq.com>
Date: 星期日, 10 一月 2021 21:38:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'upstream/wvp-28181-2.0' into wvp-28181-2.0

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java |  117 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 77 insertions(+), 40 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 af9030b..4a76e9a 100644
--- 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
@@ -77,6 +77,9 @@
 	@Value("${media.seniorSdp}")
 	private boolean seniorSdp;
 
+	@Value("${media.autoApplyPlay}")
+	private boolean autoApplyPlay;
+
 	@Autowired
 	private ZLMHttpHookSubscribe subscribe;
 
@@ -182,11 +185,10 @@
    /**
 	* 浜戝彴鎸囦护鐮佽绠� 
 	*
-    * @param leftRight  闀滃ご宸︾Щ鍙崇Щ 0:鍋滄 1:宸︾Щ 2:鍙崇Щ
-    * @param upDown     闀滃ご涓婄Щ涓嬬Щ 0:鍋滄 1:涓婄Щ 2:涓嬬Щ
-    * @param inOut      闀滃ご鏀惧ぇ缂╁皬 0:鍋滄 1:缂╁皬 2:鏀惧ぇ
-    * @param moveSpeed  闀滃ご绉诲姩閫熷害 榛樿 0XFF (0-255)
-    * @param zoomSpeed  闀滃ご缂╂斁閫熷害 榛樿 0X1 (0-255)
+	* @param cmdCode		鎸囦护鐮�
+	* @param parameter1	鏁版嵁1
+	* @param parameter2	鏁版嵁2
+	* @param combineCode2	缁勫悎鐮�2
     */
     public static String frontEndCmdString(int cmdCode, int parameter1, int parameter2, int combineCode2) {
 		StringBuilder builder = new StringBuilder("A50F01");
@@ -233,7 +235,7 @@
 			ptzXml.append("</Info>\r\n");
 			ptzXml.append("</Control>\r\n");
 			
-			Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", "ToPtzTag");
+			Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", null);
 			
 			transmitRequest(device, request);
 			return true;
@@ -269,7 +271,7 @@
 			ptzXml.append("</Info>\r\n");
 			ptzXml.append("</Control>\r\n");
 			
-			Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", "ToPtzTag");
+			Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", null);
 			transmitRequest(device, request);
 			return true;
 		} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -288,8 +290,12 @@
 	@Override
 	public void playStreamCmd(Device device, String channelId, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent) {
 		try {
-
-			String ssrc = streamSession.createPlaySsrc();
+			String ssrc = "";
+			if (rtpEnable) {
+				ssrc = String.format("gb_play_%s_%s", device.getDeviceId(), channelId);
+			}else {
+				ssrc = streamSession.createPlaySsrc();
+			}
 			String streamId = null;
 			if (rtpEnable) {
 				streamId = String.format("gb_play_%s_%s", device.getDeviceId(), channelId);
@@ -324,30 +330,61 @@
 			content.append("s=Play\r\n");
 			content.append("c=IN IP4 "+mediaInfo.getWanIp()+"\r\n");
 			content.append("t=0 0\r\n");
-			if("TCP-PASSIVE".equals(streamMode)) {
-				content.append("m=video "+ mediaPort +" TCP/RTP/AVP 126 125 99 34 98 97 96\r\n");
-			}else if ("TCP-ACTIVE".equals(streamMode)) {
-				content.append("m=video "+ mediaPort +" TCP/RTP/AVP 126 125 99 34 98 97 96\r\n");
-			}else if("UDP".equals(streamMode)) {
-				content.append("m=video "+ mediaPort +" RTP/AVP 126 125 99 34 98 97 96\r\n");
+
+			if (seniorSdp) {
+				if("TCP-PASSIVE".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" TCP/RTP/AVP 126 125 99 34 98 97 96\r\n");
+				}else if ("TCP-ACTIVE".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" TCP/RTP/AVP 126 125 99 34 98 97 96\r\n");
+				}else if("UDP".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" RTP/AVP 126 125 99 34 98 97 96\r\n");
+				}
+				content.append("a=recvonly\r\n");
+				content.append("a=fmtp:126 profile-level-id=42e01e\r\n");
+				content.append("a=rtpmap:126 H264/90000\r\n");
+				content.append("a=rtpmap:125 H264S/90000\r\n");
+				content.append("a=fmtp:125 profile-level-id=42e01e\r\n");
+				content.append("a=rtpmap:99 MP4V-ES/90000\r\n");
+				content.append("a=fmtp:99 profile-level-id=3\r\n");
+				content.append("a=rtpmap:98 H264/90000\r\n");
+				content.append("a=rtpmap:97 MPEG4/90000\r\n");
+				content.append("a=rtpmap:96 PS/90000\r\n");
+				if("TCP-PASSIVE".equals(streamMode)){ // tcp琚姩妯″紡
+					content.append("a=setup:passive\r\n");
+					content.append("a=connection:new\r\n");
+				}else if ("TCP-ACTIVE".equals(streamMode)) { // tcp涓诲姩妯″紡
+					content.append("a=setup:active\r\n");
+					content.append("a=connection:new\r\n");
+				}
+			}else {
+				if("TCP-PASSIVE".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n");
+				}else if ("TCP-ACTIVE".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n");
+				}else if("UDP".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" RTP/AVP 96 98 97\r\n");
+				}
+				content.append("a=recvonly\r\n");
+				content.append("a=rtpmap:96 PS/90000\r\n");
+				content.append("a=rtpmap:98 H264/90000\r\n");
+				content.append("a=rtpmap:97 MPEG4/90000\r\n");
+				if("TCP-PASSIVE".equals(streamMode)) { // tcp琚姩妯″紡
+					content.append("a=setup:passive\r\n");
+					content.append("a=recvonly\r\n");
+					content.append("a=rtpmap:96 PS/90000\r\n");
+					content.append("a=rtpmap:98 H264/90000\r\n");
+					content.append("a=rtpmap:97 MPEG4/90000\r\n");
+					if ("TCP-PASSIVE".equals(streamMode)) { // tcp琚姩妯″紡
+						content.append("a=setup:passive\r\n");
+						content.append("a=connection:new\r\n");
+					} else if ("TCP-ACTIVE".equals(streamMode)) { // tcp涓诲姩妯″紡
+					} else if ("TCP-ACTIVE".equals(streamMode)) { // tcp涓诲姩妯″紡
+						content.append("a=setup:active\r\n");
+						content.append("a=connection:new\r\n");
+					}
+				}
 			}
-			content.append("a=recvonly\r\n");
-			content.append("a=fmtp:126 profile-level-id=42e01e\r\n");
-			content.append("a=rtpmap:126 H264/90000\r\n");
-			content.append("a=rtpmap:125 H264S/90000\r\n");
-			content.append("a=fmtp:125 profile-level-id=42e01e\r\n");
-			content.append("a=rtpmap:99 MP4V-ES/90000\r\n");
-			content.append("a=fmtp:99 profile-level-id=3\r\n");
-			content.append("a=rtpmap:98 H264/90000\r\n");
-			content.append("a=rtpmap:97 MPEG4/90000\r\n");
-			content.append("a=rtpmap:96 PS/90000\r\n");
-			if("TCP-PASSIVE".equals(streamMode)){ // tcp琚姩妯″紡
-				content.append("a=setup:passive\r\n");
-				content.append("a=connection:new\r\n");
-			}else if ("TCP-ACTIVE".equals(streamMode)) { // tcp涓诲姩妯″紡
-				content.append("a=setup:active\r\n");
-				content.append("a=connection:new\r\n");
-			}
+
 			content.append("y="+ssrc+"\r\n");//ssrc
 
 //			String fromTag = UUID.randomUUID().toString();
@@ -357,11 +394,7 @@
 
 			ClientTransaction transaction = transmitRequest(device, request, errorEvent);
 			streamSession.put(streamId, transaction);
-			DeviceChannel deviceChannel = storager.queryChannel(device.getDeviceId(), channelId);
-			if (deviceChannel != null) {
-				deviceChannel.setStreamId(streamId);
-				storager.updateChannel(device.getDeviceId(), deviceChannel);
-			}
+
 
 
 		} catch ( SipException | ParseException | InvalidArgumentException e) {
@@ -382,7 +415,12 @@
 			, SipSubscribe.Event errorEvent) {
 		try {
 			MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
-			String ssrc = streamSession.createPlayBackSsrc();
+			String ssrc = null;
+			if (rtpEnable) {
+				ssrc = String.format("gb_playback_%s_%s", device.getDeviceId(), channelId);
+			}else {
+				ssrc = streamSession.createPlayBackSsrc();
+			}
 			String streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase();
 			// 娣诲姞璁㈤槄
 			JSONObject subscribeKey = new JSONObject();
@@ -640,7 +678,7 @@
 			catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
 			catalogXml.append("</Query>\r\n");
 			
-			Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "ViaDeviceInfoBranch", "FromDeviceInfoTag", "ToDeviceInfoTag");
+			Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "ViaDeviceInfoBranch", "FromDeviceInfoTag", null);
 
 			transmitRequest(device, request);
 			
@@ -704,7 +742,6 @@
 			recordInfoXml.append("</Query>\r\n");
 			
 			Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(), "ViaRecordInfoBranch", "FromRecordInfoTag", null);
-
 
 			transmitRequest(device, request);
 		} catch (SipException | ParseException | InvalidArgumentException e) {

--
Gitblit v1.8.0