大华网络SDK开发手册.docx
《大华网络SDK开发手册.docx》由会员分享,可在线阅读,更多相关《大华网络SDK开发手册.docx(104页珍藏版)》请在冰豆网上搜索。
![大华网络SDK开发手册.docx](https://file1.bdocx.com/fileroot1/2022-11/21/8d113393-91a1-46ba-8e65-3e57d4a11a07/8d113393-91a1-46ba-8e65-3e57d4a11a071.gif)
大华网络SDK开发手册
大华网络SDK编程手册
VERSION3.1.8(Build070321)
2007-3-21
版权所有XX
前言
非常感谢您使用我们公司的设备,我们将为您提供最好的服务。
本手册可能包含技术上不准确的地方或印刷错误,欢迎指正。
我们将会定期更新手册的内容。
修订记录
日期
修订内容
作者
2006-05-30
创建
林峰
2006-7-3
修订接口描述
冯江
2006-7-5
修订概要描述
华立高
2006-7-26
修订接口描述
刘杰陈美英
2006-8-10
同步更新接口描述
陈美英
2006-8-21
修订接口描述
陈美英
2006-8-23
增加典型调用顺序描述
陈美英
2006-8-28
3.0.0整理修订
陈美英
2006-9-15
3.0.5同步增加回调数据扩展接口,更新云台控制说明
陈美英
2006-9-21
3.0.7同步增加登录扩展接口
陈美英
2006-9-29
3.0.9同步增加带有配置结构的配置功能接口说明
陈美英
2006-10-16
增加单独修改通道名称的接口
赵均树
2006-10-21
增加打开实时图像的扩展接口
赵均树
2006-10-28
1、增加按时间回放和下载接口
2、增加设备配置的第三方接入和获取设备的序列号功能
赵均树
2006-11-8
1、带数据回调的按时间回放扩展接口
2、带数据回调的按文件回放扩展接口
3、远程重启接口
4、录像回放能够播放音频
赵均树、陈琼施
2006-11-19
1、解决了反复修改第三方的IP地址时DVR比较容易死机的问题
2、增加485接口
3、通过网络修改IP配置时DVR重启
赵均树、陈琼施
2006-11-27
1、增加DDNS查询IP的功能
赵均树、陈琼施
2006-12-15
修正文档中接口描述的错误,并增加链接
赵均树、陈琼施、林坚彦
2006-12-25
增加并修改语音对讲的接口
叶浩、陈琼施
2006-12-29
增加用户管理接口
林坚彦、陈琼施
2007-1-17
修改了CLIENT_Login的功能描述
增加了CLIENT_FindFile、CLIENT_FindNextFile、CLIENT_FindClose
林坚彦、赵均树、陈琼施
2007-2-8
增加了设备参数配置的两个接口:
CLIENT_GetDevConfigCLIENT_SetDevConfig
林坚彦、陈琼施、
赵均树
2007-3-7
修改了CLIENT_StopListen接口典型应用的笔误
赵均树
2007-03-19
增加了个查询报警状态的接口。
林坚彦、陈琼施
2007-03-21
增加了语音对讲中的音频编码接口
增加了扩展报警侦听接口
叶浩、陈琼施、林坚彦
1简介7
1.1概述7
1.2适用性7
1.3特色功能8
2设计原则9
2.1编程说明9
2.2典型调用顺序10
3数据结构定义13
3.1客户端数据结构13
3.1.1设备信息结构16
3.1.3录像文件信息17
3.1.4设备状态信息17
3.1.5系统配置信息结构21
4接口定义21
4.1SDK初始化21
4.2状态侦听23
4.3字符叠加25
4.4设备注册26
4.5实时监视27
4.6音频控制31
4.7数据保存32
4.8视频抓图35
4.9回放和下载36
4.10回放控制46
4.11云台控制49
4.12实时预览51
4.13系统配置52
4.14日志管理57
4.15透明串口58
4.16远程控制60
4.17录像控制62
4.18系统时间63
4.19用户管理63
4.20语音对讲65
4.21码流统计69
4.22IO控制70
4.23强制I帧71
4.24设置限流71
4.25获取设备状态72
4.26修改通道名称72
4.27DDNS查询IP73
4.28设备参数配置73
5示例功能实现87
5.1连接设备88
5.2报警信息获取88
5.3系统配置88
5.4实时监视88
5.5数据保存89
5.6回放/下载和进度指示89
5.7播放控制89
5.8预览89
5.9字符叠加89
1简介
1.1概述
欢迎使用大华网络SDK编程手册,网络客户端软件开发包(DVR客户端SDK)是大华网络硬盘录像机、网络视频服务器的配套产品,本文档详细描述了开发包中各个函数实现的功能、接口及其函数之间的调用关系和示例实现。
网络客户端软件开发包主要包括业务操作和设备管理两大部分:
业务操作:
状态侦听、实时监视、实时预览、字符叠加、音频控制、录像回放和下载、数据保存、云台控制、语音对讲、透明串口、码流统计等功能。
设备管理:
远程升级、远程重启/关闭、设备参数配置(系统通用配置、报警布/撤防设置、录像配置、串口配置、图像配置、日志管理、用户管理、设备校时、动态检测配置、网络配置)等功能。
开发包所包括的文件有:
网络库:
dhnetsdk.lib、dhnetsdk.dll、dhnetsdk.h
解码库:
decode.dll、render.dll、dllh264.dll、audiorecord.dll、AudioRecordEx.dll、avcodec.dll
辅助库:
dhdvr.dll、ParaTimer.dll、DetectAreaCtrl.ocx、SetDeviceConfigProj.ocx
1.2适用性
⏹支持所有大华网络硬盘录像机(DVR)、网络视频服务器(NVS)、网络报警服务器(NAS)
⏹只支持TCP网络传输模式
⏹客户端可以采用多种分辨率进行图像预览,支持的分辨率包括:
QCIF、CIF、2CIF、、HalfD1、D1,VGA(640×480)等
⏹客户端支持多种图像编码,包括MPEG4和H.264等
1.3特色功能
支持设备的以下特色功能:
⏹多路预览
在窄带条件下,同时多路实时监视对带宽的要求比较高,一般的处理情况有两种,其一,轮巡。
其二,多路预览。
所谓多路预览,就是在一个通道上把所有通道的数据组织在一起传输,等同于多路同时监视。
必要的时候,可以转单路监视。
大华DVR支持多路预览功能。
⏹支持标准的MP4数据
一般情况下,同一平台集成不同厂商的前端设备(如DVR),由于各厂商采用的视频压缩方法不同(包括算法、参数定义等),导致解码端回放必须采用厂商特定的工具,造成平台开发商无法自定义播放标准。
本SDK能够解决这个问题。
通过特定接口,应用层可以通过本SDK获取标准媒体数据(FOURCC(‘D’、‘I’、‘V’、‘X’)视频数据),要支持用各种通用播放器播放,有了提供标准数据,应用层只须打包标准数据到播放器支持的容器类型(也就是文件格式,如AVI标准)就可以了。
2
设计原则
2.1编程说明
⏹初始化和清除
1、使用网络客户端软件包首先调用CLIENT_Init()对系统进行初始化,应用程序退出时调用CLIENT_Cleanup()释放所有占用的资源。
2、大多数函数调用均应该在CLIENT_Init()之后,CLIENT_Cleanup()之前,除了少数函数,譬如CLIENT_SetConnectTime()在CLIENT_Init()之前调用,而CLIENT_GetSDKVersion()可以在任何时候调用等等。
⏹操作句柄
系统设计上多处使用了句柄概念,很多操作均针对句柄,如回放、下载以及语音对讲等。
⏹用户登录和注销
用户在访问前端设备之前必须通过调用CLIENT_Login()登录到前端设备上,登录成功后返回一个全局唯一的句柄。
此句柄就像一个会话通道,之后该用户可通过此句柄访问前端设备。
退出该会话时则通过CLIENT_Logout()函数在前端设备上注销此句柄以终止该会话通道的使用。
建立连接与登录是同步的。
⏹心跳功能
在本开发包中提供自动心跳功能(20秒一次心跳)当设备断开能及时回调给客户端。
⏹同步与异步
异步以设置回调函数来响应网络数据,有些异步在设置后返回请求句柄,结束请求时将请求句柄提供给SDK以注销相关资源。
⏹SDK提供协议探测和转换
⏹回调函数
一般都有dwUser参数,由用户自定义需要的数据,一般用来传入类对象指针,方便回调处理在类中实现,回调应用都可以采取这种方式。
2.2典型调用顺序
A.初始化
SDK初始化CLIENT_Init()
B.SDK功能设置或信息获取
设置连接等待时间CLIENT_SetConnectTime()
获取SDK版本CLIENT_GetSDKVersion()
设置消息回调CLIENT_SetDVRMessCallBack()
设置自定义叠加画板CLIENT_RigisterDrawFun()
C.登录连接设备
登录设备CLIENT_Login()
开始侦听CLIENT_StartListen()
D.设备功能操作与信息获取
系统配置CLIENT_QueryConfig()
CLIENT_SetupConfig()
获取设备状态CLIENT_GetDEVWorkState()
获取协议信息CLIENT_QueryComProtocol()
查询获取系统信息CLIENT_QuerySystemInfo()
查询通道名称CLIENT_QueryChannelName()
查询日志CLIENT_QueryLogCallback()
CLIENT_QueryLog()
用户管理CLIENT_QueryUserInfo()
CLIENT_OperateUserInfo()
云台控制CLIENT_PTZControl()
CLIENT_DHPTZControl()
语音对讲CLIENT_StartTalk()
CLIENT_SendTalkData_Custom()
CLIENT_StopTalk()
设置限流CLIENT_SetMaxFlux()
透明串口CLIENT_CreateTransComChannel()
CLIENT_SendTransComData()
CLIENT_DestroyTransComChanne()
E.实时监视通道
打开监视通道CLIENT_RealPlay()
CLIENT_RealPlayEx()
保存监视图像数据CLIENT_SaveRealData()
监视数据回调保存CLIENT_SetRealDataCallBack()
CLIENT_SetRealDataCallBackEx()
获取视频参数信息CLIENT_ClientGetVideoEffect()
设置修改视频参数CLIENT_ClientSetVideoEffect()
强制I帧CLIENT_MakeKeyFrame()
F.多画面预览通道
打开多画面预览CLIENT_MultiPlay()
停止多画面预览CLIENT_StopMultiPlay()
G.回放/下载通道
查询录像CLIENT_QueryRecordFile()
回放及控制CLIENT_PlayBackByRecordFile()
CLIENT_PlayBackByRecordFileEx()
CLIENT_PlayBackByTime()
CLIENT_PlayBackByTimeEx()
CLIENT_GetPlayBackOsdTime()
CLIENT_PausePlayBack()
CLIENT_SeekPlayBack()
CLIENT_StopPlayBack()
CLIENT_StepPlayBack()
CLIENT_FastPlayBack()
CLIENT_SlowPlayBack()
CLIENT_GetFramePlayBack()
CLIENT_SetFramePlayBack()
下载CLIENT_DownloadByRecordFile()
CLIENT_DownloadByRecordFileEx()
CLIENT_DownloadByTime()
CLIENT_StopDownload()
CLIENT_GetDownloadPos()
H.针对显示图像的操作(监视/回放/多画面预览)
抓图CLIENT_CapturePicture()
码流统计CLIENT_GetStatiscFlux()
打开音频CLIENT_OpenSound()
设置音量CLIENT_SetVolume()
I.远程控制
远程升级CLIENT_StartUpgrade
CLIENT_SendUpgrade
CLIENT_StopUpgrade
录像控制CLIENT_QueryRecordState
CLIENT_SetupRecordState
系统校时CLIENT_QueryDeviceTime
CLIENT_SetupDeviceTime
IO控制CLIENT_QueryIOControlState
CLIENT_IOControl
J.注销断开设备
停止侦听CLIENT_StopListen()
断开连接CLIENT_Logout()
K.释放SDK资源
SDK退出CLIENT_Cleanup()
对D、E、F、G、H、I中的功能大部分之间没有调用先后顺序,当然对同一个功能还是应该按先打开再操作最后关闭的顺序。
3数据结构定义
3.1客户端数据结构
☞通用云台控制命令
typedefenum_PTZ_ControlType
{
PTZ_UP_CONTROL=0,//上
PTZ_DOWN_CONTROL,//下
PTZ_LEFT_CONTROL,//左
PTZ_RIGHT_CONTROL,//右
PTZ_ZOOM_ADD_CONTROL,//变倍+
PTZ_ZOOM_DEC_CONTROL,//变倍-
PTZ_FOCUS_ADD_CONTROL,//调焦+
PTZ_FOCUS_DEC_CONTROL,//调焦-
PTZ_APERTURE_ADD_CONTROL,//光圈+
PTZ_APERTURE_DEC_CONTROL,//光圈-
PTZ_POINT_MOVE_CONTROL,//转至预置点
PTZ_POINT_SET_CONTROL,//设置
PTZ_POINT_DEL_CONTROL,//删除
PTZ_POINT_LOOP_CONTROL,//点间轮循
PTZ_LAMP_CONTROL,//灯光雨刷
}PTZ_ControlType;
☞云台控制扩展命令
typedefenum_EXTPTZ_ControlType{
EXTPTZ_LEFTTOP=0X20,//左上
EXTPTZ_RIGHTTOP,//右上
EXTPTZ_LEFTDOWN,//左下
EXTPTZ_RIGHTDOWN,//右下
EXTPTZ_ADDTOLOOP,//加入预置点到巡航巡航线路预置点值
EXTPTZ_DELFROMLOOP,//删除巡航中预置点巡航线路预置点值
EXTPTZ_CLOSELOOP,//清除巡航巡航线路
EXTPTZ_STARTPANCRUISE,//开始水平旋转
EXTPTZ_STOPPANCRUISE,//停止水平旋转
EXTPTZ_SETLEFTBORDER,//设置左边界
EXTPTZ_RIGHTBORDER,//设置右边界
EXTPTZ_STARTLINESCAN,//开始线扫
EXTPTZ_CLOSELINESCAN,//停止线扫
EXTPTZ_SETMODESTART,//设置模式开始模式线路
EXTPTZ_SETMODESTOP,//设置模式结束模式线路
EXTPTZ_RUNMODE,//运行模式模式线路
EXTPTZ_STOPMODE,//停止模式模式线路
EXTPTZ_DELETEMODE,//清除模式模式线路
EXTPTZ_REVERSECOMM,//翻转命令
EXTPTZ_FASTGOTO,//快速定位水平坐标垂直坐标变倍
EXTPTZ_AUXIOPEN,//x34辅助开关开辅助点
EXTPTZ_AUXICLOSE,//0x35辅助开关关辅助点
EXTPTZ_OPENMENU=0X36,//打开球机菜单
EXTPTZ_CLOSEMENU,//关闭菜单
EXTPTZ_MENUOK,//菜单确定
EXTPTZ_MENUCANCEL,//菜单取消
EXTPTZ_MENUUP,//菜单上
EXTPTZ_MENUDOWN,//菜单下
EXTPTZ_MENULEFT,//菜单左
EXTPTZ_MENURIGHT,//菜单右
EXTPTZ_TOTAL,//最大命令值
}EXTPTZ_ControlType;
☞IO控制命令
typedefenum_IOTYPE{
ALARMINPUT=1,//报警输入
ALARMOUTPUT=2,//报警输出
}IOTYPE;
☞查询状态类型
#defineDH_DEVSTATE_COMM_ALARM0x0001//查询普通报警
#defineDH_DEVSTATE_SHELTER_ALARM0x0002//查询遮挡报警
#defineDH_DEVSTATE_RECORDING0x0003//查询录象状态
#defineDH_DEVSTATE_DISK0x0004//查询硬盘状态
☞错误类型代号,用于GetLastError函数的返回
#define_EC(x)
#defineNET_NOERROR0//没有错误
#defineNET_ERROR-1//未知错误
#defineNET_SYSTEM_ERROR_EC
(1)//Windows系统出错
#defineNET_NETWORK_ERROR_EC
(2)//网络错误
#defineNET_DEV_VER_NOMATCH_EC(3)//设备协议不匹配
#defineNET_INVALID_HANDLE_EC(4)//句柄无效
#defineNET_OPEN_CHANNEL_ERROR_EC(5)//打开通道失败
#defineNET_CLOSE_CHANNEL_ERROR_EC(6)//关闭通道失败
#defineNET_ILLEGAL_PARAM_EC(7)//用户参数不合法
#defineNET_SDK_INIT_ERROR_EC(8)//SDK初始化出错
#defineNET_SDK_UNINIT_ERROR_EC(9)//SDK清理出错
#defineNET_RENDER_OPEN_ERROR_EC(10)//申请render资源出错
#defineNET_DEC_OPEN_ERROR_EC(11)//打开解码库出错
#defineNET_DEC_CLOSE_ERROR_EC(12)//关闭解码库出错
#defineNET_MULTIPLAY_NOCHANNEL_EC(13)//多画面预览中检测到通道数为0
#defineNET_TALK_INIT_ERROR_EC(14)//录音库初始化失败
#defineNET_TALK_NOT_INIT_EC(15)//录音库未经初始化
#defineNET_TALK_SENDDATA_ERROR_EC(16)//发送音频数据出错
#defineNET_REAL_ALREADY_SAVING_EC(17)//实时数据已经处于保存状态
#defineNET_NOT_SAVING_EC(18)//未保存实时数据
#defineNET_OPEN_FILE_ERROR_EC(19)//打开文件出错
#defineNET_PTZ_SET_TIMER_ERROR_EC(20)//启动云台控制定时器失败
#defineNET_RETURN_DATA_ERROR_EC(21)//对返回数据的校验出错
#defineNET_INSUFFICIENT_BUFFER_EC(22)//没有足够的缓存
#defineNET_NOT_SUPPORTED_EC(23)//当前SDK未支持该功能
#defineNET_NO_RECORD_FOUND_EC(24)//查询不到录象
#defineNET_NOT_AUTHORIZED_EC(25)//无操作权限
#defineNET_NOT_NOW_EC(26)//暂时无法执行
#defineNET_NO_TALK_CHANNEL_EC(27)//未发现对讲通道
#defineNET_NO_AUDIO_EC(28)//未发现音频
#defineNET_AUDIOENCODE_NOTINI_EC(59)//音频编码接口没有成功初始化
#defineNET_DATA_TOOLONGH_EC(60)//数据过长
#defineNET_LOGIN_ERROR_PASSWORD_EC(100)//密码不正确
#defineNET_LOGIN_ERROR_USER_EC(101)//帐户不存在
#defineNET_LOGIN_ERROR_TIMEOUT_EC(102)//等待登录返回超时
#defineNET_LOGIN_ERROR_RELOGGIN_EC(103)//帐号已登录
#defineNET_LOGIN_ERROR_LOCKED_EC(104)//帐号已被锁定
#defineNET_LOGIN_ERROR_BLACKLIST_EC(105)//帐号已被列为黑名单
#defineNET_LOGIN_ERROR_BUSY_EC(106)//资源不足,系统忙