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 84 SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, host.getAddress());
85 85 //via
86 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 92 viaHeader.setRPort();
89 93 viaHeaders.add(viaHeader);
90 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 302 content.append("c=IN IP4 "+mediaInfo.getWanIp()+"\r\n");
303 303 content.append("t=0 0\r\n");
304 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 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 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 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 318 content.append("a=rtpmap:98 H264/90000\r\n");
314 319 content.append("a=rtpmap:97 MPEG4/90000\r\n");
  320 + content.append("a=rtpmap:96 PS/90000\r\n");
315 321 if("TCP-PASSIVE".equals(streamMode)){ // tcp被动模式
316 322 content.append("a=setup:passive\r\n");
317 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 53 Dialog dialog = evt.getDialog();
54 54 CSeqHeader cseq = (CSeqHeader) response.getHeader(CSeqHeader.NAME);
55 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 65 } catch (InvalidArgumentException | SipException e) {
60 66 e.printStackTrace();
... ...
src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java
... ... @@ -554,6 +554,10 @@ public class VideoManagerRedisStoragerImpl implements IVideoManagerStorager {
554 554 List<Object> playLeys = redis.scan(String.format("%S_*_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
555 555 deviceId,
556 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 561 if (playLeys == null || playLeys.size() == 0) return null;
558 562 return (StreamInfo)redis.get(playLeys.get(0).toString());
559 563 }
... ...