| 
					
				 | 
			
			
				@@ -41,6 +41,7 @@ import gov.nist.javax.sdp.fields.TimeField; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import gov.nist.javax.sdp.fields.URIField; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import gov.nist.javax.sip.message.SIPRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import gov.nist.javax.sip.message.SIPResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.lang3.ObjectUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -407,12 +408,15 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //     * 2 推流中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         sendRtpItem.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         redisCatchStorage.updateSendRTPSever(sendRtpItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        String sdpIp = mediaServerItemInUSe.getSdpIp(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (!ObjectUtils.isEmpty(platform.getSendStreamIp())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            sdpIp = platform.getSendStreamIp(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         StringBuffer content = new StringBuffer(200); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         content.append("v=0\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        content.append("o=" + channelId + " 0 0 IN IP4 " + mediaServerItemInUSe.getSdpIp() + "\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        content.append("o=" + channelId + " 0 0 IN IP4 " + sdpIp + "\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         content.append("s=" + sessionName + "\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        content.append("c=IN IP4 " + mediaServerItemInUSe.getSdpIp() + "\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        content.append("c=IN IP4 " + sdpIp + "\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if ("Playback".equalsIgnoreCase(sessionName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             content.append("t=" + finalStartTime + " " + finalStopTime + "\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -578,14 +582,20 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if ("push".equals(gbStream.getStreamType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (streamPushItem != null && streamPushItem.isPushIng()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            // 推流状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            pushStream(evt, request, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            // 未推流 拉起 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            notifyStreamOnline(evt, request, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (streamPushItem != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            // 从redis查询是否正在接收这个推流 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            OnStreamChangedHookParam pushListItem = redisCatchStorage.getPushListItem(gbStream.getApp(), gbStream.getStream()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (pushListItem != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                StreamPushItem transform = streamPushService.transform(pushListItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                transform.setSelf(userSetting.getServerId().equals(pushListItem.getSeverId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                // 推流状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                pushStream(evt, request, gbStream, transform, platform, callIdHeader, mediaServerItem, port, tcpActive, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                // 未推流 拉起 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                notifyStreamOnline(evt, request, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } else if ("proxy".equals(gbStream.getStreamType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (null != proxyByAppAndStream) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -903,11 +913,15 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public SIPResponse sendStreamAck(MediaServer mediaServerItem, SIPRequest request, SendRtpItem sendRtpItem, ParentPlatform platform, RequestEvent evt) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sdpIp = mediaServerItem.getSdpIp(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!ObjectUtils.isEmpty(platform.getSendStreamIp())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sdpIp = platform.getSendStreamIp(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         StringBuffer content = new StringBuffer(200); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         content.append("v=0\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        content.append("o=" + sendRtpItem.getChannelId() + " 0 0 IN IP4 " + mediaServerItem.getSdpIp() + "\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content.append("o=" + sendRtpItem.getChannelId() + " 0 0 IN IP4 " + sdpIp + "\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         content.append("s=Play\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content.append("c=IN IP4 " + sdpIp + "\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         content.append("t=0 0\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 非严格模式端口不统一, 增加兼容性,修改为一个不为0的端口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         int localPort = sendRtpItem.getLocalPort(); 
			 |