Commit 002782569d323c8a9def230cd561ffb15b1f3f3a
1 parent
b55374c7
修改bug
Showing
5 changed files
with
59 additions
and
46 deletions
README.md
src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEventListener.java
| ... | ... | @@ -38,21 +38,23 @@ public class OfflineEventListener implements ApplicationListener<OfflineEvent> { |
| 38 | 38 | String key = VideoManagerConstants.KEEPLIVEKEY_PREFIX + event.getDeviceId(); |
| 39 | 39 | |
| 40 | 40 | switch (event.getFrom()) { |
| 41 | - // 心跳超时触发的离线事件,说明redis中已删除,无需处理 | |
| 42 | - case VideoManagerConstants.EVENT_OUTLINE_TIMEOUT: | |
| 43 | - break; | |
| 44 | - // 设备主动注销触发的离线事件,需要删除redis中的超时监听 | |
| 45 | - case VideoManagerConstants.EVENT_OUTLINE_UNREGISTER: | |
| 46 | - redis.del(key); | |
| 47 | - break; | |
| 48 | - default: | |
| 49 | - boolean exist = redis.hasKey(key); | |
| 50 | - if (exist) { | |
| 41 | + // 心跳超时触发的离线事件,说明redis中已删除,无需处理 | |
| 42 | + case VideoManagerConstants.EVENT_OUTLINE_TIMEOUT: | |
| 43 | + break; | |
| 44 | + // 设备主动注销触发的离线事件,需要删除redis中的超时监听 | |
| 45 | + case VideoManagerConstants.EVENT_OUTLINE_UNREGISTER: | |
| 51 | 46 | redis.del(key); |
| 52 | - } | |
| 47 | + break; | |
| 48 | + default: | |
| 49 | + boolean exist = redis.hasKey(key); | |
| 50 | + if (exist) { | |
| 51 | + redis.del(key); | |
| 52 | + } | |
| 53 | 53 | } |
| 54 | 54 | |
| 55 | 55 | // 处理离线监听 |
| 56 | 56 | storager.outline(event.getDeviceId()); |
| 57 | + | |
| 58 | + // | |
| 57 | 59 | } |
| 58 | 60 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
| ... | ... | @@ -181,15 +181,15 @@ public class SIPCommander implements ISIPCommander { |
| 181 | 181 | try { |
| 182 | 182 | String cmdStr= cmdString(leftRight, upDown, inOut, moveSpeed, zoomSpeed); |
| 183 | 183 | StringBuffer ptzXml = new StringBuffer(200); |
| 184 | - ptzXml.append("<?xml version=\"1.0\" ?>"); | |
| 185 | - ptzXml.append("<Control>"); | |
| 186 | - ptzXml.append("<CmdType>DeviceControl</CmdType>"); | |
| 187 | - ptzXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>"); | |
| 188 | - ptzXml.append("<DeviceID>" + channelId + "</DeviceID>"); | |
| 189 | - ptzXml.append("<PTZCmd>" + cmdStr + "</PTZCmd>"); | |
| 190 | - ptzXml.append("<Info>"); | |
| 191 | - ptzXml.append("</Info>"); | |
| 192 | - ptzXml.append("</Control>"); | |
| 184 | + ptzXml.append("<?xml version=\"1.0\" ?>\r\n"); | |
| 185 | + ptzXml.append("<Control>\r\n"); | |
| 186 | + ptzXml.append("<CmdType>DeviceControl</CmdType>\r\n"); | |
| 187 | + ptzXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); | |
| 188 | + ptzXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n"); | |
| 189 | + ptzXml.append("<PTZCmd>" + cmdStr + "</PTZCmd>\r\n"); | |
| 190 | + ptzXml.append("<Info>\r\n"); | |
| 191 | + ptzXml.append("</Info>\r\n"); | |
| 192 | + ptzXml.append("</Control>\r\n"); | |
| 193 | 193 | |
| 194 | 194 | Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", "ToPtzTag"); |
| 195 | 195 | |
| ... | ... | @@ -458,12 +458,12 @@ public class SIPCommander implements ISIPCommander { |
| 458 | 458 | public boolean deviceInfoQuery(Device device) { |
| 459 | 459 | try { |
| 460 | 460 | StringBuffer catalogXml = new StringBuffer(200); |
| 461 | - catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>"); | |
| 462 | - catalogXml.append("<Query>"); | |
| 463 | - catalogXml.append("<CmdType>DeviceInfo</CmdType>"); | |
| 464 | - catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>"); | |
| 465 | - catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>"); | |
| 466 | - catalogXml.append("</Query>"); | |
| 461 | + catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n"); | |
| 462 | + catalogXml.append("<Query>\r\n"); | |
| 463 | + catalogXml.append("<CmdType>DeviceInfo</CmdType>\r\n"); | |
| 464 | + catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); | |
| 465 | + catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); | |
| 466 | + catalogXml.append("</Query>\r\n"); | |
| 467 | 467 | |
| 468 | 468 | Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "ViaDeviceInfoBranch", "FromDeviceInfoTag", "ToDeviceInfoTag"); |
| 469 | 469 | transmitRequest(device, request); |
| ... | ... | @@ -486,12 +486,12 @@ public class SIPCommander implements ISIPCommander { |
| 486 | 486 | storager.cleanChannelsForDevice(device.getDeviceId()); |
| 487 | 487 | try { |
| 488 | 488 | StringBuffer catalogXml = new StringBuffer(200); |
| 489 | - catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>"); | |
| 490 | - catalogXml.append("<Query>"); | |
| 491 | - catalogXml.append("<CmdType>Catalog</CmdType>"); | |
| 492 | - catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>"); | |
| 493 | - catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>"); | |
| 494 | - catalogXml.append("</Query>"); | |
| 489 | + catalogXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n"); | |
| 490 | + catalogXml.append("<Query>\r\n"); | |
| 491 | + catalogXml.append("<CmdType>Catalog</CmdType>\r\n"); | |
| 492 | + catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); | |
| 493 | + catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n"); | |
| 494 | + catalogXml.append("</Query>\r\n"); | |
| 495 | 495 | |
| 496 | 496 | Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "ViaCatalogBranch", "FromCatalogTag", "ToCatalogTag"); |
| 497 | 497 | transmitRequest(device, request); |
| ... | ... | @@ -514,17 +514,17 @@ public class SIPCommander implements ISIPCommander { |
| 514 | 514 | |
| 515 | 515 | try { |
| 516 | 516 | StringBuffer recordInfoXml = new StringBuffer(200); |
| 517 | - recordInfoXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>"); | |
| 518 | - recordInfoXml.append("<Query>"); | |
| 519 | - recordInfoXml.append("<CmdType>RecordInfo</CmdType>"); | |
| 520 | - recordInfoXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>"); | |
| 521 | - recordInfoXml.append("<DeviceID>" + channelId + "</DeviceID>"); | |
| 522 | - recordInfoXml.append("<StartTime>" + DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(startTime) + "</StartTime>"); | |
| 523 | - recordInfoXml.append("<EndTime>" + DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(endTime) + "</EndTime>"); | |
| 524 | - recordInfoXml.append("<Secrecy>0</Secrecy>"); | |
| 517 | + recordInfoXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n"); | |
| 518 | + recordInfoXml.append("<Query>\r\n"); | |
| 519 | + recordInfoXml.append("<CmdType>RecordInfo</CmdType>\r\n"); | |
| 520 | + recordInfoXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n"); | |
| 521 | + recordInfoXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n"); | |
| 522 | + recordInfoXml.append("<StartTime>" + DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(startTime) + "</StartTime>\r\n"); | |
| 523 | + recordInfoXml.append("<EndTime>" + DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(endTime) + "</EndTime>\r\n"); | |
| 524 | + recordInfoXml.append("<Secrecy>0</Secrecy>\\r\n"); | |
| 525 | 525 | // 大华NVR要求必须增加一个值为all的文本元素节点Type |
| 526 | - recordInfoXml.append("<Type>all</Type>"); | |
| 527 | - recordInfoXml.append("</Query>"); | |
| 526 | + recordInfoXml.append("<Type>all</Type>\r\n"); | |
| 527 | + recordInfoXml.append("</Query>\r\n"); | |
| 528 | 528 | |
| 529 | 529 | Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(), "ViaRecordInfoBranch", "FromRecordInfoTag", "ToRecordInfoTag"); |
| 530 | 530 | transmitRequest(device, request); | ... | ... |
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
| ... | ... | @@ -99,6 +99,7 @@ public class ZLMRunner implements CommandLineRunner { |
| 99 | 99 | param.put("secret",mediaSecret); |
| 100 | 100 | param.put("hook.enable","1"); |
| 101 | 101 | param.put("hook.on_flow_report",""); |
| 102 | + param.put("hook.on_play",""); | |
| 102 | 103 | param.put("hook.on_http_access",""); |
| 103 | 104 | param.put("hook.on_publish",String.format("%s/on_publish", hookPrex)); |
| 104 | 105 | param.put("hook.on_record_mp4",""); |
| ... | ... | @@ -107,6 +108,7 @@ public class ZLMRunner implements CommandLineRunner { |
| 107 | 108 | param.put("hook.on_rtsp_realm",""); |
| 108 | 109 | param.put("hook.on_server_started",String.format("%s/on_server_started", hookPrex)); |
| 109 | 110 | param.put("hook.on_shell_login",String.format("%s/on_shell_login", hookPrex)); |
| 111 | + param.put("hook.on_stream_changed",String.format("%s/on_stream_changed", hookPrex)); | |
| 110 | 112 | param.put("hook.on_stream_none_reader",String.format("%s/on_stream_none_reader", hookPrex)); |
| 111 | 113 | param.put("hook.on_stream_not_found",String.format("%s/on_stream_not_found", hookPrex)); |
| 112 | 114 | param.put("hook.timeoutSec","20"); | ... | ... |
src/main/java/com/genersoft/iot/vmp/storager/redis/VideoManagerRedisStoragerImpl.java
| ... | ... | @@ -93,7 +93,7 @@ public class VideoManagerRedisStoragerImpl implements IVideoManagerStorager { |
| 93 | 93 | ":" + channel.getName() + |
| 94 | 94 | "_" + (channel.getStatus() == 1 ? "on":"off") + |
| 95 | 95 | "_" + (channelMap.get(channelId).size() > 0)+ |
| 96 | - "_" + channel.getParentId(), | |
| 96 | + "_" + (StringUtils.isEmpty(channel.getParentId())?null:channel.getParentId()), | |
| 97 | 97 | channel); |
| 98 | 98 | // 更新device中的通道数量 |
| 99 | 99 | Device device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceId); |
| ... | ... | @@ -113,7 +113,14 @@ public class VideoManagerRedisStoragerImpl implements IVideoManagerStorager { |
| 113 | 113 | DeviceChannel deviceChannel = queryChannel(deviceId, parentId); |
| 114 | 114 | if (deviceChannel != null) { |
| 115 | 115 | deviceChannel.setSubCount(channelMap.get(parentId).size()); |
| 116 | - redis.set(VideoManagerConstants.CACHEKEY_PREFIX+deviceId + "_" + deviceChannel.getChannelId(), | |
| 116 | +// redis.set(VideoManagerConstants.CACHEKEY_PREFIX+deviceId + "_" + deviceChannel.getChannelId(), | |
| 117 | +// deviceChannel); | |
| 118 | + redis.set(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + | |
| 119 | + "_" + deviceChannel.getChannelId() + | |
| 120 | + ":" + deviceChannel.getName() + | |
| 121 | + "_" + (deviceChannel.getStatus() == 1 ? "on":"off") + | |
| 122 | + "_" + (channelMap.get(deviceChannel.getChannelId()).size() > 0)+ | |
| 123 | + "_" + (StringUtils.isEmpty(deviceChannel.getParentId())?null:deviceChannel.getParentId()), | |
| 117 | 124 | deviceChannel); |
| 118 | 125 | |
| 119 | 126 | } |
| ... | ... | @@ -438,7 +445,8 @@ public class VideoManagerRedisStoragerImpl implements IVideoManagerStorager { |
| 438 | 445 | if (subChannel == null) { |
| 439 | 446 | subChannel = new HashSet<>(); |
| 440 | 447 | } |
| 441 | - if (!"null".equals(s[6])) { | |
| 448 | + System.out.println(key); | |
| 449 | + if (s.length == 7 && !"null".equals(s[6])) { | |
| 442 | 450 | subChannel.add(s[6]); |
| 443 | 451 | } |
| 444 | 452 | channelMap.put(channelId, subChannel); | ... | ... |