From a7638a68f1b1f7d4a829fb02824c7247bbc476a6 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期六, 25 五月 2024 15:08:09 +0800 Subject: [PATCH] 适配海康NVR --- ard-work/src/main/resources/templates/test.html | 224 ++++++++++++++++++++++++++++++++------------ ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java | 53 ++++++---- ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java | 1 ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java | 1 server/mediamtx/mediamtx.yml | 4 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java | 4 6 files changed, 197 insertions(+), 90 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java b/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java index a8cf456..696247d 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java @@ -73,6 +73,7 @@ /** * 鍏夌數绫诲瀷 + * 0-灏忓厜鐢� 1-澶у厜鐢� 2-缁堢NVR 3-瓒呰剳 */ @Excel(name = "鍏夌數绫诲瀷") private String gdtype; diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java index 6149416..d35b60d 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java @@ -56,13 +56,13 @@ private SysDeptMapper sysDeptMapper; @Resource private RedisCache redisCache; - @Autowired + @Resource private ISysDeptService deptService; @Resource private ArdChannelMapper ardChannelMapper; @Resource private IVtduService vtduService; - @Autowired + @Resource protected Validator validator; @PostConstruct diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java index c9c51f8..7efaa05 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/common/SdkErrorCodeEnum.java @@ -12,6 +12,7 @@ NET_DVR_PASSWORD_ERROR(1, "鐢ㄦ埛鍚嶅瘑鐮侀敊璇�傛敞鍐屾椂杈撳叆鐨勭敤鎴峰悕鎴栬�呭瘑鐮侀敊璇�"), NET_DVR_NOINIT(3, "SDK鏈垵濮嬪寲"), + NET_DVR_CHANNEL_ERROR(4, "閫氶亾鍙烽敊璇�"), NET_DVR_NETWORK_FAIL_CONNECT(7, "杩炴帴璁惧澶辫触銆傝澶囦笉鍦ㄧ嚎鎴栫綉缁滃師鍥犲紩璧风殑杩炴帴瓒呮椂绛�"), NET_DVR_NETWORK_SEND_ERROR(8, "鍚戣澶囧彂閫佸け璐�"), NET_DVR_NETWORK_RECV_TIMEOUT(10, "浠庤澶囨帴鏀舵暟鎹秴鏃�"), diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java index 5c9587f..3b0c5ce 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java @@ -149,8 +149,14 @@ camera.setLoginId(lUserID); camera.setState("1"); - camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum); - camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan); + int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum; + int startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1; + if (camera.getGdtype().equals("2")) { + chanNum = m_strDeviceInfo.struDeviceV30.byIPChanNum; + startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan; + } + camera.setChanNum(chanNum); + camera.setStartDChan(startDchan); //鑾峰彇鏈�鏂伴�氶亾 List<ArdChannel> cameraChannelList = getIPChannelInfo(camera); if (cameraChannelList.size() > 0) { @@ -260,8 +266,14 @@ camera.setLoginId(lUserID); camera.setState("1"); - camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum); - camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan); + int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum; + int startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1; + if (camera.getGdtype().equals("2")) { + chanNum = m_strDeviceInfo.struDeviceV30.byIPChanNum; + startDchan = m_strDeviceInfo.struDeviceV30.byStartDChan; + } + camera.setChanNum(chanNum); + camera.setStartDChan(startDchan); //鑾峰彇鏈�鏂伴�氶亾 List<ArdChannel> cameraChannelList = getIPChannelInfo(camera); @@ -1249,8 +1261,8 @@ @Override public AjaxResult controlDefogcfg(CameraCmd cmd) { String cameraId = cmd.getCameraId(); + Integer chanNo=cmd.getChanNo(); boolean enable = cmd.isEnable(); - Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return AjaxResult.warn("璁惧鏈櫥褰�"); } @@ -1258,10 +1270,10 @@ NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX(); Pointer point = struCameraParam.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); - boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size(), ibrBytesReturned); + boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, chanNo, point, struCameraParam.size(), ibrBytesReturned); if (!b_GetCameraParam) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + log.error("鑾峰彇鍓嶇鍙傛暟澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.warn("鑾峰彇鍓嶇鍙傛暟澶辫触:" + SdkErrorCodeEnum.getDescByCode(code) + "(" + code + ")"); } struCameraParam.read(); @@ -1276,10 +1288,10 @@ } struCameraParam.struDefogCfg = defogcfg; struCameraParam.write(); - boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size()); + boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, chanNo, point, struCameraParam.size()); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); - log.error("鍒囨崲閫忛浘澶辫触: errorCode" + code + " errorInfo" + SdkErrorCodeEnum.getDescByCode(code)); + log.error("鍒囨崲閫忛浘澶辫触: errorCode:" + code + " errorInfo:" + SdkErrorCodeEnum.getDescByCode(code)); return AjaxResult.warn("鍒囨崲閫忛浘澶辫触:" + SdkErrorCodeEnum.getDescByCode(code) + "(" + code + ")"); } log.debug("鍒囨崲閫忛浘鎴愬姛"); @@ -1610,7 +1622,7 @@ public String record(CameraCmd cmd) { try { String cameraId = cmd.getCameraId(); - Integer channelNum = cmd.getChanNo(); + Integer chanNo = cmd.getChanNo(); String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4"); boolean enable = cmd.isEnable(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { @@ -1620,7 +1632,7 @@ //寮哄埗I甯х粨鏋勪綋瀵硅薄 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //鏂板缓缁撴瀯浣撳璞� netDvrIFrame.read(); - netDvrIFrame.dwChannel = channelNum;//鍥犱负涓婃枃浠g爜涓缃簡閫氶亾鍙凤紝鎸夌収涓婃枃涓殑璁剧疆 + netDvrIFrame.dwChannel = chanNo;//鍥犱负涓婃枃浠g爜涓缃簡閫氶亾鍙凤紝鎸夌収涓婃枃涓殑璁剧疆 netDvrIFrame.byStreamType = 0; netDvrIFrame.dwSize = netDvrIFrame.size(); netDvrIFrame.write(); @@ -1630,7 +1642,7 @@ //棰勮鍙傛暟 NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO(); previewinfo.read(); - previewinfo.lChannel = channelNum; + previewinfo.lChannel = chanNo; previewinfo.dwStreamType = 0;//鐮佹祦绫诲瀷锛�0-涓荤爜娴侊紝1-瀛愮爜娴侊紝2-涓夌爜娴侊紝3-铏氭嫙鐮佹祦锛屼互姝ょ被鎺� previewinfo.dwLinkMode = 0;//杩炴帴鏂瑰紡锛�0-TCP鏂瑰紡锛�1-UDP鏂瑰紡锛�2-澶氭挱鏂瑰紡锛�3-RTP鏂瑰紡锛�4-RTP/RTSP锛�5-RTP/HTTP锛�6-HRUDP锛堝彲闈犱紶杈擄級锛�7-RTSP/HTTPS锛�8-NPQ previewinfo.hPlayWnd = null;//鎾斁绐楀彛鐨勫彞鏌勶紝涓篘ULL琛ㄧず涓嶈В鐮佹樉绀恒�� @@ -1653,6 +1665,7 @@ return ""; } log.debug("褰曞儚寮�濮�"); + } else { if (GlobalVariable.previewMap.containsKey(cameraId)) { Integer lRealHandle = GlobalVariable.previewMap.get(cameraId); @@ -1835,14 +1848,9 @@ //鑾峰彇IP閫氶亾 public List<ArdChannel> getIPChannelInfo(ArdCameras camera) { - //鑾峰彇閫氶亾 List<ArdChannel> channelList = new ArrayList<>(); try { - if (camera.getGdtype().equals("3")) { - camera.setChanNum(64);//瓒呰剳鑾峰彇鍦ㄧ嚎閫氶亾鏁� - camera.setStartDChan(0);//瓒呰剳鍒濆閫氶亾涓�0 - } IntByReference ibrBytesReturned = new IntByReference(0);//鑾峰彇IP鎺ュ叆閰嶇疆鍙傛暟 HCNetSDK.NET_DVR_IPPARACFG_V40 m_strIpparaCfg = new HCNetSDK.NET_DVR_IPPARACFG_V40(); m_strIpparaCfg.write(); @@ -1853,12 +1861,12 @@ //log.debug("璧峰鏁板瓧閫氶亾鍙凤細" + m_strIpparaCfg.dwStartDChan);//m_strIpparaCfg.dwDChanNum for (int iChannum = 0; iChannum < camera.getChanNum(); iChannum++) { ArdChannel ardChannel = new ArdChannel(); - int channum = iChannum + camera.getStartDChan() + 1; + int chanNo = iChannum + camera.getStartDChan(); HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40(); strPicCfg.dwSize = strPicCfg.size(); strPicCfg.write(); Pointer pStrPicCfg = strPicCfg.getPointer(); - NativeLong lChannel = new NativeLong(channum); + NativeLong lChannel = new NativeLong(chanNo); IntByReference pInt = new IntByReference(0); boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(), pStrPicCfg, strPicCfg.size(), pInt); @@ -1872,11 +1880,12 @@ m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.read(); int channel = m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPID + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPIDHigh * 256; String channelName = new String(strPicCfg.sChanName, "GBK").trim(); + channelName = channelName.equals("") ? "閫氶亾" + chanNo : channelName; ardChannel.setDeviceId(camera.getId()); ardChannel.setName(channelName); - ardChannel.setChanNo(channum); - if (camera.getGdtype().equals("3")) { - //瓒呰剳鍙幏鍙栧湪绾块�氶亾 + ardChannel.setChanNo(chanNo); + if (camera.getGdtype().equals("3") || camera.getGdtype().equals("2")) { + //NVR鍙幏鍙栧湪绾块�氶亾 if (m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byEnable == 1) { //log.debug("IP閫氶亾" + channum + "鍦ㄧ嚎"); channelList.add(ardChannel); diff --git a/ard-work/src/main/resources/templates/test.html b/ard-work/src/main/resources/templates/test.html index 53fbf60..6c967e0 100644 --- a/ard-work/src/main/resources/templates/test.html +++ b/ard-work/src/main/resources/templates/test.html @@ -10,22 +10,23 @@ .top-buffer { margin-top: 10px; } - .container { border: 2px solid #1b6d85; - padding: 20px; + padding: 15px; } </style> <body> <div class="container"> - <div class="row "> - <div class="col-md-12"> - 鐩告満id锛�<select id="select" style="width: 330px;"> - </select> - </div> - </div> <div class="row"> <div class="col-md-5"> + <div class="row top-buffer"> + 璁惧锛�<select id="selectDev" style="width: 330px;"> + </select> + </div> + <div class="row top-buffer"> + 閫氶亾锛�<select id="selectChn" style="width: 330px;"> + </select> + </div> <div class="row top-buffer"> <div class="col-md-1 col-md-offset-1"> <button id="up" type="button" class="btn btn-primary">涓�</button> @@ -125,6 +126,9 @@ <div class="col-md-6"> <div class="row"> <div class="row top-buffer"> + <button id="preview" type="button" class="btn btn-primary">棰勮</button> + </div> + <div class="row top-buffer"> <video id="video" muted autoplay loop controls style="width: 100%; height: 360px; object-fit: fill; border: 2px solid #3498db;"/> </div> @@ -137,10 +141,30 @@ </div> </div> <script th:inline="javascript"> - - var cameraId, opt, optOpen, optClose, token; + var cameraId, chanNo,opt, optOpen, optClose, token; window.onload = function () { console.log(RTCRtpReceiver.getCapabilities('video').codecs) + opt = {"username": "admin", "password": "admin123"}; + $.ajax({ + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + url: "../login", + type: "post", + dataType: "json", + data: JSON.stringify(opt), + success: function (data) { + token = data.token; + getDeviceList();// 鑾峰彇璁惧鍒楄〃 + } + }) + // 鍒濆鍖栧唴瀹� + console.log(cameraMap); + } + + //鑾峰彇璁惧 + function getDeviceList() { $.ajax({ url: "../cameraSdk/list", type: "get", @@ -149,6 +173,7 @@ var arr = data.data; for (var i = 0; i < arr.length; i++) { console.log(arr[i].id); + console.log(arr[i].name) var camera = { name: arr[i].name, factory: arr[i].factory, @@ -162,31 +187,83 @@ }; cameraMap.set(arr[i].id, camera); //鍏堝垱寤哄ソselect閲岄潰鐨刼ption鍏冪礌 - var option = document.createElement("option"); + var option = $("<option>"); //缁檕ption鐨則ext璧嬪��,杩欏氨鏄綘鐐瑰紑涓嬫媺妗嗚兘澶熺湅鍒扮殑涓滆タ - $(option).text(arr[i].id); + $(option).val(arr[i].id); + $(option).text(arr[i].name); //鑾峰彇select 涓嬫媺妗嗗璞�,骞跺皢option娣诲姞杩泂elect - $('#select').append(option); + $('#selectDev').append(option); } + $("#selectDev").trigger("change"); } }) - opt = {"username": "admin", "password": "admin123"}; + } + + //閫夋嫨璁惧 + $("#selectDev").change(function () { + // 鍦ㄨ繖閲屽鐞嗛�夋嫨浜嬩欢 + var cameraId = $(this).find("option:selected").val(); + var name = $(this).find("option:selected").text(); + getChannelList(cameraId); + console.log("閫夋嫨浜嗭細" + cameraId + "---" + name); + }); + + //鑾峰彇閫氶亾 + function getChannelList(cameraId) { + console.log(cameraId) + var myEntity = { + deviceId: cameraId, + pageNum: 1, + pageSize: 64 + } + var queryString = $.param(myEntity); $.ajax({ headers: { 'Accept': 'application/json', - 'Content-Type': 'application/json' + 'Content-Type': 'application/json', + 'Authorization': token }, - url: "../login", - type: "post", - dataType: "json", - data: JSON.stringify(opt), + url: "../device/channel/list?" + queryString, + type: "get", success: function (data) { - token = data.token; + console.log(data); + var arr = data.rows; + $('#selectChn').empty(); + for (var i = 0; i < arr.length; i++) { + console.log(arr[i].chanNo); + console.log(arr[i].name); + //鍏堝垱寤哄ソselect閲岄潰鐨刼ption鍏冪礌 + var option = document.createElement("option"); + //缁檕ption鐨則ext璧嬪��,杩欏氨鏄綘鐐瑰紑涓嬫媺妗嗚兘澶熺湅鍒扮殑涓滆タ + $(option).text(arr[i].name); + $(option).val(arr[i].chanNo); + //鑾峰彇select 涓嬫媺妗嗗璞�,骞跺皢option娣诲姞杩泂elect + $('#selectChn').append(option); + } } }) - // 鍒濆鍖栧唴瀹� - console.log(cameraMap); } + + //棰勮 + $('#preview').click(() => { + var cameraId = $('#selectDev option:selected').val(); + var chanNo = $('#selectChn option:selected').val(); + console.log(cameraId + " " + chanNo) + $.ajax({ + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': token + }, + url: "../vtdu/media/" + cameraId + "_" + chanNo, + type: "get", + dataType: "json", + success: function (data) { + realView(data.data.webrtcUrl + "/", "video"); + } + }) + }); + //浜戝彴涓婁笅宸﹀彸 $("#up").mousedown(function () { var url = "../cameraSdk/PTZControlWithSpeed"; @@ -314,8 +391,9 @@ }) $("#setPreset").click(function () { - cameraId = $('#select option:selected').val(); - opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "presetIndex": 1}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + opt = {"cameraId": cameraId, "chanNo": chanNo, "speed": 8, "presetIndex": 1}; $.ajax({ headers: { 'Accept': 'application/json', @@ -332,8 +410,9 @@ }) }) $("#gotoPreset").click(function () { - cameraId = $('#select option:selected').val(); - opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "presetIndex": 1}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + opt = {"cameraId": cameraId, "chanNo": chanNo, "speed": 8, "presetIndex": 1}; $.ajax({ headers: { 'Accept': 'application/json', @@ -350,8 +429,9 @@ }) }) $("#getPTZ").click(function () { - cameraId = $('#select option:selected').val(); - opt = {"cameraId": cameraId, "chanNo": 1}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + opt = {"cameraId": cameraId, "chanNo": chanNo}; $.ajax({ headers: { 'Accept': 'application/json', @@ -371,13 +451,14 @@ }) }) $("#setPTZ").click(function () { - cameraId = $('#select option:selected').val(); + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); var p = $('#p').val(); var t = $('#t').val(); var z = $('#z').val(); //瀹氫箟涓�涓甫鏈塎ap瀛楁鐨勫疄浣撳璞� var myEntity = { - chanNo: 1, + chanNo: chanNo, cameraId: cameraId, ptzMap: { p: p, @@ -402,7 +483,8 @@ }) }) $("#setTargetPostion").click(function () { - cameraId = $('#select option:selected').val(); + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); var camera = cameraMap.get(cameraId); var camP = camera.longitude + ',' + camera.latitude + ',' + camera.altitude; var targetP = $('#targetPostion').val(); @@ -410,7 +492,7 @@ arr = arr.map(item => parseFloat(item)); //瀹氫箟涓�涓甫鏈塎ap瀛楁鐨勫疄浣撳璞� var myEntity = { - chanNo: 1, + chanNo: chanNo, cameraId: cameraId, targetPosition: arr }; @@ -431,8 +513,9 @@ }) }) $("#setZeroPTZ").click(function () { - cameraId = $('#select option:selected').val(); - opt = {"cameraId": cameraId, "chanNo": 1}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + opt = {"cameraId": cameraId, "chanNo": chanNo}; $.ajax({ headers: { 'Accept': 'application/json', @@ -449,8 +532,9 @@ }) }) $("#WiperPwron").click(function () { - cameraId = $('#select option:selected').val(); - opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "enable": true, "code": 16}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + opt = {"cameraId": cameraId, "chanNo": chanNo, "speed": 8, "enable": true, "code": 16}; $.ajax({ headers: { 'Accept': 'application/json', @@ -468,9 +552,10 @@ }) var defogflag = true; $("#Defogcfg").click(function () { - cameraId = $('#select option:selected').val(); - optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true}; - optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + optOpen = {"cameraId": cameraId, "chanNo": chanNo, "enable": true}; + optClose = {"cameraId": cameraId, "chanNo": chanNo, "enable": false}; if (defogflag) { $(this).text("鍏抽棴閫忛浘"); defogflag = false; @@ -510,9 +595,10 @@ }) var infrareflag = true; $("#Infrarecfg").click(function () { - cameraId = $('#select option:selected').val(); - optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true}; - optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + optOpen = {"cameraId": cameraId, "chanNo": chanNo, "enable": true}; + optClose = {"cameraId": cameraId, "chanNo": chanNo, "enable": false}; if (infrareflag) { $(this).text("鍏抽棴绾㈠"); infrareflag = false; @@ -552,9 +638,10 @@ }) var focusModeflag = true; $("#FocusMode").click(function () { - cameraId = $('#select option:selected').val(); - optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true}; - optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + optOpen = {"cameraId": cameraId, "chanNo": chanNo, "enable": true}; + optClose = {"cameraId": cameraId, "chanNo": chanNo, "enable": false}; if (focusModeflag) { $(this).text("鑷姩鑱氱劍"); focusModeflag = false; @@ -592,8 +679,9 @@ } }) $("#getFocusPos").click(function () { - cameraId = $('#select option:selected').val(); - opt = {"cameraId": cameraId, "chanNo": 1}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + opt = {"cameraId": cameraId, "chanNo": chanNo}; $.ajax({ headers: { 'Accept': 'application/json', @@ -612,9 +700,10 @@ }) var heateRpwronflag = true; $("#HeateRpwron").click(function () { - cameraId = $('#select option:selected').val(); - optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true}; - optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + optOpen = {"cameraId": cameraId, "chanNo": chanNo, "enable": true}; + optClose = {"cameraId": cameraId, "chanNo": chanNo, "enable": false}; if (heateRpwronflag) { $(this).text("鍏抽棴浜戝彴鍔犵儹"); heateRpwronflag = false; @@ -653,9 +742,10 @@ }) var CameraDeicingflag = true; $("#CameraDeicing").click(function () { - cameraId = $('#select option:selected').val(); - optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true}; - optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + optOpen = {"cameraId": cameraId, "chanNo": chanNo, "enable": true}; + optClose = {"cameraId": cameraId, "chanNo": chanNo, "enable": false}; if (CameraDeicingflag) { $(this).text("鍏抽棴闀滃ご鍔犵儹"); CameraDeicingflag = false; @@ -693,8 +783,9 @@ } }) $("#realCutPic").click(function () { - cameraId = $('#select option:selected').val(); - opt = {"cameraId": cameraId, "chanNo": 1}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + opt = {"cameraId": cameraId, "chanNo": chanNo}; $.ajax({ headers: { 'Accept': 'application/json', @@ -712,8 +803,9 @@ }) }) $("#saveCutPic").click(function () { - cameraId = $('#select option:selected').val(); - opt = {"cameraId": cameraId, "chanNo": 1}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + opt = {"cameraId": cameraId, "chanNo": chanNo}; $.ajax({ headers: { 'Accept': 'application/json', @@ -735,9 +827,10 @@ }) var recordflag = true; $("#record").click(function () { - cameraId = $('#select option:selected').val(); - optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true}; - optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + optOpen = {"cameraId": cameraId, "chanNo": chanNo, "enable": true}; + optClose = {"cameraId": cameraId, "chanNo": chanNo, "enable": false}; if (recordflag) { $(this).text("鍋滄褰曞儚"); recordflag = false; @@ -779,8 +872,9 @@ /*浜戝彴鍏叡鏂规硶*/ function commondMethod(url, code, enable) { - cameraId = $('#select option:selected').val(); - opt = {"cameraId": cameraId, "chanNo": 1, "speed": 4, "enable": enable, "code": code}; + cameraId = $('#selectDev option:selected').val(); + chanNo = $('#selectChn option:selected').val(); + opt = {"cameraId": cameraId, "chanNo": chanNo, "speed": 4, "enable": enable, "code": code}; $.ajax({ headers: { 'Accept': 'application/json', @@ -798,14 +892,16 @@ } $('video').click(function (e) { - var cameraId = $('#select option:selected').val(); + var cameraId = $('#selectDev option:selected').val(); + var chanNo = $('#selectChn option:selected').val(); + console.log(cameraId + " " + chanNo) $.ajax({ headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': token }, - url: "../vtdu/media/" + cameraId + "_" + 1, + url: "../vtdu/media/" + cameraId + "_" + chanNo, type: "get", dataType: "json", success: function (data) { diff --git a/server/mediamtx/mediamtx.yml b/server/mediamtx/mediamtx.yml index 0d0358e..cbe09e8 100644 --- a/server/mediamtx/mediamtx.yml +++ b/server/mediamtx/mediamtx.yml @@ -225,7 +225,7 @@ webrtcICEInterfaces: [] # List of public IP addresses that are to be used as a host. # This is used typically for servers that are behind 1:1 D-NAT. -webrtcICEHostNAT1To1IPs: [192.168.1.227] +webrtcICEHostNAT1To1IPs: [] # Address of a ICE UDP listener in format host:port. # If filled, ICE traffic will pass through a single UDP port, # allowing the deployment of the server inside a container or behind a NAT. @@ -235,7 +235,7 @@ # allowing the deployment of the server inside a container or behind a NAT. # Using this setting forces usage of the TCP protocol, which is not # optimal for WebRTC. -webrtcICETCPMuxAddress: 192.168.1.227:1234 +webrtcICETCPMuxAddress: 192.168.1.227:19302 ############################################### # Global settings -> SRT -- Gitblit v1.9.3