package com.ld.igds.protocol.hikmedia; import com.alibaba.fastjson.JSONObject; import com.hikvision.artemis.sdk.ArtemisHttpUtil; import com.hikvision.artemis.sdk.config.ArtemisConfig; import com.ld.igds.protocol.hikmedia.data.ApiHikParam; import com.ld.igds.protocol.hikmedia.data.HikRespData; import java.util.HashMap; import java.util.Map; /** * 海康视频流媒体API调用管理-设备操作相关 */ public class ApiCameraControl { private final static ApiCameraControl instance = new ApiCameraControl(); private ApiCameraControl() { } public static ApiCameraControl getInstance() { return instance; } /** * 根据监控点编号进行云台操作 *

* deviceCode *

* param.action 0-开始 ,1-停止 * 注:GOTO_PRESET命令下填任意值均可转到预置点,建议填0即可 *

* param.command 不区分大小写 * 说明: * LEFT 左转 * RIGHT右转 * UP 上转 * DOWN 下转 * ZOOM_IN 焦距变大 * ZOOM_OUT 焦距变小 * LEFT_UP 左上 * LEFT_DOWN 左下 * RIGHT_UP 右上 * RIGHT_DOWN 右下 * FOCUS_NEAR 焦点前移 * FOCUS_FAR 焦点后移 * IRIS_ENLARGE 光圈扩大 * IRIS_REDUCE 光圈缩小 * WIPER_SWITCH 接通雨刷开关 * START_RECORD_TRACK 开始记录轨迹 * STOP_RECORD_TRACK 停止记录轨迹 * START_TRACK 开始轨迹 * STOP_TRACK 停止轨迹; * 以下命令presetIndex不可为空: * GOTO_PRESET到预置点 * * @return */ public HikRespData ptz(ApiHikParam param) { /** * STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数. */ ArtemisConfig.host = param.getWanIp() + ":" + param.getPort(); // 平台的ip端口 ArtemisConfig.appKey = param.getAppKey(); // 密钥appkey ArtemisConfig.appSecret = param.getAppSecret();// 密钥appSecret /** * STEP2:设置OpenAPI接口的上下文 */ final String ARTEMIS_PATH = param.getArtemisPath(); /** * STEP3:设置接口的URI地址 */ final String urlApi = ARTEMIS_PATH + "/api/video/v1/ptzs/controlling"; Map path = new HashMap(2) { { put("http://", urlApi);//根据现场环境部署确认是http还是https } }; /** * STEP4:设置参数提交方式 */ String contentType = "application/json"; /** * STEP5:组装请求参数 */ JSONObject jsonBody = new JSONObject(); jsonBody.put("cameraIndexCode", param.getDeviceCode()); jsonBody.put("action", param.getAction()); jsonBody.put("command", param.getCommand()); if (param.getPresetIndex() > 0) { jsonBody.put("presetIndex", param.getPresetIndex()); } String body = jsonBody.toJSONString(); /** * STEP6:调用接口 */ String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);// post请求application/json类型参数 HikRespData data = JSONObject.parseObject(result, HikRespData.class); return data; } }