panlinlin
2021-05-08 e48fa711a3664bece9b3e58840a75fe7c05bc47c
src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
@@ -15,6 +15,8 @@
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(){
      return SsrcUtil.getPlaySsrc();
@@ -24,16 +26,26 @@
      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);
      if (ssrcMap.get(deviceId + "_" + channelId) != null) {
         SsrcUtil.releaseSsrc(ssrcMap.get(deviceId + "_" + channelId));
      }
      ssrcMap.remove(deviceId + "_" + channelId);
      streamIdMap.remove(deviceId + "_" + channelId);
   }
}