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

@Service
public class VideoService {
    @Autowired
    private VideoDao videoDao;

    public void insertAccessToken(){
        //轮询所有摄像头的appkey和appSecret
        List<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);
}
  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Java对接大华海康视频监控是指通过Java编程语言实现与大华和海康视频监控设备的交互和通讯。Java是一种跨平台的高级编程语言,其强大的网络编程能力和丰富的第三方库使得与视频监控设备的对接变得更加简单和灵活。 对接大华海康视频监控可以利用Java提供的网络编程功能,使用Socket或HTTP协议与视频监控设备进行通信。首先,需要通过设备的IP地址和端口号建立与设备的连接。然后,通过发送指令和接收设备的响应来实现对视频监控设备的控制和操作。 在Java中,可以使用第三方库来简化与大华海康视频监控设备的对接过程。例如,对于大华视频监控设备,可以使用Java SDK提供的相关接口,通过调用SDK中的方法实现设备的登录、预览、录像回放和控制等功能。 对于海康视频监控设备,可以使用Java SDK提供的海康芯片平台开发包(SDK)来实现对接。通过该SDK,可以获取设备的基本信息、实时视频流、录像文件等,并进行远程控制和操作。 在对接大华海康视频监控时,还可以利用Java提供的图形用户界面(GUI)开发工具包,如JavaFX或Swing,将视频监控画面显示在程序界面上,以便用户实时查看监控画面,同时结合图像处理和分析算法,实现实时监控、报警和数据分析等功能。 总之,Java对接大华海康视频监控是一种灵活、高效的方式,能够通过Java编程语言实现与视频监控设备的交互和通讯,满足不同应用场景下的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值