海康SDK相关调查报告_第1页
海康SDK相关调查报告_第2页
海康SDK相关调查报告_第3页
海康SDK相关调查报告_第4页
海康SDK相关调查报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE26目录TOC\o"1-3"\u1.流媒体技术及流媒体服务器 21.1流媒体技术 21.2流媒体视频转发服务器 22.流媒体传输相关协议 22.1 TCP 22.2 UDP 42.3 RTP 42.4 RTCP 52.5 RTSP 53.海康SDK接口定义 63.1 备注 73.2 用户注册 7功能 7接口调用顺序 7注意事项: 93.3 实时预览和云台控制及相关模块 9功能 9接口调用顺序 10注意事项 163.4 回放和下载相关模块 16功能 16接口调用顺序 17注意事项 213.5 参数配置模块 21功能 21接口调用顺序 21注意事项 223.6 报警模块 23功能 23接口调用顺序 23注意事项 253.7 远程设备维护模块 25功能 25接口调用顺序 25注意事项 251.流媒体技术及流媒体服务器1.1流媒体技术流媒体(StreamingMedia)是指视频、声音和数据通过实时传输协议以连续流方式顺序从源端向目的地传输,目的地只需接收到一定数据缓存后就可以立即播放的多媒体应用。流媒体又根据流式传输的不同实现方式分为顺序传输流和实时传输流两种。实时传输流指保证媒体信号带宽与网络连结匹配,使媒体内容可被实时观看到。实时流需要专用的流媒体服务器与传输协议,特别适合现场事件,也支持随机访问。用户可以控制浏览的内容。一般来说,如视频为实时广播,或使用流式传输服务器,或应用如RISP的实时协议,即为实时传输流。而顺序流是使用}Ⅱ1甲服务器顺序下载文件。在下载文件的同时,用户可观看己下载的那部分,而不能跳到还未下载的剩余部分,顺序流不可根据用户的连接速度作调整,严格来讲,它不是真正意义上的流式传输技术。1.2流媒体视频转发服务器视频转发服务器是跨接两个网络的桥梁,具体地说,就是将由若干台硬盘录像机组成的局域网与公共网络从物理上分离开,如企业内部网、校园网等。这样可以实现以下两个目的:第一:硬盘录像机提供的网络服务功能是开放式的,只要是拥有它的客户端播放软件,并且知道硬盘录像机的IP地址,就可以显示它所提供的视频图像了。从这一点讲,用于安防监控领域中的硬盘录像机是缺乏安全性的,这里主要指来源于网络的病毒和恶意攻击。当采用视频转发服务器后,可以从物理上将硬盘录像机组成的局域网与公共网络分开,为硬盘录像机提供了一道有效的安全保护措施。第二:视频转发服务器又相当于架设在硬盘录像机与客户端之间的一道桥梁,客户端要从硬盘录像机取得的所有数据都必须经过视频转发服务器,因此,视频转发服务器可以很容易地实现对视频数据的编辑和修改。2.流媒体传输相关协议TCPTCP:TransmissionControlProtocol传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transportlayer)通信协议。TCP报文结构源端口号:标明源设备端口号,与IP头确定唯一通讯端口目的端口号:标明目标设备端口号,与IP头确定唯一通讯端口序列号:用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则TCP用序列号对每个字节进行计数。序列号是一个32bits的数。确认序号:包含发送确认的一端所期望接收到的下一个序号。确认序号应该是上次已成功收到的数据字节序列号加1。首部长度:占4比特。给出头部占32比特的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。保留:由跟在数据偏移字段后的6位构成,预留位通常为0.URG:紧急指针(urgentpointer)有效。ACK:确认序号有效。PSH:接收方应该尽快将这个报文段交给应用层。RST:重建连接。SYN:发起一个连接。FIN:释放一个连接。窗口大小:占16比特。此字段用来进行流量控制。单位为字节数,这个值是本机期望一次接收的字节数。检验和:占16比特。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。紧急指针:占16比特。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。选项:占32比特。可能包括"窗口扩大因子"、"时间戳"等选项。UDPUDP:UserDatagramProtocol用户数据包协议,UDP是一种无连接的运输层协议,提供面向事务的简单不可靠信息传送服务UDP报文结构源端口号:标明源设备端口号,与IP头确定唯一通讯端口目的端口号:标明目标设备端口号,与IP头确定唯一通讯端口UDP长度:标明包括数据在内的报文长度UDP检验和:校检位RTPRTP:Real-timeTransportProtocol实时传输协议RTP是针对Internet上多媒体数据流的一个运输层协议。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP协议就是提供了时间标签,序列号以及其它的结构用于控制适时数据的流放。RTP的典型应用建立在UDP上,但也可以在TCP等其他协议之上工作。RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。RTP报文格式V:RTP协议的版本号,占2位。P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。CC:CSRC计数器,占4位,指示CSRC标识符的个数。M::标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。PT:有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等。序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据。时戳:占32位,时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。SSRC标示符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。CSRC标示符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。RTCPRTCP:RTPControlProtocol(RTP控制协议)RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。在RTP的会话之间周期的发放一些RTCP包以用来传监听服务质量和交换会话用户信息等功能。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料。因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。根据用户间的数据传输反馈信息,可以制定流量控制的策略,而会话用户信息的交互,可以制定会话控制的策略。RTSPRTSP(RealTimeStreamingProtocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。3.海康SDK接口定义海康设备网络SDK主要功能图像预览、文件回放和下载、云台控制、布防/撤防、语音对讲、日志管理、解码卡、远程升级、远程重启/关闭、格式化硬盘、参数配置(系统配置、通道配置、串口配置、报警配置、用户配置)、多路解码器、智能设备功能和获取设备能力集等。SDK调用主要流程如下:图1SDK调用流程其中虚线框的流程是可选部分,不会影响其他流程和模块的功能使用。按实现功能的不同可以分成十个模块,实现每个模块的功能时初始化SDK、用户注册设备、注销设备和释放SDK资源这4个流程是必不可少的。备注海康SDK中对涉及的数据类型定义了模板,为了更好的理解程序,我将对应的模板列出来,方便对SDK函数调用。typedefunsignedintDWORD;typedefunsignedshortWORD;typedefunsignedshortUSHORT;typedefintLONG;typedef unsignedcharBYTE;typedefintBOOL;typedefunsignedintUINT;typedef void* LPVOID;typedef void* HANDLE;typedefunsignedint*LPDWORD;typedefunsignedlonglongUINT64;用户注册功能注册设备,获得对SDK的控制。接口调用顺序初始化SDK调用NET_DVR_Init()返回TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError()可能返回的具体错误值请查看《设备网络SDK使用手册》用户注册设备调用NET_DVR_Login_V30(char*sDVRIP,unsignedshortwDVRPort,char*sUserName,char*sPassword,LPNET_DVR_DEVICEINFO_V30lpDeviceInfo)其中:*sDVRIP,//设备IP地址wDVRPort,//设备端口号*sUserName,//登录的用户名*sPassword//用户密码lpDeviceInfo//设备信息其中LPNET_DVR_DEVICEINFO_V30结构定义如下Struct{unsignedcharsSerialNumber[48];//设备序列号unsignedcharbyAlarmInPortNum; //报警输入个数unsignedcharbyAlarmOutPortNum; //报警输出个数unsignedcharbyDiskNum; //硬盘个数unsignedcharbyDVRType; //设备类型,1:DVR2:ATMDVR3:DVSunsignedcharbyChanNum; //模拟通道个数unsignedcharbyStartChan; //起始通道号,例如DVS-1,DVR-1unsignedcharbyAudioChanNum;//语音通道数unsignedcharbyIPChanNum; //最大数字通道个数unsignedcharbyZeroChanNum; //零通道编码个数//2010-01-16unsignedcharbyMainProto; //主码流传输协议类型0-private,1-rtspunsignedcharbySubProto; //子码流传输协议类型0-private,1-rtspunsignedcharbySupport;//能力,位与结果为0表示不支持,1表示支持,//bySupport&0x1,表示是否支持智能搜索//bySupport&0x2,表示是否支持备份//bySupport&0x4,表示是否支持压缩参数能力获取//bySupport&0x8,表示是否支持多网卡//bySupport&0x10,表示支持远程SADP//bySupport&0x20表示支持Raid卡功能//bySupport&0x40表示支持IPSAN目录查找unsignedcharbyRes1[20]; //保留}NET_DVR_DEVICEINFO_V30,*LPNET_DVR_DEVICEINFO_V30;返回值表示返回的用户ID值。该用户ID具有唯一性,后续对设备的操作都需要通过此ID实现。特别当返回值为-1表示失败获取错误码调用NET_DVR_GetLastError()可能返回的具体错误值请查看《设备网络SDK使用手册》注销设备调用NET_DVR_Logout_V30(IntlUserID)其中lUserID//用户ID,就是NET_DVR_Login_V30()返回值返回TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError()可能返回的具体错误值请查看《设备网络SDK使用手册》释放SDK调用NET_DVR_Cleanup()返回TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError()可能返回的具体错误值请查看《设备网络SDK使用手册》注意事项:A:初始化SDK和用户注册是所有操作的前提。B:NET_DVR_Login_V30()是对NET_DVR_Login()的扩展。源代码中出现的NET_DVR_Login()都可以由NET_DVR_Login_V30()函数代替。C::NET_DVR_Logout_V30()和NET_DVR_Logout()函数是同样的函数,两者可以互换。D:NET_DVR_Login()函数返回值为用户ID实时预览和云台控制及相关模块功能A.预览B.实时数据流的捕获和录像C.云台控制D.声音控制E.抓图接口调用顺序图2实时预览和云台控制流程图中虚线框部分的模块是与预览模块相关,必须在启动预览后才能调用,这些模块之间是并列的关系,各自完成相应的功能。预览模块(1)调用NET_DVR_Init(),NET_DVR_Login_V30()完成设备注册(详见3.1章节)(2)调用NET_DVR_RealPlay_V30(intlUserID,,LPNET_DVR_CLIENTINFOlpClientInfo,fRealDataCallBack_V30cbRealDataCallBack,void*pUser,intbBlocked)启动预览,lUserID//NET_DVR_Login_V30()的返回值,用户IDlpClientInfo//预览参数cbRealDataCallBack//码流数据回调函数*pUser//用户数据bBlocked//请求码流过程是否阻塞:0-否;1-是其中预览参数结构体NET_DVR_CLIENTINFO定义为struct{intlChannel;intlLinkMode;HWNDhPlayWnd;char*sMultiCastIP;}NET_DVR_CLIENTINFO,*LPNET_DVR_CLIENTINFO;lChannel//通道号lLinkMode//最高位(31)为0表示主码流,为1表示子码流0~30位表示连接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式hPlayWnd//播放窗口的句柄,为NULL表示不显示图像其中HWND结构定义为structHWND##__{intunused;};typedefstructHWND##__*HWNDsMultiCastIP//多播组地址码流数据回调函数定义为typedefvoid(CALLBACK*fRealDataCallBack_V30)(intlRealHandle,//当前的预览句柄unsignedintdwDataType,//数据类型见下表unsignedchar*pBuffer,//存放数据的缓冲区指针unsignedintdwBufSize,//缓冲区大小void*pUser//用户数据);宏定义宏定义值含义NET_DVR_SYSHEAD1系统头数据NET_DVR_STREAMDATA2流数据(包括复合流或音视频分开的视频流数据)NET_DVR_AUDIOSTREAMDATA3音频数据表1NET_DVR_RealPlay_V30()返回-1表示失败,其他值作为NET_DVR_StopRealPlay等函数的句柄参数。获取错误码调用NET_DVR_GetLastError()可能返回的具体错误值请查看《设备网络SDK使用手册》(3)调用NET_DVR_StopRealPlay_V30(intlRealHandle)停止预览)lRealHandle//预览句柄,NET_DVR_RealPlay_V30的返回值返回TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError()可能返回的具体错误值请查看《设备网络SDK使用手册》实时流数据捕获和录像模块主要实现数据回调和本地录像的功能,可以供用户后续处理。相关接口有:NET_DVR_SetRealDataCallBack、NET_DVR_SetStandardDataCallBack、NET_DVR_SaveRealData等。NET_DVR_SetRealDataCallBack()注册回调函数,返回实时码流数据。BoolNET_DVR_SetRealDataCallBack(LONGlRealHandle,fRealDataCallBackcbRealDataCallBack,DWORDdwUser)lRealHandle//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值cbRealDataCallBack//码流数据回调函数dwUser//用户数据其中fRealDataCallBack回调函数定义为typedefvoid(CALLBACK*fRealDataCallBack)(LONGlRealHandle,//当前的预览句柄DWORDdwDataType,//数据类型见下表BYTE*pBuffer,//存放数据的缓冲区指针DWORDdwBufSize,//缓冲区大小DWORDdwUser//用户数据);宏定义宏定义值含义NET_DVR_SYSHEAD1系统头数据NET_DVR_STREAMDATA2流数据(包括复合流或音视频分开的视频流数据)函数返回TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError此函数目前仅支持对于支持RTSP协议取流的设备的标准码流回调此函数包括开始和停止用户处理SDK捕获的数据,当回调函数cbRealDataCallBack设为非NULL值时,表示回调和处理数据;当设为NULL时表示停止回调和处理数据。回调的第一个包是40个字节的文件头,供后续解码使用,之后回调的是压缩的码流。回调数据最大为256K字节。NET_DVR_SetStandardDataCallBack()注册回调函数,捕获实时码流数据(标准码流)。BOOLNET_DVR_SetStandardDataCallBack(LONGlRealHandle,fStdDataCallBackcbStdDataCallBack,DWORDdwUser)lRealHandle//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值cbStdDataCallBack//标准码流数据回调函数dwUser//用户数据其中fStdDataCallBack回调函数定义为typedefvoid(CALLBACK*fStdDataCallBack)(LONGlRealHandle,//当前的预览句柄DWORDdwDataType,//数据类型见下表BYTE*pBuffer,//存放数据的缓冲区指针DWORDdwBufSize,//缓冲区大小DWORDdwUser//用户数据);宏定义宏定义值含义NET_DVR_SYSHEAD1系统头数据NET_DVR_STD_VIDEODATA4标准视频流数据)NET_DVR_STD_AUDIODATA5标准音频流数据函数返回TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError此函数包括开始和停止用户处理SDK捕获的数据,当回调函数cbStdDataCallBack设为非NULL值时,表示回调和处理数据;当设为NULL时表示停止回调和处理数据。回调的第一个包是40个字节的文件头,供后续解码使用,之后回调的是标准码流(含12字节的RTP头)。NET_DVR_SaveRealData()捕获数据并存放到指定的文件中BOOLNET_DVR_SaveRealData(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值char*sFileName//文件路径指针);函数返回TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError云台控制模块主要是在开启预览的前提下实现对云台控制的操作功能,包括云台预置点、巡航、轨迹和透明云台等。相关接口有:NET_DVR_PTZControl、NET_DVR_PTZControl_EX、NET_DVR_PTZPreset、NET_DVR_PTZPreset_EX、NET_DVR_PTZCruise、NET_DVR_PTZCruise_EX、NET_DVR_PTZTrack、NET_DVR_PTZTrack_EX、NET_DVR_TransPTZ、NET_DVR_TransPTZ_EX。NET_DVR_PTZControl云台控制操作(需先启动图象预览NET_DVR_RealPlay_V30())。BOOLNET_DVR_PTZControl(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值DWORDdwPTZCommand,//云台控制命令,见下表DWORDdwStop//云台停止动作或开始动作:0-开始;1-停止);宏定义宏定义值含义LIGHT_PWRON2接通灯光电源WIPER_PWRON3接通雨刷开关FAN_PWRON4接通风扇开关HEATER_PWRON5接通加热器开关AUX_PWRON16接通辅助设备开关AUX_PWRON27接通辅助设备开关ZOOM_IN11焦距变大(倍率变大)ZOOM_OUT12焦距变小(倍率变小)FOCUS_NEAR13焦点前调FOCUS_FAR14焦点后调IRIS_OPEN15光圈扩大IRIS_CLOSE16光圈缩小TILT_UP21云台上仰TILT_DOWN22云台下俯PAN_LEFT23云台左转PAN_RIGHT24云台右转UP_LEFT25云台上仰和左转UP_RIGHT26云台上仰和右转DOWN_LEFT27云台下俯和左转DOWN_RIGHT28云台下俯和右转PAN_AUTO29云台左右自动扫描函数返回TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError对云台实施的每一个动作都需要调用该接口两次,分别是开始和停止控制,由接口中的最后一个参数(dwStop)决定。在调用此接口之前需要先开启预览。与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码,设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配,需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持,则无法用该接口控制。NET_DVR_PTZControl_EX云台控制操作,需先启动预览,通过预览连接发送命令(性能比NET_DVR_PTZControl好,RTSP预览时不支持此功能)。BOOLNET_DVR_PTZControl_EX(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值DWORDdwPTZCommand,//云台控制命令,同上DWORDdwStop//云台停止动作或开始动作:0-开始;1-停止);函数返回TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastErrorNET_DVR_PTZPreset云台预置点操作(需先启动预览)。BOOLNET_DVR_PTZPreset(LONGlRealHandle,//返回句柄DWORDdwPTZPresetCmd,//操作类型,见下表DWORDdwPresetIndex//预置点序号从1开始,最多支持255个预置点);宏定义宏定义值含义SET_PRESET8设置预置点CLE_PRESET9清除预置点GOTO_PRESET39转到预置点TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError。与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码,设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配,需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持,则无法用该接口控制。NET_DVR_PTZPreset_EXNET_DVR_PTZPreset的扩展,性能优于NET_DVR_PTZPreset,但是不支持RTSP预览,参数结构和返回值同NET_DVR_PTZPreset。NET_DVR_PTZCruise云台巡航操作,需先启动预览。BOOLNET_DVR_PTZCruise(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值DWORDdwPTZCruiseCmd,//巡航操作命令,见下表BYTEbyCruiseRoute,//巡航路径,最多支持32条路径(序号从1开始)BYTEbyCruisePoint,//巡航点,最多支持32个点(序号从1开始)WORDwInput//不同巡航命令时的值不同,预置点(最大255)、时间(最大255)、速度(最大40));宏定义宏定义值含义FILL_PRE_SEQ30将预置点加入巡航序列SET_SEQ_DWELL31设置巡航点停顿时间SET_SEQ_SPEED32设置巡航速度CLE_PRE_SEQ33将预置点从巡航序列中删除RUN_SEQ37开始巡航STOP_SEQ38停止巡航TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError。与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码,设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配,需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持,则无法用该接口控制。NET_DVR_PTZCruise_EXET_DVR_PTZCruise的扩展,性能优于NET_DVR_PTZCruise,但是不支持RTSP预览,参数结构和返回值同NET_DVR_PTZCruise。NET_DVR_PTZTrack云台轨迹操作,需先启动预览BOOLNET_DVR_PTZTrack(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值DWORDdwPTZTrackCmd//操作云台轨迹命令,见下表:);宏定义宏定义值含义STA_MEM_CRUISE34开始记录轨迹STO_MEM_CRUISE35停止记录轨迹RUN_CRUISE36开始轨迹TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError。与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码,设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配,需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持,则无法用该接口控制。NET_DVR_PTZTrack_EXET_DVR_PTZTrack的扩展,性能优于NET_DVR_PTTrack,但是不支持RTSP预览,参数结构和返回值同NET_DVR_PTZTrack。NET_DVR_TransPTZ透明云台操作,需先启动预览。BOOLNET_DVR_TransPTZ(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值char*pPTZCodeBuf,//存放云台控制码缓冲区的指针DWORDdwBufSize//云台控制码的长度);TRUE表示成功,FALSE表示失败。获取错误码调用NET_DVR_GetLastError使用该接口能直接通过设备将云台控制码信息直接传输给云台设备,而无需配置解码器。NET_DVR_TransPTZ_EXET_DVR_PTZ的扩展,性能优于NET_DVR_PTZ,但是不支持RTSP预览,参数结构和返回值同NET_DVR_PTZ。声音控制功能主要实现独占、共享声音的打开和关闭;音量的控制。相关接口有:NET_DVR_OpenSound、NET_DVR_CloseSound、NET_DVR_OpenSoundShare、NET_DVR_CloseSoundShare、NET_DVR_Volume等。抓图功能主要实现对当前解码图像的捕获,保存格式为BMP。相关接口有:NET_DVR_CapturePicture。注意事项A:HWND结构定义为structHWND##__{intunused;};typedefstructHWND##__*HWNDB:云台控制函数中_EX扩展的几个函数都不支持RTSP预览回放和下载相关模块功能实现对已有的录像回放和下载功能,实现按时间搜索和按文件名搜索2种方式接口调用顺序按时间回放调用NET_DVR_Init()初始化SDK调用NET_DVR_Login_V30(char*sDVRIP,unsignedshortwDVRPort,char*sUserName,char*sPassword,LPNET_DVR_DEVICEINFO_V30lpDeviceInfo)完成设备注册调用NET_DVR_PlayBackByTime(LONGlUserID,LONGlChannel,LPNET_DVR_TIMElpStartTime,LPNET_DVR_TIMElpStopTime,HWNDhWnd)开始查找目标文件其中LPNET_DVR_TIME结构为struct{DWORDdwYear;DWORDdwMonth;DWORDdwDay;DWORDdwHour;DWORDdwMinute;DWORDdwSecond;}NET_DVR_TIME,*LPNET_DVR_TIME;调用NET_DVR_PlayBackControl_V40(LONGlPlayHandle,DWORDdwControlCode,char*lpInBuffer,DWORDdwInLen,DWORD*lpOutLen)控制播放状态lPlayHandle播放句柄,NET_DVR_PlayBackByTime的返回值dwControlCode控制命令,见下表lpInBuffer指向输入参数的指针dwInLen输入参数的长度lpOutBuffer指向输出参数的指针lpOutLen输出参数的长度停止回放录像文件NET_DVR_StopPlayBack(LONGlPlayHandle)。返回TRUE表示成功,FALSE表示失败lPlayHandle播放句柄,NET_DVR_PlayBackByTime的返回值注销NET_DVR_Logot_V30(IntlUserID)释放SDK资源NET_DVR_Cleanup()按文件名回放调用NET_DVR_Init()初始化SDK调用NET_DVR_Login_V30(char*sDVRIP,unsignedshortwDVRPort,char*sUserName,char*sPassword,LPNET_DVR_DEVICEINFO_V30lpDeviceInfo)完成设备注册调用NET_DVR_FindFile_V30(LONGlUserID,LPNET_DVR_FILECONDpFindCond)启动查找,该接口指定了要查找的录像文件的信息,调用成功后,就可以调用NET_DVR_FindNextFile接口来获取文件信息lUserIDNET_DVR_Login()或NET_DVR_Login_V30()的返回值pFindCond欲查找的文件信息结构,定义如下:struct{LONGlChannel;DWORDdwFileType;DWORDdwIsLocked;DWORDdwUseCardNo;BYTEsCardNumber[32];NET_DVR_TIMEstruStartTime;NET_DVR_TIMEstruStopTime;}NET_DVR_FILECOND,*LPNET_DVR_FILECOND;lChannel通道号dwFileType录象文件类型:0xff-全部,0-定时录像,1-移动侦测,2-报警触发,3-报警触发或移动侦测,4-报警触发和移动侦测,5-命令触发,6-手动录像,7-智能录像dwIsLocked是否锁定:0-未锁定文件,1-锁定文件,0xff表示所有文件(包括锁定和未锁定)dwUseCardNo是否带卡号查找,这里是否sCardNumber卡号struStartTime开始时间struStopTime停止时间逐个获取文件名NET_DVR_FindNextFile_V30(LONGlFindHandle,LPNET_DVR_FINDDATA_V30lpFindData)需要多次调用lFindHandle文件查找句柄,NET_DVR_FindFile_V30()的返回值lpFindData保存文件信息的指针录像文件信息结构体NET_DVR_FINDDATA_V30struct{charsFileName[100];文件名NET_DVR_TIMEstruStartTime;文件的开始时间NET_DVR_TIMEstruStopTime;文件的结束时间DWORDdwFileSize;文件大小charsCardNum[32];卡号BYTEbyLocked;文件是否被锁定,1-文件已锁定;0-文件未锁定BYTEbyFileType;文件类型:0-定时录像,1-移动侦测,2-报警触发,3-报警|移动侦测,4-报警&移动侦测,5-命令触发,6-手动录像BYTEbyRes[2];保留,置为0}NET_DVR_FINDDATA_V30,*LPNET_DVR_FINDDATA_V30;关闭文件查找,释放资源NET_HWNDhWndDVR_FindClose_V30(LONGlFindHandle)按文件名回放录像文件NET_DVR_PlayBackByName(LONGlUserID,char*sPlayBackFileName,HWNDhWnd)lUserIDNET_DVR_Login()或NET_DVR_Login_V30()的返回值sPlayBackFileName回放的文件名,长度不能超过100字节hWnd回放的窗口句柄,若置为空,SDK仍能收到码流数据,但不解码显示调用NET_DVR_PlayBackControl_V40(LONGlPlayHandle,DWORDdwControlCode,char*lpInBuffer,DWORDdwInLen,DWORD*lpOutLen)控制播放状态,详细见上一节停止回放录像文件NET_DVR_StopPlayBack(LONGlPlayHandle)。返回TRUE表示成功,FALSE表示失败lPlayHandle播放句柄,NET_DVR_PlayBackByTime的返回值注销NET_DVR_Logot_V30(IntlUserID)释放SDK资源NET_DVR_Cleanup()按时间下载基本同按时间回放功能,其中NET_DVR_GetFilekByTime(LONGlUserID,LONGlChannel,LPNET_DVR_TIMElpStartTime,LPNET_DVR_TIMElpStopTime,sSavedFileNamechar*sSavedFileName)开始查找目标文件。sSavedFileName下载后保存到PC机的文件路径,需为绝对路径NET_DVR_StopGetFile(LONG1FileHandle)停止下载录像文件。其中1FileHandle为NET_DVR_GetFilekByTime()返回值按文件名下载基本同按文件名回放功能,NET_DVR_GetFileByName(LONGlUserID,char*sDVRFileName,char*sSavedFileName);sSavedFileName下载后保存到PC机的文件路径,需为绝对路径NET_DVR_StopGetFile(LONG1FileHandle)停止下载录像文件。其中1FileHandle为NET_DVR_GetFilekByName()返回值注意事项NET_DVR_FindNextFile_V30()在调用该接口获取查找文件之前,必须先调用NET_DVR_FindFile_V30得到当前的查找句柄。此接口用于获取一条已查找到的文件信息,若要获取全部的已查找到的文件信息,需要循环调用此接口。通过此接口可以同时获取到与当前录像文件相关的卡号信息和文件是否被锁定的信息。参数配置模块功能获取和修改设备的参数。接口调用顺序获取参数NET_DVR_GetDVRConfig(LONGlUserID,DWORDdwCommand,LONGlChannel,LPVOIDlpOutBuffer,DWORDdwOutBufferSize,LPDWORDlpBytesReturned)lUserID//NET_DVR_Login或NET_DVR_Login_V30的返回值dwCommand//设备配置命令,参见配置命令,参见SDK对应函数lChannel//通道号,如果命令不需要通道号,该参数无效,置为0xFFFFFFFFlpOutBuffer//接收数据的缓冲指针dwOutBufferSize//接收数据的缓冲长度(以字节为单位),不能为0lpBytesReturned//实际收到的数据长度指针,不能为NULL设置参数NET_DVR_SetDVRConfig(LONGlUserID,DWORDdwCommand,LONGlChannel,LPVOIDlpOutBuffer,DWORDdwOutBufferSize,LPDWORDlpBytesReturned)lUserID//NET_DVR_Login或NET_DVR_Login_V30的返回值dwCommand//设备配置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论