转载地址:https://blog.csdn.net/qq_17058993/article/details/84649394

项目中需要用到海康威视的iVMS-8700综合安防管理平台,需要进行第三方接口的调用,web端实现预览和回访。从平台在服务器上的安装部署到成功实现web端预览。

这里只是做一下自己研究的过程,不涉及开发机密,不提供任何安装包。

一、准备服务器

 8核CPU 32G内存 

最好是在内网,或者公网可以访问,v*n的话需要配置客户端机器的ip和摄像头的ip在同一个网段。

在服务器上可以ping通摄像头,不可以ping通本机电脑,摄像头做了端口映射无需v*n(之前还想找个路由器,在里面配置v*n,然后摄像头的网线先接到路由器上再接公司内网,可惜没找到路由器),但是本机电脑登录还需要v*n。

后期在内网开发的话应该简单很多

iVMS-8700综合安防管理平台第三方开发

 

二、海康摄像头ip地址配置修改

从海康官网下载修改ip的软件

iVMS-8700综合安防管理平台第三方开发

 

iVMS-8700综合安防管理平台第三方开发

 

三、服务器中心管理安装

1、初始的用户名密码在文档中,后面提示修改。

iVMS-8700综合安防管理平台第三方开发

2、安装授权文件 

运行管理中心》 

授权**: 系统维护》授权管理

iVMS-8700综合安防管理平台第三方开发

 

3、API网关的获取

iVMS-8700综合安防管理平台第三方开发

 

新建合作方,拿到key和secret

iVMS-8700综合安防管理平台第三方开发

 

API列表可以进行在线测试,很方便。

iVMS-8700综合安防管理平台第三方开发

 

4、综合管理平台添加设备和监控点

服务器上直接打开web

iVMS-8700综合安防管理平台第三方开发

 

iVMS-8700综合安防管理平台第三方开发

 

 

iVMS-8700综合安防管理平台第三方开发

设置监控点,把监控设备添加进去

iVMS-8700综合安防管理平台第三方开发

 

 

5、媒体设置》码流中转处理 (不然没法在客户端查看实时画面)

iVMS-8700综合安防管理平台第三方开发

 

 

四、本地电脑 中心客户端的安装

这里选择需要的安装即可,这里只是视频开发所以只选择了视频

iVMS-8700综合安防管理平台第三方开发

 

登录以后查看实时画面

iVMS-8700综合安防管理平台第三方开发

 

 

五、后台JSON解析

1、获取区域列表,根据区域name 拿到某个区域的indexCode

2、获取某区域下的监控点列表,根据监控点name拿到监控点编号cameraIndexCode,后台传到前台web页面进行预览。

  1. /**
  2. * 调用POST请求类型接口,这里以分页获取区域列表为例
  3. * https://ip:port/artemis/api/api/resource/v1/regions
  4. *
  5. * @return
  6. */
  7. public static String callPostApiGetRegions() {
  8. /**
  9. * https://ip:port/artemis/api/resource/v1/regions
  10. * 根据API文档可以看出来,这是一个POST请求的Rest接口, 而且传入的参数为JSON字符串.
  11. * ArtemisHttpUtil工具类提供了doPostFormArtemis这个函数, 一共五个参数在文档里写明其中的意思. 因为接口是https,
  12. * 所以第一个参数path是个hashmap类型,请put一个key-value, querys为传入的参数. body 为JSON字符串.
  13. * query不存在,所以传入null,accept和contentType不指定按照默认传null.
  14. */
  15. String getCamsApi = ARTEMIS_PATH + "/api/resource/v1/regions";
  16. Map<String, String> paramMap = new HashMap<String, String>();// post请求Form表单参数
  17. paramMap.put("pageNo", "1");
  18. paramMap.put("pageSize", "2");
  19. String body = JSON.toJSON(paramMap).toString();
  20. Map<String, String> path = new HashMap<String, String>(2) {
  21. {
  22. put("https://", getCamsApi);
  23. }
  24. };
  25. String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json");
  26. return result;
  27. }
  28. // -------------------监控预览------------
  29. /**
  30. * 解析json 拿到indexCode
  31. * @param regionList 区域里列表
  32. * @param regionName 区域name
  33. * @return
  34. */
  35. public static String getindexCode(String regionList, String regionName) {
  36. String indexCode = null;
  37. JSONObject jsonObject = JSONObject.parseObject(regionList);
  38. JSONObject json = jsonObject.getJSONObject("data");
  39. JSONArray jsonArray = json.getJSONArray("list");
  40. for (int i = 0; i < jsonArray.size(); i++) {
  41. JSONObject jo = jsonArray.getJSONObject(i);
  42. if (jo.getString("name").equals(regionName)) {
  43. indexCode = jo.getString("indexCode");
  44. }
  45. }
  46. return indexCode;
  47. }
  48. /**
  49. * 根据区域编号获取下级监控点列表
  50. * @param indexCode 区域编号
  51. * @return
  52. */
  53. public static String getCameras(String indexCode) {
  54. String getCamsApi = ARTEMIS_PATH + "/api/resource/v1/regions/regionIndexCode/cameras";
  55. Map<String, String> paramMap = new HashMap<String, String>();// post请求Form表单参数
  56. paramMap.put("regionIndexCode", indexCode);
  57. paramMap.put("treeCode", "0");
  58. paramMap.put("pageNo", "1");
  59. paramMap.put("pageSize", "2");
  60. String body = JSON.toJSON(paramMap).toString();
  61. Map<String, String> path = new HashMap<String, String>(2) {
  62. {
  63. put("https://", getCamsApi);
  64. }
  65. };
  66. String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json");
  67. return result;
  68. }
  69. /**
  70. * 获取监控点编号 cameraIndexCode 根据 cameraName
  71. * @param camerasList 监控点列表
  72. * @param cameraName 监控点name
  73. * @return
  74. */
  75. public static String getcameraIndexCode(String camerasList, String cameraName) {
  76. String cameraIndexCode = null;
  77. JSONObject jsonObject = JSONObject.parseObject(camerasList);
  78. JSONObject json = jsonObject.getJSONObject("data");
  79. JSONArray jsonArray = json.getJSONArray("list");
  80. for (int i = 0; i < jsonArray.size(); i++) {
  81. JSONObject jo = jsonArray.getJSONObject(i);
  82. if (jo.getString("cameraName").equals(cameraName)) {
  83. cameraIndexCode = jo.getString("cameraIndexCode");
  84. }
  85. }
  86. return cameraIndexCode;
  87. }

 

