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