From 2641b866be3d53a3ecbe67597157dbf4a85279d4 Mon Sep 17 00:00:00 2001
From: shikong <919411476@qq.com>
Date: Fri, 8 Sep 2023 17:20:08 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8D=95=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../wvp/api/video/VideoController.java | 9 +--
gb28181-wvp-proxy-service/pom.xml | 7 +++
.../gb28181/wvp/service/wvp/WvpService.java | 59 +++++++++++++++++++
3 files changed, 69 insertions(+), 6 deletions(-)
create mode 100644 gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/wvp/WvpService.java
diff --git a/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/VideoController.java b/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/VideoController.java
index aff32f2..dfdaa60 100644
--- a/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/VideoController.java
+++ b/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/VideoController.java
@@ -2,8 +2,8 @@ package cn.skcks.docking.gb28181.wvp.api.video;
import cn.skcks.docking.gb28181.media.config.ZlmMediaConfig;
import cn.skcks.docking.gb28181.wvp.config.SwaggerConfig;
-import cn.skcks.docking.gb28181.wvp.service.download.DownloadService;
import cn.skcks.docking.gb28181.wvp.service.video.RecordService;
+import cn.skcks.docking.gb28181.wvp.service.wvp.WvpService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
@@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
public class VideoController {
private final ZlmMediaConfig config;
private final RecordService recordService;
- private final DownloadService downloadService;
+ private final WvpService wvpService;
@Bean
public GroupedOpenApi videoApi() {
@@ -37,9 +37,6 @@ public class VideoController {
@GetMapping(produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public void video(HttpServletRequest request, HttpServletResponse response) {
-// String url = StringUtils.joinWith("/", config.getUrl(), "live", "test.live.flv");
-// log.info("url {}", url);
-// recordService.record(request,response,url,15);
- downloadService.download(request,response,"http://192.168.1.241:18979/download/recordTemp/0490d767d94ce20aedce57c862b6bfe9/rtp/59777645.mp4");
+ wvpService.video(request,response);
}
}
diff --git a/gb28181-wvp-proxy-service/pom.xml b/gb28181-wvp-proxy-service/pom.xml
index e60eb0b..dcf21d2 100644
--- a/gb28181-wvp-proxy-service/pom.xml
+++ b/gb28181-wvp-proxy-service/pom.xml
@@ -177,6 +177,13 @@
io.github.openfeign
feign-httpclient
+
+
+
+ com.google.guava
+ guava
+ 32.1.2-jre
+
diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/wvp/WvpService.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/wvp/WvpService.java
new file mode 100644
index 0000000..d38366e
--- /dev/null
+++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/wvp/WvpService.java
@@ -0,0 +1,59 @@
+package cn.skcks.docking.gb28181.wvp.service.wvp;
+
+import cn.hutool.crypto.digest.MD5;
+import cn.skcks.docking.gb28181.common.json.JsonResponse;
+import cn.skcks.docking.gb28181.wvp.config.WvpProxyConfig;
+import cn.skcks.docking.gb28181.wvp.dto.login.WvpLoginReq;
+import cn.skcks.docking.gb28181.wvp.dto.login.WvpLoginResp;
+import cn.skcks.docking.gb28181.wvp.proxy.WvpProxyClient;
+import cn.skcks.docking.gb28181.wvp.service.download.DownloadService;
+import com.github.rholder.retry.Retryer;
+import com.github.rholder.retry.RetryerBuilder;
+import com.github.rholder.retry.StopStrategies;
+import com.github.rholder.retry.WaitStrategies;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.TimeUnit;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class WvpService {
+ private final WvpProxyClient wvpProxyClient;
+ private final WvpProxyConfig wvpProxyConfig;
+
+ private final DownloadService downloadService;
+
+ @SneakyThrows
+ public void video(HttpServletRequest request, HttpServletResponse response) {
+ Retryer> retryer = RetryerBuilder.>newBuilder()
+ // 异常就重试
+ .retryIfException()
+ // 重试间隔
+ .withWaitStrategy(WaitStrategies.fixedWait(5, TimeUnit.SECONDS))
+ // 重试次数
+ .withStopStrategy(StopStrategies.stopAfterAttempt(5))
+ .retryIfResult(result -> result == null || (result.getCode() != 0 && result.getCode() != 200))
+ .build();
+
+ String passwdMd5 = MD5.create().digestHex(wvpProxyConfig.getPasswd());
+ WvpLoginReq loginReq = WvpLoginReq.builder()
+ .username(wvpProxyConfig.getUser())
+ .password(passwdMd5)
+ .build();
+
+ retryer.call(()->{
+ JsonResponse login = wvpProxyClient.login(loginReq);
+ String accessToken = login.getData().getAccessToken();
+ log.info("wvp 登录成功 accessToken => {}", accessToken);
+
+ downloadService.download(request,response,"http://192.168.1.241:18979/download/recordTemp/0490d767d94ce20aedce57c862b6bfe9/rtp/59777645.mp4");
+ return login;
+ });
+ }
+}