Commit 5bf87ca330b446695de7e9d8149ec53e79a453c5

Authored by 648540858
Committed by GitHub
2 parents bd4598e6 7055c531

Merge pull request #1270 from hexq/playback

Playback
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
@@ -30,8 +30,10 @@ import com.genersoft.iot.vmp.storager.IVideoManagerStorage; @@ -30,8 +30,10 @@ import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
30 import com.genersoft.iot.vmp.utils.DateUtil; 30 import com.genersoft.iot.vmp.utils.DateUtil;
31 import gov.nist.javax.sdp.TimeDescriptionImpl; 31 import gov.nist.javax.sdp.TimeDescriptionImpl;
32 import gov.nist.javax.sdp.fields.TimeField; 32 import gov.nist.javax.sdp.fields.TimeField;
  33 +import gov.nist.javax.sdp.fields.URIField;
33 import gov.nist.javax.sip.message.SIPRequest; 34 import gov.nist.javax.sip.message.SIPRequest;
34 import gov.nist.javax.sip.message.SIPResponse; 35 import gov.nist.javax.sip.message.SIPResponse;
  36 +import org.apache.commons.lang3.StringUtils;
35 import org.slf4j.Logger; 37 import org.slf4j.Logger;
36 import org.slf4j.LoggerFactory; 38 import org.slf4j.LoggerFactory;
37 import org.springframework.beans.factory.InitializingBean; 39 import org.springframework.beans.factory.InitializingBean;
@@ -133,7 +135,20 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements @@ -133,7 +135,20 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
133 // Invite Request消息实现,此消息一般为级联消息,上级给下级发送请求视频指令 135 // Invite Request消息实现,此消息一般为级联消息,上级给下级发送请求视频指令
134 try { 136 try {
135 SIPRequest request = (SIPRequest)evt.getRequest(); 137 SIPRequest request = (SIPRequest)evt.getRequest();
136 - String channelId = SipUtils.getChannelIdFromRequest(request); 138 + String channelIdFromSub = SipUtils.getChannelIdFromRequest(request);
  139 +
  140 + // 解析sdp消息, 使用jainsip 自带的sdp解析方式
  141 + String contentString = new String(request.getRawContent());
  142 + Gb28181Sdp gb28181Sdp = SipUtils.parseSDP(contentString);
  143 + SessionDescription sdp = gb28181Sdp.getBaseSdb();
  144 + String sessionName = sdp.getSessionName().getValue();
  145 + String channelIdFromSdp = null;
  146 + if(StringUtils.equalsIgnoreCase("Playback", sessionName)){
  147 + URIField uriField = (URIField)sdp.getURI();
  148 + channelIdFromSdp = uriField.getURI().split(":")[0];
  149 + }
  150 + final String channelId = StringUtils.isNotBlank(channelIdFromSdp) ? channelIdFromSdp : channelIdFromSub;
  151 +
137 String requesterId = SipUtils.getUserIdFromFromHeader(request); 152 String requesterId = SipUtils.getUserIdFromFromHeader(request);
138 CallIdHeader callIdHeader = (CallIdHeader) request.getHeader(CallIdHeader.NAME); 153 CallIdHeader callIdHeader = (CallIdHeader) request.getHeader(CallIdHeader.NAME);
139 if (requesterId == null || channelId == null) { 154 if (requesterId == null || channelId == null) {
@@ -242,12 +257,6 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements @@ -242,12 +257,6 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
242 } 257 }
243 return; 258 return;
244 } 259 }
245 - // 解析sdp消息, 使用jainsip 自带的sdp解析方式  
246 - String contentString = new String(request.getRawContent());  
247 -  
248 - Gb28181Sdp gb28181Sdp = SipUtils.parseSDP(contentString);  
249 - SessionDescription sdp = gb28181Sdp.getBaseSdb();  
250 - String sessionName = sdp.getSessionName().getValue();  
251 260
252 Long startTime = null; 261 Long startTime = null;
253 Long stopTime = null; 262 Long stopTime = null;
src/main/java/com/genersoft/iot/vmp/service/impl/PlatformChannelServiceImpl.java
@@ -136,7 +136,7 @@ public class PlatformChannelServiceImpl implements IPlatformChannelService { @@ -136,7 +136,7 @@ public class PlatformChannelServiceImpl implements IPlatformChannelService {
136 deviceChannelList.add(deviceChannel); 136 deviceChannelList.add(deviceChannel);
137 } 137 }
138 return deviceChannelList; 138 return deviceChannelList;
139 - } else if (catalog == null || !catalogId.equals(platform.getDeviceGBId())) { 139 + } else if (catalog == null && !catalogId.equals(platform.getDeviceGBId())) {
140 logger.warn("未查询到目录{}的信息", catalogId); 140 logger.warn("未查询到目录{}的信息", catalogId);
141 return null; 141 return null;
142 } 142 }