From e752dbd1a7fdfbb2063c59470b41a8e5dd546c3d Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 16 三月 2022 10:12:31 +0800
Subject: [PATCH] 修复推流关联平台的bug again
---
src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java | 24 ++++++++++++++++++++++++
1 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java b/src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
index 3e9f28a..ba8f24c 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
@@ -86,6 +86,15 @@
return dialog;
}
+ public SIPDialog getDialogByCallId(String deviceId, String channelId, String callID){
+ SsrcTransaction ssrcTransaction = getSsrcTransaction(deviceId, channelId, callID, null);
+ if (ssrcTransaction == null) return null;
+ byte[] dialogByteArray = ssrcTransaction.getDialog();
+ if (dialogByteArray == null) return null;
+ SIPDialog dialog = (SIPDialog)SerializeUtils.deSerialize(dialogByteArray);
+ return dialog;
+ }
+
public SsrcTransaction getSsrcTransaction(String deviceId, String channelId, String callId, String stream){
if (StringUtils.isEmpty(callId)) callId ="*";
if (StringUtils.isEmpty(stream)) stream ="*";
@@ -95,6 +104,21 @@
return (SsrcTransaction)redisUtil.get((String) scanResult.get(0));
}
+ public List<SsrcTransaction> getSsrcTransactionForAll(String deviceId, String channelId, String callId, String stream){
+ if (StringUtils.isEmpty(deviceId)) deviceId ="*";
+ if (StringUtils.isEmpty(channelId)) channelId ="*";
+ if (StringUtils.isEmpty(callId)) callId ="*";
+ if (StringUtils.isEmpty(stream)) stream ="*";
+ String key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetup.getServerId() + "_" + deviceId + "_" + channelId + "_" + callId+ "_" + stream;
+ List<Object> scanResult = redisUtil.scan(key);
+ if (scanResult.size() == 0) return null;
+ List<SsrcTransaction> result = new ArrayList<>();
+ for (Object keyObj : scanResult) {
+ result.add((SsrcTransaction)redisUtil.get((String) keyObj));
+ }
+ return result;
+ }
+
public String getMediaServerId(String deviceId, String channelId, String stream){
SsrcTransaction ssrcTransaction = getSsrcTransaction(deviceId, channelId, null, stream);
if (ssrcTransaction == null) return null;
--
Gitblit v1.8.0