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