From 3591fc47eaa3e301252dc06d257d46bd3a45e120 Mon Sep 17 00:00:00 2001 From: liusuyi <13324259@qq.com> Date: 星期一, 23 十月 2023 22:10:19 +0800 Subject: [PATCH] 相机sdk异步登录 --- ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java | 148 ++++++++++++++++++++++++++++++++++-------------- 1 files changed, 104 insertions(+), 44 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java index 46e6fc7..767f9f3 100644 --- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java +++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java @@ -1,44 +1,104 @@ -package com.ruoyi.device.dhsdk.module; - -import com.ruoyi.device.dhsdk.lib.NetSDKLib; -import com.ruoyi.device.dhsdk.lib.ToolKits; -/** - * 瀹炴椂棰勮鎺ュ彛瀹炵幇 - * 涓昏鏈� 锛氬紑濮嬫媺娴併�佸仠姝㈡媺娴佸姛鑳� - */ -public class RealPlayModule { - /** - * \if ENGLISH_LANG - * Start RealPlay - * \else - * 寮�濮嬮瑙� - * \endif - */ - public static NetSDKLib.LLong startRealPlay(NetSDKLib.LLong m_hLoginHandle, int channel, int stream) { - NetSDKLib.LLong m_hPlayHandle = LoginModule.netsdk.CLIENT_RealPlayEx(m_hLoginHandle, channel, null, stream); - if (m_hPlayHandle.longValue() == 0) { - System.err.println("寮�濮嬪疄鏃堕瑙堝け璐ワ紝閿欒鐮�" + ToolKits.getErrorCodePrint()); - } else { - System.out.println("Success to start realplay"); - } - return m_hPlayHandle; - } - - /** - * \if ENGLISH_LANG - * Start RealPlay - * \else - * 鍋滄棰勮 - * \endif - */ - public static void stopRealPlay(NetSDKLib.LLong m_hPlayHandle) { - if (m_hPlayHandle.longValue() == 0) { - return; - } - - boolean bRet = LoginModule.netsdk.CLIENT_StopRealPlayEx(m_hPlayHandle); - if (bRet) { - m_hPlayHandle.setValue(0); - } - } -} +package com.ruoyi.device.dhsdk.module; + +import com.ruoyi.device.dhsdk.lib.NetSDKLib; +import com.ruoyi.device.dhsdk.lib.ToolKits; +import com.sun.jna.Pointer; +import lombok.extern.slf4j.Slf4j; + +import static com.ruoyi.device.dhsdk.module.LoginModule.netsdk; + +/** + * 瀹炴椂棰勮鎺ュ彛瀹炵幇 + * 涓昏鏈� 锛氬紑濮嬫媺娴併�佸仠姝㈡媺娴佸姛鑳� + */ +@Slf4j(topic = "dhSdk") +public class RealPlayModule { + /** + * \if ENGLISH_LANG + * Start RealPlay + * \else + * 寮�濮嬮瑙� + * \endif + */ + + public static NetSDKLib.LLong startRealPlay(NetSDKLib.LLong m_hLoginHandle, int channel, String path) { + NetSDKLib.NET_IN_REALPLAY_BY_DATA_TYPE net_in_realplay_by_data_type = new NetSDKLib.NET_IN_REALPLAY_BY_DATA_TYPE(); + net_in_realplay_by_data_type.nChannelID = channel; + net_in_realplay_by_data_type.hWnd = null; + net_in_realplay_by_data_type.rType = 0; + net_in_realplay_by_data_type.emDataType = NetSDKLib.EM_REAL_DATA_TYPE.EM_REAL_DATA_TYPE_MP4; + net_in_realplay_by_data_type.szSaveFileName = path; + NetSDKLib.NET_OUT_REALPLAY_BY_DATA_TYPE net_out_realplay_by_data_type = new NetSDKLib.NET_OUT_REALPLAY_BY_DATA_TYPE(); + NetSDKLib.LLong m_hPlayHandle = netsdk.CLIENT_RealPlayByDataType(m_hLoginHandle, net_in_realplay_by_data_type, net_out_realplay_by_data_type, 5000); + if (m_hPlayHandle.longValue() == 0) { + log.error("寮�濮嬪疄鏃堕瑙堝け璐ワ紝閿欒鐮�" + ToolKits.getErrorCodePrint()); + } else { + log.debug("Success to start realplay"); + } + return m_hPlayHandle; + } + + /** + * \if ENGLISH_LANG + * Stop RealPlay + * \else + * 鍋滄棰勮 + * \endif + */ + public static void stopRealPlay(NetSDKLib.LLong m_hPlayHandle) { + if (m_hPlayHandle.longValue() == 0) { + return; + } + boolean bRet = netsdk.CLIENT_StopRealPlayEx(m_hPlayHandle); + if (bRet) { + m_hPlayHandle.setValue(0); + } + } + + /** + * 瀹炴椂棰勮鏁版嵁鍥炶皟鍑芥暟--鎵╁睍(pBuffer鍐呭瓨鐢盨DK鍐呴儴鐢宠閲婃斁) + */ + private static class CbfRealDataCallBackEx implements NetSDKLib.fRealDataCallBackEx { + private CbfRealDataCallBackEx() { + } + + private static class CallBackHolder { + private static CbfRealDataCallBackEx instance = new CbfRealDataCallBackEx(); + } + + public static CbfRealDataCallBackEx getInstance() { + return CallBackHolder.instance; + } + + @Override + public void invoke(NetSDKLib.LLong lRealHandle, int dwDataType, Pointer pBuffer, + int dwBufSize, int param, Pointer dwUser) { + int bInput = 0; + if (0 != lRealHandle.longValue()) { + switch (dwDataType) { + case 0: + log.debug("鐮佹祦澶у皬涓�" + dwBufSize + "\n" + "鐮佹祦绫诲瀷涓哄師濮嬮煶瑙嗛娣峰悎鏁版嵁"); + break; + case 1: + //鏍囧噯瑙嗛鏁版嵁 + log.debug("鐮佹祦澶у皬涓�" + dwBufSize + "\n" + "鐮佹祦绫诲瀷涓烘爣鍑嗚棰戞暟鎹�"); + break; + case 2: + //yuv 鏁版嵁 + log.debug("鐮佹祦澶у皬涓�" + dwBufSize + "\n" + "鐮佹祦绫诲瀷涓簓uv鏁版嵁"); + break; + case 3: + //pcm 闊抽鏁版嵁 + log.debug("鐮佹祦澶у皬涓�" + dwBufSize + "\n" + "鐮佹祦绫诲瀷涓洪煶棰戞暟鎹�"); + break; + case 4: + //鍘熷闊抽鏁版嵁 + log.debug("鐮佹祦澶у皬涓�" + dwBufSize + "\n" + "鐮佹祦绫诲瀷涓哄師濮嬮煶棰戞暟鎹�"); + break; + default: + break; + } + } + } + } +} \ No newline at end of file -- Gitblit v1.9.3