2023年12月24日发(作者:)

设备(转码设备)

网络SDK编程指南

V4.2

设备网络SDK编程指南

声 明

非常感谢您购买我公司的产品,如果您有什么疑问或需要请随时联系我们。

 我们已尽量保证手册内容的完整性与准确性,但也不免出现技术上不准确、与产品功能及操作不相符或印刷错误等情况,如有任何疑问或争议,请以我司最终解释为准。

 产品和手册将实时进行更新,恕不另行通知。

 本手册中内容仅为用户提供参考指导作用,请以SDK实际内容为准。

设备网络SDK编程指南

目 录

声 明 ................................................................................................................................................................................... I

目 录 .................................................................................................................................................................................. II

1

2

3

SDK简介 ...................................................................................................................................................................... 1

SDK版本更新 ............................................................................................................................................................... 3

函数调用顺序 .............................................................................................................................................................. 4

3.1

3.2

4

4.1

主动转码模块流程 .............................................................................................................................................. 4

被动转码模块流程 .............................................................................................................................................. 5

SDK初始化 .......................................................................................................................................................... 6

初始化SDK NET_DVR_Init .......................................................................................................................... 6

释放SDK资源NET_DVR_Cleanup .............................................................................................................. 6

注册接收异常、重连等消息的窗口句柄或回调函数NET_DVR_SetExceptionCallBack_V30 ................. 8

获取SDK的版本号和build信息NET_DVR_GetSDKBuildVersion .......................................................... 10

获取当前SDK的状态信息NET_DVR_GetSDKState ................................................................................. 10

获取当前SDK的功能信息NET_DVR_GetSDKAbility .............................................................................. 10

获取SDK本地参数NET_DVR_GetSDKLocalConfig ..................................................... 错误!未定义书签。

设置SDK本地参数NET_DVR_SetSDKLocalConfig ...................................................... 错误!未定义书签。

启用写日志文件NET_DVR_SetLogToFile ................................................................................................. 12

返回最后操作的错误码NET_DVR_GetLastError ..................................................................................... 13

返回最后操作的错误码信息NET_DVR_GetErrorMsg ............................................................................. 13

用户注册设备NET_DVR_Login_V30 ........................................................................................................ 13

用户注销NET_DVR_Logout ...................................................................................................................... 13

获取设备能力集NET_DVR_GetDeviceAbility .......................................................................................... 14

函数说明 ...................................................................................................................................................................... 6

4.1.1

4.1.2

4.2

4.3

4.2.1

4.3.1

4.3.2

4.3.3

4.3.4

4.3.5

4.3.6

4.4

4.4.1

4.4.2

4.5

4.5.1

4.5.2

4.6

4.7

4.6.1

异常消息回调 ...................................................................................................................................................... 8

SDK日志和信息 ................................................................................................................................................ 10

获取错误信息 .................................................................................................................................................... 13

用户注册 ............................................................................................................................................................ 13

获取设备能力集 ................................................................................................................................................ 14

远程参数配置 .................................................................................................................................................... 15

获取设备的配置信息NET_DVR_GetDVRConfig ...................................................................................... 15

设置设备的配置信息NET_DVR_SetDVRConfig ....................................................................................... 16

批量获取配置信息NET_DVR_GetDeviceConfig ...................................................................................... 17

批量设置配置信息NET_DVR_SetDeviceConfig ....................................................................................... 17

获取设备支持的IPC协议表NET_DVR_GetIPCProtoList ......................................................................... 18

获取设备报警输出NET_DVR_GetAlarmOut_V30 ................................................................................... 19

设置设备报警输出NET_DVR_SetAlarmOut ............................................................................................ 19

实时预览NET_DVR_RealPlay_V40 ........................................................................................................... 19

基本参数配置 ............................................................................................................................................................ 15

4.7.1

4.7.2

4.7.3

4.7.4

4.7.5

4.7.6

4.7.7

4.8

4.8.1

获取IPC协议列表 ..................................................................................................................................................... 18

报警输出设置 ............................................................................................................................................................ 19

实时预览 ............................................................................................................................................................ 19

设备网络SDK编程指南

4.8.2

4.9

4.9.1

4.9.2

4.9.3

4.9.4

4.10

4.10.1

4.10.2

4.10.3

4.10.4

4.11

停止预览NET_DVR_StopRealPlay ............................................................................................................ 20

注册回调函数,捕获实时码流数据NET_DVR_SetRealDataCallBack ..................................................... 20

注册回调函数,捕获实时码流数据(标准码流)NET_DVR_SetStandardDataCallBack ...................... 21

捕获数据并保存到指定的文件中NET_DVR_SaveRealData .................................................................... 22

停止数据捕获NET_DVR_StopSaveRealData ............................................................................................ 22

启动被动转码NET_DVR_StartPassiveTransCode ..................................................................................... 22

向被动转码通道发送数据NET_DVR_TransCodeInputData .................................................................... 23

停止被动转码NET_DVR_StopPassiveTransCode ..................................................................................... 23

根据转码句柄获取设备转码通道号NET_. 24

实时预览数据捕获 ............................................................................................................................................ 20

被动转码 ............................................................................................................................................................ 22

布防、撤防 ........................................................................................................................................................ 24

注册回调函数,接收设备报警消息NET_DVR_SetDVRMessageCallBack_V30 ...................................... 24

建立报警上传通道,获取报警等信息NET_DVR_SetupAlarmChan_V41 .............................................. 25

撤销报警上传通道NET_DVR_CloseAlarmChan_V30 .............................................................................. 25

启动监听,接收设备主动上传的报警等信息NET_DVR_StartListen_V30 ............................................ 25

停止监听(支持多线程)NET_DVR_StopListen_V30 ............................................................................. 26

获取设备运行状态NET_DVR_GetDeviceStatus ....................................................................................... 26

设置报警等信息上传的回调函数 ............................................................................................................................ 24

4.11.1

4.11.2

4.11.3

4.12

4.12.1

4.12.2

4.13

4.14

4.13.1

布防撤防 .................................................................................................................................................................... 25

监听报警 ............................................................................................................................................................ 25

设备状态 ............................................................................................................................................................ 26

设备维护管理 .................................................................................................................................................... 27

设置远程升级时网络环境NET_DVR_SetNetworkEnvironment .............................................................. 27

远程升级NET_DVR_Upgrade ................................................................................................................... 27

获取远程升级的进度NET_DVR_GetUpgradeProgress ............................................................................ 28

获取远程升级的状态NET_DVR_GetUpgradeState .................................................................................. 28

关闭远程升级句柄,释放资源NET_DVR_CloseUpgradeHandle ............................................................ 28

查找设备的日志信息NET_DVR_FindDVRLog_V30 ................................................................................. 28

逐条获取查找到的日志信息NET_DVR_FindNextLog_V30 ..................................................................... 29

释放查找日志的资源NET_DVR_FindLogClose_V30 ................................................................................ 29

恢复设备默认参数NET_DVR_RestoreConfig ........................................................................................... 29

导出配置文件NET_DVR_GetConfigFile_V30 ....................................................................................... 30

导出配置文件NET_DVR_GetConfigFile ............................................................................................... 30

导入配置文件NET_DVR_SetConfigFile_EX .......................................................................................... 30

导入配置文件NET_DVR_SetConfigFile ................................................................................................ 31

重启设备NET_DVR_RebootDVR ............................................................................................................... 31

关闭设备NET_DVR_ShutDownDVR ......................................................................................................... 31

远程升级 .................................................................................................................................................................... 27

4.14.1

4.14.2

4.14.3

4.14.4

4.14.5

4.14.6

4.14.7

4.14.8

4.14.9

4.14.10

4.14.11

4.14.12

4.14.13

4.15

4.15.1

4.15.2

5

日志查找 .................................................................................................................................................................... 28

恢复设备默认参数 .................................................................................................................................................... 29

导入/导出配置文件 .................................................................................................................................................. 30

关机和重启 ........................................................................................................................................................ 31

错误代码及说明 ........................................................................................................................................................ 32

设备网络SDK编程指南

5.1.1

5.1.3

6

网络通讯库错误码 ................................................................................................................................... 32

软解码库错误码 ....................................................................................................................................... 36

5.1.2

RTSP通讯库错误码 ....................................................................................................................................... 35

结构体说明 ................................................................................................................................................................ 38

1

设备网络SDK编程指南

1 SDK简介

设备网络SDK是基于设备私有网络通信协议开发的,为嵌入式网络硬盘录像机、视频服务器、网络摄像机、网络球机、解码器、多屏控制器、报警主机等产品服务的配套模块,用于远程访问和控制设备软件的二次开发。

本文档主要介绍转码相关的功能,仅介绍转码设备支持的相关接口,更多内容参见《设备网络SDK使用手册.chm》。

Windows下设备网络SDK:

HCNetSDK.h

网络通讯库

头文件

LIB库文件

DLL库文件

RTSP通讯库

DLL库文件

转封装库

DLL库文件

语音对讲库

DLL库文件

DLL库文件

模拟能力集

XML文件包

Qos库

plaympeg4.h

DLL库文件

头文件

LIB库文件

DLL库文件

头文件

软解码库

DataType.h和

DecodeCardSdk.h

硬解码库

LIB库文件

DLL库文件

Linux下设备网络SDK库:

hcnetsdk.h

网络通讯库

头文件

SO库文件

2

设备网络SDK编程指南

RTSP通讯库

SO库文件

转封装库

SO库文件

Qos库

plaympeg4.h

SO库文件

头文件

SO库文件

SO库文件

软解码库

本版本的设备网络SDK开发包中包含以上各个组件,除网络通讯库为必须项外,用户可以根据需要选择其中的一部分组件,以下将对各个组件在SDK中的作用和使用条件分别说明。

 网络通讯库是设备网络SDK的主体,主要用于网络客户端与各类产品之间的通讯交互,负责远程功能调控、远程参数配置及码流数据的获取和处理等。

 RTSP通讯库是支持RTSP传输协议的网络库。当需要对支持RTSP协议的产品进行取流等操作时就必须加载该项组件。

 转封装库的功能可以分为两种:一种是将标准码流转换成采用我们公司封装格式的码流。当用户需要对支持RTSP协议的产品捕获采用本公司封装格式的码流数据时(即当设置NET_DVR_RealPlay_V30接口中的回调函数捕获数据或者调用NET_DVR_SetRealDataCallBack接口捕获数据时)必须加载该组件。另一种功能是能将标准码流转换成其他格式的封装,如3GPP、PS等。例如,当用户需要对支持RTSP协议的产品实时捕获指定封装格式的码流数据(对应的SDK接口为NET_DVR_SaveRealData)时必须加载该项组件。

 语音对讲库用于语音对讲时通过声卡采集数据并按照指定的编码格式编码码流或者解码播放音频码流数据(不带封装格式的码流数据)。V4.2.2.5及以前版本SDK均采用windows API实现相关功能。之后版本默认使用语音对讲库的方式,通过接口NET_DVR_SetSDKLocalCfg可以选择之前的windows API模式。为依赖库,语音对讲库模式下必须加载。Linux下无语音对讲功能。

 模拟能力集:如果需要获取设备能力集(NET_DVR_GetDeviceAbility),建议调用NET_DVR_SetSDKLocalCfg启用模拟能力集,此时需要加载(要求和网络通讯库放在同一个目录下)。

 Qos库是流控库。推模式下支持,用于无线实时流的码流传输质量优化。

 软解码库主要用于对实时码流数据进行解码显示(实现预览功能)和对录像文件进行回放解码等。用户如果需要在SDK内部进行对实时流和录像码流播放显示时(即NET_DVR_RealPlay_V30接口的第二个结构体参数的播放句柄设置成有效句柄时)必须加载该组件,而如果用户仅需要用网络通讯库捕获到数据后再外部自行处理就不需要加载该组件,这种情况下用户在外部自行解码将更灵活,可参见软解码库函数说明《播放器SDK编程指南》。Linux 64位系统不支持软解码功能,预览、回放等窗口句柄传空,仅支持只取流不解码。

 硬解码库需在配备硬解码卡(MD卡)的前提下使用,通过解码卡的解码与输出功能实现实时流的解码显示及向监视器上矩阵输出的功能。对于转码设备,不需要使用该库文件。

3

设备网络SDK编程指南

2 SDK版本更新

Version 4.2.6.5

(build20130922)

 B10 V2.3 转码子系统新增

 新增获取所有流信息的功能(对应接口NET_DVR_GetDeviceConfig):

命令:NET_DVR_GET_ALLSTREAM_SRC_INFO

 新增转码压缩参数配置功能(对应接口NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig):

命令:NET_DVR_GET_STREAM_DST_COMPRESSIONINFO、NET_DVR_SET_STREAM_DST_COMPRESSIONINFO

 新增转码设备工作模式配置功能(对应接口NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig):

