From 86a701ce885871d2468ec31eb13be5595673a01b Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 28 三月 2024 10:24:13 +0800
Subject: [PATCH] Merge branch 'master' into dev/abl支持
---
src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java | 42 ++++++++++++++++++++++++++++++++++++++++--
1 files changed, 40 insertions(+), 2 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 c46e38a..24d4ef3 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
@@ -75,6 +75,33 @@
return (SsrcTransaction)redisTemplate.opsForValue().get(scanResult.get(0));
}
+ public SsrcTransaction getSsrcTransactionByCallId(String callId){
+
+ if (ObjectUtils.isEmpty(callId)) {
+ return null;
+ }
+ String key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_*_*_" + callId+ "_*";
+ List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
+ if (!scanResult.isEmpty()) {
+ return (SsrcTransaction)redisTemplate.opsForValue().get(scanResult.get(0));
+ }else {
+ key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_*_*_play_*";
+ scanResult = RedisUtil.scan(redisTemplate, key);
+ if (scanResult.isEmpty()) {
+ return null;
+ }
+ for (Object keyObj : scanResult) {
+ SsrcTransaction ssrcTransaction = (SsrcTransaction)redisTemplate.opsForValue().get(keyObj);
+ if (ssrcTransaction.getSipTransactionInfo() != null &&
+ ssrcTransaction.getSipTransactionInfo().getCallId().equals(callId)) {
+ return ssrcTransaction;
+ }
+ }
+ return null;
+ }
+
+ }
+
public List<SsrcTransaction> getSsrcTransactionForAll(String deviceId, String channelId, String callId, String stream){
if (ObjectUtils.isEmpty(deviceId)) {
deviceId ="*";
@@ -117,8 +144,19 @@
}
public void remove(String deviceId, String channelId, String stream) {
- SsrcTransaction ssrcTransaction = getSsrcTransaction(deviceId, channelId, null, stream);
- if (ssrcTransaction == null) {
+ List<SsrcTransaction> ssrcTransactionList = getSsrcTransactionForAll(deviceId, channelId, null, stream);
+ if (ssrcTransactionList == null || ssrcTransactionList.isEmpty()) {
+ return;
+ }
+ for (SsrcTransaction ssrcTransaction : ssrcTransactionList) {
+ redisTemplate.delete(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_"
+ + deviceId + "_" + channelId + "_" + ssrcTransaction.getCallId() + "_" + ssrcTransaction.getStream());
+ }
+ }
+
+ public void removeByCallId(String deviceId, String channelId, String callId) {
+ SsrcTransaction ssrcTransaction = getSsrcTransaction(deviceId, channelId, callId, null);
+ if (ssrcTransaction == null ) {
return;
}
redisTemplate.delete(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_"
--
Gitblit v1.8.0