From a2d93fce811acc83ad5ff0b4a93403db22795a10 Mon Sep 17 00:00:00 2001
From: winfed <chinesezwf@gmail.com>
Date: 星期五, 09 六月 2023 15:19:18 +0800
Subject: [PATCH] fix:修复拉流代理配置展示问题:音频、录制、无人观看
---
src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java | 31 +++++++++++++++++++++++++------
1 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java
index f067cf0..2fb6816 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java
@@ -6,7 +6,7 @@
import com.genersoft.iot.vmp.common.InviteSessionType;
import com.genersoft.iot.vmp.common.VideoManagerConstants;
import com.genersoft.iot.vmp.service.IInviteStreamService;
-import com.genersoft.iot.vmp.service.bean.InviteErrorCallback;
+import com.genersoft.iot.vmp.service.bean.ErrorCallback;
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -24,7 +24,7 @@
private final Logger logger = LoggerFactory.getLogger(InviteStreamServiceImpl.class);
- private final Map<String, List<InviteErrorCallback<Object>>> inviteErrorCallbackMap = new ConcurrentHashMap<>();
+ private final Map<String, List<ErrorCallback<Object>>> inviteErrorCallbackMap = new ConcurrentHashMap<>();
@Autowired
private RedisTemplate<Object, Object> redisTemplate;
@@ -141,9 +141,9 @@
}
@Override
- public void once(InviteSessionType type, String deviceId, String channelId, String stream, InviteErrorCallback<Object> callback) {
+ public void once(InviteSessionType type, String deviceId, String channelId, String stream, ErrorCallback<Object> callback) {
String key = buildKey(type, deviceId, channelId, stream);
- List<InviteErrorCallback<Object>> callbacks = inviteErrorCallbackMap.get(key);
+ List<ErrorCallback<Object>> callbacks = inviteErrorCallbackMap.get(key);
if (callbacks == null) {
callbacks = new CopyOnWriteArrayList<>();
inviteErrorCallbackMap.put(key, callbacks);
@@ -155,11 +155,11 @@
@Override
public void call(InviteSessionType type, String deviceId, String channelId, String stream, int code, String msg, Object data) {
String key = buildKey(type, deviceId, channelId, stream);
- List<InviteErrorCallback<Object>> callbacks = inviteErrorCallbackMap.get(key);
+ List<ErrorCallback<Object>> callbacks = inviteErrorCallbackMap.get(key);
if (callbacks == null) {
return;
}
- for (InviteErrorCallback<Object> callback : callbacks) {
+ for (ErrorCallback<Object> callback : callbacks) {
callback.run(code, msg, data);
}
inviteErrorCallbackMap.remove(key);
@@ -179,4 +179,23 @@
public void clearInviteInfo(String deviceId) {
removeInviteInfo(null, deviceId, null, null);
}
+
+ @Override
+ public int getStreamInfoCount(String mediaServerId) {
+ int count = 0;
+ String key = VideoManagerConstants.INVITE_PREFIX + "_*_*_*_*";
+ List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
+ if (scanResult.size() == 0) {
+ return 0;
+ }else {
+ for (Object keyObj : scanResult) {
+ String keyStr = (String) keyObj;
+ InviteInfo inviteInfo = (InviteInfo) redisTemplate.opsForValue().get(keyStr);
+ if (inviteInfo != null && inviteInfo.getStreamInfo() != null && inviteInfo.getStreamInfo().getMediaServerId().equals(mediaServerId)) {
+ count++;
+ }
+ }
+ }
+ return count;
+ }
}
--
Gitblit v1.8.0