NET_DVR_DEV_WORK_MODE

 新增状态信息获取功能(对应接口NET_DVR_GetDeviceStatus):

NET_DVR_TRANSSTATUS(转码码流状态)、NET_DVR_TRANSDEVICE_STATUS(转码设备状态)

 新增被动转码功能:

NET_DVR_StartPassiveTransCode、NET_DVR_TransCodeInputData、NET_DVR_StopPassiveTransCode、NET_DVR_GetPassiveTransChanNum

 新增能力集(对应接口NET_DVR_GetDeviceAbility):

STREAM_ABILITY(流能力)、SYSTEM_MANAGEMENT_ABILITY(系统管理能力)

 NET_DVR_SetStandardDataCallBack回调数据类型增加NET_DVR_STREAMDATA,为音频RTP包无法解析的音视频复合流数据。

 NET_DVR_COMPRESSION_INFO_V30,使用1个保留字节新增参数:byFormatType(封装类型),参数byStreamType、byPicQuality、byVideoEncType、byAudioEncType、byVideoEncComplexity新增取值:0xfe-

自动(和源一致),dwVideoBitrate、dwVideoFrameRate新增取值:0xfffffffe- 自动(和源一致),wIntervalFrameI新增取值:0xfffe- 自动(和源一致)。byVideoEncType、byAudioEncType中取值“8-MPEG2”变更为“5-MPEG2”。

 NET_DVR_REBOOT_TIME使用1个保留字节新增参数:byRebootMode(0-按周重启,1-按月重启),byDate取值变更为“按周重启,取值1~7;按月重启,取值1~31”。

 NET_DVR_ETHERNET_MULTI使用1个保留字节新增参数:byCardType(网卡类型)。

 NET_DVR_NETCFG_MULTI使用1个保留字节新增参数:byWorkMode(0-普通多网卡模式,1-内外网隔离模式)。

 设备软硬件能力集(DEVICE_SOFTHARDWARE_ABILITY)新增节点:

 设备编码能力集(DEVICE_ENCODE_ALL_ABILITY_V20)的节点中新增子节点:

 新增异常信息类型:0x8024~0x8026

 新增错误码:951~953、955~960、962

4

设备网络SDK编程指南

3 函数调用顺序

注:流程图中虚线框的部分是可选的,不会影响其他流程和模块的功能使用。

3.1 主动转码模块流程

初始化SDKNET_DVR_Init用户注册设备NET_DVR_Login_V30流来源配置转码参数配置启动预览NET_DVR_RealPlay_V40设置实时流回调函数NET_DVR_SetRealDataCallBack设置标准流回调函数NET_DVR_SetStandardDataCallBack停止预览NET_DVR_StopRealPlay注销设备NET_DVR_Logout释放SDK资源NET_DVR_Cleanup

 登录转码设备,如果设备上事先没有配置流来源,需要先使用命令NET_DVR_GET_STREAM_SRC_INFO或者NET_DVR_GET_ALLSTREAM_SRC_INFO获取流信息。然后通过命令NET_DVR_SET_STREAM_SRC_INFO设置流来源信息。相关接口:NET_DVR_GetDeviceConfig、NET_DVR_SetDeviceConfig、NET_DVR_GetIPCProtoList。

 配置好流来源之后需要配置转码的目标压缩参数,相关命令:NET_DVR_GET_STREAM_DST_COMPRESSIONINFO、NET_DVR_SET_STREAM_DST_COMPRESSIONINFO,相关接口:NET_DVR_GetDeviceConfig、NET_DVR_SetDeviceConfig。

 调用NET_DVR_RealPlay_V40启动取流。如果是PS封装的码流在该接口或者接口NET_DVR_SetRealDataCallBack设置的实时流回调函数中获取;如果是RTP流,通过接口NET_DVR_SetStandardDataCallBack设置的标准流回调函数获取。

5

设备网络SDK编程指南

3.2 被动转码模块流程

初始化SDKNET_DVR_Init用户注册设备NET_DVR_Login_V30启动被动转码NET_DVR_StartPassiveTransCode获取设备分配的转码通道号NET_DVR_GetPassiveTransChanNum向被动转码通道发送数据 NET_DVR_TransCodeInputData停止被动转码NET_DVR_StopPassiveTransCode注销设备NET_DVR_Logout释放SDK资源NET_DVR_Cleanup

 调用NET_DVR_StartPassiveTransCode指定转码目标压缩参数等转码相关参数,启动被动转码。然后,通过接口NET_DVR_TransCodeInputData向转码通道发送数据。数据可以是从远程设备获取的实时流数据也可以是从录像文件读取的数据,每次发送的数据不能大于512K字节(建议100K以下)。整个过程结束还需要停止被动转码(NET_DVR_StopPassiveTransCode)等操作。转码后的数据在NET_DVR_StartPassiveTransCode设置的回调函数中获取。

6

设备网络SDK编程指南

4 函数说明

4.1 SDK初始化

4.1.1 初始化SDK NET_DVR_Init

函 数:

参 数:

返回值:

说 明:

BOOL NET_DVR_Init()

TRUE表示成功,FALSE表示失败。

调用设备网络SDK其他函数的前提。

返回目录

4.1.2 释放SDK资源NET_DVR_Cleanup

函 数:

参 数:

返回值:

说 明:

BOOL NET_DVR_Cleanup()

TRUE表示成功,FALSE表示失败。

在结束之前最后调用。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

返回目录

4.1.3 设置网络连接超时时间和连接尝试次数NET_DVR_SetConnectTime

函 数:

BOOL NET_DVR_SetConnectTime(DWORD dwWaitTime,DWORD dwTryTime)

参 数:

[in]dwWaitTime

超时时间,单位毫秒,取值范围[300,75000],实际最大超时时间

因系统的connect超时时间而不同。

[in]dwTryTimes

连接尝试次数(保留)

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

SDK默认建立连接的超时时间为3秒。SDK4.0及以后版本中当设置的超时时间超过或低于限制的值时接口不返回失败,将取最接近的上下限限制值作为实际的超时时间。

返回目录

4.1.4 设置重连功能NET_DVR_SetReconnect

函 数:

BOOL NET_DVR_SetReconnect (DWORD dwInterval,BOOL bEnableRecon)

参 数:

[in]dwInterval

重连间隔,单位:毫秒

[in]bEnableRecon

是否重连,0-不重连,1-重连,参数默认为1

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过

7

设备网络SDK编程指南

错误码判断出错原因。

说 明:

该接口可以同时控制预览、透明通道和布防的重连功能。不调用该接口时,SDK默认启动预览、透明通道和布防的重连功能,重连时间间隔为5秒。

返回目录

4.1.5 设置接收超时时间NET_DVR_SetRecvTimeOut

函 数:

BOOL NET_DVR_SetRecvTimeOut(DWORD nRecvTimeOut)

参 数:

[in] nRecvTimeOut

接收超时时间,单位毫秒,默认为5000,最小为3000毫秒

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

该接口用于设置接收超时时间,例如预览接收实时流数据、回放下载接收录像数据、报警接收报警信息等接收超时时间。

返回目录

4.1.6 获取所有IP,用于支持多网卡接口NET_DVR_GetLocalIP

函 数:

BOOL NET_DVR_GetLocalIP(char strIP[16][16], DWORD *pValidNum, BOOL *pEnableBind)

参 数:

[out] strIP

存放IP的缓冲区,不能为空

[out] pValidNum

所有有效 IP 的数量

[out] pEnableBind

是否绑定

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

该接口获取客户端本地多网卡的所有IP地址,可以通过接口NET_DVR_SetValidIP选择要使用的IP地址。

返回目录

4.1.7 设置IP绑定NET_DVR_SetValidIP

函 数:

BOOL NET_DVR_SetValidIP(DWORD dwIPIndex, BOOL bEnableBind)

参 数:

[in] dwIPIndex

选择使用的IP下标,由NET_DVR_GetLocalIP获取

[in] bEnableBind

是否绑定

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.1.8 通过解析服务器,获取设备的动态IP地址和端口号NET_DVR_GetDVRIPByResolveSvr_EX

函 数:

BOOL NET_DVR_GetDVRIPByResolveSvr_EX (char* sServerIP, WORD wServerPort, BYTE* sDVRName,

8

设备网络SDK编程指南

WORD wDVRNameLen, BYTE* sDVRSerialNumber, WORD wDVRSerialLen, char* sGetIP, DWORD*

dwPort)

参 数:

[in]sServerIP

解析服务器的IP地址

[in]wServerPort

解析服务器的端口号,IP Server解析服务器端口号为7071,

HiDDNS服务器的端口号为80

[in]sDVRName

设备名称

[in]wDVRNameLen

设备名称的长度

[in]sDVRSerialNumber

设备的序列号

[in]wDVRSerialLen

设备序列号的长度

[out]sGetIP

获取到的设备IP地址指针

[out]dwPort

获取到的设备端口号指针

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

该接口中的设备名称和设备序列号不能同时为空。支持的解析服务器有IPServer和hiDDNS。

返回目录

4.2 异常消息回调

4.2.1 注册接收异常、重连等消息的窗口句柄或回调函数NET_DVR_SetExceptionCallBack_V30

函 数: Windows系统下:

BOOL NET_DVR_SetExceptionCallBack_V30 (UINT nMessage,HWND hWnd,fExceptionCallBack

cbExceptionCallBack,void* pUser)

Linux系统下:

BOOL NET_DVR_SetExceptionCallBack_V30(UINT nMessage,void* hWnd,fExceptionCallBack

cbExceptionCallBack,void* pUser)

参 数:

[in]nMessage

消息,Linux下该参数保留

[in]hWnd

接收异常消息的窗口句柄,Linux下该参数保留

[in]cbExceptionCallBack

接收异常消息的回调函数,回调当前异常的相关信息

[in]pUser

用户数据

typedef void(CALLBACK* fExceptionCallBack)(DWORD dwType, LONG lUserID, LONG lHandle, void

*pUser)

[out]dwType

异常或重连等消息的类型,见下文列表

[out]lUserID

登录ID

[out]lHandle

出现异常的相应类型的句柄

[out]pUser

用户数据

dwType宏定义 宏定义值 含义

EXCEPTION_EXCHANGE

EXCEPTION_ALARM

EXCEPTION_PREVIEW

0x8000

0x8002

0x8003

用户交互时异常(注册心跳超时,心跳间隔为2分钟)

报警异常

网络预览异常

9

设备网络SDK编程指南

返回值:说 明:

EXCEPTION_RECONNECT 0x8005

预览时重连

EXCEPTION_ALARMRECONNECT 0x8006

报警时重连

PREVIEW_RECONNECTSUCCESS 0x8015

预览时重连成功

ALARM_RECONNECTSUCCESS 0x8016

报警时重连成功

RESUME_EXCHANGE 0x8017

用户交互恢复

EXCEPTION_PASSIVETRANSRECONNECT 0x8024

被动转码重连

PASSIVETRANS_RECONNECTSUCCESS 0x8025

被动转码重连成功

EXCEPTION_PASSIVETRANS 0x8026

被动转码异常

TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

Windows下该函数的hWnd和cbExceptionCallBack不能同时为NULL,Linux下cbExceptionCallBack不能设置为NULL,否则将接收不到异常消息。

如果此结构是以回调方式反馈异常消息,那么应用程序中的异常回调函数实现如下,该函数中的参数dwType表示异常消息类型(见上表);lHandle表示发生异常的相应类型的句柄。

示例代码:

//注册接收异常消息的回调函数

NET_DVR_SetExceptionCallBack_V30(WM_NULL, NULL, g_ExceptionCallBack, NULL);

//接收异常消息的回调函数的外部实现

void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)

{

char tempbuf[256];

ZeroMemory(tempbuf,256);

switch(dwType)

{

case EXCEPTION_PASSIVETRANSRECONNECT: //被动转码重连

sprintf(tempbuf," 被动转码重连");

TRACE("%s",tempbuf);

break;

case PASSIVETRANS_RECONNECTSUCCESS: //被动转码重连成功

sprintf(tempbuf,"被动转码重连成功");

TRACE("%s",tempbuf);

break;

case EXCEPTION_PREVIEW: //预览时网络异常

sprintf(tempbuf,"网络预览时网络异常");

TRACE("%s",tempbuf);

//TODO: 关闭网络预览

break;

case EXCEPTION_PASSIVETRANS: //被动转码异常

sprintf(tempbuf,"被动转码异常");

TRACE("%s",tempbuf);

//TODO: 关闭被动转码

10

设备网络SDK编程指南

};

default:

}

break;

break;

//预览时重连

break;

case EXCEPTION_RECONNECT:

返回目录

4.3 SDK日志和信息

4.3.1 获取SDK的版本号和build信息NET_DVR_GetSDKBuildVersion

函 数:

DWORD NET_DVR_GetSDKBuildVersion()

