大华网络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功能设置或信息获取
设置连接等待时间 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()
第 10 页 共 93 页 网络客户端SDK编程手册
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()
第 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 IO控制 CLIENT_QueryIOControlState CLIENT_IOControl
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 DH_DEVSTATE_COMM_ALARM #define DH_DEVSTATE_SHELTER_ALARM #define DH_DEVSTATE_RECORDING #define DH_DEVSTATE_DISK
0x0001 0x0002 0x0003 0x0004
//查询普通报警
//查询遮挡报警 //查询录象状态 //查询硬盘状态
? 错误类型代号,用于GetLastError函数的返回
#define _EC(x)
(0x80000000|x) 0 -1 _EC(1) _EC(2) _EC(3)
//没有错误 //未知错误
//Windows系统出错 //网络错误
//设备协议不匹配
#define NET_NOERROR #define NET_ERROR #define NET_SYSTEM_ERROR #define NET_NETWORK_ERROR #define NET_DEV_VER_NOMATCH
第 14 页 共 93 页 网络客户端SDK编程手册
#define NET_INVALID_HANDLE _EC(4) #define NET_OPEN_CHANNEL_ERROR _EC(5) #define NET_CLOSE_CHANNEL_ERROR _EC(6) #define NET_ILLEGAL_PARAM _EC(7) #define NET_SDK_INIT_ERROR _EC(8) #define NET_SDK_UNINIT_ERROR _EC(9) #define NET_RENDER_OPEN_ERROR _EC(10) #define NET_DEC_OPEN_ERROR _EC(11) #define NET_DEC_CLOSE_ERROR _EC(12) #define NET_MULTIPLAY_NOCHANNEL _EC(13) #define NET_TALK_INIT_ERROR _EC(14) #define NET_TALK_NOT_INIT _EC(15) #define NET_TALK_SENDDATA_ERROR _EC(16) #define NET_REAL_ALREADY_SAVING _EC(17) #define NET_NOT_SAVING _EC(18) #define NET_OPEN_FILE_ERROR _EC(19) #define NET_PTZ_SET_TIMER_ERROR _EC(20) #define NET_RETURN_DATA_ERROR _EC(21) #define NET_INSUFFICIENT_BUFFER _EC(22) #define NET_NOT_SUPPORTED _EC(23) #define NET_NO_RECORD_FOUND _EC(24) #define NET_NOT_AUTHORIZED _EC(25) #define NET_NOT_NOW _EC(26) #define NET_NO_TALK_CHANNEL _EC(27) #define NET_NO_AUDIO _EC(28) #define NET_AUDIOENCODE_NOTINI _EC(59) #define NET_DATA_TOOLONGH _EC(60) #define NET_LOGIN_ERROR_PASSWORD _EC(100) #define NET_LOGIN_ERROR_USER _EC(101) #define NET_LOGIN_ERROR_TIMEOUT _EC(102) #define NET_LOGIN_ERROR_RELOGGIN _EC(103) #define NET_LOGIN_ERROR_LOCKED _EC(104) #define NET_LOGIN_ERROR_BLACKLIST _EC(105) #define NET_LOGIN_ERROR_BUSY _EC(106) #define NET_LOGIN_ERROR_CONNECT _EC(107) #define NET_LOGIN_ERROR_NETWORK _EC(108) #define NET_RENDER_SOUND_ON_ERROR _EC(120) #define NET_RENDER_SOUND_OFF_ERROR _EC(121) #define NET_RENDER_SET_VOLUME_ERROR _EC(122) #define NET_RENDER_ADJUST_ERROR _EC(123) #define NET_RENDER_PAUSE_ERROR _EC(124) #define NET_RENDER_SNAP_ERROR _EC(125) #define NET_RENDER_STEP_ERROR _EC(126) //句柄无效 //打开通道失败 //关闭通道失败 //用户参数不合法 //SDK初始化出错 //SDK清理出错
//申请render资源出错 //打开解码库出错 //关闭解码库出错
//多画面预览中检测到通道数为0 //录音库初始化失败 //录音库未经初始化 //发送音频数据出错
//实时数据已经处于保存状态 //未保存实时数据 //打开文件出错
//启动云台控制定时器失败 //对返回数据的校验出错 //没有足够的缓存
//当前SDK未支持该功能 //查询不到录象 //无操作权限 //暂时无法执行 //未发现对讲通道 //未发现音频
//音频编码接口没有成功初始化 //数据过长 //密码不正确 //帐户不存在
//等待登录返回超时 //帐号已登录 //帐号已被锁定
//帐号已被列为黑名单 //资源不足,系统忙 //连接主机失败\//网络连接失败\
//Render库打开音频出错 //Render库关闭音频出错 //Render库控制音量出错 //Render库设置画面参数出错 //Render库暂停播放出错 //Render库抓图出错 //Render库步进出错
第 15 页 共 93 页 网络客户端SDK编程手册
#define NET_RENDER_FRAMERATE_ERROR _EC(127) //Render库设置帧率出错 #define NET_CONFIG_DEVBUSY _EC(999) //暂时无法设置 #define NET_CONFIG_DATAILLEGAL _EC(1000) //配置数据不合法
? 回调函数类型
#define COMM_ALARM #define SHELTER_ALARM #define DISK_FULL_ALARM #define DISK_ERROR_ALARM #define 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 sSerialNumber[SERIALNO_LEN];
BYTE byAlarmInPortNum; BYTE byAlarmOutPortNum; BYTE byDiskNum; BYTE 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; //通道号 char filename[128]; //文件名 unsigned int size; //文件长度 NET_TIME starttime; //开始时间 NET_TIME endtime; //结束时间 unsigned int driveno; //磁盘号 unsigned int startcluster; //起始簇号 } 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-录像 BYTE bySignalStatic; //连接的信号状态,0-正常,1-信号丢失
BYTE byHardwareStatic; //通道硬件状态,0-正常,1-异常,例如DSP死掉 char reserve; //暂时无效
DWORD dwBitRate; //实际码率,暂时无效
DWORD dwLinkNum; //客户端连接的个数, 暂时无效 DWORD dwClientIP[MAX_LINK]; //客户端的IP地址,暂时无效 }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 MAX_RIGHT_NUM #define MAX_GROUP_NUM #define MAX_USER_NUM #define RIGHT_NAME_LENGTH #define USER_NAME_LENGTH #define USER_PSW_LENGTH #define MEMO_LENGTH
100 20 200 32 8 8 32
typedef struct { DWORD dwID;
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]; DWORD dwRightNum;
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 };
//日期
接口文档 数字视频录像机网络服务编程手册 公开 //类型
//标记, 0x00 正常,0x01 扩展,0x02 数据 //数据 //内容
// 秒 // 分 // 时 // 日 // 月 // 年 1-60 1-60 1-24 1-31 1-12 2000-2063
type; flag; data; context[8];
第 20 页 共 93 页 网络客户端SDK编程手册
2. 日志的类型
enum dh_log_t {
LOG_REBOOT = 0x0000, LOG_SHUT,
LOG_CONFSAVE = 0x0100, LOG_CONFLOAD,
//system logs //config logs
LOG_FSERROR = 0x0200, //文件系统错误 LOG_HDD_WERR, //硬盘写错误 LOG_HDD_RERR, //硬盘读错误 LOG_HDD_TYPE, //设置硬盘类型 LOG_HDD_FORMAT, //格式化硬盘 LOG_ALM_IN = 0x0300, //alarm logs //record
LOG_MANUAL_RECORD_START = 0x0400, 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, };
//录像下载 //录像回放
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 CLIENT_Init(fDisConnect cbDisConnect,
DWORD dwUser); ? 函数说明:初始化SDK, 在所有的SDK函数之前调用 ? 参数说明:
cbDisConnect
断线回调函数,回调出当前网络已经断开的设备, 对主动断开的设备不回调; 设置为0时禁止回调
dwUser
用户数据
第 22 页 共 93 页 网络客户端SDK编程手册
? 回调函数参数说明:
lLoginID
CLIENT_Login的返回值
pchDVRIP
设备IP
nDVRPort
端口 dwUser
用户数据,就是上面输入的用户数据
? 返回值:成功返回TRUE,不成功返回FALSE ? 相关函数:CLIENT_Cleanup
? 典型应用:在应用程序初始化时调用
3. ? ? ? ? ?
4.
CLIENT_API void CLIENT_SetConnectTime(int nWaitTime, int nTryTimes);
CLIENT_API void CLIENT_Cleanup();
函数说明:清空SDK, 释放占用的资源,在所有的SDK函数之后调用。 参数:无 返回值:无
相关函数:CLIENT_Init
典型应用:在应用程序关闭时调用
? 函数说明:设置与设备的连接等待时间
? 调用顺序无关,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结构体。 -SHELTER_ALARM:填充数据为16个字节,每个字节表示一个视频通道的遮挡报警状态,1为有报警,0为无报警
-DISK_FULL_ALARM,填充数据为1个DWORD值,1表示硬盘满,0表示硬盘未满。
-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 ? 典型应用:在设备连接后调用本函数打开侦听
9. CLIENT_API BOOL CLIENT_StopListen(LONG lLoginID); ? 函数说明:停止对某个设备侦听消息 ? 参数说明:
lLoginID
CLIENT_Login返回值
? 返回值:成功返回TRUE,失败返回FALSE
? 相关函数:CLIENT_StartListen , CLENT_StartListenEx ? 典型应用:参见demo程序
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 lLoginID, int
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
? 典型应用:根据登录时获取到的设备信息,调用本接口,就可以打开任何有效的
一路实时监视,显示到指定的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_PlayBackByRecordFileCLIENT_PlayBackByRecordFileEx、CLIENT_PlayBackByTimeCLIENT_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_PlayBackByRecordFileCLIENT_PlayBackByRecordFileEx、CLIENT_PlayBackByTimeCLIENT_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_PlayBackByRecordFileCLIENT_PlayBackByRecordFileEx、CLIENT_PlayBackByTimeCLIENT_PlayBackByTimeEx
、、
? 典型应用:修改实时监视或回放的音量值
4.7 数据保存
23. CLIENT_API BOOL CLIENT_SaveRealData(LONG lRealHandle,
const char *pchFileName); ? 函数说明:开始保存实时监视数据,对前端设备监视的图像进行数据保存,形成
录像文件,此数据是设备端传送过来的原始视频数据 ? 参数说明:
lRealHandle
CLIENT_RealPlay的返回值 pchFileName
实时监视保存文件名
? 返回值:成功返回TRUE,失败返回FALSE
? 相关函数:CLIENT_StopSaveRealData、CLIENT_RealPlay、
CLIENT_RealPlayEx
? 典型应用:在监视图像的打开之后随时都可以调用将监视数据保存到文件,
也可以关闭之后再打开形成不同的文件;
24. CLIENT_API BOOL CLIENT_StopSaveRealData(LONG
lRealHandle); ? 函数说明:停止保存实时监视数据,关闭保存的文件 ? 参数说明:
lRealHandle
CLIENT_RealPlay的返回值
? 返回值:成功返回TRUE,失败返回FALSE ? 相关函数:CLIENT_SaveRealData、CLIENT_RealPlay、CLIENT_RealPlayEx
第 33 页 共 93 页 网络客户端SDK编程手册
? 典型应用:停止保存监视数据;
typedef void(CALLBACK *fRealDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, DWORD dwUser);
25. CLIENT_API BOOL CLIENT_SetRealDataCallBack(LONG lRealHandle, fRealDataCallBack cbRealData, DWORD dwUser); ? 函数说明:设置实时监视数据回调,给用户提供设备流出的数据,当
cbRealData为NULL时结束回调数据 ? 参数说明:
lRealHandle
CLIENT_RealPlay的返回值
cbRealData
回调函数,用于传出设备流出的实时数据
dwUser
用户数据
?
回调函数参数说明: lRealHandle
CLIENT_RealPlay的返回值
dwDataType
标识回调出来的数据类型, 一旦设置回调,是以下4种数据都会同时回调出来,用户可以根据需要有选择的处理部分数据; 0 原始数据(与SaveRealData保存的数据一致) 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 encode; // 编码类型
BYTE frametype; // I = 0, P = 1, B = 2... BYTE format; // PAL - 0, NTSC - 1
BYTE size; // CIF - 0, HD1 - 1, 2CIF - 2, D1 - 3,
VGA - 4, QCIF - 5, QVGA - 6 DWORD fourcc; // 如果是H264编码则总为0,MPEG4这里是填写
FOURCC('X','V','I','D'); DWORD reserved; // 保留 };
当数据类型是PCM数据的时候param也是一个结构体指针:
Typedef struct tagPCMDataParam {
BYTE channels; // 声道数 BYTE samples; // 采样 0 - 8000, 1 - 11025, 2 - 16000, 3 - 22050,
4 - 32000, 5 - 44100, 6 - 48000 BYTE depth; // 采样深度 取值8或者16等。直接表示 BYTE param1; // 0 - 指示无符号,1-指示有符号 DWORD reserved; // 保留 };
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_PausePlayBackCLIENT_SeekPlayBack、CLIENT_StopPlayBackCLIENT_GetPlayBackOsdTime、CLIENT_StepPlayBackCLIENT_GetFramePlayBack、CLIENT_SetFramePlayBackCLIENT_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_API int CALL_METHOD CLIENT_FindNextFile(LONG
lFindHandle,LPNET_RECORDFILE_INFO lpFindData); ? 函数说明:查询下一条录像文件记录 ? 参数说明:
lFindHandle
CLIENT_FindFile的返回值
lpFindData
录象文件记录缓冲,用于输出查询到的录象文件记录
? 返回值:1:成功取回一条录象记录,0:录象记录已取完,-1:参数出错 ? 相关函数:CLIENT_FindFile
? 典型应用:调用本接口之前应先调用CLIENT_FindFile以打开查询句柄。
32. CLIENT_API BOOL CALL_METHOD CLIENT_FindClose(LONG
lFindHandle); ? 函数说明:关闭录象查询句柄 ? 参数说明:
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编程手册
返回0 代表回调函数堵塞,这个会导致同一数据重复发送,即回放画
面会出现重复
返回-1 代表系统出错,将直接结束回放线程,慎用!
? 返回值:成功返回网络回放ID,失败返回0 ? 相关函数:CLIENT_Login、CLIENT_PausePlayBack,CLIENT_SeekPlayBack、
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);
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_GetPlayBackOsdTimeCLIENT_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 CLIENT_StepPlayBack(LONG lPlayHandle,
bool bStop); ? 函数说明:单步播放, 调用一次播放一帧图像,只有打开图像的函数参数
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_PlayBackByRecordFileExCLIENT_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_PlayBackByRecordFileExCLIENT_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_PlayBackByRecordFileExCLIENT_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_PlayBackByRecordFileExCLIENT_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 页