64850858
2021-06-07 df11956c3c203434d3ef54955a502c466f1382dd
src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
@@ -8,34 +8,44 @@
/**    
 * @Description:视频流session管理器,管理视频预览、预览回放的通信句柄 
 * @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);
      if (ssrcMap.get(deviceId + "_" + channelId) != null) {
         SsrcUtil.releaseSsrc(ssrcMap.get(deviceId + "_" + channelId));
      }
      ssrcMap.remove(deviceId + "_" + channelId);
      streamIdMap.remove(deviceId + "_" + channelId);
   }
}