参 数:

返回值: 获取SDK的版本号和build信息。

说 明:

SDK的版本号和build信息。2个高字节表示版本号 :25~32位表示主版本号,17~24位表示次版本号;2个低字节表示build信息。如0x03000101:表示版本号为3.0,build 号是0101。

返回目录

4.3.2 获取当前SDK的状态信息NET_DVR_GetSDKState

函 数:

BOOL NET_DVR_GetSDKState( LPNET_DVR_SDKSTATE pSDKState);

参 数:

[out]pSDKState

状态信息结构

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.3.3 获取当前SDK的功能信息NET_DVR_GetSDKAbility

函 数:

BOOL NET_DVR_GetSDKAbility( LPNET_DVR_SDKABL pSDKAbl)

参 数:

[out] pSDKAbl

功能信息结构,请参见结构体:NET_DVR_SDKABL

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.3.4 获取SDK本地参数NET_DVR_GetSDKLocalCfg

函 数:

BOOL NET_DVR_GetSDKLocalCfg(NET_SDK_LOCAL_CFG_TYPE enumType, void *lpOutBuff)

11

设备网络SDK编程指南

参 数:

[in] enumType

[out] lpOutBuff

配置类型

enum _NET_SDK_LOCAL_CFG_TYPE_{

NET_SDK_LOCAL_CFG_TYPE_TCP_PORT_BIND = 0,

NET_SDK_LOCAL_CFG_TYPE_UDP_PORT_BIND,

NET_SDK_LOCAL_CFG_TYPE_MEM_POOL,

NET_SDK_LOCAL_CFG_TYPE_MODULE_RECV_TIMEOUT,

NET_SDK_LOCAL_CFG_TYPE_ABILITY_PARSE,

NET_SDK_LOCAL_CFG_TYPE_TALK_MODE,

NET_SDK_LOCAL_CFG_TYPE_PROTECT_KEY

}NET_SDK_LOCAL_CFG_TYPE

输出参数,不同的配置类型,输出参数对应不同的结构,详见“说 明”中列表

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

enumType宏定义

NET_SDK_LOCAL_CFG_TYPE_TCP_PORT_BIND

NET_SDK_LOCAL_CFG_TYPE_UDP_PORT_BIND

含义 lpOutBuff对应结构体

本地TCP端口绑定配置

NET_DVR_LOCAL_TCP_PORT_BIND_CFG

本地UDP端口绑定配置

NET_DVR_LOCAL_UDP_PORT_BIND_CFG

NET_SDK_LOCAL_CFG_TYPE_MEM_POOL

内存池本地配置

NET_DVR_LOCAL_MEM_POOL_CFG

NET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG

NET_DVR_LOCAL_ABILITY_PARSE_CFG

NET_SDK_LOCAL_CFG_TYPE_MODULE_RECV_TIMEOUT

按模块配置超时时间

NET_SDK_LOCAL_CFG_TYPE_ABILITY_PARSE

是否使用能力集解析库

NET_SDK_LOCAL_CFG_TYPE_TALK_MODE

NET_SDK_LOCAL_CFG_TYPE_PROTECT_KEY

对讲模式配置

密钥配置

NET_DVR_LOCAL_TALK_MODE_CFG

NET_DVR_LOCAL_PROTECT_KEY_CFG

返回目录

4.3.5 设置SDK本地参数NET_DVR_SetSDKLocalCfg

函 数:

BOOL NET_DVR_SetSDKLocalCfg(NET_SDK_LOCAL_CFG_TYPE enumType, void* const lpInBuff)

参 数:

[in] enumType

配置类型

enum _NET_SDK_LOCAL_CFG_TYPE_{

NET_SDK_LOCAL_CFG_TYPE_TCP_PORT_BIND = 0,

NET_SDK_LOCAL_CFG_TYPE_UDP_PORT_BIND,

NET_SDK_LOCAL_CFG_TYPE_MEM_POOL,

NET_SDK_LOCAL_CFG_TYPE_MODULE_RECV_TIMEOUT,

NET_SDK_LOCAL_CFG_TYPE_ABILITY_PARSE,

NET_SDK_LOCAL_CFG_TYPE_TALK_MODE,

NET_SDK_LOCAL_CFG_TYPE_PROTECT_KEY

}NET_SDK_LOCAL_CFG_TYPE

输入参数,不同的配置类型,输出参数对应不同的结构,详见“说

[in] lpInBuff

12

设备网络SDK编程指南

明”中列表

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

enumType宏定义

NET_SDK_LOCAL_CFG_TYPE_TCP_PORT_BIND

NET_SDK_LOCAL_CFG_TYPE_UDP_PORT_BIND

含义 lpInBuff对应结构体

本地TCP端口绑定配置

NET_DVR_LOCAL_TCP_PORT_BIND_CFG

本地UDP端口绑定配置

NET_DVR_LOCAL_UDP_PORT_BIND_CFG

NET_SDK_LOCAL_CFG_TYPE_MEM_POOL

内存池本地配置

NET_DVR_LOCAL_MEM_POOL_CFG

NET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG

NET_DVR_LOCAL_ABILITY_PARSE_CFG

NET_SDK_LOCAL_CFG_TYPE_MODULE_RECV_TIMEOUT

按模块配置超时时间

NET_SDK_LOCAL_CFG_TYPE_ABILITY_PARSE

是否使用能力集解析库

NET_SDK_LOCAL_CFG_TYPE_TALK_MODE

NET_SDK_LOCAL_CFG_TYPE_PROTECT_KEY

对讲模式配置

密钥配置

NET_DVR_LOCAL_TALK_MODE_CFG

NET_DVR_LOCAL_PROTECT_KEY_CFG

返回目录

4.3.6 启用写日志文件NET_DVR_SetLogToFile

函 数:

BOOL NET_DVR_SetLogToFile(DWORD bLogEnable,char* strLogDir,BOOL bAutoDel)

参 数:

[in]bLogEnable

日志的等级(默认为0):

0-表示关闭日志

1-表示只输出ERROR错误日志

2-输出ERROR错误信息和DEBUG调试信息

3-输出ERROR错误信息、DEBUG调试信息和INFO普通信息等所

有信息

[in]strLogDir

日志文件的路径,windows默认值为"C:SdkLog";linux默认值 "/home/sdklog/"

[in]bAutoDel

是否删除超出的文件数,默认值为TRUE

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

日志文件路径必须是绝对路径,且以""结尾,例如"C:SdkLog",建议用户先手动创建文件。若未指定文件路径,则采用默认路径"C:SdkLog"。可多次调用该接口创建新的日志文件,同时最多支持创建10个文件,当设置了删除超出的文件时(即bAutoDel为TRUE),那么将会自动删除超出的文件。更改目录时到下一次写文件时才会使用新的目录写文件。

返回目录

13

设备网络SDK编程指南

4.4 获取错误信息

4.4.1 返回最后操作的错误码NET_DVR_GetLastError

函 数:

参 数:

返回值:

说 明:

DWORD NET_DVR_GetLastError()

返回最后操作的错误码。详见错误码宏定义

返回值为错误码。错误码主要分为网络通讯库错误码、RTSP通讯库错误码和软硬解库错误码。

返回目录

4.4.2 返回最后操作的错误码信息NET_DVR_GetErrorMsg

函 数:

char* NET_DVR_GetErrorMsg(LONG *pErrorNo)

参 数:

[out] pErrorNo

错误码数值的指针

返回值: 返回值为错误码信息的指针。错误码主要分为网络通讯库错误码、RTSP通讯库错误码和软硬解库错误码。详见错误码宏定义

说 明:

返回目录

4.5 用户注册

4.5.1 用户注册设备NET_DVR_Login_V30

函 数:

LONG NET_DVR_Login_V30( char *sDVRIP,WORD wDVRPort, char *sUserName, char *sPassword,

LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo)

参 数:

[in] Sdvrip

设备IP地址

[in] wDVRPort

设备端口号

[in] sUserName

登录的用户名

[in] sPassword

用户密码

[out] lpDeviceInfo

设备信息,包括设备序列号、设备类型等,请参见结构体NET_DVR_DEVICEINFO_V30

返回值: -1表示失败,其他值表示返回的用户ID值。该用户ID具有唯一性,后续对设备的操作都需要通过此ID实现。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

SDK支持2048个注册,返回UserID的取值范围为0~2047。

返回目录

4.5.2 用户注销NET_DVR_Logout

函 数:

BOOL NET_DVR_Logout(LONG lUserID)

14

设备网络SDK编程指南

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

建议使用此接口实现注销功能。

返回目录

4.6 获取设备能力集

4.6.1 获取设备能力集NET_DVR_GetDeviceAbility

函 数:

BOOL NET_DVR_GetDeviceAbility(LONG lUserID, DWORD dwAbilityType, char* pInBuf, DWORD

dwInLength, char* pOutBuf, DWORD dwOutLength)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30返回值

[in] dwAbilityType

能力类型,具体定义见下表

[in]pInBuf

输入缓冲区指针(按照设备规定的能力参数的描述方式组合,可

以是XML文本或结构体形式)

[in]dwInLength

输入缓冲区的长度

[out] pOutBuf

输出缓冲区指针(按照设备规定的能力集的描述方式,可以是

XML文本或结构体形式)

[in] dwOutLength

接收数据的缓冲区的长度

dwAbilityType宏定义

DEVICE_SOFTHARDWARE_ABILITY

DEVICE_ENCODE_ALL_ABILITY_V20

DEVICE_ALARM_ABILITY

DEVICE_USER_ABILITY

DEVICE_NETAPP_ABILITY

DEVICE_SERIAL_ABILITY

STREAM_ABILITY

SYSTEM_MANAGEMENT_ABILITY

宏定义值

0x001

0x008

0x00a

0x00c

0x00d

0x010

0x012

0x013

含义

设备软硬件能力

设备编码能力

设备报警能力

设备用户管理参数能力

设备网络应用参数能力

设备RS232和RS485串口能力

设备流能力集

设备系统管理能力集

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

不同的能力集对应不同的pInBuf 和pOutBuf,上述能力集均使用XML方式描述,具体格式定义如下所示。

pInBuf pOutBuf

能力类型宏定义 能力类型说明

DEVICE_SOFTHARDWARE_ABILITY

获取设备软硬件能力 无

编码能力获取输入描述

报警能力获取输入描述

软硬件能力XML描述

编码能力XML描述

报警能力XML描述

DEVICE_ENCODE_ALL_ABILITY_V20

获取设备编码能力

DEVICE_ALARM_ABILITY

DEVICE_USER_ABILITY

获取设备报警能力

获取设备用户管理参用户管理参数能力获取输入用户管理参数能力XML数能力 描述 描述

15

设备网络SDK编程指南

DEVICE_NETAPP_ABILITY

获取设备网络应用参网络应用参数能力获取输入网络应用参数能力XML数能力

DEVICE_SERIAL_ABILITY

获取设备RS232和RS485串口能力

STREAM_ABILITY

SYSTEM_MANAGEMENT_ABILITY

描述

串口能力获取输入描述

描述

串口能力XML描述

获取流能力

获取系统管理能力

流能力获取输入描述 流能力XML描述

系统管理能力获取输入描述 系统管理能力XML描述

注:能力集XML描述详细内容请参见《设备网络SDK使用手册.chm》。

返回目录

4.7 远程参数配置

基本参数配置

4.7.1 获取设备的配置信息NET_DVR_GetDVRConfig

函 数:

BOOL NET_DVR_GetDVRConfig(LONG lUserID, DWORD dwCommand,LONG lChannel, LPVOID

lpOutBuffer, DWORD dwOutBufferSize, LPDWORD lpBytesReturned)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

[in] dwCommand

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

[in] lChannel

通道号,如果命令不需要通道号,该参数无效,置为0xFFFFFFFF

即可

[out] lpOutBuffer

接收数据的缓冲指针

[in] dwOutBufferSize

接收数据的缓冲长度(以字节为单位),不能为0

[out] lpBytesReturned

实际收到的数据长度指针,不能为NULL

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

不同的获取功能对应不同的结构体和命令号,如下表所示:

dwCommand宏定义

NET_DVR_GET_NETCFG_MULTI

dwCommand含义

获取多网卡配置

lChannel

lpOutBuffer对应结构体

无效

无效

NET_DVR_NETCFG_MULTI

宏定义值

1161

NET_DVR_GET_AUTO_REBOOT_CFG

获取自动重启参数

NET_DVR_GET_DEV_WORK_MODE

NET_DVR_GET_DEVICECFG_V40

NET_DVR_GET_DECODERCFG_V30

NET_DVR_AUTO_REBOOT_CFG 1710

NET_DVR_DEV_WORK_MODE 9108

NET_DVR_DEVICECFG_V40

NET_DVR_DECODERCFG_V30

1100

1042

获取转码设备工作模式 无效

