关于海康威视网络摄像机二次开发问题

来源:互联网 发布:up to date数据库官网 编辑:程序博客网 时间:2024/06/04 18:46

最近一个星期一直在研究海康威视的网络摄像机二次开发问题,纠结了很久。今天终于走通了一部分,记下来希望能够帮助到更多人。现在是用的  VS2013 + opencv 进行测试。

首先推荐两篇对我帮助很大的博文:

               http://blog.csdn.net/wanghuiqi2008/article/details/31410509

               这篇很详细的讲解了二次开发的框架,如果充分理解了作者的代码,那基本就差不多了。记得将#include "PlayM4.h"改为#include "plaympeg4.h",海康的SDK更新了

               http://blog.csdn.net/shangtao1989/article/details/50260661 

               这篇博文很重要的就是关于YV12转换到RGB的内容,我建议大家使用作者提供的第二方法去替代第一篇博文中YV12转RGB的方法。另外建议大家事先开辟用来转换的两个图像空间。这样在实时回调过程中能提高实时性。

                具体代码我就不粘贴了,我在这给出一些这段时间遇到的问题,以及解决办法,可能有些笨拙,在此抛砖引玉。

                首先是配置的问题首先按照开发文档添加包含目录以及库目录,接着在链接器-输入-附加依赖项中添加HCNetSDK.lib;PlayCtrl.lib;ws2_32.lib;winmm.lib;GdiPlus.lib文件

接着将代码进行编译,这时可能会弹出缺少两个dll文件。注意:如果你是在debug模式下编译的,那就在生成的debug文件夹下添加相应文件。

截取一段开发文档中的原话:

1. 更新设备网络SDK时,SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、HCNetSDKCom文件夹等文件均要加载到程序里面,
  【HCNetSDKCom文件夹】(包含里面的功能组件dll库文件)需要和HCNetSDK.dll、HCCore.dll一起加载,放在同一个目录下,且HCNetSDKCom文件夹名不能修改。


再次编译调试就能正常运行了。

接着你会发现播放有些卡顿,一般有5S延时,甚至运行一段时间后会打印出很多 PlayM4_InputData failed  接着会报  error happened出错。

这个原因在SDK文档中说: 回调函数中不能执行可能会占用时间较长的接口或操作,不建议调用该SDK(HCNetSDK.dll)本身的接口

个人认为就是说在解码回调函数void CALLBACK DecCBFun(*******)中不能运行耗时代码,不信你把imshow()和waitkey()注释掉就好了。

解决办法有很多:

               1.可以尝试利用多线程在另一个线程中显示。

               2.在realse模式下运行,记得编译后在realse文件夹下添加相关文件。(realse模式运行速度立马提升,可以达到实时性,并且CPU占用也大大减小)

               3.登陆网络摄像机系统(网址就是自己改的IP),配置-视音频中降低分辨率(我的默认的是2560*1440,当我调到1280*720后在debug模式下也能满足实时性)

以上基本就是我遇到的问题,我也只是个小白,所以大家看后不要见笑,更希望这篇博文能够对你有用。

阅读全文
1 0
原创粉丝点击