数字硬盘录像机程序开发文档
概述
设备网络SDK是基于设备私有网络通信协议开发的,为后端设备〔嵌入式网络硬盘录像机、视频效劳器〕、前端设备〔网络摄像机、网络球机、IP模块〕等产品效劳的配套模块,用于远程访问和控制设备软件的二次开发。 序号 | 功能 | 备注 |
1. | 图像预览 | |
2. | 文件回放和下载 | |
3. | 云台控制、布防/撤防 | |
4. | 语音对讲 | |
5. | 日志管理 | |
6. | | |
7. | 远程升级 | |
8. | 远程重启/关闭 | |
9. | 格式化硬盘 | |
10. | 人体检测参数配置〔系统配置、通道配置、串口配置、报警配置、用户配置〕 | |
11. | 多路解码器 | |
12. | 智能设备功能和获取设备能力集 | |
| | | 微服务开发
设备网络SDK包含网络通讯库、软解码库、硬解码库等功能组件,我们提供Windows和Linux两个版本的SDK,各自所包含的组件如下:
Windows下设备网络SDK:
网络通讯库 | HetSDK.h | 头文件 |
HetSDK.lib LIB | 库文件 |
HetSDK.dll DLL | 库文件 |
hpr库 | hpr.lib LIB | 库文件 |
hpr.dll DLL | 库文件 |
RTSP通讯库 | StreamTransClient.dll DLL | 库文件 |
软解码库 | PlayM4.h | 头文件 |
PlayCtrl.lib LIB | 库文件 |
PlayCtrl.dll DLL | 库文件 |
转封装库 | SystemTransform.dll DLL | 库文件 |
硬解码库 | DataType.h DecodeCardSdk.h | 头文件 |
| DsSdk.lib LIB | 库文件 |
| DsSdk.dll DLL | 库文件 |
| | |
Linux下设备网络SDK库:
网络通讯库 | hetsdk.h | 头文件 |
libhetsdk.so | SO库文件 |
hpr库 | libhpr.so | SO库文件 |
RTSP通讯库 | libStreamTransClient.so | SO库文件 客车散热器 |
软解码库 | playsdkpu.h | 头文件 |
libm4play.so | SO库文件 |
转封装库 | libSystemTransform.so | SO库文件 |
| | |
| | |
本版本的设备网络SDK开发包中包含以上各个组件,以下将对各个组件在SDK中的作用和使用条件分别说明。
网络通讯库是设备网络SDK的主体,主要用于网络客户端与各类产品之间的通讯交互,负责远程功能调控、远程参数配置及码流数据的获取和处理等。
hpr库是网络通讯库的依赖库。
RTSP通讯库是支持RTSP传输协议的网络库。当需要对支持RTSP协议的产品进展取流等操作时就必须加载该项组件。
软解码库主要用于对实时码流数据进展解码显示〔实现预览功能〕和对录像文件进展回放解码等。用户如果需要在SDK部进展对实时流和录像码流播放显示时〔即NET_DVR_RealPlay_V30接口的第二个构造体参数的播放句柄设置成有效句柄时〕必须加载该组件,而如果用户仅需要用网络通讯库捕获到数据后再外部自行处理就不需要加载该组件,这种情况下用户在外部自行解码将更灵活,可参见软解码库函数说明?播放器SDK编程指南?。
转封装库的功能可以分为两种:一种是将标准码流转换成采用我们公司封装格式的码流。当用户需要对支持RTSP协议的产品捕获采用本公司封装格式的码流数据时〔即当设置NET_DVR_RealPlay_V30接口中的回调函数捕获数据或者调用NET_DVR_SetRealDataCallBack接口捕获数据时〕必须加载该组件。另一种功能是能将标准码流转换成其他格式的封装,如3GPP、PS等。例如,当用户需要对支持RTSP协议的产品实时捕获指定封装格式的码流数据〔对应的SDK接口为NET_DVR_SaveRealData〕时必须加载该项组件。
硬解码库需在配备硬解码卡〔MD卡〕的前提下使用,通过解码卡的解码与输出功能实现实时流的解码显示及向监视器上矩阵输出的功能。用户如果需要在SDK部对实时流码流播放显示时必须加载该项组件。为更方便灵活地调用硬解码的相关功能,建议用户通过捕获数据在外部处理解码。相关硬解码库的功能函数可参见?板卡SDKkkaaa编程指南?中解码卡API相关介绍。Linux下无硬解功能。
通用接口介绍
接口 | 功能 | 支持的产品 | 备注 |
NET_DVR_Init | 初始化SDK | 全部 | |
NET_DVR_Cleanup | 囊袋 释放SDK资源 | 全部 | |
NET_DVR_SetConnectTime | 设置SDK网络连接超时时间和连接尝试次数 | 全部 | |
NET_DVR_SetReconnect | 设置SDK重连功能 | 全部 | |
NET_DVR_GetDVRIPByResolveSvr | 通过解析效劳器,获取设备的动态IP地址 | 全部 | |
NET_DVR_SetDVRMessage | 注册接收异常、重连等消息的窗口句柄 | 全部 | |
NET_DVR_SetExceptionCallBack_V30 | 注册接收异常、重连等消息的窗口句柄或回调函数 | 全部 | |
NET_DVR_GetSDKVersion | 获取SDK的版本信息 | 全部 | |
NET_DVR_GetSDKBuildVersion | 获取SDK的版本号和build信息 | 全部 | |
NET_DVR_GetSDKState | 获取当前SDK的状态信息 | 全部 | |
NET_DVR_GetSDKAbility | 获取当前SDK的功能信息 | 全部 | |
NET_DVR_SetLogToFile | 启用SDK写日志文件 | 全部 | |
NET_DVR_GetLastError | 返回最后操作的错误码 | 全部 | |
NET_DVR_GetErrorMsg | 返回最后操作的错误码信息 | 全部 | |
NET_DVR_Login_V30 | 注册 | 全部 | |
NET_DVR_Logout_V30 | 注销 | 全部 | |
| | | |
编程引导
SDK主动注册模式
其中虚线框的流程是可选局部,不会影响其他流程和模块的功能使用。按实现功能的不同可以分成十个模块,实现每个模块的功能时初始化SDK、用户注册设备、注销设备和释放SDK资源这4个流程是必不可少的。
1)初始化SDK〔NET_DVR_Init〕:对整个网络SDK系统的初始化,存预分配等操作。
2)设置连接超时时间〔NET_DVR_SetConnectTime〕:这局部为可选,用于设置SDK中的网络连接超时时间,用户可以根据自己的需要设置该值。在不调用此接口设置超时时间的情况下,将采用SDK中的默认值。
3)设置接收异常消息的回调函数〔NET_DVR_SetDVRMessage或NET_DVR_SetExceptionCallBack_V30〕:由于SDK局部模块的功能都是由异步模式实现,
所以我们提供此接口用于接收预览、报警、回放、透明通道和语音对讲等模块发生异常信息。用户可以在初始化SDK后就设置该回调函数,在应用层对各个模块异常消息的接收和处理。
4)从解析效劳器获得设备的IP地址〔NET_DVR_GetDVRIPByResolveSvr〕:该接口提供一种在仅知道设备名称和序列号的情况下,从解析效劳器获得设备IP地址的方法。如:当前设备是通过拨号上网方式获取到动态IP地址,而运行了我公司IPServer软件的效劳器即为解析效劳器,我们可以通过此接口输入解析效劳器的地址、设备的名称和序列号等信息查询该设备的IP地址。IPServer是我公司提供的一款域名解析效劳器软件。
5)用户注册设备〔NET_DVR_Login_V30〕:实现用户的注册功能,注册成功后,返回的用户ID作为其他功能操作的唯一标识,SDK允许最大注册用户数为512个。就设备而言,V3.0以上版本支持的设备允许有32个注册用户名,而且同时最多允许128个用户注册;V3.0以下版本支持的设备允许有16个注册用户名,而且同时最多允许128个用户注册。
6)预览模块:从前端效劳器取实时码流,解码显示以及播放控制等功能,同时支持软解码和解码卡解码。具体流程详见预览模块流程。
7)回放和下载模块:可以通过按时间和按文件名的方式远程回放或者下载前端效劳器的录像文件,后续可以进展解码或者存储。同时还支持断点续传功能。具体流程详见回放和下载模块流程。
8)参数配置模块:设置和获取前端效劳器的参数,主要包括设备参数、网络参数、通道压缩参数、串口参数、报警参数、异常参数、交易信息和用户配置等参数信息。具体流程详见参数配置模块流程。
9)远程设备维护模块:实现关闭设备、重启设备、恢复默认值、远程硬盘格式化、远程升级和配置文件导入/导出等维护工作。具体流程详见远程设备维护模块流程。
10)语音对讲转发模块:实现和前端效劳器的语音数据对讲和语音数据获取,音频编码格式可以指定。具体流程详见语音对讲转发模块流程。
11)报警模块:处理前端效劳器上传的各种报警信号。报警分为“布防〞和“监听〞两种方式,在采用监听方式并且不需要获取用户ID的情况下,报警模块可以无需进展“用户注册〞操作步骤。具体流程详见报警模块流程。
12)透明通道模块:透明通道是将IP数据报文解析后直接发送到串行口的一种技术。实际上起到了延伸串行设备控制距离的作用。可利用IP网络控制多种串行设备,如控制解码器、矩阵、报警主机、门禁、仪器仪表等串行设备,对用户来说,只看到点对点传输,无须关心网络传输过程,所以称为串口透明通道。 SDK提供485和232串口作为透明通道功能,其中要将232串口作为透明通道使用,首先必须在232串口的配置信息〔NET_DVR_RS232CFG〕中将工作模式选为透明通道,这样232串口才可作为透明通道使用。具体流程详见透明通道模块流程。
13)云台控制模块:实现对云台的根本操作、预置点、巡航、轨迹和透明云台的控制。SDK将云台控制分为两种模式:一种是通过图像预览返回的句柄进展控制;另一种是无预览限制,通过用户注册ID号进展云台控制。
14)解码器功能模块:实现解码器设备的配置、解码控制等功能。SDK支持单路解码器和多路解码器,但目前以多路解码器为主流产品。具体流程详见多路解码器功能模块流程。
15)智能行为分析功能模块:实现对智能产品的参数配置、报警上传和能力集获取等功能。具体流程详见智能行为分析功能模块流程。
注:本手册下文提供的代码都是在VC环境下编译的。
预览模块流程
●实时预览支持TCP、UDP、RTP、MULTICAST网络传输模式。弯曲弹簧
●实时预览时,DS-80xx、DS-70xx、DS-71xx、DS-72xx、 DS-60xx、DS-61xx系列设备每个通道最多支持6路同时连接,每台设备最多支持24路同时连接;
DS-81xx、DS-71xxHV、72xxHV等系列设备每个通道最多支持6路同时连接,每台设备最多支持18路同时连接;
DS-90xx混合型硬盘录像机每个通道最多支持6路同时连接,每台设备最多支持64路同时连接;
DS-91xx系列设备每个通道最多支持6路同时连接,每台设备最多支持64路同时连接;
IP设备每个通道最多支持6路同时连接;
DS-91xx-ST系列通道连接数没有限制,每台设备最多支持128路同时连接。
预览和与预览相关的模块流程图
图中虚线框局部的模块是与预览模块相关,必须在启动预览后才能调用,这些模块之间是并列的关系,各自完成相应的功能。
●声音控制功能主要实现独占、共享声音的翻开和关闭;音量的控制。相关接口有:NET_DVR_OpenSound、NET_DVR_CloseSound、NET_DVR_OpenSoundShare、NET_DVR_CloseSoundShare、NET_DVR_Volume等。
●实时流数据捕获和录像模块主要实现数据回调和本地录像的功能,可以供用户后续处理。相关接口有:NET_DVR_SetRealDataCallBack、NET_DVR_SetStandardDataCallBack、NET_DVR_SaveRealData等。