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;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
240807 对接海康监控
共14个文件
java:6个
vue:2个
yml:1个
0 下载量 60 浏览量
2024-08-08
13:47:49
上传
评论
收藏 97KB 7Z 举报
温馨提示
240807 对接海康监控
资源推荐
资源详情
资源评论
收起资源包目录
海康监控视频码流.7z (14个子文件)
海康监控视频码流
bo
Monitor.java 1KB
Result.java 557B
pom.xml 19KB
前端
media
index.vue 8KB
QQ截图20240808134602.png 53KB
hk.js 178B
package.json 2KB
videoComponent
index.vue 2KB
libs
artemis-http-client-1.1.7.jar 38KB
HiKiService.java 307B
HiKiController.java 3KB
ProtocolType.java 303B
HiKiServiceImpl.java 4KB
application.yml 5KB
共 14 条
- 1
资源评论
与海boy
- 粉丝: 418
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功