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];


发布评论