From 6d52e1539f6c33d5b625ff7fd56bccf8b76971b3 Mon Sep 17 00:00:00 2001 From: shanyuanzz <46706605+shanyuanzz@users.noreply.github.com> Date: 星期日, 28 五月 2023 13:48:55 +0800 Subject: [PATCH] 优化zoom低倍速下的变倍速率 --- src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java | 64 ++++++++++++++++++++++++-------- 1 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java index d25e537..a0d120c 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.genersoft.iot.vmp.service.impl; +import com.genersoft.iot.vmp.common.VideoManagerConstants; import com.genersoft.iot.vmp.conf.DynamicTask; import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.gb28181.bean.*; @@ -11,6 +12,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.cmd.CatalogResponseMessageHandler; import com.genersoft.iot.vmp.service.IDeviceChannelService; import com.genersoft.iot.vmp.service.IDeviceService; +import com.genersoft.iot.vmp.service.IInviteStreamService; import com.genersoft.iot.vmp.service.IMediaServerService; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; @@ -45,8 +47,6 @@ private final static Logger logger = LoggerFactory.getLogger(DeviceServiceImpl.class); - private final String registerExpireTaskKeyPrefix = "device-register-expire-"; - @Autowired private DynamicTask dynamicTask; @@ -58,6 +58,9 @@ @Autowired private IRedisCatchStorage redisCatchStorage; + + @Autowired + private IInviteStreamService inviteStreamService; @Autowired private DeviceMapper deviceMapper; @@ -90,7 +93,7 @@ private IMediaServerService mediaServerService; @Override - public void online(Device device) { + public void online(Device device, SipTransactionInfo sipTransactionInfo) { logger.info("[璁惧涓婄嚎] deviceId锛歿}->{}:{}", device.getDeviceId(), device.getIp(), device.getPort()); Device deviceInRedis = redisCatchStorage.getDevice(device.getDeviceId()); Device deviceInDb = deviceMapper.getDeviceByDeviceId(device.getDeviceId()); @@ -98,9 +101,20 @@ String now = DateUtil.getNow(); if (deviceInRedis != null && deviceInDb == null) { // redis 瀛樺湪鑴忔暟鎹� - redisCatchStorage.clearCatchByDeviceId(device.getDeviceId()); + inviteStreamService.clearInviteInfo(device.getDeviceId()); } device.setUpdateTime(now); + if (device.getKeepaliveIntervalTime() == 0) { + // 榛樿蹇冭烦闂撮殧60 + device.setKeepaliveIntervalTime(60); + } + if (sipTransactionInfo != null) { + device.setSipTransactionInfo(sipTransactionInfo); + }else { + if (deviceInRedis != null) { + device.setSipTransactionInfo(deviceInRedis.getSipTransactionInfo()); + } + } // 绗竴娆′笂绾� 鎴栧垯璁惧涔嬪墠鏄绾跨姸鎬�--杩涜閫氶亾鍚屾鍜岃澶囦俊鎭煡璇� if (device.getCreateTime() == null) { @@ -116,7 +130,6 @@ } sync(device); }else { - if(device.getOnline() == 0){ device.setOnline(1); device.setCreateTime(now); @@ -153,18 +166,24 @@ addMobilePositionSubscribe(device); } // 鍒锋柊杩囨湡浠诲姟 - String registerExpireTaskKey = registerExpireTaskKeyPrefix + device.getDeviceId(); - dynamicTask.startDelay(registerExpireTaskKey, ()-> offline(device.getDeviceId()), device.getExpires() * 1000); + String registerExpireTaskKey = VideoManagerConstants.REGISTER_EXPIRE_TASK_KEY_PREFIX + device.getDeviceId(); + // 濡傛灉绗竴娆℃敞鍐岄偅涔堝繀椤诲湪60 * 3鏃堕棿鍐呮敹鍒颁竴涓績璺筹紝鍚﹀垯璁惧绂荤嚎 + dynamicTask.startDelay(registerExpireTaskKey, ()-> offline(device.getDeviceId(), "棣栨娉ㄥ唽鍚庢湭鑳芥敹鍒板績璺�"), device.getKeepaliveIntervalTime() * 1000 * 3); + if (userSetting.getDeviceStatusNotify()) { + // 鍙戦�乺edis娑堟伅 + redisCatchStorage.sendDeviceOrChannelStatus(device.getDeviceId(), null, true); + } + } @Override - public void offline(String deviceId) { - logger.info("[璁惧绂荤嚎]锛� device锛歿}", deviceId); + public void offline(String deviceId, String reason) { + logger.error("[璁惧绂荤嚎]锛寋}, device锛歿}", reason, deviceId); Device device = deviceMapper.getDeviceByDeviceId(deviceId); if (device == null) { return; } - String registerExpireTaskKey = registerExpireTaskKeyPrefix + deviceId; + String registerExpireTaskKey = VideoManagerConstants.REGISTER_EXPIRE_TASK_KEY_PREFIX + deviceId; dynamicTask.stop(registerExpireTaskKey); device.setOnline(0); redisCatchStorage.updateDevice(device); @@ -183,6 +202,11 @@ // 绉婚櫎璁㈤槄 removeCatalogSubscribe(device); removeMobilePositionSubscribe(device); + if (userSetting.getDeviceStatusNotify()) { + // 鍙戦�乺edis娑堟伅 + redisCatchStorage.sendDeviceOrChannelStatus(device.getDeviceId(), null, false); + } + } @Override @@ -332,7 +356,6 @@ device.setUpdateTime(DateUtil.getNow()); if (deviceMapper.update(device) > 0) { redisCatchStorage.updateDevice(device); - } } @@ -408,7 +431,7 @@ if (parentId.length() < 14 ) { return null; } - List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, parentId, null, null, null); + List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, parentId, null, null, null,null); List<BaseTree<DeviceChannel>> trees = transportChannelsToTree(deviceChannels, parentId); return trees; } @@ -453,7 +476,7 @@ if (parentId.length() < 14 ) { return null; } - List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, parentId, null, null, null); + List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, parentId, null, null, null,null); return deviceChannels; } @@ -478,8 +501,10 @@ node.setBasicData(channel); node.setParent(false); if (channel.getChannelId().length() > 8) { - String gbCodeType = channel.getChannelId().substring(10, 13); - node.setParent(gbCodeType.equals(ChannelIdType.BUSINESS_GROUP) || gbCodeType.equals(ChannelIdType.VIRTUAL_ORGANIZATION) ); + if (channel.getChannelId().length() > 13) { + String gbCodeType = channel.getChannelId().substring(10, 13); + node.setParent(gbCodeType.equals(ChannelIdType.BUSINESS_GROUP) || gbCodeType.equals(ChannelIdType.VIRTUAL_ORGANIZATION) ); + } }else { node.setParent(true); } @@ -517,7 +542,7 @@ } }else { if (haveChannel) { - List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, null, null, null, null); + List<DeviceChannel> deviceChannels = deviceChannelMapper.queryChannels(deviceId, null, null, null, null,null); if (deviceChannels != null && deviceChannels.size() > 0) { result.addAll(deviceChannels); } @@ -630,4 +655,11 @@ public ResourceBaceInfo getOverview() { return deviceMapper.getOverview(); } + + @Override + public List<Device> getAll() { + return deviceMapper.getAll(); + } + + } -- Gitblit v1.8.0