从其它平台迁移而来
由于工作需要,项目中有使用到海康威视
的产品,不可避免的就要使用海康的SDK
进行二次开发。开发过程中磕磕绊绊的,踩了不少坑,这里做一个简单的记录,算是给健忘的自己提个醒吧。
Delphi版本的接口
首先,自己一直使用Delphi
进行开发,然而海康官方只提供了C/C++的接口和示例,无奈只能自己改写了。改写完的部分已经上传,希望能有人共同来完善。
由于
Delphi
商业使用的限制,现已转到Lazarus
,全面拥抱开源。
坑
- 播放声音
预览时播放声音,回放时播放声音,甚至使用播放库播放已下载的视频时播放声音,这些对于前端摄像头自带麦克的场景肯定是刚需(另接麦克的情况暂未测试),然而按照官方SDK文档和示例代码写出的程序死活就是没有声音,这样的情况似乎不少人都遇到过,但是,好像并没有见谁把解决方法公开过。
其实,这个问题特别简单,只需要把HCNetSDKCom
目录下的OpenAL32.dll
拷贝到PlayCtrl.dll
所在的目录下就可以了。这下就明白了吧,没有声音的原因其实就是使用NET_DVR_OpenSound
调了PlayCtrl.dll
,而PlayCtrl.dll
又调了OpenAL32.dll
来播放声音,但是由于PlayCtrl.dll
没有找到OpenAL32.dll
所以没有声音,而且这个有问题的返回值也并没有一层层的返回给NET_DVR_OpenSound
函数,结果就是函数返回调用成功了,但就是死活没声音。
- PlayCtrl.dll不是PlayCtrl.dll
使用海康SDK进行二次开发的,一般也会使用到海康的播放库,但是有一个问题是需要注意的,那就是SDK里的PlayCtrl.dll
并不是播放库里的PlayCtrl.dll
。虽然它们长得一样,名字也一样,但它们的本质却是完全不一样的,是不能互相替代的!有兴趣的朋友可以使用eXeScope
详细查看。