获取设备参数(扩展) 无效

获取RS485(云台解码器)有效

参数

NET_DVR_GET_RS232CFG_V30

NET_DVR_GET_ALARMINCFG_V30

获取RS232串口参数

获取报警输入参数

无效

有效

有效

无效

NET_DVR_RS232CFG_V30

NET_DVR_ALARMINCFG_V30

1036

1024

NET_DVR_GET_ALARMOUTCFG_V30

获取报警输出参数

NET_DVR_GET_TIMECFG

获取时间参数

NET_DVR_ALARMOUTCFG_V30 1026

NET_DVR_TIME 118

16

设备网络SDK编程指南

NET_DVR_GET_USERCFG_V30

获取用户参数 无效

无效

无效

无效

无效

NET_DVR_USER_V30

NET_DVR_EXCEPTION_V30

NET_DVR_NETAPPCFG

NET_DVR_NTPPARA

NET_DVR_DDNSPARA_V30

1006

1034

222

224

1010

NET_DVR_GET_EXCEPTIONCFG_V30

获取异常参数

NET_DVR_GET_NETAPPCFG

NET_DVR_GET_NTPCFG

NET_DVR_GET_DDNSCFG_V30

获取NTP/DDNS参数

获取NTP校时参数

获取DDNS参数

返回目录

4.7.2 设置设备的配置信息NET_DVR_SetDVRConfig

函 数:

BOOL NET_DVR_SetDVRConfig(LONG lUserID, DWORD dwCommand,LONG lChannel, LPVOID

lpInBuffer, DWORD dwInBufferSize)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

[in] dwCommand

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

[in] lChannel

通道号,如果命令不需要通道号,该参数无效,置为0xFFFFFFFF

即可

[in] lpInBuffer

输入数据的缓冲指针

[in] dwInBufferSize

输入数据的缓冲长度(以字节为单位)

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

不同的获取功能对应不同的结构体和命令号,如下表所示:

dwCommand宏定义

NET_DVR_SET_NETCFG_MULTI

dwCommand含义

设置多网卡配置

lChannel

lpInBuffer对应结构体

无效

无效

NET_DVR_NETCFG_MULTI

宏定义值

1162

NET_DVR_SET_AUTO_REBOOT_CFG

设置自动重启参数

NET_DVR_SET_DEV_WORK_MODE

NET_DVR_SET_DEVICECFG_V40

NET_DVR_SET_DECODERCFG_V30

NET_DVR_AUTO_REBOOT_CFG 1711

NET_DVR_DEV_WORK_MODE 9109

NET_DVR_DEVICECFG_V40

NET_DVR_DECODERCFG_V30

1101

1043

设置转码设备工作模式 无效

设置设备参数(扩展) 无效

设置RS485(云台解码器)有效

参数

NET_DVR_SET_RS232CFG_V30

NET_DVR_SET_ALARMINCFG_V30

设置232串口参数

设置报警输入参数

无效

有效

有效

无效

无效

无效

无效

无效

无效

NET_DVR_RS232CFG_V30

NET_DVR_ALARMINCFG_V30

1037

1025

NET_DVR_SET_ALARMOUTCFG_V30

设置报警输出参数

NET_DVR_SET_TIMECFG

NET_DVR_SET_USERCFG_V30

设置时间参数

设置用户参数

NET_DVR_ALARMOUTCFG_V30 1027

NET_DVR_TIME

NET_DVR_USER_V30

NET_DVR_EXCEPTION_V30

NET_DVR_NETAPPCFG

NET_DVR_NTPPARA

NET_DVR_DDNSPARA_V30

119

1007

1035

223

225

1011

NET_DVR_SET_EXCEPTIONCFG_V30

设置异常参数

NET_DVR_SET_NETAPPCFG

NET_DVR_SET_NTPCFG

NET_DVR_SET_DDNSCFG_V30

设置NTP/DDNS参数

设置NTP校时参数

设置DDNS参数

返回目录

17

设备网络SDK编程指南

4.7.3 批量获取配置信息NET_DVR_GetDeviceConfig

函 数:

BOOL NET_DVR_GetDeviceConfig(LONG lUserID, DWORD dwCommand, DWORD dwCount, LPVOID

lpInBuffer, DWORD dwInBufferSize, LPVOID lpStatusList, LPVOID lpOutBuffer, DWORD

dwOutBufferSize)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

[in] dwCommand

设备配置命令,详见下表

[in] dwCount

配置个数

配置条件缓冲区,详见“说 明”中的列表

[in] lpInBuffer

[in] dwInBufferSize

[out] lpStatusList

[out] lpOutBuffer

[in] dwOutBufferSize

dwCommand宏定义

NET_DVR_GET_STREAM_SRC_INFO

NET_DVR_GET_STREAM_DST_COMPRESSIONINFO

NET_DVR_GET_ALLSTREAM_SRC_INFO

缓冲区长度

错误信息列表,和要查询的监控点一一对应,例如lpStatusList[2]就对应lpInBuffer[2],由用户分配内存,每个错误信息为4个字节,参数值:0- 成功,大于0-失败

设备备返回的参数内容(详见“说 明”中的列表),和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0值,对应lpOutBuffer的内容就是无效的

输出缓冲区大小

宏定义值

6017

9101

9105

dwCommand含义

获取流的来源信息

获取目标压缩参数

获取所有流信息

返回值: TRUE表示成功,但不代表每一个配置都成功,哪一个成功,对应查看lpStatusList[n]值;FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息,lpOutBuffer保存获取得到的dwCount个监控点的配置信息。全部获取时dwCount置为0xffffffff,lpInBuffer置为NULL,dwInBufferSize置为0,lpStatusList置为NULL;lpOutBuffer前面4个字节为个数(N),后面为设备返回的N个信息内容。

dwCommand

lpInBuffer对应结构体 lpOutBuffer对应结构体

6017

9101

9105

dwCount个NET_DVR_STREAM_INFO

dwCount个NET_DVR_STREAM_INFO

NULL

dwCount个NET_DVR_STREAM_SRC_INFO

dwCount个NET_DVR_COMPRESSIONCFG_V30

4字节个数(N) + N个NET_DVR_STREAM_SRC_CFG

返回目录

4.7.4 批量设置配置信息NET_DVR_SetDeviceConfig

函 数:

BOOL NET_DVR_SetDeviceConfig(LONG lUserID,DWORD dwCommand,DWORD dwCount,LPVOID

lpInBuffer,DWORD dwInBufferSize,LPVOID lpStatusList, LPVOID lpInParamBuffer,DWORD

dwInParamBufferSize)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

18

设备网络SDK编程指南

[in] dwCommand

[in] dwCount

[in] lpInBuffer

[in] dwInBufferSize

[out] lpStatusList

[in] lpInParamBuffer

[in] dwInParamBufferSize

dwCommand宏定义

NET_DVR_SET_STREAM_SRC_INFO

NET_DVR_SET_STREAM_DST_COMPRESSIONINFO

设备配置命令,详见下表

配置个数

配置条件缓冲区,详见“说 明”中的列表

缓冲区长度

错误信息列表,和要查询的监控点一一对应,例如lpStatusList[2]就对应lpInBuffer[2],由用户分配内存,每个错误信息为4个字节,参数值:0- 成功,大于0-失败

需要设置给设备的参数内容(详见“说 明”中的列表),和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0值,表示对应的lpInBuffer设置失败,为0则设置成功

设置内容缓冲区大小

宏定义值

6018

9102

dwCommand含义

设置流的来源信息

设置目标压缩参数

返回值: TRUE表示成功,但不代表每一个配置都成功,哪一个成功,对应查看lpStatusList[n]值;FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息,lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

dwCommand为NET_DVR_SET_STREAM_SRC_INFO(6018)时,如果将IP地址、URL都设为空,则表示删除流ID(dwCount为0xffff ffff时表示删除所有流ID)。

dwCommand

lpInBuffer对应结构体 lpInParamBuffer对应结构体

6018

9102

dwCount个NET_DVR_STREAM_INFO

dwCount个NET_DVR_STREAM_INFO

dwCount个NET_DVR_STREAM_SRC_INFO

dwCount个NET_DVR_COMPRESSIONCFG_V30

返回目录

获取IPC协议列表

4.7.5 获取设备支持的IPC协议表NET_DVR_GetIPCProtoList

函 数:

BOOL NET_DVR_GetIPCProtoList(LONG lUserID, LPNET_DVR_IPC_PROTO_LIST lpProtoList)

参 数:

[in]lUserID

NET_DVR_Login_V30的返回值

[out]lpProtoList

IPC协议列表结构,请参见结构体NET_DVR_IPC_PROTO_LIST

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

该接口用于获取当前设备所支持的外接IPC的协议。

返回目录

19

设备网络SDK编程指南

报警输出设置

4.7.6 获取设备报警输出NET_DVR_GetAlarmOut_V30

函 数:

BOOL NET_DVR_GetAlarmOut_V30(LONG lUserID, LPNET_DVR_ALARMOUTSTATUS_V30

lpAlarmOutState)

参 数:

[in]lUserID

用户ID号,NET_DVR_Login_V30的返回值

[out]lpAlarmOutState

报警输出状态,请参见结构体NET_DVR_ALARMOUTSTATUS_V30

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.7.7 设置设备报警输出NET_DVR_SetAlarmOut

函 数:

BOOL NET_DVR_SetAlarmOut(LONG lUserID, LONG lAlarmOutPort,LONG lAlarmOutStatic)

参 数:

[in]lUserID

用户ID号,NET_DVR_Login_V30的返回值

[in]lAlarmOutPort

报警输出口。初始输出口从0开始,0x00ff表示全部模拟输出,

0xff00表示全部数字输出,DS-90xx系列设备同时支持对IP接入

的报警输出进行处理,对应32-95为数字报警输出

[in]lAlarmOutStatic

报警输出状态:0-停止输出,1-输出

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.8 实时预览

4.8.1 实时预览NET_DVR_RealPlay_V40

函 数:

LONG NET_DVR_RealPlay_V40(LONG lUserID, LPNET_DVR_PREVIEWINFO lpPreviewInfo,

REALDATACALLBACK fRealDataCallBack_V30, void *pUser)

参 数:

[in] lUserID

NET_DVR_Login或NET_DVR_Login_V30的返回值

[in]

lpPreviewInfo

预览参数,请参见结构体:NET_DVR_PREVIEWINFO

[in] fRealDataCallBack_V30

码流数据回调函数

[in] pUser

用户数据

typedef void(CALLBACK *REALDATACALLBACK) (LONG lRealHandle, DWORD dwDataType, BYTE

*pBuffer, DWORD dwBufSize, void *pUser);

[out]lRealHandle

当前的预览句柄,NET_DVR_RealPlay_V40的返回值

[out]dwDataType

数据类型,详见下表

20

设备网络SDK编程指南

[out] pBuffer

[out]dwBufSize

[out]pUser

dwDataType宏定义

NET_DVR_SYSHEAD

NET_DVR_STREAMDATA

存放数据的缓冲区指针

缓冲区大小

用户数据

宏定义值

1

2

含义

系统头数据

流数据(包括复合流或音视频分开的视频流数据)

返回值: -1表示失败,其他值作为NET_DVR_StopRealPlay等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

该接口预览参数结构中可以设置当前预览操作是否阻塞(通过bBlocked参数设置),若设为不阻塞,表示发起与设备的连接就认为连接成功,如果发生码流接收失败、播放失败等情况以预览异常的方式通知上层。在循环播放的时候可以减短停顿的时间,与NET_DVR_RealPlay处理一致。若设为阻塞,表示直到播放操作完成才返回成功与否。

该接口中的回调函数可以置为空,这样该函数将不回调码流数据给用户,不过用户仍可以通过接口NET_DVR_SetRealDataCallBack或NET_DVR_SetStandardDataCallBack注册捕获码流数据的回调函数以捕获码流数据。

fRealDataCallBack_V30回调函数中不能执行可能会占用时间较长的接口或操作,不建议调用该SDK()本身的接口。

Linux 64位系统不支持软解码功能,因此需要将窗口句柄传NULL,设置回调函数,只取流不解码显示。

客户端异常离线时,设备端对取流连接的保持时间为10秒。

返回目录

4.8.2 停止预览NET_DVR_StopRealPlay

函 数:

LONG NET_DVR_StopRealPlay (LONG lRealHandle)

参 数:

[in]lRealHandle

预览句柄,NET_DVR_RealPlay_V40的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.9 实时预览数据捕获

4.9.1 注册回调函数,捕获实时码流数据NET_DVR_SetRealDataCallBack

函 数:

BOOL NET_DVR_SetRealDataCallBack(LONG lRealHandle, fRealDataCallBack cbRealDataCallBack,

DWORD dwUser)

参 数:

[in]lRealHandle

预览句柄,NET_DVR_RealPlay_V40的返回值

