package com.chery.project.control.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.chery.common.constant.Constants;
import com.chery.common.enums.ProtocolType;
import com.chery.common.utils.DictUtils;
import com.chery.common.utils.StringUtils;
import com.chery.framework.redis.RedisCache;
import com.chery.project.control.bo.Monitor;
import com.chery.project.control.bo.Result;
import com.chery.project.control.service.HiKiService;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* 海康服务
*/
@Service
public class HiKiServiceImpl implements HiKiService {
public final static String HI_KI_STATION_VOUCHER = "hiki_station_voucher";
// private static String ARTEMIS_PATH = "/artemis";
private static String contentType = "application/json";
final String previewURLsApi = "/artemis/api/video/v2/cameras/previewURLs";
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", previewURLsApi);//根据现场环境部署确认是http还是https
}
};
@Value("${hk.host}")
private String host;
@Value("${hk.appkey}")
private String appkey;
@Value("${hk.appsecret}")
private String appsecret;
@Autowired
private RedisCache redisCache;
/**
* 根据监控ip获取码流
*
* @param ip
* @return
*/
@Override
public Monitor getStreamFlowByIp(String ip) {
//获取凭证
final String soundPostId = DictUtils.getDictValue(HI_KI_STATION_VOUCHER, ip);
final Result video = getVideo(soundPostId, ProtocolType.HLS, "streamform=ps");
return video.getData();
}
/**
* 根据监控凭证获取视频码流
* @param soundPostId
* @param protocolType
* @param expandStr
* @return
*/
public Result getVideo(String soundPostId, ProtocolType protocolType, String expandStr){
ArtemisConfig artemisConfig = new ArtemisConfig();
artemisConfig.setHost(host);
artemisConfig.setAppKey(appkey);
artemisConfig.setAppSecret(appsecret);
JSONObject jsonBody = new JSONObject();
Result result = new Result();
jsonBody.put("streamType", 0);
jsonBody.put("protocol", protocolType.value());
jsonBody.put("transmode", 1);
jsonBody.put("expand", expandStr);
String resultString = null;// post请求application/json类型参数
System.out.println("soundPostId::"+soundPostId);
if (StringUtils.isNotEmpty(soundPostId)) {
jsonBody.put("cameraIndexCode", soundPostId);
String body = jsonBody.toJSONString();
try {
resultString =
ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
path, body, null, null, contentType, null);
System.out.println(soundPostId+":调用接口情况:"+resultString);
} catch (Exception e) {
System.out.println("异常节点.soundPostId="+soundPostId);
throw new RuntimeException(e);
}
JSONObject jsonObject = JSONObject.parseObject(resultString);
result = JSON.toJavaObject(jsonObject, Result.class);
if (result.getData() != null) {
if (StringUtils.isNotEmpty(result.getCode())) {
result.getData().setCode(result.getCode());
}
if (StringUtils.isNotEmpty(result.getMsg())) {
result.getData().setMsg(result.getMsg());
}
}
}
return result;
}
}
与海boy
- 粉丝: 483
- 资源: 31
最新资源
- 基于python的语音识别与蓝牙通信的温控系统源代码(python毕业设计完整源码+LW).zip
- 电子学习资料设计作品全资料基于单片机控制的交通灯毕业设计资料
- 基于python的主观题自动阅卷系统源代码(python毕业设计完整源码+LW).zip
- 贴片自动送料仓储设备cero5.0全套技术资料100%好用.zip.zip
- 电子学习资料设计作品全资料基于单片机控制的开关电源资料
- 基于python的语音和背景音乐分离算法及系统源代码(python毕业设计完整源码+LW).zip
- 电子学习资料设计作品全资料基于单片机实现的俄罗斯方块游戏
- 基于python的某在线中药店销售数据统计与分析系统源代码(python毕业设计完整源码+LW).zip
- 基于python的英汉电子词典软件源代码(python毕业设计完整源码+LW).zip
- 电子学习资料设计作品全资料基于两个单片机串行通信的电子密码锁资料
- 基于python的旅游景点方面级别情感分析语料库与模型源代码(python毕业设计完整源码+LW).zip
- 基于SpringBoot+Vue开发的排课管理系统设计源码
- 电子学习资料设计作品全资料基于网络的虚拟仪器测试系统资料
- 基于华为昇腾Atlas 200DK 310B芯片的Python客流统计系统设计源码
- 基于深度学习的安全帽佩戴检测wlw源代码(python毕业设计完整源码+LW).zip
- 基于微信小程序平台的医院陪诊管理系统设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