当前位置:首页 >> 信息与通信 >>

大华网络SDK开发手册


大华网络 编程手册 大华网络 SDK 编程手册
VERSION 3.1.8(Build 070321)

2007-3-21

版权所有

侵权必究

网络客户端 SDK 编程手册





非常感谢您使用我们公司的设备,我们

将为您提供最好的服务。 本手册可能包含技术上不准确的地方或印刷错误,欢迎指正。我们将会定期更新手 册的内容。

第 2 页 共 93 页

网络客户端 SDK 编程手册

修订记录
日期 2006-05-30 创建 2006-7-3 修订接口描述 2006-7-5 2006-7-26 2006-8-10 2006-8-21 2006-8-23 2006-8-28 2006-9-15 2006-9-21 2006-9-29 修订概要描述 修订接口描述 同步更新接口描述 修订接口描述 增加典型调用顺序描述 3.0.0 整理修订 修订内容 林峰 冯江 华立高 刘杰 陈美英 陈美英 陈美英 陈美英 陈美英 作者

3.0.5 同步增加回调数据扩展接口,更新云台控制 陈美英 说明 3.0.7 同步增加登录扩展接口 陈美英

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 赵均树

赵均树、陈琼施

赵均树、陈琼施

赵均树、陈琼施 赵均树、陈琼施、林 坚彦 叶浩、陈琼施 林坚彦、陈琼施

2007-2-8

修改了 CLIENT_Login 的功能描述 林坚彦、赵均树、陈 增 加 了 CLIENT_FindFile 、 琼施 CLIENT_FindNextFile、CLIENT_FindClose 林坚彦、陈琼施、 增 加 了设 备参 数配 置 的两 个接 口: 赵均树
第 3 页 共 93 页

网络客户端 SDK 编程手册

CLIENT_GetDevConfig CLIENT_SetDevConfig 2007-3-7 修改了 CLIENT_StopListen 接口典型应用的笔 误 增加了个查询报警状态的接口。 增加了语音对讲中的音频编码接口 增加了扩展报警侦听接口 赵均树

2007-03-19 2007-03-21

林坚彦、陈琼施 叶浩、陈琼施、林坚 彦

第 4 页 共 93 页

网络客户端 SDK 编程手册





1 简 介 ............................................................ 7 1.1 概述 ......................................................... 7 1.2 适用性 ....................................................... 7 1.3 特色功能 ...................................................... 7 2 设计原则 ......................................................... 9 2.1 编程说明 ...................................................... 9 2.2 典型调用顺序 ................................................. 10 3 数据结构定义 ..................................................... 13 3.1 客户端数据结构 ................................................ 13 3.1.1 设备信息结构 ............................................. 16 3.1.2 时间信息 ................................................. 17 3.1.3 录像文件信息 ............................................. 17 3.1.4 设备状态信息 ............................................. 17 3.1.5 系统配置信息结构 .......................................... 22 4 接口定义 ........................................................ 22 4.1 SDK 初始化 ................................................... 22 4.2 状态侦听 ..................................................... 24 4.3 字符叠加 ..................................................... 26 4.4 设备注册 ..................................................... 27 4.5 实时监视 ..................................................... 29 4.6 音频控制 ..................................................... 32 4.7 数据保存 ..................................................... 33 4.8 视频抓图 ..................................................... 36 4.9 回放和下载 ................................................... 37 4.10 回放控制 .................................................... 47 4.11 云台控制 .................................................... 50 4.12 实时预览 .................................................... 52 4.13 系统配置 .................................................... 53 4.14 日志管理 .................................................... 57 4.15 透明串口 .................................................... 59 4.16 远程控制 .................................................... 61 4.17 录像控制 .................................................... 62 4.18 系统时间 .................................................... 63 4.19 用户管理 .................................................... 64
第 5 页 共 93 页

网络客户端 SDK 编程手册

4.20 语音对讲 .................................................... 66 4.21 码流统计 .................................................... 71 4.22 IO 控制 .................................................... 72 4.23 强制 I 帧 ................................................... 73 4.24 设置限流 .................................................... 73 4.25 获取设备状态 ................................................ 74 4.26 修改通道名称 ................................................ 75 4.27 DDNS 查询 IP ................................................ 75 4.28 设备参数配置 ................................................ 76 5 示例功能实现 ..................................................... 90 5.1 连接设备 ..................................................... 90 5.2 报警信息获取 ................................................. 90 5.3 系统配置 ..................................................... 91 5.4 实时监视 ..................................................... 91 5.5 数据保存 ..................................................... 91 5.6 回放 下载和进度指示 ........................................... 92 回放/下载和进度指示 5.7 播放控制 ..................................................... 92 播放控制 5.8 预览 ........................................................ 92 5.9 字符叠加 ..................................................... 92

第 6 页 共 93 页

网络客户端 SDK 编程手册

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) ,由于各厂商采用的 视频压缩方法不同(包括算法、参数定义等),导致解码端回放必须采用厂商特定的工
第 7 页 共 93 页

网络客户端 SDK 编程手册

具,造成平台开发商无法自定义播放标准。本 SDK 能够解决这个问题。通过特定接 口,应用层可以通过本 SDK 获取标准媒体数据(FOURCC(‘D’、‘I’、‘V’、‘X’)视频 数据) ,要支持用各种通用播放器播放,有了提供标准数据,应用层只须打包标准数 据到播放器支持的容器类型(也就是文件格式,如 AVI 标准)就可以了。

第 8 页 共 93 页

网络客户端 SDK 编程手册

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 参数, 由用户自定义需要的数据, 一般用来传入类对象指针, 方便回调处理在类中实现,回调应用都可以采取这种方式。

第 9 页 共 93 页

网络客户端 SDK 编程手册

2.2 典型调用顺序
A. 初始化 SDK 初始化 CLIENT_Init()

B. SDK 功能设置或信息获取 设置连接等待时间 获取 SDK 版本 设置消息回调 设置自定义叠加画板 CLIENT_SetConnectTime() CLIENT_GetSDKVersion() CLIENT_SetDVRMessCallBack() CLIENT_RigisterDrawFun()

C. 登录连接设备 登录设备 开始侦听 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() CLIENT_Login() CLIENT_StartListen()

第 10 页 共 93 页

网络客户端 SDK 编程手册

E. 实时监视通道 打开监视通道 保存监视图像数据 监视数据回调保存 获取视频参数信息 设置修改视频参数 强制 I 帧 F. 多画面预览通道 打开多画面预览 停止多画面预览 CLIENT_MultiPlay() CLIENT_StopMultiPlay() CLIENT_RealPlay() CLIENT_RealPlayEx() CLIENT_SaveRealData() CLIENT_SetRealDataCallBack() CLIENT_SetRealDataCallBackEx() CLIENT_ClientGetVideoEffect() CLIENT_ClientSetVideoEffect() CLIENT_MakeKeyFrame()

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()

下载

第 11 页 共 93 页

网络客户端 SDK 编程手册

H. 针对显示图像的操作(监视/回放/多画面预览) 抓图 码流统计 打开音频 设置音量 CLIENT_CapturePicture() CLIENT_GetStatiscFlux() CLIENT_OpenSound() CLIENT_SetVolume()

I. 远程控制 远程升级 CLIENT_StartUpgrade CLIENT_SendUpgrade CLIENT_StopUpgrade CLIENT_QueryRecordState CLIENT_SetupRecordState CLIENT_QueryDeviceTime CLIENT_SetupDeviceTime CLIENT_QueryIOControlState CLIENT_IOControl

录像控制 系统校时 IO 控制

J. 注销断开设备 停止侦听 断开连接 CLIENT_StopListen() CLIENT_Logout()

K. 释放 SDK 资源 SDK 退出 CLIENT_Cleanup()

对 D、E、F、G、H、I 中的功能大部分之间没有调用先后顺序,当然对同一个功能还是 应该按先打开再操作最后关闭的顺序。

第 12 页 共 93 页

网络客户端 SDK 编程手册

3 数据结构定义
3.1 客户端数据结构
通用云台控制命令
typedef enum _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; //上 //下 //左 //右 //变倍+ //变倍//调焦+ //调焦//光圈+ //光圈//转至预置点 //设置 //删除 //点间轮循 //灯光雨刷

云台控制扩展命令
typedef enum _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, // // // // // // // // // // // // // 左上 右上 左下 右下 加入预置点到巡航 巡航线路 删除巡航中预置点 巡航线路 清除巡航 巡航线路 开始水平旋转 停止水平旋转 设置左边界 设置右边界 开始线扫 停止线扫

预置点值 预置点值

第 13 页 共 93 页

网络客户端 SDK 编程手册

EXTPTZ_SETMODESTART, EXTPTZ_SETMODESTOP, EXTPTZ_RUNMODE, EXTPTZ_STOPMODE, EXTPTZ_DELETEMODE, EXTPTZ_REVERSECOMM, EXTPTZ_FASTGOTO, EXTPTZ_AUXIOPEN, EXTPTZ_AUXICLOSE, EXTPTZ_OPENMENU = 0X36, EXTPTZ_CLOSEMENU , EXTPTZ_MENUOK, EXTPTZ_MENUCANCEL, EXTPTZ_MENUUP, EXTPTZ_MENUDOWN, EXTPTZ_MENULEFT, EXTPTZ_MENURIGHT, EXTPTZ_TOTAL, }EXTPTZ_ControlType;

// 设置模式开始 模式线路 // 设置模式结束 模式线路 // 运行模式 模式线路 // 停止模式 模式线路 // 清除模式 模式线路 // 翻转命令 // 快速定位 水平坐标 垂直坐标 // x34 辅助开关开 辅助点 // 0x35 辅助开关关 辅助点 // 打开球机菜单 // 关闭菜单 //菜单确定 //菜单取消 //菜单上 //菜单下 //菜单左 //菜单右 //最大命令值

变倍

IO 控制命令
typedef enum _IOTYPE{ ALARMINPUT = 1, ALARMOUTPUT = 2, }IOTYPE; //报警输入 //报警输出

查询状态类型
#define #define #define #define DH_DEVSTATE_COMM_ALARM DH_DEVSTATE_SHELTER_ALARM DH_DEVSTATE_RECORDING DH_DEVSTATE_DISK 0x0001 0x0002 0x0003 0x0004 //查询普通报警 //查询遮挡报警 //查询录象状态 //查询硬盘状态

错误类型代号,用于 GetLastError 函数的返回
#define _EC(x) #define #define #define #define #define NET_NOERROR NET_ERROR NET_SYSTEM_ERROR NET_NETWORK_ERROR NET_DEV_VER_NOMATCH (0x80000000|x) 0 -1 _EC(1) _EC(2) _EC(3) //没有错误 //未知错误 //Windows 系统出错 //网络错误 //设备协议不匹配

第 14 页 共 93 页

网络客户端 SDK 编程手册

#define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define

NET_INVALID_HANDLE _EC(4) NET_OPEN_CHANNEL_ERROR _EC(5) NET_CLOSE_CHANNEL_ERROR _EC(6) NET_ILLEGAL_PARAM _EC(7) NET_SDK_INIT_ERROR _EC(8) NET_SDK_UNINIT_ERROR _EC(9) NET_RENDER_OPEN_ERROR _EC(10) _EC(11) NET_DEC_OPEN_ERROR NET_DEC_CLOSE_ERROR _EC(12) NET_MULTIPLAY_NOCHANNEL _EC(13) NET_TALK_INIT_ERROR _EC(14) NET_TALK_NOT_INIT _EC(15) _EC(16) NET_TALK_SENDDATA_ERROR NET_REAL_ALREADY_SAVING _EC(17) NET_NOT_SAVING _EC(18) NET_OPEN_FILE_ERROR _EC(19) _EC(20) NET_PTZ_SET_TIMER_ERROR NET_RETURN_DATA_ERROR _EC(21) _EC(22) NET_INSUFFICIENT_BUFFER NET_NOT_SUPPORTED _EC(23) NET_NO_RECORD_FOUND _EC(24) _EC(25) NET_NOT_AUTHORIZED NET_NOT_NOW _EC(26) _EC(27) NET_NO_TALK_CHANNEL NET_NO_AUDIO _EC(28) NET_AUDIOENCODE_NOTINI _EC(59) _EC(60) NET_DATA_TOOLONGH NET_LOGIN_ERROR_PASSWORD _EC(100) _EC(101) NET_LOGIN_ERROR_USER NET_LOGIN_ERROR_TIMEOUT _EC(102) NET_LOGIN_ERROR_RELOGGIN _EC(103) NET_LOGIN_ERROR_LOCKED _EC(104) NET_LOGIN_ERROR_BLACKLIST _EC(105) NET_LOGIN_ERROR_BUSY _EC(106) NET_LOGIN_ERROR_CONNECT _EC(107) NET_LOGIN_ERROR_NETWORK _EC(108) NET_RENDER_SOUND_ON_ERROR _EC(120) NET_RENDER_SOUND_OFF_ERROR _EC(121) NET_RENDER_SET_VOLUME_ERROR _EC(122) NET_RENDER_ADJUST_ERROR _EC(123) NET_RENDER_PAUSE_ERROR _EC(124) NET_RENDER_SNAP_ERROR _EC(125) _EC(126) NET_RENDER_STEP_ERROR

//句柄无效 //打开通道失败 //关闭通道失败 //用户参数不合法 //SDK 初始化出错 //SDK 清理出错 //申请 render 资源出错 //打开解码库出错 //关闭解码库出错 //多画面预览中检测到通道数为 0 //录音库初始化失败 //录音库未经初始化 //发送音频数据出错 //实时数据已经处于保存状态 //未保存实时数据 //打开文件出错 //启动云台控制定时器失败 //对返回数据的校验出错 //没有足够的缓存 //当前 SDK 未支持该功能 //查询不到录象 //无操作权限 //暂时无法执行 //未发现对讲通道 //未发现音频 //音频编码接口没有成功初始化 //数据过长 //密码不正确 //帐户不存在 //等待登录返回超时 //帐号已登录 //帐号已被锁定 //帐号已被列为黑名单 //资源不足,系统忙 //连接主机失败" //网络连接失败" //Render 库打开音频出错 //Render 库关闭音频出错 //Render 库控制音量出错 //Render 库设置画面参数出错 //Render 库暂停播放出错 //Render 库抓图出错 //Render 库步进出错

第 15 页 共 93 页

网络客户端 SDK 编程手册

#define NET_RENDER_FRAMERATE_ERROR #define NET_CONFIG_DEVBUSY #define NET_CONFIG_DATAILLEGAL

_EC(127) //Render 库设置帧率出错 _EC(999) //暂时无法设置 _EC(1000) //配置数据不合法

回调函数类型
#define #define #define #define #define COMM_ALARM SHELTER_ALARM DISK_FULL_ALARM DISK_ERROR_ALARM SOUND_DETECT_ALARM 0x1100 0x1101 0X1102 0x1103 0x1104 //常规报警信息 //视频遮挡报警 //硬盘满报警 //硬盘故障报警 //音频检测报警

设备型号(DVR 类型)
enum NET_DEVICE_TYPE { NET_PRODUCT_NONE = 0, NET_DVR_NONREALTIME_MACE, NET_DVR_NONREALTIME, NET_NVS_MPEG1, NET_DVR_MPEG1_2, NET_DVR_MPEG1_8, NET_DVR_MPEG4_8, NET_DVR_MPEG4_16, NET_DVR_MPEG4_SX2, NET_DVR_MEPG4_ST2, NET_DVR_MEPG4_SH2, NET_DVR_MPEG4_GBE, NET_DVR_MPEG4_NVSII, NET_DVR_STD_NEW, NET_DVR_DDNS, }; // // // // // // // // // // // // // // 非实时MACE 非实时 网络视频服务器 MPEG1二路录像机 MPEG1八路录像机 MPEG4八路录像机 MPEG4十六路录像机 MPEG4视新十六路录像机 MPEG4视通录像机 MPEG4视豪录像机 MPEG4视通二代增强型录像机 MPEG4网络视频服务器II代 新标准配置协议 DDNS服务器

3.1.1 设备信息结构

设备结构定义如下
typedef struct { BYTE BYTE BYTE BYTE BYTE sSerialNumber[SERIALNO_LEN]; byAlarmInPortNum; byAlarmOutPortNum; byDiskNum; byDVRType; //序列号 //DVR 报警输入个数 //DVR 报警输出个数 //DVR 硬盘个数 //DVR 类型,

第 16 页 共 93 页

网络客户端 SDK 编程手册

BYTE byChanNum; } NET_DEVICEINFO, *LPNET_DEVICEINFO;

//DVR 通道个数

3.1.2 时间信息
typedef struct { DWORD dwYear; DWORD dwMonth; DWORD dwDay; DWORD dwHour; DWORD dwMinute; DWORD dwSecond; } NET_TIME,*LPNET_TIME; //年 //月 //日 //时 //分 //秒