main方法:

  1. // 1、区域列表:
  2. String VechicleDataResult = callPostApiGetRegions();
  3. System.out.println(JSONObject.toJSONString(JSONObject.parse(VechicleDataResult), true)); //显示json格式的
  4. // json解析 获取indexCode
  5. String indexCode = getindexCode(VechicleDataResult, "软件部办公室");
  6. System.out.println("indexCode:" + indexCode);
  7. // 2、区域下的监控点
  8. String cameras = getCameras(indexCode);
  9. System.out.println(JSONObject.toJSONString(JSONObject.parseObject(cameras), true));
  10. // json解析 获取cameraIndexCode
  11. String cameraIndexCode = getcameraIndexCode(cameras, "Camera 01");
  12. System.out.println("cameraIndexCode:" + cameraIndexCode);
  13. //将cameraIndexCode传递到前台web页面 进行预览(调用Demo)

 

 

 

 

六、web端预览

1、因为OpenAPI-Java接口Demo中web端预览实际上是根据最终获得的预览取流url来操作的。

所以这里需要根据视频播放应用开发流程,结合运管中心提供的API接口测试一步一步来。

最终必须成功拿到预览取流url

iVMS-8700综合安防管理平台第三方开发

 

iVMS-8700综合安防管理平台第三方开发

 

也可以根据Demo中进行测试

iVMS-8700综合安防管理平台第三方开发

 

2、调用”获取监控点预览取流 URL”接口,获取预览 url。 

失败返回码0x02830015 一直查找原因,竟然是

摄像头的系统版本太低 需要升级 升级完成正常获取到 注册状态 和设备状态

在运管中心的设备接入框架中查看设备状态信息

iVMS-8700综合安防管理平台第三方开发

 

其中监控点设备信息在综合管理平台中监控点查看

iVMS-8700综合安防管理平台第三方开发

 

 

3、Demo中web预览

开放平台 http://open.hikvision.com/download 下载web插件 

iVMS-8700综合安防管理平台第三方开发

iVMS-8700综合安防管理平台第三方开发

 

根据文档要求先下载web插件 

注意:同一时刻只能在一个浏览器使用web插件,要是打开了两个浏览器,然后在关闭某个浏览器就会弹出下面提示框

iVMS-8700综合安防管理平台第三方开发

 

 

API网关IP地址:服务器ip地址

API网关端口:综合管理平台中的地址 端口

实则就是综合管理平台中的地址

iVMS-8700综合安防管理平台第三方开发

 

iVMS-8700综合安防管理平台第三方开发

 

 

 

相关文章:

  • 2021-11-19
  • 2021-07-24
  • 2021-12-05
  • 2021-12-27
  • 2021-12-09
  • 2021-08-04
  • 2022-12-23
猜你喜欢
  • 2021-07-17
  • 2021-12-09
  • 2022-02-07
  • 2022-01-17
  • 2021-05-10
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案