[in]cbRealDataCallBack

码流数据回调函数

[in]dwUser

用户数据

typedef void(CALLBACK *fRealDataCallBack)(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,

21

设备网络SDK编程指南

DWORD dwBufSize, DWORD dwUser)

[out]lRealHandle

当前的预览句柄

[out]dwDataType

数据类型

[out]pBuffer

存放数据的缓冲区指针

[out]dwBufSize

缓冲区大小

[out]dwUser

用户数据

dwDataType宏定义

NET_DVR_SYSHEAD

NET_DVR_STREAMDATA

宏定义值

1

2

含义

系统头数据

流数据(包括复合流或音视频分开的视频流数据)

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

此函数包括开始和停止用户处理SDK捕获的数据,当回调函数cbRealDataCallBack设为非NULL值时,表示回调和处理数据;当设为NULL时表示停止回调和处理数据。回调的第一个包是40个字节的文件头,供后续解码使用,之后回调的是压缩的码流。回调数据最大为256K字节。

cbRealDataCallBack回调函数中不能执行可能会占用时间较长的接口或操作,不建议调用该SDK()本身的接口。

返回目录

4.9.2 注册回调函数,捕获实时码流数据(标准码流)NET_DVR_SetStandardDataCallBack

函 数:

BOOL NET_DVR_SetStandardDataCallBack(LONG lRealHandle, fStdDataCallBack cbStdDataCallBack,

DWORD dwUser)

参 数:

[in]lRealHandle

预览句柄,NET_DVR_RealPlay_V40的返回值

[in]cbStdDataCallBack

标准码流回调函数

[in]dwUser

用户数据

typedef void(CALLBACK *fStdDataCallBack)(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,

DWORD dwBufSize, DWORD dwUser)

[out]lRealHandle

[out]dwDataType

[out]pBuffer

[out]dwBufSize

[out]dwUser

dwDataType宏定义

NET_DVR_SYSHEAD

NET_DVR_STREAMDATA

NET_DVR_STD_VIDEODATA

NET_DVR_STD_AUDIODATA

当前的预览句柄

数据类型

存放数据的缓冲区指针

缓冲区大小

用户数据

宏定义值

1

2

4

5

含义

系统头数据

音视频复合流数据

标准视频流数据

标准音频流数据

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

22

设备网络SDK编程指南

说 明:

此函数包括开始和停止用户处理SDK捕获的数据,当回调函数cbStdDataCallBack设为非NULL值时,表示回调和处理数据;当设为NULL时表示停止回调和处理数据。回调的第一个包是40个字节的文件头,供后续解码使用,之后回调的是标准码流(含12字节的RTP头)。

cbStdDataCallBack回调函数中不能执行可能会占用时间较长的接口或操作,不建议调用该SDK()本身的接口。

此函数仅支持对于支持RTSP协议取流的设备的标准码流回调。

返回目录

4.9.3 捕获数据并保存到指定的文件中NET_DVR_SaveRealData

函 数:

BOOL NET_DVR_SaveRealData(LONG lRealHandle, char *sFileName)

参 数:

[in]lRealHandle

NET_DVR_RealPlay_V40的返回值

[in]sFileName

文件路径指针

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.9.4 停止数据捕获NET_DVR_StopSaveRealData

函 数:

BOOL NET_DVR_StopSaveRealData(LONG lRealHandle )

参 数:

[in]lRealHandle

NET_DVR_RealPlay_V40的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.10 被动转码

4.10.1 启动被动转码NET_DVR_StartPassiveTransCode

函 数:

LONG NET_DVR_StartPassiveTransCode(LONG lUserID, LPNET_DVR_STREAM_INFO pStreamInfo,

LPNET_DVR_COMPRESSIONCFG_V30 pDstTransInfo, LPNET_DVR_PASSIVETRANSINFO

pPassiveTransInfo, fTransCodeDataCallBack cbTransCodeDataCallBack, void *pUser)

参 数:

[in] lUserID

登录转码器的用户ID,NET_DVR_Login_V30的返回值

[in] pStreamInfo

流来源信息,请参见结构体NET_DVR_STREAM_INFO

[in] pDstTransInfo

目标压缩参数,请参见结构体NET_DVR_COMPRESSIONCFG_V30

[in] pPassiveTransInfo

被动转码参数,请参见结构体NET_DVR_PASSIVETRANSINFO

[in] cbTransCodeDataCallBack

回调函数,回调获取转码后的数据

[in] pUserData

用户数据

typedef void(CALLBACK *fTransCodeDataCallBack)(LONG lPassiveHandle, DWORD dwDataType,

23

设备网络SDK编程指南

BYTE *pBuffer, DWORD dwBufSize, void *pUser)

[out] lPassiveHandle

被动转码句柄,NET_DVR_StartPassiveTransCode的返回值

[out] dwDataType

数据类型,详见下表

[out] pBuffer

存放数据的缓冲区指针

[out] dwBufSize

缓冲区大小

[out] pUser

用户数据

宏定义

NET_DVR_SYSHEAD

NET_DVR_STREAMDATA

NET_DVR_STD_VIDEODATA

NET_DVR_STD_AUDIODATA

宏定义值

含义

1

2

4

5

系统头数据

流数据(包括复合流或音视频分开的视频流数据)

标准(RTP)视频流数据

标准(RTP)音频流数据

返回值: -1表示失败,其他值作为NET_DVR_TransCodeInputData函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

调用该接口时,pStreamInfo中流ID和通道号全部无效时,由设备自动分配,通过接口NET_DVR_GetPassiveTransChanNum可以获取对应的转码通道号或者流ID,然后可以通过接口NET_DVR_GetDeviceStatus获取转码码流状态。

返回目录

4.10.2 向被动转码通道发送数据NET_DVR_TransCodeInputData

函 数:

BOOL NET_DVR_TransCodeInputData(LONG lPassiveHandle, char *pBuffer, DWORD dwBufSize)

参 数:

[in] lPassiveHandle

被动转码句柄,NET_DVR_StartPassiveTransCode的返回值

[in] pBuffer

发送数据的缓冲区指针

[in] dwBufSize

缓冲区的大小,不超过512K,建议100K以下

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

通过该接口向转码通道输入实时流数据,如果是RTP流,每次输入需要是一个RTP包。码流头或者RTP码流的SDP信息在NET_DVR_StartPassiveTransCode启动转码时输入(结构体参数:pPassiveTransInfo)。

返回目录

4.10.3 停止被动转码NET_DVR_StopPassiveTransCode

函 数:

BOOL NET_DVR_StopPassiveTransCode(LONG lPassiveHandle)

参 数:

[in] lPassiveHandle

被动转码句柄,NET_DVR_StartPassiveTransCode的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

24

设备网络SDK编程指南

4.10.4 根据转码句柄获取设备转码通道号NET_DVR_GetPassiveTransChanNum

函 数:

LONG NET_DVR_GetPassiveTransChanNum(LONG lPassiveHandle)

参 数:

[in] lPassiveHandle

被动转码句柄,NET_DVR_StartPassiveTransCode的返回值

返回值: -1表示失败,其他值为设备转码通道号。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.11 布防、撤防

设置报警等信息上传的回调函数

4.11.1 注册回调函数,接收设备报警消息NET_DVR_SetDVRMessageCallBack_V30

函 数:

BOOL NET_DVR_SetDVRMessageCallBack_V30(MSGCallBack fMessageCallBack, void* pUser)

参 数:

[in]fMessageCallBack

报警信息回调函数

[in]pUser

用户数据

typedef void(CALLBACK *MSGCallBack)(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char

*pAlarmInfo, DWORD dwBufLen, void *pUser)

[out]lCommand

上传的消息类型

[out]pAlarmer

报警设备信息

[out]pAlarmInfo

报警信息

[out]dwBufLen

报警信息缓存大小

[out]pUser

用户数据

lCommand宏定义 宏定义值 含义

COMM_ALARM_V30 0x4000

设备的报警信息上传

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

lCommand和pAlarmInfo是密切关联的,其关系见下表:

消息类型(lCommand)

COMM_ALARM_V30

上传内容

设备报警信息

pAlarmInfo对应的结构体

NET_DVR_ALARMINFO_V30

返回目录

25

设备网络SDK编程指南

布防撤防

4.11.2 建立报警上传通道,获取报警等信息NET_DVR_SetupAlarmChan_V41

函 数:

LONG NET_DVR_SetupAlarmChan_V41(LONG lUserID, LPNET_DVR_SETUPALARM_PARAM

lpSetupParam)

参 数:

[in] lUserID

NET_DVR_Login_V30的返回值

[in] lpSetupParam

报警布防参数,请参见结构体:NET_DVR_SETUPALARM_PARAM

返回值: -1表示失败,其他值作为NET_DVR_CloseAlarmChan_V30函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

使用该接口支持上传V3.0以上版本支持的设备的报警结构。启动布防前,需要调用注册回调函数的接口(如NET_DVR_SetDVRMessageCallBack_V30)才能获取到上传的报警等信息。

返回目录

4.11.3 撤销报警上传通道NET_DVR_CloseAlarmChan_V30

函 数:

BOOL NET_DVR_CloseAlarmChan_V30(LONG lAlarmHandle)

参 数:

[in]lAlarmHandle

NET_DVR_SetupAlarmChan_V41的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.12 监听报警

4.12.1 启动监听,接收设备主动上传的报警等信息NET_DVR_StartListen_V30

函 数:

LONG NET_DVR_StartListen_V30(char *sLocalIP, WORD wLocalPort, MSGCallBack DataCallback, void*

pUserData = NULL)

参 数:

[in]sLocalIP

PC机本地IP地址,可以置为NULL

[in]wLocalPort

PC本地监听端口号。由用户设置,必须和设备端设置的一致

[in]DataCallback

回调函数

[in]pUserData

用户数据

typedef void(CALLBACK *MSGCallBack)(LONG lCommand,NET_DVR_ALARMER *pAlarmer,char

*pAlarmInfo,DWORD dwBufLen,void *pUser)

[out]lCommand

上传的消息类型

[out]pAlarmer

报警设备信息

[out]pAlarmInfo

报警信息

[out]dwBufLen

报警信息缓存大小

[out]pUser

用户数据

26

设备网络SDK编程指南

lCommand宏定义

COMM_ALARM_V30

宏定义值

0x4000

含义

设备的报警信息上传

返回值: -1表示失败,其他值作为NET_DVR_CloseAlarmChan_V30函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

该接口中回调函数的第一个参数(lCommand)和第三个参数(pAlarmInfo)是密切关联的,其关系见下表:

消息类型(lCommand)

COMM_ALARM_V30

上传内容

设备报警信息

pAlarmInfo对应的结构体

NET_DVR_ALARMINFO_V30

要使PC能够收到设备主动发过来的报警等信息,必须将设备的网络配置中的“远程管理主机地址”或者“远程报警主机地址”设置成PC机的IP地址(与接口中的sLocalIP参数一致),“远程管理主机端口号”或者“远程报警主机端口号”设置成PC机的监听端口号(与接口中的wLocalPort参数一致)。

该接口中的回调函数优先级高于其他回调函数,即设置了该接口中的回调函数,其他回调函数将接收不到报警信息。

返回目录

4.12.2 停止监听(支持多线程)NET_DVR_StopListen_V30

函 数:

BOOL NET_DVR_StopListen_V30(LONG lListenHandle)

参 数:

[in]lListenHandle

监听句柄,NET_DVR_StartListen_V30的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.13 设备状态

4.13.1 获取设备运行状态NET_DVR_GetDeviceStatus

函 数:

BOOL NET_DVR_GetDeviceStatus(LONG lUserID,DWORD dwCommand, DWORD dwCount, LPVOID

lpInBuffer, DWORD dwInBufferSize,LPVOID lpStatusList, LPVOID lpOutBuffer,DWORD dwOutBufferSize)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30返回值

[in] dwCommand

设备配置命令,详见下表

[in] dwCount

要获取的运行状态个数,详见下表

配置条件缓冲区,详见“说 明”中的列表

[in] lpInBuffer

[in] dwInBufferSize

[out] lpStatusList

[out] lpOutBuffer

缓冲区长度

错误信息列表,和要查询的监控点一一对应,例如lpStatusList[2]就对应lpInBuffer[2],由用户分配内存,每个错误信息为4个字节(1个32位无符号整数值),参数值:0- 成功,大于0- 失败

设备返回的参数内容(详见“说 明”中的列表),和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0

27

设备网络SDK编程指南

[in] dwOutBufferSize

dwCommand宏定义

值,对应lpOutBuffer的内容就是无效的

输出缓冲区大小

宏定义值 dwCommand含义

获取转码码流状态

获取转码设备状态

dwCount值

状态个数,0xffffffff表示全部

无效

NET_DVR_GET_STREAM_TRANS_STATUS 9103

