wyb il y a 1 an
Parent
commit
c88c7dc6cb

+ 7 - 0
src/main/java/com/chinaitop/depot/hk/constant/ApiHkConstant.java

@@ -15,6 +15,13 @@ public interface ApiHkConstant {
15 15
      **/
16 16
     String API_HK_REGIONS = "/artemis/api/resource/v1/regions";
17 17
     /**
18
+     * 分页获取监控点资源
19
+     *
20
+     * @author: ybw
21
+     * @date: 2024/6/18
22
+     **/
23
+    String API_HK_CAMERAS = "/artemis/api/resource/v1/cameras";
24
+    /**
18 25
      * 根据编号获取监控点详细信息
19 26
      *
20 27
      * @author: ybw

+ 61 - 0
src/main/java/com/chinaitop/depot/hk/constant/HkProtocolEnum.java

@@ -0,0 +1,61 @@
1
+package com.chinaitop.depot.hk.constant;
2
+
3
+import lombok.AllArgsConstructor;
4
+import lombok.Getter;
5
+
6
+/**
7
+ * 取流协议(应用层协议)
8
+ * hik”:HIK私有协议,使用视频SDK进行播放时,传入此类型;
9
+ * “rtsp”:RTSP协议;
10
+ * “rtmp”:RTMP协议(RTMP协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码);
11
+ * “hls”:HLS协议(HLS协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码);
12
+ * “ws”:Websocket协议(一般用于H5视频播放器取流播放)。
13
+ * 参数不填,默认为HIK协议
14
+ *
15
+ * @author ybw
16
+ * @version V1.0
17
+ * @className HkProtocolEnum
18
+ * @date 2024/7/24
19
+ **/
20
+@AllArgsConstructor
21
+@Getter
22
+public enum HkProtocolEnum {
23
+
24
+    /**
25
+     * hik”:HIK私有协议,使用视频SDK进行播放时,传入此类型;
26
+     *
27
+     * @author: ybw
28
+     * @date: 2024/7/24
29
+     **/
30
+    HIK("hik"),
31
+    /**
32
+     * “rtsp”:RTSP协议;
33
+     *
34
+     * @author: ybw
35
+     * @date: 2024/7/24
36
+     **/
37
+    RTSP("rtsp"),
38
+    /**
39
+     * “rtmp”:RTMP协议(RTMP协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码);
40
+     *
41
+     * @author: ybw
42
+     * @date: 2024/7/24
43
+     **/
44
+    RTMP("rtmp"),
45
+    /**
46
+     * “hls”:HLS协议(HLS协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码);
47
+     *
48
+     * @author: ybw
49
+     * @date: 2024/7/24
50
+     **/
51
+    HLS("hls"),
52
+    /**
53
+     * “ws”:Websocket协议(一般用于H5视频播放器取流播放)。
54
+     *
55
+     * @author: ybw
56
+     * @date: 2024/7/24
57
+     **/
58
+    WS("ws");
59
+
60
+    private String name;
61
+}

+ 0 - 18
src/main/java/com/chinaitop/depot/hk/dto/req/CaptureReqDTO.java

@@ -21,22 +21,4 @@ public class CaptureReqDTO {
21 21
      * @date: 2024/6/19
22 22
      **/
23 23
     private String cameraIndexCode;
24
-    
25
-    
26
-    // monitor_camera的主键
27
-    private Integer id;
28
-    
29
-    
30
-    //单位id
31
-    private Integer orgId;
32
-    
33
-    
34
-    //仓房id
35
-    private Integer houseId;
36
-    
37
-    
38
-   //仓房id
39
-    private Integer wareHouseId;
40
-    
41
-    
42 24
 }

+ 38 - 0
src/main/java/com/chinaitop/depot/hk/dto/req/Preview2ReqDTO.java

@@ -0,0 +1,38 @@
1
+package com.chinaitop.depot.hk.dto.req;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 获取监控点预览取流 获取监控点预览取流  URLv2
7
+ *
8
+ * @author ybw
9
+ * @version V1.0
10
+ * @className PreviewReqVO
11
+ * @date 2024/6/20
12
+ **/
13
+@Data
14
+public class Preview2ReqDTO {
15
+    /**
16
+     * 监控点编号
17
+     *
18
+     * @author: ybw
19
+     * @date: 2024/6/19
20
+     **/
21
+    private String cameraIndexCode;
22
+
23
+    /**
24
+     * 取流协议(应用层协议),
25
+     * “hik”:HIK私有协议,使用视频SDK进行播放时,传入此类型;
26
+     * “rtsp”:RTSP协议;
27
+     * “rtmp”:RTMP协议(RTMP协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码);
28
+     * “hls”:HLS协议(HLS协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码);
29
+     * “ws”:Websocket协议(一般用于H5视频播放器取流播放)。
30
+     * 参数不填,默认为HIK协议
31
+     */
32
+    private String protocol;
33
+
34
+    public Preview2ReqDTO(PreviewReqDTO previewReqDTO) {
35
+        this.cameraIndexCode = previewReqDTO.getCameraIndexCode();
36
+        this.protocol = previewReqDTO.getProtocol().getName();
37
+    }
38
+}

+ 12 - 0
src/main/java/com/chinaitop/depot/hk/dto/req/PreviewReqDTO.java

@@ -1,5 +1,6 @@
1 1
 package com.chinaitop.depot.hk.dto.req;
2 2
 
3
+import com.chinaitop.depot.hk.constant.HkProtocolEnum;
3 4
 import lombok.AllArgsConstructor;
4 5
 import lombok.Data;
5 6
 
@@ -21,4 +22,15 @@ public class PreviewReqDTO {
21 22
      * @date: 2024/6/19
22 23
      **/
23 24
     private String cameraIndexCode;
25
+
26
+    /**
27
+     * 取流协议(应用层协议),
28
+     * “hik”:HIK私有协议,使用视频SDK进行播放时,传入此类型;
29
+     * “rtsp”:RTSP协议;
30
+     * “rtmp”:RTMP协议(RTMP协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码);
31
+     * “hls”:HLS协议(HLS协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码);
32
+     * “ws”:Websocket协议(一般用于H5视频播放器取流播放)。
33
+     * 参数不填,默认为HIK协议
34
+     */
35
+    private HkProtocolEnum protocol;
24 36
 }

+ 62 - 0
src/main/java/com/chinaitop/depot/hk/dto/res/CamerasResDTO.java

@@ -0,0 +1,62 @@
1
+package com.chinaitop.depot.hk.dto.res;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * @author ybw
7
+ * @version V1.0
8
+ * @className CamerasResDTO
9
+ * @date 2024/7/23
10
+ **/
11
+@Data
12
+public class CamerasResDTO {
13
+    /**
14
+     * 海拔
15
+     *
16
+     * @author: ybw
17
+     * @date: 2024/7/23
18
+     **/
19
+    private String altitude;
20
+    /**
21
+     * 监控点唯一标识
22
+     *
23
+     * @author: ybw
24
+     * @date: 2024/7/23
25
+     **/
26
+    private String cameraIndexCode;
27
+    private String cameraName;
28
+    private int cameraType;
29
+    private String cameraTypeName;
30
+    private String capabilitySet;
31
+    private String capabilitySetName;
32
+    private String intelligentSet;
33
+    private String intelligentSetName;
34
+    private String channelNo;
35
+    private String channelType;
36
+    private String channelTypeName;
37
+    private String createTime;
38
+    private String encodeDevIndexCode;
39
+    private String encodeDevResourceType;
40
+    private String encodeDevResourceTypeName;
41
+    private String gbIndexCode;
42
+    private String installLocation;
43
+    private String keyBoardCode;
44
+    private String latitude;
45
+    private String longitude;
46
+    private int pixel;
47
+    private int ptz;
48
+    private int ptzController;
49
+    private String ptzControllerName;
50
+    private String ptzName;
51
+    private String recordLocation;
52
+    private String recordLocationName;
53
+    private String regionIndexCode;
54
+    private int status;
55
+    private String statusName;
56
+    private int transType;
57
+    private String transTypeName;
58
+    private String treatyType;
59
+    private String treatyTypeName;
60
+    private String viewshed;
61
+    private String updateTime;
62
+}

+ 11 - 0
src/main/java/com/chinaitop/depot/hk/service/HkService.java

@@ -25,6 +25,17 @@ public interface HkService {
25 25
      * @date: 2024/6/19
26 26
      **/
27 27
     PageResDTO<RegionResDTO> getRegions(PageReqDTO pageReqDTO);
28
+
29
+    /**
30
+     * 分页获取监控点资源
31
+     *
32
+     * @param pageReqDTO
33
+     * @methodName: getCameras
34
+     * @return: com.ybw.dto.res.PageResDTO<com.ybw.dto.res.CamerasResDTO>
35
+     * @author: ybw
36
+     * @date: 2024/7/23
37
+     **/
38
+    PageResDTO<CamerasResDTO> getCameras(PageReqDTO pageReqDTO);
28 39
     //----------------------------------------视频应用服务-----------------------------------------------
29 40
 
30 41
     /**

+ 23 - 1
src/main/java/com/chinaitop/depot/hk/service/impl/HkServiceImpl.java

@@ -51,6 +51,26 @@ public class HkServiceImpl implements HkService {
51 51
         return null;
52 52
     }
53 53
 
54
+    @Override
55
+    public PageResDTO<CamerasResDTO> getCameras(PageReqDTO pageReqDTO) {
56
+        try {
57
+            Map<String, String> path = getPath(ApiHkConstant.API_HK_CAMERAS);
58
+            String result = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, path, JSON.toJSONString(pageReqDTO), null, null, ContentType.CONTENT_TYPE_JSON);
59
+            ResultResDTO<PageResDTO<CamerasResDTO>> resultResDTO = JSONObject.parseObject(
60
+                    result,
61
+                    new TypeReference<ResultResDTO<PageResDTO<CamerasResDTO>>>() {
62
+                    }
63
+            );
64
+            log.info("{}", JSON.toJSONString(resultResDTO));
65
+            if (ApiHkConstant.Code.SUCCESS.equals(resultResDTO.getCode())) {
66
+                return resultResDTO.getData();
67
+            }
68
+        } catch (Exception e) {
69
+            log.error("getRegions error:", e);
70
+        }
71
+        return null;
72
+    }
73
+
54 74
     /**
55 75
      * 获取接口地址
56 76
      *
@@ -95,7 +115,9 @@ public class HkServiceImpl implements HkService {
95 115
         try {
96 116
             // 接口地址
97 117
             Map<String, String> path = getPath(ApiHkConstant.API_HK_PREVIEW_URL);
98
-            String result = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, path, JSON.toJSONString(previewReqDTO), null, null,  ContentType.CONTENT_TYPE_JSON);
118
+            //对象转换
119
+            Preview2ReqDTO preview2ReqDTO = new Preview2ReqDTO(previewReqDTO);
120
+            String result = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, path, JSON.toJSONString(preview2ReqDTO), null, null,  ContentType.CONTENT_TYPE_JSON);
99 121
             ResultResDTO<PreviewResDTO> resultResDTO = JSONObject.parseObject(
100 122
                     result,
101 123
                     new TypeReference<ResultResDTO<PreviewResDTO>>() {

+ 51 - 4
src/test/java/com/chinaitop/depot/hk/service/HkServiceTest.java

@@ -1,8 +1,11 @@
1 1
 package com.chinaitop.depot.hk.service;
2 2
 
3
+import com.alibaba.fastjson.JSON;
3 4
 import com.chinaitop.depot.DepotMonitorApplication;
4
-import com.chinaitop.depot.hk.dto.req.CameraReqDTO;
5
-import com.chinaitop.depot.hk.dto.req.PageReqDTO;
5
+import com.chinaitop.depot.hk.constant.HkProtocolEnum;
6
+import com.chinaitop.depot.hk.dto.req.*;
7
+import com.chinaitop.depot.hk.dto.res.*;
8
+import lombok.extern.slf4j.Slf4j;
6 9
 import org.junit.Test;
7 10
 import org.junit.runner.RunWith;
8 11
 import org.springframework.boot.test.context.SpringBootTest;
@@ -12,6 +15,7 @@ import javax.annotation.Resource;
12 15
 
13 16
 @RunWith(SpringRunner.class)
14 17
 @SpringBootTest(classes = DepotMonitorApplication.class)
18
+@Slf4j
15 19
 public class HkServiceTest {
16 20
 
17 21
     @Resource
@@ -19,11 +23,54 @@ public class HkServiceTest {
19 23
 
20 24
     @Test
21 25
     public void getRegions() {
22
-        hkService.getRegions(new PageReqDTO(1, 30));
26
+        PageResDTO<RegionResDTO> pageResDTO = hkService.getRegions(new PageReqDTO(1, 30));
27
+        log.info("pageResDTO:{}", JSON.toJSONString(pageResDTO));
28
+    }
29
+
30
+    @Test
31
+    public void getCameras() {
32
+        PageResDTO<CamerasResDTO> pageResDTO = hkService.getCameras(new PageReqDTO(1, 30));
33
+        log.info("pageResDTO:{}", JSON.toJSONString(pageResDTO));
23 34
     }
24 35
 
25 36
     @Test
26 37
     public void getCamera() {
27
-        hkService.getCamera(new CameraReqDTO(""));
38
+        CameraResDTO cameraResDTO = hkService.getCamera(new CameraReqDTO("92768838d53b42788431697b657a507e"));
39
+        log.info("cameraResDTO:{}", JSON.toJSONString(cameraResDTO));
40
+    }
41
+
42
+    @Test
43
+    public void previewURLs() {
44
+        PreviewResDTO previewResDTO = hkService.previewURLs(new PreviewReqDTO("92768838d53b42788431697b657a507e", HkProtocolEnum.WS));
45
+        log.info("previewResDTO:{}", JSON.toJSONString(previewResDTO));
46
+    }
47
+
48
+    @Test
49
+    public void playbackURLs() {
50
+        PlaybackReqDTO playbackReqDTO = new PlaybackReqDTO();
51
+        playbackReqDTO.setCameraIndexCode("1234");
52
+        playbackReqDTO.setBeginTime("2017-06-14T00:00:00.000+08:00");
53
+        playbackReqDTO.setEndTime("2017-06-14T23:59:59.000+08:00");
54
+        log.info("playbackURLs:{}", JSON.toJSONString(hkService.playbackURLs(playbackReqDTO)));
55
+    }
56
+
57
+    @Test
58
+    public void recordStart() {
59
+        log.info("recordStart:{}", JSON.toJSONString(hkService.recordStart(new RecordStartReqDTO("1234", 6, 1))));
60
+    }
61
+
62
+    @Test
63
+    public void recordStop() {
64
+        hkService.recordStop(new RecordStopReqDTO("1234", "1", 1));
65
+    }
66
+
67
+    @Test
68
+    public void manualCapture() {
69
+        log.info("manualCapture:{}", JSON.toJSONString(hkService.manualCapture(new CaptureReqDTO("1234"))));
70
+    }
71
+
72
+    @Test
73
+    public void controlling() {
74
+        hkService.controlling(new ControllerReqDTO("1234", 1, "UP", 1, 1));
28 75
     }
29 76
 }