Commit 221f99c764b51c3cd284c6e5a41492c26c5c7ffc

Authored by 648540858
1 parent b5fb8293

优化sip消息

src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
@@ -2,8 +2,7 @@ package com.genersoft.iot.vmp.gb28181.transmit.cmd; @@ -2,8 +2,7 @@ package com.genersoft.iot.vmp.gb28181.transmit.cmd;
2 2
3 import com.genersoft.iot.vmp.conf.SipConfig; 3 import com.genersoft.iot.vmp.conf.SipConfig;
4 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; 4 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
5 -import com.genersoft.iot.vmp.gb28181.bean.SubscribeInfo;  
6 -import com.genersoft.iot.vmp.gb28181.utils.HeaderUtils; 5 +import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
7 import com.genersoft.iot.vmp.storager.IRedisCatchStorage; 6 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
8 import gov.nist.javax.sip.message.MessageFactoryImpl; 7 import gov.nist.javax.sip.message.MessageFactoryImpl;
9 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,44 +37,6 @@ public class SIPRequestHeaderPlarformProvider { @@ -38,44 +37,6 @@ public class SIPRequestHeaderPlarformProvider {
38 @Autowired 37 @Autowired
39 private IRedisCatchStorage redisCatchStorage; 38 private IRedisCatchStorage redisCatchStorage;
40 39
41 -  
42 - public Request createKeetpaliveMessageRequest(ParentPlatform parentPlatform, String content, String viaTag, String fromTag, String toTag, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {  
43 - Request request = null;  
44 - // sipuri  
45 - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort());  
46 - // via  
47 - ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();  
48 - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(),  
49 - parentPlatform.getTransport(), viaTag);  
50 - viaHeader.setRPort();  
51 - viaHeaders.add(viaHeader);  
52 - // from  
53 - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(),  
54 - sipConfig.getIp() + ":" + sipConfig.getPort());  
55 - Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);  
56 - FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);  
57 - // to  
58 - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort() );  
59 - Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);  
60 - ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag);  
61 -  
62 -  
63 - // Forwards  
64 - MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);  
65 - // ceq  
66 - CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.MESSAGE);  
67 -  
68 - request = sipFactory.createMessageFactory().createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader,  
69 - toHeader, viaHeaders, maxForwards);  
70 -  
71 - List<String> agentParam = new ArrayList<>();  
72 -  
73 - ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");  
74 - request.setContent(content, contentTypeHeader);  
75 - return request;  
76 - }  
77 -  
78 -  
79 public Request createRegisterRequest(@NotNull ParentPlatform platform, long CSeq, String fromTag, String viaTag, CallIdHeader callIdHeader, boolean isRegister) throws ParseException, InvalidArgumentException, PeerUnavailableException { 40 public Request createRegisterRequest(@NotNull ParentPlatform platform, long CSeq, String fromTag, String viaTag, CallIdHeader callIdHeader, boolean isRegister) throws ParseException, InvalidArgumentException, PeerUnavailableException {
80 Request request = null; 41 Request request = null;
81 String sipAddress = sipConfig.getIp() + ":" + sipConfig.getPort(); 42 String sipAddress = sipConfig.getIp() + ":" + sipConfig.getPort();
@@ -88,16 +49,14 @@ public class SIPRequestHeaderPlarformProvider { @@ -88,16 +49,14 @@ public class SIPRequestHeaderPlarformProvider {
88 viaHeader.setRPort(); 49 viaHeader.setRPort();
89 viaHeaders.add(viaHeader); 50 viaHeaders.add(viaHeader);
90 //from 51 //from
91 - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(platform.getDeviceGBId(),sipAddress); 52 + SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(platform.getDeviceGBId(), sipConfig.getDomain());
92 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI); 53 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
93 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); 54 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);
94 //to 55 //to
95 - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(platform.getDeviceGBId(),sipAddress); 56 + SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(platform.getDeviceGBId(), sipConfig.getDomain());
96 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI); 57 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
97 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null); 58 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
98 59
99 -  
100 -  
101 //Forwards 60 //Forwards
102 MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); 61 MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
103 62
@@ -113,7 +72,7 @@ public class SIPRequestHeaderPlarformProvider { @@ -113,7 +72,7 @@ public class SIPRequestHeaderPlarformProvider {
113 ExpiresHeader expires = sipFactory.createHeaderFactory().createExpiresHeader(isRegister ? platform.getExpires() : 0); 72 ExpiresHeader expires = sipFactory.createHeaderFactory().createExpiresHeader(isRegister ? platform.getExpires() : 0);
114 request.addHeader(expires); 73 request.addHeader(expires);
115 74
116 - UserAgentHeader userAgentHeader = HeaderUtils.createUserAgentHeader(sipFactory); 75 + UserAgentHeader userAgentHeader = SipUtils.createUserAgentHeader(sipFactory);
117 request.addHeader(userAgentHeader); 76 request.addHeader(userAgentHeader);
118 77
119 return request; 78 return request;
@@ -193,23 +152,24 @@ public class SIPRequestHeaderPlarformProvider { @@ -193,23 +152,24 @@ public class SIPRequestHeaderPlarformProvider {
193 } 152 }
194 153
195 154
196 - public Request createMessageRequest(ParentPlatform parentPlatform, String content, String fromTag, CallIdHeader callIdHeader) throws PeerUnavailableException, ParseException, InvalidArgumentException { 155 + public Request createMessageRequest(ParentPlatform parentPlatform, String content, String fromTag, String viaTag, CallIdHeader callIdHeader) throws PeerUnavailableException, ParseException, InvalidArgumentException {
197 Request request = null; 156 Request request = null;
  157 + String serverAddress = parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort();
198 // sipuri 158 // sipuri
199 - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort()); 159 + SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), serverAddress);
200 // via 160 // via
201 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 161 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
202 ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), Integer.parseInt(parentPlatform.getDevicePort()), 162 ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(parentPlatform.getDeviceIp(), Integer.parseInt(parentPlatform.getDevicePort()),
203 - parentPlatform.getTransport(), null); 163 + parentPlatform.getTransport(), viaTag);
204 viaHeader.setRPort(); 164 viaHeader.setRPort();
205 viaHeaders.add(viaHeader); 165 viaHeaders.add(viaHeader);
206 // from 166 // from
207 - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(),  
208 - parentPlatform.getDeviceIp() + ":" + parentPlatform.getDevicePort()); 167 + // SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(), parentPlatform.getDeviceIp() + ":" + parentPlatform.getDeviceIp());
  168 + SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(), sipConfig.getDomain());
