二次开发接口资料文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
接口开发文档
一、开发包目录结构
1.1demo 文件夹
包含了s dk 接口调用源代码,可供二次开发参考。
使用C++开发的M FC 程序。
1.2dll 文件夹
包含了二次开发所需的所有动态库,demo 编译好的e xe 文件需要放在该文件夹内才可以运行。
1.3include 文件夹
包含了二次开发所需要的头文件。
1.4lib 文件夹
包含了二次开发所需要的l ib 静态库。
1.5DSS 二次开发指南(C++).pdf
指导二次开发用户如何新建V S2005 工程运行d emo 文件夹中的d emo。
1.6Version.xml
dpsdk 开发包的程序版本信息。
1.7常见问题解答.pdf
二次开发常见问题以及解决方式。
1.8大华平台S DK 开发手册(C++版).chm
二次开发接口使用说明。
二、术语和缩略语
1、D PSDK:DSS 平台二次开发S DK 包
2、C MS:中心管理服务
3、D MS:设备管理模块
4、d emo:程序示例(功能类似D SS 平台客户端)
5、w eb 管理员端:在浏览器中输入D SS 平台的i p 即可打开管理员端
6、C ameraID:通道i d,形如:10000010$1$0$0
7、D eviceID:设备i d
三、Demo 操作方法
3.1 运行d emo
把“demo/bin/”目录下面的3个文件,如下图所示
拷贝到“dll”文件夹下面,运行Test_DPSDK_Core.exe。
3.2 登陆平台
图 1 登陆界面
登陆界面如图 1 所示,
其中: IP:DSS 平台
ip 地址;端口:9000;
用户名:web 管理员端配置的用户;
密码:web管理员端配置的用户对应的密码。
点击“登录”按钮,登陆平台。
登陆成功的界面如图2所示:
1
23
图2主界面
上图选中的 5个模块分别是:1、组织树;2、实时视频;3、本地录像;4、云台操作;5、执行结果。
3.3 主界面功能介绍
3.3.1、组织树
操作步骤:点击“加载所有组织结构”按钮加载组织结构是其他操作的前
提,是为了获取 DSS平台上所有的设备信息。
3.3.2、实时视频模块
操作步骤:1)确保已经成功加载组织结构。
2)输入CamID(通道I D)。
3)点击“打开视频”按钮,即可打开视频。
如果打开视频失败会在“模块5”的
位置提示错误码。
注释1:CamID(通道I D)的获取方式有1)展开模块1组织树,寻找到对应的编码器通道,即可看到该通道对应的通道I D;2)登陆w eb 管理员端,选择基本配置-设备管理-编码器界面,看到“编码”列给出的是“设备I D”。
使用设备I D 组成通道I D 即:设备I D$1$0$0。
$1代表编码器,$0 代表单元序
号,默认为0,$0 代表通道号。
具体信息参考“常见问题解答”。
3.3.3、本地录像模块
操作步骤:1)确保已经成功加载组织结构。
2)确保已经成功打开实时视频。
3)点击“开始录像”按钮即可开始本地录像。
在打开实时视频以后可以录像,并保存到本地磁盘。
3.3.4、云台控制模块
操作步骤:1)确保已经成功加载组织结构。
2)确保已经成功打开实时视频。
打开实时视频以后,针对球机设备可以操作八方向、调节球机镜头、设置预置点等。
3.3.5、执行结果模块
将所有操作的结果输出。
并输出对应的操作失败错误码。
3.4 回放界面功能介绍
3.4.1 录像查询
操作步骤:1)确保已经成功加载组织结构。
2)输入CameraID(通道ID)。
3)选择查询的开始和结束时间。
4)选择录像来源。
5)选择录像类型。
点击“查询录像”按钮查询录像。
3.4.2 录像回放
操作步骤:1)确保已经成功加载组织结构。
2)确保已经查询到录像文件。
3)选中录像文件,点击“按文件回放”按钮。
3.4.2 录像下载
操作步骤:1)确保已经成功加载组织结构。
2)确保已经查询到录像文件。
3)选中录像文件,点击“按文件下载”按钮。
3.5 报警功能
3.5.1 查询报警
操作步骤:1)确保已经成功加载组织结构。
2)输入CamID(通道ID)。
3)选择报警类型,点击“查询”按钮。
需要注意的是查询视频类报警(即:视频丢失/移动侦测/视频遮挡)时CamID 为1000001$1$0$0,查询其他报警(除上述3 种报警类型)的时候CamID 为1000001$3$0$0。
因为视频类报警是由“视频通道”产生,其他报
警是由“报警输入通道”产生。
3.5.2 报警布控
操作步骤:1)确保已经成功加载组织结构。
2)输入设备ID。
3)输入通道号,(视频类报警使用“视频通道号”,其他报警使用“报警通道号”)。
4)
选择报警类型,点击“布控”按钮即可。
注释:视频类报警类型包含1)视频丢失 2)移动侦测 3)视频遮挡。
3.6 语音对讲
3.6.1 打开语音对讲
操作步骤:1)确保已经成功加载组织结构。
2)输入CamID(通道ID),选择对讲参数, 3)点击“开始语音对讲”按钮。
如果参数错误会弹窗提示正确参数信息。
3.6.2 关闭语音对讲
操作步骤:1)确保已经成功打开语音对讲。
2)点击“根据序列号停止语音
对讲”或者“根据通道号停止语音对讲”按钮。
3.7 电视墙
目前Demo不能新建电视墙任务,只能获取平台配置好的电视墙信息。
电
视墙的任务需要在平台客户端添加。
3.7.1 电视墙操作
操作步骤:1)确保已经成功加载组织树。
2)点击“获取电视墙总数”按钮。
3)点击“获取电视墙信息”按钮。
4)选择电视墙ID。
5)点击“获取电视墙布
局”按钮。
即可显示电视墙对应的屏幕分割信息。
上图显示I D 为3的电视墙的名字是t t 状态是1(代表启用)。
电视墙有4块屏幕,屏i d、屏名称、屏坐标、是否绑定解码器(1_1000943 代表绑定解码器,
解码器i d 为1000943)。
3.7.2 屏幕分割和开窗操作
操作步骤:1)确保已经成功获取到电视墙屏幕信息。
2)选择一个屏幕。
3)执行分割和开窗操作。
所有的融合屏<NVD 除外>都只做开窗。
非融合和融合的NVD 都只做分割。
开窗操作(left,上)代表窗口左上角坐标,width 和Height 代表宽和高
的比例,范围是0-100。
例如:(left,上)为(0,0);(width,Height)为
(50,50)。
3.7.3 设置视频源操作
操作步骤:1)确保已经成功获取到电视墙屏幕信息。
2)输入编码器通道ID。
3)输入窗口号(分割和开窗操作的窗口号从0开始)。
4)点击“设置”
按钮。
5)点击“关闭”按钮清除窗口视频源。
6)点击“清屏”按钮清除所有屏幕上的窗口和视频源。
四、常见问题
1 概述
本文档列出了使用大华 SDK 进行二次开发时出现的常见问题以及对应的解决方法。
方便第三方开发者快速定位问题,提高二次开发效率。
2 问题列表
2.1 W ebDemo 问题汇总
2.1.1 在I E 浏览器中打开w ebDemo 视频窗口显示
因为没有注册o cx。
在o cx 文件夹中双击r eg.bat 只有提示注册成功才可以。
2.2 O CX 控件问题汇总
2.2.1 OCX 无法注册
1、OCX控件时微软推出已久的技术,其注册方法及出错原因可在微软官方文
档上查询,或者可以自行在网上查找解决方法。
OCX 注册问题本不属于DPSDK 支持范畴。
2、不过我们还是提供一些建议,以便您快速排除问题:(1)用“管理员权限”打开“开始”-“附件”-“命令提示符”,输入“regsvr32 ocx 的全路径”即可。
(2)我们提供的 OCX 控件是 32 位程序,请确保系统有 32 位兼容库,具体判断方法为C:\Windows\SysWOW64 这个文件夹下是否有“regsvr32.exe”这个文件,若没有,请重新安装系统。
若有,请按(1)中的方式打开命令提示符,输入“c:\windows\SysWOW64\regsvr32ocx 全路径”即可,如“c:\windows\SysWOW64\regsvr32 Z:\DPSDK_OCX\ocx\DPSDK_OCX.ocx ”
如以上 2 点仍然没有能够成功注册,请在网上,根据自己的系统信息自行搜
索解决方案。
3、在注册d ll 或者o cx 的时候,经常会遇到这么一个问题:模块已加载,但对d llregisterServer的调用失败,错误代码为0x8004*****
解决方法:在批处理的第一行加入:cd /d %~dp0 然后在批处理上右键选择使用管理员权限运行
4、Windows7 出现:应用程序无法启动,因为应用程序的并行配置不正确有
关详细信息,请参阅应用程序事件日志,或使用命令行s xstrace.exe 工具。
”
解决方法:出现这个问题是因为安装 windows7 后,或使用 ghost 版本安装后,windows7没有安装V isual C++ 库,而有些软件需要V isual C++ 库所以到微
软官方网站下载:Microsoft Visual C++ 2005 SP1 Redistributable Package (x86) 下载:
/downloads/details.aspx?familyid=200
B2FD9-AE1A-4A14
-984D-389C36F85647&displaylang=zh-cn 安装
2.2.2 64 位系统下O CX 无法使用
目前 OCX 控件只有 32 位的程序,所以在 64 位系统下,需要下载 32 位的 IE,用32 位的I E
加载O CX 控件即可。
2.2.3 Ocx 注册成功但是在页面加载失败
运行I E,工具->Internet 选项->安全,确保I nternet 和本地I ntranet 和可信站点的自定义级别中的A ctiveX 选项都不是禁止状态,将禁止状态改为提示状态。
2.2.4 Ocx 开发包d emo 程序运行不起来
DPSDK_OCX.ocx 未注册,可以采用一下两种方法注册:运行->CMD,
regsvr32 DPSDK_OCX.ocx 绝对路径
运行o cx 开发包文件夹里面的r eg.bat 批处理,注意:DPSDK_OCX.ocx 必须要和r eg.bat 放在同一个路径。
如果仍旧注册失败需要安装 vs 发布包,vcredist_x86.exe,可以从微软
官网上直接下载
2.2.5 如何获通道I D(CameraID)
在浏览器输入D SS 平台的i p 打开web 管理员端,用管理员身份登录平台,找到“基本设置”-“设备管理”-“编码器”页面的“编码”列是所有的设备ID。
而CameraID 的格式为:"设备ID$1$0$通道号",如设备ID 为“1000000”,且设备下有 3 个视频通道,那么这 3 个CameraID 为"1000000$1$0$0"、"1000000$1$0$1"、"1000000$1$0$2"。
2.2.6 是否可以不加载组织结构
不调用 DPSDK_LoadDGroupInfo 也是可以的,但仅限于实时视频、录像回放,其他操作,如操作云台等功能无法使用。
方法是Get_RealStream_Info_t中的nRight设置为DPSDK_CORE_NOT_CHECK_RIGHT 即可。
2.2.7 OCX 无法保存抓图或创建文件夹失败
win7 系统的安全控制导致O CX 控件无法创建文件夹。
需要使用administrator 账号登陆
win7系统开发使用(有管理员权限的普通账户也不行)。
2.2.8 OCX 控件收不到报警
1)需要先调用布控报警DPSDK_EnableAlarm。
2)其次平台或者设备触
发报警。
2.2.9 OCX 请求视频没有声音
需要打开音频(DPSDK_OpenAudioByWndNo,
DPSDK_OpenAudioByHWND)
2.2.10 加载监控视频成功时浏览器会死掉
浏览器兼容问题,目前o cx 控件主要针对I E8/IE9 环境。
2.2.11 IE 浏览器加载视频成功,其他浏览器无法加载
浏览器兼容问题,其他基于 IE 内核或者多核模式的浏览器(遨游,360,搜狗浏览器等)需要选择兼容模式浏览。
2.2.12 OCX 操作导致I E 崩溃
目前OCX 中我们已经集成了在崩溃时生成crash dump 的功能,OCX 崩溃时会弹出对话框提示 dump 生成的位置,用户只需在此位置下找到.dmp 文件,然后将对应的p db 文件一同发送给我们即可。
2.2.13 目前O CX 只支持i e8 32 位浏览器
在页面中加上<meta http-equiv="X-UA-Compatible"
content="IE=EmulateIE8" />,让I E 浏览器以兼容I E8 方式运行。
2.2.14 一路视频对应两路音频情况缺少音频通道标识
DPSDK_OCX之前的开发包中已经提供了多音频通道的接口,
DPSDK_GetAudioChannelsByWndNo // 获取音频通道数
DPSDK_GetAudioChannelStateByWndNo // 获取某个音频通道的状态
DPSDK_SetAudioChannelByWndNo // 打开某个音频通道界面上的按钮只是单纯的音频开关,客户如需切换声道,需要手动调用以上几个接口。
2.2.15 DPSDK_SeekPlaybackBySeqByWndNo 无法定位海康录像
底层播放库不支持海康录像的定位操作,不过可以通过以下操作替代,以实现一个进度条为例:
拖动进度条时,直接先关闭回放,再以进度条的当前时间重新按时间请求回放。
此时由于重新请求, DPSDK_GetPlaybackPosByWndNo 等接口获取的进度不准确,改用DPSDK_GetFrameTimeByWndNo 直接获取帧时间,然后保存下最初的开始和结束时间,即可计算正确的进度。
2.2.16 DPSDK 断线重连,不能打开视频
需要重新加载组织结构(即在OnDevStatusEvent 中,当收到重连成功的事件后,调用DPSDK_LoadDGroupInfo)。
2.2.17 NVR 设备状态和通道状态不同
NVR的通道状态需要通过订阅才能实时返回通道状态。
设备在线,不一定
通道在线。
OCX:ChannelStatusCallback。
2.2.18 YUV 码流接口不支持海康设备
Ext 层的Y UV 码流的相关接口,只支持大华设备。
不支持海康设备。
2.2.19 接口返回某个错误码的含义
1)接口返回1010 错误是因为超时时间太短可以尝试增加接口超时时间,特别是广域网上操作。
2)调用DPSDK_StartRealplayByWndNo 返回 3502,3600 错误未选中窗口或者窗口失去焦点。
3)返回其它错误码我们开发文档里面有针对错误码的介绍。
搜索一下错误码即可。
2.3DPSDK_DLL 版本问题汇总
2.3.1通道ID(CameraID)介绍
通道 ID(CameraID)形如:1000010$1$0$0,其中
1)1000010 是设备I D,该设备I D 可以在平台w eb 管理员端“基本配置-设
备管理”页面的“编码”列查询。
2)$1 代表的是单元类型。
1 是编码单元、2 是解码单元、3 是报警输入单元、4 是报警输出单元。
实时视频都是$1。
3)$0 默认全写0,代表的是单元类型的序号。
4)$0 这个代表的是通道序号。
从0开始计算。
比如一个设备有8个通道,则通
道序号是0-7.
2.3.2如何获通道 ID(CameraID)
1)DPSDK_DLL 开发包中,有d emo 程序,demo 程序中登录后,选择“分
级加载组织结构”,即可看到组织和设备树。
双击直到最后一层即为CameraId。
demo 我们提供了源码,你可以根据源码进行开发,源码中涉
及到的函数在开发文档中都有详细说明。
2)在浏览器中,用管理员身份登
录平台,可以看到所有的设备I D。
而编码器C ameraID 的格式为:"设备
ID$1$0$通道号",如设备ID 为“1000000”,且设备下有3 个通道,那么这3个C ameraID 为"1000000$1$0$0"、"1000000$1$0$1"、
"1000000$1$0$2"。
2.3.3 NVR 设备状态和通道状态不同
NVR的通道状态需要通过订阅才能实时返回通道状态。
设备在线,不一定通
道在线。
dll:DPSDK_SetDPSDKNVRChnlStatusCallback。
2.3.4 登录之后打开视频返回r tsp 建立失败
如果是内外网环境,可能网络环境不正确。
2.4Android SDK 问题汇总
2.5IOS SDK 问题汇总
2.5.1 点击实时预览崩溃
可能是播放库太老,需要更新播放库。
2.6 其它
2.6.1 设备通道 ID(CameraID)如何获取?
获取方式:
方法1.打开D PSDK 对应的D emo,加载组织树,展开对应的组织节点,找到设备即可看到通道I D
方法2.通道I D 格式为:“设备I D $1$0$通道号”。
比如设备I D 为1000001,对应第一个视频通道I D 为1000001$1$0$0,对应第二个视频通道为1000001$1$0$1,依次类推。
设备ID 可以从DSS 管理员端“设备管理”页面获取。
在管理员模式下,使用system 用户登陆进入:基本设置->设备管理查看设备ID。
通道号:对于I PC 设备,只有一个通道,通道号只有0;对于D VR 设备,有多个通道,具体的通道个数是在w eb 管理员平台上配的,比如配了4个通道,通道号依次为0,1,2,3。
2.6.1 模拟器实时预览花屏
播放库对模拟器支持不全,实时和回放需要在真机上运行。
2.6.2 目前D PSDK 不接受U I 界面相关的定制开发,用户需要自己实现U I
界面
2.6.3 目前提供的D PSDK 相关D emo 只有C++版
2.6.4 DPSDK 二次开发邮箱d***********************暂不提供研发手机号码
2.6.5 现在只维护平台是
3.0 以后的d psdk
2.X 平台的d psdk 已经不再维护。
2.6.6 打开视频的接口
有两种打开视频的接口:
1)使用e xt 层,用户不需要关心码流,VaxPlayer 库解析之。
2)不使用 ext层,设置码流回调函数,客户可以拿到码流。
DPSDK_GetRealStream() pDlg->PostMessage(WM_MEDIADATA_CB, nSeq, 0)
CWndPlayer::OnMediaDataCallback(WPARAM wParam, LPARAM
lParam)
2.6.7 按时间回放功能
1)按时间回放平台录像,由于平台存在问题,相关功能会出现 bug。
不建议用户使用该功能。
2)按时间回放设备录像没有问题。
2.6.8 平台回调上来的码流
平台回调上来的码流是P S 流+大华头。
直接使用v axPlayer 播放。
如果前端
是海康设备回调上来的码流是大华头+海康流。
需要使用 mediaParser
库去掉大华头在用v axPlayer 播放或者使用海康的播放库播放。
2.6.9 组织树x ml 中s tatus 字段不准确
加载组织树以后可以拿到组织树x ml,设备信息中的s tatus 字段无法正确显示设备的状态。
需要注册设备状态回调函数来实时获取设备的状态。
接口:DPSDK_SetDPSDKDeviceStatusCallback()初始化设置回调。
在登陆平台的时候会收到设备状态,任何设备状态改变后会再次回调上来。
NVR 通道状态比较特殊,因为N VR 设备在线的时候,通道状态可以是离线的。
需要使用接口:DPSDK_SetDPSDKNVRChnlStatusCallback()
2.6.10 设备状态和通道状态
1、设备在线状态需要设置回调函数:
DPSDK_SetDPSDKDeviceStatusCallback()在登陆平台时D MS 会推送设备状态,设备状态改变D MS 也会推送设备状态上来。
2、大部分设备状态和通道状态是一致的。
只有N VR 设备存在通道状态
因为N VR 设备在线,通道可能离线。
登陆平台D MS 不会主动推送N VR 通
道状态,需要客户端主动查询。
登陆平台以后N VR 通道状态变化D MS 会主动推送上来进入回调函数。
使用接口:1)通道状态改变回调
DPSDK_SetDPSDKNVRChnlStatusCallback()
2)查询通道状态 DPSDK_QueryNVRChnlStatus()
2.6.11 电视墙开窗和分割
所有的融合屏<NVD除外>都只做开窗。
非融合和融合的 NVD 都只做分割。
2.6.12 日志等级
ERROR > WARNING > INFO > DEBUG
设置为I NFO 会显示e rror,warning,info
2.6.13 卡口过车数据和违章报警功能说明
1、违章报警只需要设置回调函数,不需要订阅
DPSDK_SetDPSDKTrafficAlarmCallback()
DPSDK_CMD_BA Y_DPALARM_NOTIFY, // 违章报警
Alarm_4JT_PictureLink_Struct
2、卡口过车数据需要设置回调函数并订阅DPSDK_SetDPSDKGetBayCarInfoCallback()
DPSDK_SubscribeBayCarInfo()
卡口过车图片数据是p icSDK 回调上来的
EAS_SetPictureCallBack(mPicCallBack, this);
2.6.14 查询报警
操作步骤:1)确保已经成功加载组织结构。
2)输入CamID(通道ID)。
3)选择报警类型,点击“查询”按钮。
需要注意的是查询视频类报警(即:视频丢失/移动侦测/视频遮挡)时 CamID 为1000001$1$0$0,查询其他报警(除上述3 种报警类型)的时候 CamID 为 1000001$3$0$0。
因为视频类报警是由“视频通道”产生,其他报警是由“报警输入通道”产生。
2.6.15 VLC 使用U RL 拉流
-B 3.11 之前的版本是不支持R TSP URL 拉流的。