From 639f6875c66d9099bdb312ce15e47e1f79d638b6 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Mon, 09 Aug 2021 10:16:13 +0800
Subject: [PATCH] 新增海康设备接口调用工具类

---
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/util/GetCameraPreviewURL.java  |  127 +++++++++++++++++++++++++++++++
 blade-service/blade-jfpts/pom.xml                                                              |    6 +
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/constant/HkConstant.java       |   43 ++++++++++
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/constant/ProtocolConstant.java |   35 ++++++++
 4 files changed, 211 insertions(+), 0 deletions(-)

diff --git a/blade-service/blade-jfpts/pom.xml b/blade-service/blade-jfpts/pom.xml
index 1812f4d..fc2edf1 100644
--- a/blade-service/blade-jfpts/pom.xml
+++ b/blade-service/blade-jfpts/pom.xml
@@ -104,6 +104,12 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
+        <!--hk Hikvision AI 安全认证库-->
+        <dependency>
+            <groupId>com.hikvision.ga</groupId>
+            <artifactId>artemis-http-client</artifactId>
+            <version>1.1.3</version>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/constant/HkConstant.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/constant/HkConstant.java
new file mode 100644
index 0000000..9542e4a
--- /dev/null
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/constant/HkConstant.java
@@ -0,0 +1,43 @@
+package org.springblade.jfpt.hk.constant;
+
+/**
+ * @author zhongrj
+ * @since 2021-08-06
+ */
+public class HkConstant {
+
+
+	/**
+	 * post
+	 */
+	public static final String HOST = "61.131.136.18:10443";
+
+
+	/**
+	 * STEP2:设置OpenAPI接口的上下文
+	 */
+	public static final String ARTEMIS_PATH = "/artemis";
+
+	/**
+	 * appKey
+	 */
+	public static final String AppKey = "26589653";
+
+	/**
+	 * appSecret
+	 */
+	public static final String AppSecret = "hSzZW0VHfyHgJziMemOx";
+
+	/**
+	 * 分页获取监控点资源 url
+	 */
+	public static final String cameras = "/api/resource/v1/cameras";
+
+	/**
+	 * 视频预览url
+	 */
+	public static final String previewURLs = "/api/video/v2/cameras/previewURLs";
+
+
+
+}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/constant/ProtocolConstant.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/constant/ProtocolConstant.java
new file mode 100644
index 0000000..1663187
--- /dev/null
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/constant/ProtocolConstant.java
@@ -0,0 +1,35 @@
+package org.springblade.jfpt.hk.constant;
+
+/**
+ * 取流协议常量
+ * @author zhongrj
+ * @since 2021-08-06
+ */
+public interface ProtocolConstant {
+
+
+	/**
+	 * HIK私有协议,使用视频SDK进行播放时,传入此类型;
+	 */
+	String HIK = "hik";
+
+	/**
+	 * RTSP协议
+	 */
+	String RTSP = "rtsp";
+
+	/**
+	 * RTMP协议(RTMP协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码)
+	 */
+	String RTMP = "rtmp";
+
+	/**
+	 * HLS协议(HLS协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码)
+	 */
+	String HLS = "hls";
+
+	/**
+	 * Websocket协议(一般用于H5视频播放器取流播放)
+	 */
+	 String WS ="ws";
+}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/util/GetCameraPreviewURL.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/util/GetCameraPreviewURL.java
new file mode 100644
index 0000000..cfa4abb
--- /dev/null
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/hk/util/GetCameraPreviewURL.java
@@ -0,0 +1,127 @@
+package org.springblade.jfpt.hk.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hikvision.artemis.sdk.ArtemisHttpUtil;
+import com.hikvision.artemis.sdk.config.ArtemisConfig;
+import org.springblade.jfpt.hk.constant.HkConstant;
+import org.springblade.jfpt.hk.constant.ProtocolConstant;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.springblade.jfpt.hk.constant.HkConstant.ARTEMIS_PATH;
+
+public class GetCameraPreviewURL {
+
+	/**
+	 * 获取视频预览数据
+	 * @param url 视频预览url
+	 * @param cameraIndexCode  监控点唯一标识
+	 * @return
+	 */
+	public static String GetCameraPreviewURL(String url,String cameraIndexCode,String protocol) {
+
+		/**
+		 * STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数.
+		 */
+		// artemis网关服务器ip端口
+		ArtemisConfig.host = HkConstant.HOST;
+		// 秘钥appKey
+		ArtemisConfig.appKey = HkConstant.AppKey;
+		// 秘钥appSecret
+		ArtemisConfig.appSecret = HkConstant.AppSecret;
+
+
+
+		/**
+		 * STEP3:设置接口的URI地址
+		 */
+		final String apiUrl = ARTEMIS_PATH + url;
+		Map<String, String> path = new HashMap<String, String>(2) {
+			{
+				//根据现场环境部署确认是http还是https
+				put("https://", apiUrl);
+			}
+		};
+
+		/**
+		 * STEP4:设置参数提交方式
+		 */
+		String contentType = "application/json";
+
+		/**
+		 * STEP5:组装请求参数
+		 */
+		JSONObject jsonBody = new JSONObject();
+		jsonBody.put("cameraIndexCode", cameraIndexCode);
+		jsonBody.put("streamType", 0);
+		jsonBody.put("protocol", protocol);
+		jsonBody.put("transmode", 1);
+		jsonBody.put("expand", "streamform=ps");
+		String body = jsonBody.toJSONString();
+		/**
+		 * STEP6:调用接口
+		 */
+		String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType , null);// post请求application/json类型参数
+		return result;
+	}
+
+
+	/**
+	 * 获取监控点资源分页数据
+	 * @param url 监控资源url
+	 * @return
+	 */
+	public static String GetCameraResourcePage(Integer pageNo,Integer pageSize,String url) {
+
+		/**
+		 * STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数.
+		 */
+		// artemis网关服务器ip端口
+		ArtemisConfig.host = HkConstant.HOST;
+		// 秘钥appKey
+		ArtemisConfig.appKey = HkConstant.AppKey;
+		// 秘钥appSecret
+		ArtemisConfig.appSecret = HkConstant.AppSecret;
+
+
+
+		/**
+		 * STEP3:设置接口的URI地址
+		 */
+		final String apiUrl = ARTEMIS_PATH + url;
+		Map<String, String> path = new HashMap<String, String>(2) {
+			{
+				//根据现场环境部署确认是http还是https
+				put("https://", apiUrl);
+			}
+		};
+
+		/**
+		 * STEP4:设置参数提交方式
+		 */
+		String contentType = "application/json";
+
+		/**
+		 * STEP5:组装请求参数
+		 */
+		JSONObject jsonBody = new JSONObject();
+		jsonBody.put("pageNo", pageNo);
+		jsonBody.put("pageSize", pageSize);
+		String body = jsonBody.toJSONString();
+
+		/**
+		 * STEP6:调用接口并返回数据
+		 * post请求application/json类型参数;
+		 */
+		return ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType , null);
+	}
+
+	public static void main(String[] args) {
+
+		String result = GetCameraResourcePage(1,1,HkConstant.cameras);
+		String result1 = GetCameraPreviewURL(HkConstant.previewURLs,"1f792961883543c6868cc8b200291962", ProtocolConstant.HLS);
+		System.out.println("result结果示例: " + result);
+		System.out.println("result1 = " + result1);
+	}
+}

--
Gitblit v1.9.3