From cd37af890600186215fd53c0d419c89c562e3e70 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期六, 23 九月 2023 16:02:06 +0800
Subject: [PATCH] 流媒体增加不转码自动按需拉流
---
ard-work/src/main/resources/templates/test.html | 323 ++++++++++++++++++++++++++++++++---------------------
1 files changed, 194 insertions(+), 129 deletions(-)
diff --git a/ard-work/src/main/resources/templates/test.html b/ard-work/src/main/resources/templates/test.html
index f9c520f..25ea102 100644
--- a/ard-work/src/main/resources/templates/test.html
+++ b/ard-work/src/main/resources/templates/test.html
@@ -9,117 +9,130 @@
<link rel="stylesheet" th:href="@{/css/bootstrap.css}"/>
<script th:src="@{/js/bootstrap.js}"></script>
<style>
- .top-buffer { margin-top:10px; }
+ .top-buffer {
+ margin-top: 10px;
+ }
</style>
<body>
<div class="container">
- <div class="row ">
- <div class="dropdown">
- 鐩告満id锛�
- <select id="select">
- </select>
- </div>
+ <div class="row ">
+ <div class="dropdown">
+ 鐩告満id锛�<select id="select">
+ </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>
- </div>
- <div class="col-md-4 col-md-offset-3">
- <div class="btn-group" role="group">
- <button id="controlZoomIn" type="button" class="btn btn-primary">璋冪劍-</button>
- <button id="controlZoomOut" type="button" class="btn btn-primary">璋冪劍+</button>
- </div>
- </div>
+ </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>
</div>
- <div class="row ">
- <div class="col-md-1">
- <button id="left" type="button" class="btn btn-primary">宸�</button>
- </div>
- <div class="col-md-1 col-md-offset-1">
- <button id="right" type="button" class="btn btn-primary">鍙�</button>
- </div>
- <div class="col-md-4 col-md-offset-2">
- <div class="btn-group" role="group">
- <button id="controlFocusNear" type="button" class="btn btn-primary">鑱氱劍-</button>
- <button id="controlFocusFar" type="button" class="btn btn-primary">鑱氱劍+</button>
- </div>
- </div>
- </div>
- <div class="row ">
- <div class="col-md-1 col-md-offset-1">
- <button id="down" type="button" class="btn btn-primary">涓�</button>
- </div>
- <div class="col-md-4 col-md-offset-3">
- <div class="btn-group" role="group">
- <button id="controlIrisOpen" type="button" class="btn btn-primary">鍏夊湀-</button>
- <button id="controlIrisClose" type="button" class="btn btn-primary">鍏夊湀+</button>
- </div>
- </div>
- </div>
- <div class="row top-buffer">
- <div class="input-group">
- <span class="input-group-addon">P鍊硷細</span>
- <input id="p" class="form-control" placeholder="璇疯緭鍏鍊�"/>
- </div>
- <div class="input-group">
- <span class="input-group-addon">T鍊硷細</span>
- <input id="t" class="form-control" placeholder="璇疯緭鍏鍊�"/>
- </div>
- <div class="input-group">
- <span class="input-group-addon">Z鍊硷細</span>
- <input id="z" class="form-control" placeholder="璇疯緭鍏鍊�"/>
- </div>
- </div>
- <div class="row top-buffer">
+ <div class="col-md-4 col-md-offset-3">
<div class="btn-group" role="group">
- <button id="getPTZ" type="button" class="btn btn-default">鑾峰彇ptz</button>
- <button id="setPTZ" type="button" class="btn btn-default">璁剧疆ptz</button>
- <button id="setPreset" type="button" class="btn btn-default">璁鹃缃偣</button>
- <button id="gotoPreset" type="button" class="btn btn-default">璋冮缃偣</button>
- <button id="getZeroPTZ" type="button" class="btn btn-default">璋冪敤闆舵柟浣嶈</button>
- <button id="setZeroPTZ" type="button" class="btn btn-default">璁剧疆闆舵柟浣嶈</button>
- </div>
- </div>
- <div class="row top-buffer">
- <div class="btn-group" role="group">
- <button id="FocusMode" type="button" class="btn btn-default">鎵嬪姩鑱氱劍</button>
- <div id="focusDiv" class="input-group">
- <span class="input-group-addon">鑱氱劍鍊硷細</span>
- <input id="focus" class="form-control" placeholder="鑱氱劍鍊�"/>
- </div>
- <button id="getFocusPos" type="button" class="btn btn-default">鑾峰彇鑱氱劍鍊�</button>
- <button id="setFocusPos" type="button" class="btn btn-default">璁剧疆鑱氱劍鍊�</button>
- </div>
- </div>
- <div class="row top-buffer">
- <div class="btn-group" role="group">
- <button id="WiperPwron" type="button" class="btn btn-default">寮�鍚洦鍒�</button>
- <button id="Defogcfg" type="button" class="btn btn-default">寮�鍚�忛浘</button>
- <button id="Infrarecfg" type="button" class="btn btn-default">寮�鍚孩澶�</button>
- <button id="HeateRpwron" type="button" class="btn btn-default">寮�鍚簯鍙板姞鐑�</button>
- <button id="CameraDeicing" type="button" class="btn btn-default">寮�鍚暅澶村姞鐑�</button>
- </div>
- </div>
- <div class="row top-buffer">
- <div class="btn-group" role="group">
- <button id="voice" type="button" class="btn btn-default">寮�濮嬭闊冲璁�</button>
- <button id="record" type="button" class="btn btn-default">寮�濮嬪綍鍍�</button>
- <button id="realCutPic" type="button" class="btn btn-default">瀹炴椂鎶撳浘</button>
- <button id="saveCutPic" type="button" class="btn btn-default">瀛樺偍鎶撳浘</button>
- </div>
- </div>
- <div class="row top-buffer">
- <div class="col-md-6">
- <img class="thumbnail" id="imgContainer" style="width: 500px; height: 400px;padding: 5px 5px;"/>
- </div>
- <div class="col-md-6">
- <video id="video" muted autoplay loop controls style="width: 800px; height: 100%; object-fit: fill" />
+ <button id="controlZoomIn" type="button" class="btn btn-primary">璋冪劍-</button>
+ <button id="controlZoomOut" type="button" class="btn btn-primary">璋冪劍+</button>
</div>
</div>
</div>
-</body>
-<script th:inline="javascript">
- var cameraId, opt, token;
+ <div class="row ">
+ <div class="col-md-1">
+ <button id="left" type="button" class="btn btn-primary">宸�</button>
+ </div>
+ <div class="col-md-1 col-md-offset-1">
+ <button id="right" type="button" class="btn btn-primary">鍙�</button>
+ </div>
+ <div class="col-md-4 col-md-offset-2">
+ <div class="btn-group" role="group">
+ <button id="controlFocusNear" type="button" class="btn btn-primary">鑱氱劍-</button>
+ <button id="controlFocusFar" type="button" class="btn btn-primary">鑱氱劍+</button>
+ </div>
+ </div>
+ </div>
+ <div class="row ">
+ <div class="col-md-1 col-md-offset-1">
+ <button id="down" type="button" class="btn btn-primary">涓�</button>
+ </div>
+ <div class="col-md-4 col-md-offset-3">
+ <div class="btn-group" role="group">
+ <button id="controlIrisOpen" type="button" class="btn btn-primary">鍏夊湀-</button>
+ <button id="controlIrisClose" type="button" class="btn btn-primary">鍏夊湀+</button>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <div class="row top-buffer">
+ <div class="input-group">
+ <span class="input-group-addon">鐩殑鍧愭爣鍊硷細</span>
+ <input id="targetPostion" class="form-control" placeholder="鐩殑鍧愭爣"/>
+ <button id="setTargetPostion" type="button" class="btn btn-default">鎸囧悜鍧愭爣</button>
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon">P鍊硷細</span>
+ <input id="p" class="form-control" placeholder="璇疯緭鍏鍊�"/>
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon">T鍊硷細</span>
+ <input id="t" class="form-control" placeholder="璇疯緭鍏鍊�"/>
+ </div>
+ <div class="input-group">
+ <span class="input-group-addon">Z鍊硷細</span>
+ <input id="z" class="form-control" placeholder="璇疯緭鍏鍊�"/>
+ </div>
+ </div>
+ <div class="row top-buffer">
+ <div class="btn-group" role="group">
+ <button id="getPTZ" type="button" class="btn btn-default">鑾峰彇ptz</button>
+ <button id="setPTZ" type="button" class="btn btn-default">璁剧疆ptz</button>
+ <button id="setPreset" type="button" class="btn btn-default">璁鹃缃偣</button>
+ <button id="gotoPreset" type="button" class="btn btn-default">璋冮缃偣</button>
+ <button id="getZeroPTZ" type="button" class="btn btn-default">璋冪敤闆舵柟浣嶈</button>
+ <button id="setZeroPTZ" type="button" class="btn btn-default">璁剧疆闆舵柟浣嶈</button>
+ </div>
+ </div>
+ <div class="row top-buffer">
+ <div class="btn-group" role="group">
+ <button id="FocusMode" type="button" class="btn btn-default">鎵嬪姩鑱氱劍</button>
+ <div id="focusDiv" class="input-group">
+ <span class="input-group-addon">鑱氱劍鍊硷細</span>
+ <input id="focus" class="form-control" placeholder="鑱氱劍鍊�"/>
+ </div>
+ <button id="getFocusPos" type="button" class="btn btn-default">鑾峰彇鑱氱劍鍊�</button>
+ <button id="setFocusPos" type="button" class="btn btn-default">璁剧疆鑱氱劍鍊�</button>
+ </div>
+ </div>
+ <div class="row top-buffer">
+ <div class="btn-group" role="group">
+ <button id="WiperPwron" type="button" class="btn btn-default">寮�鍚洦鍒�</button>
+ <button id="Defogcfg" type="button" class="btn btn-default">寮�鍚�忛浘</button>
+ <button id="Infrarecfg" type="button" class="btn btn-default">寮�鍚孩澶�</button>
+ <button id="HeateRpwron" type="button" class="btn btn-default">寮�鍚簯鍙板姞鐑�</button>
+ <button id="CameraDeicing" type="button" class="btn btn-default">寮�鍚暅澶村姞鐑�</button>
+ </div>
+ </div>
+ <div class="row top-buffer">
+ <div class="btn-group" role="group">
+ <button id="voice" type="button" class="btn btn-default">寮�濮嬭闊冲璁�</button>
+ <button id="record" type="button" class="btn btn-default">寮�濮嬪綍鍍�</button>
+ <button id="realCutPic" type="button" class="btn btn-default">瀹炴椂鎶撳浘</button>
+ <button id="saveCutPic" type="button" class="btn btn-default">瀛樺偍鎶撳浘</button>
+ </div>
+ </div>
+ <div class="row top-buffer">
+ <div class="col-md-6">
+ <img class="thumbnail" id="imgContainer" style="width: 500px; height: 300px;"/>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-1"/>
+ <div class="col-md-5">
+ <div class="row top-buffer">
+ <video id="video" muted autoplay loop controls style="width: 800px; height: 100%; object-fit: fill;"/>
+ </div>
+ </div>
+ </div>
+</div>
+<script th:inline="javascript" th:type="module">
+
+ var cameraId, opt, optOpen, optClose, token;
window.onload = function () {
$.ajax({
url: "../hik/list",
@@ -130,11 +143,14 @@
for (var i = 0; i < arr.length; i++) {
console.log(arr[i].id);
var camera = {
- type: arr[i].type,
+ type: arr[i].gdtype,
ipaddr: arr[i].ip,
username: arr[i].username,
password: arr[i].password,
- port: 554
+ port: arr[i].rtspPort,
+ longitude: arr[i].longitude,
+ latitude: arr[i].latitude,
+ altitude: arr[i].altitude
};
cameraMap.set(arr[i].id, camera);
//鍏堝垱寤哄ソselect閲岄潰鐨刼ption鍏冪礌
@@ -292,7 +308,7 @@
$("#setPreset").click(function () {
cameraId = $('#select option:selected').val();
- opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "presetIndex": 1};
+ opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "presetIndex": 1};
$.ajax({
headers: {
'Accept': 'application/json',
@@ -310,7 +326,7 @@
})
$("#gotoPreset").click(function () {
cameraId = $('#select option:selected').val();
- opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "presetIndex": 1};
+ opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "presetIndex": 1};
$.ajax({
headers: {
'Accept': 'application/json',
@@ -328,7 +344,7 @@
})
$("#getPTZ").click(function () {
cameraId = $('#select option:selected').val();
- opt = {"cameraId": cameraId, "channelNum": 1};
+ opt = {"cameraId": cameraId, "chanNo": 1};
$.ajax({
headers: {
'Accept': 'application/json',
@@ -354,7 +370,7 @@
var z = $('#z').val();
//瀹氫箟涓�涓甫鏈塎ap瀛楁鐨勫疄浣撳璞�
var myEntity = {
- channelNum: 1,
+ chanNo: 1,
cameraId: cameraId,
ptzMap: {
p: p,
@@ -378,9 +394,37 @@
}
})
})
+ $("#setTargetPostion").click(function () {
+ cameraId = $('#select option:selected').val();
+ var camera = cameraMap.get(cameraId);
+ var camP = camera.longitude + ',' + camera.latitude + ',' + camera.altitude;
+ var targetP = $('#targetPostion').val();
+ //瀹氫箟涓�涓甫鏈塎ap瀛楁鐨勫疄浣撳璞�
+ var myEntity = {
+ chanNo: 1,
+ cameraId: cameraId,
+ targetPosition: targetP,
+ camPosition: camP,
+ };
+ console.log(myEntity)
+ $.ajax({
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ 'Authorization': token
+ },
+ url: "../hik/setTargetPosition",
+ type: "post",
+ dataType: "json",
+ data: JSON.stringify(myEntity),
+ success: function (data) {
+ console.log(data);
+ }
+ })
+ })
$("#setZeroPTZ").click(function () {
cameraId = $('#select option:selected').val();
- opt = {"cameraId": cameraId, "channelNum": 1};
+ opt = {"cameraId": cameraId, "chanNo": 1};
$.ajax({
headers: {
'Accept': 'application/json',
@@ -398,7 +442,7 @@
})
$("#WiperPwron").click(function () {
cameraId = $('#select option:selected').val();
- opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "enable": true, "code": 16};
+ opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "enable": true, "code": 16};
$.ajax({
headers: {
'Accept': 'application/json',
@@ -417,8 +461,8 @@
var defogflag = true;
$("#Defogcfg").click(function () {
cameraId = $('#select option:selected').val();
- optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
- optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+ optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+ optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
if (defogflag) {
$(this).text("鍏抽棴閫忛浘");
defogflag = false;
@@ -459,8 +503,8 @@
var infrareflag = true;
$("#Infrarecfg").click(function () {
cameraId = $('#select option:selected').val();
- optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
- optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+ optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+ optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
if (infrareflag) {
$(this).text("鍏抽棴绾㈠");
infrareflag = false;
@@ -501,8 +545,8 @@
var focusModeflag = true;
$("#FocusMode").click(function () {
cameraId = $('#select option:selected').val();
- optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
- optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+ optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+ optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
if (focusModeflag) {
$(this).text("鑷姩鑱氱劍");
focusModeflag = false;
@@ -539,11 +583,30 @@
})
}
})
+ $("#getFocusPos").click(function () {
+ cameraId = $('#select option:selected').val();
+ opt = {"cameraId": cameraId, "chanNo": 1};
+ $.ajax({
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ 'Authorization': token
+ },
+ url: "../hik/getFocusPos",
+ type: "post",
+ dataType: "json",
+ data: JSON.stringify(opt),
+ success: function (datas) {
+ console.log(datas);
+ $("#focus").val(datas.data.dwFocus);
+ }
+ })
+ })
var heateRpwronflag = true;
$("#HeateRpwron").click(function () {
cameraId = $('#select option:selected').val();
- optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
- optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+ optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+ optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
if (heateRpwronflag) {
$(this).text("鍏抽棴浜戝彴鍔犵儹");
heateRpwronflag = false;
@@ -583,8 +646,8 @@
var CameraDeicingflag = true;
$("#CameraDeicing").click(function () {
cameraId = $('#select option:selected').val();
- optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
- optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+ optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+ optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
if (CameraDeicingflag) {
$(this).text("鍏抽棴闀滃ご鍔犵儹");
CameraDeicingflag = false;
@@ -622,7 +685,7 @@
})
$("#realCutPic").click(function () {
cameraId = $('#select option:selected').val();
- opt = {"cameraId": cameraId, "channelNum": 1};
+ opt = {"cameraId": cameraId, "chanNo": 1};
$.ajax({
headers: {
'Accept': 'application/json',
@@ -635,13 +698,13 @@
data: JSON.stringify(opt),
success: function (data) {
console.log(data.data);
- $("#imgContainer").attr("src","data:image/png;base64,"+data.data);
+ $("#imgContainer").attr("src", "data:image/png;base64," + data.data);
}
})
})
$("#saveCutPic").click(function () {
cameraId = $('#select option:selected').val();
- opt = {"cameraId": cameraId, "channelNum": 1};
+ opt = {"cameraId": cameraId, "chanNo": 1};
$.ajax({
headers: {
'Accept': 'application/json',
@@ -661,8 +724,8 @@
var recordflag = true;
$("#record").click(function () {
cameraId = $('#select option:selected').val();
- optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true};
- optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false};
+ optOpen = {"cameraId": cameraId, "chanNo": 1, "enable": true};
+ optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
if (recordflag) {
$(this).text("鍋滄褰曞儚");
recordflag = false;
@@ -699,12 +762,13 @@
})
}
})
+
var cameraMap = new Map();
/*浜戝彴鍏叡鏂规硶*/
function commondMethod(url, code, enable) {
cameraId = $('#select option:selected').val();
- opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "enable": enable, "code": code};
+ opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "enable": enable, "code": code};
$.ajax({
headers: {
'Accept': 'application/json',
@@ -737,15 +801,15 @@
} else if (camera.type == "dh") {
realViewDh("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port);
} else {
- realViewHik("192.168.1.15", ID, camera.username, camera.password, camera.ipaddr, "21500");
+ realViewHik("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port);
}
}
});
-
//棰勮娴峰悍鐩告満
function realViewHik(serverip, elem, username, password, ipaddr, port) {
- webRtcServer = new WebRtcStreamer(elem, "http://" + serverip + ":8000");
+ // webRtcServer = new WebRtcStreamer(elem, "http://" + serverip + ":8000");
+ webRtcServer = new WebRtcStreamer(elem, "http://192.168.1.227:8000");
let rtspUrl = "rtsp://" + username + ":" + password + "@" + ipaddr + ":" + port + "/ch1/main/av_stream";
let option = "rtptransport=tcp";
console.log("rtsp鍦板潃锛�" + rtspUrl);
@@ -784,4 +848,5 @@
webRtcServer.disconnect();
}
</script>
+</body>
</html>
\ No newline at end of file
--
Gitblit v1.9.3