package com.ld.igds.protocol.hikmedia.infovisionIoT.v161;
|
|
|
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;
|
}
|
|
|
/**
|
* 根据监控点编号进行云台操作
|
* <p>
|
* deviceCode
|
* <p>
|
* param.action 0-开始 ,1-停止
|
* 注:GOTO_PRESET命令下填任意值均可转到预置点,建议填0即可
|
* <p>
|
* 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<String> 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<String, String> path = new HashMap<String, String>(2) {
|
{
|
put("https://", 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());
|
jsonBody.put("speed", 40);
|
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<String> data = JSONObject.parseObject(result, HikRespData.class);
|
return data;
|
}
|
|
}
|