From 016aa105789fca71e86cdbb0d26a181812f200f9 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期三, 10 七月 2024 15:33:36 +0800 Subject: [PATCH] 优化:流媒体同步任务 --- ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/module/ConfigModule.java | 67 ++++++++++++++++++++++++++++++++- 1 files changed, 64 insertions(+), 3 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/module/ConfigModule.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/module/ConfigModule.java index c874eaa..631218d 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/module/ConfigModule.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/module/ConfigModule.java @@ -2,6 +2,8 @@ import com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib; import com.ruoyi.utils.sdk.dhsdk.lib.ToolKits; +import com.sun.jna.Memory; +import com.sun.jna.Pointer; import com.sun.jna.Structure; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; @@ -63,7 +65,7 @@ int nBufferLen = 2 * 1024 * 1024; byte[] strBuffer = new byte[nBufferLen]; - if (netsdk.CLIENT_GetNewDevConfig(hLoginHandle, strCmd, nChn, strBuffer, nBufferLen, error, 3000)) { + if (netsdk.CLIENT_GetNewDevConfig(hLoginHandle, strCmd, nChn, strBuffer, nBufferLen, error, 6000)) { cmdObject.write(); if (configsdk.CLIENT_ParseData(strCmd, strBuffer, cmdObject.getPointer(), cmdObject.size(), null)) { cmdObject.read(); @@ -79,7 +81,20 @@ return result; } - + public static String getChannelName(NetSDKLib.LLong hLoginHandle,Integer channel) { + String channelName = ""; + NetSDKLib.AV_CFG_ChannelName channelTitleName = new NetSDKLib.AV_CFG_ChannelName(); + if (ToolKits.GetDevConfig(hLoginHandle, channel, NetSDKLib.CFG_CMD_CHANNELTITLE, channelTitleName)) { + try { + channelName = new String(channelTitleName.szName, "GBK"); + } catch (Exception e) { + System.err.println("getChannelName Failed!"); + } + } else { + System.err.println("Get Channel Name Failed." + ToolKits.getErrorCodePrint()); + } + return channelName; + } public static boolean GetDevConfig(NetSDKLib.LLong hLoginHandle, int nChn, String strCmd, Structure cmdObject) { boolean result = true; IntByReference error = new IntByReference(0); @@ -90,12 +105,58 @@ if (bRet) { cmdObject.read(); } else { - log.error("Get ["+strCmd+"] Config Failed!Last Error = " + getErrorCodePrint()); + log.error("Get [" + strCmd + "] Config Failed!Last Error = " + getErrorCodePrint()); result = false; } return result; } + public static boolean queryCameraState(NetSDKLib.LLong hLoginHandle, Integer chanNum, Integer chanNo) { + boolean bRet = false; + try { + NetSDKLib.NET_CAMERA_STATE_INFO[] arrCameraStatus = new NetSDKLib.NET_CAMERA_STATE_INFO[chanNum]; + for (int i = 0; i < arrCameraStatus.length; i++) { + arrCameraStatus[i] = new NetSDKLib.NET_CAMERA_STATE_INFO(); + } + + // 鍏ュ弬 + NetSDKLib.NET_IN_GET_CAMERA_STATEINFO stIn = new NetSDKLib.NET_IN_GET_CAMERA_STATEINFO(); + stIn.bGetAllFlag = 0; // 鍏ㄩ儴 + stIn.nValidNum = chanNum; + stIn.nChannels[chanNo - 1] = chanNo - 1; + + // 鍑哄弬 + NetSDKLib.NET_OUT_GET_CAMERA_STATEINFO stOut = new NetSDKLib.NET_OUT_GET_CAMERA_STATEINFO(); + stOut.nMaxNum = chanNum; + stOut.pCameraStateInfo = new Memory(arrCameraStatus[0].size() * chanNum); + stOut.pCameraStateInfo.clear(arrCameraStatus[0].size() * chanNum); + ToolKits.SetStructArrToPointerData(arrCameraStatus, stOut.pCameraStateInfo); // 灏嗘暟缁勫唴瀛樻嫹璐濆埌Pointer + + stIn.write(); + stOut.write(); + + bRet = netsdk.CLIENT_QueryDevInfo(hLoginHandle, NetSDKLib.NET_QUERY_GET_CAMERA_STATE, + stIn.getPointer(), stOut.getPointer(), null, 3000); + if (bRet) { + stOut.read(); + ToolKits.GetPointerDataToStructArr(stOut.pCameraStateInfo, arrCameraStatus); // 灏哖ointer鎷疯礉鍒版暟缁勫唴瀛� + final String[] connectionState = {"鏈煡", "姝e湪杩炴帴", "宸茶繛鎺�", "鏈繛鎺�", "閫氶亾鏈厤缃�,鏃犱俊鎭�", "閫氶亾鏈夐厤缃�,浣嗚绂佺敤"}; + log.debug(connectionState[arrCameraStatus[chanNo - 1].emConnectionState]); + if (connectionState[arrCameraStatus[chanNo - 1].emConnectionState].equals("宸茶繛鎺�")) { + log.debug("閫氶亾" + arrCameraStatus[chanNo - 1].nChannel + connectionState[arrCameraStatus[chanNo - 1].emConnectionState]); + bRet = true; + } else { + bRet = false; + } + } else { + log.error("Query Camera State Failed!" + getErrorCodePrint()); + } + } catch (Exception ex) { + log.error("Query Camera State Failed!" + ex.getMessage()); + } + return bRet; + } + // 鑾峰彇閰嶇疆 public static boolean GetConfig(NetSDKLib.LLong hLoginHandle, int nChn, int type, Structure cmdObject) { boolean result = false; -- Gitblit v1.9.3