JAVA 对 海康SDK二次开发

由于项目要求需要使用海康摄像头 就去官网下了sdk ,但是不知道咋搞啊    又下了demo 解压以后发现java demo 这个欢喜 不用看其他开发语言了,赶紧导入并按知道添加动态库 运行,靠报错 无法加载动态库Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'PlayCtrl': ÕҲ»µ½ָ¶¨当然 sdk也报错Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'HCNetSDK: ÕҲ»µ½ָ然后按官网的方法各种尝试  差点把电脑搞费喽 也没搞好,尼玛,看来还得自己想办法,还好 最后搞定了    

 最简单有效的方法就是换开发环境 32位,使用32位jdk和eclipse 以后运行 没有任何错误,然后按demo 摘代码 实现预览

// 初始化
        initfalse = hcNetSDK.NET_DVR_Init();// 初始化

        if (initfalse) {
            System.out.println("初始化成功");
        }

        // 注册设备
        HCNetSDK.NET_DVR_DEVICEINFO_V30 strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
        Unitls.HCNetSDK.NET_DVR_USER_LOGIN_INFO struLoginInfo = new Unitls.HCNetSDK.NET_DVR_USER_LOGIN_INFO();
        Unitls.HCNetSDK.NET_DVR_DEVICEINFO_V40 struDeviceInfo = new Unitls.HCNetSDK.NET_DVR_DEVICEINFO_V40();
        String sDeviceIP = "192.0.0.64";
        String passwordFieldPwd = "1234asdf";
        String textFieldUserName = "admin";
        int iPort = 8000;
        for (int i = 0; i < sDeviceIP.length(); i++) {
            struLoginInfo.sDeviceAddress[i] = (byte) sDeviceIP.charAt(i);
        }
        for (int i = 0; i < passwordFieldPwd.length(); i++) {
            struLoginInfo.sPassword[i] = (byte) passwordFieldPwd.charAt(i);
        }
        for (int i = 0; i < textFieldUserName.length(); i++) {
            struLoginInfo.sUserName[i] = (byte) textFieldUserName.charAt(i);
        }
        struLoginInfo.wPort = (short) iPort;

        nlUserID = hcNetSDK.NET_DVR_Login_V40(struLoginInfo, struDeviceInfo);

        lUserID = nlUserID.longValue();
        if (lUserID >= 0) {
            System.out.println("登陆注册成功");
        }

        strPreviewInfo = new HCNetSDK.NET_DVR_PREVIEWINFO();
        strPreviewInfo.lChannel = new NativeLong(1);

        HWND hwnd = new HWND(Native.getComponentPointer(this)); // 获取窗口语柄

        strPreviewInfo.hPlayWnd = hwnd;
        StartPlay(nlUserID, strPreviewInfo);

    }

    // stop play
    public void StopPlay() {

        // 停止预览
        hcNetSDK.NET_DVR_StopRealPlay(m_lPreviewHandle);
        // 注销用户
        hcNetSDK.NET_DVR_Logout(nlUserID);
        // 释放SDK资源
        hcNetSDK.NET_DVR_Cleanup();
        this.repaint();

    }

    // 开始 预览
    private <NET_DVR_GetLastError> void StartPlay(NativeLong lUserId, HCNetSDK.NET_DVR_PREVIEWINFO struPreviewInfo) {

        // HWND hwnd = new HWND(Native.getComponentPointer(this)); // 获取窗口语柄
        // struPreviewInfo.hPlayWnd = hwnd;
        m_lPreviewHandle = hcNetSDK.NET_DVR_RealPlay_V40(lUserId, struPreviewInfo, null, null);

        // 预览出错 打印错误代码
        if (m_lPreviewHandle.longValue() == -1) {
            hcNetSDK.NET_DVR_GetLastError();
            System.out.println(hcNetSDK.NET_DVR_GetLastError() + "----错误码是啥");

        }

    }

到此预览成功  还有一点就是获取窗口语柄  一定要注意不要传不显示的控件  我之前用java拼的窗口 预留了jpanel  但是无法显示  最后没办法 只好又写个窗口 想办法与主窗口绑定就可以了  就到这里把

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值