From e48fa711a3664bece9b3e58840a75fe7c05bc47c Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期六, 08 五月 2021 17:14:05 +0800
Subject: [PATCH] 添加截图(快照)功能

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java |   50 ++++++++++++++++++++++----------------------------
 1 files changed, 22 insertions(+), 28 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 529feaf..ca85e3c 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
@@ -1,8 +1,6 @@
 package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
 
 import java.text.ParseException;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 import javax.sip.*;
 import javax.sip.address.SipURI;
@@ -10,11 +8,11 @@
 import javax.sip.header.ViaHeader;
 import javax.sip.message.Request;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.genersoft.iot.vmp.common.StreamInfo;
-import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.conf.MediaConfig;
+import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
 import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe;
 import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
@@ -82,14 +80,17 @@
 	@Autowired
 	private ZLMRESTfulUtils zlmresTfulUtils;
 
-	@Value("${media.rtp.enable}")
-	private boolean rtpEnable;
+	@Autowired
+	private MediaConfig mediaConfig;
 
-	@Value("${media.seniorSdp}")
+	@Value("${userSettings.seniorSdp}")
 	private boolean seniorSdp;
 
-	@Value("${media.autoApplyPlay}")
+	@Value("${userSettings.autoApplyPlay}")
 	private boolean autoApplyPlay;
+
+	@Value("${userSettings.waitTrack}")
+	private boolean waitTrack;
 
 	@Autowired
 	private ZLMHttpHookSubscribe subscribe;
@@ -277,7 +278,7 @@
 	public boolean frontEndCmd(Device device, String channelId, int cmdCode, int parameter1, int parameter2, int combineCode2) {
 		try {
 			String cmdStr= frontEndCmdString(cmdCode, parameter1, parameter2, combineCode2);
-			System.out.println("鎺у埗瀛楃涓诧細" + cmdStr);
+			logger.info("鎺у埗瀛楃涓诧細" + cmdStr);
 			StringBuffer ptzXml = new StringBuffer(200);
 			ptzXml.append("<?xml version=\"1.0\" ?>\r\n");
 			ptzXml.append("<Control>\r\n");
@@ -350,20 +351,20 @@
 		try {
 			if (device == null) return;
 			String ssrc = streamSession.createPlaySsrc();
-			if (rtpEnable) {
+			if (mediaConfig.isRtpEnable()) {
 				streamId = String.format("gb_play_%s_%s", device.getDeviceId(), channelId);
 			}else {
 				streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase();
 			}
 			String streamMode = device.getStreamMode().toUpperCase();
-			MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+			ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
 			if (mediaInfo == null) {
 				logger.warn("鐐规挱鏃跺彂鐜癦LM灏氭湭杩炴帴...");
 				return;
 			}
 			String mediaPort = null;
 			// 浣跨敤鍔ㄦ�乽dp绔彛
-			if (rtpEnable) {
+			if (mediaConfig.isRtpEnable()) {
 				mediaPort = zlmrtpServerFactory.createRTPServer(streamId) + "";
 			}else {
 				mediaPort = mediaInfo.getRtpProxyPort();
@@ -376,7 +377,7 @@
 			subscribeKey.put("regist", true);
 
 			subscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey, json->{
-				if (json.getJSONArray("tracks") == null) return;
+				if (waitTrack && json.getJSONArray("tracks") == null) return;
 				event.response(json);
 				subscribe.removeSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey);
 			});
@@ -426,19 +427,12 @@
 				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琚姩妯″紡
+				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涓诲姩妯″紡
-						content.append("a=setup:active\r\n");
-						content.append("a=connection:new\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");
 				}
 			}
 
@@ -474,7 +468,7 @@
 	public void playbackStreamCmd(Device device, String channelId, String startTime, String endTime, ZLMHttpHookSubscribe.Event event
 			, SipSubscribe.Event errorEvent) {
 		try {
-			MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
+			ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
 			String ssrc = streamSession.createPlayBackSsrc();
 			String streamId = String.format("%08x", Integer.parseInt(ssrc)).toUpperCase();
 			// 娣诲姞璁㈤槄
@@ -499,7 +493,7 @@
 					+DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) +"\r\n");
 			String mediaPort = null;
 			// 浣跨敤鍔ㄦ�乽dp绔彛
-			if (rtpEnable) {
+			if (mediaConfig.isRtpEnable()) {
 				mediaPort = zlmrtpServerFactory.createRTPServer(streamId) + "";
 			}else {
 				mediaPort = mediaInfo.getRtpProxyPort();
@@ -1449,7 +1443,7 @@
 
 	@Override
 	public void closeRTPServer(Device device, String channelId) {
-		if (rtpEnable) {
+		if (mediaConfig.isRtpEnable()) {
 			String streamId = String.format("gb_play_%s_%s", device.getDeviceId(), channelId);
 			zlmrtpServerFactory.closeRTPServer(streamId);
 		}

--
Gitblit v1.8.0