From 66ab09396cecb4caf3f1b6803fb97792132fffc6 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 04 四月 2023 09:18:33 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' into main-dev
---
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java | 63 ++++++++++++-------------------
1 files changed, 24 insertions(+), 39 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 99cb27f..7727729 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
@@ -19,10 +19,7 @@
import com.genersoft.iot.vmp.service.IPlayService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
-import com.genersoft.iot.vmp.vmanager.bean.DeferredResultEx;
-import com.genersoft.iot.vmp.vmanager.bean.AudioBroadcastResult;
-import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
-import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
+import com.genersoft.iot.vmp.vmanager.bean.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -44,7 +41,7 @@
* @author lin
*/
@Tag(name = "鍥芥爣璁惧鐐规挱")
-@CrossOrigin
+
@RestController
@RequestMapping("/api/play")
public class PlayController {
@@ -85,8 +82,8 @@
@Parameter(name = "deviceId", description = "璁惧鍥芥爣缂栧彿", required = true)
@Parameter(name = "channelId", description = "閫氶亾鍥芥爣缂栧彿", required = true)
@GetMapping("/start/{deviceId}/{channelId}")
- public DeferredResult<WVPResult<StreamInfo>> play(HttpServletRequest request, @PathVariable String deviceId,
- @PathVariable String channelId) {
+ public DeferredResult<WVPResult<StreamContent>> play(HttpServletRequest request, @PathVariable String deviceId,
+ @PathVariable String channelId) {
// 鑾峰彇鍙敤鐨剒lm
Device device = storager.queryVideoDevice(deviceId);
@@ -98,8 +95,8 @@
msg.setKey(key);
String uuid = UUID.randomUUID().toString();
msg.setId(uuid);
- DeferredResult<WVPResult<StreamInfo>> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue());
- DeferredResultEx<WVPResult<StreamInfo>> deferredResultEx = new DeferredResultEx<>(result);
+ DeferredResult<WVPResult<StreamContent>> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue());
+ DeferredResultEx<WVPResult<StreamContent>> deferredResultEx = new DeferredResultEx<>(result);
result.onTimeout(()->{
logger.info("鐐规挱鎺ュ彛绛夊緟瓒呮椂");
@@ -110,23 +107,22 @@
msg.setData(wvpResult);
resultHolder.invokeResult(msg);
});
-
// TODO 鍦ㄧ偣鎾湭鎴愬姛鐨勬儏鍐典笅鍦ㄦ璋冪敤鎺ュ彛鐐规挱浼氬鑷磋繑鍥炵殑娴佸湴鍧�ip閿欒
deferredResultEx.setFilter(result1 -> {
WVPResult<StreamInfo> wvpResult1 = (WVPResult<StreamInfo>)result1;
- WVPResult<StreamInfo> clone = null;
- try {
- clone = (WVPResult<StreamInfo>)wvpResult1.clone();
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e);
+ WVPResult<StreamContent> resultStream = new WVPResult<>();
+ resultStream.setCode(wvpResult1.getCode());
+ resultStream.setMsg(wvpResult1.getMsg());
+ if (wvpResult1.getCode() == ErrorCode.SUCCESS.getCode()) {
+ StreamInfo data = wvpResult1.getData().clone();
+ if (userSetting.getUseSourceIpAsStreamIp()) {
+ data.channgeStreamIp(request.getLocalName());
+ }
+ resultStream.setData(new StreamContent(wvpResult1.getData()));
}
- if (clone.getCode() == ErrorCode.SUCCESS.getCode()) {
- StreamInfo data = clone.getData().clone();
- data.channgeStreamIp(request.getLocalName());
- clone.setData(data);
- }
- return clone;
+ return resultStream;
});
+
// 褰曞儚鏌ヨ浠hannelId浣滀负deviceId鏌ヨ
resultHolder.put(key, uuid, deferredResultEx);
@@ -136,7 +132,6 @@
}
return result;
}
-
@Operation(summary = "鍋滄鐐规挱")
@Parameter(name = "deviceId", description = "璁惧鍥芥爣缂栧彿", required = true)
@@ -174,7 +169,6 @@
json.put("deviceId", deviceId);
json.put("channelId", channelId);
return json;
-
}
/**
@@ -255,11 +249,11 @@
@Parameter(name = "timeout", description = "鎺ㄦ祦瓒呮椂鏃堕棿(绉�)", required = true)
@GetMapping("/broadcast/{deviceId}/{channelId}")
@PostMapping("/broadcast/{deviceId}/{channelId}")
- public AudioBroadcastResult broadcastApi(@PathVariable String deviceId, @PathVariable String channelId, Integer timeout) {
- if (logger.isDebugEnabled()) {
- logger.debug("璇煶骞挎挱API璋冪敤");
- }
- Device device = storager.queryVideoDevice(deviceId);
+ public AudioBroadcastResult broadcastApi(@PathVariable String deviceId, @PathVariable String channelId, Integer timeout, Boolean broadcastMode) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("璇煶骞挎挱API璋冪敤");
+ }
+ Device device = storager.queryVideoDevice(deviceId);
if (device == null) {
throw new ControllerException(ErrorCode.ERROR400.getCode(), "鏈壘鍒拌澶囷細 " + deviceId);
}
@@ -267,18 +261,9 @@
throw new ControllerException(ErrorCode.ERROR400.getCode(), "鏈壘鍒伴�氶亾锛� " + channelId);
}
- return playService.audioBroadcast(device, channelId);
+ return playService.audioBroadcast(device, channelId, broadcastMode);
}
-
- @GetMapping("/1111")
- public void broadcastApi1() {
- MediaServerItem defaultMediaServer = mediaServerService.getMediaServerForMinimumLoad();
- Device device = storager.queryVideoDevice("34020000001320090001");
- playService.talk(defaultMediaServer, device, "34020000001370000001", null, null, null);
-
- }
-
@Operation(summary = "鍋滄璇煶骞挎挱")
@Parameter(name = "deviceId", description = "璁惧Id", required = true)
@@ -291,7 +276,7 @@
}
// try {
// playService.stopAudioBroadcast(deviceId, channelId);
-// } catch (InvalidArgumentException | ParseException | SsrcTransactionNotFoundException | SipException e) {
+// } catch (InvalidArgumentException | ParseException | SipException e) {
// logger.error("[鍛戒护鍙戦�佸け璐 鍋滄璇煶: {}", e.getMessage());
// throw new ControllerException(ErrorCode.ERROR100.getCode(), "鍛戒护鍙戦�佸け璐�: " + e.getMessage());
// }
--
Gitblit v1.8.0