NET_DVR_GET_DEVICE_TRANS_STATUS 9104

返回值: TRUE表示成功,但不代表每一个配置都成功,哪一个成功,对应查看lpStatusList[n]值;FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

该接口是带有发送数据的批量获取设备状态信息的通用接口。不同的获取功能对应不同的结构体和命令号,如下表所示:

dwCommand

9103

9104

lpInBuffer lpOutBuffer

dwCount个NET_DVR_STREAM_INFO dwCount个NET_DVR_TRANSSTATUS

NULL NET_DVR_TRANSDEVICE_STATUS获取全部时lpOutBuffer前4字节为个数,后面为列表所示的状态内容。

返回目录

4.14 设备维护管理

远程升级

4.14.1 设置远程升级时网络环境NET_DVR_SetNetworkEnvironment

函 数:

BOOL NET_DVR_SetNetworkEnvironment(DWORD dwEnvironmentLevel)

参 数:

[in] dwEnvironmentLevel

网络环境级别

enum{

LOCAL_AREA_NETWORK = 0, //局域网环境

WIDE_AREA_NETWORK //广域网环境

}

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

接口中的网络环境级别参数分为两类,

LOCAL_AREA_NETWORK表示局域网环境(网络环境好,通讯流畅);

WIDE_AREA_NETWORK 表示广域网环境(网络环境差,易阻塞)。

在调用远程升级接口之前,可以通过此接口适应不同的升级环境。

返回目录

4.14.2 远程升级NET_DVR_Upgrade

函 数:

LONG NET_DVR_Upgrade(LONG lUserID, char *sFileName)

参 数:

[in] lUserID

NET_DVR_Login_V30的返回值

28

设备网络SDK编程指南

升级的文件路径(包括文件名)。路径长度和操作系统有关,sdk不做限制,windows默认路径长度小于等于256字节(包括文件名在内)。

返回值: -1表示失败,其他值作为NET_DVR_GetUpgradeState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

[in] sFileName

4.14.3 获取远程升级的进度NET_DVR_GetUpgradeProgress

函 数:

int NET_DVR_GetUpgradeProgress(LONG lUpgradeHandle)

参 数:

[in] lUpgradeHandle

NET_DVR_Upgrade的返回值

返回值: -1表示失败,0~100表示升级进度。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.14.4 获取远程升级的状态NET_DVR_GetUpgradeState

函 数:

int NET_DVR_GetUpgradeState(LONG lUpgradeHandle)

参 数:

[in] lUpgradeHandle

NET_DVR_Upgrade的返回值

返回值: -1表示失败,其他值定义:1- 升级成功;2- 正在升级;3- 升级失败;4- 网络断开,状态未知;5- 升级文件语言版本不匹配。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.14.5 关闭远程升级句柄,释放资源NET_DVR_CloseUpgradeHandle

函 数:

BOOL NET_DVR_CloseUpgradeHandle(LONG lUpgradeHandle)

参 数:

[in] lUpgradeHandle

NET_DVR_Upgrade的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

日志查找

4.14.6 查找设备的日志信息NET_DVR_FindDVRLog_V30

函 数:

LONG NET_DVR_FindDVRLog_V30(LONG lUserID, LONG lSelectMode, DWORD dwMajorType,DWORD

29

设备网络SDK编程指南

dwMinorType, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime, BOOL bOnlySmart)

参 数:

[in]lUserID

NET_DVR_Login_V30的返回值

[in]lSelectMode

查询方式:0- 全部,1- 按类型,2- 按时间,3- 按时间和类型

[in]dwMajorType

日志主类型(S.M.A.R.T搜索时无效),0表示全部类型,其他类型

定义请参见dwMajorType日志主类型

[in]dwMinorType

日志次类型(S.M.A.R.T搜索时无效),0表示全部类型,根据不同

的主类型的次类型定义请参见dwMinorType日志次类型

[in]lpStartTime

文件的开始时间,请参见结构体NET_DVR_TIME

[in]lpStopTime

文件结束时间,请参见结构体NET_DVR_TIME

[in]bOnlySmart

是否只搜索带S.M.A.R.T信息的日志

返回值: -1表示失败,其他值作为NET_DVR_FindNextLog_V30等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

该接口如果用于搜索普通日志信息,通常不需要搜索详细的S.M.A.R.T信息时,置bOnlySmart为FALSE即可完成所有日志信息的搜索。

S.M.A.R.T信息:硬盘运行日志记录。

返回目录

4.14.7 逐条获取查找到的日志信息NET_DVR_FindNextLog_V30

函 数:

LONG NET_DVR_FindNextLog_V30(LONG lLogHandle, LPNET_DVR_LOG_V30 lpLogData)

参 数:

[in]lLogHandle

日志查找句柄,NET_DVR_FindDVRLog_V30()的返回值

[out]lpLogData

保存日志信息的指针,请参见结构体NET_DVR_LOG_V30

返回值: -1表示失败,其他值表示当前的获取状态等信息。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

在调用该接口获取查找日志之前,必须先调用NET_DVR_FindDVRLog_V30得到当前的查找句柄。

返回目录

4.14.8 释放查找日志的资源NET_DVR_FindLogClose_V30

函 数:

BOOL NET_DVR_FindLogClose_V30(LONG lLogHandle)

参 数:

[in]lLogHandle

日志查找句柄,NET_DVR_FindDVRLog_V30的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

恢复设备默认参数

4.14.9 恢复设备默认参数NET_DVR_RestoreConfig

函 数:

BOOL NET_DVR_RestoreConfig(LONG lUserID)

30

设备网络SDK编程指南

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

导入/导出配置文件

4.14.10 导出配置文件NET_DVR_GetConfigFile_V30

函 数:

BOOL NET_DVR_GetConfigFile_V30(LONG lUserID, char *sOutBuffer, DWORD dwOutSize, DWORD

*pReturnSize)

参 数:

[in]lUserID

用户ID号,NET_DVR_Login_V30的返回值

[out] sOutBuffer

存放配置参数的缓冲区

[in] dwOutSize

缓冲区大小

[out] pReturnSize

实际获得的缓冲区大小

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

当sOutBuffer = NULL、dwOutSize = 0且pReturnSize != NULL时用于获取参数配置文件的所需的缓冲区长度;当sOutBuffer != NULL且dwOutSize != 0时用于获取参数配置文件的所需的缓冲区内容。

返回目录

4.14.11 导出配置文件NET_DVR_GetConfigFile

函 数:

BOOL NET_DVR_GetConfigFile(LONG lUserID, char *sFileName)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

[in] sFileName

存放保存配置文件的文件路径(二进制文件)

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.14.12 导入配置文件NET_DVR_SetConfigFile_EX

函 数:

BOOL NET_DVR_SetConfigFile_EX(LONG lUserID, char *sInBuffer, DWORD dwInSize)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

[in] sInBuffer

存放配置参数的缓冲区

[in] dwInSize

缓冲区大小

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

31

设备网络SDK编程指南

说 明:

返回目录

4.14.13 导入配置文件NET_DVR_SetConfigFile

函 数:

BOOL NET_DVR_SetConfigFile(LONG lUserID, char *sFileName)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

[in] sFileName

存放保存配置文件的文件路径(二进制文件)

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.15 关机和重启

4.15.1 重启设备NET_DVR_RebootDVR

函 数:

BOOL NET_DVR_RebootDVR(LONG lUserID)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

4.15.2 关闭设备NET_DVR_ShutDownDVR

函 数:

BOOL NET_DVR_ShutDownDVR(LONG lUserID)

参 数:

[in] lUserID

用户ID号,NET_DVR_Login_V30的返回值

返回值: TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

说 明:

返回目录

32

设备网络SDK编程指南

5 错误代码及说明

5.1.1 网络通讯库错误码

NET_DVR_NOERROR

NET_DVR_PASSWORD_ERROR

NET_DVR_NOENOUGHPRI

NET_DVR_NOINIT

NET_DVR_CHANNEL_ERROR

NET_DVR_OVER_MAXLINK

NET_DVR_VERSIONNOMATCH

NET_DVR_NETWORK_FAIL_CONNECT

NET_DVR_NETWORK_SEND_ERROR

NET_DVR_NETWORK_RECV_ERROR

NET_DVR_NETWORK_RECV_TIMEOUT

NET_DVR_NETWORK_ERRORDATA

NET_DVR_ORDER_ERROR

NET_DVR_OPERNOPERMIT

NET_DVR_COMMANDTIMEOUT

NET_DVR_ERRORSERIALPORT

NET_DVR_ERRORALARMPORT

NET_DVR_PARAMETER_ERROR

NET_DVR_CHAN_EXCEPTION

NET_DVR_NODISK

NET_DVR_ERRORDISKNUM

NET_DVR_DISK_FULL

NET_DVR_DISK_ERROR

NET_DVR_NOSUPPORT

NET_DVR_BUSY

NET_DVR_MODIFY_FAIL

NET_DVR_PASSWORD_FORMAT_ERROR

NET_DVR_DISK_FORMATING

NET_DVR_DVRNORESOURCE

NET_DVR_DVROPRATEFAILED

NET_DVR_OPENHOSTSOUND_FAIL

NET_DVR_DVRVOICEOPENED

NET_DVR_TIMEINPUTERROR

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

没有错误。

用户名密码错误。注册时输入的用户名或者密码错误。

权限不足。该注册用户没有权限执行当前对设备的操作,可以与远程用户参数配置做对比。

SDK未初始化。

通道号错误。设备没有对应的通道号。

连接到设备的用户个数超过最大。

版本不匹配。SDK和设备的版本不匹配。

连接设备失败。设备不在线或网络原因引起的连接超时等。

向设备发送失败。

从设备接收数据失败。

从设备接收数据超时。

传送的数据有误。发送给设备或者从设备接收到的数据错误,如远程参数配置时输入设备不支持的值。

调用次序错误。

无此权限。

设备命令执行超时。

串口号错误。指定的设备串口号不存在。

报警端口错误。指定的设备报警输出端口不存在。

参数错误。SDK接口中给入的输入或输出参数为空。

设备通道处于错误状态

设备无硬盘。当设备无硬盘时,对设备的录像文件、硬盘配置等操作失败。

硬盘号错误。当对设备进行硬盘管理操作时,指定的硬盘号不存在时返回该错误。

设备硬盘满。

设备硬盘出错

设备不支持。

设备忙。

设备修改不成功。

密码输入格式不正确

硬盘正在格式化,不能启动操作。

设备资源不足。

设备操作失败。

语音对讲、语音广播操作中采集本地音频或打开音频输出失败。

设备语音对讲被占用。

时间输入不正确。

33

设备网络SDK编程指南

NET_DVR_NOSPECFILE

NET_DVR_CREATEFILE_ERROR

NET_DVR_FILEOPENFAIL

NET_DVR_OPERNOTFINISH

NET_DVR_GETPLAYTIMEFAIL

NET_DVR_PLAYFAIL

NET_DVR_FILEFORMAT_ERROR

NET_DVR_DIR_ERROR

NET_DVR_ALLOC_RESOURCE_ERROR

NET_DVR_AUDIO_MODE_ERROR

NET_DVR_NOENOUGH_BUF

NET_DVR_CREATESOCKET_ERROR

NET_DVR_SETSOCKET_ERROR

NET_DVR_MAX_NUM

NET_DVR_USERNOTEXIST

NET_DVR_WRITEFLASHERROR

NET_DVR_UPGRADEFAIL

NET_DVR_CARDHAVEINIT

NET_DVR_PLAYERFAILED

NET_DVR_MAX_USERNUM

NET_DVR_GETLOCALIPANDMACFAIL

NET_DVR_NOENCODEING

NET_DVR_IPMISMATCH

NET_DVR_MACMISMATCH

NET_DVR_UPGRADELANGMISMATCH

NET_DVR_MAX_PLAYERPORT

NET_DVR_NOSPACEBACKUP

NET_DVR_NODEVICEBACKUP

NET_DVR_PICTURE_BITS_ERROR

NET_DVR_PICTURE_DIMENSION_ERROR

NET_DVR_PICTURE_SIZ_ERROR

NET_DVR_LOADPLAYERSDKFAILED

NET_DVR_LOADPLAYERSDKPROC_ERROR

NET_DVR_LOADDSSDKFAILED

NET_DVR_LOADDSSDKPROC_ERROR

NET_DVR_DSSDK_ERROR

NET_DVR_VOICEMONOPOLIZE

NET_DVR_JOINMULTICASTFAILED

NET_DVR_CREATEDIR_ERROR

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

找不到Player Sdk中某个函数入口。

载入当前目录下DSsdk出错。

找不到DsSdk中某个函数入口。

调用硬解码库DsSdk中某个函数失败。

声卡被独占。

加入多播组失败。

建立日志文件目录失败。

回放时设备没有指定的文件。

