精华内容
下载资源
问答
  • Linux 下 调用 大华SDK

    2018-11-26 09:54:35
    非QT 等界面形式进行大华SDK的调用,主要就是解决Linux下调用大华SDK时所遇到的环境搭建问题。
  • 大华SDK最新版

    2018-10-16 16:40:57
    设备网络SDK是基于大华设备私有网络通讯协议开发,为网络硬盘录像机、网络视频服务器、网络摄像机、网络球机、智能设备、报警主机、门禁产品、热成像等产品服务的开发套件。开发者可以使用该开发套件对设备进行监控...
  • 大华SDK,包含 JAVA版DEMO

    2018-08-23 10:51:57
    大华通用sdk,大华摄像头通用SDK,官方Demo,包含多种语言,C++ JAVA C# Delphi的实现均有。可提供二次开发,SDK函数说明均为中文,容易二次开发。
  • 大华sdk开发手册

    2019-01-19 11:22:27
    大华sdk开发手册java版
  • 读取大华sdk下载,视频比较全面,winform版本的
  • 大华官网只有Linux下的QTdemo 而且没有视频播放功能,我这个代码主要是搭建了Windows下的一个QT环境,调用了大华的一些SDK,可以播放视频并同时下载下来,希望对大家有参考作用
  • 大华提供的回调接口获取标准的H264裸码,可实现标准H264裸码封装MP4文件+保存.h264文件+实时预览。
  • C# 大华SDK开发例子 64位系统

    热门讨论 2015-06-03 21:50:59
    private void play() { disConnect = new fDisConnect(DisConnectEvent); bool blnInit = DHClient.DHInit(disConnect, IntPtr.Zero); deviceInfo = new NET_DEVICEINFO(); int error = 0;
  • 本人在学习大华开发时写的一个DEMO,用大华提供的回调接口获取标准的H264裸码,可实现标准H264裸码封装MP4文件+保存.h264文件+实时预览。
  • 大华平台SDK开发手册(linux版)
  • 大华SDK demo源码

    2014-06-13 08:36:10
    浙江大华技术股份有限公司是一家专业生产安防设备的厂家,这个使他们设备的SDK demo程序
  • 大华通用sdk,大华摄像头通用SDK,JAVA例子。大华通用sdk,大华摄像头通用SDK,JAVA例子。大华通用sdk,大华摄像头通用SDK,JAVA例子。
  • 用C#通过调用大华SDK完成对大华硬盘录像机的应用,源代码
  • 大华SDK基于Java的二次开发

    千次阅读 2021-03-30 10:41:10
    简单陈述一下基于大华的官网SDK实现摄像头的云台控制和抓图。无非就是调用SDK提供的一些函数来实现。 1. 首先先看看大华给的开发流程 开发可以顺着这个流程图的步骤,就会变得简单明了,开发其他功能也一样,下面是...

    前言

    最近半个月在对接大华摄像头,要实现摄像头的实时预览、云台控制和截图等功能。在网上找了很多资源也没有找到想要的,所以自己写了工具类。简单陈述一下基于大华的官网SDK实现摄像头的云台控制和抓图。无非就是调用SDK提供的一些函数来实现。

    1. 首先先看看大华给的开发流程

    image.png

    开发可以顺着这个流程图的步骤,就会变得简单明了,开发其他功能也一样,下面是我封装好的工具类。至于一些引用类都是在大华官网的SDK里面。

    大华SDK下载点这

    • 云台控制
    /**
     * @author : colors
     * @date : 11:04 2020/12/3
     * 云台控制工具类
     */
    public class PTZControlUtil {
    
        // 初始化sdk
        public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;
    
        // 设备信息
        private static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
    
        // 登陆句柄
        private static NetSDKLib.LLong m_hLoginHandle = new NetSDKLib.LLong(0);
    
        // 网络断线处理
        private static DisConnect disConnect = new DisConnect();
    
        // 设备连接恢复,实现设备连接恢复接口
        private static HaveReConnect haveReConnect = new HaveReConnect();
    
    
        /**
         * 云台控制
         * 向上移动
         *
         * @param m_strIp       ip
         * @param m_nPort       端口
         * @param m_strUser     登录名
         * @param m_strPassword 密码
         * @param nChannelID    通道id 默认为0
         * @param lParam1       默认 0,当有左上或左下等操作时才会传值 (1-8) 
         * @param lParam2       垂直/水平 移动速度 (1-8) 
         */
        public static void upControlPtz(String m_strIp, int m_nPort, String m_strUser, String m_strPassword, int nChannelID, int lParam1, int lParam2) {
            // 初始化
            LoginModule.init(disConnect, haveReConnect);
            // 若未登录,先登录。
            if (m_hLoginHandle.longValue() == 0) {
                login(m_strIp, m_nPort, m_strUser, m_strPassword);
            }
            // 开始向上移动,若超过角度则会变为左右移动
            if (m_hLoginHandle.longValue() != 0) {
                startUpControl(nChannelID, lParam1, lParam2);
            }
            System.out.println("操作完成");
            // 停止移动
            stopUpControl(nChannelID);
            // 退出
            logout();
            System.out.println("退出登录...");
            // 释放资源
            LoginModule.cleanup();
    
        }
    
        // 向上
        private static void startUpControl(int nChannelID, int lParam1, int lParam2) {
            if (m_hLoginHandle.longValue() != 0) {
                netsdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
                        NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL,
                        lParam1, lParam2, 0, 0);
            } else {
                System.err.println("登录句柄不存在!");
            }
        }
    
        private static void stopUpControl(int nChannelID) {
            netsdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
                    NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL,
                    0, 0, 0, 1);
        }
    
    
        // 上下左右等其他一些操作只是指令不同 ,此处就省略了
    
    
        /**
         * 登录
         *
         * @param m_strIp       ip
         * @param m_nPort       端口号
         * @param m_strUser     账号
         * @param m_strPassword 密码
         * @return 成功则 true
         */
        public static boolean login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {
            //IntByReference nError = new IntByReference(0);
            //入参
            NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam = new NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY();
            pstInParam.nPort = m_nPort;
            pstInParam.szIP = m_strIp.getBytes();
            pstInParam.szPassword = m_strPassword.getBytes();
            pstInParam.szUserName = m_strUser.getBytes();
            //出参
            NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
            pstOutParam.stuDeviceInfo = m_stDeviceInfo;
            m_hLoginHandle = netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
            System.out.println(netsdk.getClass());
            if (m_hLoginHandle.longValue() == 0) {
                System.err.printf("登录失败!\n", m_strIp, m_nPort, ToolKits.getErrorCodePrint());
            } else {
                System.out.println("登录成功: [ " + m_strIp + " ]");
            }
    
            return m_hLoginHandle.longValue() == 0 ? false : true;
        }
    
        /**
         * 退出登录
         */
        private static boolean logout() {
            if (m_hLoginHandle.longValue() == 0) {
                return false;
            }
    
            boolean bRet = netsdk.CLIENT_Logout(m_hLoginHandle);
            if (bRet) {
                m_hLoginHandle.setValue(0);
            }
    
            return bRet;
        }
    
        // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
        private static class DisConnect implements NetSDKLib.fDisConnect {
            public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
                System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
            }
        }
    
        // 网络连接恢复,设备重连成功回调
        // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
        private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
            public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
                System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
            }
        }
    

    2. 抓图功能

    先看看官网给的流程图,步骤3 看自己需求来调用函数

    image.png

    3. 下面是封装好的工具类,可直接食用。

    public class CapturePictureUtil {
    
        private static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;
    
        private static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
    
        private static NetSDKLib.LLong m_hLoginHandle = new NetSDKLib.LLong(0);
    
        private static DisConnect disConnect = new DisConnect();
    
        private static HaveReConnect haveReConnect = new HaveReConnect();
    
        private static fCaptureReceiveCB m_CaptureReceiveCB = new fCaptureReceiveCB();
    
        /**
         * 封装抓图方法
         *
         * @param m_strIp       设备ip
         * @param m_nPort       设备端口 
         * @param m_strUser     账号
         * @param m_strPassword 密码
         * @param chn           通道id
         * @param mode          请求一帧  默认 0
         * @param interval      时间单位秒:默认 0 
         */
        public static void capturePicture(String m_strIp, int m_nPort, String m_strUser, String m_strPassword, int chn, int mode, int interval) {
    
            // 初始化sdk
            LoginModule.init(disConnect, haveReConnect);
    
            // 登录
            if (m_hLoginHandle.longValue() == 0) {
                login(m_strIp, m_nPort, m_strUser, m_strPassword);
            }
            // 截图
            if (m_hLoginHandle.longValue() != 0) {
                snapPicture(chn, mode, interval);
            }
            try {
                synchronized (fCaptureReceiveCB.class) {
                    // 默认等待 3s, 防止设备断线时抓拍回调没有被触发,而导致死等
                    fCaptureReceiveCB.class.wait(3000L); 
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("--> " + Thread.currentThread().getName() + " CLIENT_SnapPictureEx Success." + System.currentTimeMillis());
            logout();
            LoginModule.cleanup();
        }
    
        /*
         * 登录
         */
        public static boolean login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {
    
            //入参
            NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam = new NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY();
            pstInParam.nPort = m_nPort;
            pstInParam.szIP = m_strIp.getBytes();
            pstInParam.szPassword = m_strPassword.getBytes();
            pstInParam.szUserName = m_strUser.getBytes();
            //出参
            NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
            pstOutParam.stuDeviceInfo = m_stDeviceInfo;
            m_hLoginHandle = netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
            System.out.println(netsdk.getClass());
            if (m_hLoginHandle.longValue() == 0) {
                System.err.printf("登录失败!\n", m_strIp, m_nPort, ToolKits.getErrorCodePrint());
            } else {
                System.out.println("登录成功: [ " + m_strIp + " ]");
    
            }
    
            return m_hLoginHandle.longValue() == 0 ? false : true;
        }
    
        /**
         * 退出登录
         */
        private static boolean logout() {
            if (m_hLoginHandle.longValue() == 0) {
                return false;
            }
    
            boolean bRet = netsdk.CLIENT_Logout(m_hLoginHandle);
            if (bRet) {
                m_hLoginHandle.setValue(0);
            }
    
            return bRet;
        }
    
        /**
         * 抓图方法
         *
         * @param chn      通道号
         * @param mode     默认 0
         * @param interval 默认0
         * @return 成功返回ture
         */
        private static boolean snapPicture(int chn, int mode, int interval) {
            setSnapRevCallBack(m_CaptureReceiveCB);
            // send caputre picture command to device
            NetSDKLib.SNAP_PARAMS stuSnapParams = new NetSDKLib.SNAP_PARAMS();
            stuSnapParams.Channel = chn;            // channel
            stuSnapParams.mode = mode;                // capture picture mode
            stuSnapParams.Quality = 3;                // picture quality
            stuSnapParams.InterSnap = interval;    // timer capture picture time interval
            stuSnapParams.CmdSerial = 0;            // request serial
    
            IntByReference reserved = new IntByReference(0);
            if (!netsdk.CLIENT_SnapPictureEx(m_hLoginHandle, stuSnapParams, reserved)) {
                System.err.printf("CLIENT_SnapPictureEx Failed!" + ToolKits.getErrorCodePrint());
                return false;
            } else {
                System.out.println("CLIENT_SnapPictureEx success");
            }
            return true;
        }
    
        /**
         * 保存图片
         */
        private static class fCaptureReceiveCB implements NetSDKLib.fSnapRev {
            BufferedImage bufferedImage = null;
    
            public void invoke(NetSDKLib.LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) {
                if (pBuf != null && RevLen > 0) {
                    String strFileName = SavePath.getSavePath().getSaveCapturePath();
                    System.out.println("strFileName = " + strFileName);
                    byte[] buf = pBuf.getByteArray(0, RevLen);
                    ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf);
                    try {
                        bufferedImage = ImageIO.read(byteArrInput);
                        if (bufferedImage == null) {
                            return;
                        }
                        ImageIO.write(bufferedImage, "jpg", new File(strFileName));
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                }
            }
        }
    
        /**
         * 抓图回调函数
         *
         * @param cbSnapReceive
         */
        private static void setSnapRevCallBack(NetSDKLib.fSnapRev cbSnapReceive) {
            netsdk.CLIENT_SetSnapRevCallBack(cbSnapReceive, null);
        }
    
    
        // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
        private static class DisConnect implements NetSDKLib.fDisConnect {
            public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
                System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
            }
        }
    
        // 网络连接恢复,设备重连成功回调
        // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
        private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
            public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
                System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
            }
        }
    
    

    结果:
    image.png


    更新

    记录一下踩到的坑:大华SDK部署在windows 环境和 Linux环境不一样,在Linux环境中需要从环境变量里面去加载库文件且 NetSDKLib 接口中的 fDisConnect 继承的类不一样,需要更换,不然会报异常:lang.IllegalArgumentException:Invalid calling convention 63。

    注意资源的释放、登录和登出。

    欢迎留言交流,你的关注是对我最大的支持。

    展开全文
  • General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\doc, 0 , 2020-04-07General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\libs, 0 , 2020-04-07General_...

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\doc, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\libs, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\libs\win64, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\res, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Attendance, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\AutoRegister, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\FaceRecognition, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Gate, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\ThermalCamera, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\module, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\lib, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\archive-tmp, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk\common, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk\demo, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk\demo\frame, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk\demo\frame\Attendance, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk\demo\frame\AutoRegister, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk\demo\frame\FaceRecognition, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk\demo\frame\Gate, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk\demo\frame\ThermalCamera, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk\demo\module, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\classes\main\java\com\netsdk\lib, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\target\maven-archiver, 0 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\.classpath, 539 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\.project, 384 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\doc\NetSDK_JAVA ProgrammingManual.pdf, 985583 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\doc\NetSDK_JAVA编程指导手册.pdf, 1125430 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\libs\examples.jar, 290063 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\libs\jna.jar, 1506245 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\libs\win64\avglobal.h, 476 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\libs\win64\dhconfigsdk.h, 854438 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\libs\win64\dhnetsdk.h, 3526472 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\libs\win64\IvsDrawer.h, 16339 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\package.bat, 443 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\pom.xml, 2579 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\ReadMe_请先读我.txt, 24287 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\res\res_en_US.properties, 34093 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\res\res_zh_CN.properties, 44990 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\run_win64.bat, 174 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\Base64.java, 9950 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\BorderEx.java, 516 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\CaseMenu.java, 2137 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\DateChooserJButton.java, 21783 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\DateChooserJButtonEx.java, 19992 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\DeviceManagerListener.java, 160 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\ErrorCode.java, 50527 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\FunctionList.java, 7553 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\ListPictureShowDialog.java, 875 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\LoginPanel.java, 3670 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\PaintPanel.java, 835 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\Res.java, 61715 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\SavePath.java, 1940 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\SwitchLanguage.java, 2782 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\common\WindowCloseListener.java, 107 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\AlarmListen.java, 14708 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Attendance\AddFingerPrintDialog.java, 6567 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Attendance\Attendance.java, 5126 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Attendance\AttendanceFunctionOperatePanel.java, 10950 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Attendance\AttendanceOperateShareDialog.java, 9239 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Attendance\AttendanceShowPanel.java, 11895 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Attendance\OperateByFingerPrintIdDialog.java, 6828 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Attendance\OperateByUserIdDialog.java, 9921 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Attendance\SubscribePanel.java, 4814 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\AutoRegister\AddDeviceDialog.java, 4381 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\AutoRegister\AutoRegister.java, 56039 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\AutoRegister\DeviceConfigDialog.java, 11214 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\AutoRegister\ModifyDeviceDialog.java, 4808 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\CapturePicture.java, 15598 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\DeviceControl.java, 12363 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\DeviceSearchAndInit.java, 31118 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\DownLoadRecord.java, 34915 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\FaceRecognition\AddPersonDialog.java, 8517 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\FaceRecognition\DispositionOperateDialog.java, 12126 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\FaceRecognition\DownloadPictureDialog.java, 3937 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\FaceRecognition\FaceRecognition.java, 43828 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\FaceRecognition\FindFaceEventRecordDialog.java, 8461 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\FaceRecognition\GroupOperateDialog.java, 11599 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\FaceRecognition\ModifyPersonDialog.java, 11289 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\FaceRecognition\PersonOperateDialog.java, 29421 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\FaceRecognition\SearchByPicDialog.java, 22537 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Gate\AddCardDialog.java, 11717 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Gate\CardManegerDialog.java, 13368 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Gate\Gate.java, 18410 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Gate\ModifyCardDialog.java, 11579 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\Main.java, 619 , 2020-04-07

    General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000001.0.R.200407\src\main\java\com\netsdk\demo\frame\PTZControl.java, 29305 , 2020-04-07

    展开全文
  • 大华平台SDK开发手册(C++版)
  • 浙江大华 SDK Demo Delphi

    2020-11-11 23:30:39
    1、实现监视、回放等功能  2、修改代码中的设备地址、端口、用户名、密码信息即可以连接设备获取视频 1、实现监视、回放等功能  2、修改代码中的设备地址、端口、用户名、密码信息即可以连接设备获取视频
  • 简单陈述一下基于大华的官网SDK实现摄像头的云台控制和抓图。无非就是调用SDK提供的一些函数来实现。1. 首先先看看大华给的开发流程image.png开发可以顺着这个流程图的步骤,就会变得简单明了,开发其他功能也一样,...

    最近半个月在对接大华摄像头,要实现摄像头的实时预览、云台控制和截图等功能。在网上找了很多资源也没有找到想要的,所以自己写了工具类。简单陈述一下基于大华的官网SDK实现摄像头的云台控制和抓图。无非就是调用SDK提供的一些函数来实现。

    1. 首先先看看大华给的开发流程

    f04797f00994

    image.png

    开发可以顺着这个流程图的步骤,就会变得简单明了,开发其他功能也一样,下面是我封装好的工具类。至于一些引用类都是在大华官网的SDK里面。

    云台控制

    /**

    * @author : colors

    * @date : 11:04 2020/12/3

    * 云台控制工具类

    */

    public class PTZControlUtil {

    // 初始化sdk

    public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;

    // 设备信息

    private static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();

    // 登陆句柄

    private static NetSDKLib.LLong m_hLoginHandle = new NetSDKLib.LLong(0);

    // 网络断线处理

    private static DisConnect disConnect = new DisConnect();

    // 设备连接恢复,实现设备连接恢复接口

    private static HaveReConnect haveReConnect = new HaveReConnect();

    /**

    * 云台控制

    * 向上移动

    *

    * @param m_strIp ip

    * @param m_nPort 端口

    * @param m_strUser 登录名

    * @param m_strPassword 密码

    * @param nChannelID 通道id 默认为0

    * @param lParam1 默认 0,当有左上或左下等操作时才会传值 (1-8)

    * @param lParam2 垂直/水平 移动速度 (1-8)

    */

    public static void upControlPtz(String m_strIp, int m_nPort, String m_strUser, String m_strPassword, int nChannelID, int lParam1, int lParam2) {

    // 初始化

    LoginModule.init(disConnect, haveReConnect);

    // 若未登录,先登录。

    if (m_hLoginHandle.longValue() == 0) {

    login(m_strIp, m_nPort, m_strUser, m_strPassword);

    }

    // 开始向上移动,若超过角度则会变为左右移动

    if (m_hLoginHandle.longValue() != 0) {

    System.out.println("开始向上移动..., 当前速度为:" + lParam2);

    startUpControl(nChannelID, lParam1, lParam2);

    }

    System.out.println("操作完成");

    // 停止移动

    stopUpControl(nChannelID);

    // 退出

    logout();

    System.out.println("退出登录...");

    // 释放资源

    LoginModule.cleanup();

    }

    // 向上

    private static void startUpControl(int nChannelID, int lParam1, int lParam2) {

    if (m_hLoginHandle.longValue() != 0) {

    netsdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,

    NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL,

    lParam1, lParam2, 0, 0);

    } else {

    System.err.println("登录句柄不存在!");

    }

    }

    private static void stopUpControl(int nChannelID) {

    netsdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,

    NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL,

    0, 0, 0, 1);

    }

    // 上下左右等其他一些操作只是指令不同 ,此处就省略了

    /**

    * 登录

    *

    * @param m_strIp ip

    * @param m_nPort 端口号

    * @param m_strUser 账号

    * @param m_strPassword 密码

    * @return 成功则 true

    */

    public static boolean login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {

    //IntByReference nError = new IntByReference(0);

    //入参

    NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam = new NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY();

    pstInParam.nPort = m_nPort;

    pstInParam.szIP = m_strIp.getBytes();

    pstInParam.szPassword = m_strPassword.getBytes();

    pstInParam.szUserName = m_strUser.getBytes();

    //出参

    NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();

    pstOutParam.stuDeviceInfo = m_stDeviceInfo;

    m_hLoginHandle = netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);

    System.out.println(netsdk.getClass());

    if (m_hLoginHandle.longValue() == 0) {

    System.err.printf("登录失败!\n", m_strIp, m_nPort, ToolKits.getErrorCodePrint());

    } else {

    System.out.println("登录成功: [ " + m_strIp + " ]");

    }

    return m_hLoginHandle.longValue() == 0 ? false : true;

    }

    /**

    * 退出登录

    */

    private static boolean logout() {

    if (m_hLoginHandle.longValue() == 0) {

    return false;

    }

    boolean bRet = netsdk.CLIENT_Logout(m_hLoginHandle);

    if (bRet) {

    m_hLoginHandle.setValue(0);

    }

    return bRet;

    }

    // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数

    private static class DisConnect implements NetSDKLib.fDisConnect {

    public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {

    System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);

    }

    }

    // 网络连接恢复,设备重连成功回调

    // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数

    private static class HaveReConnect implements NetSDKLib.fHaveReConnect {

    public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {

    System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);

    }

    }

    2. 抓图功能

    先看看官网给的流程图,步骤3 看自己需求来调用函数

    f04797f00994

    image.png

    下面是封装好的工具类,可直接食用。

    public class CapturePictureUtil {

    private static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;

    private static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();

    private static NetSDKLib.LLong m_hLoginHandle = new NetSDKLib.LLong(0);

    private static DisConnect disConnect = new DisConnect();

    private static HaveReConnect haveReConnect = new HaveReConnect();

    private static fCaptureReceiveCB m_CaptureReceiveCB = new fCaptureReceiveCB();

    /**

    * 封装抓图方法

    *

    * @param m_strIp 设备ip

    * @param m_nPort 设备端口

    * @param m_strUser 账号

    * @param m_strPassword 密码

    * @param chn 通道id

    * @param mode 请求一帧 默认 0

    * @param interval 时间单位秒:默认 0

    */

    public static void capturePicture(String m_strIp, int m_nPort, String m_strUser, String m_strPassword, int chn, int mode, int interval) {

    // 初始化sdk

    LoginModule.init(disConnect, haveReConnect);

    // 登录

    if (m_hLoginHandle.longValue() == 0) {

    login(m_strIp, m_nPort, m_strUser, m_strPassword);

    }

    // 截图

    if (m_hLoginHandle.longValue() != 0) {

    snapPicture(chn, mode, interval);

    }

    try {

    synchronized (fCaptureReceiveCB.class) {

    // 默认等待 3s, 防止设备断线时抓拍回调没有被触发,而导致死等

    fCaptureReceiveCB.class.wait(3000L);

    }

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    System.out.println("--> " + Thread.currentThread().getName() + " CLIENT_SnapPictureEx Success." + System.currentTimeMillis());

    logout();

    LoginModule.cleanup();

    }

    /*

    * 登录

    */

    public static boolean login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {

    //入参

    NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam = new NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY();

    pstInParam.nPort = m_nPort;

    pstInParam.szIP = m_strIp.getBytes();

    pstInParam.szPassword = m_strPassword.getBytes();

    pstInParam.szUserName = m_strUser.getBytes();

    //出参

    NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();

    pstOutParam.stuDeviceInfo = m_stDeviceInfo;

    m_hLoginHandle = netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);

    System.out.println(netsdk.getClass());

    if (m_hLoginHandle.longValue() == 0) {

    System.err.printf("登录失败!\n", m_strIp, m_nPort, ToolKits.getErrorCodePrint());

    } else {

    System.out.println("登录成功: [ " + m_strIp + " ]");

    }

    return m_hLoginHandle.longValue() == 0 ? false : true;

    }

    /**

    * 退出登录

    */

    private static boolean logout() {

    if (m_hLoginHandle.longValue() == 0) {

    return false;

    }

    boolean bRet = netsdk.CLIENT_Logout(m_hLoginHandle);

    if (bRet) {

    m_hLoginHandle.setValue(0);

    }

    return bRet;

    }

    /**

    * 抓图方法

    *

    * @param chn 通道号

    * @param mode 默认 0

    * @param interval 默认0

    * @return 成功返回ture

    */

    private static boolean snapPicture(int chn, int mode, int interval) {

    setSnapRevCallBack(m_CaptureReceiveCB);

    // send caputre picture command to device

    NetSDKLib.SNAP_PARAMS stuSnapParams = new NetSDKLib.SNAP_PARAMS();

    stuSnapParams.Channel = chn; // channel

    stuSnapParams.mode = mode; // capture picture mode

    stuSnapParams.Quality = 3; // picture quality

    stuSnapParams.InterSnap = interval; // timer capture picture time interval

    stuSnapParams.CmdSerial = 0; // request serial

    IntByReference reserved = new IntByReference(0);

    if (!netsdk.CLIENT_SnapPictureEx(m_hLoginHandle, stuSnapParams, reserved)) {

    System.err.printf("CLIENT_SnapPictureEx Failed!" + ToolKits.getErrorCodePrint());

    return false;

    } else {

    System.out.println("CLIENT_SnapPictureEx success");

    }

    return true;

    }

    /**

    * 保存图片

    */

    private static class fCaptureReceiveCB implements NetSDKLib.fSnapRev {

    BufferedImage bufferedImage = null;

    public void invoke(NetSDKLib.LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) {

    if (pBuf != null && RevLen > 0) {

    String strFileName = SavePath.getSavePath().getSaveCapturePath();

    System.out.println("strFileName = " + strFileName);

    byte[] buf = pBuf.getByteArray(0, RevLen);

    ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf);

    try {

    bufferedImage = ImageIO.read(byteArrInput);

    if (bufferedImage == null) {

    return;

    }

    ImageIO.write(bufferedImage, "jpg", new File(strFileName));

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    }

    /**

    * 抓图回调函数

    *

    * @param cbSnapReceive

    */

    private static void setSnapRevCallBack(NetSDKLib.fSnapRev cbSnapReceive) {

    netsdk.CLIENT_SetSnapRevCallBack(cbSnapReceive, null);

    }

    // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数

    private static class DisConnect implements NetSDKLib.fDisConnect {

    public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {

    System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);

    }

    }

    // 网络连接恢复,设备重连成功回调

    // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数

    private static class HaveReConnect implements NetSDKLib.fHaveReConnect {

    public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {

    System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);

    }

    }

    结果:

    f04797f00994

    image.png

    更新

    记录一下踩到的坑:大华SDK部署在windows 环境和 Linux环境不一样,在Linux环境中需要从环境变量里面去加载库文件且 NetSDKLib 接口中的 fDisConnect 继承的类不一样,需要更换,不然会报异常:lang.IllegalArgumentException:Invalid calling convention 63。

    欢迎留言交流。

    展开全文
  • 大华sdk开发辅助插件

    2018-07-12 21:29:30
    欢迎使用播放SDK编程手册,播放SDK是本公司所有设备的配套产品,支持本公司设备所有码流格式。。 本文档详细描述了开发包中各函数实现的功能及接口。 开发包所包括的文件有
  • python调用大华SDK

    2020-12-04 23:13:47
    else: print("Initialize client SDK done; \n") dwNetSDKVersion = libc.CLIENT_GetSDKVersion() print("NetSDK version is %d" % dwNetSDKVersion) def RunTest(): if not g_bNetSDKInitFlag: return def EndTest...

    #! -*- coding: utf-8 -*-

    from ctypes import *

    libc = windll.LoadLibrary('lib/dhnetsdk.dll')

    g_bNetSDKInitFlag = False

    def InitTest():

    print(libc.CLIENT_Init)

    id = create_string_buffer(1024)

    char = create_string_buffer(1024)

    long = create_string_buffer(1024)

    word = create_string_buffer(1024)

    g_bNetSDKInitFlag = libc.CLIENT_Init(DisConnect(id, char, long, word), 0)

    if not g_bNetSDKInitFlag:

    print("Initialize False")

    else:

    print("Initialize client SDK done; \n")

    dwNetSDKVersion = libc.CLIENT_GetSDKVersion()

    print("NetSDK version is %d" % dwNetSDKVersion)

    def RunTest():

    if not g_bNetSDKInitFlag:

    return

    def EndTest():

    print("input any key to quit!\n")

    #getChar()

    if not g_bNetSDKInitFlag:

    #CLIENT_Cleanup()

    NetFlag()

    #return

    def NetFlag():

    g_bNetSDKInitFlag = False

    def DisConnect( lLoginID, pchDVRIP, nDVRPort, dwUser):

    print("Call HaveReConnect \n")

    print("lLoginID[ 0x%x ]", lLoginID)

    if pchDVRIP:

    print("pchDVRIP[%s]\n", pchDVRIP)

    print("nDVRPort[%d]\n", nDVRPort)

    print('dwUser[%p]\n', dwUser)

    print( "\n")

    def HaveReConnect( lLoginID, pchDVRIP, nDVRPort, dwUser):

    print("Call HaveReConnect \n")

    print("lLoginID[ 0x%x ]", lLoginID)

    if pchDVRIP:

    print("pchDVRIP[%s]\n", pchDVRIP)

    print("nDVRPort[%d]\n", nDVRPort)

    print('dwUser[%p]\n', dwUser)

    print( "\n")

    def main():

    InitTest()

    RunTest()

    EndTest()

    if __name__ == '__main__':

    main()

    展开全文
  • // 网络连接恢复,设备重连成功回调 // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数 private static class HaveReConnect implements NetSDKLib.fHaveReConnect { @...
  • 大华最新SDK

    2018-10-31 12:27:59
    - 涉及播放(预览和回放)功能依赖于 PlaySDK 库. - Wifi配置,设备连接Wifi,把设备配置到网络上需要依赖于 SmartConfig 库. - jar包以及库的路径: NetSDK_Chn_Android\DemoSource\AndroidDemo\app\libs - ...
  • 大华JAVA SDK LINUX64版本

    2019-08-01 16:48:38
    大华JAVA SDK LINUX版本,用官网的linux库放到java版本中,会有字段错位的情况的,出现获取车牌号乱码,window上是正常的,发到linux上就会获取不到对应的字段。General_NetSDKDemo_Chn_Java_Linux64_IS_V1.00.40585....
  • Java 大华SDK问题

    2021-03-06 22:11:09
    如题,Java如何通过官方SDK接口获取大华监控的实时视频流帧,有偿</p>
  • EasyCVR 目前对大华 SDK 的接入开发已经差不多完成了,现在可以通过 EasyCVR 控制大华设备的云台了。本文和大家分享一下开发流程。首先需要有一台带云台控制的大华设备,查看大华 SDK 文档,流程图如下: 流程...
  • python调用大华sdk

    2021-03-26 17:29:40
    import dahua_sdk import time import numpy as np import cv2 import datetime start=time.time() t2=0 start2=datetime.datetime.now() def m_callback(value): global start global start2 print('c
  • 大华通用sdk,大华摄像头通用SDK,官方Demo,JAVA。可提供二次开发,SDK函数说明均为中文,容易二
  • Android平台上集成大华SDK(二)

    千次阅读 2019-01-31 11:12:26
    以上是我之前写的一篇Android平台上集成大华SDK的文章,其中对于Android平台上集成大华SDK、基于大华SDK进行二次开发基本上进行了详细地介绍。 这篇文章,在之前的基础上我对代码进行了优化和封装,我们来看, /** ...
  • qt开发大华摄像头,调用大华sdk开发,显示摄像头视频流! id=642089811131&

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,432
精华内容 572
关键字:

大华sdk