diff --git a/pom.xml b/pom.xml index e8b390f..c6d7809 100644 --- a/pom.xml +++ b/pom.xml @@ -240,5 +240,6 @@ javax.persistence-api 2.2 + \ No newline at end of file diff --git a/storeroom/pom.xml b/storeroom/pom.xml index d986a5a..7024d37 100644 --- a/storeroom/pom.xml +++ b/storeroom/pom.xml @@ -46,6 +46,72 @@ logging 1.0 + + + + + + + + + + + + + com.AbsoluteLayout + AbsoluteLayout + 1.0 + system + ${pom.basedir}/src/main/resources/lib/AbsoluteLayout.jar + + + com.jna + jna + 1.0 + system + ${pom.basedir}/src/main/resources/lib/jna.jar + + + + + + + + + + com.rt + rt + 1.0 + system + ${pom.basedir}/src/main/resources/lib/rt.jar + + + com.swing-layout-1.0.3 + swing-layout-1.0.3 + 1.0.3 + system + ${pom.basedir}/src/main/resources/lib/swing-layout-1.0.3.jar + + + net.java.dev.jna + jna + 5.12.1 + + + + + ${project.basedir}/lib + BOOT-INF/lib/ + + **/*.jar + + + + src/main/resources + BOOT-INF/classes/ + + + + - \ No newline at end of file diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NVSSDK.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NVSSDK.java new file mode 100644 index 0000000..3658a20 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NVSSDK.java @@ -0,0 +1,600 @@ +package com.storeroom.modules.storeroom3d.config.common; + +import com.sun.jna.Callback; +import com.sun.jna.Library; +import com.sun.jna.Pointer; +import com.sun.jna.Structure; +import com.sun.jna.ptr.IntByReference; +import com.sun.jna.win32.StdCallLibrary; + +import java.util.List; + +public interface NVSSDK extends Library { + public static final int WM_USER = 0x0400; // + + public static final int WM_MAIN_MESSAGE = WM_USER + 1001; // 系统消息 + public static final int WM_PARACHG = WM_USER + 1002; // 参数改变消息 + public static final int WM_ALARM = WM_USER + 1003; // 报警消息 + public static final int WCM_ERR_ORDER = 2; + public static final int WCM_ERR_DATANET = 3; + public static final int WCM_LOGON_NOTIFY = 7; + public static final int WCM_VIDEO_HEAD = 8; + public static final int WCM_VIDEO_DISCONNECT = 9; + public static final int WCM_RECORD_ERR = 13; + public static final int WCM_QUERYFILE_FINISHED = 18; + public static final int WCM_DWONLOAD_FINISHED = 19; + public static final int WCM_DWONLOAD_FAULT = 20; + public static final int WCM_DOWNLOAD_INTERRUPT = 29; + + public static final int LOGON_SUCCESS = 0; + public static final int LOGON_ING = 1; + public static final int LOGON_RETRY = 2; + public static final int LOGON_DSMING = 3; + public static final int LOGON_FAILED = 4; + public static final int LOGON_TIMEOUT = 5; + public static final int NOT_LOGON = 6; + public static final int LOGON_DSMFAILED = 7; + public static final int LOGON_DSMTIMEOUT = 8; + public static final int PLAYER_PLAYING = 0x02; + public static final int USER_ERROR = 0x10000000; + + public static final int MOVE_UP = 1; + public static final int MOVE_UP_STOP = 2; + public static final int MOVE_DOWN = 3; + public static final int MOVE_DOWN_STOP = 4; + public static final int MOVE_LEFT = 5; + public static final int MOVE_LEFT_STOP = 6; + public static final int MOVE_RIGHT = 7; + public static final int MOVE_RIGHT_STOP = 8; + public static final int MOVE_UP_LEFT = 9; + public static final int MOVE_UP_LEFT_STOP = 10; + public static final int MOVE_UP_RIGHT = 11; + public static final int MOVE_UP_RIGHT_STOP = 12; + public static final int MOVE_DOWN_LEFT = 13; + public static final int MOVE_DOWN_LEFT_STOP = 14; + public static final int MOVE_DOWN_RIGHT = 15; + public static final int MOVE_DOWN_RIGHT_STOP = 16; + + public static final int HOR_AUTO = 21; + public static final int HOR_AUTO_STOP = 22; + + public static final int ZOOM_BIG = 31; + public static final int ZOOM_BIG_STOP = 32; + public static final int ZOOM_SMALL = 33; + public static final int ZOOM_SMALL_STOP = 34; + public static final int FOCUS_FAR = 35; + public static final int FOCUS_FAR_STOP = 36; + public static final int FOCUS_NEAR = 37; + public static final int FOCUS_NEAR_STOP = 38; + public static final int IRIS_OPEN = 39; + public static final int IRIS_OPEN_STOP = 40; + public static final int IRIS_CLOSE = 41; + public static final int IRIS_CLOSE_STOP = 42; + public static final int LIGHT_ON = 43; + public static final int LIGHT_OFF = 44; + public static final int POWER_ON = 45; + public static final int POWER_OFF = 46; + public static final int RAIN_ON = 47; + public static final int RAIN_OFF = 48; + + public static final int MOVE = 60; + public static final int MOVE_STOP = 61; + public static final int CALL_VIEW = 62; + public static final int SET_VIEW = 63; + + public static final int ALARM_VDO_MOTION = 0; + public static final int ALARM_VDO_REC = 1; + public static final int ALARM_VDO_LOST = 2; + public static final int ALARM_VDO_INPORT = 3; + public static final int ALARM_VDO_OUTPORT = 4; + public static final int ALARM_VDO_COVER = 5; + public static final int ALARM_VCA_INFO = 6; // 智能分析报警信息 + + public static final int T_AUDIO8 = 0; + public static final int T_YUV420 = 1; + public static final int T_YUV422 = 2; + + public static final int NET_PICSTREAM_CMD_VCA = 1; //Callback VCA image stream information + public static final int NET_PICSTREAM_CMD_ITS = 2; //Callback ITS image stream information + public static final int NET_PICSTREAM_CMD_FACE = 3; //Callback face image stream information + public static final int NET_PICSTREAM_CMD_NORMALSNAP = 4; //Callback normal snap image stream information + + //Front end video query + public static final int CMD_NETFILE_QUERY_FILE = 0; + public static final int CMD_NETFILE_ITS_QUERY_DATA = 1; + public static final int CMD_NETFILE_ITS_GETTOTALCOUNT = 2; + public static final int CMD_NETFILE_ITS_GETCURRENTCOUNT = 3; + public static final int CMD_NETFILE_ITS_GETRESULT = 4; + public static final int CMD_NETFILE_ITS_QUERY_TOTALCOUNT = 5; + public static final int CMD_NETFILE_MULTI_CHANNEL_QUERY_FILE = 6; + public static final int CMD_NETFILE_QUERY_VCA = 7; + + public static final int DOWNLOAD_FLAG_FIRST_REQUEST = 0; + public static final int DOWNLOAD_FLAG_OPERATE_RECORD = 1; + public static final int DOWNLOAD_FLAG_BREAK_CONTINUE = 2; + + public static final int DOWNLOAD_CMD_FILE = 0; + public static final int DOWNLOAD_CMD_TIMESPAN = 1; + public static final int DOWNLOAD_CMD_CONTROL = 2; + public static final int DOWNLOAD_CMD_FILE_CONTINUE = 3; + public static final int DOWNLOAD_CMD_GET_FILE_COUNT = 4; + public static final int DOWNLOAD_CMD_GET_FILE_INFO = 5; + public static final int DOWNLOAD_CMD_SET_FILE_INFO = 6; + + //download file type + public static final int DOWNLOAD_FILE_TYPE_SDV = 0; + public static final int DOWNLOAD_FILE_TYPE_PS = 3; + public static final int DOWNLOAD_FILE_TYPE_TS = 6; + + public static final int VI_FRAME = 0; + public static final int VP_FRAME = 1; + public static final int AUDIO_FRAME = 5; + + public static final int RAW_VIDEO_H264 = 1; + public static final int RAW_VIDEO_MPEG4 = 2; + public static final int RAW_VIDEO_MJPEG = 41; + public static final int RAW_VIDEO_H265 = 23; + + public static final int RAW_AUDIO_G711_A = 0x01; + public static final int RAW_AUDIO_G711_U = 0x02; + public static final int RAW_AUDIO_ADPCM_A = 0x03; + public static final int RAW_AUDIO_AAC = 0x16; + + + + public static class RECT extends Structure implements Structure.ByValue { + public int left; + public int top; + public int right; + public int bottom; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class SDK_VERSION extends Structure { + public short m_ulMajorVersion; + public short m_ulMinorVersion; + public short m_ulBuilder; + public String m_cVerInfo; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class CLIENTINFO extends Structure { + public CLIENTINFO() { + allocateMemory(); + } + + @Override + protected List getFieldOrder() { + return null; + } + + public int m_iServerID; + public int m_iChannelNo; + public byte[] m_cNetFile = new byte[255]; + public byte[] m_cRemoteIP = new byte[16]; + public int m_iNetMode; + public int m_iTimeout; + public int m_iTTL; + public int m_iBufferCount; + public int m_iDelayNum; + public int m_iDelayTime; + public int m_iStreamNO; + public int m_iFlag; + public int m_iPosition; + public int m_iSpeed; + } + + + public static class ENCODERINFO extends Structure { + public byte[] m_cHostName = new byte[32]; + public byte[] m_cEncoder = new byte[16]; + public int m_iRecvMode; + public byte[] m_cProxy = new byte[16]; + public byte[] m_cFactoryID = new byte[32]; //ProductID + public int m_iPort;//NVS port + public int m_nvsType; //NVS type(NVS_T or NVS_S or DVR ...eg) + public int m_iChanNum; + public int m_iLogonState; + public int m_iServerType; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class PicTime extends Structure { + + public int uiYear; + public int uiMonth; + public int uiDay; + public int uiWeek; + public int uiHour; + public int uiMinute; + public int uiSecondsr; + public int uiMilliseconds; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class PicData extends Structure { + + public PicTime tPicTime; + public int iDataLen; + public Pointer pcPicData; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class VcaPicStream extends Structure { + + public int iStructLen; + public int iWidth; + public int iHeight; + public int iChannelID; + public int iEventType; + public int iRuleID; + public int iTargetID; + public int iTargetType; + public int iTargetSpeed; + public int iTargetDirection; + public RECT tTargetPosition; + public int iPresetNo; + public byte[] m_cRemoteIP = new byte[16]; + public int iPicCount; + public PicData[] tPicData = new PicData[3]; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class FaceAttribute extends Structure { + public int iType; + public int iValue; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class FacePicData extends Structure { + + public int iFaceId; + public int iDrop; + public int iFaceLevel; + public RECT tFaceRect; + public int iWidth; + public int iHeight; + public int iFaceAttrCount; //Number of face attributes + public int iFaceAttrStructSize; //The size of strcut FaceAttribute + public Pointer[] ptFaceAttr = new Pointer[256]; //Face attributes,supports up to 256 attribute types,the subscript is the face attribute type://0-age,1-gender,2-masks,3-beard,4-eye open,5-mouth,6-glasses,7-race,8-emotion,9-smile,10-value...... + public int iDataLen; + public Pointer pcPicData; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class FacePicStream extends Structure { + + public int iStructLen; + public int iSizeOfFull; //The size of strcut PicData + public Pointer tFullData; + public int iFaceCount; + public int iSizeOfFace; //The size of strcut FacePicData + public Pointer[] tPicData = new Pointer[32]; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class PICSTREAM_INFO extends Structure { + + public byte[] RecvBuffer = new byte[200*1024];//此处的400应不小于最大报警报文长度 + + @Override + protected List getFieldOrder() { + return null; + } + } + + + public static interface MAIN_NOTIFY extends Callback { + void MainNotify(int _iLogonID, int _iwParam, Pointer _ilParam, + Pointer _pUserData); + } + + public static interface ALARM_NOTIFY extends Callback { + void AlarmNotify(int _iLogonID, int _iChannel, + int _iAlarmState, int _iAlarmType, Pointer _pUserData); + } + + public static interface PARACHANGE_NOTIFY extends Callback { + void ParaChangeNotify(int _iLogonID, int _iChannel, int _iParaType, + Pointer _strPara, Pointer _pUserData); + } + + public static interface COMRECV_NOTIFY extends Callback { + void ComRecvNotify(int _iLogonID, Pointer _pData, int _iLen, + int _iComNo, Pointer _pUserData); + } + + public static interface PROXY_NOTIFY extends Callback { + void ProxyNotify(int _iLogonID, int _iCmdKey, Pointer _pData, + int _iLen, Pointer _pUserData); + } + + public static interface RECVDATA_NOTIFY extends StdCallLibrary.StdCallCallback { + void RecvDataNotify(int _ulID, Pointer _ucData, int _iLen, int _iFlag, + Pointer _lpUserData); + } + + public static interface NET_PICSTREAM_NOTIFY extends StdCallLibrary.StdCallCallback { + int PicDataNotify(int _ulID, int _lCommand, Pointer _tInfo, int _iLen, + Pointer _lpUserData); + } + + public static class NetPicPara extends Structure { + public int iStructLen; //Structure length + public int iChannelNo; + public NET_PICSTREAM_NOTIFY cbkPicStreamNotify; + public Pointer pvUser; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class PointerSize extends Structure { + public Pointer pPointer; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class NVS_FILE_TIME extends Structure implements Structure.ByValue { + public short iYear; // Year + public short iMonth; // Month + public short iDay; // Day + public short iHour; // Hour + public short iMinute; // Minute + public short iSecond; // Second + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class QueryFileChannel extends Structure{ + public int iChannelNo; + public int iStreamNo; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class ArrayQueryFileChannel extends Structure { + public QueryFileChannel[] tArry = new QueryFileChannel[2]; + + @Override + protected List getFieldOrder() { + return null; + } + } + + public static class NETFILE_QUERY_V5 extends Structure { + public int iBufSize; //Size of the structure + public int iQueryChannelNo; //query channel no, 0x7FFFFFFF means query all channel + public int iStreamNo; //stream no + public int iType; //Video type 33:ATM + public NVS_FILE_TIME tStartTime; //Start time + public NVS_FILE_TIME tStopTime; //End time + public int iPageSize; //Page size + public int iPageNo; //Page number + public int iFiletype; //File type 0:all,1:Video,2:picture + public int iDevType; //Device type 0:Video camera,1:Network video server,2:Web camera ,0xff: all + public byte[] cOtherQuery = new byte[65]; //Character overlay + public int iTriggerType; //Alarm type 3:Port alarm,4:Mobile alarm ,5:Video loss alarm ,0x7FFFFFFF:invalid + public int iTrigger; //Port(channel)number + public int iQueryType; //Query type 0: Basic query 1:ATM query 2:ITS query + public int iQueryCondition; //Query criteria 0:Domain query 1:According to the card number query ;2:Traffic query condition: + public byte[] cField = new byte[5 * 68]; //Query message + public int iQueryChannelCount; //if iQueryChannelCount = 0, query single channel with iQueryChannelNo + public int iBufferSize; //sizeof(QueryFileChannel) + public Pointer ptChannelList; //buffer len = sizeof(QueryFileChannel)*iQueryChannelCount + public byte[] cLaneNo = new byte[65]; //lane no + public byte[] cVehicleType = new byte[65]; //vehicle type + public int iFileAttr; //File attributes:0: nvr local storage; 10000: ipc storage + + @Override + protected List getFieldOrder() { + return null; + } + } + + //Record File Property + public static class NVS_FILE_DATA extends Structure { + public int iType; //Record type 1-Manual record, 2-Schedule record, 3-Alarm record + public int iChannel; //Record channel 0~channel defined channel number + public byte[] cFileName = new byte[250]; //File name + public NVS_FILE_TIME tStartTime; //File start time + public NVS_FILE_TIME tStopTime; //File end time + public int iFileSize; //File size + + @Override + protected List getFieldOrder() { + return null; + } + }; + + public static class NVS_FILE_DATA_EX extends Structure { + public int iSize; + public NVS_FILE_DATA tFileData; //file basic information + public int iLocked; //add unlock state + public int iFileAttr; //File attributes:0: nvr local storage; 10000: ipc storage + + @Override + protected List getFieldOrder() { + return null; + } + }; + + public static class DOWNLOAD_FILE extends Structure { + public int m_iSize; //Structure size + public byte[] m_cRemoteFilename = new byte[255]; //Fornt end video file name + public byte[] m_cLocalFilename = new byte[255]; //Local video file name + public int m_iPosition; //File location by percentage 0~100;When continue send after stop send,file pointer offset request + public int m_iSpeed; //1,2,4,8,Control file play speed, 0-Suspend + public int m_iIFrame; //Only send I frame 1,Only play I Frame;0, All play + public int m_iReqMode; //Require data mode 1,Frame mode;0,Stream mode + public int m_iRemoteFileLen; //If local file is not null,the parameter set to null + public int m_iVodTransEnable; //Enable + public int m_iVodTransVideoSize; //Video pixel + public int m_iVodTransFrameRate; //Frame rate + public int m_iVodTransStreamRate; //Code rate + public int m_iSaveFileType; //0:SDV 3:ps + public int m_iFileAttr; //File attributes:0: nvr local storage; 10000: ipc storage + public int m_iCryptType; //iCryptType = 0, no encryption; iCryptType = 1, is AES encryption + public byte[] m_cCryptKey = new byte[32]; + + @Override + protected List getFieldOrder() { + return null; + } + }; + + public static class DOWNLOAD_TIMESPAN extends Structure { + public int m_iSize; //Structure size + public byte[] m_cLocalFilename = new byte[255]; //Local video file name + public int m_iChannelNO; //Channel number + public NVS_FILE_TIME m_tTimeBegin; //Start time + public NVS_FILE_TIME m_tTimeEnd; //End time + public int m_iPosition; //Position according to time point,>100 + public int m_iSpeed; //1,2,4,8,Control file playback speed, 0-Suspend + public int m_iIFrame; //Only I frames 1,I only play; 0,Full play + public int m_iReqMode; //Required data model 1,Frame mode;0,Flow pattern + public int m_iVodTransEnable; //Enable + public int m_iVodTransVideoSize; //Video frequency ratio + public int m_iVodTransFrameRate; //Frame rate + public int m_iVodTransStreamRate; //Code Rate + public int m_iFileFlag; //0:Download multiple files 1:Download into a single file + public int m_iSaveFileType; //0:SDV 3:ps + public int m_iStreamNo; //stream number,0-main stream, 1-sub stream + public int m_iFileAttr; //File attributes:0: nvr local storage; 10000: ipc storage + public int m_iCryptType; //iCryptType = 0, no encryption; iCryptType = 1, is AES encryption + public byte[] m_cCryptKey = new byte[32]; + + @Override + protected List getFieldOrder() { + return null; + } + }; + + public static class DOWNLOAD_CONTROL extends Structure { + public int m_iSize; //Structure size + public int m_iPosition; //0~100,Location file playback ;-1,Does not carry on the localization + public int m_iSpeed; //1,2,4,8,Control file playback speed, 0-Suspend + public int m_iIFrame; //Only I frames 1,I only play;0,Full play + public int m_iReqMode; //Demand data model 1,Frame mode ;0,Flow pattern + + @Override + protected List getFieldOrder() { + return null; + } + }; + + public static class RAWFRAME_INFO extends Structure { + public int nWidth; //Video width, audio data is 0 + public int nHeight; //Video height, audio data is 0 + public int nStamp; //Time stamp(ms) + public int nType; //RAWFRAMETYPE, I Frame:0,P Frame:1,B Frame:2,Audio:5 + public int nEnCoder; //Audio or Video encoder(Video,0:H263,1:H264, 2:MP4. Audio:0,G711_A:0x01,G711_U:0x02,ADPCM_A:0x03,G726:0x04) + public int nFrameRate; //Frame rate + public int nAbsStamp; //Absolute Time(s) + public byte ucBitsPerSample; // bit per sample [8/16/24] default 16 + public int uiSamplesPerSec; // Samples Per Sec,default 8000 + + @Override + protected List getFieldOrder() { + return null; + } + }; + + //Not decode the standard data before the pure h264 data + public static interface RAWFRAME_NOTIFY extends StdCallLibrary.StdCallCallback { + void rawFrameNotify(int _uiID, Pointer _pcData, int _iLen, RAWFRAME_INFO _ptRawFrameInfo, Pointer _pvUsrData); + } + + int NetClient_GetVersion(SDK_VERSION _ver); + + int NetClient_SetNotifyFunction_V4(MAIN_NOTIFY _cbkMainNotify, + ALARM_NOTIFY _cbkAlarmNotify, + PARACHANGE_NOTIFY _cbkParaChangeNotify, + COMRECV_NOTIFY _cbkComRecv, + PROXY_NOTIFY _cbkProxyNotify); + + int NetClient_SetPort(int _iServerPort, int _iClientPort); + + int NetClient_Startup_V4(int _iServerPort, int _iClientPort, int _iWnd); + + int NetClient_Cleanup(); + + int NetClient_Logon(String _cProxy, String _cIP, String _cUserName, + String _cPassword, String _pcProID, int _iPort); + + int NetClient_Logoff(int _iLogonID); + + int NetClient_StartRecvEx(IntByReference _ulConID, CLIENTINFO _cltInfo, + RECVDATA_NOTIFY _cbkDataNotify, Pointer _pUserData); + + int NetClient_StartRecvNetPicStream(int _iLogonID, NetPicPara _ptPara, int _iBufLen, IntByReference _puiRecvID); + + int NetClient_StopRecv(int _ulConID); + + int NetClient_StartCaptureData(int _ulConID); + + int NetClient_StartPlay(int _ulConID, int _hWnd, RECT _rcShow, int _iDecflag); + + int NetClient_StopPlay(int _ulConID); + + int NetClient_StartCaptureFile(int _ulConID, String _cFileName, + int _iRecFileType); + + int NetClient_StopCaptureFile(int _ulConID); + int NetClient_GetLogonStatus(int _iLogonID); + int NetClient_GetDevInfo(int _iLogonID,ENCODERINFO _pEncoderInfo); + int NetClient_Query_V4(int _iLogonID, int _iCmd, int _iChannel, Pointer _pvCmdBuf, int _iBufLen); + int NetClient_NetFileGetFileCount(int _iLogonID, IntByReference _piTotalCount, IntByReference _piCurrentCount); + int NetClient_NetFileGetQueryfileEx(int _iLogonID,int _iFileIndex, NVS_FILE_DATA_EX _pFileInfo); + int NetClient_NetFileDownload(IntByReference _uiConID, int _iLogonID, int _iCmd, Pointer _pvBuf, int _iBufSize); + int NetClient_NetFileStopDownloadFile(int _uiConID); + int NetClient_NetFileGetDownloadPos(int _uiConID, IntByReference _piPos, IntByReference _piDLSize); + int NetClient_SetRawFrameCallBack(int _uiConID, RAWFRAME_NOTIFY _cbkGetFrame, Pointer _pContext); +} diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NetClient.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NetClient.java new file mode 100644 index 0000000..5e1e504 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NetClient.java @@ -0,0 +1,120 @@ +package com.storeroom.modules.storeroom3d.config.common; + +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.ptr.IntByReference; +import com.storeroom.modules.storeroom3d.config.common.NVSSDK.*; + +import java.awt.*; + +public class NetClient { + + + private static NVSSDK nvssdk = (NVSSDK) (System.getProperty("os.name").toLowerCase().startsWith("win") ? Native.loadLibrary("src/main/resources/lib/NVSSDK.dll", NVSSDK.class) : Native.loadLibrary("libnvssdk.so", NVSSDK.class)); + + public static int GetVersion(SDK_VERSION _ver) { + return nvssdk.NetClient_GetVersion(_ver); + } + + public static int SetNotifyFunction(MAIN_NOTIFY _cbkMainNotify, + ALARM_NOTIFY _cbkAlarmNotify, PARACHANGE_NOTIFY _cbkParaChangeNotify) { + return nvssdk.NetClient_SetNotifyFunction_V4(_cbkMainNotify, _cbkAlarmNotify, _cbkParaChangeNotify, null, null); + } + + public static int SetPort(int _iServerPort, int _iClientPort) { + return nvssdk.NetClient_SetPort(_iServerPort, _iClientPort); + } + + public static int Startup() { + return nvssdk.NetClient_Startup_V4(0, 0, 0); + } + + public static int Cleanup() { + return nvssdk.NetClient_Cleanup(); + } + + public static int Logon(String _cProxy, String _cIP, String _cUserName, + String _cPassword, String _pcProID, int _iPort) { + return nvssdk.NetClient_Logon(_cProxy, _cIP, _cUserName, + _cPassword, _pcProID, _iPort); + } + + public static int Logoff(int _iLogonID) { + return nvssdk.NetClient_Logoff(_iLogonID); + } + + public static int StartRecv(IntByReference _ulConID, CLIENTINFO _cltInfo, + RECVDATA_NOTIFY _cbkDataNotify) { + return nvssdk.NetClient_StartRecvEx(_ulConID, _cltInfo, + _cbkDataNotify, Pointer.NULL); + } + + public static int StopRecv(int _ulConID) { + return nvssdk.NetClient_StopRecv(_ulConID); + } + + public static int StartCaptureData(int _ulConID) { + return nvssdk.NetClient_StartCaptureData(_ulConID); + } + + public static int StartPlay(int _ulConID, Component _hWnd, int _iDecflag) { + int hWnd = (int) Native.getComponentID(_hWnd); + RECT rcShow = new RECT(); + return nvssdk.NetClient_StartPlay(_ulConID, hWnd, rcShow, + _iDecflag); + } + + public static int StopPlay(int _ulConID) { + return nvssdk.NetClient_StopPlay(_ulConID); + } + + public static int StartCaptureFile(int _ulConID, String _cFileName, + int _iRecFileType) { + return nvssdk.NetClient_StartCaptureFile(_ulConID, + _cFileName, _iRecFileType); + } + + public static int StopCaptureFile(int _ulConID) { + return nvssdk.NetClient_StopCaptureFile(_ulConID); + } + + public static int StartRecvNetPicStream(int _iLogonID, NetPicPara _ptPara, int _iBufLen, IntByReference _puiRecvID) { + return nvssdk.NetClient_StartRecvNetPicStream(_iLogonID, _ptPara, _iBufLen, _puiRecvID); + } + + public static int GetLogonStatus(int _iLogonID) { + return nvssdk.NetClient_GetLogonStatus(_iLogonID); + } + + public static int GetDevInfo(int _iLogonID, NVSSDK.ENCODERINFO _pEncoderInfo) { + return nvssdk.NetClient_GetDevInfo(_iLogonID, _pEncoderInfo); + } + + public static int Query_V4(int _iLogonID, int _iCmd, int _iChannel, Pointer _pvCmdBuf, int _iBufLen) { + return nvssdk.NetClient_Query_V4(_iLogonID, _iCmd, _iChannel, _pvCmdBuf, _iBufLen); + } + + public static int NetFileGetFileCount(int _iLogonID, IntByReference _piTotalCount, IntByReference _piCurrentCount) { + return nvssdk.NetClient_NetFileGetFileCount(_iLogonID, _piTotalCount, _piCurrentCount); + } + + public static int NetFileGetQueryfileEx(int _iLogonID, int _iFileIndex, NVS_FILE_DATA_EX _pFileInfo) { + return nvssdk.NetClient_NetFileGetQueryfileEx(_iLogonID, _iFileIndex, _pFileInfo); + } + + public static int NetFileDownload(IntByReference _uiConID, int _iLogonID, int _iCmd, Pointer _pvBuf, int _iBufSize) { + return nvssdk.NetClient_NetFileDownload(_uiConID, _iLogonID, _iCmd, _pvBuf, _iBufSize); + } + + public static int NetFileStopDownloadFile(int _uiConID) { + return nvssdk.NetClient_NetFileStopDownloadFile(_uiConID); + } + + public static int SetRawFrameCallBack(int _uiConID, RAWFRAME_NOTIFY _cbkGetFrame, Pointer _pContext) { + return nvssdk.NetClient_SetRawFrameCallBack(_uiConID, _cbkGetFrame, _pContext); + } + + public static int NetFileGetDownloadPos(int _uiConID, IntByReference _piPos, IntByReference _piDLSize) { + return nvssdk.NetClient_NetFileGetDownloadPos(_uiConID, _piPos, _piDLSize); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/VideoClient.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/VideoClient.java new file mode 100644 index 0000000..cb9c270 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/VideoClient.java @@ -0,0 +1,192 @@ +package com.storeroom.modules.storeroom3d.config.common; + + +import com.sun.jna.Pointer; +import com.sun.jna.ptr.IntByReference; + +public class VideoClient { + + int m_iLogonID = -1; + int m_iConnectID = -1; + int m_iTotalCount = 0; + int m_iCurrentCount = 0; + String[] suffix = {".sdv", "", "", ".ps", "", "", ".ts"}; + + public void LogonNotify(String strIP, String strID, int iLogonID, int iLogonState) { + String strMsg = new String(); + m_iLogonID = -1; + switch (iLogonState) { + case NVSSDK.LOGON_SUCCESS: { + m_iLogonID = iLogonID; + strMsg = "LOGON_SUCCESS"; + break; + } + case NVSSDK.LOGON_FAILED: { + strMsg = "LOGON_FAILED"; + break; + } + case NVSSDK.LOGON_TIMEOUT: { + strMsg = "LOGON_TIMEOUT"; + break; + } + case NVSSDK.LOGON_RETRY: { + strMsg = "LOGON_RETRY"; + break; + } + case NVSSDK.LOGON_ING: { + strMsg = "LOGON_ING"; + break; + } + default: { + System.out.println("[WCM_LOGON_NOTIFY][" + iLogonState + "] IP(" + + strIP + "),ID(" + strID + "),LogonID(" + iLogonID + ")"); + break; + } + } + System.out.println("[WCM_LOGON_NOTIFY][" + strMsg + "] IP(" + strIP + + "),ID(" + strID + "),LogonID(" + iLogonID + ")"); + } + + ; + + NVSSDK.ALARM_NOTIFY cbkAlarm = new NVSSDK.ALARM_NOTIFY() { + public void AlarmNotify(int _iLogonID, int _iChannel, + int _iAlarmState, int _iAlarmType, Pointer _pUserData) { + } + }; + + NVSSDK.PARACHANGE_NOTIFY cbkParaChange = new NVSSDK.PARACHANGE_NOTIFY() { + public void ParaChangeNotify(int iLogonID, int iChannel, int paraType, + Pointer para, Pointer noitfyUserData) { + } + }; + + NVSSDK.RECVDATA_NOTIFY cbkRecvData = new NVSSDK.RECVDATA_NOTIFY() { + public void RecvDataNotify(int _ulID, Pointer data, int len, int _iFlag, + Pointer _lpUserData) { + System.out.println("[RECVDATA_NOTIFY] ConnID(" + _ulID + "),DataLen(" + + len + ")"); + } + }; + + NVSSDK.MAIN_NOTIFY cbkMain = new NVSSDK.MAIN_NOTIFY() { + public void MainNotify(int iLogonID, int wParam, Pointer lParam, Pointer noitfyUserData) { + int iMsgType = wParam & 0xFFFF; + switch (iMsgType) { + case NVSSDK.WCM_LOGON_NOTIFY: { + try { + int iLogonStatus = NetClient.GetLogonStatus(iLogonID); + NVSSDK.ENCODERINFO tDevInfo = new NVSSDK.ENCODERINFO(); + NetClient.GetDevInfo(iLogonID, tDevInfo); + + String strIP = new String(tDevInfo.m_cEncoder).trim(); + String strID = new String(tDevInfo.m_cFactoryID).trim(); + LogonNotify(strIP, strID, iLogonID, iLogonStatus); + } catch (Exception e) { + e.printStackTrace(); + } + break; + } + case NVSSDK.WCM_QUERYFILE_FINISHED: { + try { + IntByReference iTotalCount = new IntByReference(); + IntByReference iCurrentCount = new IntByReference(); + int iRet = NetClient.NetFileGetFileCount(m_iLogonID, iTotalCount, iCurrentCount); + if (0 == iRet) { + m_iTotalCount = iTotalCount.getValue(); + m_iCurrentCount = iCurrentCount.getValue(); + System.out.println("MainNotify:WCM_QUERYFILE_FINISHED! m_iTotalCount= " + + m_iTotalCount + ", m_iCurrentCount=" + m_iCurrentCount); + } else { + System.out.println("NetFileGetFileCount fail!iRet= " + iRet); + } + } catch (Exception e) { + e.printStackTrace(); + } + break; + } + case NVSSDK.WCM_DWONLOAD_FINISHED: { + System.out.println("MainNotify:WCM_DWONLOAD_FINISHED!下载成功!"); + if (null == lParam) { + m_iConnectID = 0; + } else { + m_iConnectID = (int) lParam.nativeValue(lParam); + } + NetClient.NetFileStopDownloadFile(m_iConnectID); + break; + } + case NVSSDK.WCM_DWONLOAD_FAULT: { + System.out.println("MainNotify:WCM_DWONLOAD_FAULT!下载失败!"); + if (null == lParam) { + m_iConnectID = 0; + } else { + m_iConnectID = (int) lParam.nativeValue(lParam); + } + NetClient.NetFileStopDownloadFile(m_iConnectID); + break; + } + case NVSSDK.WCM_DOWNLOAD_INTERRUPT: { + System.out.println("MainNotify:WCM_DOWNLOAD_INTERRUPT!下载中断!"); + if (null == lParam) { + m_iConnectID = 0; + } else { + m_iConnectID = (int) lParam.nativeValue(lParam); + } + NetClient.NetFileStopDownloadFile(m_iConnectID); + break; + } + default: + break; + } + } + }; + + private int SDKInit() { + NVSSDK.SDK_VERSION ver = new NVSSDK.SDK_VERSION(); + int iRet = NetClient.GetVersion(ver); + System.out.println("[SDK_VERSION]" + ver.m_cVerInfo); + + iRet = NetClient.SetNotifyFunction(cbkMain, cbkAlarm, cbkParaChange); + System.out.println("SetNotifyFunction(" + iRet + ")"); + + iRet = NetClient.Startup(); + System.out.println("Startup(" + iRet + ")"); + + return 0; + } + + ; + + /** + * 登录设备 + * + * @param strIP ip 地址 + * @param iPort 端口号 + * @param strUserName 用户名 + * @param strUserPwd 密码 + * @return + */ + public int LogonDevice(String strIP, int iPort, String strUserName, String strUserPwd) { + + VideoClient tPlayback = new VideoClient(); + tPlayback.SDKInit(); //初始化SDK + // Scanner scanInput = new Scanner(System.in); + System.out.println("Logon" + strIP + ":" + iPort + "-" +strUserName + "-" + strUserPwd); + while (true) { + m_iLogonID = NetClient.Logon("", strIP, strUserName, strUserPwd, "", iPort); + int iLogonStatus = NetClient.GetLogonStatus(m_iLogonID); + if (iLogonStatus == NVSSDK.LOGON_SUCCESS) { + break; + } + + try { + Thread.currentThread(); + Thread.sleep(1000); + } catch (InterruptedException e) { + System.err.println("Interrupted"); + } + } + + return 0; + } +} diff --git a/storeroom/src/main/resources/lib/AVDecSDK.dll b/storeroom/src/main/resources/lib/AVDecSDK.dll new file mode 100644 index 0000000..452508a Binary files /dev/null and b/storeroom/src/main/resources/lib/AVDecSDK.dll differ diff --git a/storeroom/src/main/resources/lib/AVFilterSDK.dll b/storeroom/src/main/resources/lib/AVFilterSDK.dll new file mode 100644 index 0000000..2587fb8 Binary files /dev/null and b/storeroom/src/main/resources/lib/AVFilterSDK.dll differ diff --git a/storeroom/src/main/resources/lib/AVShowSDK.dll b/storeroom/src/main/resources/lib/AVShowSDK.dll new file mode 100644 index 0000000..2adef6e Binary files /dev/null and b/storeroom/src/main/resources/lib/AVShowSDK.dll differ diff --git a/storeroom/src/main/resources/lib/AbsoluteLayout.jar b/storeroom/src/main/resources/lib/AbsoluteLayout.jar new file mode 100644 index 0000000..b51cba7 Binary files /dev/null and b/storeroom/src/main/resources/lib/AbsoluteLayout.jar differ diff --git a/storeroom/src/main/resources/lib/ActiveLinkServer.dll b/storeroom/src/main/resources/lib/ActiveLinkServer.dll new file mode 100644 index 0000000..88478e4 Binary files /dev/null and b/storeroom/src/main/resources/lib/ActiveLinkServer.dll differ diff --git a/storeroom/src/main/resources/lib/AudioDecAMR.dll b/storeroom/src/main/resources/lib/AudioDecAMR.dll new file mode 100644 index 0000000..084cad1 Binary files /dev/null and b/storeroom/src/main/resources/lib/AudioDecAMR.dll differ diff --git a/storeroom/src/main/resources/lib/AudioDecV33.dll b/storeroom/src/main/resources/lib/AudioDecV33.dll new file mode 100644 index 0000000..1c7ddff Binary files /dev/null and b/storeroom/src/main/resources/lib/AudioDecV33.dll differ diff --git a/storeroom/src/main/resources/lib/DeviceDll/DOME_PELCO_D.dll b/storeroom/src/main/resources/lib/DeviceDll/DOME_PELCO_D.dll new file mode 100644 index 0000000..d36344d Binary files /dev/null and b/storeroom/src/main/resources/lib/DeviceDll/DOME_PELCO_D.dll differ diff --git a/storeroom/src/main/resources/lib/DeviceDll/DOME_PELCO_P.dll b/storeroom/src/main/resources/lib/DeviceDll/DOME_PELCO_P.dll new file mode 100644 index 0000000..fb1a425 Binary files /dev/null and b/storeroom/src/main/resources/lib/DeviceDll/DOME_PELCO_P.dll differ diff --git a/storeroom/src/main/resources/lib/DeviceDll/DOME_PLUS.dll b/storeroom/src/main/resources/lib/DeviceDll/DOME_PLUS.dll new file mode 100644 index 0000000..c4ec100 Binary files /dev/null and b/storeroom/src/main/resources/lib/DeviceDll/DOME_PLUS.dll differ diff --git a/storeroom/src/main/resources/lib/DeviceDll/PTZ_PELCO_D.dll b/storeroom/src/main/resources/lib/DeviceDll/PTZ_PELCO_D.dll new file mode 100644 index 0000000..5c60873 Binary files /dev/null and b/storeroom/src/main/resources/lib/DeviceDll/PTZ_PELCO_D.dll differ diff --git a/storeroom/src/main/resources/lib/DeviceDll/PTZ_PELCO_P.dll b/storeroom/src/main/resources/lib/DeviceDll/PTZ_PELCO_P.dll new file mode 100644 index 0000000..62d6730 Binary files /dev/null and b/storeroom/src/main/resources/lib/DeviceDll/PTZ_PELCO_P.dll differ diff --git a/storeroom/src/main/resources/lib/DeviceDll/PTZ_TC615_P.dll b/storeroom/src/main/resources/lib/DeviceDll/PTZ_TC615_P.dll new file mode 100644 index 0000000..f296d29 Binary files /dev/null and b/storeroom/src/main/resources/lib/DeviceDll/PTZ_TC615_P.dll differ diff --git a/storeroom/src/main/resources/lib/MultiMedia.dll b/storeroom/src/main/resources/lib/MultiMedia.dll new file mode 100644 index 0000000..9583210 Binary files /dev/null and b/storeroom/src/main/resources/lib/MultiMedia.dll differ diff --git a/storeroom/src/main/resources/lib/NVSSDK.dll b/storeroom/src/main/resources/lib/NVSSDK.dll new file mode 100644 index 0000000..3015963 Binary files /dev/null and b/storeroom/src/main/resources/lib/NVSSDK.dll differ diff --git a/storeroom/src/main/resources/lib/NVSSDK.lib b/storeroom/src/main/resources/lib/NVSSDK.lib new file mode 100644 index 0000000..6a540c4 Binary files /dev/null and b/storeroom/src/main/resources/lib/NVSSDK.lib differ diff --git a/storeroom/src/main/resources/lib/NetAdmin.dll b/storeroom/src/main/resources/lib/NetAdmin.dll new file mode 100644 index 0000000..f30f64e Binary files /dev/null and b/storeroom/src/main/resources/lib/NetAdmin.dll differ diff --git a/storeroom/src/main/resources/lib/Nslook.dll b/storeroom/src/main/resources/lib/Nslook.dll new file mode 100644 index 0000000..c4c21ac Binary files /dev/null and b/storeroom/src/main/resources/lib/Nslook.dll differ diff --git a/storeroom/src/main/resources/lib/OsCore.dll b/storeroom/src/main/resources/lib/OsCore.dll new file mode 100644 index 0000000..8de27dc Binary files /dev/null and b/storeroom/src/main/resources/lib/OsCore.dll differ diff --git a/storeroom/src/main/resources/lib/PlaySdkM4.dll b/storeroom/src/main/resources/lib/PlaySdkM4.dll new file mode 100644 index 0000000..cdfa6da Binary files /dev/null and b/storeroom/src/main/resources/lib/PlaySdkM4.dll differ diff --git a/storeroom/src/main/resources/lib/RegServer.dll b/storeroom/src/main/resources/lib/RegServer.dll new file mode 100644 index 0000000..77d75ae Binary files /dev/null and b/storeroom/src/main/resources/lib/RegServer.dll differ diff --git a/storeroom/src/main/resources/lib/SPDecSDK.dll b/storeroom/src/main/resources/lib/SPDecSDK.dll new file mode 100644 index 0000000..af0a9e8 Binary files /dev/null and b/storeroom/src/main/resources/lib/SPDecSDK.dll differ diff --git a/storeroom/src/main/resources/lib/SPDecUtil.dll b/storeroom/src/main/resources/lib/SPDecUtil.dll new file mode 100644 index 0000000..b25f907 Binary files /dev/null and b/storeroom/src/main/resources/lib/SPDecUtil.dll differ diff --git a/storeroom/src/main/resources/lib/TDStreamEnc.dll b/storeroom/src/main/resources/lib/TDStreamEnc.dll new file mode 100644 index 0000000..bae06cd Binary files /dev/null and b/storeroom/src/main/resources/lib/TDStreamEnc.dll differ diff --git a/storeroom/src/main/resources/lib/VideoDecV33.dll b/storeroom/src/main/resources/lib/VideoDecV33.dll new file mode 100644 index 0000000..b304ea8 Binary files /dev/null and b/storeroom/src/main/resources/lib/VideoDecV33.dll differ diff --git a/storeroom/src/main/resources/lib/VideoMjpegDec.dll b/storeroom/src/main/resources/lib/VideoMjpegDec.dll new file mode 100644 index 0000000..2844126 Binary files /dev/null and b/storeroom/src/main/resources/lib/VideoMjpegDec.dll differ diff --git a/storeroom/src/main/resources/lib/jna.jar b/storeroom/src/main/resources/lib/jna.jar new file mode 100644 index 0000000..3b8fb4f Binary files /dev/null and b/storeroom/src/main/resources/lib/jna.jar differ diff --git a/storeroom/src/main/resources/lib/libcurl.dll b/storeroom/src/main/resources/lib/libcurl.dll new file mode 100644 index 0000000..abeb608 Binary files /dev/null and b/storeroom/src/main/resources/lib/libcurl.dll differ diff --git a/storeroom/src/main/resources/lib/libmp4adpter.dll b/storeroom/src/main/resources/lib/libmp4adpter.dll new file mode 100644 index 0000000..ee177bb Binary files /dev/null and b/storeroom/src/main/resources/lib/libmp4adpter.dll differ diff --git a/storeroom/src/main/resources/lib/libmp4v2.dll b/storeroom/src/main/resources/lib/libmp4v2.dll new file mode 100644 index 0000000..68044a4 Binary files /dev/null and b/storeroom/src/main/resources/lib/libmp4v2.dll differ diff --git a/storeroom/src/main/resources/lib/proxysdk.dll b/storeroom/src/main/resources/lib/proxysdk.dll new file mode 100644 index 0000000..34193cd Binary files /dev/null and b/storeroom/src/main/resources/lib/proxysdk.dll differ diff --git a/storeroom/src/main/resources/lib/pthreadVC2.dll b/storeroom/src/main/resources/lib/pthreadVC2.dll new file mode 100644 index 0000000..841d4a2 Binary files /dev/null and b/storeroom/src/main/resources/lib/pthreadVC2.dll differ diff --git a/storeroom/src/main/resources/lib/rt.jar b/storeroom/src/main/resources/lib/rt.jar new file mode 100644 index 0000000..fc5ef41 Binary files /dev/null and b/storeroom/src/main/resources/lib/rt.jar differ diff --git a/storeroom/src/main/resources/lib/sdk_log_config.ini b/storeroom/src/main/resources/lib/sdk_log_config.ini new file mode 100644 index 0000000..5a7bd19 --- /dev/null +++ b/storeroom/src/main/resources/lib/sdk_log_config.ini @@ -0,0 +1,15 @@ +;Terminal log config +[Terminal] +;error log-100 message log-200 debug log-300 +Level=100 + +;File log config +[File] +;error log-100 message log-200 debug log-300 +Level=100 +;Log file max size,Unit:MB +Size=2048 +;Log file savetime,Unit:Days +SavaTime=30 +;Min disk free space,Percent[0-100] +FreePercent=10 \ No newline at end of file diff --git a/storeroom/src/main/resources/lib/swing-layout-1.0.3.jar b/storeroom/src/main/resources/lib/swing-layout-1.0.3.jar new file mode 100644 index 0000000..6e1b43b Binary files /dev/null and b/storeroom/src/main/resources/lib/swing-layout-1.0.3.jar differ diff --git a/storeroom/src/test/java/videoTest.java b/storeroom/src/test/java/videoTest.java new file mode 100644 index 0000000..7fe0cfd --- /dev/null +++ b/storeroom/src/test/java/videoTest.java @@ -0,0 +1,12 @@ +import com.storeroom.modules.storeroom3d.config.common.VideoClient; +import org.junit.jupiter.api.Test; + +public class videoTest { + + + @Test + public void loginVideo() { + VideoClient videoClient = new VideoClient(); + videoClient.LogonDevice("192.168.99.21",3000,"admin","yxk63603325"); + } +} diff --git a/system/pom.xml b/system/pom.xml index 799e954..8ac32ba 100644 --- a/system/pom.xml +++ b/system/pom.xml @@ -68,8 +68,6 @@ - - org.quartz-scheduler @@ -90,6 +88,7 @@ + @@ -97,6 +96,8 @@ spring-boot-maven-plugin 2.6.1 + + true org.springframework.boot