package com.boying.Util;
|
|
import com.sun.jna.Platform;
|
import lombok.extern.slf4j.Slf4j;
|
import java.io.File;
|
|
@Slf4j
|
public class OSUtils {
|
// 获取操作平台信息
|
public static String getOsPrefix() {
|
String arch = System.getProperty("os.arch").toLowerCase();
|
final String name = System.getProperty("os.name");
|
String osPrefix;
|
if (Platform.isWindows()) {
|
if ("i386".equals(arch)) {
|
arch = "x86";
|
}
|
osPrefix = "win32-" + arch;
|
} else if (Platform.isLinux()) {
|
if ("x86".equals(arch)) {
|
arch = "i386";
|
} else if ("x86_64".equals(arch)) {
|
arch = "amd64";
|
}
|
osPrefix = "linux-" + arch;
|
} else {
|
osPrefix = name.toLowerCase();
|
if ("x86".equals(arch)) {
|
arch = "i386";
|
}
|
if ("x86_64".equals(arch)) {
|
arch = "amd64";
|
}
|
int space = osPrefix.indexOf(" ");
|
if (space != -1) {
|
osPrefix = osPrefix.substring(0, space);
|
}
|
osPrefix += "-" + arch;
|
}
|
return osPrefix;
|
}
|
public static String getOsName() {
|
String osName = "";
|
String osPrefix = getOsPrefix();
|
if (osPrefix.toLowerCase().startsWith("win32-x86")
|
|| osPrefix.toLowerCase().startsWith("win32-amd64")) {
|
osName = "win";
|
} else if (osPrefix.toLowerCase().startsWith("linux-i386")
|
|| osPrefix.toLowerCase().startsWith("linux-amd64")) {
|
osName = "linux";
|
}
|
return osName;
|
}
|
/**
|
* 获取库文件
|
* 区分win、linux
|
*
|
* @return
|
*/
|
public static String getLoadLibrary() {
|
if (isChecking()) {
|
return null;
|
}
|
String userDir = System.getProperty("user.dir");
|
log.info("getLoadLibrary-userDir={}", userDir);
|
String loadLibrary = "";
|
String library = "";
|
String osPrefix = getOsPrefix();
|
if (osPrefix.toLowerCase().startsWith("win32-x86")) {
|
loadLibrary = System.getProperty("user.dir") + File.separator + "sdk" + File.separator + "hklibwin32" + File.separator;
|
library = "HCNetSDK.dll";
|
} else if (osPrefix.toLowerCase().startsWith("win32-amd64")) {
|
loadLibrary = System.getProperty("user.dir") + File.separator + "sdk" + File.separator + "hklibwin64" + File.separator;
|
library = "HCNetSDK.dll";
|
} else if (osPrefix.toLowerCase().startsWith("linux-i386")) {
|
//同 linux-amd64
|
loadLibrary = "";
|
library = "libhcnetsdk.so";
|
} else if (osPrefix.toLowerCase().startsWith("linux-amd64")) {
|
//方式一:使用系统默认的加载库路径,在系统的/usr/lib文件中加入你Java工程所需要使用的so文件,然后将HCNetSDKCom文件夹下的组件库也复制到/usr/lib目录,HCNetSDKCom文件夹中的组件库不要随意更换路径。CentOS 64位需拷贝到/usr/lib64下。
|
//针对方式一,前缀就是绝对路径
|
//loadLibrary = "/usr/lib64/lib/hkliblinux64/";
|
//方式二:配置LD_LIBRARY_PATH环境变量加载库文件;配置/etc/ld.so.conf,加上你自己的Java工程所需要的so文件的路径
|
//针对方式二,无需添加前缀,程序会从linux系统的so共享库中查找libhcnetsdk.so
|
loadLibrary = "";
|
library = "libhcnetsdk.so";
|
}
|
log.info("================= Load library Path :{} ==================", loadLibrary + library);
|
return loadLibrary + library;
|
}
|
|
/**
|
* 获取播放库文件
|
* 区分win、linux
|
*
|
* @return
|
*/
|
public static String getLoadPlayLibrary() {
|
if (isChecking()) {
|
return null;
|
}
|
String userDir = System.getProperty("user.dir");
|
log.info("getPlayLibrary-userDir={}", userDir);
|
String loadLibrary = "";
|
String library = "";
|
String osPrefix = getOsPrefix();
|
if (osPrefix.toLowerCase().startsWith("win32-x86")) {
|
loadLibrary = System.getProperty("user.dir") + File.separator + "sdk" + File.separator + "hklibwin32" + File.separator;
|
library = "PlayCtrl.dll";
|
} else if (osPrefix.toLowerCase().startsWith("win32-amd64")) {
|
loadLibrary = System.getProperty("user.dir") + File.separator + "sdk" + File.separator + "hklibwin64" + File.separator;
|
library = "PlayCtrl.dll";
|
} else if (osPrefix.toLowerCase().startsWith("linux-i386")) {
|
//同 linux-amd64
|
loadLibrary = "";
|
library = "libPlayCtrl.so";
|
} else if (osPrefix.toLowerCase().startsWith("linux-amd64")) {
|
//方式一:使用系统默认的加载库路径,在系统的/usr/lib文件中加入你Java工程所需要使用的so文件,然后将HCNetSDKCom文件夹下的组件库也复制到/usr/lib目录,HCNetSDKCom文件夹中的组件库不要随意更换路径。CentOS 64位需拷贝到/usr/lib64下。
|
//针对方式一,前缀就是绝对路径
|
//loadLibrary = "/usr/lib64/lib/hkliblinux64/";
|
//方式二:配置LD_LIBRARY_PATH环境变量加载库文件;配置/etc/ld.so.conf,加上你自己的Java工程所需要的so文件的路径
|
//针对方式二,无需添加前缀,程序会从linux系统的so共享库中查找libhcnetsdk.so
|
loadLibrary = "";
|
library = "libPlayCtrl.so";
|
}
|
log.info("================= Load PlayLibrary Path :{} ==================", loadLibrary + library);
|
return loadLibrary + library;
|
}
|
private static boolean checking = false;
|
public static void setChecking() {
|
checking = true;
|
}
|
public static void clearChecking() {
|
checking = false;
|
}
|
public static boolean isChecking() {
|
return checking;
|
}
|
}
|
|
|