Commit b6688baef1092c3776636f8667b590a6f2251909
Committed by
GitHub
Merge pull request #10 from lawrencehj/master
解决海康设备兼容问题等
Showing
4 changed files
with
26 additions
and
6 deletions
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 | } | ... | ... |