@Service
public class VideoService {@Autowiredprivate VideoDao videoDao;public void insertAccessToken(){//轮询所有摄像头的appkey和appSecretList<VideoSecretBean> allVideo = videoDao.getAllAppKey();if ( allVideo != null ){for (VideoSecretBean bean : allVideo){String appKey = bean.getAppKey();String appSecret = bean.getAppSecret();//调用萤石接口String url = "https://open.ys7.com/api/lapp/token/get?appKey="+appKey+"&appSecret="+appSecret;HttpHeaders requestHeaders = new HttpHeaders();requestHeaders.add("Content-Type", "application/x-www-form-urlencoded");RestTemplate restTemplate = new RestTemplate();HttpEntity requestEntity = new HttpEntity<>(requestHeaders);ResponseEntity<JSONObject> responseEntity  = restTemplate.postForEntity(url,requestEntity,JSONObject.class);String accessToken = responseEntity.getBody().getJSONObject("data").get("accessToken").toString();VideoTokenBean videoTokenBean = new VideoTokenBean();videoTokenBean.setAccessToken(accessToken);videoTokenBean.setAppKey(bean.getAppKey());//入库做更新操作videoDao.updateAccessToken(videoTokenBean);}}}
}
//更新视频播放地址
public void updateVideoList() {List<Map<String, String>> list = videoMapper.querySerial();List<VideoBean> videoToken = videoMapper.getAllVideoToken();if (videoToken != null) {if (list != null) {for (VideoBean bean : videoToken) {String accessToken = bean.getAccessToken();String pageStart = "0";String pageSize = "100";String url = "https://open.ys7.com/api/lapp/live/video/list?accessToken=" + accessToken + "&pageStart=" + pageStart + "&pageSize=" + pageSize;HttpHeaders requestHeaders = new HttpHeaders();requestHeaders.add("Content-Type", "application/x-www-form-urlencoded");RestTemplate restTemplate = new RestTemplate();HttpEntity requestEntity = new HttpEntity<>(requestHeaders);ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url, requestEntity,JSONObject.class);JSONArray data = responseEntity.getBody().getJSONArray("data");for (Map<String, String> serial : list) {for (int i = 0; i < data.size(); i++) {Map<String, String> datas = (Map<String, String>) data.get(i);if (serial.get("device_serial").equals(datas.get("deviceSerial"))) {//做更新操作videoMapper.updateVideoList(datas.get("deviceSerial"), String.valueOf(datas.get("channelNo")),String.valueOf(datas.get("status")), String.valueOf(datas.get("exception")));}}}}}}}
//更新摄像头状态
public void insertVideo() {List<VideoBean> videoToken = videoMapper.getAllVideoToken();//做删除操作,避免库中数据堆积videoMapper.updateVideo();if (videoToken != null) {for (VideoBean bean : videoToken) {String accessToken = bean.getAccessToken();String pageStart = "0";String pageSize = "100";String url = "https://open.ys7.com/api/lapp/live/video/list?accessToken=" + accessToken + "&pageStart=" + pageStart + "&pageSize=" + pageSize;HttpHeaders requestHeaders = new HttpHeaders();requestHeaders.add("Content-Type", "application/x-www-form-urlencoded");RestTemplate restTemplate = new RestTemplate();HttpEntity requestEntity = new HttpEntity<>(requestHeaders);ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url, requestEntity,JSONObject.class);JSONArray data = responseEntity.getBody().getJSONArray("data");if (data != null) {for (int i = 0; i < data.size(); i++) {Map<String, String> datas = (Map<String, String>) data.get(i);VideoListBean videoListBean = new VideoListBean();videoListBean.setDeviceSerial(datas.get("deviceSerial"));videoListBean.setChannelNo(String.valueOf(datas.get("channelNo")));videoListBean.setLiveAddress(datas.get("liveAddress"));videoListBean.setHdAddress(datas.get("hdAddress"));videoListBean.setRtmp(datas.get("rtmp"));videoListBean.setRtmpHd(datas.get("rtmpHd"));videoListBean.setStatus(String.valueOf(datas.get("status")));videoListBean.setException(String.valueOf(datas.get("exception")));videoListBean.setId(IdGenerator.getId());//做插入操作videoMapper.insertVideoList(videoListBean);}}}}}
public interface VideoDao {
//查询数据库中的appKey和appSecret @Select("   SELECT " +"   APPKEY appKey,APPSECRET appSecret " +"   FROM de_access_token " +"   WHERE FACTORY_TYPE = '1' ")List<VideoSecretBean> getAllAppKey();//更新数据库中appkey对应的AccessToken@Update("   UPDATE de_access_token " +"       SET ACCESS_TOKEN=#{accessToken} " +"   WHERE APPKEY=#{appKey}")int updateAccessToken(VideoTokenBean videoTokenBean);
}
//de_access_token表
CREATE TABLE `de_access_token` (`ID` varchar(50) NOT NULL COMMENT '主键ID',`APPKEY` varchar(50) DEFAULT NULL COMMENT 'appKey',`APPSECRET` varchar(50) DEFAULT NULL COMMENT 'appSecret',`ACCESS_TOKEN` varchar(255) DEFAULT NULL COMMENT '获取的accessToken',`SERIAL_NUM` varchar(50) DEFAULT NULL COMMENT '序列号',`VERIFY_CODE` varchar(255) DEFAULT NULL COMMENT '验证码',`COMPANY_CODE` varchar(50) DEFAULT NULL COMMENT '公司编码',`FACTORY_TYPE` int(1) DEFAULT NULL COMMENT '厂家类型 1:海康,2:大华',`url` varchar(255) DEFAULT NULL COMMENT '视频存储地址',PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@Component
public interface VideoMapper {@Select("SELECT " +" APPKEY appKey, " +" ACCESS_TOKEN accessToken, " +" SERIAL_NUM serialNum, " +" VERIFY_CODE verifyCode, " +" FACTORY_TYPE factoryType," +" APPSECRET appSecret" +" FROM " +" `de_access_token` " +" WHERE " +" COMPANY_CODE = #{companyCode}")videoResBean getAccessToken(String companyCode);@Select("SELECT " +" APPKEY appKey, " +" ACCESS_TOKEN accessToken, " +" SERIAL_NUM serialNum, " +" VERIFY_CODE verifyCode, " +" FACTORY_TYPE factoryType," +" APPSECRET appSecret" +" FROM " +" `de_access_token` " +" WHERE " +" COMPANY_CODE = #{companyCode}")TokenBean getTokenBean(String companyCode);@Select("   SELECT " +"       a.ACCESS_TOKEN accessToken," +"       a.SERIAL_NUM serialNum," +"       b.COMPANY_NAME companyName " +"   FROM de_access_token a " +"   LEFT JOIN core_company b " +"       ON a.COMPANY_CODE = b.COMPANY_CODE " +"   WHERE b.P_COMPANY_ID is not null " +"   GROUP BY b.COMPANY_NAME" )List<VideoBean> getAllVideoToken();@Select("   SELECT " +"   APPKEY appKey,APPSECRET appSecret " +"   FROM de_access_token " +"   WHERE FACTORY_TYPE = '1' ")List<VideoSecretBean> getAllAppKey();@Update(" UPDATE de_access_token " +" SET " +"   ACCESS_TOKEN=#{accessToken} " +" WHERE APPKEY=#{appKey}")int updateAccessToken(VideoTokenBean videoTokenBean);@Update("   DELETE FROM de_live_address")int updateVideo();@Insert(" insert into de_live_address(id,device_serial,channel_no,live_address,hd_address,rtmp,rtmp_hd,status,exception) " +" values(#{id},#{deviceSerial},#{channelNo},#{liveAddress},#{hdAddress},#{rtmp},#{rtmpHd},#{status},#{exception})")int insertVideoList(VideoListBean videoListBean);@Select("   SELECT " +"       device_serial " +"   FROM  de_live_address " +"   where device_serial = 'E18385684'" )List<Map<String,String>> querySerial();@Update(" update de_live_address set status = #{status},exception = #{exception}" +" where device_serial = #{deviceSerial} and channel_no = #{channelNo} ")int updateVideoList(@Param("deviceSerial") String deviceSerial, @Param("channelNo") String channelNo, @Param("status") String status, @Param("exception") String exception);@Select("   SELECT " +"   a.id,a.device_serial deviceSerial,a.CHANNEL_NO channelNo,a.live_address liveAddress,a.hd_address hdAddress,a.rtmp,a.rtmp_hd rtmpHd,a.`status`,a.exception,c.CHANNEL_NAME channelName " +"   FROM de_live_address a " +"   LEFT JOIN de_camera_address b on a.device_serial = b.DEVICE_SERIAL " +"   LEFT JOIN (" + "SELECT " +"       device_serial,CHANNEL_NAME,CHANNEL_NO,LAT,lon " +"       FROM " +"       de_camera_address  WHERE COMPANY_CODE = #{companyCode} " + ") c on c.CHANNEL_NO = a.channel_no " +"       WHERE " +"       a.device_serial = (" +"           SELECT device_serial FROM de_camera_address \n" +"           WHERE COMPANY_CODE = #{companyCode} " +"           GROUP BY device_serial " + ") " +"   GROUP BY a.live_address")List<VideoCoorBean> queryVideoInfo(@Param("companyCode") String companyCode);//查询监理审核人id@Select("select distinct a.id from worker_info a left join worker_company b on a.id=b.worker_id where b.worker_type in ('138') and a.company_code='JYKJJRC' ")List<String> findSupervisorId();@Select("   SELECT " +"   APPKEY appKey,APPSECRET appSecret " +"   FROM de_access_token " +"   WHERE id='9'  ")VideoSecretBean insertAppKey();@Update("update de_access_token set APPKEY=#{appKey},APPSECRET=#{secret} where id='9' ")void updateAppKey(String appKey,String secret);
}

Java对接萤石云平台海康摄像头视频监控相关推荐

  1. GB/T28181国标流媒体平台海康大华宇视华为等硬件NVR摄像机注册到LiveGBS国标平台看不到设备的时候如何抓包及排查

    GB/T28181国标流媒体平台海康大华宇视华为等硬件NVR摄像机注册到LiveGBS国标平台看不到设备的时候如何抓包及排查 1.设备注册后查看不到 1.1.防火墙排查 1.2.端口排查 1.3.IP ...

  2. vue接入海康萤石云npm包,开发视频模块

    vue接入海康萤石云npm包,开发视频模块 因为公司项目的需要,需要接入海康萤石云平台的npm包 来开发公司的视频模块 我们目前做的是公司的视频直播模块 ui设计采用的是公司的视频窗口ui 好了,我们 ...

  3. java金蝶星空云金蝶Java 对接 金蝶云星空 接口 对接 金蝶API 对接 金蝶 接口 解决 会话失效 问题 会话已失效,请重新登录

    java金蝶星空云金蝶Java 对接 金蝶云星空 接口 对接 金蝶API 对接 金蝶 接口 解决 会话失效 问题 会话已失效,请重新登录 1.准备工作 1.1 接口调用账户 1.2 下载 金蝶星空云 ...

  4. java对接阿里云短信服务详解(验证码,推广短信,通知短信)

    前言 小前提: - java:springboot框架,maven版本管理. - 阿里云:有账号,已经进行实名认证. java对接阿里云短信服务详解(验证码,推广短信,通知短信) 前言 1. 登录阿里 ...

  5. Java对接金蝶云星空

    Java对接金蝶云星空 一:下载官方SDK 二:编写测试代码 三:登录授权成功 一:下载官方SDK 并将第三方包拉到project并pom引入 二:编写测试代码 K3CloudApiClient cl ...

  6. java对接天翼云OOS实现文件存储

    java对接天翼云OOS实现文件存储 1. 注册天翼云账户.开通对象存储.创建容器 2. 获取AccessKeyID.SecretAccessKey 确定四个参数,在application.yml中填 ...

  7. 海康摄像头视频实时监控

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 海康摄像 ...

  8. 利用flask解析海康摄像头视频

    利用flask解析海康摄像头视频 利用flask解析海康摄像头和大华摄像头的视频 一.安装依赖包 二.获取海康摄像头视频流 三.将视频流输出到Web页面 四. 创建HTML模板文件 利用flask解析 ...

  9. Java版基于springboot+maven海康摄像头sdk抓拍功能的二次开发

    相信在用Java开发海康摄像头的小袁袁都很苦恼官网给的SDK,官方的SDK中有demo,有文档,可那大多都是基于C写的文档,找了半天终于找到一个java版本的,进去一看还是用Jfream写的C/S版的 ...

  10. 萤石云平台接入_前端接入监控视频

    简介 在可视化平台的展示中,监控视频可能是不可或缺的一部分.由于屏幕的尺寸限制,监控视频在可视化平台中占比不大,但是对于设计到实物的企业来说,监控视频在可视化平台中的展现是必不可少的一部分. 海康威视 ...

最新文章

  1. 多模态商品推荐与认知智能背后的数学
  2. 嵌入式系统学习笔记之五-uboot常用命令之补充
  3. rocketmq怎么保证消息一致性_RocketMQ为什么要保证订阅关系的一致性?
  4. Python TVTK 标量数据可视化与矢量数据可视化,空间轮廓线可视化
  5. 二叉查找树 Java实现
  6. vue cli 脚手架上多页面开发 支持webpack2.x
  7. 联发科天玑800适配鸿蒙系统,联发科天玑800什么水平
  8. java api练习_Java接口练习
  9. shell截取字符串的方法
  10. (翻译)从底层了解ASP.NET体系结构 [转]
  11. 主题:基于非合作博弈模型多微网交易策略研究 参考文档:《基于博弈论的多微电网系统交易模式研究》完全复现
  12. 谷歌octotree插件的使用
  13. 【转】Delphi配置系统未能初始化
  14. 计算机应用基础前言,大学计算机基础
  15. ceph pg不一致问题
  16. 基础论文 (一) ADDA
  17. java三角形类_Java面向对象练习题之三角形
  18. (示例一)功能简单的小区快递管理系统(二维数组存储数据)
  19. 2022-2028年中国继电器行业市场运营格局及竞争战略分析报告
  20. 适用于 Web 开发者的 Atom 编辑器插件

热门文章

  1. 韩顺平Linux操作系统视频教程
  2. 暴风影音CTO:暴风门事件给研发团队带来的启示
  3. 疯狂程序员网址。。。
  4. ie升级后必须重启计算机吗,微软迟到的补丁:升级到IE9将无需重启计算机
  5. 如何选择VC界面库产品?(四)— DSkinLite vs DirectUI
  6. 用gambit学博弈论--完全信息动态博弈-博弈扩展式、博弈树(二)
  7. LoadRunner11下载以及详细破解说明
  8. 关于win10用户使用protel99se可能出现的问题以及解决方法
  9. 零基础在Linux环境安装Cadence系列软件
  10. “跟技术Leader聊了10分钟,我就猜到下周要发生重大宕机事故!”