日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第一次部署海康威视DEMO的一些坑,最终运行成功

發布時間:2023/12/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一次部署海康威视DEMO的一些坑,最终运行成功 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

海康威視(HIKVISION) JAVA SDK Demo成功運行

  • 引子
  • 下載
  • 說明
  • 代碼編譯
    • 添加文件
    • 問題
    • 排查
  • 總結

引子

調海康的JAVA SDK花費時間較長,所以記錄下,為其他小伙伴填填坑,提高一下效率。官方文檔確實少,而且demo中的說明各種坑。

下載

官方SDK下載地址:https://www.hikvision.com/cn/download_more_570.html(64位SDK)

注意:官方SDK區分32位和64位,如果用64位的SDK需要使用JDK64位的,不能使用32位JDK。32位的SDK同理,只能使用32位JDK的

說明

官方的Demo的編譯環境:Eclipse+Swing插件 或者 NetBeans IDE V8.2,使用的JDK為1.8。

我使用IDEA編譯通過了,Eclipse和IDEA區別不大。我的編譯環境:IDEA+JDK1.8(64位)+ Windows 10(64位)。編譯環境全是在64位下進行的。

海康威視SDK版本:設備網絡SDK_V6.0.2.35(for Windows x64)

代碼編譯

導入項目時選擇eclipse項目導入,如果不懂的同學可以搜索下 IDEA如何導入ecplise項目,項目導進來后根據demo中的 SDK庫文件拷貝到該目錄下.txt 文件中的描述:

【注意事項】 ------------------------------------ 1. 請到海康威視官網下載最新版本設備網絡SDK:http://www.hikvision.com/Cn/download_more_401.html
  • 請修改程序代碼,其中HCNetSDK.java文件自己指定loadlibrary加載庫的路徑,【庫文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、HCNetSDKCom文件夾等文件均拷貝到該路徑下。 HCNetSDKCom文件夾(包含里面的功能組件dll庫文件)需要和HCNetSDK.dll、HCCore.dll一起加載,放在同一個目錄下,且HCNetSDKCom文件夾名不能修改。

  • 如果自行開發軟件不能正常實現相應功能,而且程序沒有指定加載的dll庫路徑,請在程序運行的情況下嘗試刪除HCNetSDK.dll。如果可以刪除,說明程序可能調用到系統盤Windows->System32目錄下的dll文件,建議刪除或者更新該目錄下的相關dll文件;如果不能刪除,dll文件右鍵選擇屬性確認SDK庫版本。

  • 如按上述步驟操作后還是不能實現相應功能,請根據NET_DVR_GetLastError返回的錯誤號判斷原因。

  • 添加文件

    根據文件描述步驟拷入對應的文件和文件夾。第二條中少寫了一個dll是 AudioRender.dll 請將此dll一并拷貝到項目的根目錄下。

    完成后,我們的項目目錄是這個樣子

    如果項目報錯,將項目中的 jna.jar 包添加到項目的Libraries中。

    項目不報錯后,可以打開 ClientDemo.java 中的main方法運行一下。如果能成功運行,祝賀你,或許你已經可以調通設備了。如果不能運行請往下繼續閱讀。

    問題

    Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'HCNetSDK: ???μ???

    Exception in thread “main” java.lang.UnsatisfiedLinkError: Unable to load library ‘PlayCtrl’: ???μ???¨

    遇到上述的兩種錯誤時,不要驚慌,打開 HCNetSDK.java 文件。

    更改

    HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("HCNetSDK", HCNetSDK.class);
    • 1

    HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("你的項目絕對路徑/HCNetSDK", HCNetSDK.class); //你的項目絕對路徑指 D:\Workspace\ClientDemo-NetBeansPro
    • 1

    更改

    PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary("PlayCtrl", PlayCtrl.class);
    • 1

    PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary("你的項目絕對路徑/PlayCtrl.dll", PlayCtrl.class); //注意此處的PlayCtrl必須加dll后綴,要不然會報錯
    • 1

    解決完錯誤后,再次打開 ClientDemo.java 中的main方法運行一下,終于出現了久違的畫面。

    終于成功運行起來了,我們興致沖沖的點擊注冊,卻提示 注冊失敗 。這是什么問題?好吧,debug一下,發現此處代碼

    lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP,(short) iPort, jTextFieldUserName.getText(), new String(jPasswordFieldPassword.getPassword()), m_strDeviceInfo);
    • 1
    • 2

    中的lUserID返回-1,為啥會返回-1呢,不知道,完全不懂。

    排查

    SDK庫文件拷貝到該目錄下.txt 文件中的第4條描述使用NET_DVR_GetLastError錯誤號判斷原因,好吧,我們加上輸入打印。

    lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP,(short) iPort, jTextFieldUserName.getText(), new String(jPasswordFieldPassword.getPassword()), m_strDeviceInfo); System.out.println("注冊失敗錯誤碼:" + hCNetSDK.NET_DVR_GetLastError());

    打印出來發現返回41。這個41到底代表的哪個錯誤,好吧,去文檔(設備網絡SDK編程指南(DVR&NVR).pdf)里面查一下,文檔中描述說

    錯誤名稱錯誤值說明
    NET_DVR_ALLOC_RESOURCE_ERROR41SDK 資源分配錯誤

    SDK資源分配錯誤,是不是資源文件沒有引用全啊。沒辦法,給技術支持發郵件吧。技術支持回復將所有的庫文件全拷貝到項目路徑下。果然是資源沒有引用全的原因。

    好吧,照搬,把所有文件拷貝進去后,點擊注冊,成功了! - _ - - _ - - _ -但是,為什么要拷貝那么多啊,那么多文件放在項目下肯定不合適啊,肯定會有文件用不到啊。

    總結

    經過我的努力,發現只需要將

    HCNetSDK.dll HCCore.dll HCNetSDKCom文件夾 PlayCtrl.dll SuperRender.dll AudioRender.dll ssleay32.dll libeay32.dll

    文件和文件夾拷貝到項目目錄下,官方的說明里面直接是少了三個dll文件。T_T T_T T_T

    最后,如果拷貝以上文件還是報錯的話,建議將所有的dll文件全拷貝到項目根目錄下。

    這就是我運行海康威視官方JAVA SDK DEMO的所有坑,記錄一下,讓大家少走彎路。

    總結

    以上是生活随笔為你收集整理的第一次部署海康威视DEMO的一些坑,最终运行成功的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。