Commit 23710f1c649354fb21317dd710a4b2ec53688a44
1 parent
d340a37a
优化多网卡下的localIp获取
Showing
14 changed files
with
193 additions
and
153 deletions
src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java
| ... | ... | @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | 5 | import java.io.Serializable; |
| 6 | 6 | |
| 7 | 7 | @Schema(description = "流信息") |
| 8 | -public class StreamInfo implements Serializable { | |
| 8 | +public class StreamInfo implements Serializable, Cloneable{ | |
| 9 | 9 | |
| 10 | 10 | @Schema(description = "应用名") |
| 11 | 11 | private String app; |
| ... | ... | @@ -463,4 +463,15 @@ public class StreamInfo implements Serializable { |
| 463 | 463 | public void setTransactionInfo(TransactionInfo transactionInfo) { |
| 464 | 464 | this.transactionInfo = transactionInfo; |
| 465 | 465 | } |
| 466 | + | |
| 467 | + @Override | |
| 468 | + public StreamInfo clone() { | |
| 469 | + StreamInfo instance = null; | |
| 470 | + try{ | |
| 471 | + instance = (StreamInfo)super.clone(); | |
| 472 | + }catch(CloneNotSupportedException e) { | |
| 473 | + e.printStackTrace(); | |
| 474 | + } | |
| 475 | + return instance; | |
| 476 | + } | |
| 466 | 477 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
| ... | ... | @@ -3,6 +3,7 @@ package com.genersoft.iot.vmp.conf; |
| 3 | 3 | |
| 4 | 4 | import org.springframework.boot.context.properties.ConfigurationProperties; |
| 5 | 5 | import org.springframework.stereotype.Component; |
| 6 | +import org.springframework.util.ObjectUtils; | |
| 6 | 7 | |
| 7 | 8 | @Component |
| 8 | 9 | @ConfigurationProperties(prefix = "sip", ignoreInvalidFields = true) |
| ... | ... | @@ -92,4 +93,10 @@ public class SipConfig { |
| 92 | 93 | public void setAlarm(boolean alarm) { |
| 93 | 94 | this.alarm = alarm; |
| 94 | 95 | } |
| 96 | + | |
| 97 | + public void getLocalIp(String deviceLocalIp) { | |
| 98 | + if (ObjectUtils.isEmpty(deviceLocalIp)) { | |
| 99 | + | |
| 100 | + } | |
| 101 | + } | |
| 95 | 102 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
| ... | ... | @@ -72,6 +72,7 @@ public class SipLayer implements CommandLineRunner { |
| 72 | 72 | try { |
| 73 | 73 | ListeningPoint tcpListeningPoint = sipStack.createListeningPoint(monitorIp, port, "TCP"); |
| 74 | 74 | SipProviderImpl tcpSipProvider = (SipProviderImpl)sipStack.createSipProvider(tcpListeningPoint); |
| 75 | + | |
| 75 | 76 | tcpSipProvider.setDialogErrorsAutomaticallyHandled(); |
| 76 | 77 | tcpSipProvider.addSipListener(sipProcessorObserver); |
| 77 | 78 | tcpSipProviderMap.put(monitorIp, tcpSipProvider); |
| ... | ... | @@ -134,4 +135,11 @@ public class SipLayer implements CommandLineRunner { |
| 134 | 135 | } |
| 135 | 136 | return tcpSipProviderMap.get(ip); |
| 136 | 137 | } |
| 138 | + | |
| 139 | + public String getLocalIp(String deviceLocalIp) { | |
| 140 | + if (!ObjectUtils.isEmpty(deviceLocalIp)) { | |
| 141 | + return deviceLocalIp; | |
| 142 | + } | |
| 143 | + return getUdpSipProvider().getListeningPoint().getIPAddress(); | |
| 144 | + } | |
| 137 | 145 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
| ... | ... | @@ -106,11 +106,27 @@ public class SIPSender { |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | 108 | public CallIdHeader getNewCallIdHeader(String ip, String transport){ |
| 109 | - if (ObjectUtils.isEmpty(ip) || ObjectUtils.isEmpty(transport)) { | |
| 110 | - return transport.equalsIgnoreCase("TCP") ? sipLayer.getTcpSipProvider().getNewCallId() | |
| 111 | - : sipLayer.getUdpSipProvider().getNewCallId(); | |
| 109 | + if (ObjectUtils.isEmpty(transport)) { | |
| 110 | + return sipLayer.getUdpSipProvider().getNewCallId(); | |
| 111 | + } | |
| 112 | + SipProviderImpl sipProvider; | |
| 113 | + if (ObjectUtils.isEmpty(ip)) { | |
| 114 | + sipProvider = transport.equalsIgnoreCase("TCP") ? sipLayer.getTcpSipProvider() | |
| 115 | + : sipLayer.getUdpSipProvider(); | |
| 116 | + }else { | |
| 117 | + sipProvider = transport.equalsIgnoreCase("TCP") ? sipLayer.getTcpSipProvider(ip) | |
| 118 | + : sipLayer.getUdpSipProvider(ip); | |
| 119 | + } | |
| 120 | + | |
| 121 | + if (sipProvider == null) { | |
| 122 | + sipProvider = sipLayer.getUdpSipProvider(); | |
| 123 | + } | |
| 124 | + | |
| 125 | + if (sipProvider != null) { | |
| 126 | + return sipProvider.getNewCallId(); | |
| 127 | + }else { | |
| 128 | + logger.warn("[新建CallIdHeader失败], ip={}, transport={}", ip, transport); | |
| 129 | + return null; | |
| 112 | 130 | } |
| 113 | - return transport.equalsIgnoreCase("TCP") ? sipLayer.getTcpSipProvider(ip).getNewCallId() | |
| 114 | - : sipLayer.getUdpSipProvider(ip).getNewCallId(); | |
| 115 | 131 | } |
| 116 | 132 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java
| 1 | 1 | package com.genersoft.iot.vmp.gb28181.transmit.callback; |
| 2 | 2 | |
| 3 | -import com.alibaba.fastjson2.JSON; | |
| 4 | 3 | import com.genersoft.iot.vmp.vmanager.bean.DeferredResultEx; |
| 5 | 4 | import org.springframework.stereotype.Component; |
| 6 | 5 | import org.springframework.util.ObjectUtils; |
| ... | ... | @@ -130,23 +129,26 @@ public class DeferredResultHolder { |
| 130 | 129 | if (deferredResultMap == null) { |
| 131 | 130 | return; |
| 132 | 131 | } |
| 133 | - Set<String> ids = deferredResultMap.keySet(); | |
| 134 | - for (String id : ids) { | |
| 135 | - DeferredResultEx result = deferredResultMap.get(id); | |
| 136 | - if (result == null) { | |
| 132 | + synchronized (this) { | |
| 133 | + deferredResultMap = map.get(msg.getKey()); | |
| 134 | + if (deferredResultMap == null) { | |
| 137 | 135 | return; |
| 138 | 136 | } |
| 139 | - if (result.getFilter() != null) { | |
| 140 | - Object handler = result.getFilter().handler(msg.getData()); | |
| 141 | - System.out.println(JSON.toJSONString(handler)); | |
| 142 | - result.getDeferredResult().setResult(handler); | |
| 143 | - }else { | |
| 144 | - result.getDeferredResult().setResult(msg.getData()); | |
| 145 | - } | |
| 137 | + Set<String> ids = deferredResultMap.keySet(); | |
| 138 | + for (String id : ids) { | |
| 139 | + DeferredResultEx result = deferredResultMap.get(id); | |
| 140 | + if (result == null) { | |
| 141 | + return; | |
| 142 | + } | |
| 143 | + if (result.getFilter() != null) { | |
| 144 | + Object handler = result.getFilter().handler(msg.getData()); | |
| 145 | + result.getDeferredResult().setResult(handler); | |
| 146 | + }else { | |
| 147 | + result.getDeferredResult().setResult(msg.getData()); | |
| 148 | + } | |
| 146 | 149 | |
| 150 | + } | |
| 151 | + map.remove(msg.getKey()); | |
| 147 | 152 | } |
| 148 | - map.remove(msg.getKey()); | |
| 149 | 153 | } |
| 150 | - | |
| 151 | - | |
| 152 | 154 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
| 1 | 1 | package com.genersoft.iot.vmp.gb28181.transmit.cmd; |
| 2 | 2 | |
| 3 | -import java.text.ParseException; | |
| 4 | -import java.util.ArrayList; | |
| 5 | - | |
| 6 | -import javax.sip.*; | |
| 7 | -import javax.sip.address.Address; | |
| 8 | -import javax.sip.address.SipURI; | |
| 9 | -import javax.sip.header.*; | |
| 10 | -import javax.sip.message.Request; | |
| 11 | - | |
| 3 | +import com.genersoft.iot.vmp.conf.SipConfig; | |
| 12 | 4 | import com.genersoft.iot.vmp.gb28181.SipLayer; |
| 5 | +import com.genersoft.iot.vmp.gb28181.bean.Device; | |
| 13 | 6 | import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo; |
| 14 | 7 | import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; |
| 15 | 8 | import com.genersoft.iot.vmp.gb28181.utils.SipUtils; |
| ... | ... | @@ -20,8 +13,15 @@ import gov.nist.javax.sip.message.SIPResponse; |
| 20 | 13 | import org.springframework.beans.factory.annotation.Autowired; |
| 21 | 14 | import org.springframework.stereotype.Component; |
| 22 | 15 | |
| 23 | -import com.genersoft.iot.vmp.conf.SipConfig; | |
| 24 | -import com.genersoft.iot.vmp.gb28181.bean.Device; | |
| 16 | +import javax.sip.InvalidArgumentException; | |
| 17 | +import javax.sip.PeerUnavailableException; | |
| 18 | +import javax.sip.SipException; | |
| 19 | +import javax.sip.address.Address; | |
| 20 | +import javax.sip.address.SipURI; | |
| 21 | +import javax.sip.header.*; | |
| 22 | +import javax.sip.message.Request; | |
| 23 | +import java.text.ParseException; | |
| 24 | +import java.util.ArrayList; | |
| 25 | 25 | |
| 26 | 26 | /** |
| 27 | 27 | * @description:摄像头命令request创造器 TODO 冗余代码太多待优化 |
| ... | ... | @@ -52,7 +52,7 @@ public class SIPRequestHeaderProvider { |
| 52 | 52 | SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress()); |
| 53 | 53 | // via |
| 54 | 54 | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); |
| 55 | - ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(device.getLocalIp(), sipConfig.getPort(), device.getTransport(), viaTag); | |
| 55 | + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipLayer.getLocalIp(device.getLocalIp()), sipConfig.getPort(), device.getTransport(), viaTag); | |
| 56 | 56 | viaHeader.setRPort(); |
| 57 | 57 | viaHeaders.add(viaHeader); |
| 58 | 58 | // from |
| ... | ... | @@ -85,7 +85,8 @@ public class SIPRequestHeaderProvider { |
| 85 | 85 | SipURI requestLine = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId, device.getHostAddress()); |
| 86 | 86 | //via |
| 87 | 87 | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); |
| 88 | - ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(device.getLocalIp(), sipConfig.getPort(), device.getTransport(), viaTag); | |
| 88 | + HeaderFactory headerFactory = sipLayer.getSipFactory().createHeaderFactory(); | |
| 89 | + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipLayer.getLocalIp(device.getLocalIp()), sipConfig.getPort(), device.getTransport(), viaTag); | |
| 89 | 90 | viaHeader.setRPort(); |
| 90 | 91 | viaHeaders.add(viaHeader); |
| 91 | 92 | |
| ... | ... | @@ -107,7 +108,7 @@ public class SIPRequestHeaderProvider { |
| 107 | 108 | |
| 108 | 109 | request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil)); |
| 109 | 110 | |
| 110 | - Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), device.getLocalIp()+":"+sipConfig.getPort())); | |
| 111 | + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipLayer.getLocalIp(device.getLocalIp())+":"+sipConfig.getPort())); | |
| 111 | 112 | // Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort())); |
| 112 | 113 | request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); |
| 113 | 114 | // Subject |
| ... | ... | @@ -124,7 +125,7 @@ public class SIPRequestHeaderProvider { |
| 124 | 125 | SipURI requestLine = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId, device.getHostAddress()); |
| 125 | 126 | // via |
| 126 | 127 | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); |
| 127 | - ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(device.getLocalIp(), sipConfig.getPort(), device.getTransport(), viaTag); | |
| 128 | + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipLayer.getLocalIp(device.getLocalIp()), sipConfig.getPort(), device.getTransport(), viaTag); | |
| 128 | 129 | viaHeader.setRPort(); |
| 129 | 130 | viaHeaders.add(viaHeader); |
| 130 | 131 | //from |
| ... | ... | @@ -143,7 +144,7 @@ public class SIPRequestHeaderProvider { |
| 143 | 144 | CSeqHeader cSeqHeader = sipLayer.getSipFactory().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.INVITE); |
| 144 | 145 | request = sipLayer.getSipFactory().createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards); |
| 145 | 146 | |
| 146 | - Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), device.getLocalIp()+":"+sipConfig.getPort())); | |
| 147 | + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipLayer.getLocalIp(device.getLocalIp())+":"+sipConfig.getPort())); | |
| 147 | 148 | // Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort())); |
| 148 | 149 | request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); |
| 149 | 150 | |
| ... | ... | @@ -164,7 +165,7 @@ public class SIPRequestHeaderProvider { |
| 164 | 165 | SipURI requestLine = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId, device.getHostAddress()); |
| 165 | 166 | // via |
| 166 | 167 | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); |
| 167 | - ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(device.getLocalIp(), sipConfig.getPort(), device.getTransport(), SipUtils.getNewViaTag()); | |
| 168 | + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipLayer.getLocalIp(device.getLocalIp()), sipConfig.getPort(), device.getTransport(), SipUtils.getNewViaTag()); | |
| 168 | 169 | viaHeaders.add(viaHeader); |
| 169 | 170 | //from |
| 170 | 171 | SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain()); |
| ... | ... | @@ -185,7 +186,7 @@ public class SIPRequestHeaderProvider { |
| 185 | 186 | |
| 186 | 187 | request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil)); |
| 187 | 188 | |
| 188 | - Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), device.getLocalIp()+":"+sipConfig.getPort())); | |
| 189 | + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipLayer.getLocalIp(device.getLocalIp())+":"+sipConfig.getPort())); | |
| 189 | 190 | request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); |
| 190 | 191 | |
| 191 | 192 | request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil)); |
| ... | ... | @@ -199,7 +200,7 @@ public class SIPRequestHeaderProvider { |
| 199 | 200 | SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress()); |
| 200 | 201 | // via |
| 201 | 202 | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); |
| 202 | - ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(device.getLocalIp(), sipConfig.getPort(), | |
| 203 | + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipLayer.getLocalIp(device.getLocalIp()), sipConfig.getPort(), | |
| 203 | 204 | device.getTransport(), SipUtils.getNewViaTag()); |
| 204 | 205 | viaHeader.setRPort(); |
| 205 | 206 | viaHeaders.add(viaHeader); |
| ... | ... | @@ -222,7 +223,7 @@ public class SIPRequestHeaderProvider { |
| 222 | 223 | toHeader, viaHeaders, maxForwards); |
| 223 | 224 | |
| 224 | 225 | |
| 225 | - Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), device.getLocalIp()+":"+sipConfig.getPort())); | |
| 226 | + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipLayer.getLocalIp(device.getLocalIp())+":"+sipConfig.getPort())); | |
| 226 | 227 | request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); |
| 227 | 228 | |
| 228 | 229 | // Expires |
| ... | ... | @@ -254,7 +255,7 @@ public class SIPRequestHeaderProvider { |
| 254 | 255 | SipURI requestLine = sipLayer.getSipFactory().createAddressFactory().createSipURI(channelId, device.getHostAddress()); |
| 255 | 256 | // via |
| 256 | 257 | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); |
| 257 | - ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(device.getLocalIp(), sipConfig.getPort(), device.getTransport(), SipUtils.getNewViaTag()); | |
| 258 | + ViaHeader viaHeader = sipLayer.getSipFactory().createHeaderFactory().createViaHeader(sipLayer.getLocalIp(device.getLocalIp()), sipConfig.getPort(), device.getTransport(), SipUtils.getNewViaTag()); | |
| 258 | 259 | viaHeaders.add(viaHeader); |
| 259 | 260 | //from |
| 260 | 261 | SipURI fromSipURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain()); |
| ... | ... | @@ -275,7 +276,7 @@ public class SIPRequestHeaderProvider { |
| 275 | 276 | |
| 276 | 277 | request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil)); |
| 277 | 278 | |
| 278 | - Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), device.getLocalIp()+":"+sipConfig.getPort())); | |
| 279 | + Address concatAddress = sipLayer.getSipFactory().createAddressFactory().createAddress(sipLayer.getSipFactory().createAddressFactory().createSipURI(sipConfig.getId(), sipLayer.getLocalIp(device.getLocalIp())+":"+sipConfig.getPort())); | |
| 279 | 280 | request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); |
| 280 | 281 | |
| 281 | 282 | request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil)); | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
| ... | ... | @@ -33,7 +33,6 @@ import org.springframework.util.ObjectUtils; |
| 33 | 33 | import javax.sip.InvalidArgumentException; |
| 34 | 34 | import javax.sip.ResponseEvent; |
| 35 | 35 | import javax.sip.SipException; |
| 36 | -import javax.sip.SipFactory; | |
| 37 | 36 | import javax.sip.header.CallIdHeader; |
| 38 | 37 | import javax.sip.message.Request; |
| 39 | 38 | import java.text.ParseException; |
| ... | ... | @@ -182,9 +181,9 @@ public class SIPCommander implements ISIPCommander { |
| 182 | 181 | ptzXml.append("</Info>\r\n"); |
| 183 | 182 | ptzXml.append("</Control>\r\n"); |
| 184 | 183 | |
| 185 | - Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 184 | + Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 186 | 185 | |
| 187 | - sipSender.transmitRequest(device.getLocalIp(),request); | |
| 186 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request); | |
| 188 | 187 | } |
| 189 | 188 | |
| 190 | 189 | /** |
| ... | ... | @@ -217,8 +216,8 @@ public class SIPCommander implements ISIPCommander { |
| 217 | 216 | |
| 218 | 217 | |
| 219 | 218 | |
| 220 | - SIPRequest request = (SIPRequest) headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 221 | - sipSender.transmitRequest(device.getLocalIp(),request); | |
| 219 | + SIPRequest request = (SIPRequest) headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 220 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request); | |
| 222 | 221 | |
| 223 | 222 | } |
| 224 | 223 | |
| ... | ... | @@ -246,8 +245,8 @@ public class SIPCommander implements ISIPCommander { |
| 246 | 245 | ptzXml.append("</Control>\r\n"); |
| 247 | 246 | |
| 248 | 247 | |
| 249 | - Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 250 | - sipSender.transmitRequest(device.getLocalIp(),request, errorEvent, okEvent); | |
| 248 | + Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 249 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request, errorEvent, okEvent); | |
| 251 | 250 | |
| 252 | 251 | } |
| 253 | 252 | |
| ... | ... | @@ -341,8 +340,8 @@ public class SIPCommander implements ISIPCommander { |
| 341 | 340 | |
| 342 | 341 | |
| 343 | 342 | |
| 344 | - Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, ssrcInfo.getSsrc(),sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 345 | - sipSender.transmitRequest(device.getLocalIp(), request, (e -> { | |
| 343 | + Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, ssrcInfo.getSsrc(),sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 344 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, (e -> { | |
| 346 | 345 | streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream()); |
| 347 | 346 | mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc()); |
| 348 | 347 | errorEvent.response(e); |
| ... | ... | @@ -442,21 +441,21 @@ public class SIPCommander implements ISIPCommander { |
| 442 | 441 | // 添加订阅 |
| 443 | 442 | subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> { |
| 444 | 443 | if (hookEvent != null) { |
| 445 | - InviteStreamInfo inviteStreamInfo = new InviteStreamInfo(mediaServerItemInUse, json,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()); | |
| 444 | + InviteStreamInfo inviteStreamInfo = new InviteStreamInfo(mediaServerItemInUse, json,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()); | |
| 446 | 445 | hookEvent.call(inviteStreamInfo); |
| 447 | 446 | } |
| 448 | 447 | subscribe.removeSubscribe(hookSubscribe); |
| 449 | 448 | }); |
| 450 | - Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()), ssrcInfo.getSsrc()); | |
| 449 | + Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()), ssrcInfo.getSsrc()); | |
| 451 | 450 | |
| 452 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, event -> { | |
| 451 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, event -> { | |
| 453 | 452 | ResponseEvent responseEvent = (ResponseEvent) event.event; |
| 454 | 453 | SIPResponse response = (SIPResponse) responseEvent.getResponse(); |
| 455 | - streamSession.put(device.getDeviceId(), channelId,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.playback); | |
| 454 | + streamSession.put(device.getDeviceId(), channelId,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()).getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.playback); | |
| 456 | 455 | okEvent.response(event); |
| 457 | 456 | }); |
| 458 | 457 | if (inviteStreamCallback != null) { |
| 459 | - inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream())); | |
| 458 | + inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream())); | |
| 460 | 459 | } |
| 461 | 460 | } |
| 462 | 461 | |
| ... | ... | @@ -545,7 +544,7 @@ public class SIPCommander implements ISIPCommander { |
| 545 | 544 | HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, null, mediaServerItem.getId()); |
| 546 | 545 | // 添加订阅 |
| 547 | 546 | subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> { |
| 548 | - hookEvent.call(new InviteStreamInfo(mediaServerItem, json,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream())); | |
| 547 | + hookEvent.call(new InviteStreamInfo(mediaServerItem, json,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream())); | |
| 549 | 548 | subscribe.removeSubscribe(hookSubscribe); |
| 550 | 549 | hookSubscribe.getContent().put("regist", false); |
| 551 | 550 | hookSubscribe.getContent().put("schema", "rtsp"); |
| ... | ... | @@ -554,7 +553,7 @@ public class SIPCommander implements ISIPCommander { |
| 554 | 553 | (MediaServerItem mediaServerItemForEnd, JSONObject jsonForEnd) -> { |
| 555 | 554 | logger.info("[录像]下载结束, 发送BYE"); |
| 556 | 555 | try { |
| 557 | - streamByeCmd(device, channelId, ssrcInfo.getStream(),sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId()); | |
| 556 | + streamByeCmd(device, channelId, ssrcInfo.getStream(),sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()).getCallId()); | |
| 558 | 557 | } catch (InvalidArgumentException | ParseException | SipException | |
| 559 | 558 | SsrcTransactionNotFoundException e) { |
| 560 | 559 | logger.error("[录像]下载结束, 发送BYE失败 {}", e.getMessage()); |
| ... | ... | @@ -562,14 +561,14 @@ public class SIPCommander implements ISIPCommander { |
| 562 | 561 | }); |
| 563 | 562 | }); |
| 564 | 563 | |
| 565 | - Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()), ssrcInfo.getSsrc()); | |
| 564 | + Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()), ssrcInfo.getSsrc()); | |
| 566 | 565 | if (inviteStreamCallback != null) { |
| 567 | - inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream())); | |
| 566 | + inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream())); | |
| 568 | 567 | } |
| 569 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent -> { | |
| 568 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, okEvent -> { | |
| 570 | 569 | ResponseEvent responseEvent = (ResponseEvent) okEvent.event; |
| 571 | 570 | SIPResponse response = (SIPResponse) responseEvent.getResponse(); |
| 572 | - streamSession.put(device.getDeviceId(), channelId,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()).getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.download); | |
| 571 | + streamSession.put(device.getDeviceId(), channelId,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()).getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.download); | |
| 573 | 572 | }); |
| 574 | 573 | } |
| 575 | 574 | |
| ... | ... | @@ -596,7 +595,7 @@ public class SIPCommander implements ISIPCommander { |
| 596 | 595 | streamSession.remove(ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId(), ssrcTransaction.getStream()); |
| 597 | 596 | |
| 598 | 597 | Request byteRequest = headerProvider.createByteRequest(device, channelId, ssrcTransaction.getSipTransactionInfo()); |
| 599 | - sipSender.transmitRequest(device.getLocalIp(), byteRequest, null, okEvent); | |
| 598 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), byteRequest, null, okEvent); | |
| 600 | 599 | } |
| 601 | 600 | |
| 602 | 601 | /** |
| ... | ... | @@ -629,8 +628,8 @@ public class SIPCommander implements ISIPCommander { |
| 629 | 628 | |
| 630 | 629 | |
| 631 | 630 | |
| 632 | - Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 633 | - sipSender.transmitRequest(device.getLocalIp(), request); | |
| 631 | + Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 632 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request); | |
| 634 | 633 | |
| 635 | 634 | } |
| 636 | 635 | |
| ... | ... | @@ -649,8 +648,8 @@ public class SIPCommander implements ISIPCommander { |
| 649 | 648 | |
| 650 | 649 | |
| 651 | 650 | |
| 652 | - Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 653 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 651 | + Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 652 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 654 | 653 | |
| 655 | 654 | } |
| 656 | 655 | |
| ... | ... | @@ -680,8 +679,8 @@ public class SIPCommander implements ISIPCommander { |
| 680 | 679 | |
| 681 | 680 | |
| 682 | 681 | |
| 683 | - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 684 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 682 | + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 683 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 685 | 684 | } |
| 686 | 685 | |
| 687 | 686 | /** |
| ... | ... | @@ -704,8 +703,8 @@ public class SIPCommander implements ISIPCommander { |
| 704 | 703 | |
| 705 | 704 | |
| 706 | 705 | |
| 707 | - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 708 | - sipSender.transmitRequest(device.getLocalIp(), request); | |
| 706 | + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 707 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request); | |
| 709 | 708 | } |
| 710 | 709 | |
| 711 | 710 | /** |
| ... | ... | @@ -729,8 +728,8 @@ public class SIPCommander implements ISIPCommander { |
| 729 | 728 | |
| 730 | 729 | |
| 731 | 730 | |
| 732 | - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 733 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 731 | + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 732 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 734 | 733 | } |
| 735 | 734 | |
| 736 | 735 | /** |
| ... | ... | @@ -765,8 +764,8 @@ public class SIPCommander implements ISIPCommander { |
| 765 | 764 | |
| 766 | 765 | |
| 767 | 766 | |
| 768 | - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 769 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 767 | + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 768 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 770 | 769 | } |
| 771 | 770 | |
| 772 | 771 | /** |
| ... | ... | @@ -794,8 +793,8 @@ public class SIPCommander implements ISIPCommander { |
| 794 | 793 | |
| 795 | 794 | |
| 796 | 795 | |
| 797 | - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 798 | - sipSender.transmitRequest(device.getLocalIp(), request); | |
| 796 | + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 797 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request); | |
| 799 | 798 | } |
| 800 | 799 | |
| 801 | 800 | /** |
| ... | ... | @@ -841,8 +840,8 @@ public class SIPCommander implements ISIPCommander { |
| 841 | 840 | |
| 842 | 841 | |
| 843 | 842 | |
| 844 | - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 845 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 843 | + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 844 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 846 | 845 | } |
| 847 | 846 | |
| 848 | 847 | /** |
| ... | ... | @@ -904,8 +903,8 @@ public class SIPCommander implements ISIPCommander { |
| 904 | 903 | |
| 905 | 904 | |
| 906 | 905 | |
| 907 | - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 908 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 906 | + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 907 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 909 | 908 | } |
| 910 | 909 | |
| 911 | 910 | /** |
| ... | ... | @@ -927,9 +926,9 @@ public class SIPCommander implements ISIPCommander { |
| 927 | 926 | |
| 928 | 927 | |
| 929 | 928 | |
| 930 | - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 929 | + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 931 | 930 | |
| 932 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 931 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 933 | 932 | } |
| 934 | 933 | |
| 935 | 934 | /** |
| ... | ... | @@ -951,9 +950,9 @@ public class SIPCommander implements ISIPCommander { |
| 951 | 950 | |
| 952 | 951 | |
| 953 | 952 | |
| 954 | - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 953 | + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 955 | 954 | |
| 956 | - sipSender.transmitRequest(device.getLocalIp(), request); | |
| 955 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request); | |
| 957 | 956 | |
| 958 | 957 | } |
| 959 | 958 | |
| ... | ... | @@ -976,9 +975,9 @@ public class SIPCommander implements ISIPCommander { |
| 976 | 975 | |
| 977 | 976 | |
| 978 | 977 | |
| 979 | - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 978 | + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 980 | 979 | |
| 981 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 980 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 982 | 981 | } |
| 983 | 982 | |
| 984 | 983 | /** |
| ... | ... | @@ -1022,9 +1021,9 @@ public class SIPCommander implements ISIPCommander { |
| 1022 | 1021 | |
| 1023 | 1022 | |
| 1024 | 1023 | Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(), |
| 1025 | - SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 1024 | + SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 1026 | 1025 | |
| 1027 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent); | |
| 1026 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, okEvent); | |
| 1028 | 1027 | } |
| 1029 | 1028 | |
| 1030 | 1029 | /** |
| ... | ... | @@ -1072,8 +1071,8 @@ public class SIPCommander implements ISIPCommander { |
| 1072 | 1071 | |
| 1073 | 1072 | |
| 1074 | 1073 | |
| 1075 | - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 1076 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 1074 | + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 1075 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 1077 | 1076 | } |
| 1078 | 1077 | |
| 1079 | 1078 | /** |
| ... | ... | @@ -1102,8 +1101,8 @@ public class SIPCommander implements ISIPCommander { |
| 1102 | 1101 | |
| 1103 | 1102 | |
| 1104 | 1103 | |
| 1105 | - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 1106 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 1104 | + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 1105 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 1107 | 1106 | } |
| 1108 | 1107 | |
| 1109 | 1108 | /** |
| ... | ... | @@ -1129,8 +1128,8 @@ public class SIPCommander implements ISIPCommander { |
| 1129 | 1128 | |
| 1130 | 1129 | |
| 1131 | 1130 | |
| 1132 | - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 1133 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 1131 | + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 1132 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 1134 | 1133 | } |
| 1135 | 1134 | |
| 1136 | 1135 | /** |
| ... | ... | @@ -1153,9 +1152,9 @@ public class SIPCommander implements ISIPCommander { |
| 1153 | 1152 | |
| 1154 | 1153 | |
| 1155 | 1154 | |
| 1156 | - Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 1155 | + Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 1157 | 1156 | |
| 1158 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent); | |
| 1157 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); | |
| 1159 | 1158 | |
| 1160 | 1159 | } |
| 1161 | 1160 | |
| ... | ... | @@ -1185,11 +1184,11 @@ public class SIPCommander implements ISIPCommander { |
| 1185 | 1184 | if (requestOld != null) { |
| 1186 | 1185 | callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId()); |
| 1187 | 1186 | } else { |
| 1188 | - callIdHeader = sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()); | |
| 1187 | + callIdHeader = sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()); | |
| 1189 | 1188 | } |
| 1190 | 1189 | SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), requestOld, device.getSubscribeCycleForMobilePosition(), "presence",callIdHeader); //Position;id=" + tm.substring(tm.length() - 4)); |
| 1191 | 1190 | |
| 1192 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent); | |
| 1191 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, okEvent); | |
| 1193 | 1192 | return request; |
| 1194 | 1193 | } |
| 1195 | 1194 | |
| ... | ... | @@ -1238,8 +1237,8 @@ public class SIPCommander implements ISIPCommander { |
| 1238 | 1237 | |
| 1239 | 1238 | |
| 1240 | 1239 | |
| 1241 | - Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), null, expires, "presence",sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 1242 | - sipSender.transmitRequest(device.getLocalIp(), request); | |
| 1240 | + Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), null, expires, "presence",sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 1241 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request); | |
| 1243 | 1242 | |
| 1244 | 1243 | } |
| 1245 | 1244 | |
| ... | ... | @@ -1260,13 +1259,13 @@ public class SIPCommander implements ISIPCommander { |
| 1260 | 1259 | if (requestOld != null) { |
| 1261 | 1260 | callIdHeader = sipLayer.getSipFactory().createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId()); |
| 1262 | 1261 | } else { |
| 1263 | - callIdHeader = sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport()); | |
| 1262 | + callIdHeader = sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()); | |
| 1264 | 1263 | } |
| 1265 | 1264 | |
| 1266 | 1265 | // 有效时间默认为60秒以上 |
| 1267 | 1266 | SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, cmdXml.toString(), requestOld, device.getSubscribeCycleForCatalog(), "Catalog", |
| 1268 | 1267 | callIdHeader); |
| 1269 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent); | |
| 1268 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, okEvent); | |
| 1270 | 1269 | return request; |
| 1271 | 1270 | } |
| 1272 | 1271 | |
| ... | ... | @@ -1287,9 +1286,9 @@ public class SIPCommander implements ISIPCommander { |
| 1287 | 1286 | dragXml.append(cmdString); |
| 1288 | 1287 | dragXml.append("</Control>\r\n"); |
| 1289 | 1288 | |
| 1290 | - Request request = headerProvider.createMessageRequest(device, dragXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 1289 | + Request request = headerProvider.createMessageRequest(device, dragXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 1291 | 1290 | logger.debug("拉框信令: " + request.toString()); |
| 1292 | - sipSender.transmitRequest(device.getLocalIp(),request); | |
| 1291 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request); | |
| 1293 | 1292 | } |
| 1294 | 1293 | |
| 1295 | 1294 | |
| ... | ... | @@ -1368,7 +1367,7 @@ public class SIPCommander implements ISIPCommander { |
| 1368 | 1367 | return; |
| 1369 | 1368 | } |
| 1370 | 1369 | |
| 1371 | - sipSender.transmitRequest(device.getLocalIp(), request, errorEvent, okEvent); | |
| 1370 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent, okEvent); | |
| 1372 | 1371 | } |
| 1373 | 1372 | |
| 1374 | 1373 | @Override |
| ... | ... | @@ -1398,8 +1397,8 @@ public class SIPCommander implements ISIPCommander { |
| 1398 | 1397 | deviceStatusXml.append("</Notify>\r\n"); |
| 1399 | 1398 | |
| 1400 | 1399 | |
| 1401 | - Request request = headerProvider.createMessageRequest(device, deviceStatusXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getLocalIp(),device.getTransport())); | |
| 1402 | - sipSender.transmitRequest(device.getLocalIp(),request); | |
| 1400 | + Request request = headerProvider.createMessageRequest(device, deviceStatusXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); | |
| 1401 | + sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()),request); | |
| 1403 | 1402 | |
| 1404 | 1403 | |
| 1405 | 1404 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
| 1 | 1 | package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl; |
| 2 | 2 | |
| 3 | 3 | import com.genersoft.iot.vmp.conf.SipConfig; |
| 4 | +import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper; | |
| 4 | 5 | import com.genersoft.iot.vmp.gb28181.bean.Device; |
| 5 | 6 | import com.genersoft.iot.vmp.gb28181.bean.WvpSipDate; |
| 6 | 7 | import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver; |
| 7 | 8 | import com.genersoft.iot.vmp.gb28181.transmit.SIPSender; |
| 8 | 9 | import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor; |
| 9 | 10 | import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; |
| 10 | -import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper; | |
| 11 | 11 | import com.genersoft.iot.vmp.service.IDeviceService; |
| 12 | 12 | import com.genersoft.iot.vmp.utils.DateUtil; |
| 13 | 13 | import gov.nist.javax.sip.RequestEventExt; |
| 14 | 14 | import gov.nist.javax.sip.address.AddressImpl; |
| 15 | 15 | import gov.nist.javax.sip.address.SipUri; |
| 16 | -import gov.nist.javax.sip.header.Expires; | |
| 17 | 16 | import gov.nist.javax.sip.header.SIPDateHeader; |
| 18 | 17 | import gov.nist.javax.sip.message.SIPRequest; |
| 19 | 18 | import org.slf4j.Logger; |
| ... | ... | @@ -25,8 +24,10 @@ import org.springframework.util.ObjectUtils; |
| 25 | 24 | |
| 26 | 25 | import javax.sip.RequestEvent; |
| 27 | 26 | import javax.sip.SipException; |
| 28 | -import javax.sip.header.*; | |
| 29 | -import javax.sip.message.Request; | |
| 27 | +import javax.sip.header.AuthorizationHeader; | |
| 28 | +import javax.sip.header.ContactHeader; | |
| 29 | +import javax.sip.header.FromHeader; | |
| 30 | +import javax.sip.header.ViaHeader; | |
| 30 | 31 | import javax.sip.message.Response; |
| 31 | 32 | import java.security.NoSuchAlgorithmException; |
| 32 | 33 | import java.text.ParseException; |
| ... | ... | @@ -76,7 +77,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen |
| 76 | 77 | Response response = null; |
| 77 | 78 | boolean passwordCorrect = false; |
| 78 | 79 | // 注册标志 |
| 79 | - boolean registerFlag = false; | |
| 80 | + boolean registerFlag; | |
| 80 | 81 | FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME); |
| 81 | 82 | AddressImpl address = (AddressImpl) fromHeader.getAddress(); |
| 82 | 83 | SipUri uri = (SipUri) address.getURI(); | ... | ... |
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
| ... | ... | @@ -568,8 +568,6 @@ public class ZLMHttpHookListener { |
| 568 | 568 | public JSONObject onServerStarted(HttpServletRequest request, @RequestBody JSONObject jsonObject){ |
| 569 | 569 | |
| 570 | 570 | jsonObject.put("ip", request.getRemoteAddr()); |
| 571 | - System.out.println(jsonObject.toJSONString() | |
| 572 | - ); | |
| 573 | 571 | ZLMServerConfig zlmServerConfig = JSON.to(ZLMServerConfig.class, jsonObject); |
| 574 | 572 | zlmServerConfig.setIp(request.getRemoteAddr()); |
| 575 | 573 | logger.info("[ZLM HOOK] zlm 启动 " + zlmServerConfig.getGeneralMediaServerId()); |
| ... | ... | @@ -632,7 +630,6 @@ public class ZLMHttpHookListener { |
| 632 | 630 | @ResponseBody |
| 633 | 631 | @PostMapping(value = "/on_rtp_server_timeout", produces = "application/json;charset=UTF-8") |
| 634 | 632 | public JSONObject onRtpServerTimeout(HttpServletRequest request, @RequestBody OnRtpServerTimeoutHookParam param){ |
| 635 | - System.out.println(param); | |
| 636 | 633 | logger.info("[ZLM HOOK] rtpServer收流超时:{}->{}({})", param.getMediaServerId(), param.getStream_id(), param.getSsrc()); |
| 637 | 634 | |
| 638 | 635 | JSONObject ret = new JSONObject(); | ... | ... |
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
| ... | ... | @@ -115,9 +115,9 @@ public class PlayServiceImpl implements IPlayService { |
| 115 | 115 | if (mediaServerItem == null) { |
| 116 | 116 | throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到可用的zlm"); |
| 117 | 117 | } |
| 118 | + String key = DeferredResultHolder.CALLBACK_CMD_PLAY + deviceId + channelId; | |
| 118 | 119 | |
| 119 | 120 | RequestMessage msg = new RequestMessage(); |
| 120 | - String key = DeferredResultHolder.CALLBACK_CMD_PLAY + deviceId + channelId; | |
| 121 | 121 | msg.setKey(key); |
| 122 | 122 | |
| 123 | 123 | Device device = redisCatchStorage.getDevice(deviceId); |
| ... | ... | @@ -181,7 +181,6 @@ public class PlayServiceImpl implements IPlayService { |
| 181 | 181 | streamId = String.format("%s_%s", device.getDeviceId(), channelId); |
| 182 | 182 | } |
| 183 | 183 | SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, device.isSsrcCheck(), false); |
| 184 | - logger.info(JSONObject.toJSONString(ssrcInfo)); | |
| 185 | 184 | if (ssrcInfo == null) { |
| 186 | 185 | WVPResult wvpResult = new WVPResult(); |
| 187 | 186 | wvpResult.setCode(ErrorCode.ERROR100.getCode()); |
| ... | ... | @@ -189,7 +188,7 @@ public class PlayServiceImpl implements IPlayService { |
| 189 | 188 | msg.setData(wvpResult); |
| 190 | 189 | |
| 191 | 190 | resultHolder.invokeAllResult(msg); |
| 192 | - return playResult; | |
| 191 | + return; | |
| 193 | 192 | } |
| 194 | 193 | play(mediaServerItem, ssrcInfo, device, channelId, (mediaServerItemInUse, response) -> { |
| 195 | 194 | if (hookEvent != null) { |
| ... | ... | @@ -248,16 +247,14 @@ public class PlayServiceImpl implements IPlayService { |
| 248 | 247 | } |
| 249 | 248 | } |
| 250 | 249 | }, userSetting.getPlayTimeout()); |
| 251 | - final String ssrc = ssrcInfo.getSsrc(); | |
| 252 | - final String stream = ssrcInfo.getStream(); | |
| 253 | 250 | //端口获取失败的ssrcInfo 没有必要发送点播指令 |
| 254 | 251 | if (ssrcInfo.getPort() <= 0) { |
| 255 | 252 | logger.info("[点播端口分配异常],deviceId={},channelId={},ssrcInfo={}", device.getDeviceId(), channelId, ssrcInfo); |
| 256 | 253 | dynamicTask.stop(timeOutTaskKey); |
| 257 | 254 | // 释放ssrc |
| 258 | - mediaServerService.releaseSsrc(mediaServerItem.getId(), finalSsrcInfo.getSsrc()); | |
| 255 | + mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc()); | |
| 259 | 256 | |
| 260 | - streamSession.remove(device.getDeviceId(), channelId, finalSsrcInfo.getStream()); | |
| 257 | + streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream()); | |
| 261 | 258 | |
| 262 | 259 | RequestMessage msg = new RequestMessage(); |
| 263 | 260 | msg.setKey(DeferredResultHolder.CALLBACK_CMD_PLAY + device.getDeviceId() + channelId); |
| ... | ... | @@ -274,7 +271,7 @@ public class PlayServiceImpl implements IPlayService { |
| 274 | 271 | onPublishHandlerForPlay(mediaServerItemInuse, response, device.getDeviceId(), channelId); |
| 275 | 272 | hookEvent.response(mediaServerItemInuse, response); |
| 276 | 273 | logger.info("[点播成功] deviceId: {}, channelId: {}", device.getDeviceId(), channelId); |
| 277 | - String streamUrl = String.format("rtsp://127.0.0.1:%s/%s/%s", mediaServerItemInuse.getRtspPort(), "rtp", stream); | |
| 274 | + String streamUrl = String.format("rtsp://127.0.0.1:%s/%s/%s", mediaServerItemInuse.getRtspPort(), "rtp", ssrcInfo.getStream()); | |
| 278 | 275 | String path = "snap"; |
| 279 | 276 | String fileName = device.getDeviceId() + "_" + channelId + ".jpg"; |
| 280 | 277 | // 请求截图 | ... | ... |
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
| ... | ... | @@ -111,6 +111,7 @@ public interface DeviceMapper { |
| 111 | 111 | "<if test=\"firmware != null\">, firmware='${firmware}'</if>" + |
| 112 | 112 | "<if test=\"transport != null\">, transport='${transport}'</if>" + |
| 113 | 113 | "<if test=\"ip != null\">, ip='${ip}'</if>" + |
| 114 | + "<if test=\"localIp != null\">, localIp='${localIp}'</if>" + | |
| 114 | 115 | "<if test=\"port != null\">, port=${port}</if>" + |
| 115 | 116 | "<if test=\"hostAddress != null\">, hostAddress='${hostAddress}'</if>" + |
| 116 | 117 | "<if test=\"online != null\">, online=${online}</if>" + | ... | ... |
src/main/java/com/genersoft/iot/vmp/vmanager/bean/WVPResult.java
| ... | ... | @@ -4,7 +4,7 @@ package com.genersoft.iot.vmp.vmanager.bean; |
| 4 | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | 5 | |
| 6 | 6 | @Schema(description = "统一返回结果") |
| 7 | -public class WVPResult<T> { | |
| 7 | +public class WVPResult<T> implements Cloneable{ | |
| 8 | 8 | |
| 9 | 9 | public WVPResult() { |
| 10 | 10 | } |
| ... | ... | @@ -64,4 +64,8 @@ public class WVPResult<T> { |
| 64 | 64 | this.data = data; |
| 65 | 65 | } |
| 66 | 66 | |
| 67 | + @Override | |
| 68 | + public Object clone() throws CloneNotSupportedException { | |
| 69 | + return super.clone(); | |
| 70 | + } | |
| 67 | 71 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
| ... | ... | @@ -83,20 +83,6 @@ public class PlayController { |
| 83 | 83 | public DeferredResult<WVPResult<StreamInfo>> play(HttpServletRequest request, @PathVariable String deviceId, |
| 84 | 84 | @PathVariable String channelId) { |
| 85 | 85 | |
| 86 | - String localAddr = request.getLocalAddr(); | |
| 87 | - String localName = request.getLocalName(); | |
| 88 | - String remoteHost = request.getRemoteHost(); | |
| 89 | - String remoteAddr = request.getRemoteAddr(); | |
| 90 | - String remoteUser = request.getRemoteUser(); | |
| 91 | - String requestURI = request.getRequestURI(); | |
| 92 | - System.out.println(3333333); | |
| 93 | - System.out.println(localAddr); | |
| 94 | - System.out.println(localName); | |
| 95 | - System.out.println(remoteHost); | |
| 96 | - System.out.println(remoteAddr); | |
| 97 | - System.out.println(remoteUser); | |
| 98 | - System.out.println(requestURI); | |
| 99 | - System.out.println(4444444); | |
| 100 | 86 | // 获取可用的zlm |
| 101 | 87 | Device device = storager.queryVideoDevice(deviceId); |
| 102 | 88 | MediaServerItem newMediaServerItem = playService.getNewMediaServerItem(device); |
| ... | ... | @@ -110,16 +96,31 @@ public class PlayController { |
| 110 | 96 | DeferredResult<WVPResult<StreamInfo>> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue()); |
| 111 | 97 | DeferredResultEx<WVPResult<StreamInfo>> deferredResultEx = new DeferredResultEx<>(result); |
| 112 | 98 | |
| 99 | + result.onTimeout(()->{ | |
| 100 | + logger.info("点播接口等待超时"); | |
| 101 | + // 释放rtpserver | |
| 102 | + WVPResult<StreamInfo> wvpResult = new WVPResult<>(); | |
| 103 | + wvpResult.setCode(ErrorCode.ERROR100.getCode()); | |
| 104 | + wvpResult.setMsg("点播超时"); | |
| 105 | + msg.setData(wvpResult); | |
| 106 | + resultHolder.invokeResult(msg); | |
| 107 | + }); | |
| 108 | + | |
| 109 | + // TODO 在点播未成功的情况下在此调用接口点播会导致返回的流地址ip错误 | |
| 113 | 110 | deferredResultEx.setFilter(result1 -> { |
| 114 | - System.out.println(1111); | |
| 115 | - System.out.println(request.getLocalName()); | |
| 116 | - WVPResult<StreamInfo> wvpResult = (WVPResult<StreamInfo>)result1; | |
| 117 | - if (wvpResult.getCode() == ErrorCode.SUCCESS.getCode()) { | |
| 118 | - StreamInfo data = wvpResult.getData(); | |
| 111 | + WVPResult<StreamInfo> wvpResult1 = (WVPResult<StreamInfo>)result1; | |
| 112 | + WVPResult<StreamInfo> clone = null; | |
| 113 | + try { | |
| 114 | + clone = (WVPResult<StreamInfo>)wvpResult1.clone(); | |
| 115 | + } catch (CloneNotSupportedException e) { | |
| 116 | + throw new RuntimeException(e); | |
| 117 | + } | |
| 118 | + if (clone.getCode() == ErrorCode.SUCCESS.getCode()) { | |
| 119 | + StreamInfo data = clone.getData().clone(); | |
| 119 | 120 | data.channgeStreamIp(request.getLocalName()); |
| 120 | - ((WVPResult<StreamInfo>)result1).setData(data); | |
| 121 | + clone.setData(data); | |
| 121 | 122 | } |
| 122 | - return result1; | |
| 123 | + return clone; | |
| 123 | 124 | }); |
| 124 | 125 | |
| 125 | 126 | // 录像查询以channelId作为deviceId查询 | ... | ... |
src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java
| ... | ... | @@ -6,22 +6,17 @@ import com.genersoft.iot.vmp.conf.exception.ControllerException; |
| 6 | 6 | import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; |
| 7 | 7 | import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; |
| 8 | 8 | import com.genersoft.iot.vmp.service.IMediaServerService; |
| 9 | -import com.genersoft.iot.vmp.service.IMediaService; | |
| 10 | -import com.genersoft.iot.vmp.storager.IRedisCatchStorage; | |
| 11 | 9 | import com.genersoft.iot.vmp.service.IStreamProxyService; |
| 12 | 10 | import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; |
| 13 | -import com.genersoft.iot.vmp.vmanager.bean.WVPResult; | |
| 14 | 11 | import com.github.pagehelper.PageInfo; |
| 15 | 12 | import io.swagger.v3.oas.annotations.Operation; |
| 16 | 13 | import io.swagger.v3.oas.annotations.Parameter; |
| 17 | -import io.swagger.v3.oas.annotations.Parameters; | |
| 18 | 14 | import io.swagger.v3.oas.annotations.tags.Tag; |
| 19 | 15 | import org.slf4j.Logger; |
| 20 | 16 | import org.slf4j.LoggerFactory; |
| 21 | 17 | import org.springframework.beans.factory.annotation.Autowired; |
| 22 | 18 | import org.springframework.stereotype.Controller; |
| 23 | 19 | import org.springframework.util.ObjectUtils; |
| 24 | -import org.springframework.util.StringUtils; | |
| 25 | 20 | import org.springframework.web.bind.annotation.*; |
| 26 | 21 | |
| 27 | 22 | @SuppressWarnings("rawtypes") |
| ... | ... | @@ -63,7 +58,7 @@ public class StreamProxyController { |
| 63 | 58 | }) |
| 64 | 59 | @PostMapping(value = "/save") |
| 65 | 60 | @ResponseBody |
| 66 | - public StreamInfo save(@RequestBody StreamProxyItem param){ | |
| 61 | + public StreamInfo save(@RequestBody StreamProxyItem param){ | |
| 67 | 62 | logger.info("添加代理: " + JSONObject.toJSONString(param)); |
| 68 | 63 | if (ObjectUtils.isEmpty(param.getMediaServerId())) { |
| 69 | 64 | param.setMediaServerId("auto"); | ... | ... |