海康sdk查询指定时间段内NVR的录像文件列表

2023-10-30 12:50

本文主要是介绍海康sdk查询指定时间段内NVR的录像文件列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

海康sdk查询指定时间段内NVR的录像文件列表

    • 实现方式
      • 实现流程
      • 代码实现

个人博客:banmajio’s blog

海康sdk二次开发系列文章
海康sdk捕获码流数据通过JavaCV推成rtmp流的实现思路(PS流转封装RTMP)
海康sdk进行历史回放时,码流数据回调过快问题的解决方法
海康sdk项目(java)部署Linux环境相关问题总结
海康sdk部署Linux环境下无法播放子码流的问题
海康sdk项目部署Linux系统时出现java.lang.UnstisfiedLinkError:jnidispatch(xxx)not found in resource path错误
通过海康sdk捕获码流数据实现抓图功能
通过海康sdk实现指定时间段内的录像文件下载

实现方式

实现流程

实现流程如下图,初始化sdk、用户设备注册、注销设备、释放sdk资源请参考sdk自行调用,本篇只列出核心代码。
在这里插入图片描述

代码实现

	/*** @Title: historyList* @Description: 获取指定时间内的视频列表* @return: void* @throws InterruptedException**/@GetMapping(value = "/hisList")public JSONObject historyList(@RequestBody CameraPojo pojo) throws InterruptedException {//1. 初始化sdk接口自行调用//2. 注册设备接口自行调用HCLoginSDK login = null;// 注册设备//3. 将yyyy-MM-dd HH:mm:ss格式时间转为sdk时间结构体/*** @Title: getNvrTime* @Description:将时间转换为SDK支持的时间参数结构体* @param time* @return HCNetSDK.NET_DVR_TIME**///	public static HCNetSDK.NET_DVR_TIME getNvrTime(String time) {//		HCNetSDK.NET_DVR_TIME nvrTime = new HCNetSDK.NET_DVR_TIME();//		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//		try {//			Calendar cal = Calendar.getInstance();//			cal.setTime(sdf.parse(time));//			nvrTime.dwYear = cal.get(Calendar.YEAR);//			nvrTime.dwMonth = cal.get(Calendar.MONTH) + 1;//			nvrTime.dwDay = cal.get(Calendar.DAY_OF_MONTH);//			nvrTime.dwHour = cal.get(Calendar.HOUR_OF_DAY);//			nvrTime.dwMinute = cal.get(Calendar.MINUTE);//			nvrTime.dwSecond = cal.get(Calendar.SECOND);//		} catch (Exception e) {//			e.printStackTrace();//		}//		return nvrTime;//	}NET_DVR_TIME lpStartTime = Utils.getNvrTime(pojo.getStarttime());NET_DVR_TIME lpStopTime = Utils.getNvrTime(pojo.getEndtime());// 根据时间查找设备录像文件。NativeLong lFindHandle = HCNetSDK.INSTANCE.NET_DVR_FindFile(login.getLUserID(),new NativeLong(Integer.valueOf(pojo.getChannel())), 0, lpStartTime, lpStopTime);if (lFindHandle.intValue() < 0) {int errorcode = HCNetSDK.INSTANCE.NET_DVR_GetLastError();logger.error("hcsdk 按时间查找录像文件失败,错误码:" + errorcode);json.put("message", "按时间查找录像文件失败 错误码:" + errorcode);HCNetSDK.INSTANCE.NET_DVR_FindClose(lFindHandle);return json;}// 文件查找结果信息结构体。HCNetSDK.NET_DVR_FINDDATA_V40 lpFindData = new HCNetSDK.NET_DVR_FINDDATA_V40();NativeLong lFindNextFile_V40;JSONObject hisList = new JSONObject(true);// 文件列表序号int videoindex = 1;while (true) {// 逐个获取查找到的文件信息lFindNextFile_V40 = HCNetSDK.INSTANCE.NET_DVR_FindNextFile_V40(lFindHandle, lpFindData);// 正在查找请等待if (lFindNextFile_V40.intValue() == 1002) {continue;}// 获取文件信息成功if (lFindNextFile_V40.intValue() == 1000) {Map<String, Object> video = new LinkedHashMap<>();//NET_DVR_FINDDATA_V40结构体中可以得到文件名、文件开始时间、文件结束时间、文件大小、文件类型等信息,根据需要返回。video.put("starttime", Utils.sdkTimeToStr(lpFindData.struStartTime));video.put("endtime", Utils.sdkTimeToStr(lpFindData.struStopTime));hisList.put(String.valueOf(videoindex), video);videoindex++;continue;}if (lFindNextFile_V40.intValue() == 1003) {logger.debug("hcsdk 没有更多的文件,查找结束");break;}}// 结束查找 释放资源HCNetSDK.INSTANCE.NET_DVR_FindClose(lFindHandle);return hisList;}

这篇关于海康sdk查询指定时间段内NVR的录像文件列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308023

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

c++的初始化列表与const成员

初始化列表与const成员 const成员 使用const修饰的类、结构、联合的成员变量,在类对象创建完成前一定要初始化。 不能在构造函数中初始化const成员,因为执行构造函数时,类对象已经创建完成,只有类对象创建完成才能调用成员函数,构造函数虽然特殊但也是成员函数。 在定义const成员时进行初始化,该语法只有在C11语法标准下才支持。 初始化列表 在构造函数小括号后面,主要用于给

ural 1026. Questions and Answers 查询

1026. Questions and Answers Time limit: 2.0 second Memory limit: 64 MB Background The database of the Pentagon contains a top-secret information. We don’t know what the information is — you

Spring+MyBatis+jeasyui 功能树列表

java代码@EnablePaging@RequestMapping(value = "/queryFunctionList.html")@ResponseBodypublic Map<String, Object> queryFunctionList() {String parentId = "";List<FunctionDisplay> tables = query(parent

Mybatis中的like查询

<if test="templateName != null and templateName != ''">AND template_name LIKE CONCAT('%',#{templateName,jdbcType=VARCHAR},'%')</if>

遮罩,在指定元素上进行遮罩

废话不多说,直接上代码: ps:依赖 jquer.js 1.首先,定义一个 Overlay.js  代码如下: /*遮罩 Overlay js 对象*/function Overlay(options){//{targetId:'',viewHtml:'',viewWidth:'',viewHeight:''}try{this.state=false;//遮罩状态 true 激活,f

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

C#关闭指定时间段的Excel进程的方法

private DateTime beforeTime;            //Excel启动之前时间          private DateTime afterTime;               //Excel启动之后时间          //举例          beforeTime = DateTime.Now;          Excel.Applicat

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a