ホームページ  >  記事  >  Java  >  Java Hikvision SDK の二次開発のための効率的なワークフロー

Java Hikvision SDK の二次開発のための効率的なワークフロー

王林
王林オリジナル
2023-09-06 14:36:181334ブラウズ

Java Hikvision SDK の二次開発のための効率的なワークフロー

Java Hikvision SDK の二次開発のための効率的なワークフロー

はじめに:
現在のインテリジェント社会では、監視システムがますます重要な役割を果たしています。国内の大手監視機器サプライヤーとして、Hikvision の SDK は二次開発に非常に適した強力な機能とインターフェイスを提供します。この記事では、Java Hikvision SDK の効率的なワークフローを紹介し、コード例を通じて二次開発を実行する方法を示します。

1. 準備

  1. Hikvision SDK をダウンロードしてインストールする: Hikvision 公式 Web サイトから SDK をダウンロードしてインストールします。
  2. SDK をプロジェクトにインポート: Hikvision SDK の jar パッケージを Java プロジェクトの依存関係に追加します。

2. SDK 環境を初期化する
関数を開発する前に、SDK 環境を初期化する必要があります。サンプル コードは次のとおりです:

import com.sun.jna.NativeLong;
import com.hikvision.netsdk.*;

public class SDKInit {

    public static void main(String[] args) {
        // 初始化SDK
        boolean initSuc = HCNetSDK.INSTANCE.NET_DVR_Init();
        if (initSuc){
            System.out.println("SDK初始化成功");
        } else {
            System.out.println("SDK初始化失败");
        }
        
        // 设置报警回调函数
        HCNetSDK.FMSGCallBack fMsgCallBack = (lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser) -> {
            // 处理报警信息
        };
        NativeLong lUser = new NativeLong(1);
        HCNetSDK.INSTANCE.NET_DVR_SetDVRMessageCallBack_V31(fMsgCallBack, lUser);
        
        // 设置异常回调函数
        HCNetSDK.FExceptionCallBack fExceptionCallBack = (dwType, lUserID, lHandle, pUser) -> {
            // 处理异常信息
        };
        HCNetSDK.INSTANCE.NET_DVR_SetExceptionCallBack_V30(0, lUser, fExceptionCallBack, null);
        
        // 其他初始化设置...
    }
}

3. デバイスの接続とログイン
デバイス関連の操作を実行する前に、まずデバイスを接続してログインする必要があります。サンプル コードは次のとおりです:

public class DeviceConnection {

    public static HCNetSDK.NET_DVR_DEVICEINFO_V30 login(String ip, int port, String username, String password) {
        // 设备初始化
        HCNetSDK.NET_DVR_Init();

        // 登录设备
        HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
        NativeLong lUserID = HCNetSDK.INSTANCE.NET_DVR_Login_V30(ip, port, username, password, deviceInfo);

        if (lUserID.longValue() == -1) {
            System.out.println("登录设备失败:" + HCNetSDK.INSTANCE.NET_DVR_GetLastError());
        } else {
            System.out.println("登录设备成功");
        }

        return deviceInfo;
    }
}

4. デバイス操作の実行
Hikvision SDK を通じて、デバイスの基本情報、リアルタイム プレビュー、スクリーンショットの取得など、さまざまなデバイス操作を実行できます。 、など。サンプル コードは次のとおりです:

public class DeviceOperation {

    public static void getDeviceInfo(HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo) {
        System.out.println("设备名称:" + new String(deviceInfo.sDVRName));
        System.out.println("设备编号:" + deviceInfo.getStruDeviceV30().byDeviceSerialNumber.seriaNumber);
        // 其他设备信息...
    }

    public static void livePreview(NativeLong lUserID) {
        HCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new HCNetSDK.NET_DVR_PREVIEWINFO();
        previewInfo.lChannel = new NativeLong(1); // 预览通道号
        previewInfo.dwStreamType = 0; // 码流类型,0-主码流,1-子码流
        previewInfo.dwLinkMode = 0x0000; // 是否录像,0x0000-不录像,0x0001-录像
        previewInfo.hPlayWnd = null; // 预览窗口

        NativeLong lPlayHandle = HCNetSDK.INSTANCE.NET_DVR_RealPlay_V40(lUserID, previewInfo, null, null);
        if (lPlayHandle.longValue() == -1) {
            System.out.println("预览失败:" + HCNetSDK.INSTANCE.NET_DVR_GetLastError());
        } else {
            System.out.println("预览成功");
        }
    }

    public static void capturePicture(NativeLong lUserID, String savePath) {
        HCNetSDK.NET_DVR_JPEGPARA jpegPara = new HCNetSDK.NET_DVR_JPEGPARA();
        jpegPara.wPicQuality = 2; // 图片质量,2-高质量,1-中等质量,0-低质量
        jpegPara.wPicSize = 0; // 图片分辨率,0-最高分辨率

        if (HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(lUserID, 1, jpegPara, savePath)) {
            System.out.println("抓图成功");
        } else {
            System.out.println("抓图失败:" + HCNetSDK.INSTANCE.NET_DVR_GetLastError());
        }
    }

    // 其他设备操作...
}

5. リソースを解放してログアウト
Hikvision SDK を使用した後は、時間内にリソースを解放し、デバイスからログアウトする必要があります。サンプル コードは次のとおりです。

public class SDKRelease {

    public static void main(String[] args) {
        // 登出设备
        NativeLong lUserID = new NativeLong(1);
        if (HCNetSDK.INSTANCE.NET_DVR_Logout_V30(lUserID)) {
            System.out.println("登出设备成功");
        } else {
            System.out.println("登出设备失败:" + HCNetSDK.INSTANCE.NET_DVR_GetLastError());
        }

        // 释放SDK资源
        HCNetSDK.INSTANCE.NET_DVR_Cleanup();
        System.out.println("释放SDK资源");
    }
}

結論:
上記の紹介とサンプル コードを通じて、Java Hikvision SDK の二次開発の効率的なワークフローを理解しました。上記の手順に従って開発する限り、Hikvision 監視機器が提供する機能とインターフェイスを簡単に使用して、独自のアプリケーションのニーズを実現できます。この記事が二次開発のお役に立てれば幸いです!

以上がJava Hikvision SDK の二次開発のための効率的なワークフローの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。