|  | @@ -3,6 +3,8 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify
 | 
	
		
			
				|  |  |  import com.genersoft.iot.vmp.common.StreamInfo;
 | 
	
		
			
				|  |  |  import com.genersoft.iot.vmp.gb28181.bean.Device;
 | 
	
		
			
				|  |  |  import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
 | 
	
		
			
				|  |  | +import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
 | 
	
		
			
				|  |  | +import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
 | 
	
		
			
				|  |  |  import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
 | 
	
		
			
				|  |  |  import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
 | 
	
		
			
				|  |  |  import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
 | 
	
	
		
			
				|  | @@ -39,6 +41,9 @@ public class MediaStatusNotifyMessageHandler extends SIPRequestProcessorParent i
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private IRedisCatchStorage redisCatchStorage;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private VideoStreamSessionManager sessionManager;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void afterPropertiesSet() throws Exception {
 | 
	
		
			
				|  |  |          notifyMessageHandler.addHandler(cmdType, this);
 | 
	
	
		
			
				|  | @@ -61,13 +66,19 @@ public class MediaStatusNotifyMessageHandler extends SIPRequestProcessorParent i
 | 
	
		
			
				|  |  |          String NotifyType =getText(rootElement, "NotifyType");
 | 
	
		
			
				|  |  |          if (NotifyType.equals("121")){
 | 
	
		
			
				|  |  |              logger.info("[录像流]推送完毕,收到关流通知");
 | 
	
		
			
				|  |  | -            String channelId =getText(rootElement, "DeviceID");
 | 
	
		
			
				|  |  |              // 查询是设备
 | 
	
		
			
				|  |  | -            StreamInfo streamInfo = redisCatchStorage.queryDownload(device.getDeviceId(), channelId, null, callIdHeader.getCallId());
 | 
	
		
			
				|  |  | -            // 设置进度100%
 | 
	
		
			
				|  |  | -            streamInfo.setProgress(1);
 | 
	
		
			
				|  |  | -            redisCatchStorage.startDownload(streamInfo, callIdHeader.getCallId());
 | 
	
		
			
				|  |  | -            cmder.streamByeCmd(device.getDeviceId(), channelId, null, callIdHeader.getCallId());
 | 
	
		
			
				|  |  | +            StreamInfo streamInfo = redisCatchStorage.queryDownload(null, null, null, callIdHeader.getCallId());
 | 
	
		
			
				|  |  | +            if (streamInfo != null) {
 | 
	
		
			
				|  |  | +                // 设置进度100%
 | 
	
		
			
				|  |  | +                streamInfo.setProgress(1);
 | 
	
		
			
				|  |  | +                redisCatchStorage.startDownload(streamInfo, callIdHeader.getCallId());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 先从会话内查找
 | 
	
		
			
				|  |  | +            SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransaction(null, null, callIdHeader.getCallId(), null);
 | 
	
		
			
				|  |  | +            if (ssrcTransaction != null) { // 兼容海康 媒体通知 消息from字段不是设备ID的问题
 | 
	
		
			
				|  |  | +                cmder.streamByeCmd(device.getDeviceId(), ssrcTransaction.getChannelId(), null, callIdHeader.getCallId());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              // TODO 如果级联播放,需要给上级发送此通知
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          }
 |