209 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI); 169 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
210 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); 170 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);
211 // to 171 // to
212 - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerGBDomain()); 172 + SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), serverAddress);
213 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI); 173 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
214 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, null); 174 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, null);
215 175
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
@@ -2,7 +2,6 @@ package com.genersoft.iot.vmp.gb28181.transmit.cmd; @@ -2,7 +2,6 @@ package com.genersoft.iot.vmp.gb28181.transmit.cmd;
2 2
3 import java.text.ParseException; 3 import java.text.ParseException;
4 import java.util.ArrayList; 4 import java.util.ArrayList;
5 -import java.util.List;  
6 5
7 import javax.sip.*; 6 import javax.sip.*;
8 import javax.sip.address.Address; 7 import javax.sip.address.Address;
@@ -12,7 +11,7 @@ import javax.sip.message.Request; @@ -12,7 +11,7 @@ import javax.sip.message.Request;
12 11
13 import com.genersoft.iot.vmp.common.StreamInfo; 12 import com.genersoft.iot.vmp.common.StreamInfo;
14 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; 13 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
15 -import com.genersoft.iot.vmp.gb28181.utils.HeaderUtils; 14 +import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
16 import com.genersoft.iot.vmp.storager.IRedisCatchStorage; 15 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
17 import gov.nist.javax.sip.SipProviderImpl; 16 import gov.nist.javax.sip.SipProviderImpl;
18 import gov.nist.javax.sip.SipStackImpl; 17 import gov.nist.javax.sip.SipStackImpl;
@@ -62,12 +61,11 @@ public class SIPRequestHeaderProvider { @@ -62,12 +61,11 @@ public class SIPRequestHeaderProvider {
62 viaHeader.setRPort(); 61 viaHeader.setRPort();
63 viaHeaders.add(viaHeader); 62 viaHeaders.add(viaHeader);
64 // from 63 // from
65 - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),  
66 - sipConfig.getIp() + ":" + sipConfig.getPort()); 64 + SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
67 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI); 65 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
68 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); 66 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);
69 // to 67 // to
70 - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), sipConfig.getDomain()); 68 + SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
71 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI); 69 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
72 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag); 70 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag);
73 71
@@ -94,11 +92,11 @@ public class SIPRequestHeaderProvider { @@ -94,11 +92,11 @@ public class SIPRequestHeaderProvider {
94 viaHeaders.add(viaHeader); 92 viaHeaders.add(viaHeader);
95 93
96 //from 94 //from
97 - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain()); 95 + SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
98 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI); 96 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
99 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack 97 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack
100 //to 98 //to
101 - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,sipConfig.getDomain()); 99 + SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
102 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI); 100 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
103 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null); 101 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
104 102
@@ -130,11 +128,11 @@ public class SIPRequestHeaderProvider { @@ -130,11 +128,11 @@ public class SIPRequestHeaderProvider {
130 viaHeader.setRPort(); 128 viaHeader.setRPort();
131 viaHeaders.add(viaHeader); 129 viaHeaders.add(viaHeader);
132 //from 130 //from
133 - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain()); 131 + SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
134 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI); 132 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
135 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack 133 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack
136 //to 134 //to
137 - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId, sipConfig.getDomain()); 135 + SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
138 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI); 136 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
139 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null); 137 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
140 138
@@ -170,7 +168,7 @@ public class SIPRequestHeaderProvider { @@ -170,7 +168,7 @@ public class SIPRequestHeaderProvider {
170 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI); 168 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
171 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack 169 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack
172 //to 170 //to
173 - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,sipConfig.getDomain()); 171 + SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,device.getHostAddress());
174 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI); 172 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
175 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,toTag); 173 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,toTag);
176 174
@@ -198,12 +196,11 @@ public class SIPRequestHeaderProvider { @@ -198,12 +196,11 @@ public class SIPRequestHeaderProvider {
198 viaHeader.setRPort(); 196 viaHeader.setRPort();
199 viaHeaders.add(viaHeader); 197 viaHeaders.add(viaHeader);
200 // from 198 // from
201 - SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),  
202 - sipConfig.getIp() + ":" + sipConfig.getPort()); 199 + SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain());
203 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI); 200 Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
204 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); 201 FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);
205 // to 202 // to
206 - SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), sipConfig.getDomain()); 203 + SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
207 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI); 204 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
208 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag); 205 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag);
209 206
@@ -267,7 +264,7 @@ public class SIPRequestHeaderProvider { @@ -267,7 +264,7 @@ public class SIPRequestHeaderProvider {
267 Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory() 264 Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory()
268 .createSipURI(sipConfig.getId(), sipConfig.getIp() + ":" + sipConfig.getPort())); 265 .createSipURI(sipConfig.getId(), sipConfig.getIp() + ":" + sipConfig.getPort()));
269 infoRequest.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress)); 266 infoRequest.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
270 - UserAgentHeader userAgentHeader = HeaderUtils.createUserAgentHeader(sipFactory); 267 + UserAgentHeader userAgentHeader = SipUtils.createUserAgentHeader(sipFactory);
271 infoRequest.addHeader(userAgentHeader); 268 infoRequest.addHeader(userAgentHeader);
272 269
273 ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", 270 ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application",
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -10,7 +10,7 @@ import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; @@ -10,7 +10,7 @@ import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
10 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; 10 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
11 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander; 11 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
12 import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderProvider; 12 import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderProvider;
13 -import com.genersoft.iot.vmp.gb28181.utils.HeaderUtils; 13 +import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
14 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeFactory; 14 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeFactory;
15 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeForStreamChange; 15 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeForStreamChange;
16 import com.genersoft.iot.vmp.utils.DateUtil; 16 import com.genersoft.iot.vmp.utils.DateUtil;
@@ -244,13 +244,11 @@ public class SIPCommander implements ISIPCommander { @@ -244,13 +244,11 @@ public class SIPCommander implements ISIPCommander {
244 ptzXml.append("<ControlPriority>5</ControlPriority>\r\n"); 244 ptzXml.append("<ControlPriority>5</ControlPriority>\r\n");
245 ptzXml.append("</Info>\r\n"); 245 ptzXml.append("</Info>\r\n");
246 ptzXml.append("</Control>\r\n"); 246 ptzXml.append("</Control>\r\n");
247 -  
248 - String tm = Long.toString(System.currentTimeMillis());  
249 247
250 CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 248 CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
251 : udpSipProvider.getNewCallId(); 249 : udpSipProvider.getNewCallId();
252 250
253 - Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader); 251 + Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
254 252
255 transmitRequest(device, request); 253 transmitRequest(device, request);
256 return true; 254 return true;
@@ -288,12 +286,11 @@ public class SIPCommander implements ISIPCommander { @@ -288,12 +286,11 @@ public class SIPCommander implements ISIPCommander {
288 ptzXml.append("</Info>\r\n"); 286 ptzXml.append("</Info>\r\n");
289 ptzXml.append("</Control>\r\n"); 287 ptzXml.append("</Control>\r\n");
290 288
291 - String tm = Long.toString(System.currentTimeMillis());  
292 289
293 CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 290 CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
294 : udpSipProvider.getNewCallId(); 291 : udpSipProvider.getNewCallId();
295 292
296 - Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader); 293 + Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
297 transmitRequest(device, request); 294 transmitRequest(device, request);
298 return true; 295 return true;
299 } catch (SipException | ParseException | InvalidArgumentException e) { 296 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -324,12 +321,11 @@ public class SIPCommander implements ISIPCommander { @@ -324,12 +321,11 @@ public class SIPCommander implements ISIPCommander {
324 ptzXml.append("</Info>\r\n"); 321 ptzXml.append("</Info>\r\n");
325 ptzXml.append("</Control>\r\n"); 322 ptzXml.append("</Control>\r\n");
326 323
327 - String tm = Long.toString(System.currentTimeMillis());  
328 324
329 CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 325 CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
330 : udpSipProvider.getNewCallId(); 326 : udpSipProvider.getNewCallId();
331 327
332 - Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader); 328 + Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
333 transmitRequest(device, request, errorEvent, okEvent); 329 transmitRequest(device, request, errorEvent, okEvent);
334 return true; 330 return true;
335 } catch (SipException | ParseException | InvalidArgumentException e) { 331 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -421,12 +417,10 @@ public class SIPCommander implements ISIPCommander { @@ -421,12 +417,10 @@ public class SIPCommander implements ISIPCommander {
421 // f字段:f= v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率 417 // f字段:f= v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率
422 // content.append("f=v/2/5/25/1/4000a/1/8/1" + "\r\n"); // 未发现支持此特性的设备 418 // content.append("f=v/2/5/25/1/4000a/1/8/1" + "\r\n"); // 未发现支持此特性的设备
423 419
424 - String tm = Long.toString(System.currentTimeMillis());  
425 -  
426 CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 420 CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
427 : udpSipProvider.getNewCallId(); 421 : udpSipProvider.getNewCallId();
428 422
429 - Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), null, "FromInvt" + tm, null, ssrcInfo.getSsrc(), callIdHeader); 423 + Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null, ssrcInfo.getSsrc(), callIdHeader);
430 424
431 transmitRequest(device, request, (e -> { 425 transmitRequest(device, request, (e -> {
432 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream()); 426 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
@@ -519,8 +513,6 @@ public class SIPCommander implements ISIPCommander { @@ -519,8 +513,6 @@ public class SIPCommander implements ISIPCommander {
519 } 513 }
520 514
521 content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc 515 content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
522 -  
523 - String tm = Long.toString(System.currentTimeMillis());  
524 516
525 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 517 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
526 : udpSipProvider.getNewCallId(); 518 : udpSipProvider.getNewCallId();
@@ -533,7 +525,7 @@ public class SIPCommander implements ISIPCommander { @@ -533,7 +525,7 @@ public class SIPCommander implements ISIPCommander {
533 } 525 }
534 subscribe.removeSubscribe(hookSubscribe); 526 subscribe.removeSubscribe(hookSubscribe);
535 }); 527 });
536 - Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, "fromplybck" + tm, null, callIdHeader, ssrcInfo.getSsrc()); 528 + Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader, ssrcInfo.getSsrc());
537 529
538 transmitRequest(device, request, errorEvent, event -> { 530 transmitRequest(device, request, errorEvent, event -> {
539 ResponseEvent responseEvent = (ResponseEvent) event.event; 531 ResponseEvent responseEvent = (ResponseEvent) event.event;
@@ -625,8 +617,6 @@ public class SIPCommander implements ISIPCommander { @@ -625,8 +617,6 @@ public class SIPCommander implements ISIPCommander {
625 content.append("a=downloadspeed:" + downloadSpeed + "\r\n"); 617 content.append("a=downloadspeed:" + downloadSpeed + "\r\n");
626 618
627 content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc 619 content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
628 -  
629 - String tm = Long.toString(System.currentTimeMillis());  
630 620
631 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 621 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
632 : udpSipProvider.getNewCallId(); 622 : udpSipProvider.getNewCallId();
@@ -649,7 +639,7 @@ public class SIPCommander implements ISIPCommander { @@ -649,7 +639,7 @@ public class SIPCommander implements ISIPCommander {
649 }); 639 });
650 }); 640 });
651 641
652 - Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, "fromplybck" + tm, null, callIdHeader, ssrcInfo.getSsrc()); 642 + Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader, ssrcInfo.getSsrc());
653 if (inviteStreamCallback != null) { 643 if (inviteStreamCallback != null) {
654 inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null, callIdHeader.getCallId(), "rtp", ssrcInfo.getStream())); 644 inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null, callIdHeader.getCallId(), "rtp", ssrcInfo.getStream()));
655 } 645 }
@@ -737,7 +727,7 @@ public class SIPCommander implements ISIPCommander { @@ -737,7 +727,7 @@ public class SIPCommander implements ISIPCommander {
737 // 增加Contact header 727 // 增加Contact header
738 Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort())); 728 Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
739 byeRequest.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress)); 729 byeRequest.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
740 - UserAgentHeader userAgentHeader = HeaderUtils.createUserAgentHeader(sipFactory); 730 + UserAgentHeader userAgentHeader = SipUtils.createUserAgentHeader(sipFactory);
741 byeRequest.addHeader(userAgentHeader); 731 byeRequest.addHeader(userAgentHeader);
742 ClientTransaction clientTransaction = null; 732 ClientTransaction clientTransaction = null;
743 if("TCP".equals(protocol)) { 733 if("TCP".equals(protocol)) {
@@ -790,13 +780,11 @@ public class SIPCommander implements ISIPCommander { @@ -790,13 +780,11 @@ public class SIPCommander implements ISIPCommander {
790 broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n"); 780 broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n");
791 broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n"); 781 broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
792 broadcastXml.append("</Notify>\r\n"); 782 broadcastXml.append("</Notify>\r\n");
793 -  
794 - String tm = Long.toString(System.currentTimeMillis());  
795 - 783 +
796 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 784 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
797 : udpSipProvider.getNewCallId(); 785 : udpSipProvider.getNewCallId();
798 786
799 - Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), "z9hG4bK-ViaBcst-" + tm, "FromBcst" + tm, null, callIdHeader); 787 + Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
800 transmitRequest(device, request); 788 transmitRequest(device, request);
801 return true; 789 return true;
802 } catch (SipException | ParseException | InvalidArgumentException e) { 790 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -816,13 +804,11 @@ public class SIPCommander implements ISIPCommander { @@ -816,13 +804,11 @@ public class SIPCommander implements ISIPCommander {
816 broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n"); 804 broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n");
817 broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n"); 805 broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
818 broadcastXml.append("</Notify>\r\n"); 806 broadcastXml.append("</Notify>\r\n");
819 -  
820 - String tm = Long.toString(System.currentTimeMillis());  
821 807
822 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 808 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
823 : udpSipProvider.getNewCallId(); 809 : udpSipProvider.getNewCallId();
824 810
825 - Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), "z9hG4bK-ViaBcst-" + tm, "FromBcst" + tm, null, callIdHeader); 811 + Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
826 transmitRequest(device, request, errorEvent); 812 transmitRequest(device, request, errorEvent);
827 } catch (SipException | ParseException | InvalidArgumentException e) { 813 } catch (SipException | ParseException | InvalidArgumentException e) {
828 e.printStackTrace(); 814 e.printStackTrace();
@@ -853,13 +839,11 @@ public class SIPCommander implements ISIPCommander { @@ -853,13 +839,11 @@ public class SIPCommander implements ISIPCommander {
853 } 839 }
854 cmdXml.append("<RecordCmd>" + recordCmdStr + "</RecordCmd>\r\n"); 840 cmdXml.append("<RecordCmd>" + recordCmdStr + "</RecordCmd>\r\n");
855 cmdXml.append("</Control>\r\n"); 841 cmdXml.append("</Control>\r\n");
856 -  
857 - String tm = Long.toString(System.currentTimeMillis());  
858 842
859 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 843 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
860 : udpSipProvider.getNewCallId(); 844 : udpSipProvider.getNewCallId();
861 845
862 - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromRecord" + tm, null, callIdHeader); 846 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
863 transmitRequest(device, request, errorEvent); 847 transmitRequest(device, request, errorEvent);
864 return true; 848 return true;
865 } catch (SipException | ParseException | InvalidArgumentException e) { 849 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -885,13 +869,11 @@ public class SIPCommander implements ISIPCommander { @@ -885,13 +869,11 @@ public class SIPCommander implements ISIPCommander {
885 cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); 869 cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
886 cmdXml.append("<TeleBoot>Boot</TeleBoot>\r\n"); 870 cmdXml.append("<TeleBoot>Boot</TeleBoot>\r\n");
887 cmdXml.append("</Control>\r\n"); 871 cmdXml.append("</Control>\r\n");
888 -  
889 - String tm = Long.toString(System.currentTimeMillis());  
890 872
891 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 873 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
892 : udpSipProvider.getNewCallId(); 874 : udpSipProvider.getNewCallId();
893 875
894 - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromBoot" + tm, null, callIdHeader); 876 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
895 transmitRequest(device, request); 877 transmitRequest(device, request);
896 return true; 878 return true;
897 } catch (SipException | ParseException | InvalidArgumentException e) { 879 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -918,13 +900,11 @@ public class SIPCommander implements ISIPCommander { @@ -918,13 +900,11 @@ public class SIPCommander implements ISIPCommander {
918 cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); 900 cmdXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
919 cmdXml.append("<GuardCmd>" + guardCmdStr + "</GuardCmd>\r\n"); 901 cmdXml.append("<GuardCmd>" + guardCmdStr + "</GuardCmd>\r\n");
920 cmdXml.append("</Control>\r\n"); 902 cmdXml.append("</Control>\r\n");
921 -  
922 - String tm = Long.toString(System.currentTimeMillis());  
923 903
924 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 904 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
925 : udpSipProvider.getNewCallId(); 905 : udpSipProvider.getNewCallId();
926 906
927 - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromGuard" + tm, null, callIdHeader); 907 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
928 transmitRequest(device, request, errorEvent); 908 transmitRequest(device, request, errorEvent);
929 return true; 909 return true;
930 } catch (SipException | ParseException | InvalidArgumentException e) { 910 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -962,13 +942,11 @@ public class SIPCommander implements ISIPCommander { @@ -962,13 +942,11 @@ public class SIPCommander implements ISIPCommander {
962 cmdXml.append("</Info>\r\n"); 942 cmdXml.append("</Info>\r\n");
963 } 943 }
964 cmdXml.append("</Control>\r\n"); 944 cmdXml.append("</Control>\r\n");
965 -  
966 - String tm = Long.toString(System.currentTimeMillis());  
967 945
968 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 946 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
969 : udpSipProvider.getNewCallId(); 947 : udpSipProvider.getNewCallId();
970 948
971 - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromAlarm" + tm, null, callIdHeader); 949 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
972 transmitRequest(device, request, errorEvent); 950 transmitRequest(device, request, errorEvent);
973 return true; 951 return true;
974 } catch (SipException | ParseException | InvalidArgumentException e) { 952 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -999,13 +977,11 @@ public class SIPCommander implements ISIPCommander { @@ -999,13 +977,11 @@ public class SIPCommander implements ISIPCommander {
999 } 977 }
1000 cmdXml.append("<IFameCmd>Send</IFameCmd>\r\n"); 978 cmdXml.append("<IFameCmd>Send</IFameCmd>\r\n");
1001 cmdXml.append("</Control>\r\n"); 979 cmdXml.append("</Control>\r\n");
1002 -  
1003 - String tm = Long.toString(System.currentTimeMillis());  
1004 980
1005 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 981 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1006 : udpSipProvider.getNewCallId(); 982 : udpSipProvider.getNewCallId();
1007 983
1008 - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromBoot" + tm, null, callIdHeader); 984 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
1009 transmitRequest(device, request); 985 transmitRequest(device, request);
1010 return true; 986 return true;
1011 } catch (SipException | ParseException | InvalidArgumentException e) { 987 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1054,13 +1030,11 @@ public class SIPCommander implements ISIPCommander { @@ -1054,13 +1030,11 @@ public class SIPCommander implements ISIPCommander {
1054 } 1030 }
1055 cmdXml.append("</HomePosition>\r\n"); 1031 cmdXml.append("</HomePosition>\r\n");
1056 cmdXml.append("</Control>\r\n"); 1032 cmdXml.append("</Control>\r\n");
1057 -  
1058 - String tm = Long.toString(System.currentTimeMillis());  
1059 1033
1060 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1034 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1061 : udpSipProvider.getNewCallId(); 1035 : udpSipProvider.getNewCallId();
1062 1036
1063 - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromGuard" + tm, null, callIdHeader); 1037 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
1064 transmitRequest(device, request, errorEvent); 1038 transmitRequest(device, request, errorEvent);
1065 return true; 1039 return true;
1066 } catch (SipException | ParseException | InvalidArgumentException e) { 1040 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1126,13 +1100,11 @@ public class SIPCommander implements ISIPCommander { @@ -1126,13 +1100,11 @@ public class SIPCommander implements ISIPCommander {
1126 } 1100 }
1127 cmdXml.append("</BasicParam>\r\n"); 1101 cmdXml.append("</BasicParam>\r\n");
1128 cmdXml.append("</Control>\r\n"); 1102 cmdXml.append("</Control>\r\n");
1129 -  
1130 - String tm = Long.toString(System.currentTimeMillis());  
1131 1103
1132 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1104 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1133 : udpSipProvider.getNewCallId(); 1105 : udpSipProvider.getNewCallId();
1134 1106
1135 - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null, callIdHeader); 1107 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
1136 transmitRequest(device, request, errorEvent); 1108 transmitRequest(device, request, errorEvent);
1137 return true; 1109 return true;
1138 } catch (SipException | ParseException | InvalidArgumentException e) { 1110 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1157,13 +1129,11 @@ public class SIPCommander implements ISIPCommander { @@ -1157,13 +1129,11 @@ public class SIPCommander implements ISIPCommander {
1157 catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); 1129 catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
1158 catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); 1130 catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
1159 catalogXml.append("</Query>\r\n"); 1131 catalogXml.append("</Query>\r\n");
1160 -  
1161 - String tm = Long.toString(System.currentTimeMillis());  
1162 1132
1163 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1133 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1164 : udpSipProvider.getNewCallId(); 1134 : udpSipProvider.getNewCallId();
1165 1135
1166 - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, "FromStatus" + tm, null, callIdHeader); 1136 + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
1167 1137
1168 transmitRequest(device, request, errorEvent); 1138 transmitRequest(device, request, errorEvent);
1169 return true; 1139 return true;
@@ -1190,13 +1160,11 @@ public class SIPCommander implements ISIPCommander { @@ -1190,13 +1160,11 @@ public class SIPCommander implements ISIPCommander {
1190 catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); 1160 catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
1191 catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); 1161 catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
1192 catalogXml.append("</Query>\r\n"); 1162 catalogXml.append("</Query>\r\n");
1193 -  
1194 - String tm = Long.toString(System.currentTimeMillis());  
1195 1163
1196 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1164 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1197 : udpSipProvider.getNewCallId(); 1165 : udpSipProvider.getNewCallId();
1198 1166
1199 - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "z9hG4bK-ViaDeviceInfo-" + tm, "FromDev" + tm, null, callIdHeader); 1167 + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
1200 1168
1201 transmitRequest(device, request); 1169 transmitRequest(device, request);
1202 1170
@@ -1223,13 +1191,11 @@ public class SIPCommander implements ISIPCommander { @@ -1223,13 +1191,11 @@ public class SIPCommander implements ISIPCommander {
1223 catalogXml.append(" <SN>" + sn + "</SN>\r\n"); 1191 catalogXml.append(" <SN>" + sn + "</SN>\r\n");
1224 catalogXml.append(" <DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); 1192 catalogXml.append(" <DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
1225 catalogXml.append("</Query>\r\n"); 1193 catalogXml.append("</Query>\r\n");
1226 -  
1227 - String tm = Long.toString(System.currentTimeMillis());  
1228 1194
1229 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1195 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1230 : udpSipProvider.getNewCallId(); 1196 : udpSipProvider.getNewCallId();
1231 1197
1232 - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "z9hG4bK" + tm, tm, null, callIdHeader); 1198 + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
1233 1199
1234 transmitRequest(device, request, errorEvent); 1200 transmitRequest(device, request, errorEvent);
1235 } catch (SipException | ParseException | InvalidArgumentException e) { 1201 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1277,13 +1243,11 @@ public class SIPCommander implements ISIPCommander { @@ -1277,13 +1243,11 @@ public class SIPCommander implements ISIPCommander {
1277 } 1243 }
1278 recordInfoXml.append("</Query>\r\n"); 1244 recordInfoXml.append("</Query>\r\n");
1279 1245
1280 - String tm = Long.toString(System.currentTimeMillis());  
1281 -  
1282 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1246 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1283 : udpSipProvider.getNewCallId(); 1247 : udpSipProvider.getNewCallId();
1284 1248
1285 Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(), 1249 Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(),
1286 - "z9hG4bK-ViaRecordInfo-" + tm, "fromRec" + tm, null, callIdHeader); 1250 + SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
1287 1251
1288 transmitRequest(device, request, errorEvent, okEvent); 1252 transmitRequest(device, request, errorEvent, okEvent);
1289 } catch (SipException | ParseException | InvalidArgumentException e) { 1253 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1336,12 +1300,10 @@ public class SIPCommander implements ISIPCommander { @@ -1336,12 +1300,10 @@ public class SIPCommander implements ISIPCommander {
1336 } 1300 }
1337 cmdXml.append("</Query>\r\n"); 1301 cmdXml.append("</Query>\r\n");
1338 1302
1339 - String tm = Long.toString(System.currentTimeMillis());  
1340 -  
1341 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1303 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1342 : udpSipProvider.getNewCallId(); 1304 : udpSipProvider.getNewCallId();
1343 1305
1344 - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromAlarm" + tm, null, callIdHeader); 1306 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
1345 transmitRequest(device, request, errorEvent); 1307 transmitRequest(device, request, errorEvent);
1346 return true; 1308 return true;
1347 } catch (SipException | ParseException | InvalidArgumentException e) { 1309 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1374,12 +1336,10 @@ public class SIPCommander implements ISIPCommander { @@ -1374,12 +1336,10 @@ public class SIPCommander implements ISIPCommander {
1374 cmdXml.append("<ConfigType>" + configType + "</ConfigType>\r\n"); 1336 cmdXml.append("<ConfigType>" + configType + "</ConfigType>\r\n");
1375 cmdXml.append("</Query>\r\n"); 1337 cmdXml.append("</Query>\r\n");
1376 1338
1377 - String tm = Long.toString(System.currentTimeMillis());  
1378 -  
1379 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1339 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1380 : udpSipProvider.getNewCallId(); 1340 : udpSipProvider.getNewCallId();
1381 1341
1382 - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null, callIdHeader); 1342 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
1383 transmitRequest(device, request, errorEvent); 1343 transmitRequest(device, request, errorEvent);
1384 return true; 1344 return true;
1385 } catch (SipException | ParseException | InvalidArgumentException e) { 1345 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1409,12 +1369,10 @@ public class SIPCommander implements ISIPCommander { @@ -1409,12 +1369,10 @@ public class SIPCommander implements ISIPCommander {
1409 } 1369 }
1410 cmdXml.append("</Query>\r\n"); 1370 cmdXml.append("</Query>\r\n");
1411 1371
1412 - String tm = Long.toString(System.currentTimeMillis());  
1413 -  
1414 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1372 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1415 : udpSipProvider.getNewCallId(); 1373 : udpSipProvider.getNewCallId();
1416 1374
1417 - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null, callIdHeader); 1375 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
1418 transmitRequest(device, request, errorEvent); 1376 transmitRequest(device, request, errorEvent);
1419 return true; 1377 return true;
1420 } catch (SipException | ParseException | InvalidArgumentException e) { 1378 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -1441,12 +1399,10 @@ public class SIPCommander implements ISIPCommander { @@ -1441,12 +1399,10 @@ public class SIPCommander implements ISIPCommander {
1441 mobilePostitionXml.append("<Interval>60</Interval>\r\n"); 1399 mobilePostitionXml.append("<Interval>60</Interval>\r\n");
1442 mobilePostitionXml.append("</Query>\r\n"); 1400 mobilePostitionXml.append("</Query>\r\n");
1443 1401
1444 - String tm = Long.toString(System.currentTimeMillis());  
1445 -  
1446 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1402 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1447 : udpSipProvider.getNewCallId(); 1403 : udpSipProvider.getNewCallId();
1448 1404
1449 - Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, callIdHeader); 1405 + Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
1450 1406
1451 transmitRequest(device, request, errorEvent); 1407 transmitRequest(device, request, errorEvent);
1452 1408
@@ -1495,10 +1451,9 @@ public class SIPCommander implements ISIPCommander { @@ -1495,10 +1451,9 @@ public class SIPCommander implements ISIPCommander {
1495 request.removeHeader(CSeqHeader.NAME); 1451 request.removeHeader(CSeqHeader.NAME);
1496 request.addHeader(cSeqHeader); 1452 request.addHeader(cSeqHeader);
1497 }else { 1453 }else {
1498 - String tm = Long.toString(System.currentTimeMillis());  
1499 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1454 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1500 : udpSipProvider.getNewCallId(); 1455 : udpSipProvider.getNewCallId();
1501 - request = headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, device.getSubscribeCycleForMobilePosition(), "presence" ,callIdHeader); //Position;id=" + tm.substring(tm.length() - 4)); 1456 + request = headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, device.getSubscribeCycleForMobilePosition(), "presence" ,callIdHeader); //Position;id=" + tm.substring(tm.length() - 4));
1502 } 1457 }
1503 transmitRequest(device, request, errorEvent, okEvent); 1458 transmitRequest(device, request, errorEvent, okEvent);
1504 1459
@@ -1553,12 +1508,10 @@ public class SIPCommander implements ISIPCommander { @@ -1553,12 +1508,10 @@ public class SIPCommander implements ISIPCommander {
1553 } 1508 }
1554 cmdXml.append("</Query>\r\n"); 1509 cmdXml.append("</Query>\r\n");
1555 1510
1556 - String tm = Long.toString(System.currentTimeMillis());  
1557 -  
1558 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1511 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1559 : udpSipProvider.getNewCallId(); 1512 : udpSipProvider.getNewCallId();
1560 1513
1561 - Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, expires, "presence" , callIdHeader); 1514 + Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, expires, "presence" , callIdHeader);
1562 transmitRequest(device, request); 1515 transmitRequest(device, request);
1563 1516
1564 return true; 1517 return true;
@@ -1600,14 +1553,12 @@ public class SIPCommander implements ISIPCommander { @@ -1600,14 +1553,12 @@ public class SIPCommander implements ISIPCommander {
1600 request.addHeader(cSeqHeader); 1553 request.addHeader(cSeqHeader);
1601 1554
1602 }else { 1555 }else {
1603 - String tm = Long.toString(System.currentTimeMillis());  
1604 -  
1605 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1556 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1606 : udpSipProvider.getNewCallId(); 1557 : udpSipProvider.getNewCallId();
1607 1558
1608 // 有效时间默认为60秒以上 1559 // 有效时间默认为60秒以上
1609 - request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), "z9hG4bK-viaPos-" + tm,  
1610 - "fromTagPos" + tm, null, device.getSubscribeCycleForCatalog(), "Catalog" , 1560 + request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), SipUtils.getNewViaTag(),
  1561 + SipUtils.getNewFromTag(), null, device.getSubscribeCycleForCatalog(), "Catalog" ,
