diff --git a/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/CloseRtpServer.java b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/CloseRtpServer.java new file mode 100644 index 0000000..5aaa00a --- /dev/null +++ b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/CloseRtpServer.java @@ -0,0 +1,17 @@ +package cn.skcks.docking.gb28181.media.dto.rtp; + +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) +public class CloseRtpServer { + private String streamId; +} diff --git a/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/CloseRtpServerResp.java b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/CloseRtpServerResp.java new file mode 100644 index 0000000..8c99c83 --- /dev/null +++ b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/CloseRtpServerResp.java @@ -0,0 +1,12 @@ +package cn.skcks.docking.gb28181.media.dto.rtp; + +import cn.skcks.docking.gb28181.media.dto.status.ResponseStatus; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.Data; + +@Data +public class CloseRtpServerResp { + private ResponseStatus code; + private Integer hit; +} diff --git a/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/OpenRtpServer.java b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/OpenRtpServer.java new file mode 100644 index 0000000..036279f --- /dev/null +++ b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/OpenRtpServer.java @@ -0,0 +1,19 @@ +package cn.skcks.docking.gb28181.media.dto.rtp; + +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import feign.Param; +import lombok.*; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) +public class OpenRtpServer { + private int port; + + private int tcpMode; + + private String streamId; +} diff --git a/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/OpenRtpServerResp.java b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/OpenRtpServerResp.java new file mode 100644 index 0000000..f7392f6 --- /dev/null +++ b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/dto/rtp/OpenRtpServerResp.java @@ -0,0 +1,10 @@ +package cn.skcks.docking.gb28181.media.dto.rtp; + +import cn.skcks.docking.gb28181.media.dto.status.ResponseStatus; +import lombok.Data; + +@Data +public class OpenRtpServerResp { + private ResponseStatus code; + private Integer port; +} diff --git a/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmMediaHttpClient.java b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmMediaHttpClient.java index 620ba12..189aceb 100644 --- a/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmMediaHttpClient.java +++ b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmMediaHttpClient.java @@ -2,15 +2,19 @@ package cn.skcks.docking.gb28181.media.proxy; import cn.skcks.docking.gb28181.media.dto.config.ServerConfig; import cn.skcks.docking.gb28181.media.dto.response.ZlmResponse; +import cn.skcks.docking.gb28181.media.dto.rtp.CloseRtpServer; +import cn.skcks.docking.gb28181.media.dto.rtp.CloseRtpServerResp; +import cn.skcks.docking.gb28181.media.dto.rtp.OpenRtpServer; +import cn.skcks.docking.gb28181.media.dto.rtp.OpenRtpServerResp; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.service.annotation.HttpExchange; import java.util.List; -import java.util.Map; @FeignClient(name="zlmMediaServerProxy",url = "${media.url}") @HttpExchange @@ -24,6 +28,12 @@ public interface ZlmMediaHttpClient { @GetMapping("/index/api/getServerConfig") ResponseEntity getServerConfigResponseEntity(@RequestParam String secret); - @GetMapping("/index/api/setServerConfig") - String setServerConfig(@RequestParam String secret, @SpringQueryMap Map config); + @PostMapping("/index/api/setServerConfig") + String setServerConfig(@RequestParam String secret, @RequestBody ServerConfig config); + + @PostMapping("/index/api/openRtpServer") + OpenRtpServerResp openRtpServer(@RequestParam String secret, @RequestBody OpenRtpServer params); + + @PostMapping("/index/api/closeRtpServer") + CloseRtpServerResp closeRtpServer(@RequestParam String secret, @RequestBody CloseRtpServer params); } diff --git a/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmMediaHttpService.java b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmMediaService.java similarity index 60% rename from zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmMediaHttpService.java rename to zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmMediaService.java index 4c5c1c7..9572c14 100644 --- a/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmMediaHttpService.java +++ b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmMediaService.java @@ -3,6 +3,10 @@ package cn.skcks.docking.gb28181.media.proxy; import cn.skcks.docking.gb28181.common.json.JsonUtils; import cn.skcks.docking.gb28181.media.dto.config.ServerConfig; import cn.skcks.docking.gb28181.media.dto.response.ZlmResponse; +import cn.skcks.docking.gb28181.media.dto.rtp.CloseRtpServer; +import cn.skcks.docking.gb28181.media.dto.rtp.CloseRtpServerResp; +import cn.skcks.docking.gb28181.media.dto.rtp.OpenRtpServer; +import cn.skcks.docking.gb28181.media.dto.rtp.OpenRtpServerResp; import com.fasterxml.jackson.core.type.TypeReference; import lombok.Builder; import org.springframework.http.ResponseEntity; @@ -11,7 +15,7 @@ import java.util.List; import java.util.Map; @Builder -public class ZlmMediaHttpService { +public class ZlmMediaService { private String secret; private ZlmMediaHttpClient exchange; @@ -30,7 +34,14 @@ public class ZlmMediaHttpService { } public String setServerConfig(ServerConfig config){ - Map map = JsonUtils.mapper.convertValue(config, new TypeReference<>() {}); - return exchange.setServerConfig(secret, map); + return exchange.setServerConfig(secret, config); + } + + public OpenRtpServerResp openRtpServer(OpenRtpServer params){ + return exchange.openRtpServer(secret, params); + } + + public CloseRtpServerResp closeRtpServer(CloseRtpServer params){ + return exchange.closeRtpServer(secret, params); } } diff --git a/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmProxy.java b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmProxy.java index a375242..2efdf29 100644 --- a/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmProxy.java +++ b/zlmediakit-service/src/main/java/cn/skcks/docking/gb28181/media/proxy/ZlmProxy.java @@ -12,8 +12,8 @@ public class ZlmProxy { private final ZlmMediaHttpClient exchange; @Bean - public ZlmMediaHttpService zlMediaHttpService(){ - return ZlmMediaHttpService.builder() + public ZlmMediaService zlMediaHttpService(){ + return ZlmMediaService.builder() .secret(mediaConfig.getSecret()) .exchange(exchange) .build(); diff --git a/zlmediakit-service/src/test/java/cn/skcks/docking/gb28181/test/MediaServiceTest.java b/zlmediakit-service/src/test/java/cn/skcks/docking/gb28181/test/MediaServiceTest.java index aa33892..bf6264b 100644 --- a/zlmediakit-service/src/test/java/cn/skcks/docking/gb28181/test/MediaServiceTest.java +++ b/zlmediakit-service/src/test/java/cn/skcks/docking/gb28181/test/MediaServiceTest.java @@ -1,18 +1,14 @@ package cn.skcks.docking.gb28181.test; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; -import cn.hutool.core.date.ZoneUtil; import cn.skcks.docking.gb28181.common.json.JsonResponse; -import cn.skcks.docking.gb28181.common.json.JsonUtils; -import cn.skcks.docking.gb28181.media.config.ZlmMediaConfig; -import cn.skcks.docking.gb28181.media.dto.config.ApiConfig; import cn.skcks.docking.gb28181.media.dto.config.ServerConfig; import cn.skcks.docking.gb28181.media.dto.response.ZlmResponse; import cn.skcks.docking.gb28181.media.dto.response.ZlmResponseConvertor; -import cn.skcks.docking.gb28181.media.proxy.ZlmMediaHttpService; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; +import cn.skcks.docking.gb28181.media.dto.rtp.CloseRtpServer; +import cn.skcks.docking.gb28181.media.dto.rtp.OpenRtpServer; +import cn.skcks.docking.gb28181.media.proxy.ZlmMediaService; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -25,7 +21,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import java.time.Instant; import java.time.LocalDateTime; -import java.time.ZoneId; import java.time.ZoneOffset; import java.util.*; @@ -35,7 +30,7 @@ import java.util.*; @ExtendWith(SpringExtension.class) public class MediaServiceTest { @Autowired - private ZlmMediaHttpService zlMediaHttpService; + private ZlmMediaService zlMediaHttpService; @Test void test(){ @@ -66,14 +61,34 @@ public class MediaServiceTest { } @Test + @SneakyThrows void testApi(){ log.info("{}", zlMediaHttpService.getApiList()); + int port = 60000; + String streamId = "testStream"; + OpenRtpServer openRtpServer = new OpenRtpServer(port,0,streamId); + log.info("{}", zlMediaHttpService.openRtpServer(openRtpServer)); + Thread.sleep(500); + CloseRtpServer closeRtpServer = new CloseRtpServer(streamId); + log.info("{}", zlMediaHttpService.closeRtpServer(closeRtpServer)); } @Test - void httpBinTest(){ + void configTest(){ ZlmResponse> resp = zlMediaHttpService.getServerConfig(); + log.info("{}", resp); ServerConfig config = resp.getData().get(0); + config.getApi().setApiDebug(0); + log.info("{}", zlMediaHttpService.setServerConfig(config)); + + resp = zlMediaHttpService.getServerConfig(); + log.info("{}", resp); + config.getApi().setApiDebug(1); + log.info("{}", zlMediaHttpService.setServerConfig(config)); + + resp = zlMediaHttpService.getServerConfig(); + log.info("{}", resp); + log.info("{}", zlMediaHttpService.setServerConfig(config)); } }