使用海康威視SDK的那些坑

由於工作需要,項目中有使用到海康威視的產品,不可避免的就要使用海康的SDK進行二次開發。開發過程中磕磕絆絆的,踩了不少坑,這裏做一個簡單的記錄,算是給健忘的自己提個醒吧。

Delphi版本的接口

Fork me on Gitee star fork

首先,自己一直使用Delphi進行開發,然而海康官方只提供了C/C++的接口和示例,無奈只能自己改寫了。改寫完的部分已經上傳,希望能有人共同來完善。

由於Delphi商業使用的限制,現已轉到Lazarus,全面擁抱開源。

  1. 播放聲音

預覽時播放聲音,回放時播放聲音,甚至使用播放庫播放已下載的視頻時播放聲音,這些對於前端攝像頭自帶麥克的場景肯定是剛需(另接麥克的情況暫未測試),然而按照官方SDK文檔和示例代碼寫出的程序死活就是沒有聲音,這樣的情況似乎不少人都遇到過,但是,好像並沒有見誰把解決方法公開過。

其實,這個問題特別簡單,只需要把HCNetSDKCom目錄下的OpenAL32.dll拷貝到PlayCtrl.dll所在的目錄下就可以了。這下就明白了吧,沒有聲音的原因其實就是使用NET_DVR_OpenSound調了PlayCtrl.dll,而PlayCtrl.dll又調了OpenAL32.dll來播放聲音,但是由於PlayCtrl.dll沒有找到OpenAL32.dll所以沒有聲音,而且這個有問題的返回值也並沒有一層層的返回給NET_DVR_OpenSound函數,結果就是函數返回調用成功了,但就是死活沒聲音。

  1. PlayCtrl.dll不是PlayCtrl.dll

使用海康SDK進行二次開發的,一般也會使用到海康的播放庫,但是有一個問題是需要注意的,那就是SDK裏的PlayCtrl.dll並不是播放庫裏的PlayCtrl.dll。雖然它們長得一樣,名字也一樣,但它們的本質卻是完全不一樣的,是不能互相替代的!有興趣的朋友可以使用eXeScope詳細查看。


有定製需求的朋友,打賞個茶水費,咖啡變代碼!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章