From 5a7a7a12bde268c104610d3e81a08df06ccab5eb Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 27 六月 2023 16:46:26 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' into main-dev

---
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java |   40 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
index 778b9ca..f298d5c 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
@@ -24,6 +24,7 @@
 import com.genersoft.iot.vmp.service.bean.InviteErrorCode;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import com.genersoft.iot.vmp.utils.DateUtil;
 import com.genersoft.iot.vmp.vmanager.bean.*;
 import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
 import com.genersoft.iot.vmp.vmanager.bean.StreamContent;
@@ -129,7 +130,7 @@
 				if (data != null) {
 					StreamInfo streamInfo = (StreamInfo)data;
 					if (userSetting.getUseSourceIpAsStreamIp()) {
-						streamInfo.channgeStreamIp(request.getLocalName());
+						streamInfo.channgeStreamIp(request.getLocalAddr());
 					}
 					wvpResult.setData(new StreamContent(streamInfo));
 				}
@@ -146,8 +147,9 @@
 	@Operation(summary = "鍋滄鐐规挱")
 	@Parameter(name = "deviceId", description = "璁惧鍥芥爣缂栧彿", required = true)
 	@Parameter(name = "channelId", description = "閫氶亾鍥芥爣缂栧彿", required = true)
+	@Parameter(name = "isSubStream", description = "鏄惁瀛愮爜娴侊紙true-瀛愮爜娴侊紝false-涓荤爜娴侊級锛岄粯璁や负false", required = true)
 	@GetMapping("/stop/{deviceId}/{channelId}")
-	public JSONObject playStop(@PathVariable String deviceId, @PathVariable String channelId) {
+	public JSONObject playStop(@PathVariable String deviceId, @PathVariable String channelId,boolean isSubStream) {
 
 		logger.debug(String.format("璁惧棰勮/鍥炴斁鍋滄API璋冪敤锛宻treamId锛�%s_%s", deviceId, channelId ));
 
@@ -174,11 +176,12 @@
 			}
 		}
 		inviteStreamService.removeInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, deviceId, channelId);
-
 		storager.stopPlay(deviceId, channelId);
+
 		JSONObject json = new JSONObject();
 		json.put("deviceId", deviceId);
 		json.put("channelId", channelId);
+		json.put("isSubStream", isSubStream);
 		return json;
 	}
 
@@ -316,5 +319,36 @@
 		return jsonObject;
 	}
 
+	@Operation(summary = "鑾峰彇鎴浘")
+	@Parameter(name = "deviceId", description = "璁惧鍥芥爣缂栧彿", required = true)
+	@Parameter(name = "channelId", description = "閫氶亾鍥芥爣缂栧彿", required = true)
+	@Parameter(name = "isSubStream", description = "鏄惁瀛愮爜娴侊紙true-瀛愮爜娴侊紝false-涓荤爜娴侊級锛岄粯璁や负false", required = true)
+	@GetMapping("/snap")
+	public DeferredResult<String> getSnap(String deviceId, String channelId,boolean isSubStream) {
+		if (logger.isDebugEnabled()) {
+			logger.debug("鑾峰彇鎴浘: {}/{}", deviceId, channelId);
+		}
+
+		DeferredResult<String> result = new DeferredResult<>(3 * 1000L);
+		String key  = DeferredResultHolder.CALLBACK_CMD_SNAP + deviceId;
+		String uuid  = UUID.randomUUID().toString();
+		resultHolder.put(key, uuid,  result);
+
+		RequestMessage message = new RequestMessage();
+		message.setKey(key);
+		message.setId(uuid);
+
+		String fileName = deviceId + "_" + channelId + "_" + DateUtil.getNowForUrl() + "jpg";
+		playService.getSnap(deviceId, channelId, fileName, (code, msg, data) -> {
+			if (code == InviteErrorCode.SUCCESS.getCode()) {
+				message.setData(data);
+			}else {
+				message.setData(WVPResult.fail(code, msg));
+			}
+			resultHolder.invokeResult(message);
+		});
+		return result;
+	}
+
 }
 

--
Gitblit v1.8.0