‘liusuyi’
2023-10-25 c8b6f74ecc29022a7f52a2ee35aa25eef3312f39
海康动态链接库集成
已修改6个文件
已删除8个文件
已重命名35个文件
已添加12个文件
已复制1个文件
422 ■■■■ 文件已修改
ard-alarm.iml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/ClientDemoDll/ReadMe.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/ClientDemoDll/calib.dll 补丁 | 查看 | 原始文档 | blame | 历史
lib/ClientDemoDll/iconv.dll 补丁 | 查看 | 原始文档 | blame | 历史
lib/ClientDemoDll/libcrypto-1_1-x64.dll 补丁 | 查看 | 原始文档 | blame | 历史
lib/ClientDemoDll/libssl-1_1-x64.dll 补丁 | 查看 | 原始文档 | blame | 历史
lib/ClientDemoDll/libxml2.dll 补丁 | 查看 | 原始文档 | blame | 历史
lib/ClientDemoDll/zlib1.dll 补丁 | 查看 | 原始文档 | blame | 历史
lib/OpenAL32.dll 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/hiksdk/util/hikSdkUtil/HCNetSDK.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/DynamicParseUtil.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/sdk/LibraryLoad.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-dev.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/dynamic-lib-load.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/AudioRender.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/GdiPlus.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCCore.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDK.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/AnalyzeData.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/AudioIntercom.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/AudioRender.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCAlarm.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCAlarm.lib 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCCoreDevCfg.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCDisplay.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCGeneralCfgMgr.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCGeneralCfgMgr.lib 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCIndustry.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCPlayBack.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCPreview.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCPreview.lib 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCVoiceTalk.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/OpenAL32.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/StreamTransClient.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/SystemTransform.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HCNetSDKCom/libiconv2.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HXVA.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/HmMerge.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/ImageAlg.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/Infra.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/IvsDrawer.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/MP_Render.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/NPQos.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/OpenAL32.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/PlayCtrl.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/RenderEngine.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/StreamConvertor.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/SuperRender.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/YUVProcess.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/avnetsdk.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/dhconfigsdk.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/dhnetsdk.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/dhplay.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/hlog.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/hpr.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/libcrypto-1_1-x64.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/libmmd.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/libssl-1_1-x64.dll 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/lib/win64/sdk/zlib1.dll 补丁 | 查看 | 原始文档 | blame | 历史
ard-alarm.iml
@@ -97,7 +97,7 @@
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.27" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.27" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.27" level="project" />
    <orderEntry type="library" name="Maven: net.java.jna:jna:1.0.0" level="project" />
    <orderEntry type="library" name="Maven: net.java.dev.jna:jna:5.4.0" level="project" />
    <orderEntry type="library" name="Maven: net.java.examples:examples:1.0.0" level="project" />
    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.5.3.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.velocity:velocity-engine-core:2.0" level="project" />
lib/ClientDemoDll/ReadMe.txt
ÎļþÒÑɾ³ý
lib/ClientDemoDll/calib.dll
Binary files differ
lib/ClientDemoDll/iconv.dll
Binary files differ
lib/ClientDemoDll/libcrypto-1_1-x64.dll
Binary files differ
lib/ClientDemoDll/libssl-1_1-x64.dll
Binary files differ
lib/ClientDemoDll/libxml2.dll
Binary files differ
lib/ClientDemoDll/zlib1.dll
Binary files differ
lib/OpenAL32.dll
Binary files differ
pom.xml
@@ -50,10 +50,11 @@
        <!--海康录像机二次开发依赖jar包-->
        <dependency>
            <groupId>net.java.jna</groupId>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>1.0.0</version>
            <version>5.4.0</version>
        </dependency>
        <dependency>
            <groupId>net.java.examples</groupId>
            <artifactId>examples</artifactId>
