Commit b6688baef1092c3776636f8667b590a6f2251909

Authored by 648540858
Committed by GitHub
2 parents 3d2aeb89 e56fcc48

Merge pull request #10 from lawrencehj/master

解决海康设备兼容问题等
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
@@ -84,7 +84,11 @@ public class SIPRequestHeaderProvider { @@ -84,7 +84,11 @@ public class SIPRequestHeaderProvider {
84 SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, host.getAddress()); 84 SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, host.getAddress());
85 //via 85 //via
86 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 86 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
87 - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), device.getTransport(), viaTag); 87 + ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(device.getHost().getIp(), device.getHost().getPort(), device.getTransport(), viaTag);
  88 + viaHeader.setRPort();
  89 + viaHeaders.add(viaHeader);
  90 +
  91 + viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), device.getTransport(), viaTag);
88 viaHeader.setRPort(); 92 viaHeader.setRPort();
89 viaHeaders.add(viaHeader); 93 viaHeaders.add(viaHeader);
90 //from 94 //from
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -302,16 +302,22 @@ public class SIPCommander implements ISIPCommander { @@ -302,16 +302,22 @@ public class SIPCommander implements ISIPCommander {
302 content.append("c=IN IP4 "+mediaInfo.getWanIp()+"\r\n"); 302 content.append("c=IN IP4 "+mediaInfo.getWanIp()+"\r\n");
303 content.append("t=0 0\r\n"); 303 content.append("t=0 0\r\n");
304 if("TCP-PASSIVE".equals(streamMode)) { 304 if("TCP-PASSIVE".equals(streamMode)) {
305 - content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n"); 305 + content.append("m=video "+ mediaPort +" TCP/RTP/AVP 126 125 99 34 98 97 96\r\n");
306 }else if ("TCP-ACTIVE".equals(streamMode)) { 306 }else if ("TCP-ACTIVE".equals(streamMode)) {
307 - content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n"); 307 + content.append("m=video "+ mediaPort +" TCP/RTP/AVP 126 125 99 34 98 97 96\r\n");
308 }else if("UDP".equals(streamMode)) { 308 }else if("UDP".equals(streamMode)) {
309 - content.append("m=video "+ mediaPort +" RTP/AVP 96 98 97\r\n"); 309 + content.append("m=video "+ mediaPort +" RTP/AVP 126 125 99 34 98 97 96\r\n");
310 } 310 }
311 content.append("a=recvonly\r\n"); 311 content.append("a=recvonly\r\n");
312 - content.append("a=rtpmap:96 PS/90000\r\n"); 312 + content.append("a=fmtp:126 profile-level-id=42e01e\r\n");
  313 + content.append("a=rtpmap:126 H264/90000\r\n");
  314 + content.append("a=rtpmap:125 H264S/90000\r\n");
  315 + content.append("a=fmtp:125 profile-level-id=42e01e\r\n");
  316 + content.append("a=rtpmap:99 MP4V-ES/90000\r\n");
  317 + content.append("a=fmtp:99 profile-level-id=3\r\n");
313 content.append("a=rtpmap:98 H264/90000\r\n"); 318 content.append("a=rtpmap:98 H264/90000\r\n");
314 content.append("a=rtpmap:97 MPEG4/90000\r\n"); 319 content.append("a=rtpmap:97 MPEG4/90000\r\n");
  320 + content.append("a=rtpmap:96 PS/90000\r\n");
315 if("TCP-PASSIVE".equals(streamMode)){ // tcp被动模式 321 if("TCP-PASSIVE".equals(streamMode)){ // tcp被动模式
316 content.append("a=setup:passive\r\n"); 322 content.append("a=setup:passive\r\n");
317 content.append("a=connection:new\r\n"); 323 content.append("a=connection:new\r\n");
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java
@@ -53,8 +53,14 @@ public class InviteResponseProcessor implements ISIPResponseProcessor { @@ -53,8 +53,14 @@ public class InviteResponseProcessor implements ISIPResponseProcessor {
53 Dialog dialog = evt.getDialog(); 53 Dialog dialog = evt.getDialog();
54 CSeqHeader cseq = (CSeqHeader) response.getHeader(CSeqHeader.NAME); 54 CSeqHeader cseq = (CSeqHeader) response.getHeader(CSeqHeader.NAME);
55 Request reqAck = dialog.createAck(cseq.getSeqNumber()); 55 Request reqAck = dialog.createAck(cseq.getSeqNumber());
56 - dialog.sendAck(reqAck);  
57 56
  57 + SipURI requestURI = (SipURI) reqAck.getRequestURI();
  58 + ViaHeader viaHeader = (ViaHeader) response.getHeader(ViaHeader.NAME);
  59 + requestURI.setHost(viaHeader.getHost());
  60 + requestURI.setPort(viaHeader.getPort());
  61 + reqAck.setRequestURI(requestURI);
  62 +
  63 + dialog.sendAck(reqAck);
58 } 64 }
59 } catch (InvalidArgumentException | SipException e) { 65 } catch (InvalidArgumentException | SipException e) {
60 e.printStackTrace(); 66 e.printStackTrace();
src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java
@@ -554,6 +554,10 @@ public class VideoManagerRedisStoragerImpl implements IVideoManagerStorager { @@ -554,6 +554,10 @@ public class VideoManagerRedisStoragerImpl implements IVideoManagerStorager {
554 List<Object> playLeys = redis.scan(String.format("%S_*_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX, 554 List<Object> playLeys = redis.scan(String.format("%S_*_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
555 deviceId, 555 deviceId,
556 code)); 556 code));
  557 + if (playLeys == null || playLeys.size() == 0) {
  558 + playLeys = redis.scan(String.format("%S_*_*_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
  559 + deviceId));
  560 + }
557 if (playLeys == null || playLeys.size() == 0) return null; 561 if (playLeys == null || playLeys.size() == 0) return null;
558 return (StreamInfo)redis.get(playLeys.get(0).toString()); 562 return (StreamInfo)redis.get(playLeys.get(0).toString());
559 } 563 }