| 
					
				 | 
			
			
				@@ -1,6 +1,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson2.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.genersoft.iot.vmp.common.StreamInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.conf.DynamicTask; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.conf.UserSetting; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.gb28181.bean.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -454,21 +455,17 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         sendRtpItem.setPlayType(InviteStreamType.PLAY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        SsrcTransaction playTransaction = sessionManager.getSsrcTransaction(device.getDeviceId(), channelId, "play", null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (playTransaction != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            Boolean streamReady = zlmrtpServerFactory.isStreamReady(mediaServerItem, "rtp", playTransaction.getStream()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                        SsrcTransaction playTransaction = sessionManager.getSsrcTransaction(device.getDeviceId(), channelId, "play", null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(device.getDeviceId(), channelId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (streamInfo != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Boolean streamReady = zlmrtpServerFactory.isStreamReady(mediaServerItem, streamInfo.getApp(), streamInfo.getStream()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (!streamReady) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                boolean hasRtpServer = mediaServerService.checkRtpServer(mediaServerItem, "rtp", playTransaction.getStream()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (hasRtpServer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    logger.info("[上级点播]已经开启rtpServer但是尚未收到流,开启监听流的到来"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", playTransaction.getStream(), true, "rtsp", mediaServerItem.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    zlmHttpHookSubscribe.addSubscribe(hookSubscribe, hookEvent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    playTransaction = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                redisCatchStorage.stopPlay(streamInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                streamInfo = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (playTransaction == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (streamInfo == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             String streamId = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (mediaServerItem.isRtpEnable()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 streamId = String.format("%s_%s", device.getDeviceId(), channelId); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -488,7 +485,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             // 当前系统作为下级平台使用,当上级平台点播时不携带ssrc时,并且设备在当前系统中已经点播了。这个时候需要重新给生成一个ssrc,不使用默认的"0000000000"。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             sendRtpItem.setSsrc(ssrc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            sendRtpItem.setStreamId(playTransaction.getStream()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            sendRtpItem.setStreamId(streamInfo.getStream()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             // 写入redis, 超时时回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             redisCatchStorage.updateSendRTPSever(sendRtpItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             JSONObject jsonObject = new JSONObject(); 
			 |