src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java
@@ -42,8 +42,6 @@
    //初始化执行
    @Override
    public void run(ApplicationArguments args) {
        //加载sdk库
        HikClientUtil.loadHCNetSDKLib();
        //获取小光电尝试登录
        ardCameraList = selectArdCamerasList(new ArdCameras());
        HikClientUtil.loginAllCamera(ardCameraList);
src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
@@ -29,50 +29,9 @@
 **/
@Slf4j(topic = "hikSdk")
public class HikClientUtil {
    private static HCNetSDK hCNetSDK;
    public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
    // æŠ¥è­¦å›žè°ƒå‡½æ•°å®žçް
    public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31;
    public static void loadHCNetSDKLib() {
        try {
            log.debug("开始加载sdk库文件路径");
            if (Platform.isWindows()) {
                String WIN_PATH = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "HCNetSDK.dll";
                log.debug("当前Windows平台的sdk库路径:" + WIN_PATH);
                hCNetSDK = (HCNetSDK) Native.loadLibrary(WIN_PATH, HCNetSDK.class);
            } else {
                log.debug("Linux平台");
                String LINUX_PATH = System.getProperty("user.dir") + File.separator + "hiklib" + File.separator + "libhcnetsdk.so";
                log.debug("当前Linux平台的sdk库路径:" + LINUX_PATH);
                hCNetSDK = (HCNetSDK) Native.loadLibrary(LINUX_PATH, HCNetSDK.class);
                //设置HCNetSDKCom组件库所在路径
                //libhcnetsdk.so
                String strPathCom = "/home/hiklib";
                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());
                //设置libcrypto.so所在路径
                HCNetSDK.BYTE_ARRAY ptrByteArrayCrypto = new HCNetSDK.BYTE_ARRAY(256);
                String strPathCrypto = "/home/hiklib/libcrypto.so.1.1";
                System.arraycopy(strPathCrypto.getBytes(), 0, ptrByteArrayCrypto.byValue, 0, strPathCrypto.length());
                ptrByteArrayCrypto.write();
                hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArrayCrypto.getPointer());
                //设置libssl.so所在路径
                HCNetSDK.BYTE_ARRAY ptrByteArraySsl = new HCNetSDK.BYTE_ARRAY(256);
                String strPathSsl = "/home/hiklib/libssl.so.1.1";
                System.arraycopy(strPathSsl.getBytes(), 0, ptrByteArraySsl.byValue, 0, strPathSsl.length());
                ptrByteArraySsl.write();
                hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer());
            }
        } catch (Exception ex) {
            log.error("加载库文件异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 æ³¨å†Œç™»å½• åªæ”¯æŒåŒæ­¥ç™»é™†ï¼Œä¸”官方不建议直接在此接口下写耗时操作
src/main/java/com/ard/utils/hiksdk/util/hikSdkUtil/HCNetSDK.java
@@ -1,5 +1,6 @@
package com.ard.utils.hiksdk.util.hikSdkUtil;
import com.ard.utils.sdk.LibraryLoad;
import com.sun.jna.*;
import com.sun.jna.examples.win32.W32API;
import com.sun.jna.examples.win32.W32API.HWND;
@@ -13,7 +14,7 @@
//SDK接口说明,HCNetSDK.dll
public interface HCNetSDK extends Library {
    HCNetSDK hCNetSDK = Native.load(LibraryLoad.getLoadLibrary("sdk\\HCNetSDK"), HCNetSDK.class);
    /*** å®å®šä¹‰ ***/
    //常量
src/main/java/com/ard/utils/sdk/DynamicParseUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,127 @@
package com.ard.utils.sdk;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
/**
 * @author 47081
 * @version 1.0
 * @description
 * @date 2021/3/10
 */
public class DynamicParseUtil {
  private DynamicLibParseHandler handler;
  private SAXParserFactory saxParserFactory;
  private SAXParser saxParser;
  /**
   * é€‚配各系统动态库名称大小写不同,以及lib前缀造成的找不到库的问题
   *
   * @param currentSystem å½“前系统:win64,win32,linux64,linux32,mac64
   * @param libName åŠ¨æ€åº“åç§°
   * @return
   */
  public String compareLibName(String currentSystem, String libName) {
    String dynamicLibName = libName;
    List<String> libs = handler.getLibsBySystem(currentSystem);
    if (currentSystem.toLowerCase().contains("win")) {
      return findLibs(libs, libName);
    }
    if (libName.startsWith("lib")) {
      dynamicLibName = libName.substring(3);
    }
    return findLibs(libs, dynamicLibName);
  }
  private String findLibs(List<String> libs, String libName) {
    for (String lib : libs) {
      if (libName.equalsIgnoreCase(lib)) {
        return lib;
      }
    }
    return "";
  }
  public List<String> getLibsSystem(String system) {
    return handler.getLibsBySystem(system);
  }
  private DynamicParseUtil() throws ParserConfigurationException {
    // èŽ·å–SAX分析器的工厂实例,专门负责创建SAXParser分析器
    saxParserFactory = SAXParserFactory.newInstance();
    // èŽ·å–SAXParser分析器的实例
    try {
      saxParser = saxParserFactory.newSAXParser();
      handler = new DynamicLibParseHandler();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public DynamicParseUtil(InputStream inputSteam)
      throws ParserConfigurationException, IOException, SAXException {
    this();
    saxParser.parse(inputSteam, handler);
  }
  /** xml解析handler */
  private class DynamicLibParseHandler extends DefaultHandler {
    private HashMap<String, List<String>> dynamics = new HashMap<String, List<String>>();
    private List<String> systems =
        Arrays.asList("win64", "win32", "linux64", "linux32", "mac64", "linuxARM");
    private String currentDynamicSystem;
    private List<String> libs;
    public List<String> getLibsBySystem(String system) {
      return dynamics.get(system);
    }
    @Override
    public void startDocument() throws SAXException {
      super.startDocument();
    }
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes)
        throws SAXException {
      super.startElement(uri, localName, qName, attributes);
      if (systems.contains(qName)) {
        currentDynamicSystem = qName;
        if (libs == null) {
          libs = new ArrayList<String>();
        }
      }
    }
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
      super.endElement(uri, localName, qName);
      if (systems.contains(qName)) {
        // ä¿å­˜åˆ°hashmap中
        dynamics.put(currentDynamicSystem, libs);
        // æ¸…除libs
        libs = null;
      }
    }
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
      super.characters(ch, start, length);
      String lib = new String(ch, start, length);
      if (!lib.trim().isEmpty()) {
        libs.add(lib);
      }
    }
  }
}
src/main/java/com/ard/utils/sdk/LibraryLoad.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,194 @@
package com.ard.utils.sdk;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
/**
 * @author 47081
 * @version 1.0
 * @description åŠ¨æ€åº“åŠ è½½
 * @date 2020/11/14
 */
@Slf4j(topic = "hikSdk")
public class LibraryLoad {
  private static final String ARCH_WINDOWS = "win";
  private static final String ARCH_LINUX = "linux";
  private static final String ARCH_MAC = "mac";
  private static final int PREFIX_64 = 64;
  private static final int PREFIX_32 = 32;
  private static final String PREFIX_ARM = "ARM";
  private static final String EXTERNAL_WIN = ".dll";
  private static final String EXTERNAL_LINUX = ".so";
  private static final String EXTERNAL_MAC = ".dylib";
  private static DynamicParseUtil dynamicParseUtil;
  /** å½“前读取的目录 */
  private static String currentFold;
  /** åŠ¨æ€åº“éœ€è¦å†™å…¥çš„ç›®å½• */
  private static String EXTRACT_PATH = System.getProperty("java.io.tmpdir");
  private static boolean written = false;
  /**
   * è®¾ç½®åŠ¨æ€åº“å†™å…¥çš„è·¯å¾„,适用于需要自定义加载路径的用户
   *
   * @param path åŠ¨æ€åº“å†™å…¥çš„æ–‡ä»¶å¤¹,从该文件夹下加载sdk的动态库
   */
  public static void setExtractPath(String path) {
    EXTRACT_PATH = path;
  }
  public static String  getExtractPath() {
    return EXTRACT_PATH;
      }
  /** åŠ¨æ€åº“è·¯å¾„ */
  private static String INNER_PATH;
  // private static final String EXTERNAL_MAC = ".so";
  private static String extractNetSDKLib(String libName) {
    return extractLibrary(libName);
  }
  public static String getLoadLibrary(String libraryName) {
    currentFold = getLibraryFold();
    if (dynamicParseUtil == null) {
      try {
        dynamicParseUtil =
            new DynamicParseUtil(
                LibraryLoad.class.getClassLoader().getResourceAsStream("dynamic-lib-load.xml"));
        if (!written) {
          for (String libName : dynamicParseUtil.getLibsSystem(currentFold)) {
            extractLibrary(libName);
          }
          written = true;
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    String fullName = getLibraryName(libraryName);
    String path = EXTRACT_PATH;
    if (!(EXTRACT_PATH.endsWith("/") || EXTRACT_PATH.endsWith("\\"))) {
      path = EXTRACT_PATH + "/";
    }
    log.debug("load library: " + path + fullName);
    return path + fullName;
  }
  /**
   * å°†jar包里的动态库写入到系统缓存目录,使用绝对路径加载动态库
   *
   * @param libName
   * @return
   */
  private static String extractLibrary(String libName) {
    return extractLibrary("/lib", libName);
  }
    /**
     * ç›¸å¯¹è·¯å¾„文件夹
     *
     * @param relativePath ç›¸å¯¹è·¯å¾„
     * @param libName      åŠ¨æ€åº“è·¯å¾„
     * @return
     */
    private static String extractLibrary(String relativePath, String libName) {
        if (libName.trim().equals("")) {
            return "";
        }
        String libFullName = getLibraryName(libName);
        String dir = getLibraryFold();
        if (!(relativePath.endsWith("/") || relativePath.endsWith("\\"))) {
            relativePath = relativePath + "/";
        }
        String fileName = relativePath + dir + "/" + libFullName;
        InputStream in = LibraryLoad.class.getResourceAsStream(fileName);
        BufferedInputStream reader;
        FileOutputStream writer;
        File extractedLibFile = null;
        try {
            if (in == null) {
                in = new FileInputStream(fileName);
            }
            String nativeTempDir = EXTRACT_PATH;
            if (!(nativeTempDir.endsWith("/") || nativeTempDir.endsWith("\\"))) {
                nativeTempDir = nativeTempDir + "/";
            }
            extractedLibFile = new File(nativeTempDir + libFullName);
            reader = new BufferedInputStream(in);
            // æ£€æŸ¥æ–‡ä»¶å¤¹æ˜¯å¦å­˜åœ¨ï¼Œå¦‚果不存在则创建
            File parentDir = extractedLibFile.getParentFile();
            if (!parentDir.exists()) {
                parentDir.mkdirs();
            }
            writer = new FileOutputStream(extractedLibFile);
            byte[] buffer = new byte[1024];
            while (true) {
                int len = reader.read(buffer);
                if (len == 0 || len == -1) break;
                writer.write(buffer, 0, len);
            }
            reader.close();
            writer.close();
            in.close();
        } catch (Exception e) {
           log.error("dynamic file[ " + fileName + " ] not found in project.please ensure you need this library.");
        }
        return extractedLibFile != null ? extractedLibFile.getAbsolutePath() : "";
    }
  /**
   * èŽ·å–åŠ¨æ€åº“å®Œæ•´åç§°
   *
   * @param libName
   * @return
   */
  private static String getLibraryName(String libName) {
    String dir = currentFold;
    String libPrefix = "";
    String libExtension = EXTERNAL_WIN;
    if (!dir.contains("win")) {
      libPrefix = "lib";
      if (dir.contains("linux")) {
        libExtension = EXTERNAL_LINUX;
      } else {
        // libExtension=".dylib";
        libExtension = EXTERNAL_MAC;
      }
    }
    libName = dynamicParseUtil.compareLibName(currentFold, libName);
    // åŠ¨æ€åº“ä»¥lib开头,则不添加lib前缀
    // ä»¥lib开头的库则不添加lib前缀
    return (libName.startsWith("lib") ? "" : libPrefix) + libName + libExtension;
  }
  // èŽ·å–ç³»ç»Ÿå¯¹åº”çš„åŠ¨æ€åº“æ–‡ä»¶å¤¹
  private static String getLibraryFold() {
    String osType;
    String osName = System.getProperty("os.name");
    if (osName.toLowerCase().startsWith("linux")) {
      osType = ARCH_LINUX;
    } else if (osName.toLowerCase().startsWith("mac")
        || osName.toLowerCase().startsWith("darwin")) {
      osType = ARCH_MAC;
    } else if (osName.toLowerCase().startsWith("windows")) {
      osType = ARCH_WINDOWS;
    } else {
      osType = "";
    }
    String arch = System.getProperty("os.arch");
    arch = arch.toLowerCase().trim();
    if ("i386".equals(arch) || "i686".equals(arch)||"x86".equals(arch)) {
      arch = PREFIX_32 + "";
    } else if ("x86_64".equals(arch) || "amd64".equals(arch)) {
      arch = PREFIX_64 + "";
    } else if (arch.startsWith("arm")) {
      arch = PREFIX_ARM + "";
    }
    return osType + arch;
  }
}
src/main/resources/application-dev.yml
@@ -39,7 +39,7 @@
  # mqtt配置
  mqtt:
    host: tcp://192.168.2.15:1883
    clientId: client-227
    clientId: client-2272
    username: admin
    password: admin
    timeout: 100
@@ -64,11 +64,11 @@
# æ—¥å¿—等级配置
logging:
  level:
    hikSdk: info
    hikSdk: debug
    mqtt: info
    netty: info
    external: info
    camera: info
    camera: debug
    tube: info
    digitization3: info
    stealAlarm: info
src/main/resources/dynamic-lib-load.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" ?>
<dynamic-lib>
    <win64>
        <lib>sdk\HCNetSDK</lib>
        <lib>sdk\HCCore</lib>
        <lib>sdk\GdiPlus</lib>
        <lib>sdk\hlog</lib>
        <lib>sdk\HmMerge</lib>
        <lib>sdk\/hpr</lib>
        <lib>sdk\HXVA</lib>
        <lib>sdk\libcrypto-1_1-x64</lib>
        <lib>sdk\libmmd</lib>
        <lib>sdk\libssl-1_1-x64</lib>
        <lib>sdk\MP_Render</lib>
        <lib>sdk\NPQos</lib>
        <lib>sdk\OpenAL32</lib>
        <lib>sdk\PlayCtrl</lib>
        <lib>sdk\SuperRender</lib>
        <lib>sdk\YUVProcess</lib>
        <lib>sdk\zlib1</lib>
        <lib>sdk\HCNetSDKCom\AnalyzeData</lib>
        <lib>sdk\HCNetSDKCom\AudioIntercom</lib>
        <lib>sdk\HCNetSDKCom\AudioRender</lib>
        <lib>sdk\HCNetSDKCom\HCAlarm</lib>
        <lib>sdk\HCNetSDKCom\HCCoreDevCfg</lib>
        <lib>sdk\HCNetSDKCom\HCDisplay</lib>
        <lib>sdk\HCNetSDKCom\HCGeneralCfgMgr</lib>
        <lib>sdk\HCNetSDKCom\HCGeneralCfgMgr</lib>
        <lib>sdk\HCNetSDKCom\HCIndustry</lib>
        <lib>sdk\HCNetSDKCom\HCPlayBack</lib>
        <lib>sdk\HCNetSDKCom\HCPreview</lib>
        <lib>sdk\HCNetSDKCom\HCVoiceTalk</lib>
        <lib>sdk\HCNetSDKCom\libiconv2</lib>
        <lib>sdk\HCNetSDKCom\OpenAL32</lib>
        <lib>sdk\HCNetSDKCom\StreamTransClient</lib>
        <lib>sdk\HCNetSDKCom\SystemTransform</lib>
    </win64>
</dynamic-lib>
src/main/resources/lib/win64/sdk/AudioRender.dll
Binary files differ
src/main/resources/lib/win64/sdk/GdiPlus.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCCore.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDK.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/AnalyzeData.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/AudioIntercom.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/AudioRender.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCAlarm.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCAlarm.lib
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCCoreDevCfg.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCDisplay.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCGeneralCfgMgr.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCGeneralCfgMgr.lib
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCIndustry.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCPlayBack.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCPreview.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCPreview.lib
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCVoiceTalk.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/OpenAL32.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/StreamTransClient.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/SystemTransform.dll
Binary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/libiconv2.dll
Binary files differ
src/main/resources/lib/win64/sdk/HXVA.dll
Binary files differ
src/main/resources/lib/win64/sdk/HmMerge.dll
Binary files differ
src/main/resources/lib/win64/sdk/ImageAlg.dll
Binary files differ
src/main/resources/lib/win64/sdk/Infra.dll
Binary files differ
src/main/resources/lib/win64/sdk/IvsDrawer.dll
Binary files differ
src/main/resources/lib/win64/sdk/MP_Render.dll
Binary files differ
src/main/resources/lib/win64/sdk/NPQos.dll
Binary files differ
src/main/resources/lib/win64/sdk/OpenAL32.dll
copy from lib/HCNetSDKCom/OpenAL32.dll copy to src/main/resources/lib/win64/sdk/OpenAL32.dll Binary files differ
src/main/resources/lib/win64/sdk/PlayCtrl.dll
Binary files differ
src/main/resources/lib/win64/sdk/RenderEngine.dll
Binary files differ
src/main/resources/lib/win64/sdk/StreamConvertor.dll
Binary files differ
src/main/resources/lib/win64/sdk/SuperRender.dll
Binary files differ
src/main/resources/lib/win64/sdk/YUVProcess.dll
Binary files differ
src/main/resources/lib/win64/sdk/avnetsdk.dll
Binary files differ
src/main/resources/lib/win64/sdk/dhconfigsdk.dll
Binary files differ
src/main/resources/lib/win64/sdk/dhnetsdk.dll
Binary files differ
src/main/resources/lib/win64/sdk/dhplay.dll
Binary files differ
src/main/resources/lib/win64/sdk/hlog.dll
Binary files differ
src/main/resources/lib/win64/sdk/hpr.dll
Binary files differ
src/main/resources/lib/win64/sdk/libcrypto-1_1-x64.dll
Binary files differ
src/main/resources/lib/win64/sdk/libmmd.dll
Binary files differ
src/main/resources/lib/win64/sdk/libssl-1_1-x64.dll
Binary files differ
src/main/resources/lib/win64/sdk/zlib1.dll
Binary files differ