package org.springblade.jfpt.hk.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.gson.JsonArray; 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.ArrayList; import java.util.HashMap; import java.util.List; 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 path = new HashMap(2) { { //根据现场环境部署确认是http还是https put("https://", apiUrl); } }; /** * STEP4:设置参数提交方式 */ String contentType = "application/json"; /** * STEP5:组装请求参数 */ JSONObject jsonBody = new JSONObject(); jsonBody.put("indexCode", cameraIndexCode); jsonBody.put("streamType", 0); jsonBody.put("netZoneCode", 0); jsonBody.put("protocol", protocol); jsonBody.put("transmode", 1); jsonBody.put("expireTime", 300); String body = jsonBody.toJSONString(); // 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 * @param cameraCode 监控点唯一标识 * @return */ public static String QueryCameraPreviewURL(String url, String cameraCode, String resourceType, String key) { /** * 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 path = new HashMap(2) { { //根据现场环境部署确认是http还是https put("https://", apiUrl); } }; /** * STEP4:设置参数提交方式 */ String contentType = "application/json"; /** * STEP5:组装请求参数 */ JSONObject jsonBody = new JSONObject(); List list = new ArrayList<>(); List list2 = new ArrayList(); JSONObject map = new JSONObject(); list2.add(cameraCode); map.put("key", key); map.put("operator", 0); map.put("values", list2); list.add(map); jsonBody.put("pageNo", 1); jsonBody.put("pageSize", 100); jsonBody.put("resourceType", resourceType); jsonBody.put("expressions", list); String body = jsonBody.toJSONString(); System.out.println(jsonBody); /** * STEP6:调用接口 */ String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 return result; } /** * 语音对讲 * * @param url 语音对讲url * @param cameraIndexCode 监控点唯一标识 * @return */ public static String GetTalkURLs(String url, String cameraIndexCode) { /** * 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 path = new HashMap(2) { { //根据现场环境部署确认是http还是https put("https://", apiUrl); } }; /** * STEP4:设置参数提交方式 */ String contentType = "application/json"; /** * STEP5:组装请求参数 */ JSONObject jsonBody = new JSONObject(); jsonBody.put("cameraIndexCode", cameraIndexCode); jsonBody.put("streamType", ""); jsonBody.put("expand", ""); jsonBody.put("eurlExpand", ""); jsonBody.put("netZoneCode", 0); jsonBody.put("transmode", 1); jsonBody.put("talkIndexCode", "ce744c4c67df464f92994185d825b6fa"); jsonBody.put("protocol", "wss"); 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 path = new HashMap(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); //根据设备id获取设备编号 String result1 = QueryCameraPreviewURL(HkConstant.camerasID, "111111222", "encodeDevice", "deviceCode"); JSONObject jsonObject1 = JSONObject.parseObject(result1); JSONObject res1 = (JSONObject) jsonObject1.get("data"); JSONArray arr1 = JSON.parseArray(res1.getString("list")); JSONObject data1 = (JSONObject) arr1.get(0); String code1 = data1.get("indexCode").toString(); //根据设备编号获取子节点编号 String result2 = QueryCameraPreviewURL(HkConstant.camerasID, code1, "camera", "parentIndexCode"); JSONObject jsonObject2 = JSONObject.parseObject(result2); JSONObject res2 = (JSONObject) jsonObject2.get("data"); JSONArray arr2 = JSON.parseArray(res2.getString("list")); JSONObject data2 = (JSONObject) arr2.get(0); String code2 = data2.get("indexCode").toString(); //根据子节点编号获取设备播放地址 String result3 = GetCameraPreviewURL(HkConstant.previewURLshttps, code2, ProtocolConstant.HLSS); //根据子节点编号获取音频对讲地址 String result4 = GetTalkURLs(HkConstant.talkURLs, code2); System.out.println("result结果示例: " + result); System.out.println("result1 = " + result1); System.out.println("result2 = " + result2); System.out.println("result3 = " + result3); System.out.println("result4 = " + result4); } }