From 871b4e5359aaaeaa5b398b1a4ea552a435468dcc Mon Sep 17 00:00:00 2001
From: chenjialing <595168663@qq.com>
Date: Tue, 9 Aug 2022 17:26:32 +0800
Subject: [PATCH 1/5] =?UTF-8?q?=E4=BC=98=E5=8C=96--=E7=9B=B4=E6=92=AD?=
=?UTF-8?q?=E7=BB=93=E6=9D=9F=E5=BC=82=E6=AD=A5=E5=A4=84=E7=90=86=E6=88=AA?=
=?UTF-8?q?=E5=9B=BE=E6=93=8D=E4=BD=9C=EF=BC=8C=E6=8F=90=E9=AB=98=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3=E5=93=8D=E5=BA=94=E9=80=9F=E5=BA=A6=E5=92=8C=E5=B9=B6?=
=?UTF-8?q?=E5=8F=91=E8=83=BD=E5=8A=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../iot/vmp/service/impl/PlayServiceImpl.java | 36 +++++++++++--------
1 file changed, 22 insertions(+), 14 deletions(-)
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 e6a8f6a7..96acbf6e 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -11,8 +11,10 @@ import javax.sip.ResponseEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.async.DeferredResult;
@@ -104,6 +106,10 @@ public class PlayServiceImpl implements IPlayService {
private ZLMHttpHookSubscribe subscribe;
+ @Qualifier("taskExecutor")
+ @Autowired
+ private ThreadPoolTaskExecutor taskExecutor;
+
@Override
@@ -135,21 +141,23 @@ public class PlayServiceImpl implements IPlayService {
result.onCompletion(()->{
// 点播结束时调用截图接口
- // TODO 应该在上流时调用更好,结束也可能是错误结束
- String path = "snap";
- String fileName = deviceId + "_" + channelId + ".jpg";
- ResponseEntity responseEntity = (ResponseEntity)result.getResult();
- if (responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) {
- WVPResult wvpResult = (WVPResult)responseEntity.getBody();
- if (Objects.requireNonNull(wvpResult).getCode() == 0) {
- StreamInfo streamInfoForSuccess = (StreamInfo)wvpResult.getData();
- MediaServerItem mediaInfo = mediaServerService.getOne(streamInfoForSuccess.getMediaServerId());
- String streamUrl = streamInfoForSuccess.getFmp4();
- // 请求截图
- logger.info("[请求截图]: " + fileName);
- zlmresTfulUtils.getSnap(mediaInfo, streamUrl, 15, 1, path, fileName);
+ taskExecutor.execute(()->{
+ // TODO 应该在上流时调用更好,结束也可能是错误结束
+ String path = "snap";
+ String fileName = deviceId + "_" + channelId + ".jpg";
+ ResponseEntity responseEntity = (ResponseEntity)result.getResult();
+ if (responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) {
+ WVPResult wvpResult = (WVPResult)responseEntity.getBody();
+ if (Objects.requireNonNull(wvpResult).getCode() == 0) {
+ StreamInfo streamInfoForSuccess = (StreamInfo)wvpResult.getData();
+ MediaServerItem mediaInfo = mediaServerService.getOne(streamInfoForSuccess.getMediaServerId());
+ String streamUrl = streamInfoForSuccess.getFmp4();
+ // 请求截图
+ logger.info("[请求截图]: " + fileName);
+ zlmresTfulUtils.getSnap(mediaInfo, streamUrl, 15, 1, path, fileName);
+ }
}
- }
+ });
});
if (streamInfo != null) {
String streamId = streamInfo.getStream();
From 82ab6b1760b8787e31bed4020a0831c64fa05077 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: Wed, 10 Aug 2022 18:14:33 +0800
Subject: [PATCH 2/5] =?UTF-8?q?=E5=8E=BB=E9=99=A4jedis=EF=BC=8C=E6=96=B9?=
=?UTF-8?q?=E4=BE=BF=E6=94=AF=E6=8C=81redis=E9=9B=86=E7=BE=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 12 ---
.../genersoft/iot/vmp/conf/RedisConfig.java | 67 ++++---------
...edisKeyExpirationEventMessageListener.java | 2 +-
.../vmp/media/zlm/ZLMHttpHookListener.java | 3 +
.../service/impl/MediaServerServiceImpl.java | 4 -
.../iot/vmp/utils/redis/JedisUtil.java | 97 -------------------
.../vmanager/gb28181/play/PlayController.java | 2 +
7 files changed, 25 insertions(+), 162 deletions(-)
delete mode 100644 src/main/java/com/genersoft/iot/vmp/utils/redis/JedisUtil.java
diff --git a/pom.xml b/pom.xml
index 41be5675..2abd9d8c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,13 +61,6 @@
org.springframework.boot
spring-boot-starter-data-redis
-
-
-
- io.lettuce
- lettuce-core
-
-
org.springframework.boot
@@ -94,11 +87,6 @@
spring-boot-starter-security
-
- redis.clients
- jedis
-
-
com.alibaba
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java
index 6a862ae3..d2e1347e 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/RedisConfig.java
@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.conf;
+import com.alibaba.fastjson.parser.ParserConfig;
import com.genersoft.iot.vmp.common.VideoManagerConstants;
import com.genersoft.iot.vmp.service.impl.*;
import org.apache.commons.lang3.StringUtils;
@@ -9,15 +10,14 @@ import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
-import com.alibaba.fastjson.parser.ParserConfig;
import com.genersoft.iot.vmp.utils.redis.FastJsonRedisSerializer;
-import redis.clients.jedis.JedisPool;
-import redis.clients.jedis.JedisPoolConfig;
+
/**
* @description:Redis中间件配置类,使用spring-data-redis集成,自动从application.yml中加载redis配置
@@ -28,23 +28,6 @@ import redis.clients.jedis.JedisPoolConfig;
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
- @Value("${spring.redis.host}")
- private String host;
- @Value("${spring.redis.port}")
- private int port;
- @Value("${spring.redis.database}")
- private int database;
- @Value("${spring.redis.password}")
- private String password;
- @Value("${spring.redis.timeout}")
- private int timeout;
- @Value("${spring.redis.poolMaxTotal:1000}")
- private int poolMaxTotal;
- @Value("${spring.redis.poolMaxIdle:500}")
- private int poolMaxIdle;
- @Value("${spring.redis.poolMaxWait:5}")
- private int poolMaxWait;
-
@Autowired
private RedisGpsMsgListener redisGPSMsgListener;
@@ -61,36 +44,24 @@ public class RedisConfig extends CachingConfigurerSupport {
private RedisPushStreamStatusMsgListener redisPushStreamStatusMsgListener;
@Bean
- public JedisPool jedisPool() {
- if (StringUtils.isBlank(password)) {
- password = null;
- }
- JedisPoolConfig poolConfig = new JedisPoolConfig();
- poolConfig.setMaxIdle(poolMaxIdle);
- poolConfig.setMaxTotal(poolMaxTotal);
- // 秒转毫秒
- poolConfig.setMaxWaitMillis(poolMaxWait * 1000L);
- JedisPool jp = new JedisPool(poolConfig, host, port, timeout * 1000, password, database);
- return jp;
+ public RedisTemplate