Commit 377f0f2c8231df27c0d385f3e2a8bcc4bec547de
1 parent
4c4b62cb
提高注册兼容性, 修复sql兼容mysql
Showing
10 changed files
with
187 additions
and
115 deletions
src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
| @@ -21,25 +21,25 @@ public class MediaConfig { | @@ -21,25 +21,25 @@ public class MediaConfig { | ||
| 21 | private String streamIp; | 21 | private String streamIp; |
| 22 | 22 | ||
| 23 | @Value("${media.httpPort}") | 23 | @Value("${media.httpPort}") |
| 24 | - private String httpPort; | 24 | + private Integer httpPort; |
| 25 | 25 | ||
| 26 | @Value("${media.httpSSlPort:}") | 26 | @Value("${media.httpSSlPort:}") |
| 27 | - private String httpSSlPort; | 27 | + private Integer httpSSlPort; |
| 28 | 28 | ||
| 29 | @Value("${media.rtmpPort:}") | 29 | @Value("${media.rtmpPort:}") |
| 30 | - private String rtmpPort; | 30 | + private Integer rtmpPort; |
| 31 | 31 | ||
| 32 | @Value("${media.rtmpSSlPort:}") | 32 | @Value("${media.rtmpSSlPort:}") |
| 33 | - private String rtmpSSlPort; | 33 | + private Integer rtmpSSlPort; |
| 34 | 34 | ||
| 35 | @Value("${media.rtpProxyPort:}") | 35 | @Value("${media.rtpProxyPort:}") |
| 36 | - private String rtpProxyPort; | 36 | + private Integer rtpProxyPort; |
| 37 | 37 | ||
| 38 | @Value("${media.rtspPort:}") | 38 | @Value("${media.rtspPort:}") |
| 39 | - private String rtspPort; | 39 | + private Integer rtspPort; |
| 40 | 40 | ||
| 41 | @Value("${media.rtspSSLPort:}") | 41 | @Value("${media.rtspSSLPort:}") |
| 42 | - private String rtspSSLPort; | 42 | + private Integer rtspSSLPort; |
| 43 | 43 | ||
| 44 | @Value("${media.autoConfig:true}") | 44 | @Value("${media.autoConfig:true}") |
| 45 | private boolean autoConfig; | 45 | private boolean autoConfig; |
| @@ -57,73 +57,141 @@ public class MediaConfig { | @@ -57,73 +57,141 @@ public class MediaConfig { | ||
| 57 | private String rtpPortRange; | 57 | private String rtpPortRange; |
| 58 | 58 | ||
| 59 | @Value("${media.recordAssistPort}") | 59 | @Value("${media.recordAssistPort}") |
| 60 | - private int recordAssistPort; | 60 | + private Integer recordAssistPort; |
| 61 | 61 | ||
| 62 | public String getIp() { | 62 | public String getIp() { |
| 63 | return ip; | 63 | return ip; |
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | + public void setIp(String ip) { | ||
| 67 | + this.ip = ip; | ||
| 68 | + } | ||
| 69 | + | ||
| 66 | public String getHookIp() { | 70 | public String getHookIp() { |
| 67 | return hookIp; | 71 | return hookIp; |
| 68 | } | 72 | } |
| 69 | 73 | ||
| 74 | + public void setHookIp(String hookIp) { | ||
| 75 | + this.hookIp = hookIp; | ||
| 76 | + } | ||
| 77 | + | ||
| 70 | public String getSdpIp() { | 78 | public String getSdpIp() { |
| 71 | return sdpIp; | 79 | return sdpIp; |
| 72 | } | 80 | } |
| 73 | 81 | ||
| 82 | + public void setSdpIp(String sdpIp) { | ||
| 83 | + this.sdpIp = sdpIp; | ||
| 84 | + } | ||
| 85 | + | ||
| 74 | public String getStreamIp() { | 86 | public String getStreamIp() { |
| 75 | return streamIp; | 87 | return streamIp; |
| 76 | } | 88 | } |
| 77 | 89 | ||
| 78 | - public String getHttpPort() { | 90 | + public void setStreamIp(String streamIp) { |
| 91 | + this.streamIp = streamIp; | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + public Integer getHttpPort() { | ||
| 79 | return httpPort; | 95 | return httpPort; |
| 80 | } | 96 | } |
| 81 | 97 | ||
| 82 | - public String getHttpSSlPort() { | 98 | + public void setHttpPort(Integer httpPort) { |
| 99 | + this.httpPort = httpPort; | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + public Integer getHttpSSlPort() { | ||
| 83 | return httpSSlPort; | 103 | return httpSSlPort; |
| 84 | } | 104 | } |
| 85 | 105 | ||
| 86 | - public String getRtmpPort() { | 106 | + public void setHttpSSlPort(Integer httpSSlPort) { |
| 107 | + this.httpSSlPort = httpSSlPort; | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + public Integer getRtmpPort() { | ||
| 87 | return rtmpPort; | 111 | return rtmpPort; |
| 88 | } | 112 | } |
| 89 | 113 | ||
| 90 | - public String getRtmpSSlPort() { | 114 | + public void setRtmpPort(Integer rtmpPort) { |
| 115 | + this.rtmpPort = rtmpPort; | ||
| 116 | + } | ||
| 117 | + | ||
| 118 | + public Integer getRtmpSSlPort() { | ||
| 91 | return rtmpSSlPort; | 119 | return rtmpSSlPort; |
| 92 | } | 120 | } |
| 93 | 121 | ||
| 94 | - public String getRtpProxyPort() { | 122 | + public void setRtmpSSlPort(Integer rtmpSSlPort) { |
| 123 | + this.rtmpSSlPort = rtmpSSlPort; | ||
| 124 | + } | ||
| 125 | + | ||
| 126 | + public Integer getRtpProxyPort() { | ||
| 95 | return rtpProxyPort; | 127 | return rtpProxyPort; |
| 96 | } | 128 | } |
| 97 | 129 | ||
| 98 | - public String getRtspPort() { | 130 | + public void setRtpProxyPort(Integer rtpProxyPort) { |
| 131 | + this.rtpProxyPort = rtpProxyPort; | ||
| 132 | + } | ||
| 133 | + | ||
| 134 | + public Integer getRtspPort() { | ||
| 99 | return rtspPort; | 135 | return rtspPort; |
| 100 | } | 136 | } |
| 101 | 137 | ||
| 102 | - public String getRtspSSLPort() { | 138 | + public void setRtspPort(Integer rtspPort) { |
| 139 | + this.rtspPort = rtspPort; | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + public Integer getRtspSSLPort() { | ||
| 103 | return rtspSSLPort; | 143 | return rtspSSLPort; |
| 104 | } | 144 | } |
| 105 | 145 | ||
| 146 | + public void setRtspSSLPort(Integer rtspSSLPort) { | ||
| 147 | + this.rtspSSLPort = rtspSSLPort; | ||
| 148 | + } | ||
| 149 | + | ||
| 106 | public boolean isAutoConfig() { | 150 | public boolean isAutoConfig() { |
| 107 | return autoConfig; | 151 | return autoConfig; |
| 108 | } | 152 | } |
| 109 | 153 | ||
| 154 | + public void setAutoConfig(boolean autoConfig) { | ||
| 155 | + this.autoConfig = autoConfig; | ||
| 156 | + } | ||
| 157 | + | ||
| 110 | public String getSecret() { | 158 | public String getSecret() { |
| 111 | return secret; | 159 | return secret; |
| 112 | } | 160 | } |
| 113 | 161 | ||
| 162 | + public void setSecret(String secret) { | ||
| 163 | + this.secret = secret; | ||
| 164 | + } | ||
| 165 | + | ||
| 114 | public String getStreamNoneReaderDelayMS() { | 166 | public String getStreamNoneReaderDelayMS() { |
| 115 | return streamNoneReaderDelayMS; | 167 | return streamNoneReaderDelayMS; |
| 116 | } | 168 | } |
| 117 | 169 | ||
| 170 | + public void setStreamNoneReaderDelayMS(String streamNoneReaderDelayMS) { | ||
| 171 | + this.streamNoneReaderDelayMS = streamNoneReaderDelayMS; | ||
| 172 | + } | ||
| 173 | + | ||
| 118 | public boolean isRtpEnable() { | 174 | public boolean isRtpEnable() { |
| 119 | return rtpEnable; | 175 | return rtpEnable; |
| 120 | } | 176 | } |
| 121 | 177 | ||
| 178 | + public void setRtpEnable(boolean rtpEnable) { | ||
| 179 | + this.rtpEnable = rtpEnable; | ||
| 180 | + } | ||
| 181 | + | ||
| 122 | public String getRtpPortRange() { | 182 | public String getRtpPortRange() { |
| 123 | return rtpPortRange; | 183 | return rtpPortRange; |
| 124 | } | 184 | } |
| 125 | 185 | ||
| 126 | - public int getRecordAssistPort() { | 186 | + public void setRtpPortRange(String rtpPortRange) { |
| 187 | + this.rtpPortRange = rtpPortRange; | ||
| 188 | + } | ||
| 189 | + | ||
| 190 | + public Integer getRecordAssistPort() { | ||
| 127 | return recordAssistPort; | 191 | return recordAssistPort; |
| 128 | } | 192 | } |
| 193 | + | ||
| 194 | + public void setRecordAssistPort(Integer recordAssistPort) { | ||
| 195 | + this.recordAssistPort = recordAssistPort; | ||
| 196 | + } | ||
| 129 | } | 197 | } |
src/main/java/com/genersoft/iot/vmp/gb28181/auth/DigestServerAuthenticationHelper.java
| @@ -109,13 +109,10 @@ public class DigestServerAuthenticationHelper { | @@ -109,13 +109,10 @@ public class DigestServerAuthenticationHelper { | ||
| 109 | WWWAuthenticateHeader proxyAuthenticate = headerFactory | 109 | WWWAuthenticateHeader proxyAuthenticate = headerFactory |
| 110 | .createWWWAuthenticateHeader(DEFAULT_SCHEME); | 110 | .createWWWAuthenticateHeader(DEFAULT_SCHEME); |
| 111 | proxyAuthenticate.setParameter("realm", realm); | 111 | proxyAuthenticate.setParameter("realm", realm); |
| 112 | + proxyAuthenticate.setParameter("qop", "auth"); | ||
| 112 | proxyAuthenticate.setParameter("nonce", generateNonce()); | 113 | proxyAuthenticate.setParameter("nonce", generateNonce()); |
| 113 | - | ||
| 114 | - proxyAuthenticate.setParameter("opaque", ""); | ||
| 115 | - proxyAuthenticate.setParameter("stale", "FALSE"); | ||
| 116 | proxyAuthenticate.setParameter("algorithm", DEFAULT_ALGORITHM); | 114 | proxyAuthenticate.setParameter("algorithm", DEFAULT_ALGORITHM); |
| 117 | 115 | ||
| 118 | -// proxyAuthenticate.setParameter("qop", "auth"); | ||
| 119 | response.setHeader(proxyAuthenticate); | 116 | response.setHeader(proxyAuthenticate); |
| 120 | } catch (Exception ex) { | 117 | } catch (Exception ex) { |
| 121 | InternalErrorHandler.handleException(ex); | 118 | InternalErrorHandler.handleException(ex); |
| @@ -243,26 +240,26 @@ public class DigestServerAuthenticationHelper { | @@ -243,26 +240,26 @@ public class DigestServerAuthenticationHelper { | ||
| 243 | } | 240 | } |
| 244 | 241 | ||
| 245 | public static void main(String[] args) throws NoSuchAlgorithmException { | 242 | public static void main(String[] args) throws NoSuchAlgorithmException { |
| 246 | - String realm = "4401000000"; | ||
| 247 | - String username = "44010000001110008008"; | 243 | + String realm = "3402000000"; |
| 244 | + String username = "44010000001180008012"; | ||
| 248 | 245 | ||
| 249 | 246 | ||
| 250 | - String nonce = "0074b397f86fc263b1b7f9eb72553267"; | ||
| 251 | - String uri = "sip:44010000002000000001@4401000000"; | 247 | + String nonce = "07cab60999fbf643264ace27d3b7de8b"; |
| 248 | + String uri = "sip:34020000002000000001@3402000000"; | ||
| 252 | // qop 保护质量 包含auth(默认的)和auth-int(增加了报文完整性检测)两种策略 | 249 | // qop 保护质量 包含auth(默认的)和auth-int(增加了报文完整性检测)两种策略 |
| 253 | - String qop = null; | 250 | + String qop = "auth"; |
| 254 | 251 | ||
| 255 | // 客户端随机数,这是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。 | 252 | // 客户端随机数,这是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。 |
| 256 | // 这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护 | 253 | // 这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护 |
| 257 | //String cNonce = authHeader.getCNonce(); | 254 | //String cNonce = authHeader.getCNonce(); |
| 258 | 255 | ||
| 259 | // nonce计数器,是一个16进制的数值,表示同一nonce下客户端发送出请求的数量 | 256 | // nonce计数器,是一个16进制的数值,表示同一nonce下客户端发送出请求的数量 |
| 260 | - int nc = -1; | 257 | + int nc = 1; |
| 261 | String ncStr = new DecimalFormat("00000000").format(nc); | 258 | String ncStr = new DecimalFormat("00000000").format(nc); |
| 262 | // String ncStr = new DecimalFormat("00000000").format(Integer.parseInt(nc + "", 16)); | 259 | // String ncStr = new DecimalFormat("00000000").format(Integer.parseInt(nc + "", 16)); |
| 263 | MessageDigest messageDigest = MessageDigest.getInstance(DEFAULT_ALGORITHM); | 260 | MessageDigest messageDigest = MessageDigest.getInstance(DEFAULT_ALGORITHM); |
| 264 | - String A1 = username + ":" + realm + ":" + "crservice@123"; | ||
| 265 | - String A2 = "REGISTER" + ":" + uri.toString(); | 261 | + String A1 = username + ":" + realm + ":" + "12345678"; |
| 262 | + String A2 = "REGISTER" + ":" + uri; | ||
| 266 | byte mdbytes[] = messageDigest.digest(A1.getBytes()); | 263 | byte mdbytes[] = messageDigest.digest(A1.getBytes()); |
| 267 | String HA1 = toHexString(mdbytes); | 264 | String HA1 = toHexString(mdbytes); |
| 268 | System.out.println("A1: " + A1); | 265 | System.out.println("A1: " + A1); |
| @@ -272,7 +269,7 @@ public class DigestServerAuthenticationHelper { | @@ -272,7 +269,7 @@ public class DigestServerAuthenticationHelper { | ||
| 272 | String HA2 = toHexString(mdbytes); | 269 | String HA2 = toHexString(mdbytes); |
| 273 | System.out.println("HA1: " + HA1); | 270 | System.out.println("HA1: " + HA1); |
| 274 | System.out.println("HA2: " + HA2); | 271 | System.out.println("HA2: " + HA2); |
| 275 | - String cnonce = null; | 272 | + String cnonce = "0a4f113b"; |
| 276 | System.out.println("nonce: " + nonce); | 273 | System.out.println("nonce: " + nonce); |
| 277 | System.out.println("nc: " + ncStr); | 274 | System.out.println("nc: " + ncStr); |
| 278 | System.out.println("cnonce: " + cnonce); | 275 | System.out.println("cnonce: " + cnonce); |
| @@ -293,7 +290,7 @@ public class DigestServerAuthenticationHelper { | @@ -293,7 +290,7 @@ public class DigestServerAuthenticationHelper { | ||
| 293 | mdbytes = messageDigest.digest(KD.getBytes()); | 290 | mdbytes = messageDigest.digest(KD.getBytes()); |
| 294 | String mdString = toHexString(mdbytes); | 291 | String mdString = toHexString(mdbytes); |
| 295 | System.out.println("mdString: " + mdString); | 292 | System.out.println("mdString: " + mdString); |
| 296 | - String response = "fdb1608a7a3b96f0598f40b8ba78d6a9"; | 293 | + String response = "4f0507d4b87cdecff04bdaf4c96348f0"; |
| 297 | System.out.println("response: " + response); | 294 | System.out.println("response: " + response); |
| 298 | } | 295 | } |
| 299 | } | 296 | } |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
| @@ -356,10 +356,10 @@ public class SIPCommander implements ISIPCommander { | @@ -356,10 +356,10 @@ public class SIPCommander implements ISIPCommander { | ||
| 356 | logger.warn("点播时发现ZLM尚未连接..."); | 356 | logger.warn("点播时发现ZLM尚未连接..."); |
| 357 | return; | 357 | return; |
| 358 | } | 358 | } |
| 359 | - String mediaPort = null; | 359 | + Integer mediaPort = null; |
| 360 | // 使用动态udp端口 | 360 | // 使用动态udp端口 |
| 361 | if (mediaConfig.isRtpEnable()) { | 361 | if (mediaConfig.isRtpEnable()) { |
| 362 | - mediaPort = zlmrtpServerFactory.createRTPServer(streamId) + ""; | 362 | + mediaPort = zlmrtpServerFactory.createRTPServer(streamId); |
| 363 | }else { | 363 | }else { |
| 364 | mediaPort = mediaInfo.getRtpProxyPort(); | 364 | mediaPort = mediaInfo.getRtpProxyPort(); |
| 365 | } | 365 | } |
| @@ -485,10 +485,10 @@ public class SIPCommander implements ISIPCommander { | @@ -485,10 +485,10 @@ public class SIPCommander implements ISIPCommander { | ||
| 485 | content.append("c=IN IP4 "+mediaInfo.getSdpIp()+"\r\n"); | 485 | content.append("c=IN IP4 "+mediaInfo.getSdpIp()+"\r\n"); |
| 486 | content.append("t="+DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime)+" " | 486 | content.append("t="+DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime)+" " |
| 487 | +DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) +"\r\n"); | 487 | +DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) +"\r\n"); |
| 488 | - String mediaPort = null; | 488 | + Integer mediaPort = null; |
| 489 | // 使用动态udp端口 | 489 | // 使用动态udp端口 |
| 490 | if (mediaConfig.isRtpEnable()) { | 490 | if (mediaConfig.isRtpEnable()) { |
| 491 | - mediaPort = zlmrtpServerFactory.createRTPServer(streamId) + ""; | 491 | + mediaPort = zlmrtpServerFactory.createRTPServer(streamId); |
| 492 | }else { | 492 | }else { |
| 493 | mediaPort = mediaInfo.getRtpProxyPort(); | 493 | mediaPort = mediaInfo.getRtpProxyPort(); |
| 494 | } | 494 | } |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
| @@ -336,11 +336,6 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor { | @@ -336,11 +336,6 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor { | ||
| 336 | String username = sdp.getOrigin().getUsername(); | 336 | String username = sdp.getOrigin().getUsername(); |
| 337 | String addressStr = sdp.getOrigin().getAddress(); | 337 | String addressStr = sdp.getOrigin().getAddress(); |
| 338 | logger.info("设备{}请求语音流,地址:{}:{},ssrc:{}", username, addressStr, port, ssrc); | 338 | logger.info("设备{}请求语音流,地址:{}:{},ssrc:{}", username, addressStr, port, ssrc); |
| 339 | - | ||
| 340 | - | ||
| 341 | - | ||
| 342 | - | ||
| 343 | - | ||
| 344 | 339 | ||
| 345 | } else { | 340 | } else { |
| 346 | logger.warn("来自无效设备/平台的请求"); | 341 | logger.warn("来自无效设备/平台的请求"); |
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMServerConfig.java
| @@ -43,6 +43,8 @@ public class ZLMServerConfig { | @@ -43,6 +43,8 @@ public class ZLMServerConfig { | ||
| 43 | 43 | ||
| 44 | private String updateTime; | 44 | private String updateTime; |
| 45 | 45 | ||
| 46 | + private String createTime; | ||
| 47 | + | ||
| 46 | @JSONField(name = "hls.fileBufSize") | 48 | @JSONField(name = "hls.fileBufSize") |
| 47 | private String hlsFileBufSize; | 49 | private String hlsFileBufSize; |
| 48 | 50 | ||
| @@ -65,7 +67,7 @@ public class ZLMServerConfig { | @@ -65,7 +67,7 @@ public class ZLMServerConfig { | ||
| 65 | private String hookEnable; | 67 | private String hookEnable; |
| 66 | 68 | ||
| 67 | @JSONField(name = "hook.on_flow_report") | 69 | @JSONField(name = "hook.on_flow_report") |
| 68 | - private String hookOnFlowReport; | 70 | + private Integer hookOnFlowReport; |
| 69 | 71 | ||
| 70 | @JSONField(name = "hook.on_http_access") | 72 | @JSONField(name = "hook.on_http_access") |
| 71 | private String hookOnHttpAccess; | 73 | private String hookOnHttpAccess; |
| @@ -116,7 +118,7 @@ public class ZLMServerConfig { | @@ -116,7 +118,7 @@ public class ZLMServerConfig { | ||
| 116 | private String httpNotFound; | 118 | private String httpNotFound; |
| 117 | 119 | ||
| 118 | @JSONField(name = "http.port") | 120 | @JSONField(name = "http.port") |
| 119 | - private String httpPort; | 121 | + private Integer httpPort; |
| 120 | 122 | ||
| 121 | @JSONField(name = "http.rootPath") | 123 | @JSONField(name = "http.rootPath") |
| 122 | private String httpRootPath; | 124 | private String httpRootPath; |
| @@ -125,7 +127,7 @@ public class ZLMServerConfig { | @@ -125,7 +127,7 @@ public class ZLMServerConfig { | ||
| 125 | private String httpSendBufSize; | 127 | private String httpSendBufSize; |
| 126 | 128 | ||
| 127 | @JSONField(name = "http.sslport") | 129 | @JSONField(name = "http.sslport") |
| 128 | - private String httpSSLport; | 130 | + private Integer httpSSLport; |
| 129 | 131 | ||
| 130 | @JSONField(name = "multicast.addrMax") | 132 | @JSONField(name = "multicast.addrMax") |
| 131 | private String multicastAddrMax; | 133 | private String multicastAddrMax; |
| @@ -158,10 +160,10 @@ public class ZLMServerConfig { | @@ -158,10 +160,10 @@ public class ZLMServerConfig { | ||
| 158 | private String rtmpModifyStamp; | 160 | private String rtmpModifyStamp; |
| 159 | 161 | ||
| 160 | @JSONField(name = "rtmp.port") | 162 | @JSONField(name = "rtmp.port") |
| 161 | - private String rtmpPort; | 163 | + private Integer rtmpPort; |
| 162 | 164 | ||
| 163 | @JSONField(name = "rtmp.sslport") | 165 | @JSONField(name = "rtmp.sslport") |
| 164 | - private String rtmpSslPort; | 166 | + private Integer rtmpSslPort; |
| 165 | 167 | ||
| 166 | @JSONField(name = "rtp.audioMtuSize") | 168 | @JSONField(name = "rtp.audioMtuSize") |
| 167 | private String rtpAudioMtuSize; | 169 | private String rtpAudioMtuSize; |
| @@ -185,7 +187,7 @@ public class ZLMServerConfig { | @@ -185,7 +187,7 @@ public class ZLMServerConfig { | ||
| 185 | private String rtpProxyDumpDir; | 187 | private String rtpProxyDumpDir; |
| 186 | 188 | ||
| 187 | @JSONField(name = "rtp_proxy.port") | 189 | @JSONField(name = "rtp_proxy.port") |
| 188 | - private String rtpProxyPort; | 190 | + private Integer rtpProxyPort; |
| 189 | 191 | ||
| 190 | @JSONField(name = "rtp_proxy.timeoutSec") | 192 | @JSONField(name = "rtp_proxy.timeoutSec") |
| 191 | private String rtpProxyTimeoutSec; | 193 | private String rtpProxyTimeoutSec; |
| @@ -200,10 +202,10 @@ public class ZLMServerConfig { | @@ -200,10 +202,10 @@ public class ZLMServerConfig { | ||
| 200 | private String rtspKeepAliveSecond; | 202 | private String rtspKeepAliveSecond; |
| 201 | 203 | ||
| 202 | @JSONField(name = "rtsp.port") | 204 | @JSONField(name = "rtsp.port") |
| 203 | - private String rtspPort; | 205 | + private Integer rtspPort; |
| 204 | 206 | ||
| 205 | @JSONField(name = "rtsp.sslport") | 207 | @JSONField(name = "rtsp.sslport") |
| 206 | - private String rtspSSlport; | 208 | + private Integer rtspSSlport; |
| 207 | 209 | ||
| 208 | @JSONField(name = "shell.maxReqSize") | 210 | @JSONField(name = "shell.maxReqSize") |
| 209 | private String shellMaxReqSize; | 211 | private String shellMaxReqSize; |
| @@ -211,7 +213,6 @@ public class ZLMServerConfig { | @@ -211,7 +213,6 @@ public class ZLMServerConfig { | ||
| 211 | @JSONField(name = "shell.shell") | 213 | @JSONField(name = "shell.shell") |
| 212 | private String shellPhell; | 214 | private String shellPhell; |
| 213 | 215 | ||
| 214 | - | ||
| 215 | public String getApiDebug() { | 216 | public String getApiDebug() { |
| 216 | return apiDebug; | 217 | return apiDebug; |
| 217 | } | 218 | } |
| @@ -260,6 +261,14 @@ public class ZLMServerConfig { | @@ -260,6 +261,14 @@ public class ZLMServerConfig { | ||
| 260 | this.generalEnableVhost = generalEnableVhost; | 261 | this.generalEnableVhost = generalEnableVhost; |
| 261 | } | 262 | } |
| 262 | 263 | ||
| 264 | + public String getGeneralMediaServerId() { | ||
| 265 | + return generalMediaServerId; | ||
| 266 | + } | ||
| 267 | + | ||
| 268 | + public void setGeneralMediaServerId(String generalMediaServerId) { | ||
| 269 | + this.generalMediaServerId = generalMediaServerId; | ||
| 270 | + } | ||
| 271 | + | ||
| 263 | public String getGeneralFlowThreshold() { | 272 | public String getGeneralFlowThreshold() { |
| 264 | return generalFlowThreshold; | 273 | return generalFlowThreshold; |
| 265 | } | 274 | } |
| @@ -292,6 +301,38 @@ public class ZLMServerConfig { | @@ -292,6 +301,38 @@ public class ZLMServerConfig { | ||
| 292 | this.ip = ip; | 301 | this.ip = ip; |
| 293 | } | 302 | } |
| 294 | 303 | ||
| 304 | + public String getSdpIp() { | ||
| 305 | + return sdpIp; | ||
| 306 | + } | ||
| 307 | + | ||
| 308 | + public void setSdpIp(String sdpIp) { | ||
| 309 | + this.sdpIp = sdpIp; | ||
| 310 | + } | ||
| 311 | + | ||
| 312 | + public String getStreamIp() { | ||
| 313 | + return streamIp; | ||
| 314 | + } | ||
| 315 | + | ||
| 316 | + public void setStreamIp(String streamIp) { | ||
| 317 | + this.streamIp = streamIp; | ||
| 318 | + } | ||
| 319 | + | ||
| 320 | + public String getUpdateTime() { | ||
| 321 | + return updateTime; | ||
| 322 | + } | ||
| 323 | + | ||
| 324 | + public void setUpdateTime(String updateTime) { | ||
| 325 | + this.updateTime = updateTime; | ||
| 326 | + } | ||
| 327 | + | ||
| 328 | + public String getCreateTime() { | ||
| 329 | + return createTime; | ||
| 330 | + } | ||
| 331 | + | ||
| 332 | + public void setCreateTime(String createTime) { | ||
| 333 | + this.createTime = createTime; | ||
| 334 | + } | ||
| 335 | + | ||
| 295 | public String getHlsFileBufSize() { | 336 | public String getHlsFileBufSize() { |
| 296 | return hlsFileBufSize; | 337 | return hlsFileBufSize; |
| 297 | } | 338 | } |
| @@ -348,11 +389,11 @@ public class ZLMServerConfig { | @@ -348,11 +389,11 @@ public class ZLMServerConfig { | ||
| 348 | this.hookEnable = hookEnable; | 389 | this.hookEnable = hookEnable; |
| 349 | } | 390 | } |
| 350 | 391 | ||
| 351 | - public String getHookOnFlowReport() { | 392 | + public Integer getHookOnFlowReport() { |
| 352 | return hookOnFlowReport; | 393 | return hookOnFlowReport; |
| 353 | } | 394 | } |
| 354 | 395 | ||
| 355 | - public void setHookOnFlowReport(String hookOnFlowReport) { | 396 | + public void setHookOnFlowReport(Integer hookOnFlowReport) { |
| 356 | this.hookOnFlowReport = hookOnFlowReport; | 397 | this.hookOnFlowReport = hookOnFlowReport; |
| 357 | } | 398 | } |
| 358 | 399 | ||
| @@ -484,11 +525,11 @@ public class ZLMServerConfig { | @@ -484,11 +525,11 @@ public class ZLMServerConfig { | ||
| 484 | this.httpNotFound = httpNotFound; | 525 | this.httpNotFound = httpNotFound; |
| 485 | } | 526 | } |
| 486 | 527 | ||
| 487 | - public String getHttpPort() { | 528 | + public Integer getHttpPort() { |
| 488 | return httpPort; | 529 | return httpPort; |
| 489 | } | 530 | } |
| 490 | 531 | ||
| 491 | - public void setHttpPort(String httpPort) { | 532 | + public void setHttpPort(Integer httpPort) { |
| 492 | this.httpPort = httpPort; | 533 | this.httpPort = httpPort; |
| 493 | } | 534 | } |
| 494 | 535 | ||
| @@ -508,11 +549,11 @@ public class ZLMServerConfig { | @@ -508,11 +549,11 @@ public class ZLMServerConfig { | ||
| 508 | this.httpSendBufSize = httpSendBufSize; | 549 | this.httpSendBufSize = httpSendBufSize; |
| 509 | } | 550 | } |
| 510 | 551 | ||
| 511 | - public String getHttpSSLport() { | 552 | + public Integer getHttpSSLport() { |
| 512 | return httpSSLport; | 553 | return httpSSLport; |
| 513 | } | 554 | } |
| 514 | 555 | ||
| 515 | - public void setHttpSSLport(String httpSSLport) { | 556 | + public void setHttpSSLport(Integer httpSSLport) { |
| 516 | this.httpSSLport = httpSSLport; | 557 | this.httpSSLport = httpSSLport; |
| 517 | } | 558 | } |
| 518 | 559 | ||
| @@ -596,14 +637,22 @@ public class ZLMServerConfig { | @@ -596,14 +637,22 @@ public class ZLMServerConfig { | ||
| 596 | this.rtmpModifyStamp = rtmpModifyStamp; | 637 | this.rtmpModifyStamp = rtmpModifyStamp; |
| 597 | } | 638 | } |
| 598 | 639 | ||
| 599 | - public String getRtmpPort() { | 640 | + public Integer getRtmpPort() { |
| 600 | return rtmpPort; | 641 | return rtmpPort; |
| 601 | } | 642 | } |
| 602 | 643 | ||
| 603 | - public void setRtmpPort(String rtmpPort) { | 644 | + public void setRtmpPort(Integer rtmpPort) { |
| 604 | this.rtmpPort = rtmpPort; | 645 | this.rtmpPort = rtmpPort; |
| 605 | } | 646 | } |
| 606 | 647 | ||
| 648 | + public Integer getRtmpSslPort() { | ||
| 649 | + return rtmpSslPort; | ||
| 650 | + } | ||
| 651 | + | ||
| 652 | + public void setRtmpSslPort(Integer rtmpSslPort) { | ||
| 653 | + this.rtmpSslPort = rtmpSslPort; | ||
| 654 | + } | ||
| 655 | + | ||
| 607 | public String getRtpAudioMtuSize() { | 656 | public String getRtpAudioMtuSize() { |
| 608 | return rtpAudioMtuSize; | 657 | return rtpAudioMtuSize; |
| 609 | } | 658 | } |
| @@ -660,11 +709,11 @@ public class ZLMServerConfig { | @@ -660,11 +709,11 @@ public class ZLMServerConfig { | ||
| 660 | this.rtpProxyDumpDir = rtpProxyDumpDir; | 709 | this.rtpProxyDumpDir = rtpProxyDumpDir; |
| 661 | } | 710 | } |
| 662 | 711 | ||
| 663 | - public String getRtpProxyPort() { | 712 | + public Integer getRtpProxyPort() { |
| 664 | return rtpProxyPort; | 713 | return rtpProxyPort; |
| 665 | } | 714 | } |
| 666 | 715 | ||
| 667 | - public void setRtpProxyPort(String rtpProxyPort) { | 716 | + public void setRtpProxyPort(Integer rtpProxyPort) { |
| 668 | this.rtpProxyPort = rtpProxyPort; | 717 | this.rtpProxyPort = rtpProxyPort; |
| 669 | } | 718 | } |
| 670 | 719 | ||
| @@ -700,19 +749,19 @@ public class ZLMServerConfig { | @@ -700,19 +749,19 @@ public class ZLMServerConfig { | ||
| 700 | this.rtspKeepAliveSecond = rtspKeepAliveSecond; | 749 | this.rtspKeepAliveSecond = rtspKeepAliveSecond; |
| 701 | } | 750 | } |
| 702 | 751 | ||
| 703 | - public String getRtspPort() { | 752 | + public Integer getRtspPort() { |
| 704 | return rtspPort; | 753 | return rtspPort; |
| 705 | } | 754 | } |
| 706 | 755 | ||
| 707 | - public void setRtspPort(String rtspPort) { | 756 | + public void setRtspPort(Integer rtspPort) { |
| 708 | this.rtspPort = rtspPort; | 757 | this.rtspPort = rtspPort; |
| 709 | } | 758 | } |
| 710 | 759 | ||
| 711 | - public String getRtspSSlport() { | 760 | + public Integer getRtspSSlport() { |
| 712 | return rtspSSlport; | 761 | return rtspSSlport; |
| 713 | } | 762 | } |
| 714 | 763 | ||
| 715 | - public void setRtspSSlport(String rtspSSlport) { | 764 | + public void setRtspSSlport(Integer rtspSSlport) { |
| 716 | this.rtspSSlport = rtspSSlport; | 765 | this.rtspSSlport = rtspSSlport; |
| 717 | } | 766 | } |
| 718 | 767 | ||
| @@ -731,48 +780,4 @@ public class ZLMServerConfig { | @@ -731,48 +780,4 @@ public class ZLMServerConfig { | ||
| 731 | public void setShellPhell(String shellPhell) { | 780 | public void setShellPhell(String shellPhell) { |
| 732 | this.shellPhell = shellPhell; | 781 | this.shellPhell = shellPhell; |
| 733 | } | 782 | } |
| 734 | - | ||
| 735 | - public String getUpdateTime() { | ||
| 736 | - return updateTime; | ||
| 737 | - } | ||
| 738 | - | ||
| 739 | - public void setUpdateTime(String updateTime) { | ||
| 740 | - this.updateTime = updateTime; | ||
| 741 | - } | ||
| 742 | - | ||
| 743 | - public String getGeneralMediaServerId() { | ||
| 744 | - return generalMediaServerId; | ||
| 745 | - } | ||
| 746 | - | ||
| 747 | - public void setGeneralMediaServerId(String generalMediaServerId) { | ||
| 748 | - this.generalMediaServerId = generalMediaServerId; | ||
| 749 | - } | ||
| 750 | - | ||
| 751 | - public String getRtmpSslPort() { | ||
| 752 | - return rtmpSslPort; | ||
| 753 | - } | ||
| 754 | - | ||
| 755 | - public void setRtmpSslPort(String rtmpSslPort) { | ||
| 756 | - this.rtmpSslPort = rtmpSslPort; | ||
| 757 | - } | ||
| 758 | - | ||
| 759 | - public String getSdpIp() { | ||
| 760 | - if (StringUtils.isEmpty(sdpIp)) { | ||
| 761 | - return ip; | ||
| 762 | - }else { | ||
| 763 | - return sdpIp; | ||
| 764 | - } | ||
| 765 | - } | ||
| 766 | - | ||
| 767 | - public void setSdpIp(String sdpIp) { | ||
| 768 | - this.sdpIp = sdpIp; | ||
| 769 | - } | ||
| 770 | - | ||
| 771 | - public String getStreamIp() { | ||
| 772 | - return streamIp; | ||
| 773 | - } | ||
| 774 | - | ||
| 775 | - public void setStreamIp(String streamIp) { | ||
| 776 | - this.streamIp = streamIp; | ||
| 777 | - } | ||
| 778 | } | 783 | } |
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
| @@ -19,12 +19,12 @@ public interface DeviceChannelMapper { | @@ -19,12 +19,12 @@ public interface DeviceChannelMapper { | ||
| 19 | "ipAddress, port, password, PTZType, status, streamId, longitude, latitude, createTime, updateTime) " + | 19 | "ipAddress, port, password, PTZType, status, streamId, longitude, latitude, createTime, updateTime) " + |
| 20 | "VALUES ('${channelId}', '${deviceId}', '${name}', '${manufacture}', '${model}', '${owner}', '${civilCode}', '${block}'," + | 20 | "VALUES ('${channelId}', '${deviceId}', '${name}', '${manufacture}', '${model}', '${owner}', '${civilCode}', '${block}'," + |
| 21 | "'${address}', ${parental}, '${parentId}', ${safetyWay}, ${registerWay}, '${certNum}', ${certifiable}, ${errCode}, '${secrecy}', " + | 21 | "'${address}', ${parental}, '${parentId}', ${safetyWay}, ${registerWay}, '${certNum}', ${certifiable}, ${errCode}, '${secrecy}', " + |
| 22 | - "'${ipAddress}', ${port}, '${password}', ${PTZType}, ${status}, '${streamId}', ${longitude}, ${latitude}, datetime('now','localtime'), datetime('now','localtime'))") | 22 | + "'${ipAddress}', ${port}, '${password}', ${PTZType}, ${status}, '${streamId}', ${longitude}, ${latitude},'${createTime}', '${updateTime}')") |
| 23 | int add(DeviceChannel channel); | 23 | int add(DeviceChannel channel); |
| 24 | 24 | ||
| 25 | @Update(value = {" <script>" + | 25 | @Update(value = {" <script>" + |
| 26 | "UPDATE device_channel " + | 26 | "UPDATE device_channel " + |
| 27 | - "SET updateTime=datetime('now','localtime')" + | 27 | + "SET updateTime='${updateTime}'" + |
| 28 | "<if test=\"name != null\">, name='${name}'</if>" + | 28 | "<if test=\"name != null\">, name='${name}'</if>" + |
| 29 | "<if test=\"manufacture != null\">, manufacture='${manufacture}'</if>" + | 29 | "<if test=\"manufacture != null\">, manufacture='${manufacture}'</if>" + |
| 30 | "<if test=\"model != null\">, model='${model}'</if>" + | 30 | "<if test=\"model != null\">, model='${model}'</if>" + |
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
| @@ -47,15 +47,15 @@ public interface DeviceMapper { | @@ -47,15 +47,15 @@ public interface DeviceMapper { | ||
| 47 | "#{expires}," + | 47 | "#{expires}," + |
| 48 | "#{registerTime}," + | 48 | "#{registerTime}," + |
| 49 | "#{keepaliveTime}," + | 49 | "#{keepaliveTime}," + |
| 50 | - "datetime('now','localtime')," + | ||
| 51 | - "datetime('now','localtime')," + | 50 | + "#{createTime}," + |
| 51 | + "#{updateTime}," + | ||
| 52 | "#{online}" + | 52 | "#{online}" + |
| 53 | ")") | 53 | ")") |
| 54 | int add(Device device); | 54 | int add(Device device); |
| 55 | 55 | ||
| 56 | @Update(value = {" <script>" + | 56 | @Update(value = {" <script>" + |
| 57 | "UPDATE device " + | 57 | "UPDATE device " + |
| 58 | - "SET updateTime=datetime('now','localtime')" + | 58 | + "SET updateTime='${updateTime}'" + |
| 59 | "<if test=\"name != null\">, name='${name}'</if>" + | 59 | "<if test=\"name != null\">, name='${name}'</if>" + |
| 60 | "<if test=\"manufacturer != null\">, manufacturer='${manufacturer}'</if>" + | 60 | "<if test=\"manufacturer != null\">, manufacturer='${manufacturer}'</if>" + |
| 61 | "<if test=\"model != null\">, model='${model}'</if>" + | 61 | "<if test=\"model != null\">, model='${model}'</if>" + |
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
| 1 | package com.genersoft.iot.vmp.storager.impl; | 1 | package com.genersoft.iot.vmp.storager.impl; |
| 2 | 2 | ||
| 3 | +import java.text.SimpleDateFormat; | ||
| 3 | import java.util.*; | 4 | import java.util.*; |
| 4 | 5 | ||
| 5 | import com.genersoft.iot.vmp.common.StreamInfo; | 6 | import com.genersoft.iot.vmp.common.StreamInfo; |
| @@ -70,6 +71,8 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { | @@ -70,6 +71,8 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { | ||
| 70 | @Autowired | 71 | @Autowired |
| 71 | private VideoStreamSessionManager streamSession; | 72 | private VideoStreamSessionManager streamSession; |
| 72 | 73 | ||
| 74 | + private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | ||
| 75 | + | ||
| 73 | 76 | ||
| 74 | /** | 77 | /** |
| 75 | * 根据设备ID判断设备是否存在 | 78 | * 根据设备ID判断设备是否存在 |
| @@ -103,8 +106,11 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { | @@ -103,8 +106,11 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { | ||
| 103 | */ | 106 | */ |
| 104 | @Override | 107 | @Override |
| 105 | public synchronized boolean updateDevice(Device device) { | 108 | public synchronized boolean updateDevice(Device device) { |
| 109 | + String now = this.format.format(new Date(System.currentTimeMillis())); | ||
| 110 | + device.setUpdateTime(now); | ||
| 106 | Device deviceByDeviceId = deviceMapper.getDeviceByDeviceId(device.getDeviceId()); | 111 | Device deviceByDeviceId = deviceMapper.getDeviceByDeviceId(device.getDeviceId()); |
| 107 | if (deviceByDeviceId == null) { | 112 | if (deviceByDeviceId == null) { |
| 113 | + device.setCreateTime(now); | ||
| 108 | return deviceMapper.add(device) > 0; | 114 | return deviceMapper.add(device) > 0; |
| 109 | }else { | 115 | }else { |
| 110 | return deviceMapper.update(device) > 0; | 116 | return deviceMapper.update(device) > 0; |
| @@ -117,8 +123,11 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { | @@ -117,8 +123,11 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { | ||
| 117 | String channelId = channel.getChannelId(); | 123 | String channelId = channel.getChannelId(); |
| 118 | channel.setDeviceId(deviceId); | 124 | channel.setDeviceId(deviceId); |
| 119 | channel.setStreamId(streamSession.getStreamId(deviceId, channel.getChannelId())); | 125 | channel.setStreamId(streamSession.getStreamId(deviceId, channel.getChannelId())); |
| 126 | + String now = this.format.format(new Date(System.currentTimeMillis())); | ||
| 127 | + channel.setUpdateTime(now); | ||
| 120 | DeviceChannel deviceChannel = deviceChannelMapper.queryChannel(deviceId, channelId); | 128 | DeviceChannel deviceChannel = deviceChannelMapper.queryChannel(deviceId, channelId); |
| 121 | if (deviceChannel == null) { | 129 | if (deviceChannel == null) { |
| 130 | + channel.setCreateTime(now); | ||
| 122 | deviceChannelMapper.add(channel); | 131 | deviceChannelMapper.add(channel); |
| 123 | }else { | 132 | }else { |
| 124 | deviceChannelMapper.update(channel); | 133 | deviceChannelMapper.update(channel); |
src/main/resources/all-application.yml
| @@ -19,6 +19,7 @@ spring: | @@ -19,6 +19,7 @@ spring: | ||
| 19 | timeout: 10000 | 19 | timeout: 10000 |
| 20 | # [可选] jdbc数据库配置, 项目使用sqlite作为数据库,一般不需要配置 | 20 | # [可选] jdbc数据库配置, 项目使用sqlite作为数据库,一般不需要配置 |
| 21 | datasource: | 21 | datasource: |
| 22 | + # 使用mysql 打开23-28行注释, 删除29-36行 | ||
| 22 | # name: wvp | 23 | # name: wvp |
| 23 | # url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true | 24 | # url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true |
| 24 | # username: | 25 | # username: |
web_src/src/components/DeviceList.vue
| @@ -13,16 +13,13 @@ | @@ -13,16 +13,13 @@ | ||
| 13 | </div> | 13 | </div> |
| 14 | <!-- <devicePlayer ref="devicePlayer"></devicePlayer> --> | 14 | <!-- <devicePlayer ref="devicePlayer"></devicePlayer> --> |
| 15 | <!--设备列表--> | 15 | <!--设备列表--> |
| 16 | - <el-table :data="deviceList" border style="width: 100%" :height="winHeight"> | 16 | + <el-table :data="deviceList" border style="width: 100%;font-size: 12px;" :height="winHeight"> |
| 17 | <el-table-column prop="name" label="名称" align="center"> | 17 | <el-table-column prop="name" label="名称" align="center"> |
| 18 | </el-table-column> | 18 | </el-table-column> |
| 19 | <el-table-column prop="deviceId" label="设备编号" width="180" align="center"> | 19 | <el-table-column prop="deviceId" label="设备编号" width="180" align="center"> |
| 20 | </el-table-column> | 20 | </el-table-column> |
| 21 | - | ||
| 22 | <el-table-column prop="manufacturer" label="厂家" align="center"> | 21 | <el-table-column prop="manufacturer" label="厂家" align="center"> |
| 23 | </el-table-column> | 22 | </el-table-column> |
| 24 | - <el-table-column prop="model" label="固件版本" align="center" width="120"> | ||
| 25 | - </el-table-column> | ||
| 26 | <el-table-column label="流传输模式" align="center" width="120"> | 23 | <el-table-column label="流传输模式" align="center" width="120"> |
| 27 | <template slot-scope="scope"> | 24 | <template slot-scope="scope"> |
| 28 | <el-select size="mini" @change="transportChange(scope.row)" v-model="scope.row.streamMode" placeholder="请选择"> | 25 | <el-select size="mini" @change="transportChange(scope.row)" v-model="scope.row.streamMode" placeholder="请选择"> |