From c5f2aba9b20089f184ce175b58a33a881ea9e0b1 Mon Sep 17 00:00:00 2001 From: panlinlin <648540858@qq.com> Date: 星期五, 16 四月 2021 18:23:13 +0800 Subject: [PATCH] 修复 流已经关闭后,再次调用关闭流的接口,返回超时 --- src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java | 32 ++++++++++++++++++++------------ 1 files changed, 20 insertions(+), 12 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 f8b9350..b6c0dfc 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 @@ -8,34 +8,42 @@ /** * @Description:瑙嗛娴乻ession绠$悊鍣紝绠$悊瑙嗛棰勮銆侀瑙堝洖鏀剧殑閫氫俊鍙ユ焺 - * @author: songww + * @author: swwheihei * @date: 2020骞�5鏈�13鏃� 涓嬪崍4:03:02 */ @Component public class VideoStreamSessionManager { private ConcurrentHashMap<String, ClientTransaction> sessionMap = new ConcurrentHashMap<>(); + private ConcurrentHashMap<String, String> ssrcMap = new ConcurrentHashMap<>(); + private ConcurrentHashMap<String, String> streamIdMap = new ConcurrentHashMap<>(); public String createPlaySsrc(){ - String ssrc = SsrcUtil.getPlaySsrc(); - return ssrc; + return SsrcUtil.getPlaySsrc(); } public String createPlayBackSsrc(){ - String ssrc = SsrcUtil.getPlayBackSsrc(); - return ssrc; + return SsrcUtil.getPlayBackSsrc(); } - public void put(String ssrc,ClientTransaction transaction){ - sessionMap.put(ssrc, transaction); + public void put(String deviceId, String channelId ,String ssrc, String streamId, ClientTransaction transaction){ + sessionMap.put(deviceId + "_" + channelId, transaction); + ssrcMap.put(deviceId + "_" + channelId, ssrc); + streamIdMap.put(deviceId + "_" + channelId, streamId); } - public ClientTransaction get(String ssrc){ - return sessionMap.get(ssrc); + public ClientTransaction getTransaction(String deviceId, String channelId){ + return sessionMap.get(deviceId + "_" + channelId); + } + + public String getStreamId(String deviceId, String channelId){ + return streamIdMap.get(deviceId + "_" + channelId); } - public void remove(String ssrc) { - sessionMap.remove(ssrc); - SsrcUtil.releaseSsrc(ssrc); + public void remove(String deviceId, String channelId) { + sessionMap.remove(deviceId + "_" + channelId); + SsrcUtil.releaseSsrc(ssrcMap.get(deviceId + "_" + channelId)); + ssrcMap.remove(deviceId + "_" + channelId); + streamIdMap.remove(deviceId + "_" + channelId); } } -- Gitblit v1.8.0