From 0e692512812a2c0a0c62e97b34bf7519ca4f9f58 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 15 三月 2022 11:44:11 +0800
Subject: [PATCH] 修复多平台同时导入时的bug
---
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java | 45 ++++++++++++++++++++++-----------------------
1 files changed, 22 insertions(+), 23 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 c22a558..16e8eec 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
@@ -88,7 +88,7 @@
// 鑾峰彇鍙敤鐨剒lm
Device device = storager.queryVideoDevice(deviceId);
MediaServerItem newMediaServerItem = playService.getNewMediaServerItem(device);
- PlayResult playResult = playService.play(newMediaServerItem, deviceId, channelId, null, null);
+ PlayResult playResult = playService.play(newMediaServerItem, deviceId, channelId, null, null, null);
return playResult.getResult();
}
@@ -110,26 +110,25 @@
String key = DeferredResultHolder.CALLBACK_CMD_STOP + deviceId + channelId;
resultHolder.put(key, uuid, result);
Device device = storager.queryVideoDevice(deviceId);
- cmder.streamByeCmd(deviceId, channelId, (event) -> {
- StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId);
- if (streamInfo == null) {
- RequestMessage msg = new RequestMessage();
- msg.setId(uuid);
- msg.setKey(key);
- msg.setData("鐐规挱鏈壘鍒�");
- resultHolder.invokeAllResult(msg);
- storager.stopPlay(deviceId, channelId);
- }else {
- redisCatchStorage.stopPlay(streamInfo);
- storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
- RequestMessage msg = new RequestMessage();
- msg.setId(uuid);
- msg.setKey(key);
- //Response response = event.getResponse();
- msg.setData(String.format("success"));
- resultHolder.invokeAllResult(msg);
- }
- mediaServerService.closeRTPServer(device, channelId);
+ StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId);
+ if (streamInfo == null) {
+ RequestMessage msg = new RequestMessage();
+ msg.setId(uuid);
+ msg.setKey(key);
+ msg.setData("鐐规挱鏈壘鍒�");
+ resultHolder.invokeAllResult(msg);
+ storager.stopPlay(deviceId, channelId);
+ return result;
+ }
+ cmder.streamByeCmd(deviceId, channelId, streamInfo.getStream(), null, (event) -> {
+ redisCatchStorage.stopPlay(streamInfo);
+ storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
+ RequestMessage msg = new RequestMessage();
+ msg.setId(uuid);
+ msg.setKey(key);
+ //Response response = event.getResponse();
+ msg.setData(String.format("success"));
+ resultHolder.invokeAllResult(msg);
});
if (deviceId != null || channelId != null) {
@@ -175,7 +174,7 @@
public ResponseEntity<String> playConvert(@PathVariable String streamId) {
StreamInfo streamInfo = redisCatchStorage.queryPlayByStreamId(streamId);
if (streamInfo == null) {
- streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId);
+ streamInfo = redisCatchStorage.queryPlayback(null, null, streamId, null);
}
if (streamInfo == null) {
logger.warn("瑙嗛杞爜API璋冪敤澶辫触锛�, 瑙嗛娴佸凡缁忓仠姝�!");
@@ -329,7 +328,7 @@
jsonObject.put("deviceId", transaction.getDeviceId());
jsonObject.put("channelId", transaction.getChannelId());
jsonObject.put("ssrc", transaction.getSsrc());
- jsonObject.put("streamId", transaction.getStreamId());
+ jsonObject.put("streamId", transaction.getStream());
objects.add(jsonObject);
}
--
Gitblit v1.8.0