1611 callIdHeader); 1562 callIdHeader);
1612 1563
1613 } 1564 }
@@ -1636,10 +1587,9 @@ public class SIPCommander implements ISIPCommander { @@ -1636,10 +1587,9 @@ public class SIPCommander implements ISIPCommander {
1636 } 1587 }
1637 dragXml.append(cmdString); 1588 dragXml.append(cmdString);
1638 dragXml.append("</Control>\r\n"); 1589 dragXml.append("</Control>\r\n");
1639 - String tm = Long.toString(System.currentTimeMillis());  
1640 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1590 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1641 : udpSipProvider.getNewCallId(); 1591 : udpSipProvider.getNewCallId();
1642 - Request request = headerProvider.createMessageRequest(device, dragXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader); 1592 + Request request = headerProvider.createMessageRequest(device, dragXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
1643 logger.debug("拉框信令: " + request.toString()); 1593 logger.debug("拉框信令: " + request.toString());
1644 transmitRequest(device, request); 1594 transmitRequest(device, request);
1645 return true; 1595 return true;
@@ -1668,7 +1618,7 @@ public class SIPCommander implements ISIPCommander { @@ -1668,7 +1618,7 @@ public class SIPCommander implements ISIPCommander {
1668 if (request.getHeader(UserAgentHeader.NAME) == null) { 1618 if (request.getHeader(UserAgentHeader.NAME) == null) {
1669 UserAgentHeader userAgentHeader = null; 1619 UserAgentHeader userAgentHeader = null;
1670 try { 1620 try {
1671 - userAgentHeader = HeaderUtils.createUserAgentHeader(sipFactory); 1621 + userAgentHeader = SipUtils.createUserAgentHeader(sipFactory);
1672 } catch (ParseException e) { 1622 } catch (ParseException e) {
1673 logger.error("添加UserAgentHeader失败", e); 1623 logger.error("添加UserAgentHeader失败", e);
1674 } 1624 }
@@ -1883,8 +1833,7 @@ public class SIPCommander implements ISIPCommander { @@ -1883,8 +1833,7 @@ public class SIPCommander implements ISIPCommander {
1883 1833
1884 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 1834 CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
1885 : udpSipProvider.getNewCallId(); 1835 : udpSipProvider.getNewCallId();
1886 - String tm = Long.toString(System.currentTimeMillis());  
1887 - Request request = headerProvider.createMessageRequest(device, deviceStatusXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader); 1836 + Request request = headerProvider.createMessageRequest(device, deviceStatusXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
1888 transmitRequest(device, request); 1837 transmitRequest(device, request);
1889 1838
1890 1839
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -4,6 +4,7 @@ import com.genersoft.iot.vmp.gb28181.bean.*; @@ -4,6 +4,7 @@ import com.genersoft.iot.vmp.gb28181.bean.*;
4 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; 4 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
5 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; 5 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
6 import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderPlarformProvider; 6 import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderPlarformProvider;
  7 +import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
7 import com.genersoft.iot.vmp.storager.dao.dto.PlatformRegisterInfo; 8 import com.genersoft.iot.vmp.storager.dao.dto.PlatformRegisterInfo;
8 import com.genersoft.iot.vmp.utils.DateUtil; 9 import com.genersoft.iot.vmp.utils.DateUtil;
9 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory; 10 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
@@ -26,19 +27,16 @@ import org.springframework.context.annotation.Lazy; @@ -26,19 +27,16 @@ import org.springframework.context.annotation.Lazy;
26 import org.springframework.lang.Nullable; 27 import org.springframework.lang.Nullable;
27 import org.springframework.stereotype.Component; 28 import org.springframework.stereotype.Component;
28 import org.springframework.util.ObjectUtils; 29 import org.springframework.util.ObjectUtils;
29 -import org.springframework.util.StringUtils;  
30 30
31 import javax.sip.*; 31 import javax.sip.*;
32 import javax.sip.address.SipURI; 32 import javax.sip.address.SipURI;
33 import javax.sip.header.*; 33 import javax.sip.header.*;
34 import javax.sip.message.Request; 34 import javax.sip.message.Request;
35 import java.lang.reflect.Field; 35 import java.lang.reflect.Field;
36 -import java.net.InetAddress;  
37 import java.text.ParseException; 36 import java.text.ParseException;
38 import java.util.ArrayList; 37 import java.util.ArrayList;
39 import java.util.HashSet; 38 import java.util.HashSet;
40 import java.util.List; 39 import java.util.List;
41 -import java.util.UUID;  
42 40
43 @Component 41 @Component
44 @DependsOn("sipLayer") 42 @DependsOn("sipLayer")
@@ -89,7 +87,6 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -89,7 +87,6 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
89 SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) { 87 SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) {
90 try { 88 try {
91 Request request; 89 Request request;
92 - String tm = Long.toString(System.currentTimeMillis());  
93 if (!registerAgain ) { 90 if (!registerAgain ) {
94 CallIdHeader callIdHeader = null; 91 CallIdHeader callIdHeader = null;
95 if(parentPlatform.getTransport().equalsIgnoreCase("TCP")) { 92 if(parentPlatform.getTransport().equalsIgnoreCase("TCP")) {
@@ -100,8 +97,8 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -100,8 +97,8 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
100 } 97 }
101 98
102 request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform, 99 request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform,
103 - redisCatchStorage.getCSEQ(), "FromRegister" + tm,  
104 - "z9hG4bK-" + UUID.randomUUID().toString().replace("-", ""), callIdHeader, isRegister); 100 + redisCatchStorage.getCSEQ(), SipUtils.getNewFromTag(),
  101 + SipUtils.getNewViaTag(), callIdHeader, isRegister);
105 // 将 callid 写入缓存, 等注册成功可以更新状态 102 // 将 callid 写入缓存, 等注册成功可以更新状态
106 String callIdFromHeader = callIdHeader.getCallId(); 103 String callIdFromHeader = callIdHeader.getCallId();
107 redisCatchStorage.updatePlatformRegisterInfo(callIdFromHeader, PlatformRegisterInfo.getInstance(parentPlatform.getServerGBId(), isRegister)); 104 redisCatchStorage.updatePlatformRegisterInfo(callIdFromHeader, PlatformRegisterInfo.getInstance(parentPlatform.getServerGBId(), isRegister));
@@ -121,7 +118,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -121,7 +118,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
121 }else { 118 }else {
122 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 119 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
123 : udpSipProvider.getNewCallId(); 120 : udpSipProvider.getNewCallId();
124 - request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform, "FromRegister" + tm, null, callId, www, callIdHeader, isRegister); 121 + request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform, SipUtils.getNewFromTag(), null, callId, www, callIdHeader, isRegister);
125 } 122 }
126 123
127 transmitRequest(parentPlatform, request, null, okEvent); 124 transmitRequest(parentPlatform, request, null, okEvent);
@@ -155,12 +152,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -155,12 +152,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
155 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 152 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
156 : udpSipProvider.getNewCallId(); 153 : udpSipProvider.getNewCallId();
157 154
158 - Request request = headerProviderPlarformProvider.createKeetpaliveMessageRequest( 155 + Request request = headerProviderPlarformProvider.createMessageRequest(
159 parentPlatform, 156 parentPlatform,
160 keepaliveXml.toString(), 157 keepaliveXml.toString(),
161 - "z9hG4bK-" + UUID.randomUUID().toString().replace("-", ""),  
162 - UUID.randomUUID().toString().replace("-", ""),  
163 - null, 158 + SipUtils.getNewFromTag(),
  159 + SipUtils.getNewViaTag(),
164 callIdHeader); 160 callIdHeader);
165 transmitRequest(parentPlatform, request, errorEvent, okEvent); 161 transmitRequest(parentPlatform, request, errorEvent, okEvent);
166 callId = callIdHeader.getCallId(); 162 callId = callIdHeader.getCallId();
@@ -222,7 +218,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -222,7 +218,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
222 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 218 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
223 : udpSipProvider.getNewCallId(); 219 : udpSipProvider.getNewCallId();
224 220
225 - Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag, callIdHeader); 221 + Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
226 transmitRequest(parentPlatform, request); 222 transmitRequest(parentPlatform, request);
227 223
228 } catch (SipException | ParseException | InvalidArgumentException e) { 224 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -267,13 +263,18 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -267,13 +263,18 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
267 // 虚拟组织增加BusinessGroupID字段 263 // 虚拟组织增加BusinessGroupID字段
268 catalogXml.append("<BusinessGroupID>" + channel.getParentId() + "</BusinessGroupID>\r\n"); 264 catalogXml.append("<BusinessGroupID>" + channel.getParentId() + "</BusinessGroupID>\r\n");
269 } 265 }
270 - catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n"); 266 + if (!channel.getChannelId().equals(parentPlatform.getDeviceGBId())) {
  267 + catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
  268 + if (channel.getParental() == 0) {
  269 + catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n");
  270 + }
  271 +
  272 + }
271 if (channel.getParental() == 0) { 273 if (channel.getParental() == 0) {
272 // 通道项 274 // 通道项
273 catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n"); 275 catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
274 catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n"); 276 catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
275 catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n"); 277 catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
276 - catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n");  
277 278
278 if (channel.getChannelType() != 2) { // 业务分组/虚拟组织/行政区划 不设置以下属性 279 if (channel.getChannelType() != 2) { // 业务分组/虚拟组织/行政区划 不设置以下属性
279 catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n"); 280 catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
@@ -308,7 +309,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -308,7 +309,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
308 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 309 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
309 : udpSipProvider.getNewCallId(); 310 : udpSipProvider.getNewCallId();
310 311
311 - Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, callIdHeader); 312 + Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, SipUtils.getNewViaTag(), callIdHeader);
312 transmitRequest(parentPlatform, request, null, eventResult -> { 313 transmitRequest(parentPlatform, request, null, eventResult -> {
313 int indexNext = index + parentPlatform.getCatalogGroup(); 314 int indexNext = index + parentPlatform.getCatalogGroup();
314 sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext); 315 sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext);
@@ -348,7 +349,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -348,7 +349,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
348 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 349 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
349 : udpSipProvider.getNewCallId(); 350 : udpSipProvider.getNewCallId();
350 351
351 - Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag, callIdHeader); 352 + Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
352 transmitRequest(parentPlatform, request); 353 transmitRequest(parentPlatform, request);
353 354
354 } catch (SipException | ParseException | InvalidArgumentException e) { 355 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -386,7 +387,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -386,7 +387,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
386 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 387 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
387 : udpSipProvider.getNewCallId(); 388 : udpSipProvider.getNewCallId();
388 389
389 - Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag, callIdHeader); 390 + Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
390 transmitRequest(parentPlatform, request); 391 transmitRequest(parentPlatform, request);
391 392
392 } catch (SipException | ParseException | InvalidArgumentException e) { 393 } catch (SipException | ParseException | InvalidArgumentException e) {
@@ -471,8 +472,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -471,8 +472,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
471 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() 472 CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
472 : udpSipProvider.getNewCallId(); 473 : udpSipProvider.getNewCallId();
473 474
474 - String tm = Long.toString(System.currentTimeMillis());  
475 - Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), "FromPtz" + tm, callIdHeader); 475 + Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), SipUtils.getNewFromTag(), SipUtils.getNewViaTag(), callIdHeader);
476 transmitRequest(parentPlatform, request); 476 transmitRequest(parentPlatform, request);
477 477
478 } catch (SipException | ParseException e) { 478 } catch (SipException | ParseException e) {
@@ -750,7 +750,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -750,7 +750,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
750 // callid 750 // callid
751 CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 751 CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
752 : udpSipProvider.getNewCallId(); 752 : udpSipProvider.getNewCallId();
753 - Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, recordXml.toString(), fromTag, callIdHeader); 753 + Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, recordXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
754 transmitRequest(parentPlatform, request); 754 transmitRequest(parentPlatform, request);
755 755
756 } catch (SipException | ParseException | InvalidArgumentException e) { 756 } catch (SipException | ParseException | InvalidArgumentException e) {
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java
@@ -78,6 +78,11 @@ public class CatalogQueryMessageHandler extends SIPRequestProcessorParent implem @@ -78,6 +78,11 @@ public class CatalogQueryMessageHandler extends SIPRequestProcessorParent implem
78 78
79 List<DeviceChannel> allChannels = new ArrayList<>(); 79 List<DeviceChannel> allChannels = new ArrayList<>();
80 80
  81 + // 回复平台
  82 + DeviceChannel deviceChannel = getChannelForPlatform(parentPlatform);
  83 + allChannels.add(deviceChannel);
  84 +
  85 + // 回复目录
81 if (catalogs.size() > 0) { 86 if (catalogs.size() > 0) {
82 allChannels.addAll(catalogs); 87 allChannels.addAll(catalogs);
83 } 88 }
@@ -104,4 +109,19 @@ public class CatalogQueryMessageHandler extends SIPRequestProcessorParent implem @@ -104,4 +109,19 @@ public class CatalogQueryMessageHandler extends SIPRequestProcessorParent implem
104 } 109 }
105 110
106 } 111 }
  112 +
  113 + private DeviceChannel getChannelForPlatform(ParentPlatform platform) {
  114 + DeviceChannel deviceChannel = new DeviceChannel();
  115 +
  116 + deviceChannel.setChannelId(platform.getDeviceGBId());
  117 + deviceChannel.setName(platform.getName());
  118 + deviceChannel.setManufacture("wvp-pro");
  119 + deviceChannel.setOwner("wvp-pro");
  120 + deviceChannel.setCivilCode(platform.getAdministrativeDivision());
  121 + deviceChannel.setAddress("wvp-pro");
  122 + deviceChannel.setRegisterWay(0);
  123 + deviceChannel.setSecrecy("0");
  124 +
  125 + return deviceChannel;
  126 + }
