通过海康sdk实现指定时间段内的录像文件下载
个人博客: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查询指定时间段内NVR的录像文件列表
实现方式
录像文件下载实现流程
根据海康sdk文档描述的流程来实现下载功能:
实现方式
- 初始化sdk和用户注册设备流程自行事项,本篇文章暂时略过该过程。
- 调用录像文件查找接口NET_DVR_FindFile,判断该时间段内是否存在录像。
- 调用NET_DVR_FindNextFile_V30按时间逐个获取查找到的文件信息。
- 调用NET_DVR_FindClose_V30关闭文件查找,释放资源。
- 组织下载信息结构体NET_DVR_PLAYCOND
- 检测下载路径是否存在,如果不存在则创建下载路径。
- 调用NET_DVR_GetFileByTime_V40按时间下载录像文件。
- 调用HCNetSDK.INSTANCE.NET_DVR_PlayBackControl(net_DVR_GetFileByTime_V40, HCNetSDK.NET_DVR_PLAYSTART, 0, null);控制录像下载状态 开始下载
- 提供获取录像文件下载进度的接口。
下载录像文件接口
/**
* @Title: download
* @Description: 下载指定时间录像文件
* @param pojo
* @return: JSONObject
**/
@PostMapping(value = "/download")
public JSONObject download(@RequestBody @Valid CameraPojo pojo) {
JSONObject json = new JSONObject(true);
// 自行调用注册设备的接口获取注册句柄
HCLoginSDK login = null;
// 将接口传入的yyyy-MM-dd HH:mm:ss格式的时间转为sdk接口时间的结构体
NET_DVR_TIME lpStartTime = Utils.getNvrTime(pojo.getStarttime());
NET_DVR_TIME lpStopTime = Utils.getNvrTime(pojo.getEndtime());
// 查找录像文件
NativeLong lFindFileHandle = HCNetSDK.INSTANCE.NET_DVR_FindFile(login.getLUserID(),
new NativeLong(Integer.valueOf(pojo.getChannel())), 0, lpStartTime, lpStopTime);
if (lFindFileHandle