From 49207386ea4a3d663628347eef443af9c7cc7f39 Mon Sep 17 00:00:00 2001 From: aijinhui <aijinhui> Date: 星期二, 17 十月 2023 17:20:46 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 113 insertions(+), 0 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 new file mode 100644 index 0000000..a397132 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/RealPlayModule.java @@ -0,0 +1,113 @@ +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 static com.ruoyi.device.dhsdk.module.LoginModule.netsdk; + +/** + * 瀹炴椂棰勮鎺ュ彛瀹炵幇 + * 涓昏鏈� 锛氬紑濮嬫媺娴併�佸仠姝㈡媺娴佸姛鑳� + */ +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 = 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"); + // netsdk.CLIENT_SetRealDataCallBackEx(m_hPlayHandle, CbfRealDataCallBackEx.getInstance(),null, 0x0000001f); + } + return m_hPlayHandle; + } + + public static NetSDKLib.LLong startRealPlay1(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; + //net_in_realplay_by_data_type.cbRealData = CbfRealDataCallBackEx.getInstance(); + 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) { + 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 = 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: + System.out.println("鐮佹祦澶у皬涓�" + dwBufSize + "\n" + "鐮佹祦绫诲瀷涓哄師濮嬮煶瑙嗛娣峰悎鏁版嵁"); + break; + case 1: + //鏍囧噯瑙嗛鏁版嵁 + System.out.println("鐮佹祦澶у皬涓�" + dwBufSize + "\n" + "鐮佹祦绫诲瀷涓烘爣鍑嗚棰戞暟鎹�"); + break; + case 2: + //yuv 鏁版嵁 + System.out.println("鐮佹祦澶у皬涓�" + dwBufSize + "\n" + "鐮佹祦绫诲瀷涓簓uv鏁版嵁"); + break; + case 3: + //pcm 闊抽鏁版嵁 + System.out.println("鐮佹祦澶у皬涓�" + dwBufSize + "\n" + "鐮佹祦绫诲瀷涓洪煶棰戞暟鎹�"); + break; + case 4: + //鍘熷闊抽鏁版嵁 + System.out.println("鐮佹祦澶у皬涓�" + dwBufSize + "\n" + "鐮佹祦绫诲瀷涓哄師濮嬮煶棰戞暟鎹�"); + break; + default: + break; + } + } + } + } +} -- Gitblit v1.9.3