创建文件出错。本地录像、保存图片、获取配置文件和远程下载录像时创建文件失败。

打开文件出错。设置配置文件、设备升级、上传审讯文件时打开文件失败。

上次的操作还没有完成

获取当前播放的时间出错。

播放出错。

文件格式不正确。

路径错误

SDK资源分配错误。

声卡模式错误。当前打开声音播放模式与实际设置的模式不符出错。

缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。

创建SOCKET出错。

设置SOCKET出错。

个数达到最大。分配的注册连接数、预览连接数超过SDK支持的最大数。

用户不存在。注册的用户ID已注销或不可用。

写FLASH出错。设备升级时写FLASH失败。

设备升级失败。网络或升级文件语言不匹配等原因升级失败。

解码卡已经初始化过。

调用播放库中某个函数失败。

登录设备的用户数达到最大。

获得本地PC的IP地址或物理地址失败。

设备该通道没有启动编码。

IP地址不匹配。

MAC地址不匹配。

升级文件语言不匹配。

播放器路数达到最大。

备份设备中没有足够空间进行备份。

没有找到指定的备份设备。

图像素位数不符,限24色。

图片高*宽超限,限128*256。

图片大小超限,限100K。

载入当前目录下Player Sdk出错。

34

设备网络SDK编程指南

NET_DVR_BINDSOCKET_ERROR

NET_DVR_SOCKETCLOSE_ERROR

NET_DVR_USERID_ISUSING

NET_DVR_SOCKETLISTEN_ERROR

NET_DVR_PROGRAM_EXCEPTION

NET_DVR_WRITEFILE_FAILED

NET_DVR_FORMAT_READONLY

NET_DVR_WITHSAMEUSERNAME

NET_DVR_DEVICETYPE_ERROR

NET_DVR_LANGUAGE_ERROR

NET_DVR_PARAVERSION_ERROR

NET_DVR_IPCHAN_NOTALIVE

NET_DVR_RTSP_SDK_ERROR

NET_DVR_CONVERT_SDK_ERROR

NET_DVR_IPC_COUNT_OVERFLOW

NET_DVR_MAX_ADD_NUM

NET_DVR_PARAMMODE_ERROR

NET_DVR_CODESPITTER_OFFLINE

NET_DVR_BACKUP_COPYING

NET_DVR_CHAN_NOTSUPPORT

NET_DVR_CALLINEINVALID

NET_DVR_CALCANCELCONFLICT

NET_DVR_CALPOINTOUTRANGE

NET_DVR_FILTERRECTINVALID

NET_DVR_DDNS_DEVOFFLINE

NET_DVR_DDNS_INTER_ERROR

NET_DVR_ALIAS_DUPLICATE

解码器错误码

NET_ERR_MAX_WIN_OVERLAP

NET_ERR_STREAMID_CHAN_BOTH_VALID

NET_ERR_NO_ZERO_CHAN

NEED_RECONNECT

NET_ERR_NO_STREAM_ID

NET_DVR_TRANS_NOT_START

NET_ERR_MAXNUM_STREAM_ID

NET_ERR_WORKMODE_MISMATCH

NET_ERR_MODE_IS_USING

NET_ERR_DEV_PROGRESSING

NET_ERR_PASSIVE_TRANSCODING

能力集错误码

XML_ABILITY_NOTSUPPORT

XML_ANALYZE_NOENOUGH_BUF

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

150

951

952

953

955

956

957

958

959

960

961

962

1000

1001

绑定套接字失败。

socket连接中断,此错误通常是由于连接中断或目的地不可达。

注销时用户ID正在进行某操作。

监听失败。

程序异常。

写文件失败。本地录像、远程下载录像、下载图片等操作时写文件失败。

禁止格式化只读硬盘。

远程用户配置结构中存在相同的用户名。

导入参数时设备型号不匹配。

导入参数时语言不匹配。

导入参数时软件版本不匹配。

预览时外接IP通道不在线。

加载标准协议通讯库StreamTransClient失败。

加载转封装库失败。

超出最大的IP接入通道数。

添加录像标签或者其他操作超出最多支持的个数。

图像增强仪,参数模式错误(用于硬件设置时,客户端进行软件设置时错误值)。

码分器不在线。

设备正在备份。

通道不支持该操作。

高度线位置太集中或长度线不够倾斜。

取消标定冲突,如果设置了规则及全局的实际大小尺寸过滤。

标定点超出范围。

尺寸过滤器不符合要求。

设备没有注册到ddns上。

DDNS 服务器内部错误。

别名重复(EasyDDNS的配置)

达到最大窗口重叠数

stream ID和通道号同时有效

设备无零通道

需要重定向(转码子系统使用)

流ID不存在

转码未启动

流ID数达到上限

工作模式不匹配

已工作在当前模式

设备正在处理中

正在被动转码

不支持能力节点获取。

输出内存不足。

35

设备网络SDK编程指南

XML_ANALYZE_FIND_LOCALXML_ERROR

XML_ANALYZE_LOAD_LOCALXML_ERROR

XML_NANLYZE_DVR_DATA_FORMAT_ERROR

XML_ANALYZE_TYPE_ERROR

XML_ANALYZE_XML_NODE_ERROR

XML_INPUT_PARAM_ERROR

XML_VERSION_MISMATCH

1002

1003

1004

1005

1006

1007

1008

无法找到对应的本地xml。

加载本地xml出错。

设备能力数据格式错误。

能力集类型错误。

XML能力节点格式错误。

输入的能力XML节点值错误。

XML版本不匹配。

5.1.2 RTSP通讯库错误码

错误名称

NET_DVR_RTSP_ERROR_NOENOUGHPRI

NET_DVR_RTSP_ERROR_ALLOC_RESOURCE

NET_DVR_RTSP_ERROR_PARAMETER

NET_DVR_RTSP_ERROR_NO_URL

错误值

401

402

403

404

说明

无权限:服务器返回401时,转成这个错误码

分配资源失败

参数错误

指定的URL地址不存在:服务器返回404时,转成这个错误码,例如请求不可用的通道号预览、请求不支持子码流的通道预览

NET_DVR_RTSP_ERROR_FORCE_STOP

NET_DVR_RTSP_GETPORTFAILED

NET_DVR_RTSP_DESCRIBERROR

NET_DVR_RTSP_DESCRIBESENDTIMEOUT

NET_DVR_RTSP_DESCRIBESENDERROR

NET_DVR_RTSP_DESCRIBERECVTIMEOUT

NET_DVR_RTSP_DESCRIBERECVDATALOST

NET_DVR_RTSP_DESCRIBERECVERROR

NET_DVR_RTSP_DESCRIBESERVERERR

NET_DVR_RTSP_SETUPERROR

406

407

410

411

412

413

414

415

416

420

用户中途强行退出

获取RTSP端口错误

RTSP DECRIBE交互错误

RTSP DECRIBE发送超时

RTSP DECRIBE发送失败

RTSP DECRIBE接收超时

RTSP DECRIBE接收数据错误

RTSP DECRIBE接收失败

RTSP DECRIBE 服务器返回错误状态

RTSP SETUP交互错误,一般是服务器返回的码流地址无法连接上,或者被服务器拒绝。(老版本的SDK可能返回错误号419,为同样的错误原因)

NET_DVR_RTSP_SETUPSENDTIMEOUT

NET_DVR_RTSP_SETUPSENDERROR

NET_DVR_RTSP_SETUPRECVTIMEOUT

NET_DVR_RTSP_SETUPRECVDATALOST

NET_DVR_RTSP_SETUPRECVERROR

NET_DVR_RTSP_OVER_MAX_CHAN

421

422

423

424

425

426

RTSP SETUP发送超时

RTSP SETUP发送错误

RTSP SETUP接收超时

RTSP SETUP接收数据错误

RTSP SETUP接收失败

超过服务器最大连接数,或者服务器资源不足,服务器返回453时,转成这个错误码

NET_DVR_RTSP_SETUPSERVERERR

NET_DVR_RTSP_PLAYERROR

NET_DVR_RTSP_PLAYSENDTIMEOUT

NET_DVR_RTSP_PLAYSENDERROR

427

430

431

432

RTSP SETUP 服务器返回错误状态

RTSP PLAY交互错误

RTSP PLAY发送超时

RTSP PLAY发送错误

36

设备网络SDK编程指南

NET_DVR_RTSP_PLAYRECVTIMEOUT

NET_DVR_RTSP_PLAYRECVDATALOST

NET_DVR_RTSP_PLAYRECVERROR

NET_DVR_RTSP_PLAYSERVERERR

NET_DVR_RTSP_TEARDOWNERROR

NET_DVR_RTSP_TEARDOWNSENDTIMEOUT

NET_DVR_RTSP_TEARDOWNSENDERROR

NET_DVR_RTSP_TEARDOWNRECVTIMEOUT

NET_DVR_RTSP_TEARDOWNRECVDATALOST

NET_DVR_RTSP_TEARDOWNRECVERROR

NET_DVR_RTSP_TEARDOWNSERVERERR

433

434

435

436

440

441

442

443

444

445

446

RTSP PLAT接收超时

RTSP PLAY接收数据错误

RTSP PLAY接收失败

RTSP PLAY 服务器返回错误状态

RTSP TEARDOWN交互错误

RTSP TEARDOWN发送超时

RTSP TEARDOWN发送错误

RTSP TEARDOWN接收超时

RTSP TEARDOWN接收数据错误

RTSP TEARDOWN接收失败

RTSP TEARDOWN 服务器返回错误状态

5.1.3 软解码库错误码

错误名称

NET_PLAYM4_NOERROR

NET_PLAYM4_PARA_OVER

NET_PLAYM4_ORDER_ERROR

NET_PLAYM4_TIMER_ERROR

NET_PLAYM4_DEC_VIDEO_ERROR

NET_PLAYM4_DEC_AUDIO_ERROR

NET_PLAYM4_ALLOC_MEMORY_ERROR

NET_PLAYM4_OPEN_FILE_ERROR

NET_PLAYM4_CREATE_OBJ_ERROR

NET_PLAYM4_CREATE_DDRAW_ERROR

NET_PLAYM4_CREATE_OFFSCREEN_ERROR

NET_PLAYM4_BUF_OVER

NET_PLAYM4_CREATE_SOUND_ERROR

NET_PLAYM4_SET_VOLUME_ERROR

NET_PLAYM4_SUPPORT_FILE_ONLY

NET_PLAYM4_SUPPORT_STREAM_ONLY

NET_PLAYM4_SYS_NOT_SUPPORT

NET_PLAYM4_FILEHEADER_UNKNOWN

NET_PLAYM4_VERSION_INCORRECT

NET_PALYM4_INIT_DECODER_ERROR

NET_PLAYM4_CHECK_FILE_ERROR

NET_PLAYM4_INIT_TIMER_ERROR

错误值

500

501

502

503

504

505

506

507

508

509

510

511

512

513

514

515

516

517

518

519

520

521

没有错误

输入参数非法

调用顺序不对

多媒体时钟设置失败

视频解码失败

音频解码失败

分配内存失败

文件操作失败

创建线程事件等失败

创建directDraw失败

创建后端缓存失败

缓冲区满,输入流失败

创建音频设备失败

设置音量失败

只能在播放文件时才能使用此接口

只能在播放流时才能使用此接口

系统不支持,解码器只能工作在Pentium 3以上

没有文件头

解码器和编码器版本不对应

初始化解码器失败

文件太短或码流无法识别

初始化多媒体时钟失败

说明

37

设备网络SDK编程指南

NET_PLAYM4_BLT_ERROR

NET_PLAYM4_UPDATE_ERROR

NET_PLAYM4_OPEN_FILE_ERROR_MULTI

NET_PLAYM4_OPEN_FILE_ERROR_VIDEO

NET_PLAYM4_JPEG_COMPRESS_ERROR

NET_PLAYM4_EXTRACT_NOT_SUPPORT

NET_PLAYM4_EXTRACT_DATA_ERROR

522

523

524

525

526

527

528

位拷贝失败

显示overlay失败

打开混合流文件失败

打开视频流文件失败

JPEG压缩错误

不支持该文件版本.

提取文件数据失败

38

设备网络SDK编程指南

6 结构体说明

6.1 宏定义

宏定义

MAX_RIGHT

NAME_LEN

PASSWD_LEN

SERIALNO_LEN

MACADDR_LEN

MAX_NAMELEN

MAX_DAYS

MAX_USERNUM_V30

MAX_LINK

DESC_LEN

MAX_ANALOG_CHANNUM

MAX_ANALOG_ALARMOUT

MAX_ANALOG_ALARMIN

MAX_IP_CHANNEL

MAX_IP_ALARMIN

MAX_IP_ALARMOUT

MAX_CHANNUM_V30

MAX_ALARMOUT_V30

MAX_DISKNUM_V30

MAX_TIMESEGMENT_V30

