网络SDK开发手册.docx
《网络SDK开发手册.docx》由会员分享,可在线阅读,更多相关《网络SDK开发手册.docx(121页珍藏版)》请在冰豆网上搜索。
网络SDK开发手册
网络SDK开发手册
VERSION3.0.5.4(Build20120605)
2012-06-05
版权所有XX
前言
非常感谢您使用我们公司的设备,我们将为您提供最好的服务。
本手册可能包含技术上不准确的地方或印刷错误,欢迎指正。
我们将会定期更新手册的内容。
修订记录
日期
修订内容
2009.02.12
增加局域网内搜索设备接口H264_DVR_SearchDevice
2009.02.18
增加语音对讲相关接口H264_DVR_StartVoiceCom_MR,H264_DVR_VoiceComSendData,H264_DVR_StopVoiceCom,H264_DVR_SetTalkMode
2009.09.26
增加以下接口:
H264_DVR_StartDVRRecord,H264_DVR_StopDVRRecord,H264_DVR_SetSystemDateTime,H264_DVR_GetDVRWorkState,H264_DVR_ClickKey
2010.08.7
增加以下接口:
H264_DVR_StorageManage,H264_DVR_SendNetAlarmMsg,H264_DVR_StartAlarmCenterListen,
H264_DVR_StopAlarmCenterListen,H264_DVR_APIboolH264_DVR_DelRealDataCallBack,H264_DVR_APIlongH264_DVR_PlayBackByTime,H264_DVR_APIlongH264_DVR_GetFileByTime,H264_DVR_APIboolH264_DVR_PTZControlEx,H264_DVR_APIlongH264_DVR_GetDevConfig,H264_DVR_APIlongH264_DVR_SetDevCon,H264_DVR_APIlongH264_DVR_SetConfigOverNet
2011.06.27
增加以下接口:
H264_DVR_SetConnectTime,H264_DVR_APIlongCALL_METHODH264_DVR_SetConfigOverNet,H264_DVR_APIlongCALL_METHODH264_DVR_PauseRealPlay,H264_DVR_SetRealDataCallBack_V2,H264_DVR_FindFileByTime,H264_DVR_PlayBackByName_V2,H264_DVR_PlayBackByTime,H264_DVR_PlayBackByTimeEx,CALL_METHODH264_DVR_GetFileByTime,H264_DVR_CatchPic,H264_DVR_CatchPicInBuffer,H264_DVR_SerialWrite,H264_DVR_SerialRead,H264_DVR_GetDDNSInfo,H264_DVR_MakeKeyFrame
2011.09.03
增加以下接口:
H264_DVR_OpenTransComChannel,H264_DVR_CloseTransComChannel,H264_DVR_GetDeviceState
2011.09.27
增加数据结构:
SDK_CameraAbility,SDK_AllCameraParam
2011.10.10
增加以下接口:
H264_DVR_CatchPicUI
2011.11.21
增加已下接口:
(只用于网络与解码合并情况)
H264_DVR_OpenSound
H264_DVR_CloseSound
H264_DVR_LocalCatchPic
H264_DVR_StartLocalVoiceCom
H264_DVR_StartLocalRecord
H264_DVR_StopLocalRecord
H264_DVR_StartLocalPlay
H264_DVR_StopLocalPlay
H264_DVR_GetPlayPos
H264_DVR_SetPlayPos
H264_DVR_LocalPlayCtrl
H264_DVR_SetFileEndCallBack
H264_DVR_SetInfoFrameCallBack
H264_DVR_LocalGetColor
H264_DVR_LocalSetColor
增加结构体:
SDK_LoalPlayAction
改变结构体:
H264_DVR_FILE_DATA,H264_DVR_FINDINFO,H264_DVR_FINDINFO(加hWnd变量)
2012.5.18
增加以下接口
H264_DVR_SetLocalBindAddress
H264_DVR_StartUploadData
H264_DVR_StopUploadData
H264_DVR_StartActiveRigister
H264_DVR_StopActiveRigister
H264_DVR_SetSubDisconnectCallBack
增加登录类型枚举SocketStyle
主动注册数据结构H264_DVR_ACTIVEREG_INFO
2012.8.2
增加以下接口
H264_DVR_SetKeepLifeTim
2013.2.25
增加搜索设备协议枚举
SDK_TransferProtocol_V2
增加一下接口
H264_DVR_SearchDeviceEX
1.简介
1.1概述
欢迎使用我公司网络SDK编程手册,网络SDK是软件开发商在开发我司网络硬盘录像机监控联网应用时的开发套件。
本文档详细描述了开发包中各个函数实现的功能、接口及其函数之间的调用关系和示例实现。
开发包所包括的文件有:
网络库
NetSDK
头文件
NetSDK.lib
Lib文件
NetSDK.dll
接口库
辅助库
DllDeinterlace.dll
解码辅助库
H264Play.dll
解码辅助库
hi_h264dec_v.dll
解码辅助库
1.2适用性
⏹支持网络硬盘录像机的监视、回放、报警、远程配置、日志查询等功能。
⏹支持TCP传输模式,设备端同时支持10个TCP连接。
⏹可通过SDK回调接口开发流媒体转发、回放、报警等服务器程序。
⏹客户端可以采用多种分辨率进行图像预览,支持的分辨率包括:
QCIF、CIF、2CIF、、HalfD1、D1,VGA(640×480)等
⏹SDK在录像回放/下载时,同一登陆ID对于同一通道在同一时间回放和下载不可同时进行操作。
⏹SDK性能与设备的运行情况和运行客户端的计算机CPU能力密切相关,理论上能同时支持2000个用户注册;同时支持2000路网络预览和网络回放;同时支持2000路报警上传;在图象显示方面同时支持300路。
设计原则
1.3编程说明
⏹初始化和清除
1、使用网络客户端软件包首先调用H264_DVR_Init()对系统进行初始化,应用程序退出时调用H264_DVR_Cleanup()释放所有占用的资源。
2、大多数函数调用均应该在H264_DVR_Init()之后,H264_DVR_Cleanup()之前,而H264_DVR_GetLastError可以在任何时候调用等等。
⏹用户登录和注销
用户在访问前端设备之前必须通过调用H264_DVR_Login()登录到前端设备上,
如果登陆的软件是特殊的(不是web)可以调用H264_DVR_LoginEx()指定登陆的软件类型,登录成功后返回一个全局唯一的句柄。
此句柄就像一个会话通道,之后该用户可通过此句柄访问前端设备。
退出该会话时则通过H264_DVR_Logout()函数在前端设备上注销此句柄以终止该会话通道的使用。
建立连接与登录是同步的。
⏹心跳功能
在本开发包中提供自动心跳功能(20秒一次心跳)当设备断开能及时回调给客户端。
⏹同步与异步
异步通过设置回调函数的方式实现,网络数据通过回调函数传达到应用程序,有些异步在设置后返回请求句柄,结束请求时将请求句柄提供给SDK以注销相关资源。
⏹回调函数
一般都有dwUser参数,由用户自定义需要的数据,一般用来传入类对象指针,方便回调处理在类中实现,回调应用都可以采取这种方式。
1.4典型调用顺序
A.初始化
SDK初始化H264_DVR_Init()
B.SDK功能信息获取
设置报警消息回调H264_DVR_SetDVRMessCallBack()
C.登录连接设备
登入设备H264_DVR_Login()
H264_DVR_LoginEx()
报警消息订阅H264_DVR_SetupAlarmChan()
D.设备功能操作与信息获取
系统参数配置H264_DVR_GetDevConfig()
H264_DVR_SetDevConfig()
查询日志H264_DVR_FindDVRLog()
云台控制H264_DVR_PTZControl()
H264_DVR_PTZControlEx()
透明串口控制H264_DVR_OpenTransComChannel()
H264_DVR_CloseTransComChannel()
E.实时监视通道
打开监视通道H264_DVR_RealPlay()
H264_DVR_StopRealPlay()
监视数据回调保存H264_DVR_SetRealDataCallBack()
F.回放/下载通道
查询录像H264_DVR_FindFile()
H264_DVR_FindFileByTime()
回放及控制H264_DVR_PlayBackByName
H264_DVR_PlayBackByName_V2()
H264_DVR_PlayBackByTime()
H264_DVR_PlayBackByTimeEx()
H264_DVR_PlayBackControl()
H264_DVR_StopPlayBack()
下载H264_DVR_GetFileByName()
H264_DVR_GetFileByTime()
H264_DVR_GetDownloadPos()
H264_DVR_StopGetFile()
G.远程控制
远程升级H264_DVR_Upgrade()
H264_DVR_GetUpgradeState()
H264_DVR_CloseUpgradeHandle()
重启/清除日志H264_DVR_ControlDVR()
H.注销断开设备
停止报警消息订阅H264_DVR_CloseAlarmChan()
断开连接H264_DVR_Logout()
I.释放SDK资源
SDK退出H264_DVR_Cleanup()
2数据结构定义
2.1客户端数据结构
//云台操作类型
typedefenumPTZ_ControlType
{
TILT_UP=0,//上
TILT_DOWN,//下
PAN_LEFT,//左
PAN_RIGHT,//右
PAN_LEFTTOP,//左上
PAN_LEFTDOWN,//左下
PAN_RIGTHTOP,//右上
PAN_RIGTHDOWN,//右下
ZOOM_IN,//变倍大
ZOOM_OUT,//变倍小
FOCUS_FAR,//焦点后调
FOCUS_NEAR,//焦点前调
IRIS_OPEN,//光圈扩大
IRIS_CLOSE,//光圈缩小
EXTPTZ_OPERATION_ALARM,///<报警功能
EXTPTZ_LAMP_ON,///<灯光开
EXTPTZ_LAMP_OFF,//灯光关
EXTPTZ_POINT_SET_CONTROL,//设置预置点
EXTPTZ_POINT_DEL_CONTROL,//清除预置点
EXTPTZ_POINT_MOVE_CONTROL,//转预置点
EXTPTZ_STARTPANCRUISE,//开始水平旋转
EXTPTZ_STOPPANCRUISE,//停止水平旋转
EXTPTZ_SETLEFTBORDER,//设置左边界
EXTPTZ_SETRIGHTBORDER,//设置右边界
EXTPTZ_STARTLINESCAN,//自动扫描开始
EXTPTZ_CLOSELINESCAN,//自动扫描开停止
EXTPTZ_ADDTOLOOP,//加入预置点到巡航p1巡航线路p2预置点值
EXTPTZ_DELFROMLOOP,//删除巡航中预置点p1巡航线路p2预置点值
EXTPTZ_POINT_LOOP_CONTROL,//开始巡航
EXTPTZ_POINT_STOP_LOOP_CONTROL,//停止巡航
EXTPTZ_CLOSELOOP,//清除巡航p1巡航线路
EXTPTZ_FASTGOTO,//快速定位
EXTPTZ_AUXIOPEN,//辅助开关,关闭在子命令中
EXTPTZ_OPERATION_MENU,//球机菜单操作,其中包括开,关,确定等等
EXTPTZ_REVERSECOMM,//镜头翻转
EXTPTZ_OPERATION_RESET,///<云台复位
EXTPTZ_TOTAL,
};
///云台辅助功能
enumSDK_PtzAuxStatus
{
EXTPTZ_AUX_ON,///<开
EXTPTZ_AUX_OFF,///<关
EXTPTZ_AUX_NR,
};
错误类型代号,用于GetLastError函数的返回
typedefenumSDK_RET_CODE
{
H264_DVR_NOERROR=0,//没有错误
H264_DVR_SUCCESS=1,//返回成功
H264_DVR_SDK_NOTVALID=-10000,//非法请求
H264_DVR_NO_INIT=-10001,//SDK未经初始化
H264_DVR_ILLEGAL_PARAM=-10002,//用户参数不合法
H264_DVR_INVALID_HANDLE=-10003,//句柄无效
H264_DVR_SDK_UNINIT_ERROR=-10004,//SDK清理出错
H264_DVR_SDK_TIMEOUT=-10005,//等待超时
H264_DVR_SDK_MEMORY_ERROR=-10006,//内存错误,创建内存失败
H264_DVR_SDK_NET_ERROR=-10007,//网络错误
H264_DVR_SDK_OPEN_FILE_ERROR=-10008,//打开文件失败
H264_DVR_SDK_UNKNOWNERROR=-10009,//未知错误
H264_DVR_DEV_VER_NOMATCH=-11000,//收到数据不正确,可能版本不匹配
H264_DVR_SDK_NOTSUPPORT=-11001,//版本不支持
H264_DVR_OPEN_CHANNEL_ERROR=-11200,//打开通道失败
H264_DVR_CLOSE_CHANNEL_ERROR=-11201,//关闭通道失败
H264_DVR_SUB_CONNECT_ERROR=-11202,//建立媒体子连接失败
H264_DVR_SUB_CONNECT_SEND_ERROR=-11203,//媒体子连接通讯失败
H264_DVR_NATCONNET_REACHED_MAX=-11204,//Nat视频链接达到最大,不允许新的Nat视频链接
///用户管理部分错误码
H264_DVR_NOPOWER=-11300,//无权限
H264_DVR_PASSWORD_NOT_VALID=-11301,//账号密码不对
H264_DVR_LOGIN_USER_NOEXIST=-11302,//用户不存在
H264_DVR_USER_LOCKED=-11303,//该用户被锁定
H264_DVR_USER_IN_BLACKLIST=-11304,//该用户不允许访问(在黑名单中)
H264_DVR_USER_HAS_USED=-11305,//该用户以登陆
H264_DVR_USER_NOT_LOGIN=-11306,//该用户没有登陆
H264_DVR_CONNECT_DEVICE_ERROR=-11307,//可能设备不存在
H264_DVR_ACCOUNT_INPUT_NOT_VALID=-11308,//用户管理输入不合法
H264_DVR_ACCOUNT_OVERLAP=-11309,//索引重复
H264_DVR_ACCOUNT_OBJECT_NONE=-11310,//不存在对象,用于查询时
H264_DVR_ACCOUNT_OBJECT_NOT_VALID=-11311,//不存在对象
H264_DVR_ACCOUNT_OBJECT_IN_USE=-11312,//对象正在使用
H264_DVR_ACCOUNT_SUBSET_OVERLAP=-11313,//子集超范围(如组的权限超过权限表,用户权限超出组的权限范围等等)
H264_DVR_ACCOUNT_PWD_NOT_VALID=-11314,//密码不正确
H264_DVR_ACCOUNT_PWD_NOT_MATCH=-11315,//密码不匹配
H264_DVR_ACCOUNT_RESERVED=-11316,//保留帐号
///配置管理相关错误码
H264_DVR_OPT_RESTART=-11400,//保存配置后需要重启应用程序
H264_DVR_OPT_REBOOT=-11401,//需要重启系统
H264_DVR_OPT_FILE_ERROR=-11402,//写文件出错
H264_DVR_OPT_CAPS_ERROR=-11403,//配置特性不支持
H264_DVR_OPT_VALIDATE_ERROR=-11404,//配置校验失败
H264_DVR_OPT_CONFIG_NOT_EXIST=-11405,//请求或者设置的配置不存在
///
H264_DVR_CTRL_PAUSE_ERROR=-11500,//暂停失败
H264_DVR_SDK_NOTFOUND=-11501,//查找失败,没有找到对应文件
H264_DVR_CFG_NOT_ENABLE=-11502,//配置未启用
H264_DVR_DECORD_FAIL=-11503,//解码失败
//DNS协议解析返回错误码
H264_DVR_SOCKET_ERROR=-11600,//创建套节字失败
H264_DVR_SOCKET_CONNECT=-11601,//连接套节字失败
H264_DVR_SOCKET_DOMAIN=-11602,//域名解析失败
H264_DVR_SOCKET_SEND=-11603,//发送数据失败
H264_DVR_ARSP_NO_DEVICE=-11604,//没有获取到设备信息,设备应该不在线
H264_DVR_ARSP_BUSING=-11605,//ARSP服务繁忙
H264_DVR_ARSP_BUSING_SELECT=-11606,//ARSP服务繁忙,select失败
H264_DVR_ARSP_BUSING_RECVICE=-11607,//ARSP服务繁忙,recvice失败
H264_DVR_CONNECTSERVER_ERROR=-11608,//连接服务器失败
H264_DVR_CONNECT_FULL=-11612,//服务器连接数已满
//版权相关
H264_DVR_PIRATESOFTWARE=-11700,//设备盗版
};
☞报警事件类型
enumSDK_EventCodeTypes
{
SDK_EVENT_CODE_INIT=0,
SDK_EVENT_CODE_LOCAL_ALARM=1,//本地报警
SDK_EVENT_CODE_NET_ALARM,//网络报警
SDK_EVENT_CODE_MANUAL_ALARM,//手动报警
SDK_EVENT_CODE_VIDEO_MOTION,//动态检测
SDK_EVENT_CODE_VIDEO_LOSS,//视频丢失
SDK_EVENT_CODE_VIDEO_BLIND,//视频遮挡
SDK_EVENT_CODE_VIDEO_TITLE,
SDK_EVENT_CODE_VIDEO_SPLIT,
SDK_EVENT_CODE_VIDEO_TOUR,
SDK_EVENT_CODE_STORAGE_NOT_EXIST,
SDK_EVENT_CODE_STORAGE_FAILURE,
SDK_EVENT_CODE_LOW_SPACE,
SDK_EVENT_CODE_NET_ABORT,
SDK_EVENT_CODE_COMM,
SDK_EVENT_CODE_STORAGE_READ_ERROR,
SDK_EVENT_CODE_STORAGE_WRITE_ERROR,
SDK_EVENT_CODE_NET_IPCONFLICT,
SDK_EVENT_CODE_ALARM_EMERGENCY,
SDK_EVENT_CODE_DEC_CONNECT,
SDK_EVENT_CODE_VideoAnalyze=25,
SDK_EVENT_CODE_NR,
}