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; + }); + } +}