From 1f7962d0545de446e96ccaa81b33bbf71a69b41b Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期三, 06 九月 2023 12:29:26 +0800 Subject: [PATCH] 增加sdk接口getGisInfo 调整ptz的websocket上传增加视场角 --- ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java | 14 + ard-work/src/main/java/com/ruoyi/inspect/mapper/ArdVideoInspectRecordMapper.java | 4 ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java | 9 ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java | 11 - ard-work/src/main/java/com/ruoyi/utils/forest/UavClient.java | 6 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java | 8 ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HCNetSDK.java | 47 +++++ ruoyi-ui/package-lock.json | 145 ++++++++++++++++++++ ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java | 2 ard-work/src/main/resources/templates/preview.html | 26 ++- ruoyi-ui/package.json | 1 ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java | 9 + ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 52 ++++++ lib/mediamtx/mediamtx.exe | 0 ruoyi-ui/node_modules/.package-lock.json | 75 ++++++++++ ard-work/src/main/java/com/ruoyi/inspect/controller/ArdVideoInspectRecordController.java | 3 lib/mediamtx/mediamtx.yml | 2 17 files changed, 359 insertions(+), 55 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java index a0f602b..6d48ea2 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java @@ -326,4 +326,13 @@ String path = sdk.record(cmd); return toAjaxString(path, "鎵嬪姩褰曞儚"); } + @ApiOperation("鑾峰彇鐩告満鏋惰鍙傛暟") + @PostMapping("/getCameraSetupCFG") + @Log(title = "鑾峰彇鐩告満鏋惰鍙傛暟", businessType = BusinessType.CONTROL) + @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"}) + public @ResponseBody + AjaxResult getCameraSetupCFG(@RequestBody CameraCmd cmd) { + cmd.setOperator(SecurityUtils.getUserId()); + return AjaxResult.success(sdk.getGisInfo(cmd)); + } } diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HCNetSDK.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HCNetSDK.java index a1baa8f..d3dbd9f 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HCNetSDK.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/HCNetSDK.java @@ -530,9 +530,9 @@ public static final int NET_DVR_SET_DDNSCFG_EX = 275;//璁剧疆鎵╁睍DDNS鍙傛暟 public static final int NET_DVR_SET_PTZPOS = 292; //浜戝彴璁剧疆PTZ浣嶇疆 public static final int NET_DVR_GET_PTZPOS = 293; //浜戝彴鑾峰彇PTZ浣嶇疆 - public static final int NET_DVR_SET_PTZLOCKCFG=3288;//璁剧疆浜戝彴閿佸畾淇℃伅 - public static final int NET_DVR_GET_PTZLOCKCFG=3287;//鑾峰彇浜戝彴閿佸畾淇℃伅 - public static final int NET_DVR_PTZ_INITIALPOSITIONCTRL=3283;//闆舵柟浣嶈鎺у埗 + public static final int NET_DVR_SET_PTZLOCKCFG = 3288;//璁剧疆浜戝彴閿佸畾淇℃伅 + public static final int NET_DVR_GET_PTZLOCKCFG = 3287;//鑾峰彇浜戝彴閿佸畾淇℃伅 + public static final int NET_DVR_PTZ_INITIALPOSITIONCTRL = 3283;//闆舵柟浣嶈鎺у埗 public static final int NET_DVR_GET_PTZSCOPE = 294;//浜戝彴鑾峰彇PTZ鑼冨洿 public static final int NET_DVR_SET_BASICPARAMCFG = 3271;//璁剧疆PTZ鍩烘湰鍙傛暟淇℃伅 public static final int NET_DVR_COMPLETE_RESTORE_CTRL = 3420; //璁剧疆瀹屽叏鎭㈠鍑哄巶鍊� @@ -717,6 +717,7 @@ public static final int NET_DVR_GET_CURTRIGGERMODE = 3130; //鑾峰彇璁惧褰撳墠瑙﹀彂妯″紡 public static final int NET_ITC_GET_TRIGGERCFG = 3003; //鑾峰彇瑙﹀彂鍙傛暟 public static final int NET_ITC_SET_TRIGGERCFG = 3004; //璁剧疆瑙﹀彂鍙傛暟 + public static final int NET_DVR_CAMERA_SETUPCFG = 3007; //鑾峰彇鐩告満鏋惰鍙傛暟 public static final int NET_ITC_GET_VIDEO_TRIGGERCFG = 3017; //鑾峰彇瑙嗛鐢佃瑙﹀彂鍙傛暟 public static final int NET_ITC_SET_VIDEO_TRIGGERCFG = 3018; //璁剧疆瑙嗛鐢佃瑙﹀彂鍙傛暟 @@ -3781,19 +3782,43 @@ public short wTiltPos;//鍨傜洿鍙傛暟 public short wZoomPos;//鍙樺�嶅弬鏁� } + //PTZ閿佸畾淇℃伅 public static class NET_DVR_PTZ_LOCKCFG extends HIKSDKStructure { public int dwSize;//缁撴瀯浣撳ぇ灏� public byte byWorkMode;//浜戝彴閿佸畾鎺у埗锛�0- 瑙i攣锛�1- 閿佸畾 public byte[] byRes = new byte[127]; } + + //鐩告満鏋惰淇℃伅 + public static class NET_DVR_GET_CAMERA_SETUPCFG extends HIKSDKStructure { + public int dwSize;//缁撴瀯浣撳ぇ灏� + public short wSetupHeight;//鏋惰楂樺害锛屽彇鍊艰寖鍥达細[0,20] + public byte byLensType;//闀滃ご鐒﹁窛绫诲瀷锛�0- 鏈煡锛�1- 8mm锛�2- 12mm锛�3- 16mm锛�4- 25mm锛�5- 35mm锛�6- 50mm + public byte bySetupHeightUnit;//鏋惰楂樺害鍗曚綅锛�0- 绫�(m)锛�1- 鍘樼背(cm) + public int dwSceneDis;//鍥惧儚涓嬭竟缂樹綅缃笌鐩告満涔嬮棿鐨勬按骞宠窛绂伙紝鍗曚綅锛氬帢绫� + public float fPitchAngle;//鐩告満淇话瑙掑害锛屽彇鍊艰寖鍥达細[-180, 180]锛屽崟浣嶏細搴� + public float fInclineAngle;//鐩告満鍊炬枩瑙掑害锛屽彇鍊艰寖鍥达細[-180, 180]锛屽崟浣嶏細搴� + public float fRotateAngle;//鐩告満鏃嬭浆瑙掑害锛屽彇鍊艰寖鍥达細[-180, 180]锛屽崟浣嶏細搴� + public short wVideoDetCoefficient;//瑙嗛娴嬭瘯绯绘暟锛屽彇鍊艰寖鍥达細[0,300] + public byte byErectMethod;//鏋惰鏂瑰紡锛�0-姝h锛�1-渚ц + public byte byCameraViewAngle;//鎽勫儚鏈哄畨瑁呰閲庤搴︼細0- 鍨傜洿锛堥粯璁わ級锛�1- 鍊炬枩 + public int dwHorizontalDistance;//鎽勫儚鏈轰笌鍑哄叆鍙f按骞宠窛绂伙紝鍙栧�艰寖鍥达細1~1000锛岄粯璁わ細30锛屽崟浣嶏細cm锛屾憚鍍忔満瑙掑害涓哄�炬枩鏃舵湁鏁� + public byte byDetailLensType;//闀滃ご绫诲瀷锛屽彇鍊艰寖鍥达細1~100锛岄粯璁わ細28锛屽崟浣嶏細0.1mm + public byte[] byRes = new byte[3]; + public float fHorFieldAngle;//鎽勫儚鏈烘按骞宠鍦鸿瑙掑害锛屽彇鍊艰寖鍥达細[0,360]锛屽崟浣嶏細搴� + public float fVerFieldAngle;//鎽勫儚鏈哄瀭鐩磋鍦鸿瑙掑害锛屽彇鍊艰寖鍥达細[0,360]锛屽崟浣嶏細搴� + public byte[] byRes1 = new byte[24]; + } + //闆舵柟浣嶈鎺у埗淇℃伅 public static class NET_DVR_INITIALPOSITIONCTRL extends HIKSDKStructure { - public int dwSize ;//缁撴瀯浣撳ぇ灏� + public int dwSize;//缁撴瀯浣撳ぇ灏� public short dwChan;//璁惧閫氶亾鍙� public byte byWorkMode;//宸ヤ綔妯″紡锛�0- 璁剧疆锛�1- 璋冪敤锛�2- 娓呴櫎 public byte[] byRes = new byte[127]; } + //鐞冩満浣嶇疆淇℃伅 public static class NET_DVR_PTZ_BASICPARAMCFG extends HIKSDKStructure { public short dwSize;//缁撴瀯浣撳ぇ灏� @@ -10243,14 +10268,16 @@ boolean NET_DVR_InquiryRecordTimeSpan(int lUserID, int dwChannel, NET_DVR_RECORD_TIME_SPAN_INQUIRY lpInquiry, NET_DVR_RECORD_TIME_SPAN lpResult); boolean NET_DVR_StartGetDevState(NET_DVR_CHECK_DEV_STATE pParams); + //寮哄埗I甯у弬鏁扮粨鏋勪綋銆� - public static class NET_DVR_I_FRAME extends HIKSDKStructure{ + public static class NET_DVR_I_FRAME extends HIKSDKStructure { public int dwSize; public byte[] sStreamID = new byte[32]; //娴両Ds SDK 涓 STREAM_ID_LEN杩涜浜嗗畾涔夛紝璧嬪��32 public int dwChannel;//閫氶亾鍙� public byte byStreamType; //鐮佹祦绫诲瀷锛�0-涓荤爜娴侊紝1-瀛愮爜娴侊紝2-鐮佹祦3锛�3-铏氭嫙鐮佹祦锛屼互姝ょ被鎺� public byte[] byRes = new byte[63]; //淇濈暀锛岀疆涓�0 鎸夌収SDK瑕佹眰杩涜瀵瑰簲璧嬪�� } + //gps鐩稿叧缁撴瀯瀹氫箟 public static class TimeSegParam extends HIKSDKStructure { //GPS鏁版嵁鏌ユ壘璧峰鏃堕棿 @@ -10521,8 +10548,8 @@ } public static final int NET_DVR_GET_GISINFO = 3711; - //GIS淇℃伅 + //GIS淇℃伅 public static class NET_DVR_GIS_INFO extends HIKSDKStructure { public int dwSize; public float fAzimuth; @@ -10544,6 +10571,13 @@ public float fMinVerticalValue; public float fMaxVerticalValue; public byte[] byRes = new byte[220]; + } + + public static class NET_DVR_CHANNEL extends HIKSDKStructure { + public short wDVRPort; + public byte[] byRes1 = new byte[2]; + public int dwChannel; + public byte[] byRes2 = new byte[32]; } //GBT28181鍗忚鐨勮澶囩紪鐮侀�氶亾閰嶇疆 @@ -10584,6 +10618,7 @@ public byte[] byRes = new byte[6]; } } + //鎾斁搴撳嚱鏁板0鏄�,PlayCtrl.dll interface PlayCtrl extends Library { public static final int STREAME_REALTIME = 0; diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java index 4826aba..95464a3 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java @@ -109,4 +109,6 @@ //鑾峰彇鐩告満閫氶亾淇℃伅 public List<ArdChannel> getCameraChannelList(ArdCameras camera); + //鑾峰彇GIS淇℃伅鏁版嵁 + public Map<String,Object> getGisInfo(CameraCmd cmd); } diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java index a051843..d03fb83 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java @@ -385,8 +385,8 @@ NET_DVR_FOCUSMODE_CFG focusmodeCfg = new NET_DVR_FOCUSMODE_CFG(); Pointer point = focusmodeCfg.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); - focusmodeCfg.byFocusMode=1; - focusmodeCfg.byAutoFocusMode=0; + focusmodeCfg.byFocusMode = 1; + focusmodeCfg.byAutoFocusMode = 0; focusmodeCfg.write(); boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, focusmodeCfg.size(), ibrBytesReturned); if (bool) { @@ -975,6 +975,7 @@ log.debug("璁剧疆鑱氱劍妯″紡鎴愬姛"); return bool; } + /** * @鎻忚堪 鑾峰彇鑱氱劍妯″紡 * @鍙傛暟 [userId, channelNum] @@ -1343,7 +1344,7 @@ log.debug("褰曞儚鍋滄"); //瀛樺叆minio String BucketName = cmd.getRecordBucketName(); - String ObjectName = cmd.getRecordObjectName()+".mp4"; + String ObjectName = cmd.getRecordObjectName() + ".mp4"; FileInputStream stream = new FileInputStream(path); boolean b = MinioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4"); if (b) { @@ -1409,7 +1410,7 @@ // 鑾峰彇閫氶亾鍙� for (int iChannum = 0; iChannum < chanNum; iChannum++) { ArdChannel ardChannel = new ArdChannel(); - int channum = iChannum + startDChan+1; + int channum = iChannum + startDChan + 1; HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40(); strPicCfg.dwSize = strPicCfg.size(); strPicCfg.write(); @@ -1433,4 +1434,47 @@ } return channelList; } + + /** + * @鎻忚堪 鑾峰彇GIS淇℃伅鏁版嵁 + * @鍙傛暟 [userId, channelNum] + * @杩斿洖鍊� boolean + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/1/17 16:36 + * @淇敼浜哄拰鍏跺畠淇℃伅 0-瑙i攣 1-閿佸畾 + */ + @Override + public Map<String, Object> getGisInfo(CameraCmd cmd) { + String cameraId = cmd.getCameraId(); + Integer channelNum = cmd.getChannelNum(); + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return new HashMap<>(); + } + // 鑾峰彇鍙傛暟 + Integer userId = GlobalVariable.loginMap.get(cameraId); + HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG(); + HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO(); + struStdCfg.read(); + IntByReference lchannel = new IntByReference(channelNum); + struStdCfg.lpCondBuffer = lchannel.getPointer(); + struStdCfg.dwCondSize = 4; + struStdCfg.lpOutBuffer = struGisInfo.getPointer(); + struStdCfg.dwOutSize = struGisInfo.size(); + struStdCfg.write();//璁剧疆鍓嶄箣鍓嶈write() + boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg); + if (!bool) { + int code = hCNetSDK.NET_DVR_GetLastError(); + log.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触,璇风◢鍚庨噸璇�" + code); + return new HashMap<>(); + } else { + struGisInfo.read(); + Map<String, Object> map = new HashMap<>(); + map.put("p", struGisInfo.struPtzPos.fPanPos); + map.put("t", struGisInfo.struPtzPos.fTiltPos<0?struGisInfo.struPtzPos.fTiltPos+360:struGisInfo.struPtzPos.fTiltPos); + map.put("z", struGisInfo.struPtzPos.fZoomPos); + map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 姘村钩瑙嗗満瑙� + map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 鍨傜洿瑙嗗満瑙� + return map; + } + } } \ No newline at end of file diff --git a/ard-work/src/main/java/com/ruoyi/inspect/controller/ArdVideoInspectRecordController.java b/ard-work/src/main/java/com/ruoyi/inspect/controller/ArdVideoInspectRecordController.java index fbd225b..6455a6b 100644 --- a/ard-work/src/main/java/com/ruoyi/inspect/controller/ArdVideoInspectRecordController.java +++ b/ard-work/src/main/java/com/ruoyi/inspect/controller/ArdVideoInspectRecordController.java @@ -1,5 +1,6 @@ package com.ruoyi.inspect.controller; +import java.util.HashMap; import java.util.List; import javax.servlet.http.HttpServletResponse; @@ -42,7 +43,7 @@ @GetMapping("/listByStartTime") public TableDataInfo listByStartTime(ArdVideoInspectRecord ardVideoInspectRecord) { startPage(); - List list = ardVideoInspectRecordService.selectArdVideoInspectRecordListByStartTime(ardVideoInspectRecord); + List<HashMap> list = ardVideoInspectRecordService.selectArdVideoInspectRecordListByStartTime(ardVideoInspectRecord); return getDataTable(list); } diff --git a/ard-work/src/main/java/com/ruoyi/inspect/mapper/ArdVideoInspectRecordMapper.java b/ard-work/src/main/java/com/ruoyi/inspect/mapper/ArdVideoInspectRecordMapper.java index 7ff8fea..cb938b8 100644 --- a/ard-work/src/main/java/com/ruoyi/inspect/mapper/ArdVideoInspectRecordMapper.java +++ b/ard-work/src/main/java/com/ruoyi/inspect/mapper/ArdVideoInspectRecordMapper.java @@ -1,5 +1,6 @@ package com.ruoyi.inspect.mapper; +import java.util.HashMap; import java.util.List; import com.ruoyi.inspect.domain.ArdVideoInspectRecord; @@ -26,8 +27,9 @@ * @return 瑙嗛宸℃璁板綍闆嗗悎 */ public List<ArdVideoInspectRecord> selectArdVideoInspectRecordList(ArdVideoInspectRecord ardVideoInspectRecord); + @SuppressWarnings("MybatisXMapperMethodInspection") - public List selectArdVideoInspectRecordListByStartTime(ArdVideoInspectRecord ardVideoInspectRecord); + public List<HashMap> selectArdVideoInspectRecordListByStartTime(ArdVideoInspectRecord ardVideoInspectRecord); /** * 鏂板瑙嗛宸℃璁板綍 diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java index c33dfa4..1b00910 100644 --- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java @@ -1,13 +1,12 @@ package com.ruoyi.inspect.service.impl; +import java.util.HashMap; import java.util.List; - -import com.ruoyi.common.utils.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.inspect.mapper.ArdVideoInspectRecordMapper; import com.ruoyi.inspect.domain.ArdVideoInspectRecord; import com.ruoyi.inspect.service.IArdVideoInspectRecordService; +import javax.annotation.Resource; /** * 瑙嗛宸℃璁板綍Service涓氬姟灞傚鐞� @@ -17,7 +16,7 @@ */ @Service public class ArdVideoInspectRecordServiceImpl implements IArdVideoInspectRecordService { - @Autowired + @Resource private ArdVideoInspectRecordMapper ardVideoInspectRecordMapper; /** @@ -43,7 +42,7 @@ } @Override - public List selectArdVideoInspectRecordListByStartTime(ArdVideoInspectRecord ardVideoInspectRecord) { + public List<HashMap> selectArdVideoInspectRecordListByStartTime(ArdVideoInspectRecord ardVideoInspectRecord) { return ardVideoInspectRecordMapper.selectArdVideoInspectRecordListByStartTime(ardVideoInspectRecord); } diff --git a/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java b/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java index 4a93637..2dcf2b0 100644 --- a/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java +++ b/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java @@ -8,19 +8,10 @@ * @Version: 1.0 **/ -import com.ruoyi.common.utils.ConfigUtils; -import com.ruoyi.common.utils.DictUtils; -import com.ruoyi.common.utils.file.ImageUtils; -import com.sun.imageio.plugins.common.ImageUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; import java.sql.*; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Set; + @Slf4j @Component diff --git a/ard-work/src/main/java/com/ruoyi/utils/forest/UavClient.java b/ard-work/src/main/java/com/ruoyi/utils/forest/UavClient.java index c13197b..6a2b4db 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/forest/UavClient.java +++ b/ard-work/src/main/java/com/ruoyi/utils/forest/UavClient.java @@ -12,13 +12,13 @@ public static String IP = "http://112.98.126.2:7030/"; @Get(IP + "${url}") - String GET(@DataVariable("url") String url, @Header("x-auth-token") String token, @JSONBody String body); + String GET(@Var("url") String url, @Header("x-auth-token") String token, @JSONBody String body); @Post(IP + "${url}") - String POST(@DataVariable("url") String url, @Header("x-auth-token") String token, @JSONBody String body); + String POST(@Var("url") String url, @Header("x-auth-token") String token, @JSONBody String body); @Delete(IP + "${url}") - String DELETE(@DataVariable("url") String url, @Header("x-auth-token") String token, @JSONBody String body); + String DELETE(@Var("url") String url, @Header("x-auth-token") String token, @JSONBody String body); diff --git a/ard-work/src/main/resources/templates/preview.html b/ard-work/src/main/resources/templates/preview.html index 9845351..1a57d63 100644 --- a/ard-work/src/main/resources/templates/preview.html +++ b/ard-work/src/main/resources/templates/preview.html @@ -132,11 +132,11 @@ video.addEventListener('loadedmetadata', function () { adjustGridItemSize(gridItem, gridItem.videoWidth, gridItem.videoHeight); }); - video.addEventListener("click", function() { + video.addEventListener("click", function () { loadingMessage.style.display = "block"; - video.play().then(function() { + video.play().then(function () { loadingMessage.style.display = "none"; - }).catch(function(error) { + }).catch(function (error) { console.error("Error playing the video:", error); loadingMessage.style.display = "none"; }); @@ -148,18 +148,19 @@ } + let mediamtxHost = "192.168.1.12" var chanMap = new Map(); window.onload = function () { changeGrid(2, 2); - chanMap.set("video1", "http://127.0.0.1:8889/164/"); - chanMap.set("video2", "http://127.0.0.1:8889/165/"); - chanMap.set("video3", "http://127.0.0.1:8889/245/"); - chanMap.set("video4", "http://127.0.0.1:8889/164/"); - chanMap.set("video5", "http://127.0.0.1:8889/165/"); - chanMap.set("video6", "http://127.0.0.1:8889/245/"); - chanMap.set("video7", "http://127.0.0.1:8889/164/"); - chanMap.set("video8", "http://127.0.0.1:8889/165/"); - chanMap.set("video9", "http://127.0.0.1:8889/245/"); + chanMap.set("video1", "http://" + mediamtxHost + ":8889/164/"); + chanMap.set("video2", "http://" + mediamtxHost + ":8889/165/"); + chanMap.set("video3", "http://" + mediamtxHost + ":8889/245/"); + chanMap.set("video4", "http://" + mediamtxHost + ":8889/164/"); + chanMap.set("video5", "http://" + mediamtxHost + ":8889/165/"); + chanMap.set("video6", "http://" + mediamtxHost + ":8889/245/"); + chanMap.set("video7", "http://" + mediamtxHost + ":8889/164/"); + chanMap.set("video8", "http://" + mediamtxHost + ":8889/165/"); + chanMap.set("video9", "http://" + mediamtxHost + ":8889/245/"); console.log(chanMap); } const linkToIceServers = (links) => ( @@ -421,6 +422,7 @@ }) } + </script> </body> </html> diff --git a/lib/mediamtx/mediamtx.exe b/lib/mediamtx/mediamtx.exe index 69dc5b3..eebaa64 100644 --- a/lib/mediamtx/mediamtx.exe +++ b/lib/mediamtx/mediamtx.exe Binary files differ diff --git a/lib/mediamtx/mediamtx.yml b/lib/mediamtx/mediamtx.yml index 9598640..4be3390 100644 --- a/lib/mediamtx/mediamtx.yml +++ b/lib/mediamtx/mediamtx.yml @@ -207,7 +207,7 @@ # needed when server and clients are on different LANs. # TURN/TURNS servers are needed when a direct connection between server and # clients is not possible. All traffic is routed through them. stun:stun.l.google.com:19302 -- url: stun:stun.l.google.com:19302 +- url: stun:192.168.1.15:3478 # if user is "AUTH_SECRET", then authentication is secret based. # the secret must be inserted into the password field. username: '' diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java index a009f10..7ec73cc 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java @@ -39,12 +39,16 @@ List<SysUser> SysUserList = sysUserService.selectAllAppUserList(new SysUser()); if (SysUserList.size() > 0) { for (SysUser sysUser : SysUserList) { - Boolean appOnlineState = sysUser.getAppOnlineState().equals("1"); - Boolean online = rongCloudService.checkOnline(sysUser.getUserId()); - if (!appOnlineState.equals(online)) { - sysUser.setAppOnlineState(online ? "1" : "0"); - sysUserService.updateUserProfile(sysUser); + String state = sysUser.getAppOnlineState();//鑾峰彇褰撳墠鐢ㄦ埛鐨勫湪绾跨姸鎬� + Boolean online = rongCloudService.checkOnline(sysUser.getUserId());//浠庤瀺浜戣幏鍙栧湪绾跨姸鎬� + if (state != null) { + Boolean appOnlineState = state.equals("1"); + if (appOnlineState == online) { + continue; + } } + sysUser.setAppOnlineState(online ? "1" : "0"); + sysUserService.updateUserProfile(sysUser); } } } catch (Exception ex) { diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java index ae59c72..e477f43 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SdkTask.java @@ -41,12 +41,14 @@ RedisCache redisCache = SpringUtils.getBean(RedisCache.class); IHikClientService hikClientService = SpringUtils.getBean(IHikClientService.class); List<Map<String, Object>> list = new ArrayList<>(); - ArdCameras ardCameras = new ArdCameras(); - ardCameras.setGdtype("1"); List<Object> Objects = redisCache.getListKey(CacheConstants.CAMERA_LIST_KEY); if (Objects.size() > 0) { for (Object obj : Objects) { ArdCameras camera = (ArdCameras) obj; + if(!"1".equals(camera.getGdtype())) + { + continue; + } CameraCmd cmd = new CameraCmd(); cmd.setCameraId(camera.getId()); cmd.setChannelNum(1); @@ -55,7 +57,7 @@ { continue; } - Map<String, Object> ptz = hikClientService.getPtz(cmd); + Map<String, Object> ptz = hikClientService.getGisInfo(cmd); if (StringUtils.isNull(ptz)) { continue; } diff --git a/ruoyi-ui/node_modules/.package-lock.json b/ruoyi-ui/node_modules/.package-lock.json index 863e3c8..92b1ef7 100644 --- a/ruoyi-ui/node_modules/.package-lock.json +++ b/ruoyi-ui/node_modules/.package-lock.json @@ -1750,6 +1750,25 @@ "node": ">=6.9.0" } }, + "node_modules/@dailymotion/vast-client": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@dailymotion/vast-client/-/vast-client-4.0.1.tgz", + "integrity": "sha512-oRUCc06bWdX/1f2Eha/od5WCj+MLHiD6rgyAudgjOUyWXhCcbkUTZeejBSQsLft0nFnd+5nrDqGkBD8mrEVd/Q==", + "dependencies": { + "@xmldom/xmldom": "^0.8.3" + }, + "engines": { + "node": ">=12.22.1" + } + }, + "node_modules/@dailymotion/vmap": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@dailymotion/vmap/-/vmap-3.3.1.tgz", + "integrity": "sha512-0+JbHbK/ePKtQYAyrZWr7q/ec2hA355hOm5qwlNUt175ml6IBqKsSSjpz9cLe+0sYCKZGega7ED6gc+uoR5pbQ==", + "engines": { + "node": ">=12.22.1" + } + }, "node_modules/@eslint/eslintrc": { "version": "0.2.2", "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", @@ -1813,6 +1832,53 @@ "engines": { "node": ">=8" } + }, + "node_modules/@eyevinn/csai-manager": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@eyevinn/csai-manager/-/csai-manager-0.1.2.tgz", + "integrity": "sha512-ZehCxXlSIHF5Ej1n/WZEaLa6sLIH5zrE1ZB71yyT/KbFoeDsDDoo+jw61xzzT+pKBb4vNBtKQRgaVDGZdT2L/g==", + "dependencies": { + "@dailymotion/vast-client": "^4.0.0", + "@dailymotion/vmap": "^3.3.0", + "@eyevinn/video-event-filter": "^2.0.0", + "mitt": "^3.0.0" + } + }, + "node_modules/@eyevinn/csai-manager/node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/@eyevinn/video-event-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eyevinn/video-event-filter/-/video-event-filter-2.0.0.tgz", + "integrity": "sha512-S5pECmymqg7WqlAeerhtPVEFxWhLY3cz3DTuhuljZreVDLnEBV6/DlWI6SWDnKdpDJMgD6VjPfaRJssmGatNBg==", + "dependencies": { + "mitt": "^2.1.0" + } + }, + "node_modules/@eyevinn/video-event-filter/node_modules/mitt": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-2.1.0.tgz", + "integrity": "sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==" + }, + "node_modules/@eyevinn/webrtc-player": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eyevinn/webrtc-player/-/webrtc-player-0.12.0.tgz", + "integrity": "sha512-xzb0wl/wVmuzv4yvOF3+fUtvv14oj9+pQ0Va0CTBAz2VYRsVdqtDacwq8aMolfsDqdwIyouj5Qji5XWz9tdW3A==", + "dependencies": { + "@eyevinn/csai-manager": "^0.1.2", + "@eyevinn/whpp-client": "^0.1.2", + "events": "^3.3.0" + }, + "engines": { + "node": ">=18.15.0" + } + }, + "node_modules/@eyevinn/whpp-client": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@eyevinn/whpp-client/-/whpp-client-0.1.2.tgz", + "integrity": "sha512-Mau11ykVIZudy+7Qz2tJZbV2cuj8Un7eT2QRBGFA42RPL8djfEi/RIZ+6b9C1Bc1EAppl26zoh28D8/KstFioQ==" }, "node_modules/@gar/promisify": { "version": "1.1.3", @@ -3004,6 +3070,14 @@ "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" } }, "node_modules/@xtuc/ieee754": { @@ -6883,7 +6957,6 @@ "version": "3.3.0", "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, "engines": { "node": ">=0.8.x" } diff --git a/ruoyi-ui/package-lock.json b/ruoyi-ui/package-lock.json index 0e50563..3609762 100644 --- a/ruoyi-ui/package-lock.json +++ b/ruoyi-ui/package-lock.json @@ -9,6 +9,7 @@ "version": "3.8.5", "license": "MIT", "dependencies": { + "@eyevinn/webrtc-player": "^0.12.0", "@riophae/vue-treeselect": "0.4.0", "axios": "0.24.0", "clipboard": "2.0.8", @@ -1803,6 +1804,25 @@ "node": ">=6.9.0" } }, + "node_modules/@dailymotion/vast-client": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@dailymotion/vast-client/-/vast-client-4.0.1.tgz", + "integrity": "sha512-oRUCc06bWdX/1f2Eha/od5WCj+MLHiD6rgyAudgjOUyWXhCcbkUTZeejBSQsLft0nFnd+5nrDqGkBD8mrEVd/Q==", + "dependencies": { + "@xmldom/xmldom": "^0.8.3" + }, + "engines": { + "node": ">=12.22.1" + } + }, + "node_modules/@dailymotion/vmap": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@dailymotion/vmap/-/vmap-3.3.1.tgz", + "integrity": "sha512-0+JbHbK/ePKtQYAyrZWr7q/ec2hA355hOm5qwlNUt175ml6IBqKsSSjpz9cLe+0sYCKZGega7ED6gc+uoR5pbQ==", + "engines": { + "node": ">=12.22.1" + } + }, "node_modules/@eslint/eslintrc": { "version": "0.2.2", "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", @@ -1866,6 +1886,53 @@ "engines": { "node": ">=8" } + }, + "node_modules/@eyevinn/csai-manager": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@eyevinn/csai-manager/-/csai-manager-0.1.2.tgz", + "integrity": "sha512-ZehCxXlSIHF5Ej1n/WZEaLa6sLIH5zrE1ZB71yyT/KbFoeDsDDoo+jw61xzzT+pKBb4vNBtKQRgaVDGZdT2L/g==", + "dependencies": { + "@dailymotion/vast-client": "^4.0.0", + "@dailymotion/vmap": "^3.3.0", + "@eyevinn/video-event-filter": "^2.0.0", + "mitt": "^3.0.0" + } + }, + "node_modules/@eyevinn/csai-manager/node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/@eyevinn/video-event-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eyevinn/video-event-filter/-/video-event-filter-2.0.0.tgz", + "integrity": "sha512-S5pECmymqg7WqlAeerhtPVEFxWhLY3cz3DTuhuljZreVDLnEBV6/DlWI6SWDnKdpDJMgD6VjPfaRJssmGatNBg==", + "dependencies": { + "mitt": "^2.1.0" + } + }, + "node_modules/@eyevinn/video-event-filter/node_modules/mitt": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-2.1.0.tgz", + "integrity": "sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==" + }, + "node_modules/@eyevinn/webrtc-player": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eyevinn/webrtc-player/-/webrtc-player-0.12.0.tgz", + "integrity": "sha512-xzb0wl/wVmuzv4yvOF3+fUtvv14oj9+pQ0Va0CTBAz2VYRsVdqtDacwq8aMolfsDqdwIyouj5Qji5XWz9tdW3A==", + "dependencies": { + "@eyevinn/csai-manager": "^0.1.2", + "@eyevinn/whpp-client": "^0.1.2", + "events": "^3.3.0" + }, + "engines": { + "node": ">=18.15.0" + } + }, + "node_modules/@eyevinn/whpp-client": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@eyevinn/whpp-client/-/whpp-client-0.1.2.tgz", + "integrity": "sha512-Mau11ykVIZudy+7Qz2tJZbV2cuj8Un7eT2QRBGFA42RPL8djfEi/RIZ+6b9C1Bc1EAppl26zoh28D8/KstFioQ==" }, "node_modules/@gar/promisify": { "version": "1.1.3", @@ -3057,6 +3124,14 @@ "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" } }, "node_modules/@xtuc/ieee754": { @@ -6936,7 +7011,6 @@ "version": "3.3.0", "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, "engines": { "node": ">=0.8.x" } @@ -19138,6 +19212,19 @@ "to-fast-properties": "^2.0.0" } }, + "@dailymotion/vast-client": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@dailymotion/vast-client/-/vast-client-4.0.1.tgz", + "integrity": "sha512-oRUCc06bWdX/1f2Eha/od5WCj+MLHiD6rgyAudgjOUyWXhCcbkUTZeejBSQsLft0nFnd+5nrDqGkBD8mrEVd/Q==", + "requires": { + "@xmldom/xmldom": "^0.8.3" + } + }, + "@dailymotion/vmap": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@dailymotion/vmap/-/vmap-3.3.1.tgz", + "integrity": "sha512-0+JbHbK/ePKtQYAyrZWr7q/ec2hA355hOm5qwlNUt175ml6IBqKsSSjpz9cLe+0sYCKZGega7ED6gc+uoR5pbQ==" + }, "@eslint/eslintrc": { "version": "0.2.2", "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", @@ -19188,6 +19275,54 @@ "dev": true } } + }, + "@eyevinn/csai-manager": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@eyevinn/csai-manager/-/csai-manager-0.1.2.tgz", + "integrity": "sha512-ZehCxXlSIHF5Ej1n/WZEaLa6sLIH5zrE1ZB71yyT/KbFoeDsDDoo+jw61xzzT+pKBb4vNBtKQRgaVDGZdT2L/g==", + "requires": { + "@dailymotion/vast-client": "^4.0.0", + "@dailymotion/vmap": "^3.3.0", + "@eyevinn/video-event-filter": "^2.0.0", + "mitt": "^3.0.0" + }, + "dependencies": { + "mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + } + } + }, + "@eyevinn/video-event-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eyevinn/video-event-filter/-/video-event-filter-2.0.0.tgz", + "integrity": "sha512-S5pECmymqg7WqlAeerhtPVEFxWhLY3cz3DTuhuljZreVDLnEBV6/DlWI6SWDnKdpDJMgD6VjPfaRJssmGatNBg==", + "requires": { + "mitt": "^2.1.0" + }, + "dependencies": { + "mitt": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-2.1.0.tgz", + "integrity": "sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==" + } + } + }, + "@eyevinn/webrtc-player": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eyevinn/webrtc-player/-/webrtc-player-0.12.0.tgz", + "integrity": "sha512-xzb0wl/wVmuzv4yvOF3+fUtvv14oj9+pQ0Va0CTBAz2VYRsVdqtDacwq8aMolfsDqdwIyouj5Qji5XWz9tdW3A==", + "requires": { + "@eyevinn/csai-manager": "^0.1.2", + "@eyevinn/whpp-client": "^0.1.2", + "events": "^3.3.0" + } + }, + "@eyevinn/whpp-client": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@eyevinn/whpp-client/-/whpp-client-0.1.2.tgz", + "integrity": "sha512-Mau11ykVIZudy+7Qz2tJZbV2cuj8Un7eT2QRBGFA42RPL8djfEi/RIZ+6b9C1Bc1EAppl26zoh28D8/KstFioQ==" }, "@gar/promisify": { "version": "1.1.3", @@ -20196,6 +20331,11 @@ "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } + }, + "@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==" }, "@xtuc/ieee754": { "version": "1.2.0", @@ -23435,8 +23575,7 @@ "events": { "version": "3.3.0", "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, "eventsource": { "version": "2.0.2", diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index b133df5..38cb85c 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -36,6 +36,7 @@ "url": "https://gitee.com/y_project/RuoYi-Vue.git" }, "dependencies": { + "@eyevinn/webrtc-player": "^0.12.0", "@riophae/vue-treeselect": "0.4.0", "axios": "0.24.0", "clipboard": "2.0.8", -- Gitblit v1.9.3