前言: 可能会碰到的问题
有些事开发过程中已经碰到的问题,还有一些事官方文档或者其他网友碰到过的问题,在这里汇集一起,希望做开发能够起到帮助.
一、demo的代码为什么运行不了
没有拷贝库文件到程序的目录下,或者拷贝到的目录不对,如果不知道需要拷贝哪些,那就吧sdk里面的支持dll全部都拷贝过去。
二、网页用账号密码可以登录进去,但是SDK就是无法登录
注意web登录端口是80或者ssl用到的443,而sdk用到的端口是8000, 在sdk里面用到端口不是web登录的端口。
三、二次开发时SDK库加载失败导致程序无法正常编译运行或者接口调用失败
这个问题和第一个问题解决方法其实一样。
1)错误号107~114:V5.x以上版本SDK组件化方式,不能只加载HCNetSDK.dll,HCCore.dll、HCNetSDKCom文件夹等文件均要加载到程序里面,HCNetSDKCom文件夹(包含里面的功能组件dll库文件)需要和HCNetSDK.dll放在同一个目录下,且HCNetSDKCom文件夹名不能修改。
2)预览失败,错误号64:播放库没有正常加载,包括PlayCtrl.dll、SuperRender.dll、AudioRender.dll、D3DX9_43.dll。
四、设备的各种吗流的含义和区别
设备码流类型有:
-
主码流:顾名思义,是设备的最主要的一路数据,分为主码流(定时)与主码流(事件),码流分辨率、码率较大,清晰度高,占用带宽高,一般用于存储。
-
子码流:码流分辨率、码率较低,清晰度低,占用带宽小,一般用于网传。
-
三码流:和子码流类似,可以看作第2路子码流,可以配置跟子码流不同的分辨率、码率。
-
事件码流:也称为主码流(事件),当移动侦测、报警输入等事件发生时的主码流会从定时参数切换成为事件码流。此时,主码流的数据由事件码流的参数决定,一般用于提高事件发生情况下的图像清晰度。如果事件码流的参数与主码流(定时)不同,当移动侦测、报警等发生时,会导致主码流的图像不断切换,影响视频效果,一般不建议使用。
-
虚拟码流:即转码码流,实际不存在,预览时,设备根据配置的虚拟码流压缩参数进行转编码的一路码流,需要额外消耗设备资源,一般只支持1路,只支持网传。
以上这些码流都支持预览,通过预览参数(NET_DVR_PREVIEWINFO)中的dwStreamType选择当前预览的码流类型。并且,这些类型的码流压缩参数都可以分别获取和设置置,相关接口:NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG),对应配置结构体:NET_DVR_MULTI_STREAM_COMPRESSIONCFG。
五、设备登录成功但是布防失败,错误号28或者1924
接口返回失败,可以调用NET_DVR_GetLastError获取错误号,通过错误号判断原因。常见错误号为28、52或者1924,表示同时登录布防连接该设备的客户端连接数达到上限,设备支持的布防连接数由设备本身性能决定,不支持修改。
1)对于网络摄像机、硬盘录像机等设备,最大布防连接数一般是10个;
2)对于交通抓拍机,一级布防只支持1个客户端布防,二级布防可以支持3个;在调用布防接口NET_DVR_SetupAlarmChan_V41时,NET_DVR_SETUPALARM_PARAM报警布防参数中byLevel表示交通抓拍机的布防等级,0表示一级布防,1表示二级布防。
3)对于门禁产品,设备只支持1路客户端布防(支持离线事件上传)、支持4路实时布防(不支持离线事件上传,DS-K5603不支持);在调用布防接口NET_DVR_SetupAlarmChan_V41时,NET_DVR_SETUPALARM_PARAM报警布防参数中byDeployType字段表示门禁产品的布防类型,0表示客户端布防,1表示实时布防。
六、布防成功,报警回调函数没有调用,是什么原因?布防成功后,为什么接收不到报警信息?
1.排查设备是否有触发报警事件,报警事件的联动方式是否有勾选上传中心。
2.相同网络和设备环境下,使用我们官网win32开发包/库文件/ClientDemo.exe测试能否收到报警信息。测试方法:左侧设备树添加设备,在其他-布防/撤防-选中您的设备-布防/撤防,最右下角选择报警信息,在报警信息中查看。
3.如果ClientDemo测试正常,则需排查程序代码,常见原因有:程序进程已退出、回调函数没有设置成全局类型导致已被回收、回调函数中没有对应lCommand(报警类型)的处理。
七、调用报警监听接口失败,获取错误码为72。
72为绑定套接字失败,可能原因有:
1.监听接口传入的IP和端口为PC机本地网卡的IP和端口。
2.PC机有多网卡,需要调用接口NET_DVR_SetValidIP绑定实际使用的网卡。
3.PC机端口被占用,需要使用空闲的端口。