3.1.3 录像文件信息
typedef struct { unsigned int ch; //通道号 filename[128]; //文件名 char unsigned int size; //文件长度 NET_TIME starttime; //开始时间 endtime; //结束时间 NET_TIME unsigned int driveno; //磁盘号 startcluster; //起始簇号 unsigned int } NET_RECORDFILE_INFO, *LPNET_RECORDFILE_INFO;

3.1.4 设备状态信息

设备端通过回调主动上传的设备状态结构
typedef struct { int channelcount; int alarminputcount; unsigned char diskerror[MAX_DISKNUM]; unsigned char *record; //size:channelcount unsigned char *alarm; //size:alarminputcount unsigned char *motiondection; //size:channelcount unsigned char *videolost; //size:channelcount } NET_CLIENT_STATE;

第 17 页 共 93 页

网络客户端 SDK 编程手册

以下为查询的设备工作状态的相关结构
typedef struct { BYTE byRecordStatic; //通道是否在录像,0-不录像,1-录像 //连接的信号状态,0-正常,1-信号丢失 BYTE bySignalStatic; BYTE byHardwareStatic; //通道硬件状态,0-正常,1-异常,例如 DSP 死掉 char reserve; //暂时无效 DWORD dwBitRate; //实际码率,暂时无效 DWORD dwLinkNum; //客户端连接的个数, 暂时无效 //客户端的 IP 地址,暂时无效 DWORD dwClientIP[MAX_LINK]; }NET_DEV_CHANNELSTATE,*LPNET_DEV_CHANNELSTATE; typedef struct { DWORD dwVolume; //硬盘的容量 DWORD dwFreeSpace; //硬盘的剩余空间 //硬盘的状态,休眠,活动,不正常等 DWORD dwStatus; }NET_DEV_DISKSTATE,*LPNET_DEV_DISKSTATE; typedef struct{ DWORD dwDeviceStatic; //设备状态 0x00 正常,0x01 CPU 占用过高, 0x02 硬件错误 NET_DEV_DISKSTATE stHardDiskStatic[MAX_DISKNUM]; //设备暂时不支持 NET_DEV_CHANNELSTATE stChanStatic[MAX_CHANNUM]; //通道的状态 BYTE byAlarmInStatic[MAX_ALARMIN]; //报警端口的状态 0-无报警,1-有报警 BYTE byAlarmOutStatic[MAX_ALARMOUT];//报警输出端口的状态 0-无输出,1-有输出 DWORD dwLocalDisplay; //本地显示状态 0-正常,1-不正常 }NET_DEV_WORKSTATE,*LPNET_DEV_WORKSTATE;

录像文件信息
typedef struct { unsigned int ch; //通道号 char filename[128]; //文件名 unsigned int size; //文件长度 NET_TIME starttime; //开始时间 NET_TIME endtime; //结束时间 unsigned int driveno; //磁盘号 unsigned int startcluster; //起始簇号 } NET_RECORDFILE_INFO, *LPNET_RECORDFILE_INFO;

第 18 页 共 93 页

网络客户端 SDK 编程手册

串口协议信息(232 和 485)
typedef struct { char protocolname[12]; unsigned int baudbase; unsigned char databits; unsigned char stopbits; unsigned char parity; unsigned char reserve; } PROTOCOL_INFO, *LPPROTOCOL_INFO; //协议名 //波特率 //数据位 //停止位 //校验位

报警 IO 控制(报警输出和报警输入使能)
typedef struct { unsigned short index; unsigned short state; }ALARM_CONTROL; //端口序号 //端口状态

用户管理功能数据结构
#define #define #define #define #define #define #define MAX_RIGHT_NUM MAX_GROUP_NUM MAX_USER_NUM RIGHT_NAME_LENGTH USER_NAME_LENGTH USER_PSW_LENGTH MEMO_LENGTH 100 20 200 32 8 8 32

typedef struct { dwID; DWORD char name[RIGHT_NAME_LENGTH]; char memo[MEMO_LENGTH]; }OPR_RIGHT; typedef struct { DWORD dwID; DWORD dwGroupID; char name[USER_NAME_LENGTH]; char passWord[USER_PSW_LENGTH]; DWORD dwRightNum; DWORD rights[MAX_RIGHT_NUM]; char memo[MEMO_LENGTH]; }USER_INFO;

第 19 页 共 93 页

网络客户端 SDK 编程手册

typedef struct { DWORD dwID; char name[USER_NAME_LENGTH]; dwRightNum; DWORD DWORD rights[MAX_RIGHT_NUM]; char memo[MEMO_LENGTH]; }USER_GROUP_INFO;

SDK 返回的用户信息结构
typedef struct { DWORD OPR_RIGHT DWORD USER_GROUP_INFO DWORD USER_INFO }USER_MANAGE_INFO; dwRightNum; rightList[MAX_RIGHT_NUM]; dwGroupNum; groupList[MAX_GROUP_NUM]; dwUserNum; userList[MAX_USER_NUM];

日志信息
1. 日志的结构形式 //时间结构 typedef struct _DHTIME { DWORD second :6; DWORD minute :6; DWORD hour :5; DWORD day :5; DWORD month :4; DWORD year :6; }DHTIME,*pDHTIME; //日志结构 struct LOG_ITEM { DHTIME time; WORD BYTE BYTE BYTE }; type; flag; data; context[8]; //日期 接口文档 数字视频录像机网络服务编程手册 公开 //类型 //标记, 0x00 正常,0x01 扩展,0x02 数据 //数据 //内容 // // // // // // 秒 分 时 日 月 年 1-60 1-60 1-24 1-31 1-12 2000-2063

第 20 页 共 93 页

网络客户端 SDK 编程手册

2. 日志的类型 enum dh_log_t { LOG_REBOOT = 0x0000, LOG_SHUT, LOG_CONFSAVE = 0x0100, LOG_CONFLOAD, LOG_FSERROR = 0x0200, LOG_HDD_WERR, LOG_HDD_RERR, LOG_HDD_TYPE, LOG_HDD_FORMAT, LOG_ALM_IN = 0x0300, //record LOG_MANUAL_RECORD_START = LOG_MANUAL_RECORD_STOP, //user manager LOG_LOGIN = 0x0500, LOG_LOGOUT, LOG_ADD_USER, LOG_DELETE_USER, LOG_MODIFY_USER, LOG_ADD_GROUP, LOG_DELETE_GROUP, LOG_MODIFY_GROUP, //clear LOG_CLEAR = 0x0600, //record operation LOG_DOWNLOAD, LOG_PLAYBACK, LOG_TYPE_NR = 8, };

//system logs //config logs //文件系统错误 //硬盘写错误 //硬盘读错误 //设置硬盘类型 //格式化硬盘 //alarm logs 0x0400,

//录像下载 //录像回放

3. 数据组织 向客户端传递所有日志信息,长度为 N*日志结构长度,N 为日志的条数。

查询硬盘信息的返回数据结构
typedef struct{ DWORD dwDiskNum; //硬盘个数 NET_DEV_DISKSTATE stDisks[DH_MAX_DISKNUM]; //各硬盘信息 }DH_HARDDISK_STATE,*LPDH_HARDDISK_STATE;

第 21 页 共 93 页

网络客户端 SDK 编程手册

音频数据的格式结构
Typedef struct{ BYTE byFormatTag; //编码类型,0-PCM WORD nChannels; //声道数 WORD wBitsPerSample; //采样深度 DWORD nSamplesPerSec; //采样率 } DH_AUDIO_FORMAT, *LPDH_AUDIO_FORMAT;

3.1.5 系统配置信息结构 目前提供了配置控件的方式配置设备

4 接口定义
4.1 SDK 初始化
1. CLIENT_API DWORD CALL_METHOD CLIENT_GetLastError(void); 函数说明:返回函数执行失败代码,当调用下面的接口失败时,可以用该函 数获取失败的代码,具体错误代码参见错误类型代号说明 参数说明: 返回值:返回 相关函数: 典型应用:参加 demo

typedef void (CALLBACK *fDisConnect)(LONG lLoginID, char *pchDVRIP, LONG nDVRPort, DWORD dwUser);

2.

CLIENT_API BOOL DWORD dwUser);

CLIENT_Init(fDisConnect

cbDisConnect,

函数说明:初始化 SDK, 在所有的 SDK 函数之前调用 参数说明: cbDisConnect 断线回调函数,回调出当前网络已经断开的设备, 对主动断开的设备不 回调; 设置为 0 时禁止回调 dwUser 用户数据

第 22 页 共 93 页

网络客户端 SDK 编程手册

回调函数参数说明: lLoginID
CLIENT_Login 的返回值

pchDVRIP 设备 IP nDVRPort 端口 dwUser 用户数据,就是上面输入的用户数据 返回值:成功返回 TRUE,不成功返回 FALSE 相关函数:CLIENT_Cleanup 典型应用:在应用程序初始化时调用 3. CLIENT_API void CLIENT_Cleanup(); 函数说明:清空 SDK, 释放占用的资源,在所有的 SDK 函数之后调用。 参数:无 返回值:无 相关函数:CLIENT_Init 典型应用:在应用程序关闭时调用 4. CLIENT_API void CLIENT_SetConnectTime(int nWaitTime, int nTryTimes); 函数说明:设置与设备的连接等待时间 调用顺序无关,SDK 默认值为 3000ms,对外网一般需要增加到 5000ms,此值 不影响设备连接速度, 只有当网络状态不好时延长等待时间,可以提高连接成 功几率。 参数说明: nWaitTime 连接等待时间,毫秒级 nTryTimes 连接次数,暂时为无效值 返回值:无 相关函数:CLIENT_Login 典型应用:一般在应用程序初始化时调用

第 23 页 共 93 页

网络客户端 SDK 编程手册

5.

CLIENT_API DWORD CLIENT_GetSDKVersion(); 函数说明:得到 SDK 的版本号 参数:无 返回值:版本号 典型应用:一般在应用程序初始化时调用

4.2 状态侦听
typedef BOOL (CALLBACK *fMessCallBack)(LONG lCommand, LONG lLoginID, char *pBuf, DWORD dwBufLen, char *pchDVRIP, LONG nDVRPort, DWORD dwUser);

6.

CLIENT_API void CLIENT_SetDVRMessCallBack(fMessCallBack cbMessage, DWORD dwUser); 函数说明:设置设备消息回调函数, 用来得到设备当前状态信息,与调用顺序 无 关 , SDK 默 认 不 回 调 , 此 回 调 函 数 必 须 在 调 用 打 开 侦 听 CLIENT_StartListen 或 CLENT_StartListenEx 才有效,同时需要说明的是 针对目前定义的报警状态,是每秒回调设备当前的状态值; 参数说明: cbMessage 消息回调函数,可以回调设备的状态, 如报警状态可以通过此回调获取; 当设置为 0 时表示禁止回调 dwUser 用户数据 回调函数参数说明: lCommand 回调类型 lLoginID
CLIENT_Login 的返回值

pBuf 接收报警数据的缓存,根据调用的侦听接口和 lCommand 值不同,填充的 数据不同 如果调用的侦听接口为CLIENT_StartListen,则lCommand的可能值是: , -OMM_ALARM:填充数据为一个NET_CLIENT_STATE结构体。 填充数据为16个字节, 每个字节表示一个视频通道的 -SHELTER_ALARM: 遮挡报警状态,1为有报警,0为无报警 -DISK_FULL_ALARM,填充数据为1个DWORD值,1表示硬盘满,0表示硬 M 盘未满。 -DISK_ERROR_ALARM:填充数据为1个DWORD值,按位表示最多32个硬盘 的故障报警,每位为1表示有报警,为0表示无报警。 -SOUND_DETECT_ALARM:填充数据为16个字节,每个字节表示一个视频
第 24 页 共 93 页

网络客户端 SDK 编程手册

通道的音频报警状态,1为有报警,0为无报警 如果调用的侦听接口为CLENT_StartListenEx, lCommand的可能值是: 则 , -DH_ALARM_ALARM_EX:填充数据为16个字节,每个字节表示一个报警 通道的报警状态,1为有报警,0为无报警。 -DH_MOTION_ALARM_EX:填充数据为16个字节,每个字节表示一个视频 : 通道的动态检测报警状态,1为有报警,0为无报警。 -DH_VIDEOLOST_ALARM_EX:填充数据为16个字节,每个字节表示一个 : 视频通道的视频丢失报警状态,1为有报警,0为无报警。 -DH_SHELTER_ALARM_EX:填充数据为16个字节,每个字节表示一个视 频通道的遮挡(黑屏)报警状态,1为有报警,0为无报警。 -DH_SOUND_DETECT_ALARM_EX:填充数据为16个字节,每个字节表示一 : 个视频通道的音频检测报警状态,1为有报警,0为无报警。 -DH_DISKFULL_ALARM_EX:填充数据为1个字节,1为有硬盘满报警,0 : 为无报警。 -DH_DISKERROR_ALARM_EX:填充数据为32个字节,每个字节表示一个 : 硬盘的故障报警状态,1为有报警,0为无报警。 dwBufLen pBuf 的长度 pchDVRIP 设备 IP nDVRPort 端口 dwUser 回调的用户数据,就是上面输入的用户数据 返回值:TRUE 回调函数执行正确,FALSE 执行错误 相关函数:CLIENT_StartListen、CLIENT_StopListen 、 典型应用: 一般在应用程序初始化时调用设置回调,在回调函数中根据不同的 设备 ID 和命令值做出不同的处理。 7. CLIENT_API BOOL CLIENT_StartListen(LONG lLoginID); 函数说明:开始对某个设备侦听消息,用来设置是否需要对设备消息回调,得 到的消息从 CLIENT_SetDVRMessCallBack 的设置值回调出来。 参数说明: lLoginID CLIENT_Login 的返回值 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_SetDVRMessCallBack,CLIENT_StopListen , 典型应用:在设备连接后调用本函数打开侦听

第 25 页 共 93 页

网络客户端 SDK 编程手册

8.

CLIENT_API BOOL CLIENT_StartListenEx(LONG lLoginID) 函数说明:开始对某个设备侦听消息,用来设置是否需要对设备消息回调,得 到的消息从 CLIENT_SetDVRMessCallBack 的设置值回调出来。 本函数是 CLIENT_StartListen 的增强版本:支持的报警种类更多更全,且 每一种报警都细分为单独回调。 参数说明: lLoginID CLIENT_Login 的返回值 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_SetDVRMessCallBack,CLIENT_StopListen , 典型应用:在设备连接后调用本函数打开侦听 CLIENT_API BOOL CLIENT_StopListen(LONG lLoginID); 函数说明:停止对某个设备侦听消息 参数说明: lLoginID CLIENT_Login 返回值 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_StartListen , CLENT_StartListenEx 典型应用:参见 demo 程序

9.

4.3 字符叠加
typedef void (CALLBACK *fDrawCallBack)(LONG lLoginID, LONG lPlayHandle, HDC hDC, DWORD dwUser);

10.

CLIENT_API void CLIENT_RigisterDrawFun(fDrawCallBack cbDraw, DWORD dwUser); 函数说明: 用户自定义画图, 在打开图像之前调用此函数,否则无效,必须在所 有窗口未显示之前调用, 可以用来对画面进行字符叠加。 参数说明: cbDraw 画图回调,当设置为 0 时表示禁止回调 dwUser 用户数据 回调函数说明: LoginID

第 26 页 共 93 页

网络客户端 SDK 编程手册

CLIENT_Login 的返回值,标识设备。

lPlayHandle
CLIENT_RealPlay 的返回值,标识通道。

hDC 是对整个显示画面区域的画板指针,根据用户的需要可以对任何位置叠加 显示。 dwUser 用户数据,就是上面输入的用户数据。 返回值:无 相关函数: 无 典型应用: 本接口最好在应用程序初始化时就调用,具体的处理在回调函数中 根据当前画面 ID(可以是监视,多画面预览,回放)叠加不同的信息;

4.4 设备注册
11. CLIENT_API LONG CLIENT_Login(char *pchDVRIP, WORD wDVRPort, char *pchUserName, char *pchPassword, LPNET_DEVICEINFO lpDeviceInfo, int *error = 0); 函数说明:注册用户到设备,当设备端把用户设置为复用(设备默认的用户 不能设置为复用) ,该帐号可以多次向设备注册 参数说明: pchDVRIP 设备 IP wDVRPort 设备端口 pchUserName 用户名 pchPassword 用户密码 lpDeviceInfo 设备信息,属于输出参数 error (当函数返回成功时,该参数的值无意义),返回登录错误码: 1.密码不正确 2.帐号不存在 3.等待登录返回超时
第 27 页 共 93 页

网络客户端 SDK 编程手册

4.帐号已登录 5.帐号已被锁定 6.帐号又被列为黑名单 7.资源不足,系统忙 9.找不到网络主机 0.其他网络错误 返回值:失败返回 0,成功返回设备 ID,登录成功之后对设备的操作都可以 通过此值(设备句柄)对应到相应的设备 相关函数:CLIENT_Logout 典型应用:在初始化后就可以调用本接口注册到指定的设备,成功后将返回 设备句柄,给相关的函数调用 12. CLIENT_API LONG CLIENT_LoginEx(char *pchDVRIP, WORD wDVRPort, char *pchUserName, char *pchPassword, int nSpecCap, void* pCapParam, LPNET_DEVICEINFO lpDeviceInfo, int *error = 0) 函数说明:注册用户到设备的扩展接口,支持一个用户指定设备支持的能力 参数说明:增加扩展参数 nSpecCap 设备支持的能力, 值为 1 表示同一用户名可以多次登录, 其他暂时不 支持 pCapParam 对 nSpecCap 的补充参数, 目前为 0 返回值: 失败返回 0,成功返回设备 ID,登录成功之后对设备的操作都可以 通过此值(设备句柄)对应到相应的设备 相关函数: CLIENT_Logout 典型应用:一个用户同时多次登录同一台设备 13. CLIENT_API BOOL CLIENT_Logout(LONG lLoginID); 函数说明:注销设备用户 参数说明: lLoginID CLIENT_Login 的返回值 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_Login 典型应用:当需要设备主动断开时调用;

第 28 页 共 93 页

网络客户端 SDK 编程手册

4.5 实时监视
14. CLIENT_API LONG CLIENT_RealPlay(LONG nChannelID, HWND hWnd); 函数说明:启动实时监视 参数说明: lLoginID CLIENT_Login 的返回值 nChannelID 实时监视通道号(通道号从 0 开始) hWnd 窗口句柄,值为 0 对数据不解码、不显示图像 返回值:失败返回 0,成功返回实时监视 ID(实时监视句柄),将作为相关函 数的参数 相 关 函 数 : CLIENT_StopRealPlay 、 CLIENT_SaveRealData 、
CLIENT_StopSaveRealData 、 CLIENT_ClientSetVideoEffect 、 CLIENT_ClientGetVideoEffect、 CLIENT_OpenSound、 CLIENT_CloseSound、 、 、 、 CLIENT_SetVolume CLIENT_SetRealDataCallBack 、 、 CLIENT_SetRealDataCallBackEx CLIENT_CapturePicture 、 、 CLIENT_StartTalk、CLIENT_StopTalk 、

lLoginID,

int

典型应用: 根据登录时获取到的设备信息,调用本接口,就可以打开任何有效的 一路实时监视,显示到指定的 hWnd 窗口,正常返回的监视 ID,用于以下对本监 视通道的控制和操作;

15. CLIENT_API BOOL CLIENT_StopRealPlay(LONG lRealHandle); 函数说明:停止实时监视 参数说明: lRealHandle
CLIENT_RealPlay 的返回值

返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_RealPlay 典型应用:关闭失实监视

第 29 页 共 93 页

网络客户端 SDK 编程手册

16.

CLIENT_API LONG CALL_METHOD CLIENT_RealPlayEx(LONG lLoginID, int nChannelID, HWND hWnd, RealPlayType rType) 函数说明:启动实时监视或多画面预览,当打开多画面预览时不能打开语音 对讲 参数说明: lLoginID CLIENT_Login 的返回值 nChannelID 实时监视通道号,如果 rType 为 RType_Multiplay 该参数保留。 hWnd 窗口句柄,值为 0 对数据不解码、不显示图像 rType 数据类型
RType_Realplay = 0, RType_Multiplay=1,

//实时预览 //多画面预览

返回值:失败返回 0,成功返回实时监视 ID(实时监视句柄),将作为相关函 数的参数 相 关 函 数 : CLIENT_StopRealPlayEx 、 CLIENT_SaveRealData 、
CLIENT_StopSaveRealData CLIENT_ClientSetVideoEffect 、 、 CLIENT_ClientGetVideoEffect、 CLIENT_OpenSound、 CLIENT_CloseSound、 、 、 、 CLIENT_SetVolume CLIENT_SetRealDataCallBack 、 、 CLIENT_SetRealDataCallBackEx CLIENT_CapturePicture 、 、 CLIENT_StartTalk、CLIENT_StopTalk 、

典型应用:参见 demo 程序 17. CLIENT_API BOOL CALL_METHOD CLIENT_StopRealPlayEx(LONG lRealHandle); 函数说明:停止实时监视或多画面预览 参数说明: lRealHandle CLIENT_RealPlayEx 的返回值 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_RealPlayEx 典型应用:关闭实时监视或者多画面预览

第 30 页 共 93 页

网络客户端 SDK 编程手册

18.

CLIENT_API BOOL CLIENT_ClientGetVideoEffect(LONG lPlayHandle, unsigned char *nBrightness, unsigned char *nContrast, unsigned char *nHue, unsigned char *nSaturation); 函数说明:获取解码库视频参数,只有打开图像的函数参数 hWnd 有效时该 函数获取的参数才有效,否则无意义 参数说明: lPlayHandle CLIENT_RealPlay 的返回值 nBrightness 返回亮度指针(0-255) nContrast 返回对比度指针(0-255) nHue 返回色度指针(0-255) nSaturation 返回饱和度指针(0-255) 返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_ClientSetVideoEffect 、 CLIENT_RealPlay 、
CLIENT_RealPlayEx CLIENT_PlayBackByRecordFile 、 CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTime 、 CLIENT_PlayBackByTimeEx 、 、

典型应用: 在打开监视通道后获取该监视的视频参数,初始化界面显示当前的 视频状态,同时为以下视频参数调节做参考; 19. CLIENT_API BOOL CLIENT_ClientSetVideoEffect(LONG lPlayHandle, unsigned char nBrightness, unsigned char nContrast, unsigned char nHue, unsigned char nSaturation); 函数说明:设置解码库视频参数,只有打开图像的函数参数 hWnd 有效时该 函数获取的参数才有效,否则无意义 参数说明: lRealHandle CLIENT_RealPlay 的返回值 nBrightness 亮度(0-255) nContrast 对比度(0-255)
第 31 页 共 93 页

网络客户端 SDK 编程手册

nHue 色度(0-255) nSaturation 饱和度(0-255) 返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_ClientGetVideoEffect , CLIENT_RealPlay 、
CLIENT_RealPlayEx 、 CLIENT_PlayBackByRecordFile CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTime 、 CLIENT_PlayBackByTimeEx 、 、

典型应用:根据需要可以调节视频参数;设置参数是 4 种参数一起设,所以如 果更改单个也要求其他参数值正常;所以在应用中最好定义视频参数变量以 供随时更改设置;

4.6 音频控制
20. CLIENT_API BOOL CLIENT_OpenSound(LONG hPlayHandle) 函数说明:打开音频, 目前只支持独占方式打开音频,如果正在调用此函数 之前音频已经打开并且 hPlayHandle 是不一样,则关闭原来的音频打开新的 音频;函数只有在打开 hPlayHandle 的函数的参数 hWnd 有效时才生效。 参数说明: hPlayHandle CLIENT_RealPlay 的返回值 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_CloseSound、CLIENT_RealPlay、CLIENT_RealPlayEx、 、 、 、
CLIENT_PlayBackByRecordFile 、 CLIENT_PlayBackByRecordFileEx 、 CLIENT_PlayBackByTime、CLIENT_PlayBackByTimeEx 、

典型应用:对音频,目前只支持独占方式,所以在应用程序中需要定义当前 有效的音频通道。 21. CLIENT_API BOOL CLIENT_CloseSound(); 函数说明:关闭音频 参数说明:无 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_OpenSound 典型应用:关闭当前的音频;

第 32 页 共 93 页

网络客户端 SDK 编程手册

22.

CLIENT_API BOOL CLIENT_SetVolume(LONG lPlayHandle, int nVolume); 函数说明:设置音量 参数说明: lPlayHandle
CLIENT_RealPlay 的返回值 nVolume 音量值, 范围 0 ~ 100 0 音量最小 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_OpenSound、CLIENT_CloseSound、CLIENT_RealPlay、 、 、 、 CLIENT_RealPlayEx CLIENT_PlayBackByRecordFile 、 CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTime 、 CLIENT_PlayBackByTimeEx 、 、

典型应用:修改实时监视或回放的音量值

4.7 数据保存
23. CLIENT_API BOOL CLIENT_SaveRealData(LONG const char *pchFileName); lRealHandle,

函数说明: 开始保存实时监视数据,对前端设备监视的图像进行数据保存,形成 录像文件,此数据是设备端传送过来的原始视频数据 参数说明: lRealHandle CLIENT_RealPlay 的返回值 pchFileName 实时监视保存文件名 返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_StopSaveRealData 、 CLIENT_RealPlay 、
CLIENT_RealPlayEx

典型应用:在监视图像的打开之后随时都可以调用将监视数据保存到文件, 也可以关闭之后再打开形成不同的文件; 24. CLIENT_API lRealHandle); BOOL CLIENT_StopSaveRealData(LONG

函数说明:停止保存实时监视数据,关闭保存的文件 参数说明: lRealHandle CLIENT_RealPlay 的返回值 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_SaveRealData、CLIENT_RealPlay、CLIENT_RealPlayEx 、 、
第 33 页 共 93 页

网络客户端 SDK 编程手册

典型应用:停止保存监视数据;
typedef void(CALLBACK *fRealDataCallBack) (LONG lRealHandle, dwDataType, BYTE *pBuffer, DWORD dwBufSize, DWORD dwUser); DWORD

25. CLIENT_API BOOL CLIENT_SetRealDataCallBack(LONG lRealHandle, fRealDataCallBack cbRealData, DWORD dwUser); 函数说明:设置实时监视数据回调,给用户提供设备流出的数据,当 cbRealData 为 NULL 时结束回调数据 参数说明: lRealHandle
CLIENT_RealPlay 的返回值

cbRealData 回调函数,用于传出设备流出的实时数据 dwUser 用户数据 回调函数参数说明: lRealHandle
CLIENT_RealPlay 的返回值

dwDataType 标识回调出来的数据类型, 一旦设置回调,是以下 4 种数据都会同时回 调出来,用户可以根据需要有选择的处理部分数据; 原始数据(与 SaveRealData 保存的数据一致) 0 1 标准视频数据 2 yuv 数据 3 pcm 音频数据 pBuffer 回调数据,根据数据类型的不同每次回调不同的长度的数据,除类型 0, 其他数据类型都是按帧,每次回调一帧数据 dwBufSize 回调数据的长度 dwUser 用户数据,就是上面输入的用户数据 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_RealPlay、CLIENT_RealPlayEx、CLIENT_StopRealPlay 、 、 典型应用: 通过调用本接口可以比较自如的获取实时监视数据,用来保存成文 件,也可以用来数据分发多路窗口显示及实现其他功能;

第 34 页 共 93 页

网络客户端 SDK 编程手册

typedef void(CALLBACK *fRealDataCallBackEx)(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, LONG param, DWORD dwUser);

26.

CLIENT_API BOOL CLIENT_SetRealDataCallBackEx(LONG lRealHandle, fRealDataCallBackEx cbRealData, DWORD dwUser, DWORD dwFlag); 函数说明: 设置实时监视数据回调扩展接口 ,是对上一接口的补充, 增加一个 回调数据类型标志 dwFlag 参数, 可以选择性的回调出需要的数据, 对于没 设置回调的数据类型就不回调出来了, 当设置为 0x1f 时与上一接口效果一样, 不过对回调函数也做了扩展。 参数说明: lRealHandle CLIENT_RealPlay 的返回值 cbRealData 回调函数,用于传出多种类型的实时数据 dwUser 用户数据 dwFlag 是按位来的, 可以组合, 为 0x1f 时五种数据类型都回调 0x00000001 等同原来的原始数据 0x00000002 是 MPEG4/H264 标准数据 0x00000004 YUV 数据 0x00000008 PCM 数据 0x00000010 原始音频数据 回调函数参数说明: lRealHandle 实时监视 ID dwDataType 标识回调出来的数据类型, 只有 dwFlag 设置标识的数据才会回调出来: 0 原始数据(与 SaveRealData 保存的数据一致) 1 标准视频数据 2 yuv 数据 3 pcm 音频数据 4 原始音频数据 pBuffer 回调数据,根据数据类型的不同每次回调不同的长度的数据,除类型 0, 其 他数据类型都是按帧,每次回调一帧数据 param

第 35 页 共 93 页

网络客户端 SDK 编程手册

回调数据参数结构体, 根据不同的类型, 参数结构也不一致, 当类型为 0 (原始数据)和 2/4(音频数据时) 为 0; 当回调的数据类型为标准视频数据时 param 为一个结构体指针:
Typedef struct tagVideoFrameParam { BYTE BYTE BYTE BYTE encode; frametype; format; size; // // // // 编码类型 I = 0, P PAL - 0, CIF - 0, VGA - 4, = 1, B = 2... NTSC - 1 HD1 - 1, 2CIF - 2, D1 - 3, QCIF - 5, QVGA - 6

DWORD fourcc; DWORD reserved; };

// 如果是 H264 编码则总为 0,MPEG4 这里是填写 FOURCC('X','V','I','D'); // 保留

当数据类型是 PCM 数据的时候 param 也是一个结构体指针:
Typedef struct tagPCMDataParam { BYTE channels; BYTE samples; BYTE depth; BYTE param1; DWORD reserved; }; // 声道数 // 采样 0 - 8000, 1 - 11025, 2 - 16000, 3 - 22050, 4 - 32000, 5 - 44100, 6 - 48000 // 采样深度 取值 8 或者 16 等。直接表示 // 0 - 指示无符号,1-指示有符号 // 保留

dwBufSize 回调数据的长度, 根据不同的类型, 长度也不同 dwUser 用户数据,就是上面输入的用户数据 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_RealPlay、CLIENT_RealPlayEx、CLIENT_StopRealPlay 、 、 典型应用:同 CLIENT_SetRealDataCallBack 函数

4.8 视频抓图
27. CLIENT_API BOOL CLIENT_CapturePicture(LONG hPlayHandle, const char *pchPicFileName); 函数说明:保存图片,对显示图像进行瞬间抓图,只有打开图像的函数参数 hWnd 有效时该函数获取的参数才有效,否则无意义 参数说明: hPlayHandle CLIENT_RealPlay 的返回值 pchPicFileName
第 36 页 共 93 页

网络客户端 SDK 编程手册

位图文件名,当前只支持 BMP 位图 返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_RealPlay 、

CLIENT_RealPlayEx 、 CLIENT_PlayBackByRecordFile 、 CLIENT_PlayBackByRecordFileEx 、 CLIENT_PlayBackByTime、CLIENT_PlayBackByTimeEx 、

典型应用:对当前的显示画面进行瞬间抓图,无顺序要求

4.9 回放和下载
28. CLIENT_API BOOL CLIENT_QueryRecordFile(LONG lLoginID, int nChannelId, int nRecordFileType, LPNET_TIME tmStart, LPNET_TIME tmEnd, char* pchCardid, LPNET_RECORDFILE_INFO nriFileinfo, int maxlen, int *filecount, int waittime=1200, bool bTime=false); 函数说明:查询录像文件 参数说明: lLoginID CLIENT_Login 的返回值 nChannelId 通道 ID,从 0 开始 nRecordFileType 录像文件类型 0 所有录像文件 外部报警 1 2 动态检测报警 所有报警 3 4 卡号查询 5 组合条件查询 tmStart 录像开始时间 tmEnd 录像结束时间 pchCardid 卡号,只针对卡号查询有效 nriFileinfo 返回的录像文件信息,是一个 NET_RECORDFILE_INFO 结构数组 maxlen nriFileinfo 缓冲的最大长度; filecount 返回的文件个数,属于输出参数最大只能查到缓冲满为止的录像记录;

第 37 页 共 93 页

网络客户端 SDK 编程手册

waittime 等待时间 bTime 是否按时间查(目前无效) 返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_Login 、 CLIENT_PlayBackByRecordFile 、
CLIENT_PlayBackByRecordFileEx 、 CLIENT_PausePlayBack CLIENT_SeekPlayBack CLIENT_StopPlayBack 、 CLIENT_GetPlayBackOsdTime CLIENT_StepPlayBack 、 CLIENT_GetFramePlayBack CLIENT_SetFramePlayBack 、 CLIENT_SlowPlayBack、CLIENT_FastPlayBack 、 、 、 、 、

典型应用: 在回放之前需要先调用本接口查询录像记录,当根据输入的时间段 查询到的录像记录信息大于定义的缓冲区大小,则只返回缓冲所能存放的录 像记录,可以根据需要继续查询
typedef void(CALLBACK *fDownLoadPosCallBack) (LONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize, DWORD dwUser);

29.

CLIENT_API LONG CLIENT_PlayBackByRecordFile(LONG lLoginID, LPNET_RECORDFILE_INFO lpRecordFile, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, DWORD dwUserData); 函数说明:网络回放,需要说明的是,用户登录一台设备后,每通道同一时间 只能播放一则录像,不能同时播放同一通道的多条记录。 参数说明: lLoginID CLIENT_Login 的返回值 lpRecordFile 录像文件信息, 当按时间播放是只需填充起始时间和结束时间, 其他 项填 0; hWnd 回放窗口 cbDownLoadPos 进度回调函数 dwUserData 用户自定义数据 回调函数说明: lPlayHandle
CLIENT_PlayBackByRecordFile 的返回值

dwTotalSize

第 38 页 共 93 页

网络客户端 SDK 编程手册

指本次播放总大小,单位为 KB dwDownLoadSize 指已经播放的大小,单位为 KB,当其值为-1 时表示本次回防结束 dwUser 用户数据,就是上面输入的用户数据 返回值:成功返回网络回放 ID,失败返回 0 相关函数: CLIENT_Login、 CLIENT_PausePlayBack, CLIENT_SeekPlayBack, 、 , ,
CLIENT_StopPlayBack 、 CLIENT_GetPlayBackOsdTime 、 CLIENT_StepPlayBack CLIENT_GetFramePlayBack 、 、 CLIENT_SetFramePlayBack、 CLIENT_SlowPlayBack、 CLIENT_FastPlayBack 、 、

典型应用:根据上面查询的记录,输入指定的显示窗口 hWnd,调用本接口就可 以播放了, 记录返回的播放 ID,以下对本播放的控制都是要用此 ID 值,另外应 用程序可以在此回调函数中处理和更新显示进度.

以下 29、30、31 为一组录像查询接口,和上面的录像查询接口独立
30. CLIENT_API LONG CALL_METHOD CLIENT_FindFile(LONG lLoginID,int nChannelId,int nRecordFileType, char* cardid, LPNET_TIME time_start,LPNET_TIME time_end,bool bTime, int waittime); 函数说明:打开录像查询句柄 参数说明: lLoginID CLIENT_Login 的返回值 nChannelId 通道号,从 0 开始 nRecordFileType 录像文件类型 0 所有录像文件 1 外部报警 2 动态检测报警 3 所有报警 4 卡号查询 5 组合条件查询 Cardid 卡号,只针对卡号查询有效 Time_start 查询录像开始时间

第 39 页 共 93 页

网络客户端 SDK 编程手册

Time_end 查询录像结束时间 bTime 是否按时间查询(目前无效) waittime 查询超时时间 返回值:成功返回查询句柄,失败返回 0 相关函数:CLIENT_Login, CLIENT_FindNextFile, CLIENT_FindClose , 典型应用:可以在回放之前先调用本接口查询录像记录,再调用 CLIENT_FindNextFile 函数挨条返回录象记录用于播放,查询完毕可以调用 CLIENT_FindClose 关闭查询句柄。 31. CLIENT_FindNextFile(LONG CLIENT_API int CALL_METHOD lFindHandle,LPNET_RECORDFILE_INFO lpFindData); 函数说明:查询下一条录像文件记录 参数说明: lFindHandle CLIENT_FindFile 的返回值 lpFindData 录象文件记录缓冲,用于输出查询到的录象文件记录 返回值:1:成功取回一条录象记录,0:录象记录已取完,-1:参数出错 相关函数:CLIENT_FindFile 典型应用:调用本接口之前应先调用 CLIENT_FindFile 以打开查询句柄。 32. CLIENT_API BOOL lFindHandle); CALL_METHOD CLIENT_FindClose(LONG

函数说明:关闭录象查询句柄 参数说明: lFindHandle CLIENT_FindFile 的返回值 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_FindFile 典型应用:调用 CLIENT_FindFile 打开查询句柄,查询完毕后应调用本函数 以关闭查询句柄。

第 40 页 共 93 页

网络客户端 SDK 编程手册

33.

CLIENT_API LONG CALL_METHOD CLIENT_PlayBackByRecordFileEx(LONG lLoginID, LPNET_RECORDFILE_INFO lpRecordFile, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, DWORD dwPosUser, fDataCallBack fDownLoadDataCallBack, DWORD dwDataUser); 函数说明: 带数据回调的按录象文件回放扩展接口,每通道同一时间只能播放 一则录像,不能同时播放同一通道的多条记录。窗口参数(hWnd)有效时不 回调数据,如果需要数据回调则窗口参数.(hWnd)必须传 0。 参数说明: lLoginID CLIENT_Login 的返回值 lpRecordFile 录像文件信息 hWnd 回放窗口 cbDownLoadPos 进度回调函数 dwPosUser 进度回调用户参数 进度回调函数参数说明:参见 CLIENT_PlayBackByRecordFile dwDataUser 数据回调用户 数据回调函数参数说明: lRealHandle
CLIENT_PlayBackByRecordFileEx 的返回值

dwDataType 这里为 0(原始数据) pBuffer 数据缓冲 dwBufSize 缓冲长度 fDownLoadDataCallBack 数据回调函数,原形参见典型应用 dwUser 用户数据,就是上面输入的用户数据 dwDataUser 【注意】 本回调函数的返回值会影响 SDK 的内部操作: 返回 1 代表回调成功,没什么特殊情况都应该返回这个值

第 41 页 共 93 页

网络客户端 SDK 编程手册

代表回调函数堵塞,这个会导致同一数据重复发送,即回放画 面会出现重复 返回-1 代表系统出错,将直接结束回放线程,慎用! 返回值:成功返回网络回放 ID,失败返回 0 相关函数: CLIENT_Login、 CLIENT_PausePlayBack, CLIENT_SeekPlayBack、 、 , 、
CLIENT_StopPlayBack CLIENT_GetPlayBackOsdTime 、 、 CLIENT_StepPlayBack CLIENT_GetFramePlayBack 、 、 CLIENT_SetFramePlayBack、 CLIENT_SlowPlayBack、 CLIENT_FastPlayBack 、 、

返回 0

典 型 应 用 : 如 果 窗 口 参 数 hWnd 不 为 零 , 则 数 据 回 调 参 数 (fDownLoadDataCallBack,dwDataUser)无效,如果窗口参数 hWnd , 为零,则回调原形为:
typedef int(CALLBACK *fDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, DWORD dwUser);

34.

CLIENT_API LONG CALL_METHOD CLIENT_PlayBackByTime(LONG lLoginID, int nChannelID, LPNET_TIME lpStartTime, LPNET_TIME lpStopTime, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, DWORD dwUserData); 函数说明: 网络回放,需要说明的是对同一设备的同一通道当前只能同时播放 一个时间段录像 参数说明: lLoginID CLIENT_Login 的返回值 nChannelID 图像通道号,从 0 开始,必须指定 lpStartTime 开始时间 lpStopTime 结束时间 hWnd 回放窗口 cbDownLoadPos 进度回调函数 dwUserData 用户自定义数据 进度回调函数参数说明:参见 CLIENT_PlayBackByRecordFile 返回值:成功返回网络回放 ID,失败返回 0 相关函数: CLIENT_Login、 CLIENT_PausePlayBack, CLIENT_SeekPlayBack、 、 , 、
CLIENT_StopPlayBack CLIENT_StepPlayBack 、 、 CLIENT_GetPlayBackOsdTime CLIENT_GetFramePlayBack 、 、

第 42 页 共 93 页

网络客户端 SDK 编程手册

CLIENT_SetFramePlayBack、 、 CLIENT_SlowPlayBack、 CLIENT_FastPlayBack 、

典型应用:参见 demo 35. CLIENT_API LONG CALL_METHOD CLIENT_PlayBackByTimeEx(LONG lLoginID, int nChannelID, LPNET_TIME lpStartTime, LPNET_TIME lpStopTime, HWND hWnd, fDownLoadPosCallBack cbDownLoadPos, DWORD dwPosUser, fDataCallBack fDownLoadDataCallBack, DWORD dwDataUser); 函数说明:带数据回调的按时间回放扩展接口, 每通道同一时间只能播放一 则录像,不能同时播放同一通道的多条记录。窗口参数(hWnd)有效时不回 调数据,如果需要数据回调则窗口参数.(hWnd)必须传 0。 参数说明: lLoginID CLIENT_Login 的返回值 nChannelID 图像通道号,必须指定 lpStartTime 开始时间 lpStopTime 结束时间 hWnd 回放窗口 cbDownLoadPos 进度回调函数 dwPosUser 进度回调用户参数 进度回调函数参数说明:参见 CLIENT_PlayBackByRecordFile fDownLoadDataCallBack 数据回调函数 dwDataUser 数据回调用户 数据回调函数参数说明参见: CLIENT_PlayBackByRecordFileEx 的数据回调 函数参数说明。 【注意】 本回调函数的返回值会影响 SDK 的内部操作: 返回 1 代表回调成功,没什么特殊情况都应该返回这个值。 返回 0 代表回调函数堵塞, 这个会导致同一数据重复发送, 即回放画 面会出现重复; 返回-1 代表系统出错,将直接结束回放线程,慎用! 返回值:成功返回网络回放 ID,失败返回 0 相关函数: CLIENT_Login、 CLIENT_PausePlayBack, CLIENT_SeekPlayBack, 、 , ,

第 43 页 共 93 页

网络客户端 SDK 编程手册

CLIENT_StopPlayBack CLIENT_GetPlayBackOsdTime 、 、 CLIENT_StepPlayBack CLIENT_GetFramePlayBack 、 、 CLIENT_SetFramePlayBack、 CLIENT_SlowPlayBack、 CLIENT_FastPlayBack 、 、

典 型 应 用 : 如 果 窗 口 参 数 hWnd 不 为 零 , 则 数 据 回 调 参 数 (fDownLoadDataCallBack,dwDataUser) 无效, 如果窗口参数 hWnd 为零, , 则回调原形为:
typedef int(CALLBACK *fDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, DWORD dwUser);

参见demo 36. CLIENT_API BOOL CLIENT_StopPlayBack(LONG lPlayHandle); 函数说明:网络回放停止 参数说明: lPlayHandle
CLIENT_PlayBackByRecordFile 的返回值

返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_PlayBackByRecordFile
CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTimeEx 、 CLIENT_PlayBackByTime

、 、

典型应用:输入上一接口返回的播放 ID,调用本接口就可以停止控制 37. CLIENT_API BOOL CLIENT_GetPlayBackOsdTime(LONG lPlayHandle, LPNET_TIME lpOsdTime, LPNET_TIME lpStartTime, LPNET_TIME lpEndTime); 函数说明:得到当前网络回放的 OSD 时间,只有打开图像的函数参数 hWnd 有效时该函数获取的参数才有效,否则无意义 参数说明: lPlayHandle CLIENT_PlayBackByRecordFile 的返回值 lpOsdTime OSD 的时间 lpStartTime 开始时间 lpEndTime 结束时间 返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_PlayBackByRecordFile 、
CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTimeEx 、 CLIENT_PlayBackByTime 、

第 44 页 共 93 页

网络客户端 SDK 编程手册

参见 demo

38.

CLIENT_API LONG CLIENT_DownloadByRecordFile(LONG lLoginID, LPNET_RECORDFILE_INFO lpRecordFile, char *sSavedFileName, fDownLoadPosCallBack cbDownLoadPos, DWORD dwUserData); 函数说明:下载录像文件, 通过查询到的文件信息下载 参数说明: lLoginID CLIENT_Login 的返回值 lpRecordFile 录像文件信息指针, 当需要按时间段下载时直接填充开始时间和结 束时间, 其他项填 0 sSavedFileName 要保存的录像文件名,全路径 cbDownLoadPos 下载进度回调函数 dwUserData 下载进度回调用户自定义数据 下载进度回调函数参数说明:参见 CLIENT_PlayBackByRecordFile 返回值:成功返回下载 ID,失败返回 0 相 关 函 数 : CLIENT_QueryRecordFile 、 CLIENT_StopDownload ,
CLIENT_GetDownloadPos

典型应用: 根据上面查询的记录,就可以将录像保存到指定的文件,下载进度回 调与回放进度类似 39. CLIENT_API LONG CALL_METHOD CLIENT_DownloadByTime(LONG lLoginID, int nChannelId, int nRecordFileType, LPNET_TIME tmStart, LPNET_TIME tmEnd, char *sSavedFileName, fTimeDownLoadPosCallBack cbTimeDownLoadPos, DWORD dwUserData); 函数说明:直接输入指定通道起始时间和结束时间下载放录像 参数说明: lLoginID CLIENT_Login 的返回值 nChannelId 图像通道号,从 0 开始 nRecordFileType
第 45 页 共 93 页

网络客户端 SDK 编程手册

保留 tmStart 开始时间 tmEnd 结束时间 sSavedFileName 要保存的录像文件名,全路径 cbTimeDownLoadPos 下载进度回调函数 dwUserData 下载进度回调用户自定义数据 下载进度回调函数参数说明参见 CLIENT_PlayBackByRecordFile 返回值:成功返回下载 ID,失败返回 0 相关函数:CLIENT_StopDownload,CLIENT_GetDownloadPos , 典型应用:参见 demo 40. CLIENT_API BOOL CLIENT_StopDownload(LONG lFileHandle); 函数说明:停止下载录像文件 参数说明: lFileHandle
CLIENT_DownloadByRecordFile 的返回值

返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_DownloadByRecordFile 、 CLIENT_GetDownloadPos 、
CLIENT_DownloadByTime

典型应用: 根据需要可以等文件下载完了关闭下载,也可以下载到一部分停止 下载; 41. CLIENT_API BOOL CLIENT_GetDownloadPos(LONG lFileHandle, int *nTotalSize, int *nDownLoadSize); 函数说明: 获得下载录像的当前位置,可以用于不需要实时显示下载进度的接 口,与下载回调函数的功能类似 参数说明: lFileHandle CLIENT_DownloadByRecordFile 的返回值 nTotalSize 下载的总长度 nDownLoadSize 已下载的长度

第 46 页 共 93 页

网络客户端 SDK 编程手册

返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_DownloadByRecordFile 、 CLIENT_StopDownload 、
CLIENT_DownloadByTime

典型应用:用于不打算通过回调计算进度,可定时调用本接口获取当前进度;

4.10 回放控制
42. CLIENT_API BOOL CLIENT_PausePlayBack(LONG lPlayHandle, BOOL bPause); 函数说明:网络回放暂停与恢复播放,只有打开图像的函数参数 hWnd 有效 时该函数获取的参数才有效,否则无意义 参数说明: lPlayHandle CLIENT_PlayBackByRecordFile 的返回值 bPause 网络回放暂停与恢复播放参数 暂停 1 恢复 0 返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_PlayBackByRecordFile

、 CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTime 、 、 CLIENT_PlayBackByTimeEx、 、 CLIENT_SeekPlayBack、 CLIENT_StopPlayBack 、

典型应用:对已经打开的播放进行暂停和恢复控制 43. CLIENT_API BOOL CLIENT_SeekPlayBack(LONG lPlayHandle, unsigned int offsettime, unsigned int offsetbyte); 函数说明:改变位置播放,即拖动播放,只有打开图像的函数参数 hWnd 有效 时该函数获取的参数才有效,否则无意义 参数说明: lPlayHandle CLIENT_PlayBackByRecordFile 的返回值 offsettime 相对文件开始处偏移时间, 单位为秒 .当其值为 0xffffffff 时,该参数无 效. offsetbyte 相对文件开始处偏移字节, 当其值为 0xffffffff 时, 该参数无效;当 offsettime 有效的时候,此参数无意义. 返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_PlayBackByRecordFile
CLIENT_PlayBackByRecordFileEx 、 CLIENT_PlayBackByTime 、 、

第 47 页 共 93 页

网络客户端 SDK 编程手册

CLIENT_PlayBackByTimeEx, , CLIENT_SeekPlayBack, CLIENT_StopPlayBack ,

典型应用:对已经打开的播放进行定位播放控制,一般用于拖动进度条控制

44.

CLIENT_API BOOL bool bStop);

CLIENT_StepPlayBack(LONG

lPlayHandle,

函数说明:单步播放, 调用一次播放一帧图像,只有打开图像的函数参数 hWnd 有效时该函数获取的参数才有效,否则无意义 参数说明: lPlayHandle CLIENT_PlayBackByRecordFile 的返回值 bStop 是否停止单步播放, 在结束单步时调用 返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_PlayBackByRecordFile 、
CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTimeEx 、 CLIENT_PlayBackByTime 、

典型应用:用于对关键数据的单帧播放, 并且 bStop 要设置为 TRUE,切换到 其他播放之前要再调用本接口关闭单步播放才能正常执行其他的播放模式 45. CLIENT_API BOOL CLIENT_FastPlayBack(LONG lPlayHandle); 函数说明:快放,将当前帧率提高一倍,但是不能无限制的快放,目前最大 120, 大于时返回 FALSE, 有音频的话不可以快放,慢放没有问题,只有打开图像 的函数参数 hWnd 有效时该函数获取的参数才有效,否则无意义 参数说明: lPlayHandle CLIENT_PlayBackByRecordFile 的返回值 返回值:成功返回 TRUE,失败返回 FALSE 相 关 函 数 : CLIENT_SlowPlayBack , CLIENT_PlayBackByRecordFile 、
CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTimeEx 、 CLIENT_PlayBackByTime 、

典型应用:要求快镜头播放的情况 46. CLIENT_API BOOL CLIENT_SlowPlayBack(LONG lPlayHandle); 函数说明: 慢放,将当前帧率降低一倍,最慢为每秒一帧,小于 1 则返回 FALSE, 只有打开图像的函数参数 hWnd 有效时该函数获取的参数才有效,否则无意 义 参数说明: lPlayHandle CLIENT_PlayBackByRecordFile 的返回值 返回值:成功返回 TRUE,失败返回 FALSE

第 48 页 共 93 页

网络客户端 SDK 编程手册

相 关 函 数 : CLIENT_FastPlayBack , CLIENT_PlayBackByRecordFile 、
CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTimeEx 、 CLIENT_PlayBackByTime 、

47.

典型应用:要求慢动作播放的情况 CLIENT_API BOOL CLIENT_SetFramePlayBack(LONG lPlayHandle, int framerate); 函数说明:设置回放帧率, 目前定义的范围是(1~120),超过这个范围返回 FALSE,只有打开图像的函数参数 hWnd 有效时该函数获取的参数才有效, 否则无意义 参数说明: lPlayHandle CLIENT_PlayBackByRecordFile 的返回值 framerate 帧率 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_GetFramePlayBack、CLIENT_PlayBackByRecordFile、 、 、
CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTimeEx 、 CLIENT_PlayBackByTime 、

典型应用:自设定帧率播放, 48. CLIENT_API BOOL CLIENT_GetFramePlayBack(LONG lPlayHandle, int *fileframerate, int *playframerate); 函数说明:得到当前回放帧率,只有打开图像的函数参数 hWnd 有效时该函 数获取的参数才有效,否则无意义 参数说明: lPlayHandle CLIENT_PlayBackByRecordFile 的返回值 playframerate 返回的帧率 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_SetFramePlayBack、CLIENT_PlayBackByRecordFile、 、 、
CLIENT_PlayBackByRecordFileEx CLIENT_PlayBackByTimeEx 、 CLIENT_PlayBackByTime 、

典型应用: 与上一接口对应,获取当前的播放帧率, 对单帧播放是无效,或获取 的为之前的播放帧率;

第 49 页 共 93 页

网络客户端 SDK 编程手册

4.11 云台控制
49. CLIENT_API BOOL CLIENT_PTZControl(LONG lLoginID, int nChannelID, DWORD dwPTZCommand, DWORD dwStep, BOOL dwStop); 函数说明:云台控制 参数说明: lLoginID
CLIENT_Login 的返回值

nChannelID 通道号 dwPTZCommand 支持以下云台控制命令
typedef enum 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 }; //上 //下 //左 //右 //变倍+ //变倍//调焦+ //调焦//光圈+ //光圈//转至预置点 //设置 //删除 //点间轮循 //灯光雨刷

dwStep 步进/速度,范围 1~8, 8 控制效果最明显,操作预置点时 dwStep 为预置点值 dwStop 是否停止,预置点操作及以下的命令为 FALSE 返回值: 成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_Login 典型应用: 对连接设备进行云台控制,通常的应用是打开监视通道,可以看到 画面云台控制的效果,而且必须设置更改前端设备的云台控制配置成对应的

第 50 页 共 93 页

网络客户端 SDK 编程手册

协议才能生效;

50.

CLIENT_API BOOL CLIENT_DHPTZControl(LONG lLoginID, int nChannelID, DWORD dwPTZCommand, unsigned char param1, unsigned char param2, unsigned char param3, BOOL dwStop); 函数说明:扩展云台控制, 对云台控制函数功能的增强控制;对具体命令定义 和参数的有效性需参见接口文档; 参数说明: lLoginID CLIENT_Login 的返回值 nChannelID 通道号 dwPTZCommand 球机控制命令, 兼容上一接口, param2 相当于参数 dwStep, 同时扩展 支持以下功能

typedef enum 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, EXTPTZ_AUXICLOSE, EXTPTZ_OPENMENU = 0X36, EXTPTZ_CLOSEMENU , //左上 p1水平速度, p2垂直速度 //右上 p1水平速度, p2垂直速度 //左下p1水平速度, p2垂直速度 //右下p1水平速度, p2垂直速度 //加入预置点到巡航 p1巡航线路 p2预置点值 //删除巡航中预置点 p1巡航线路 p2预置点值 //清除巡航 p1巡航线路 //开始水平旋转 //停止水平旋转 //设置左边界 //设置右边界 //开始线扫 //停止线扫 //设置模式开始 模式线路 //设置模式结束 模式线路 //运行模式 p1模式线路 //停止模式 p1模式线路 //清除模式 p1模式线路 //翻转命令 //快速定位 p1水平坐标 p2垂直坐标 p3变倍 //x34 辅助开关开 p1辅助点 //0x35 辅助开关关 p1辅助点 //打开球机菜单 //关闭菜单

第 51 页 共 93 页

网络客户端 SDK 编程手册

EXTPTZ_MENUOK, EXTPTZ_MENUCANCEL, EXTPTZ_MENUUP, EXTPTZ_MENUDOWN, EXTPTZ_MENULEFT, EXTPTZ_MENURIGHT, EXTPTZ_TOTAL, };

//菜单确定 //菜单取消 //菜单上 //菜单下 //菜单左 //菜单右 //最大命令值

param1 参数 1 具体是否有效见上表 param2 参数 2 param3 参数 3 dwStop 是否停止, 通用命令与上一接口 CLIENT_PTZControl 同, 扩展命令 只有前四个有效, 其他的无效,都应该设为 False; 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_PTZControl 典型应用:对上一接口功能扩展,必须设备所接云台或球机支持, 如大华球机 可以支持上面所有功能;

4.12 实时预览 实时预览
51. CLIENT_API hWnd); LONG CLIENT_MultiPlay(LONG lLoginID, HWND

函数说明:多画面预览, 目前大华 HB 的机器暂时不支持本功能 参数说明: lLoginID CLIENT_Login 的返回值 hWnd 多画面预览窗口,可以设置为 0,为不显示 返回值:成功返回多画面预览 ID,失败返回 0 相关函数:CLIENT_StopMultiPlay 典型应用:直接选定设备,调用本接口就可以将设备当前的预览画面 显示到窗口 hWnd 52. CLIENT_API BOOL CLIENT_StopMultiPlay(LONG lMultiHandle); 函数说明:停止多画面预览 参数说明: lMultiHandle
CLIENT_MultiPlay 返回值

第 52 页 共 93 页

网络客户端 SDK 编程手册

返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_MultiPlay 典型应用:停止多画面预览显示

4.13 系统配置
53. CLIENT_API BOOL CLIENT_QueryConfig(LONG lLoginID, int nConfigType, char *pConfigbuf, int maxlen, int *nConfigbuflen, int waittime=2000);

函数说明:获取设备配置信息 参数说明: lLoginID CLIENT_Login 的返回值 nConfigType 配置类型 普通设置 0 1 COM 口设置 2 网络设置 3 定时设置 图像设置 4 5 PTZ 设置 动态检测设置 6 7 报警设置 11 邮件名称 13 pppoe 配置 14 DDNS 设置 第三方接入配置 200 pConfigbuf 配置的接收缓冲区, 根据不同的配置信息,构和数据长度也不一致; maxlen 配置的接收缓冲区最大长度 nConfigbuflen 收到的配置包长度 waittime 等待时间 【注意】 maxlen 不够大会导致接收配置失败 nConfigType 超出范围也会导致接收配置失败 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_SetupConfig、CLIENT_Login 、 典型应用: 获取前端设备的配置信息,然后根据需要显示到页面上,目前用配套 的配置控件代替用户设计显示页面,不过控件在打开时通过事件逐个调用获

第 53 页 共 93 页

网络客户端 SDK 编程手册

取各种类型的配置信息,具体见配置控制说明;

54.

CLIENT_API BOOL CLIENT_SetupConfig(LONG lLoginID, int nConfigType, char *pConfigbuf, int nConfigbuflen, int waittime=2000); 函数说明:设置配置,与上同 参数说明:

lLoginID
CLIENT_Login 的返回值

nConfigType 配置类型 0 普通设置 1 COM 口设置 网络设置 2 定时设置 3 4 图像设置 5 PTZ 设置 动态检测设置 6 7 报警设置 邮件名称 11 13 pppoe 配置 14 DDNS 设置 第三方接入配置 200 pConfigbuf 设置配置缓冲区 nConfigbuflen 设置配置包长度 waittime 等待时间 返回值:成功返回 TRUE, 失败返回 FALSE 相关函数:CLIENT_QueryConfig、CLIENT_Login 、 典型应用:与上一接口对应,暂时应用配置控件的设置事件来实现; 55. CLIENT_API BOOL CLIENT_QueryChannelName(LONG lLoginID, char *pChannelName, int maxlen, int *nChannelCount, int waittime=2000); 函数说明:查询设备的通道名称 参数说明: lLoginID CLIENT_Login 的返回值
第 54 页 共 93 页

网络客户端 SDK 编程手册

pChannelName 通道名缓冲区 pChannelName [通道数][32] maxlen 缓冲区长度 nChannelCount 总共通道数 waittime 等待时间 返回值:成功返回 TRUE,失败返回 FALSE, 输入缓冲区长度不够也 返回 FALSE; 相关函数:CLIENT_SetupChannelName 典型应用: 在连接设备后获取,可以用来自定义显示到画面上,也可用来标注当 前画面的信息; 56. CLIENT_API BOOL CLIENT_QueryComProtocol(LONG lLoginID, int nProtocolType, char *pProtocolBuffer, int maxlen, int *nProtocollen, int waittime=2000); 函数说明:查询串口协议与解码器协议, 属于配置信息的一部分,查询前端设 备目前支持的可选控制协议 参数说明: lLoginID CLIENT_Login 的返回值 nProtocolType 0 是串口协议 1 是解码器协议(云台控制协议) pProtocolBuffer 接收的协议缓冲区 maxlen 接收的协议缓冲区长度 nProtocollen 接收的总字节数 协议信息
typedef struct { char protocolname[12]; unsigned int baudbase; unsigned char databits; unsigned char stopbits; unsigned char parity; unsigned char reserve; } PROTOCOL_INFO, *LPPROTOCOL_INFO; //协议名 //波特率 //数据位 //停止位 //校验位

第 55 页 共 93 页

网络客户端 SDK 编程手册

协议个数= nProtocollen/sizeof(PROTOCOL_INFO) waittime 等待时间 返回值:成功返回 TRUE,失败返回 FALSE 典型应用: 用来查询当前设备支持的云台控制协议和串口协议,便于网络上选 择修改串口配置和云台控制配置 57. CLIENT_API BOOL CLIENT_QuerySystemInfo(LONG lLoginID, int nSystemType, char *pSysInfoBuffer, int maxlen, int *nSysInfolen, int waittime=2000); 函数说明:查询系统信息,不同的信息有不同的数据结构 参数说明: lLoginID CLIENT_Login 的返回值 nSystemType 要查询的系统类型 0 一般信息 1 查询设备属性信息 查询硬盘信息 2 3 查询文件系统信息 查询视频属性信息 4 5 查询系统字符集属性信息 6 查询光存储设备信息 获取设备序列号 7 pSysInfoBuffer 接收的协议缓冲区 maxlen 接收的协议缓冲区长度 nSysInfolen 接收的总字节数 waittime 等待时间 返回值:成功返回 TRUE,失败返回 FALSE 典型应用:查询配置的一些信息,在配置控件就有查询字符集属性的要求

58.

CLIENT_API BOOL CLIENT_GetDevConfig(LONG lLoginID, DWORD dwCommand,LONG lChannel, LPVOID lpOutBuffer,DWORD dwOutBufferSize,LPDWORD lpBytesReturned); 函数说明: 获取设备配置,该接口目前还没有实现 参数说明 :
第 56 页 共 93 页

网络客户端 SDK 编程手册

lLoginID
CLIENT_Login 的返回值

dwCommand 配置类型 具体定义见数据结构定义中的<配置结构类型常量定义> lChannel 通道号,如果不是通道参数,lChannel不用,置为-1即可 lpOutBuffer 存放输出参数的缓冲区, 根据不同的类型, 输出不同的配置结构, 具 体见数据结构定义中各配置结构 dwOutBufferSize 输入缓冲区的大小 lpBytesReturned 实际返回的缓冲区大小,对应配置结构的大小 返回值:TRUE 表示成功,FALSE 表示失败。 59. CLIENT_API BOOL CLIENT_SetDevConfig(LONG lLoginID, DWORD dwCommand,LONG lChannel, LPVOID lpInBuffer,DWORD dwInBufferSize); 函数说明: 获取设备配置,该接口目前还没有实现 参数说明 : lLoginID CLIENT_Login 的返回值 dwCommand 配置类型 具体定义见数据结构定义中的<配置结构类型常量定义> lChannel 通道号,如果不是通道参数,lChannel不用,置为-1即可 lpInBuffer 存放输出参数的缓冲区, 根据不同的类型, 输出不同的配置结构, 具 体见数据结构定义中各配置结构 dwInBufferSize 输入缓冲区的大小 返回值:TRUE 表示成功,FALSE 表示失败。

4.14 日志管理
typedef void(CALLBACK *fLogDataCallBack) (LONG lLoginID, char *pBuffer, DWORD dwBufSize, DWORD nTotalSize, bool bEnd, DWORD dwUser);

60.

CLIENT_API BOOL CLIENT_QueryLogCallback(LONG lLoginID, fLogDataCallBack cbLogData, DWORD dwUser); 函数说明:查询日志,异步日志查询,查询日志分通过多次将结果回调出来,可

第 57 页 共 93 页

网络客户端 SDK 编程手册

以用于日志记录比较多的情况 参数说明: lLoginID CLIENT_Login 的返回值 cbLogData 日志回调函数 dwUser 用户数据 日志回调函数参数说明: lLoginID 上面传进来的 pBuffer 日志数据缓冲 dwBufSize 日志数据缓冲长度 nTotalSize 为要日志总长度 bEnd 是否为最后一个日志包,如为最后一个则 nTotalSize 为 0 dwUser 用户数据,就是上面传进来的用户数据 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_QueryLog 典型应用:回调时日志获取,可以处理分页显示的情况; 61. CLIENT_API BOOL *pLogBuffer, int waittime=6000); CLIENT_QueryLog(LONG lLoginID, maxlen, int *nLogBufferlen, char int

函数说明:查询日志,同步方式,将日志记录一次性查询出来 参数说明: lLoginID CLIENT_Login 的返回值 pLogBuffer 日志缓冲区 maxlen 日志缓冲区的最大长度 nLogBufferlen 返回的日志长度 waittime 等待时间 返回值:成功返回 TRUE,失败返回 FALSE

第 58 页 共 93 页

网络客户端 SDK 编程手册

相关函数: CLIENT_QueryLogCallback 典型应用: 与上一接口类似,查询时一次获取日志方式,可以用来一次显示所有 日志的情况;

4.15 透明串口
typedef void(CALLBACK *fTransComCallBack) (LONG lLoginID, lTransComChannel, char *pBuffer, DWORD dwBufSize, DWORD dwUser); LONG

62.

CLIENT_API LONG CLIENT_CreateTransComChannel(LONG lLoginID, int TransComType, unsigned int baudrate, unsigned int databits, unsigned int stopbits, unsigned int parity, fTransComCallBack cbTransCom, DWORD dwUser); 函数说明:创建透明串口通道, 更改前端设备串口为透明通道状态 参数说明: lLoginID CLIENT_Login 的返回值 TransComType 串口类型 0:串口 1:485 口 baudrate 串口的波特率 1~8 分别表示 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 Databits 串口的数据位 4~8 表示 4 位~8 位 Stopbits 串口的停止位 1 表示 1 位, 2 表示 1.5 位 ,3 表示 2 位 Parity 串口的检验位 1 odd 2 even 3 无校验 CbTransCom 串口数据回调, 回调出前端设备发过来的信息; dwUser 用户数据 串口数据回调参数说明: lLoginID 上面传进来的 lTransComChannel
CLIENT_CreateTransComChannel 的返回值

第 59 页 共 93 页

网络客户端 SDK 编程手册

pBuffer 透明数据缓冲 dwBufSize 透明数据缓冲长度 dwUser 用户数据,就是上面传进来的数据 返回值:成功返回透明串口 ID,失败返回 0 相关函数:CLIENT_DestroyTransComChannel, CLIENT_SendTransComData 典型应用: 用来直接与前端设备相连的串口设备之间通过前端设备通讯,如云 台,前端设备不经过处理直接将网络端通过网络发送数据流,通过串口转发到 串口设备,相反也可;本接口只是更改前端设备的通讯状态,设置透明串口状态; 其中 CbTransCom 用来处理串口设备发送到网络端的数据流; 63. CLIENT_API BOOL CLIENT_SendTransComData(LONG lTransComChannel, char *pBuffer, DWORD dwBufSize); 函数说明:发送透明串口数据,即向前端设备发送数据 参数说明: lTransComChannel 透明串口 ID pBuffer 要发送的透明串口数据指针 dwBufSize 要发送的透时串口数据长度 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:
CLIENT_CreateTransComChannel, CLIENT_DestroyTransComChannel

典型应用:发送到串口设备的数据流 64. CLIENT_API BOOL lTransComChannel); 函数说明:关闭透明通道 参数说明: lTransComChannel 透明串口 ID 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:
CLIENT_CreateTransComChannel, CLIENT_SendTransComData

CLIENT_DestroyTransComChannel(LONG

典型应用:当不需要通讯时关闭

第 60 页 共 93 页

网络客户端 SDK 编程手册

4.16 远程控制
65. CLIENT_RebootDev(LONG lLoginID) 函数说明:重启前端设备 参数说明: lLoginID CLIENT_Login 的返回值 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: 典型应用:远程控制设备重启; 66. CLIENT_ShutDownDev(LONG lLoginID) 函数说明:关闭前端设备 参数说明: lLoginID CLIENT_Login 的返回值 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: 典型应用:远程控制设备关闭;,需要注意的是,只有特别定制的部分机型能 够支持本命令。
typedef void(CALLBACK *fUpgradeCallBack) (LONG lLoginID, lUpgradechannel, int nTotalSize, int nSendSize, DWORD dwUser); LONG

67.

CLIENT_API LONG CLIENT_StartUpgrade(LONG lLoginID, char *pchFileName, fUpgradeCallBack cbUpgrade, DWORD dwUser); 函数说明:设置对前端设备网络升级程序 参数说明: lLoginID CLIENT_Login 的返回值 pchFileName 要升级的文件名 fUpgradeCallBack 回调升级进度,其中 lUpgradechannel 为升级句柄 nTotalSize 为升级文件的总长度 int nSendSize 为已升级的长度

第 61 页 共 93 页

网络客户端 SDK 编程手册

dwUser 用户数据 返回值:成功返回升级句柄 ID,失败返回 0 相关函数: CLIENT_SendUpgrade, CLIENT_StopUpgrade 典型应用: 设置远程程序的升级,返回程序升级句柄,调用本接口还没有发送升 级程序数据,需要调用下一接口,数据才能发送; 68. CLIENT_API BOOL CLIENT_SendUpgrade(LONG lUpgradeID); 函数说明:开始执行升级 参数说明: lUpgradeID 升级句柄 ID 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_StartUpgrade, CLIENT_StopUpgrade 典型应用:发送升级程序数据; 69. CLIENT_API BOOL CLIENT_StopUpgrade(LONG lUpgradeID) 函数说明:停止升级 参数说明: lUpgradeID 升级句柄 ID 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_StartUpgrade, CLIENT_SendUpgrade 典型应用:停止升级

4.17 录像控制
70. CLIENT_API BOOL CLIENT_QueryRecordState(LONG lLoginID, char *pRSBuffer, int maxlen, int *nRSBufferlen, int waittime=2000); 函数说明:查询录像状态 参数说明: lLoginID CLIENT_Login 的返回值 pRSBuffer 录像状态缓冲区,总长度不能小于通道数,其中 0 为不录像 1 手动录像 2 为自动录像 maxlen 输入参数 录像状态缓冲区长度,不能小于通道数
第 62 页 共 93 页

网络客户端 SDK 编程手册

nRSBufferlen 返回录像状态信息长度, 每一个通道为 1 个字节 waittime 等待时间 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_SetupRecordState 典型应用:查询当前设备的录像状态,显示到录像控制页面; 71. CLIENT_API BOOL CLIENT_SetupRecordState(LONG lLoginID, char *pRSBuffer, int nRSBufferlen); 函数说明:设置录像状态 参数说明: lLoginID CLIENT_Login 的返回值 pRSBuffer 录像状态缓冲区,总长度为通道个数,其中 为不录像, 0 1 手动录像 为自动录像 2 nRSBufferlen 录像状态个数,每一个通道为 1 个字节 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_QueryRecordState 典型应用:根据需要更改当前的录像状态;

4.18 系统时间
72. CLIENT_API BOOL CLIENT_QueryDeviceTime(LONG LPNET_TIME pDeviceTime, int waittime=2000); 函数说明:查询设备系统时间 参数说明: lLoginID CLIENT_Login 的返回值 pDeviceTime 接收的设备时间指针 waittime 等待时间 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_SetupDeviceTime 典型应用:应用于系统校时时获取当前前端设备系统时间; lLoginID,

第 63 页 共 93 页

网络客户端 SDK 编程手册

73.

CLIENT_API BOOL CLIENT_SetupDeviceTime(LONG LPNET_TIME pDeviceTime); 函数说明:设置设备时间 参数说明: lLoginID CLIENT_Login 的返回值 pDeviceTime 设置的设备时间指针

lLoginID,

返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_QueryDeviceTime 典型应用:应用于系统校时时更改当前前端设备系统时间与本机系统时间同 步;

4.19 用户管理
74. CLIENT_API BOOL CALL_METHOD CLIENT_QueryUserInfo(LONG lLoginID, USER_MANAGE_INFO *info, int waittime=15000); 函数说明:查询用户信息 参数说明: lLoginID CLIENT_Login 的返回值 Info 用户信息缓存, 应传进来一个已分配好内存的 USER_MANAGE_INFO 结构指针; 返回的各用户信息 USER_INFO 中的 password 字段是 加过密的。 waittime 等待时间 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_OperateUserInfo 典型应用:获取当前设备用户信息, 应用程序可以根据用户信息对应用界面 的功能进行一定的启动和禁用处理;

第 64 页 共 93 页

网络客户端 SDK 编程手册

75.

CLIENT_API BOOL CALL_METHOD CLIENT_OperateUserInfo(LONG lLoginID, int nOperateType, void *opParam, void *subParam, int waittime=15000); 函数说明:设置用户信息 参数说明: lLoginID CLIENT_Login 的返回值 nOperateType 设置类型 0 增加用户组-opParam 为欲设置的 USER_GROUP_INF 结构指针 删除用户组-opParam 为欲设置的 USER_GROUP_INF 结构指针 1
其 name 成员是实际起作用的变量

2 3 4 5

修改用户组-opParam 为新的 USER_GROUP_INF 结构指针, subParam 为原始的 USER_GROUP_INF 结构指针, 增加用户 -opParam 为欲增加的 USER_INF 结构指针
其 password 成员传普通字符串即可,不用加密

删除用户 -opParam 为欲删除的 USER_INF 结构指针
其 name 成员是实际起作用的变量

修改用户 -opParam 为新的 USER_INF 结构指针 subParam 为原始的 USER_INF 结构指针,其 password 成员必须
是查询时返回的密码字段(加密过的)

6

修改用户密码-opParam 为新的 USER_INF 结构指针 subParam 为原始的 USER_INF 结构指针,其 password 成员必须
是普通字符串,不用加密

opParam 设置用户信息的输入缓冲,具体见上面 nOperateType 说明。 subParam 设置用户信息的辅助输入缓冲, 当设置类型为修改信息的时候, 此处 应传进来部分原始用户信息,具体见上面 nOperateType 说明。 waittime 等待时间 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_QueryUserInfo 典型应用:为实现要求的功能,设置更改设备的用户信息

第 65 页 共 93 页

网络客户端 SDK 编程手册

4.20 语音对讲
76. CLIENT_API BOOL CLIENT_StartTalk(LONG lRealHandle, bool bCustomSend=false); 函数说明:开始传输对讲数据,这个并没有开始播放对讲,需要调用 CLIENT_OpenSound 播放才能接收到前端的声音; 参数说明: lRealHandle 实时监视 ID bCustomSend 是否自定义发送,如果 bCustomSend 为 true,则需要用户自已调用 发送 CLIENT_SendTalkData_Custom 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_StopTalk 典型应用:打开语音对讲,开始通过音频输入将音频发送到前端设备;其中 bCustomSend 为 false 时是直接取本机音频输入口的音频发送,相关需调用下 一接口 CLIENT_StopTalk 客户自定义发送; 【注意】 V3.1.8 以后(包含 V3.1.8)该接口被废除, 在 替代接口是 CLIENT_StartTalkEx; 77. CLIENT_API BOOL CLIENT_StopTalk(LONG lRealHandle);

函数说明:停止传输对讲数据 参数说明: lRealHandle 实时监视 ID 返回值:成功返回 TRUE,失败返回 FALSE 相关函数: CLIENT_StartTalk 典型应用:停止语音对讲 【注意】 V3.1.8 以后(包含 V3.1.8)该接口被废除, 在 替代接口是 CLIENT_StartTalkEx;

78.

CLIENT_API BOOL CLIENT_SendTalkData_Custom(LONG lRealHandle, char *pBuffer, DWORD dwBufSize); 函数说明:发送自定义音频数据 参数说明: lRealHandle 实时监视 ID pBuffer 要发送音频数据缓冲区,音频数据必须是采样率 8000,码率 64k,每采样 比特数为 8

第 66 页 共 93 页

网络客户端 SDK 编程手册

dwBufSize 要发送的音频数据长度 返回值:成功返回 TRUE,失败返回 FALSE 典型应用:用户自定义发送音频数据到前端设备,如发送音乐; 【注意】 :在 V3.1.8 以后(包含 V3.1.8)该接口被废除.
typedef void(CALLBACK *pfAudioDataCallBack)(LONG lTalkHandle, char *pDataBuf, DWORD dwBufSize, BYTE byAudioFlag, DWORD dwUser);

79.

CLIENT_API LONG CLIENT_StartTalkEx(LONG pfAudioDataCallBack pfcb, DWORD dwUser); 函数说明:向设备发起语音对讲请求 参数说明: (in)lLoginID 登陆返回的设备句柄 (in)pfcb 用户自定义的数据回调接口 (in)dwUser 用户自定义信息,通过回调函数返回给用户 回调函数参数说明(原型参见 pfAudioDataCallBack)

lLoginID,

(in)lTalkHandle 就是 CLIENT_StartTalkEx 的返回值 (in)pDataBuf 回调出来的音频数据的内容 (in)dwBufSize 回调出来的音频数据的长度 (in)byAudioFlag 音频数据归属标志 0 表示是本地录音库采集的音频数据 1 表示收到的设备发过来的音频数据 (in)dwUser 用户调用 CLIENT_StartTalkEx 时自定义的用户数据 返回值:成功返回和设备对讲的句柄,失败返回 0; 典型应用:打开和设备的对讲; 【注意】 在 V3.1.8 以后(包含 V3.1.8)才有这个接口, 代替之前的 CLIENT_StartTalk

第 67 页 共 93 页

网络客户端 SDK 编程手册

80.

CLIENT_API BOOL CLIENT_SetAudioClientVolume(LONG lTalkHandle, WORD wVolume); 函数说明:在进行语音对讲的时候设置音量; 参数说明: (in)lTalkHandle
CLIENT_StartTalkEx 的返回值

(in)wVolume 要设置的音量,范围是 0~0XFFFF,0 的音量最小 返回值:成功返回 TRUE,失败返回 FALSE; 典型应用: 【注意】备注在 V3.1.8 以后(包含 V3.1.8)才有的。 81. CLIENT_API LONG CLIENT_TalkSendData(LONG char *pSendBuf, DWORD dwBufSize); lTalkHandle,

函数说明:向设备发送用户的音频数据,这里的数据可以是从 CLIENT_StartTalkEx 的回调接口中回调出来的数据; 参数说明: (in)lTalkHandle CLIENT_StartTalkEx 的返回值; (in)pSendBuf 要发送的音频数据; (in)dwBufSize 是要发送的音频数据的长度; 返回值:成功时返回实际传输给设备的数据长度,失败返回-1 典型应用: 接收到 CLIENT_StartTalkEx 的回调出来的录音数据后通过这个接 口发送给设备。 【注意】在 V3.1.8 以后(包含 V3.1.8)才有的。 82. CLIENT_API BOOL CLIENT_RecordStart(); 函数说明:启动本地录音功能,录音采集出来的音频数据通过 CLIENT_StartTalkEx 的 回 调 函 数 回 调 给 用 户 , 对 应 操 作 是 CLIENT_RecordStop; 参数:无 返回值:成功返回 TRUE,失败返回 FALSE; 典型应用:语音对讲中使用; 【注意】在 V3.1.8 以后(包含 V3.1.8)才有的。

第 68 页 共 93 页

网络客户端 SDK 编程手册

83. CLIENT_API BOOL CLIENT_RecordStop(); 函数说明:停止本地录音,对应操作是 CLIENT_RecordStart; ; 参数:无 返回值:成功返回 TRUE,失败返回 FALSE; 典型应用:语音对讲中使用; 【注意】在 V3.1.8 以后(包含 V3.1.8)才有的。 84. CLIENT_API void CLIENT_AudioDec(char DWORD dwBufSize); *pAudioDataBuf,

函数说明:对输入的音频数据进行解码; 参数说明: (in)pAudioDataBuf 要求解码的音频数据内容; (in)dwBufSize 要求解码的音频数据的长度; 返回值:无 典型应用:语音对讲中对设备传过来的数据进行解码; 【注意】在 V3.1.8 以后(包含 V3.1.8)才有的。 85. CLIENT_API BOOL CLIENT_StopTalkEx(LONG lTalkHandle); 函数说明:停止与设备的对讲,对应操作是 CLIENT_StartTalkEx; 参数说明: (in)lTalkHandle CLIENT_StartTalkEx 返回的对讲句柄 返回值:成功返回 TRUE,失败返回 FALSE; 典型应用:语音对讲中使用; 【注意】在 V3.1.8 以后(包含 V3.1.8)才有的。 86. CLIENT_API lLoginID); BOOL CLIENT_AudioBroadcastAddDev(LONG

函数说明:把设备增加到广播组中,当本地录音库启动后,采集出来的数据 会 自 动 发 送 给 广 播 组 中 的 设 备 , 对 应 操 作 是 CLIENT_AudioBroadcastDelDev; 参数说明: (in)lLoginID 登录设备时得到的设备句柄 返回值:成功返回 TRUE,失败返回 FALSE; 典型应用:在语音对讲服务器开发中使用; 【注意】在 V3.1.8 以后(包含 V3.1.8)才有的。
第 69 页 共 93 页

网络客户端 SDK 编程手册

87.

CLIENT_API lLoginID);

BOOL

CLIENT_AudioBroadcastDelDev(LONG

函 数 说 明 : 把 设 备 从 广 播 组 中 删 除 , 对 应 操 作 是 CLIENT_AudioBroadcastAddDev; 参数说明: (in)lLoginID 设备句柄 返回值:成功返回 TRUE,失败返回 FALE; 典型应用:在语音对讲服务器开发中使用; 【注意】在 V3.1.8 以后(包含 V3.1.8)才有的。 88. CLIENT_API int CLIENT_InitAudioEncode(DH_AUDIO_FORMAT aft); 函数说明: 初始化对讲中的音频编码接口, 告诉 SDK 内部要编码的源音频数 据的音频格式,对不支持的音频格式初始化会失败; 参数说明: (in)aft 要编码的音频格式,类型 DH_AUDIO_FORMAT 返回值:成功返回 0,失败返回错误码,参考错误码解释; 相关函数: 典型应用:通过配置接口获取设备支持的音频解码格式,目前配置接口还不 支持获取,这里的音频格式默认只支持(0,1,16,8000) ,格式表示是(编 码类型,声道数,采样深度,采样率)

89.

CLIENT_API int CLIENT_AudioEncode(LONG lTalkHandle, BYTE *lpInBuf, DWORD *lpInLen, BYTE *lpOutBuf, DWORD *lpOutLen); 函数说明:进行音频的数据二次编码,从标准音频格式转换成设备支持的大 华格式; 参数说明: (in)lTalkHandle CLIENT_StartTalkEx 接口的返回值,对讲的句柄;

第 70 页 共 93 页

网络客户端 SDK 编程手册

(in)lpInBuf 要编码的源音频数据; (in,out)lpInLen 源音频数据的长度,当接口返回数据过长时,lpInLen 的值是接口支持 的最长的输入长度,最好不要超过 1024*2,当返回成功时,其值表示剩下还 没有编码数据长度; (out)lpOutBuf 用来存储编码的音频数据; (in,out)lpOutLen 调用接口时表示 lpOutBuf 的最大长度,当接口返回缓冲不足时,其值是需 要的缓冲长度; 返回值:成功返回 0,失败返回错误码,参考错误码解释 相 关 函 数 : CLIENT_InitAudioEncode , CLIENT_StartTalkEx
CLIENT_ReleaseAudioEncode ,

典型应用:在对讲中,如果是用户使用自己的录音数据,传给**的数据必须 是经过编码的数据; 90. CLIENT_API int CLIENT_ReleaseAudioEncode(); 函数说明:解码功能使用完毕后,告诉接口清理内部资源; 参数说明: 返回值:成功返回 0,失败返回错误码,参考错误码解释; 相关参数:CLIENT_InitAudioEncode,CLIENT_AudioEncode , 典型应用:

4.21 码流统计
91. CLIENT_API LONG CLIENT_GetStatiscFlux(LONG lLoginID, LONG lPlayHandle); 函数说明: 获取流量统计,得到在上次调用此统计流量之间的流量,每调用一次 原有的历史流量都将清 0 参数说明: lLoginID CLIENT_Login 的返回值 lPlayHandle 播放 ID,可以是实时播放 ID,预览 ID 或者是网络回放 ID,当为 0 时得 到设备的总流量
第 71 页 共 93 页

网络客户端 SDK 编程手册

返回值:成功返回流量值,失败返回-1 相关函数:CLIENT_Login 典型应用: 获取当前显示窗口的网络流量,用于码流统计,为图像显示提供参考 依据

4.22 IO 控制
92. CLIENT_API BOOL CLIENT_QueryIOControlState(LONG lLoginID, IOTYPE emType, void *pState, int maxlen, int *nIOCount, int waittime=2000); 函数说明:得到设备的 IO 状态 参数说明: lLoginID CLIENT_Login 的返回值 emType IO 类型,1 报警输入, 2 报警输出,详见 IOTYPE 类型定义 pState 状态缓冲区,根据不同的 IO 类型可以是不同的数据结构数组 maxlen 最大缓冲区大小 nIOCount 输出参数, 取得状态的 IO 数量 waittime 等待时间 返回值:成功返回流量值,失败返回-1 相关函数:CLIENT_Login 典 型 应 用 : 本 接 口 采 用 windows 查 询 处 理 方 式 , 先 调 用 本 接 口 pState 设为 Null 获取 nIOCount, pState 申请相应的内存再调用本接口将内存指针 作输入参数, 同时也做输出参数返回状态数据 93. CLIENT_API BOOL CLIENT_IOControl(LONG lLoginID, IOTYPE emType, void *pState, int maxlen); 函数说明:设置 IO 状态,可以对一个 IO 设置,也可以同时对多个一起设置 参数说明: lLoginID CLIENT_Login 的返回值 emType IO 类型,1 报警输入, 2 报警输出,详见 IOTYPE 类型定义; pState 状态缓冲区,根据不同的 IO 类型可以是不同的数据结构数组 maxlen 最大缓冲区大小
第 72 页 共 93 页

网络客户端 SDK 编程手册

返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_Login 典型应用:修改报警步撤防状态和报警输出状态

4.23 强制 I 帧
94. CLIENT_API BOOL CLIENT_MakeKeyFrame(LONG lLoginID, int nChannelID, int nSubChannel=0); 函数说明:对监视图像强制 I 帧,执行一次强制一个 I 帧 参数说明: lLoginID CLIENT_Login 的返回值 nChannelID 通道 ID nSubChannel 子通道,目前暂时不用 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_Login 典型应用: 可以于网络监视出现马赛克无法恢复图像时,调用此接口让图像恢 复正常;也可以根据用户需要,定期强制 I 确保数据的稳定;

4.24 设置限流
95. CLIENT_API BOOL CLIENT_SetMaxFlux(LONG lLoginID, WORD nFlux); 函数说明:设置设备的网络限定流量 参数说明: lLoginID CLIENT_Login 的返回值 nFlux 流量值,单位 Kbps(1024 bits/sec)目前只支持几个特定可选值设置, 65535(无限制),64, 128, 256, 512, 768, 1024。 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_Login 典型应用:应用于连接多台不同的设备,需要限定网络流量的情况

第 73 页 共 93 页

网络客户端 SDK 编程手册

4.25 获取设备状态 获取设备状态
96. CLIENT_API BOOL CLIENT_GetDEVWorkState(LONG lLoginID, LPNET_DEV_WORKSTATE lpWorkState, int waittime=2000); 函数说明:获取前端设备的当前工作状态; 参数说明: lLoginID CLIENT_Login 的返回值 lpWorkState 设备状态信息,具体见数据结构(NET_DEV_WORKSTATE)定义中有说明 waittime 查询状态等待时间,默认 2000ms 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_Login 典型应用:获取设备的当前工作状态 97. CLIENT_API BOOL CALL_METHOD CLIENT_QueryDevState(LONG lLoginID, int nType, char *pBuf, int nBufLen, int *pRetLen, int waittime=1000); 函数说明:获取前端设备的当前工作状态,新接口; 参数说明: lLoginID CLIENT_Login 的返回值 nType 查询信息类型,可接受的值包括:
DH_DEVSTATE_COMM_ALARM DH_DEVSTATE_SHELTER_ALARM DH_DEVSTATE_RECORDING DH_DEVSTATE_DISK 查询普通报警 查询遮挡报警 查询录象状态 查询硬盘状态

pBuf 输出参数,用于接收查询返回的数据的缓存。根据查询类型的不同, 返回数据的数据结构也不同: nType的可能值是: -DH_DEVSTATE_COMM_ALARM:填充数据为一个NET_CLIENT_STATE 结构体。 填充数据为16个字节, 每个字节表 -DH_DEVSTATE_SHELTER_ALARM: 示一个视频通道的遮挡报警状态,1为有报警,0为无报警 -DH_DEVSTATE_RECORDING:填充数据为16个字节,每个字节表示 一个视频通道的录象状态,1表示正在录象,0表示不在录象。 -DH_DEVSTATE_DISK: 填充数据为一个DH_HARDDISK_STATE结构体。
第 74 页 共 93 页

网络客户端 SDK 编程手册

nBufLen 缓存长度 ,单位字节 pRetLen 输出参数,实际返回的数据长度,单位字节 waittime 查询状态等待时间,默认 1000ms 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_Login 典型应用:获取设备的当前工作状态

4.26 修改通道名称
98. CLIENT_API BOOL CALL_METHOD CLIENT_SetupChannelName(LONG lLoginID,char *pbuf, int nbuflen); 函数说明:修改设备通道名称 参数说明: lLoginID CLIENT_Login 的返回值 pbuf 通道名称的缓冲 nbuflen 缓冲区长度 32*16 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:CLIENT_Login、CLIENT_QueryChannelName 、 典型应用:无

4.27 DDNS 查询 IP
99. CLIENT_API BOOL CLIENT_ GetDVRIPByResolveSvr (char *pchDVRIP, WORD wDVRPort, BYTE *sDVRName, WORD wDVRNameLen, BYTE *sDVRSerialNumber, WORD wDVRSerialLen, char* sGetIP); 函数说明:连接 DDNS 服务器,通过设备名查询 IP 参数说明: pchDVRIP DDNS 服务器的 wDVRPort DDNS 服务器的端口号 sDVRName 所查询的设备名

第 75 页 共 93 页

网络客户端 SDK 编程手册

wDVRNameLen 设备名的长度 sDVRSerialNumber 所查询的设备序列号(目前不支持,填 0) wDVRSerialLen 设备序列号的长度(目前不支持, 填 0) sGetIP 储存返回 IP 的地址指针( 应用程序中分配, 32 字节长) 返回值:成功返回 TRUE,失败返回 FALSE 相关函数:无 典型应用:连接 DDNS 服务器,通过设备名查询 IP

4.28 设备参数配置
100. CLIENT_API BOOL CALL_METHOD CLIENT_GetDevConfig(LONG lLoginID, DWORD dwCommand,LONG lChannel, LPVOID lpOutBuffer,DWORD dwOutBufferSize,LPDWORD lpBytesReturned); 函数说明:读取设备的配置信息 参数: lLoginID
设备登陆句柄

dwCommand
设备配置命令参见配置命令

lChannel
通道号,如果获取全部通道数据为 0xFFFFFFFF,如果命令不需要通道号,该 参数无效。

lpOutBuffer
接受数据缓冲指针

dwOutBufferSize
接收数据缓冲长度(以字节为单位)

lpBytesReturned
实际收到数据的长度

返 回 值 : TRUE 成 功 , FALSE 失 败 , 获 取 具 体 错 误 代 码 调 用 CLIENT_GetLastError,可能返回的值如下:
#define NET_ERROR_GETCFG_SYSATTR #define NET_ERROR_GETCFG_SERIAL
#define NET_ERROR_GETCFG_GENERAL #define NET_ERROR_GETCFG_DSPCAP #define NET_ERROR_GETCFG_NETCFG

_EC(32) //获取配置失败位置:系统属性 _EC(33) //获取配置失败位置:序列号
_EC(34) _EC(35) _EC(36) //获取配置失败位置:常规属性 //获取配置失败位置:DSP 能力描述 //获取配置失败位置:网络属性

第 76 页 共 93 页

网络客户端 SDK 编程手册

#define NET_ERROR_GETCFG_CHANNAME #define NET_ERROR_GETCFG_VIDEO #define NET_ERROR_GETCFG_RECORD #define NET_ERROR_GETCFG_PRONAME #define NET_ERROR_GETCFG_FUNCNAME #define NET_ERROR_GETCFG_232COM #define NET_ERROR_GETCFG_ALARMIN #define NET_ERROR_GETCFG_ALARMDET #define NET_ERROR_GETCFG_SYSTIME #define NET_ERROR_GETCFG_PREVIEW

_EC(37) _EC(38) _EC(39)

//获取配置失败位置:通道名称 //获取配置失败位置:视频属性 //获取配置失败位置:录象定时配置

_EC(40) //获取配置失败位置:解码器协议名称 _EC(41) //获取配置失败位置:232 串口功能名称 _EC(43) //获取配置失败位置:232 串口属性 _EC(44) //获取配置失败位置:外部报警输入属性 _EC(45) //获取配置失败位置:图像检测报警属性 _EC(46) //获取配置失败位置:设备时间 _EC(47) //获取配置失败位置:预览参数

#define NET_ERROR_GETCFG_485DECODER _EC(42) //获取配置失败位置:解码器属性

相关函数: 典型应用:参见 VC _DEMO 程序 101. CLIENT_API BOOL CALL_METHOD CLIENT_SetDevConfig(LONG lLoginID, DWORD dwCommand,LONG lChannel, LPVOID lpInBuffer,DWORD dwInBufferSize); 函数说明:读取设备的配置信息 参数: lLoginID 设备登陆句柄 dwCommand 设备配置命令参见配置命令 lChannel 通道号, 如果设置全部通道数据为 0xFFFFFFFF, 如果命令不需要通道号, 该参数无效。 lpOutBuffer 数据缓冲指针 dwOutBufferSize 数据缓冲长度(以字节为单位) 返 回 值 : TRUE 成 功 , FALSE 失 败 , 获 取 具 体 错 误 代 码 调 用 CLIENT_GetLastError,可能返回的值如下:
#define NET_ERROR_SETCFG_GENERAL #define NET_ERROR_SETCFG_NETCFG #define NET_ERROR_SETCFG_CHANNAME #define NET_ERROR_SETCFG_VIDEO #define NET_ERROR_SETCFG_RECORD #define NET_ERROR_SETCFG_485DECODER #define NET_ERROR_SETCFG_232COM #define NET_ERROR_SETCFG_ALARMIN #define NET_ERROR_SETCFG_SYSTIME _EC(48) _EC(49) _EC(50) _EC(51) _EC(52) _EC(54) //设置配置失败位置:常规属性 //设置配置失败位置:网络属性 //设置配置失败位置:通道名称 //设置配置失败位置:视频属性 //设置配置失败位置:录象定时配置 //设置配置失败位置: 232 串口属性

_EC(53) //设置配置失败位置:解码器属性

_EC(55) //设置配置失败位置:外部报警输入属性 _EC(57) //设置配置失败位置:设备时间

#define NET_ERROR_SETCFG_ALARMDET _EC(56) //设置配置失败位置:图像检测报警属性

第 77 页 共 93 页

网络客户端 SDK 编程手册

#define NET_ERROR_SETCFG_PREVIEW

_EC(58)

//设置配置失败位置:预览参数

相关函数: 典型应用:参见 VC_ DEMO 程序

************************************************************************************** 配置命令 ***************************************************************************************

CLIENT_GetDEVConfig、CLIENT_GetDEVConfig 的命令定义
#define #define #define #define #define #define #define #define #define DH_DEV_DEVICECFG DH_DEV_NETCFG DH_DEV_CHANNELCFG DH_DEV_PREVIEWCFG DH_DEV_RECORDCFG DH_DEV_COMMCFG DH_DEV_ALARMCFG DH_DEV_TIMECFG DH_DEV_TALKCFG 1 //设备参数,参见 DHDEV_SYSTEM_ATTR_CFG 2 //网络参数,参见 DHDEV_NET_CFG 3 通道配置-图像及压缩参数等,参见 DHDEV_CHANNEL_CFG 4 //预览参数,参见 DHDEV_PREVIEW_CFG 5 //录像时间参数,参见 DHDEV_RECORD_CFG 6 //串口参数,参见 DHDEV_COMM_CFG 7 //报警参数,参见 DHDEV_ALARM_SCHEDULE 8 //DVR 时间,参见开发手册的 DH_NETTIME 结构 9 //对讲参数,参见 DHDEV_TALK_CFG

************************************************************************************ 以下是各部分配置结构体 ************************************************************************************ #define DH_MAX_MAIL_ADDR_LEN 128 //邮件发(收)人地址最大长度 #define DH_MAX_MAIL_SUBJECT_LEN 64 //邮件主题最大长度 #define DH_MAX_IPADDR_LEN 16 //IP 地址字符串长度 48 //MAC 地址字符串长度 #define DH_MACADDR_LEN #define DH_MAX_USER_NAMELEN 32 //主机名字符串长度 32 //长度 #define DH_MAX_USER_PSWLEN #define DH_MAX_NAME_LEN 16 //通用名字字符串长度 #define DH_MAX_ETHERNET_NUM 2 //以太网口最大个数 #define DH_DEV_SERIALNO_LEN 32 //序列号字符串长度 #define DH_N_WEEKS 7 //一周的天数 #define DH_N_REC_TSECT 6 //录像时间段个数 #define DH_N_COL_TSECT 2 //颜色时间段个数 #define DH_CHAN_NAME_LEN 32 //通道名长度 #define DH_N_ENCODE_AUX 3 //扩展码流个数 #define DH_N_TALK 1 //最多对讲通道个数 #define DH_N_COVERS 1 //遮挡区域个数 #define DH_N_CHANNEL 16 //最大通道个数 #define DH_N_ALARM_TSECT 2 //报警提示时间段个数 #define DH_MAX_ALARMOUT_NUM 16 //报警输出口个数上限 16 //视频输入口个数上限 #define DH_MAX_VIDEO_IN_NUM

第 78 页 共 93 页

网络客户端 SDK 编程手册

#define DH_MAX_ALARM_IN_NUM #define DH_MAX_DISK_NUM #define DH_MAX_DECODER_NUM #define DH_MAX_232FUNCS #define DH_MAX_232_NUM #define DH_MAX_DECPRO_LIST_SIZE /* 分辨率列表 */ #define DH_CAPTURE_SIZE_D1 #define DH_CAPTURE_SIZE_HD1 #define DH_CAPTURE_SIZE_BCIF #define DH_CAPTURE_SIZE_CIF #define DH_CAPTURE_SIZE_QCIF #define DH_CAPTURE_SIZE_VGA #define DH_CAPTURE_SIZE_QVGA #define DH_CAPTURE_SIZE_SVCD /* 码流控制列表 */ #define DH_CAPTURE_BRC_CBR #define DH_CAPTURE_BRC_VBR

16 16 16 5 2 100

//报警输入口个数上限 //硬盘个数上限,暂定为 16 //解码器(485)个数上限 //232 串口功能个数上限 //232 串口个数上限 //解码器协议列表个数上限 0x00000001 0x00000002 0x00000004 0x00000008 0x00000010 0x00000020 0x00000040 0x00000080 0 1 2 0x00000001 0x00000002 0x00000004 0x00000008 0x00000010 0x00000020 0x00000040 0x00000080

#define DH_CAPTURE_BRC_MBR /* 编码模式列表 */ #define DH_CAPTURE_COMP_DIVX_MPEG4 #define DH_CAPTURE_COMP_MS_MPEG4 #define DH_CAPTURE_COMP_MPEG2 #define DH_CAPTURE_COMP_MPEG1 #define DH_CAPTURE_COMP_H263 #define DH_CAPTURE_COMP_MJPG #define DH_CAPTURE_COMP_FCC_MPEG4 #define DH_CAPTURE_COMP_H264 /* 定时录象类型-定时、动态检测、报警 */ 定时录象类型-定时、动态检测、 enum REC_TYPE { DH_REC_TYPE_TIM = 0, DH_REC_TYPE_MTD, DH_REC_TYPE_ALM, DH_REC_TYPE_NUM, };

第 79 页 共 93 页

网络客户端 SDK 编程手册

************************************************************************************* 系统信息 ************************************************************************************* 版本信息:高 16 位表示主版本号,低 16 位表示次版本号 关于时间的数据组织是:yyyymmdd typedef struct { DWORD dwSoftwareVersion; DWORD dwSoftwareBuildDate; DWORD dwDspSoftwareVersion; DWORD dwDspSoftwareBuildDate; DWORD dwPanelVersion; DWORD dwPanelSoftwareBuildDate; DWORD dwHardwareVersion; DWORD dwHardwareDate; DWORD dwWebVersion; DWORD dwWebBuildDate; } DH_VERSION_INFO, *LPDH_VERSION_INFO; /* DSP 能力描述 */ typedef struct { DWORD dwVideoStandardMask;//视频制式掩码,按位表示设备能够支持的视频制式 DWORD dwImageSizeMask; //分辨率掩码,按位表示设备能够支持的分辨率设置 DWORD dwEncodeModeMask; //编码模式掩码,按位表示设备能够支持的编码模式设置 } DH_DSP_ENCODECAP, *LPDH_DSP_ENCODECAP; /* 设备信息配置结构 */ typedef struct { DWORD dwSize; /*下面是设备的只读部分*/ DH_VERSION_INFO BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE stVersion;

szDevSerialNo[DH_DEV_SERIALNO_LEN]; //序列号 byDevType; //设备类型,见枚举 NET_DEVICE_TYPE byVideoCaptureNum; //视频口数量 byAudioCaptureNum; //音频口数量 byTalkInChanNum; //NSP byTalkOutChanNum; //NSP byDecodeChanNum; //NSP byAlarmInNum; byAlarmOutNum; byNetIONum; byUsbIONum; //报警输入口数 //报警输出口数 //网络口数 //USB 口数量

第 80 页 共 93 页

网络客户端 SDK 编程手册

BYTE BYTE BYTE BYTE BYTE BYTE

byIdeIONum; byComIONum; byLPTIONum; byVgaIONum; byIdeControlNum; byIdeControlType;

//IDE 数量 //串口数量 //并口数量 //NSP //NSP //NSP

BYTE byCapability; //NSP,扩展描述 BYTE byReserved[3]; //保留字 DH_DSP_ENCODECAP stDspEncodeCap; //DSP 能力描述 /*下面是设备的可写部分*/ BYTE byDevNo; BYTE byOverWrite; BYTE byRecordLen; BYTE byStartChanNo;

//设备编号,用于遥控 //硬盘满处理方式(覆盖、停止) //录象打包长度 //NSP

BYTE byVideoStandard; //视频制式 BYTE byDateFormat; //日期格式 BYTE byDateSprtr; //日期分割符(0-".", 1-"-", 2-"/") BYTE byTimeFmt; //时间格式 (0-24 小时,1-12 小时) } DHDEV_SYSTEM_ATTR_CFG, *LPDHDEV_SYSTEM_ATTR_CFG; ************************************************************************************* 图像通道 ************************************************************************************* /* 时间段结构 */ typedef struct { BYTE byBeginHour; BYTE byBeginMin; BYTE byBeginSec; BYTE byEndHour; BYTE byEndMin; BYTE byEndSec; BYTE byReserved[2]; } DH_TSECT, *LPDH_TSECT; /* 区域 各边距按整长 8192 的比例 */ 区域:各边距按整长 typedef struct { long left; long top; long right; long bottom; } DH_RECT,*LPDH_RECT;

第 81 页 共 93 页

网络客户端 SDK 编程手册

/* OSD 属性结构 */ typedef struct tagENCODE_WIDGET { DWORD rgbaFrontground; // 物件的前景 RGB,和透明度 DWORD rgbaBackground; // 物件的后景 RGB,和透明度 DH_RECT rcRect; // 位置 BYTE bShow; // 物件显示 BYTE byReserved[3]; } DH_ENCODE_WIDGET, *LPDH_ENCODE_WIDGET; /* 通道音视频属性 */ typedef struct { //视频参数 BYTE byVideoEnable; //视频使能:1-打开,0-关闭 BYTE byBitRateControl; // 码流控制,参照常量定义 BYTE byFramesPerSec; // 帧率 BYTE byEncodeMode; // 编码模式,参照常量定义 BYTE byImageSize; // 分辨率参,参照常量定义 BYTE byImageQlty; // 档次 1-6 //音频参数 BYTE byAudioEnable; //音频使能:1-打开,0-关闭 BYTE wFormatTag; //编码类型,如 PCM WORD nChannels; //声道数 WORD wBitsPerSample; //采样深度 DWORD nSamplesPerSec; //采样率 } DH_VIDEOENC_OPT, *LPDH_VIDEOENC_OPT; /* 画面颜色属性 */ 画面颜色属性 typedef struct { DH_TSECT stSect; BYTE byBrightness; BYTE byContrast; BYTE bySaturation; BYTE byHue; BYTE byGain; BYTE byReserved[3]; } DH_COLOR_CFG, *LPDH_COLOR_CFG; // // // // // 亮度 0-100 对比度 0-100 饱和度 0-100 色度 0-100 增益 0-100

第 82 页 共 93 页

网络客户端 SDK 编程手册

/* 图像通道属性结构体 */ typedef struct { DWORD char DH_VIDEOENC_OPT DH_VIDEOENC_OPT DH_COLOR_CFG DH_ENCODE_WIDGET DH_ENCODE_WIDGET DH_ENCODE_WIDGET BYTE

dwSize; szChannelName[DH_CHAN_NAME_LEN]; stMainVideoEncOpt[DH_REC_TYPE_NUM]; stAssiVideoEncOpt[DH_N_ENCODE_AUX]; stColorCfg[DH_N_COL_TSECT]; stTimeOSD; stChannelOSD; stBlindCover[DH_N_COVERS]; byBlindEnable;

// 区域遮盖开关 0x00 不使能遮盖,0x01 仅遮盖预览,0x10 仅 遮盖录像,0x11 都遮盖 BYTE byReserved[3]; } DHDEV_CHANNEL_CFG, *LPDHDEV_CHANNEL_CFG; ************************************************************************************* 预览图像参数 /* 预览图像参数 */ typedef struct { DWORD dwSize; DH_VIDEOENC_OPT stPreView; DH_COLOR_CFG stColorCfg[DH_N_COL_TSECT]; }DHDEV_PREVIEW_CFG; *************************************************************************************** 语音对讲音频属性结构体-未实现,待扩展 *************************************************************************************** typedef struct { //音频输入参数 BYTE byInFormatTag; BYTE byInChannels; WORD wInBitsPerSample; DWORD dwInSamplesPerSec; //音频输出参数 BYTE byOutFormatTag; BYTE byOutChannels; WORD wOutBitsPerSample; DWORD dwOutSamplesPerSec; } DHDEV_TALK_CFG, *LPDHDEV_TALK_CFG; //编码类型,如 PCM //声道数 //采样深度 //采样率 //编码类型,如 PCM //声道数 //采样深度 //采样率

第 83 页 共 93 页

网络客户端 SDK 编程手册

*************************************************************************************** 定时录象 *************************************************************************************** typedef struct { DWORD dwSize; DH_TSECT stSect[DH_N_WEEKS][DH_N_REC_TSECT]; BYTE byPreRecordLen; BYTE byRedundancyEn; BYTE byReserved[2]; } DHDEV_RECORD_CFG, *LPDH_RECORD_CFG; //预录时间,单位是 s,0 表示不预录 //录像冗余开关

************************************************************************************ 报警配置 ************************************************************************************ 消息触发配置 当设备产生消息,譬如产生一个输入报警,或者视频丢失时,需要做相应的处理. 此处定义如何处理一个消息 #define DH_ALARM_UPLOAD 0x00000001 #define DH_ALARM_RECORD 0x00000002 #define DH_ALARM_PTZ 0x00000004 #define DH_ALARM_MAIL 0x00000008 #define DH_ALARM_TOUR 0x00000010 #define DH_ALARM_TIP 0x00000020 #define DH_ALARM_OUT 0x00000040 #define DH_MOTION_ROW 12 #define DH_MOTION_COL 16 typedef struct { 消息处理方式,可以同时多种处理方式,包括 * 0x00000001 - 网络:上传管理服务器 * 0x00000002 - 录像:触发 * 0x00000004 - 云台联动 * 0x00000008 - 发送邮件 * 0x00000010 - 设备本地报警轮巡 * 0x00000020 - 设备提示使能 * 0x00000040 - 设备报警输出使能 /*当前报警所支持的处理方式*/ DWORD dwActionMask; /* 触发动作, 具体动作所需要的参数在各自的配置中体现,如报警录像长度,设置为 10 秒,可以 在报警配置中设置*/ DWORD dwActionFlag; /* 报警(录象)持续时间 */ DWORD dwDuration;

第 84 页 共 93 页

网络客户端 SDK 编程手册

/* 报警触发的输出通道,报警触发的输出,为 1 表示触发该输出 */ BYTE byRelAlarmOut[DH_MAX_ALARMOUT_NUM]; /*联动录象*/ BYTE byRecordChannel[DH_MAX_VIDEO_IN_NUM]; // 报警触发的录象通道,为 1 表示触发该通道 DWORD dwPreRecLen; //预录时间,单位是秒 /* 云台联动动作:0.不联动, 1.转到预置点, 2.巡航, 3.轨迹, 4.线扫 */ BYTE byPtzType[DH_MAX_VIDEO_IN_NUM]; /* 调用的云台预置点序号/巡航组号/轨迹序号/线扫序号,各通道可不同设置 */ BYTE byPtzNo[DH_MAX_VIDEO_IN_NUM]; } DH_MSG_HANDLE; /* 外部报警 */ typedef struct { BYTE BYTE BYTE DH_TSECT byAlarmType; //报警器类型,0:常开,1:常闭 byAlarmEn; //报警使能 byReserved[2]; stSect[DH_N_WEEKS][DH_N_REC_TSECT]; // 处理方式

DH_MSG_HANDLE struHandle; } DH_ALARMIN_CFG,*LPDHDEV_ALARMIN_CFG; /* 动态检测报警 */ typedef struct { BYTE BYTE WORD BYTE DH_TSECT byMotionEn; byReserved;

// 动态检测报警使能

wSenseLevel; //灵敏度 byDetected[DH_MOTION_ROW][DH_MOTION_COL]; //检测区域,共 12*16 块区域 stSect[DH_N_WEEKS][DH_N_REC_TSECT]; //处理方式

DH_MSG_HANDLE struHandle; }DH_MOTION_DETECT_CFG; /* 视频丢失报警 */ typedef struct { BYTE BYTE DH_TSECT

byAlarmEn; //视频丢失报警使能 byReserved[3]; stSect[DH_N_WEEKS][DH_N_REC_TSECT]; // 处理方式

DH_MSG_HANDLE struHandle; } DH_VIDEO_LOST_CFG;

第 85 页 共 93 页

网络客户端 SDK 编程手册

/* 图像遮挡报警 */ typedef struct { BYTE BYTE BYTE DH_TSECT byBlindEnable; // 使能 byBlindLevel; // 灵敏度 1-6 byReserved[2]; stSect[DH_N_WEEKS][DH_N_REC_TSECT]; // 处理方式

DH_MSG_HANDLE struHandle; } DH_BLIND_CFG; /* 硬盘消息 内部报警 */ 硬盘消息(内部报警 内部报警) typedef struct { BYTE BYTE DH_TSECT DH_MSG_HANDLE BYTE BYTE DH_TSECT DH_MSG_HANDLE BYTE BYTE DH_TSECT

byNoDiskEn; // 无硬盘时报警 byReserved_1[3]; stNDSect[DH_N_WEEKS][DH_N_REC_TSECT]; struHandle; // 处理方式 byLowCapEn; // 硬盘低容量时报警 byReserved_2[3]; stLCSect[DH_N_WEEKS][DH_N_REC_TSECT]; struLCHandle; //处理方式

byDiskErrEn; // 硬盘故障报警 byReserved_3[3]; stEDSect[DH_N_WEEKS][DH_N_REC_TSECT]; // 处理方式

DH_MSG_HANDLE struEDHandle; } DH_DISK_ALARM_CFG; /* 报警布防 */ typedef struct { DWORD dwSize; DH_ALARMIN_CFG DH_MOTION_DETECT_CFG DH_VIDEO_LOST_CFG DH_BLIND_CFG DH_DISK_ALARM_CFG //可能还有设备异常 } DHDEV_ALARM_SCHEDULE;

struAlarmIn[DH_MAX_ALARM_IN_NUM]; struMotion[DH_MAX_VIDEO_IN_NUM]; struVideoLost[DH_MAX_VIDEO_IN_NUM]; struBlind[DH_MAX_VIDEO_IN_NUM]; struDiskAlarm;

第 86 页 共 93 页

网络客户端 SDK 编程手册

*********************************************************************************** 网络配置 *********************************************************************************** /*以太网配置 以太网配置*/ 以太网配置 typedef struct { char sDevIPAddr[DH_MAX_IPADDR_LEN]; char sDevIPMask[DH_MAX_IPADDR_LEN]; char sGatewayIP[DH_MAX_IPADDR_LEN]; /* 10M/100M 自适应,索引 * 1-10MBase - T * 2-10MBase-T 全双工 * 3-100MBase - TX * 4-100M 全双工 * 5-10M/100M 自适应 */ DWORD dwNetInterface; char byMACAddr[DH_MACADDR_LEN]; } DH_ETHERNET; /* 远程主机配置 */ typedef struct { BYTE BYTE byEnable; byReserved; // 连接使能 // 远程主机 端口 //远程主机 IP 地址 //远程主机 用户名 //远程主机 密码 // DVR IP 地址 //DVR IP 地址掩码 // 网关地址

//NSP // MAC 地址,只读

WORD wHostPort; char sHostIPAddr[DH_MAX_IPADDR_LEN]; char sHostUser[DH_MAX_USER_NAMELEN]; char sHostPassword[DH_MAX_USER_PSWLEN]; }DH_REMOTE_HOST; /* 邮件配置 */ typedef struct { char sMailIPAddr[DH_MAX_IPADDR_LEN]; WORD wMailPort; WORD wReserved; char sUserName[DH_MAX_NAME_LEN]; char sUserPsw[DH_MAX_NAME_LEN]; char sDestAddr[DH_MAX_MAIL_ADDR_LEN]; char sCcAddr[DH_MAX_MAIL_ADDR_LEN]; char sBccAddr[DH_MAX_MAIL_ADDR_LEN]; char sSubject[DH_MAX_MAIL_SUBJECT_LEN]; }DH_MAIL_CFG;

//邮件服务器 IP 地址 //邮件服务器端口 // 保留 // 用户名 // 用户密码 //目的地址 //抄送地址 //暗抄地址 //标题

第 87 页 共 93 页

网络客户端 SDK 编程手册

/*网络配置结构体 网络配置结构体*/ 网络配置结构体 typedef struct{ DWORD char WORD WORD WORD WORD WORD WORD DH_ETHERNET DH_REMOTE_HOST DH_REMOTE_HOST DH_REMOTE_HOST DH_REMOTE_HOST DH_REMOTE_HOST DH_REMOTE_HOST DH_REMOTE_HOST char DH_REMOTE_HOST char DH_REMOTE_HOST DH_MAIL_CFG } DHDEV_NET_CFG;

dwSize; // 设备主机名 // TCP 最大连接数(一般指视 频数据请求数) wTcpPort; // TCP 帧听端口 wUdpPort; // UDP 侦听端口 wHttpPort; // HTTP 端口号 wHttpsPort; // HTTPS 端口号 wSslPort; // SSL 端口号 stEtherNet[DH_MAX_ETHERNET_NUM];// 以太网口 struAlarmHost; // 报警服务器 struLogHost; // 日志服务器 struSmtpHost; //SMTP 服务器 struMultiCast; // 多播组 struNfs; //NFS 服务器 struFtpServer; //远程 Ftp 服务器 struPppoe; //PPPoE 服务器 sPppoeIP[DH_MAX_IPADDR_LEN]; // PPPoE 注册返回的 IP struDdns; // DDNS 服务器 sDdnsHostName[DH_MAX_HOST_NAMELEN]; // DDNS 主机名 struDns; //DNS 服务器 struMail; //邮件配置 sDevName[DH_MAX_NAME_LEN]; wTcpMaxConnectNum;

*************************************************************************************** 串口配置 *************************************************************************************** /* 串口基本属性 */ typedef struct { BYTE BYTE BYTE BYTE byDataBit; byStopBit; byParity; byBaudRate; //数据位 0-5,1-6,2-7,3-8 //停止位 0-1 位, 1-1.5 位, 2-2 位 //校验位 0-no, 1-odd, 2-even //{0-300,1-600,2-1200,3-2400,4-4800 5-9600,6-19200,7-38400,8-57600,9-115200}

} DH_COMM_PROP;

第 88 页 共 93 页

网络客户端 SDK 编程手册

/* 485 解码器配置 */ typedef struct{ DH_COMM_PROP struComm; WORD WORD } DH_485_CFG; wProtocol; wDecoderAddress; //< 协议类型 保存协议的下标,动态变化 //解码器地址:0 – 255

/* 232 串口配置 */ typedef struct{ DH_COMM_PROP struComm; BYTE } DH_RS232_CFG; byFunction; // 串口功能,对应串口配置取到的功能名列表

/* 串口配置结构体 */ typedef struct{ DWORD DWORD char DH_485_CFG DWORD char dwSize; //解码器协议 dwDecProListNum; //协议个数 DecProName[DH_MAX_DECPRO_LIST_SIZE][DH_MAX_NAME_LEN]; //协议名列表 stDecoder[DH_MAX_DECODER_NUM];//各解码器当前属性 dw232FuncNameNum; //232 功能个数 s232FuncName[DH_MAX_232FUNCS][DH_MAX_NAME_LEN]; //功能名列表 //各 232 串口当前属性

DH_RS232_CFG st232[DH_MAX_232_NUM]; } DHDEV_COMM_CFG;

第 89 页 共 93 页

网络客户端 SDK 编程手册

5 示例功能实现
根据需要多机连接自定义一个连接设备信息表 DeviceList,用来保存当前的连接设 备和状态, 对多窗口显示需要自定义一个显示窗口信息表 SplitList,用来记录打开图像 的信息和状态,具体结构根据功能需要增加,这里只定义数据结构基本内容;
Typedef struct DeviceNode{ LONG LoginID; NET_DEVICEINFO Info; }; Typedef struct SplitNode{ Int Type; LONG iHandle; Void *Param; }; //显示类型, 可以是监视/回放/预览 //打开显示句柄,(监视通道句柄/回放句柄/预览句柄) //根据不同的显示类型,定义不同的参数 //登录设备 ID /设备信息

在应用程序初始化时调用 CLIENT_Init(),其中断线回调用来处理当设备端口时应 用程序需要做出的断开响应更新当前状态; 调用 CLIENT_SetDVRMessCallBack()设置消息回调,其中回调函数用来处理设备状 态的实时返回,如报警信息; 调用 CLIENT_RigisterDrawFun()设置画板回调,其中回调函数用来处理叠加图像信 息显示字符;如自定义显示 osd 时间或通道名称; 在应用程序退出时调用 CLIENT_Cleanup()释放 sdk 内部的资源; 以下为具体功能实现

5.1 连接设备
调用 CLIENT_Login()实现设备登录连接,其中需要输入设备 IP 等参数,返回登录 ID 和输出参数设备信息,赋值得到 DeviceNode,增加到设备表中;

5.2 报警信息获取
要实现某设备报警信息获取必须在系统初始化时设置消息回调 CLIENT_SetDVRMessCallBack(),在设备连接后调用该设备 CLIENT_StartListen(),在 不需要消息回调时或设备断开时调用 CLIENT_StopListen()或 CLENT_StartListenEx, 在消息回调函数中根据参数 lCommand 确定报警类型, 如果调用的侦听接口为CLIENT_StartListen,则lCommand的可能值是: , -OMM_ALARM:填充数据为一个NET_CLIENT_STATE结构体。 -SHELTER_ALARM: 填充数据为16个字节, 每个字节表示一个视频通道的遮挡报警状 态,1为有报警,0为无报警 -DISK_FULL_ALARM,填充数据为1个DWORD值,1表示硬盘满,0表示硬盘未满。 M -DISK_ERROR_ALARM: 填充数据为1个DWORD值, 按位表示最多32个硬盘的故障报警,
第 90 页 共 93 页

网络客户端 SDK 编程手册

每位为1表示有报警,为0表示无报警。 -SOUND_DETECT_ALARM:填充数据为16个字节,每个字节表示一个视频通道的音频 报警状态,1为有报警,0为无报警 如果调用的侦听接口为CLENT_StartListenEx,则lCommand的可能值是: , -DH_ALARM_ALARM_EX:填充数据为16个字节,每个字节表示一个报警通道的报警 状态,1为有报警,0为无报警。 -DH_MOTION_ALARM_EX:填充数据为16个字节,每个字节表示一个视频通道的动态 : 检测报警状态,1为有报警,0为无报警。 -DH_VIDEOLOST_ALARM_EX:填充数据为16个字节,每个字节表示一个视频通道的 : 视频丢失报警状态,1为有报警,0为无报警。 -DH_SHELTER_ALARM_EX:填充数据为16个字节,每个字节表示一个视频通道的遮 挡(黑屏)报警状态,1为有报警,0为无报警。 -DH_SOUND_DETECT_ALARM_EX:填充数据为16个字节,每个字节表示一个视频通道 : 的音频检测报警状态,1为有报警,0为无报警。 -DH_DISKFULL_ALARM_EX:填充数据为1个字节,1为有硬盘满报警,0为无报警。 : -DH_DISKERROR_ALARM_EX:填充数据为32个字节,每个字节表示一个硬盘的故障 : 报警状态,1为有报警,0为无报警。

5.3 系统配置
目前暂时用控件,先注册配置控件好,在需要的页面插入该控件,实现时要先将设备配 置信息结构 In_DeviceInfo 配置控件有说明)传人控件 ,然后实 现 OnAskNHData 和 OnSaveNHData 事件,一个获取配置信息显示,一个保存配置修改,具体根据事件中的命令参 数 获 取 各 种 不 同 的 配 置 , 分 别 可 以 调 用
CLIENT_QueryDeviceTime(),CLIENT_QuerySystemInfo(),CLIENT_QueryChannelNam e(),CLIENT_QueryComProtocol(),CLIENT_QueryLog(),CLIENT_QueryConfig() 等 接

口,具体参照接口说明和配置控件说明;保存接口也一样;

5.4 实时监视
在设备连接的前提下,选择某个通道显示到指定的窗口,调用 CLIENT_RealPlay()传 入指定窗口的窗口句柄参数 hWnd,返回监视句柄, 按照多窗口的设计需要应将相关的信 息赋值到 SplitNode 结构,并标注本窗口的显示类型和定义相应参数结构,以便显示操作 处理;

5.5 数据保存
可以根据监视句柄直接调用 CLIENT_SaveRealData()将监视数据保存到指定文件; 也 可 以 设 置 回 调 CLIENT_SetRealDataCallBack(), 处 理 回 调 函 数 fRealDataCallBack()中不同的数据类型的数据,可以保存形成不同类型的数据文件;
第 91 页 共 93 页

网络客户端 SDK 编程手册

5.6 回放/下载和进度指示 回放/
调用 CLIENT_QueryRecordFile()先查询到录像文件信息,根据需要形成文件列表,再 调用 CLIENT_PlayBackByRecordFile()输入录像文件信息播放相应的文件显示到指定 的窗口, 按照多窗口的设计需要应将相关的信息赋值到 SplitNode 结构,并标注本窗口的 显示类型和定义相应参数结构,以便显示操作处理; 下载调用 CLIENT_DownloadByRecordFile(),同样也返回下载句柄; 其中回放和下载的进度都可以通过其中的回调函数获取,根据不同的回放/下载句柄 分别得到当前的进度;

5.7 播放控制
根 据 不 同 的 控 制 需 要 和 输 入 不 同 回 放 句 柄 调 用 CLIENT_PausePlayBack(), CLIENT_SeekPlayBack(),CLIENT_StopPlayBack(),CLIENT_StopPlayBack() 等进行各 种播放控制;

5.8 预览
在 设 备 连 接 的 前 提 下 , 选 择 某 个 通 道 显 示 到 指 定 的 窗 口 hWnd, 调 用 CLIENT_MultiPlay () 返回监视句柄, 按照多窗口的设计需要应将相关的信息赋值到 SplitNode 结构,并标注本窗口的显示类型和定义相应参数结构,以便显示操作处理;

5.9 字符叠加
在 初 始 化 时 调 用 的 CLIENT_RigisterDrawFun() 的 回 调 处 理 实 现 中 通 过 lPlayHandle 参数 根据 SplitNode 中的 Type 的值,获取不同显示类型,根据需要可以 hDC 叠加不同的字 符;其中 hDC 是对当前画面整屏窗口有效,如叠加字符,可以处理为 hDC->textout(x,y,…); 其中 x,y 为坐标。

第 92 页 共 93 页


相关文章:
大华网络SDK开发手册
92 第 6 页共 93 页 网络客户端 SDK 编程手册 1简 介 1.1 概述欢迎使用大华网络 SDK 编程手册,网络客户端软件开发包(DVR 客户端 SDK)是 大华网络硬盘录像...
大华播放SDK开发手册
大华播放SDK开发手册_IT/计算机_专业资料。大华播放库sdk 开发编程文档 大华播放 大华播放 SDK 编程手册 VERSION 3.28.2(Build 100129) 2010-01-29 版权所有 ...
大华公安平台功能介绍
暂无评价|0人阅读|0次下载|举报文档大华公安平台功能介绍_计算机硬件及网络_IT/...支持非国标设备 SDK 接入。 支持 ONVIF、PSIA 等协议视频编码设备的接入。 支持...
大华
暂无评价|0人阅读|0次下载|举报文档大华_电子/电路_工程科技_专业资料。大华参数...监控环境; 支持 iphone、 ipad、 android 移动客户端应用;支持平台 SDK 开发包...
大华云存储技术白皮书
暂无评价|0人阅读|0次下载|举报文档大华云存储技术白皮书_互联_IT/计算机_专业...通过安装大华云 存储驱动,可以基于 SDK 模拟出一个本地硬盘,用户可以像访问本...
DSS7016_初始配置手册
DSS7016 初始配置手册 V1.0.0 浙江大华技术股份...(不带包装) 安装方式 二次开发 DSS7016-D 64位4...标准19英尺机架式安装 提供平台SDK ;标配一块1T硬盘...
大华报警主机和门禁接入方案
暂无评价|0人阅读|0次下载|举报文档大华报警主机和门禁接入方案_计算机硬件及网络...SDK 库,为了体现大华平台软件的开发性和兼容性,我们提供报警主机门禁转换器方 ...
大华监控平台一体机 DSS-7016
暂无评价|0人阅读|0次下载|举报文档 大华监控平台一体机 DSS-7016_计算机硬件及...SDK 开发包 支持前液晶板系统服务状态显示和系统基本参数设置 网络交换总能能力>...
全高清网络监控方案
暂无评价|0人阅读|0次下载|举报文档全高清网络监控...兼容大华 SDK,无缝接入其他平台。 支持最新的 ONVIF...尽量避免采用线缆连接方式 新开发机箱,支持大部分标准...
大华球机设置方法
暂无评价|0人阅读|0次下载|举报文档大华球机设置方法_计算机硬件及网络_IT/计算机_专业资料。3.大华球机 -3.1.设置协议、波特率、ID 号 设置协议、波特率、ID 号...
更多相关标签:
大华 | 大华网络sdk | 大华sdk 开发文档 | 大华sdk 二次开发 | 大华sdk java开发 | 大华sdk开发包 | 大华网络摄像头sdk | ffmpeg sdk 开发手册 |