MAX_PRESET_V30

MAX_TRACK_V30

MAX_CRUISE_V30

IPC_PROTOCOL_NUM

MAX_NETWORK_CARD

STREAM_ID_LEN

MAX_SERIAL_PORT

宏定义值

32

32

16

48

6

16

7

32

6

16

32

32

32

32

128

64

64

96

33

8

256

256

256

50

4

32

8

含义

设备支持的权限(1~12表示本地权限,13~32表示远程权限)

用户名长度

密码长度

序列号长度

MAC地址长度

DVR本地登陆名长度

每周的天数

设备支持的最大用户数

设备的单通道最大视频流连接数

云台描述字符串长度

最大32个模拟通道

最大32路模拟报警输出

最大32路模拟报警输入

允许加入的最多IP通道数

允许加入的最多报警输入数

允许加入的最多报警输出数

(MAX_ANALOG_CHANNUM + MAX_IP_CHANNEL)

(MAX_ANALOG_ALARMOUT + MAX_IP_ALARMOUT)

最大硬盘数

最大时间段数

支持的云台预置点数

支持的云台轨迹数

支持的云台巡航数

IPC协议最大个数

设备可配最大网卡数目

流ID标识长度

设备支持232串口最大个数

39

设备网络SDK编程指南

6.2 NET_DVR_ALARMINFO_V30:上传的报警信息

struct{

DWORD

dwAlarmType;

DWORD

dwAlarmInputNumber;

BYTE byAlarmOutputNumber[MAX_ALARMOUT_V30];

BYTE byAlarmRelateChannel[MAX_CHANNUM_V30];

BYTE byChannel[MAX_CHANNUM_V30];

BYTE byDiskNumber[MAX_DISKNUM_V30];

}NET_DVR_ALARMINFO_V30,*LPNET_DVR_ALARMINFO_V30;

Members

dwAlarmType

报警类型: 0-信号量报警; 1-硬盘满; 2-信号丢失; 3-移动侦测; 4-硬盘未格式化; 5-读写硬盘出错; 6-遮挡报警; 7-制式不匹配; 8-非法访问; 9-视频信号异常; 10-录像/抓图异常; 11-智能场景变化; 12-阵列异常; 13-前端/录像分辨率不匹配

dwAlarmInputNumber

报警输入端口

byAlarmOutputNumber

触发的报警输出端口,值为1表示该报警端口输出,如byAlarmOutputNumber[0]=1表示触发第1个报警输出口输出,byAlarmOutputNumber[1]=1表示触发第2个报警输出口,依次类推。

byAlarmRelateChannel

触发的录像通道,值为1表示该通道录像,如byAlarmRelateChannel[0]=1表示触发第1个通道录像

byChannel

发生报警的通道。当报警类型为2、3、6、9、10、11时有效,如byChannel[0]=1表示第1个通道报警

byDiskNumber

发生报警的硬盘。当报警类型为1,4,5时有效,byDiskNumber[0]=1表示1号硬盘异常

6.3 NET_DVR_ALARMINCFG_V30:报警输入参数结构体

struct{

DWORD

dwSize;

BYTE sAlarmInName[NAME_LEN];

BYTE byAlarmType;

BYTE byAlarmInHandle;

BYTE byChannel;

BYTE byRes1;

NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType;

NET_DVR_SCHEDTIME

struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];

BYTE byRelRecordChan[MAX_CHANNUM_V30];

BYTE byEnablePreset[MAX_CHANNUM_V30];

BYTE byPresetNo[MAX_CHANNUM_V30];

BYTE byRes2[192];

40

设备网络SDK编程指南

BYTE byEnableCruise[MAX_CHANNUM_V30];

BYTE byCruiseNo[MAX_CHANNUM_V30];

BYTE byEnablePtzTrack[MAX_CHANNUM_V30];

BYTE byPTZTrack[MAX_CHANNUM_V30];

BYTE byRes3[16];

}NET_DVR_ALARMINCFG_V30,*LPNET_DVR_ALARMINCFG_V30;

Members

dwSize

结构体大小

sAlarmInName

名称

byAlarmType

报警器类型:0-常开,1-常闭

byAlarmInHandle

是否处理:0-不处理,1-处理

byChannel

报警输入触发智能识别通道

byRes1

保留,置为0

struAlarmHandleType

处理方式

struAlarmTime

布防时间参数

byRelRecordChan

报警触发的录象通道,为1表示触发该通道

byEnablePreset

通道是否启动调用预置点(每个数组对应一个通道):0-否,1-是

byPresetNo

通道调用的云台预置点序号,一个报警输入可以调用多个通道的云台预置点(每个通道仅限一个预置点)

byRes2

保留,置为0

byEnableCruise

是否调用巡航:0-否,1-是

byCruiseNo

巡航路径

byEnablePtzTrack

是否调用轨迹:0-否,1-是

byPTZTrack

调用的云台的轨迹序号

byRes3

保留,置为0

41

设备网络SDK编程指南

6.4 NET_DVR_ALARMOUTCFG_V30:报警输出参数结构体

struct{

DWORD dwSize;

BYTE sAlarmOutName[NAME_LEN];

DWORD dwAlarmOutDelay;

NET_DVR_SCHEDTIME struAlarmOutTime[MAX_DAYS][MAX_TIMESEGMENT_V30];

BYTE byRes[16];

}NET_DVR_ALARMOUTCFG_V30,*LPNET_DVR_ALARMOUTCFG_V30;

Members

dwSize

结构体大小

sAlarmOutName

名称

dwAlarmOutDelay

输出信号状态维持时间,0-5秒,1-10秒,2-30秒,3-1分钟,4-2分钟,5-5分钟,6-10分钟,7-手动,0xff-为无限(需手动关闭)

struAlarmOutTime

报警输出激活时间段

byRes

保留,置为0

6.5 NET_DVR_ALARMOUTSTATUS_V30:报警输出状态

struct{

BYTE Output[MAX_ALARMOUT_V30];

}NET_DVR_ALARMOUTSTATUS_V30,*LPNET_DVR_ALARMOUTSTATUS_V30;

Members

Output

报警输出口的状态:0-无效,1-有效

6.6 NET_DVR_AUTO_REBOOT_CFG:自动重启参数

struct{

DWORD dwSize;

NET_DVR_REBOOT_TIME struRebootTime;

}NET_DVR_AUTO_REBOOT_CFG,*LPNET_DVR_AUTO_REBOOT_CFG;

Members

dwSize

结构体大小

struRebootTime

自动重启时间

42

设备网络SDK编程指南

6.7 NET_DVR_COMPRESSION_INFO_V30:码流压缩参数

struct{

BYTE byStreamType;

BYTE byResolution;

BYTE byBitrateType;

BYTE byPicQuality;

DWORD

dwVideoBitrate;

DWORD

dwVideoFrameRate;

WORD

wIntervalFrameI;

BYTE byIntervalBPFrame;

BYTE byres1;

BYTE byVideoEncType;

BYTE byAudioEncType;

BYTE byVideoEncComplexity;

BYTE byEnableSvc;

BYTE byFormatType;

BYTE byres[7];

}NET_DVR_COMPRESSION_INFO_V30, *LPNET_DVR_COMPRESSION_INFO_V30;

Members

byStreamType

码流类型:0-视频流,1-复合流,0xfe- 自动(和源一致)

如果是事件压缩参数(struEventRecordPara,需要设备支持),最高位(byStreamType & 0x80)表示是否启用事件压缩参数,即配置struEventRecordPara时:

byStreamType&0x80 == 0 表示禁用事件压缩参数;

(byStreamType&0x80 == 1)&&(byStreamType&0x7f == 0) 表示启用事件压缩参数并且码流类型设置为视频流;

(byStreamType&0x80 == 1)&&(byStreamType&0x7f == 1) 表示启用事件压缩参数并且码流类型设置为复合流;

byStreamType==0xfe表示启用事件压缩参数并且码流类型设置为和源一致。

byResolution

分辨率:0-DCIF(528*384/528*320),1-CIF(352*288/352*240),2-QCIF(176*144/176*120),3-4CIF(704*576/704*480)或D1(720*576/720*486), 4-2CIF(704*288/704*240),6-QVGA(320*240),7-QQVGA(160*120),12-384*288,13-576*576,16-VGA(640*480),17-UXGA(1600*1200),

18-SVGA(800*600),19-HD720P(1280*720),20-XVGA(1280*960),21-HD900P(1600*900),23-1536*1536,24-1920*1920,27-1920*1080p, 28-2560*1920,29-1600*304,30-2048*1536,31-2448*2048,32-2448*1200,33-2448*800,34-XGA(1024*768),35-SXGA(1280*1024), 36-WD1(960*576/960*480),37-1080i(1920*1080),38-WXGA(1440*900),39-HD_F(1920*1080/1280*720),40-HD_H(1920*540/1280*360), 41-HD_Q(960*540/630*360),42-2336*1744,43-1920*1456,44-2592*2048,45-3296*2472,46-1376*768,0xff-Auto(使用当前码流分辨率)

byBitrateType

码率类型:0-变码率,1-定码率

byPicQuality

43

设备网络SDK编程指南

图象质量:0-最好,1-次好,2-较好,3-一般,4-较差,5-差,0xfe- 自动(和源一致)

dwVideoBitrate

码率:0-保留,1-16K(保留),2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K,11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K,0xfffffffe- 自动(和源一致)。最高位(31位)置成1表示是自定义码流,0~30位表示码流值,最小值16k

dwVideoFrameRate

帧率:0-全部,1-1/16,2-1/8,3-1/4,4-1/2,5-1,6-2,7-4,8-6,9-8,10-10,11-12,12-16,13-20,14-15,15-18,16-22,17-25,18-30,19-35,20-40,21-45,22-50,23-55,24-60,0xfffffffe- 自动(和源一致)

wIntervalFrameI

I帧间隔,0xfffe- 自动(和源一致),0xffff-无效

byIntervalBPFrame

帧格式:0-BBP帧,1-BP帧,2-单P帧,0xff-无效

byres1

保留,置为0

byVideoEncType

视频编码类型:0-私有264,1-标准h264,2-标准mpeg4,5-MPEG2,7-M-JPEG,0xfe- 自动(和源一致),0xff-无效

byAudioEncType

音频编码类型:0-OggVorbis,1-G711_U,2-G711_A,5-MP2L2,6-G726,7-AAC,0xfe- 自动(和源一致),0xff-无效

byVideoEncComplexity

视频编码复杂度:0- 低,1- 中,2- 高,0xfe- 自动(和源一致),

byEnableSvc

0- 不启用SVC功能,1- 启用SVC功能。SVC: Scalable Video Coding,可分级视频编码

byFormatType

封装类型:1-裸流,2-RTP封装,3-PS封装,4-TS封装,5-私有,6-FLV,7-ASF,8-3GP,9-RTP+PS(国标:GB28181),0xff-无效

byres

保留,置为0

Remarks

视频分辨率帧率、视音频编码格式、封装类型等参数值并非都能支持配置,设备支持情况可以通过设备能力集获取。

当修改设备视频编码类型时,需要重启设备生效。

6.8 NET_DVR_COMPRESSIONCFG_V30:通道压缩参数

struct{

DWORD dwSize;

NET_DVR_COMPRESSION_INFO_V30 struNormHighRecordPara;

NET_DVR_COMPRESSION_INFO_V30 struRes;

NET_DVR_COMPRESSION_INFO_V30 struEventRecordPara;

NET_DVR_COMPRESSION_INFO_V30 struNetPara;

44

设备网络SDK编程指南

}NET_DVR_COMPRESSIONCFG_V30, *LPNET_DVR_COMPRESSIONCFG_V30;

Members

dwSize

结构体大小

struNormHighRecordPara

录像的码流压缩参数(即主码流的压缩参数)

struRes

保留,置为0

struEventRecordPara

事件触发压缩参数,报警事件触发后,主码流切换成事件压缩参数配置

struNetPara

网传的码流压缩参数(即子码流的压缩参数)

6.9 NET_DVR_DDNSPARA:网络应用参数(DDNS)

struct{

BYTE sUserName[NAME_LEN];

BYTE sPassword[PASSWD_LEN];

BYTE sDomainName[64];

BYTE byEnableDDNS;

BYTE res[15];

}NET_DVR_DDNSPARA,*LPNET_DVR_DDNSPARA;

Members

sUserName

DDNS账号用户名

sPassword

DDNS账号密码

sDomainName

域名

byEnableDDNS

是否使能:0-否,1-是

res

保留,置为0

6.10 NET_DVR_DDNSPARA_V30:网络应用参数(DDNS)结构体

struct{

BYTE byEnableDDNS;

BYTE byHostIndex;

BYTE byRes1[2];

struct{

BYTE sUserName[NAME_LEN];

BYTE sPassword[PASSWD_LEN];