
CCTV程序开发文档基于海康《设备网络SDK使用手册 V4.1.0》.doc
85页CCTV程序开发文档基于海康《设备网络SDK使用手册 V4.1.0》2012/1/17概述设备网络SDK是基于设备私有网络通信协议开发的,为后端设备(嵌入式网络硬盘录像机、视频服务器)、前端设备(网络摄像机、网络球机、IP模块)等产品服务的配套模块,用于远程访问和控制设备软件的二次开发 适用于以下产品型号:1. DS-95xx、DS-96xxNVR; DS-90xx混合型硬盘录像机; 2. DS-91xx、DS-81xx、DS-80xx、DS-70xx、DS-71xx、DS-7116、DS-72xx硬盘录像机;3. DS-60xx、DS-61xx视频服务器、编/解码器;4. iDS-6002HF/B双摄像机跟踪、iDS-6101HF智能设备(行为分析)、iDS52xx智能分析仪、iDS90XX、iDS91XX;5. DS630x_D、DS-6401HD多路解码器;6. IP摄像机(以下简称“IPC”):DS-2CD71xx、DS-2CD81xx、DS-2CD7xx、DS-2CD8xx、DS-2CD9xx;7. 其他IP设备:包含IP模块、IP快球等由于某些功能在此SDK版本中做了扩展,同时设备程序也做了相应的更新扩展,为了方便下文说明,此处将以上设备归为两类:l 如DS-7116、DS-81xx、DS-90xx、DS-91xx、DS-95xx、DS-96xx等系列设备称为V3.0以上版本支持的设备;l 如DS-80xx、IPC等设备称为V3.0以下版本支持的设备。
设备网络SDK主要功能 序号功能备注1.图像预览2.文件回放和下载3.云台控制、布防/撤防4.语音对讲5.日志管理6.解码卡7.远程升级8.远程重启/关闭9.格式化硬盘10.参数配置(系统配置、通道配置、串口配置、报警配置、用户配置)11.多路解码器12.智能设备功能和获取设备能力集设备网络SDK包含网络通讯库、软解码库、硬解码库等功能组件,我们提供Windows和Linux两个版本的SDK,各自所包含的组件如下: Windows下设备网络SDK: 网络通讯库HCNetSDK.h头文件HCNetSDK.lib LIB库文件HCNetSDK.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.hDecodeCardSdk.h头文件DsSdk.lib LIB库文件DsSdk.dll DLL库文件Linux下设备网络SDK库: 网络通讯库hcnetsdk.h头文件libhcnetsdk.soSO库文件hpr库libhpr.soSO库文件RTSP通讯库libStreamTransClient.soSO库文件软解码库playsdkpu.h头文件libm4play.soSO库文件转封装库libSystemTransform.soSO库文件本版本的设备网络SDK开发包中包含以上各个组件,除网络通讯库和hpr库这两个组件为必须项外,用户可以根据需要选择其中的一部分组件,以下将对各个组件在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内部对实时流码流播放显示时必须加载该项组件为更方便灵活地调用硬解码的相关功能,建议用户通过捕获数据在外部处理解码相关硬解码库的功能函数可参见《板卡SDK编程指南》中解码卡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、用户注册设备、注销设备和释放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支。