107 } 127 }
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java
1 package com.genersoft.iot.vmp.gb28181.transmit.event.response.impl; 1 package com.genersoft.iot.vmp.gb28181.transmit.event.response.impl;
2 2
3 import com.genersoft.iot.vmp.conf.SipConfig; 3 import com.genersoft.iot.vmp.conf.SipConfig;
4 -import com.genersoft.iot.vmp.gb28181.SipLayer;  
5 -import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;  
6 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; 4 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
7 import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver; 5 import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
8 import com.genersoft.iot.vmp.gb28181.transmit.event.response.SIPResponseProcessorAbstract; 6 import com.genersoft.iot.vmp.gb28181.transmit.event.response.SIPResponseProcessorAbstract;
9 -import com.genersoft.iot.vmp.gb28181.utils.HeaderUtils; 7 +import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
10 import gov.nist.javax.sip.ResponseEventExt; 8 import gov.nist.javax.sip.ResponseEventExt;
11 -import gov.nist.javax.sip.message.SIPResponse;  
12 import gov.nist.javax.sip.stack.SIPDialog; 9 import gov.nist.javax.sip.stack.SIPDialog;
13 import org.slf4j.Logger; 10 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory; 11 import org.slf4j.LoggerFactory;
@@ -22,13 +19,10 @@ import javax.sip.*; @@ -22,13 +19,10 @@ import javax.sip.*;
22 import javax.sip.address.Address; 19 import javax.sip.address.Address;
23 import javax.sip.address.SipURI; 20 import javax.sip.address.SipURI;
24 import javax.sip.header.CSeqHeader; 21 import javax.sip.header.CSeqHeader;
25 -import javax.sip.header.CallIdHeader;  
26 import javax.sip.header.UserAgentHeader; 22 import javax.sip.header.UserAgentHeader;
27 import javax.sip.message.Request; 23 import javax.sip.message.Request;
28 import javax.sip.message.Response; 24 import javax.sip.message.Response;
29 import java.text.ParseException; 25 import java.text.ParseException;
30 -import java.util.ArrayList;  
31 -import java.util.List;  
32 26
33 27
34 /** 28 /**
@@ -104,7 +98,7 @@ public class InviteResponseProcessor extends SIPResponseProcessorAbstract { @@ -104,7 +98,7 @@ public class InviteResponseProcessor extends SIPResponseProcessorAbstract {
104 } 98 }
105 requestURI.setPort(event.getRemotePort()); 99 requestURI.setPort(event.getRemotePort());
106 reqAck.setRequestURI(requestURI); 100 reqAck.setRequestURI(requestURI);
107 - UserAgentHeader userAgentHeader = HeaderUtils.createUserAgentHeader(sipFactory); 101 + UserAgentHeader userAgentHeader = SipUtils.createUserAgentHeader(sipFactory);
108 reqAck.addHeader(userAgentHeader); 102 reqAck.addHeader(userAgentHeader);
109 Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort())); 103 Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
110 reqAck.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress)); 104 reqAck.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
src/main/java/com/genersoft/iot/vmp/gb28181/utils/HeaderUtils.java deleted 100644 → 0
1 -package com.genersoft.iot.vmp.gb28181.utils;  
2 -  
3 -import javax.sip.PeerUnavailableException;  
4 -import javax.sip.SipFactory;  
5 -import javax.sip.header.UserAgentHeader;  
6 -import java.text.ParseException;  
7 -import java.util.ArrayList;  
8 -import java.util.List;  
9 -  
10 -/**  
11 - * 生成header的工具类  
12 - * @author lin  
13 - */  
14 -public class HeaderUtils {  
15 -  
16 - public static UserAgentHeader createUserAgentHeader(SipFactory sipFactory) throws PeerUnavailableException, ParseException {  
17 - List<String> agentParam = new ArrayList<>();  
18 - agentParam.add("WVP PRO");  
19 - // TODO 添加版本信息以及日期  
20 - return sipFactory.createHeaderFactory().createUserAgentHeader(agentParam);  
21 - }  
22 -}  
src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
@@ -4,9 +4,16 @@ import gov.nist.javax.sip.address.AddressImpl; @@ -4,9 +4,16 @@ import gov.nist.javax.sip.address.AddressImpl;
4 import gov.nist.javax.sip.address.SipUri; 4 import gov.nist.javax.sip.address.SipUri;
5 import gov.nist.javax.sip.header.Subject; 5 import gov.nist.javax.sip.header.Subject;
6 6
  7 +import javax.sip.PeerUnavailableException;
  8 +import javax.sip.SipFactory;
