From 5c0183a422b83fe1fed69564201f583cb72d8276 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期四, 11 四月 2024 22:25:57 +0800 Subject: [PATCH] 修复无法下载较长时间时间录像的BUG --- src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java | 5 ++--- src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 4 +--- src/main/java/com/genersoft/iot/vmp/media/event/hook/HookSubscribe.java | 10 +++++----- src/main/java/com/genersoft/iot/vmp/media/event/hook/Hook.java | 14 ++++++++------ 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java index 167b9f2..e6cfac3 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java @@ -37,15 +37,14 @@ event.getRecordInfo().getChannelId(), count,sumNum); if (!handlerMap.isEmpty()) { RecordEndEventHandler handler = handlerMap.get(deviceId + channelId); + logger.info("褰曞儚鏌ヨ瀹屾垚浜嬩欢瑙﹀彂, 鍙戦�佽闃咃紝deviceId锛歿}, channelId: {}", + event.getRecordInfo().getDeviceId(), event.getRecordInfo().getChannelId()); if (handler !=null){ handler.handler(event.getRecordInfo()); if (count ==sumNum){ handlerMap.remove(deviceId + channelId); } } - }else { - logger.info("褰曞儚鏌ヨ瀹屾垚浜嬩欢瑙﹀彂, 浣嗘槸璁㈤槄涓虹┖锛屽彇娑堝彂閫侊紝deviceId锛歿}, channelId: {}", - event.getRecordInfo().getDeviceId(), event.getRecordInfo().getChannelId()); } } diff --git a/src/main/java/com/genersoft/iot/vmp/media/event/hook/Hook.java b/src/main/java/com/genersoft/iot/vmp/media/event/hook/Hook.java index a0dc7c3..341e3c3 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/event/hook/Hook.java +++ b/src/main/java/com/genersoft/iot/vmp/media/event/hook/Hook.java @@ -14,7 +14,8 @@ private String mediaServerId; - private Long createTime; + private Long expireTime; + public static Hook getInstance(HookType hookType, String app, String stream, String mediaServerId) { Hook hookSubscribe = new Hook(); @@ -22,7 +23,7 @@ hookSubscribe.setStream(stream); hookSubscribe.setHookType(hookType); hookSubscribe.setMediaServerId(mediaServerId); - hookSubscribe.setCreateTime(System.currentTimeMillis()); + hookSubscribe.setExpireTime(System.currentTimeMillis() + 5 * 60 * 1000); return hookSubscribe; } @@ -50,12 +51,13 @@ this.stream = stream; } - public Long getCreateTime() { - return createTime; + + public Long getExpireTime() { + return expireTime; } - public void setCreateTime(Long createTime) { - this.createTime = createTime; + public void setExpireTime(Long expireTime) { + this.expireTime = expireTime; } public String getMediaServerId() { diff --git a/src/main/java/com/genersoft/iot/vmp/media/event/hook/HookSubscribe.java b/src/main/java/com/genersoft/iot/vmp/media/event/hook/HookSubscribe.java index 907e904..58e3761 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/event/hook/HookSubscribe.java +++ b/src/main/java/com/genersoft/iot/vmp/media/event/hook/HookSubscribe.java @@ -58,7 +58,7 @@ sendNotify(HookType.on_publish, event); } /** - * 鎺ㄦ祦閴存潈浜嬩欢 + * 鐢熸垚褰曞儚鏂囦欢浜嬩欢 */ @Async("taskExecutor") @EventListener @@ -79,8 +79,8 @@ } public void addSubscribe(Hook hook, HookSubscribe.Event event) { - if (hook.getCreateTime() == null) { - hook.setCreateTime(System.currentTimeMillis()); + if (hook.getExpireTime() == null) { + hook.setExpireTime(System.currentTimeMillis() + subscribeExpire); } allSubscribes.put(hook.toString(), event); allHook.put(hook.toString(), hook); @@ -96,9 +96,9 @@ */ @Scheduled(fixedRate=subscribeExpire) //姣�5鍒嗛挓鎵ц涓�娆� public void execute(){ - long expireTime = System.currentTimeMillis() - subscribeExpire; + long expireTime = System.currentTimeMillis(); for (Hook hook : allHook.values()) { - if (hook.getCreateTime() < expireTime) { + if (hook.getExpireTime() < expireTime) { allSubscribes.remove(hook.toString()); allHook.remove(hook.toString()); } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java index fc6a025..40de0d2 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java @@ -1044,9 +1044,7 @@ }; Hook hook = Hook.getInstance(HookType.on_record_mp4, "rtp", ssrcInfo.getStream(), mediaServerItem.getId()); // 璁剧疆杩囨湡鏃堕棿锛屼笅杞藉け璐ユ椂鑷姩澶勭悊璁㈤槄鏁版嵁 -// long difference = DateUtil.getDifference(startTime, endTime)/1000; -// Instant expiresInstant = Instant.now().plusSeconds(TimeUnit.MINUTES.toSeconds(difference * 2)); -// hookSubscribe.setExpires(expiresInstant); + hook.setExpireTime(System.currentTimeMillis() + 24 * 60 * 60 * 1000); subscribe.addSubscribe(hook, hookEventForRecord); }); } catch (InvalidArgumentException | SipException | ParseException e) { -- Gitblit v1.8.0