package com.boying.common; import com.boying.Util.OSUtils; import com.boying.service.HCNetSDK; import com.boying.service.SdkInitService; import lombok.extern.slf4j.Slf4j; import java.util.Objects; @Slf4j public class InitSdkTask implements Runnable { /** * 装配 sdk 所需依赖 */ static HCNetSDK hCNetSDK = SdkInitService.hcNetSDK; @Override public void run() { try { if (Objects.equals(OSUtils.getOsName(), "linux")) { log.info("InitSdk-is-linux"); String userDir = System.getProperty("user.dir"); log.info("InitSdk-userDir={}", userDir); String osPrefix = OSUtils.getOsPrefix(); if (osPrefix.toLowerCase().startsWith("linux-i386")) { HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256); HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256); //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限 //linux 下, 库加载参考:OSUtils.getLoadLibrary() String strPath1 = System.getProperty("user.dir") + "/hkliblinux32/libcrypto.so.1.1"; String strPath2 = System.getProperty("user.dir") + "/hkliblinux32/libssl.so.1.1"; System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length()); ptrByteArray1.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer()); System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length()); ptrByteArray2.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer()); //linux 下, 库加载参考:OSUtils.getLoadLibrary() String strPathCom = System.getProperty("user.dir") + "/hkliblinux32/HCNetSDKCom/"; HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); struComPath.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer()); } else if (osPrefix.toLowerCase().startsWith("linux-amd64")) { HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256); HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256); //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限 //linux 下, 库加载参考:OSUtils.getLoadLibrary() String strPath1 = System.getProperty("user.dir") + "/hkliblinux64/libcrypto.so.1.1"; String strPath2 = System.getProperty("user.dir") + "/hkliblinux64/libssl.so.1.1"; System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length()); ptrByteArray1.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer()); System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length()); ptrByteArray2.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer()); String strPathCom = System.getProperty("user.dir") + "/hkliblinux64/HCNetSDKCom/"; //linux 下, 库加载参考:OSUtils.getLoadLibrary() HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); struComPath.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer()); } else { log.info("osPrefix={}", osPrefix); } } //初始化sdk boolean isOk = hCNetSDK.NET_DVR_Init(); hCNetSDK.NET_DVR_SetConnectTime(10, 1); hCNetSDK.NET_DVR_SetReconnect(100, true); if (!isOk) { log.error("=================== InitSDK init fail ==================="); } else { log.info("============== InitSDK init success ===================="); } } catch (Exception e) { log.error("InitSDK-error,e={}", e.getMessage()); e.printStackTrace(); } } }