7 import javax.sip.header.FromHeader; 9 import javax.sip.header.FromHeader;
8 import javax.sip.header.Header; 10 import javax.sip.header.Header;
  11 +import javax.sip.header.UserAgentHeader;
9 import javax.sip.message.Request; 12 import javax.sip.message.Request;
  13 +import java.text.ParseException;
  14 +import java.util.ArrayList;
  15 +import java.util.List;
  16 +import java.util.UUID;
10 17
11 /** 18 /**
12 * @author panlinlin 19 * @author panlinlin
@@ -38,4 +45,25 @@ public class SipUtils { @@ -38,4 +45,25 @@ public class SipUtils {
38 return uri.getUser(); 45 return uri.getUser();
39 } 46 }
40 47
  48 + public static String getNewViaTag() {
  49 + return "z9hG4bK" + System.currentTimeMillis();
  50 + }
  51 +
  52 + public static UserAgentHeader createUserAgentHeader(SipFactory sipFactory) throws PeerUnavailableException, ParseException {
  53 + List<String> agentParam = new ArrayList<>();
  54 + agentParam.add("WVP PRO");
  55 + // TODO 添加版本信息以及日期
  56 + return sipFactory.createHeaderFactory().createUserAgentHeader(agentParam);
  57 + }
  58 +
  59 + public static String getNewFromTag(){
  60 + return UUID.randomUUID().toString().replace("-", "");
  61 +
  62 +// return getNewTag();
  63 + }
  64 +
  65 + public static String getNewTag(){
  66 + return String.valueOf(System.currentTimeMillis());
  67 + }
  68 +
41 } 69 }
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -257,6 +257,7 @@ public class PlayServiceImpl implements IPlayService { @@ -257,6 +257,7 @@ public class PlayServiceImpl implements IPlayService {
257 // 超时处理 257 // 超时处理
258 String timeOutTaskKey = UUID.randomUUID().toString(); 258 String timeOutTaskKey = UUID.randomUUID().toString();
259 SSRCInfo finalSsrcInfo = ssrcInfo; 259 SSRCInfo finalSsrcInfo = ssrcInfo;
  260 + System.out.println("设置超时任务: " + timeOutTaskKey);
260 dynamicTask.startDelay( timeOutTaskKey,()->{ 261 dynamicTask.startDelay( timeOutTaskKey,()->{
261 262
262 SIPDialog dialog = streamSession.getDialogByStream(device.getDeviceId(), channelId, finalSsrcInfo.getStream()); 263 SIPDialog dialog = streamSession.getDialogByStream(device.getDeviceId(), channelId, finalSsrcInfo.getStream());
@@ -282,6 +283,7 @@ public class PlayServiceImpl implements IPlayService { @@ -282,6 +283,7 @@ public class PlayServiceImpl implements IPlayService {
282 } 283 }
283 cmder.playStreamCmd(mediaServerItem, ssrcInfo, device, channelId, (MediaServerItem mediaServerItemInuse, JSONObject response) -> { 284 cmder.playStreamCmd(mediaServerItem, ssrcInfo, device, channelId, (MediaServerItem mediaServerItemInuse, JSONObject response) -> {
284 logger.info("收到订阅消息: " + response.toJSONString()); 285 logger.info("收到订阅消息: " + response.toJSONString());
  286 + System.out.println("停止超时任务: " + timeOutTaskKey);
285 dynamicTask.stop(timeOutTaskKey); 287 dynamicTask.stop(timeOutTaskKey);
286 // hook响应 288 // hook响应
287 onPublishHandlerForPlay(mediaServerItemInuse, response, device.getDeviceId(), channelId, uuid); 289 onPublishHandlerForPlay(mediaServerItemInuse, response, device.getDeviceId(), channelId, uuid);
web_src/src/components/channelList.vue
@@ -250,6 +250,7 @@ export default { @@ -250,6 +250,7 @@ export default {
250 that.loadSnap[deviceId + channelId] = 0; 250 that.loadSnap[deviceId + channelId] = 0;
251 that.getSnapErrorEvent(snapId) 251 that.getSnapErrorEvent(snapId)
252 }, 5000) 252 }, 5000)
  253 + itemData.streamId = res.data.data.stream;
253 that.$refs.devicePlayer.openDialog("media", deviceId, channelId, { 254 that.$refs.devicePlayer.openDialog("media", deviceId, channelId, {
254 streamInfo: res.data.data, 255 streamInfo: res.data.data,
255 hasAudio: itemData.hasAudio 256 hasAudio: itemData.hasAudio