<!DOCTYPE html>
|
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
<head>
|
<meta charset="UTF-8">
|
<title>测试页</title>
|
<script th:src="@{/js/jquery-3.6.4.min.js}"></script>
|
<script th:src="@{/js/adapter.min.js}"></script>
|
<script th:src="@{/js/webrtcstreamer.js}"></script>
|
<link rel="stylesheet" th:href="@{/css/bootstrap.css}"/>
|
<script th:src="@{/js/bootstrap.js}"></script>
|
<style>
|
.top-buffer {
|
margin-top: 10px;
|
}
|
</style>
|
<body>
|
<div class="container">
|
<div class="row ">
|
<div class="dropdown">
|
相机id:<select id="select">
|
</select>
|
</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="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 ">
|
<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="请输入P值"/>
|
</div>
|
<div class="input-group">
|
<span class="input-group-addon">T值:</span>
|
<input id="t" class="form-control" placeholder="请输入T值"/>
|
</div>
|
<div class="input-group">
|
<span class="input-group-addon">Z值:</span>
|
<input id="z" class="form-control" placeholder="请输入Z值"/>
|
</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",
|
type: "get",
|
success: function (data) {
|
console.log(data);
|
var arr = data.data;
|
for (var i = 0; i < arr.length; i++) {
|
console.log(arr[i].id);
|
var camera = {
|
type: arr[i].gdtype,
|
ipaddr: arr[i].ip,
|
username: arr[i].username,
|
password: arr[i].password,
|
port: arr[i].rtspPort,
|
longitude: arr[i].longitude,
|
latitude: arr[i].latitude,
|
altitude: arr[i].altitude
|
};
|
cameraMap.set(arr[i].id, camera);
|
//先创建好select里面的option元素
|
var option = document.createElement("option");
|
//给option的text赋值,这就是你点开下拉框能够看到的东西
|
$(option).text(arr[i].id);
|
//获取select 下拉框对象,并将option添加进select
|
$('#select').append(option);
|
}
|
}
|
})
|
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) {
|
console.log(data);
|
token = data.token;
|
}
|
})
|
// 初始化内容
|
console.log(cameraMap);
|
}
|
//云台上下左右
|
$("#up").mousedown(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 2;
|
var enable = true;
|
commondMethod(url, code, enable);
|
|
})
|
$("#up").mouseup(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 2;
|
var enable = false;
|
commondMethod(url, code, enable);
|
})
|
$("#down").mousedown(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 8;
|
var enable = true;
|
commondMethod(url, code, enable);
|
})
|
$("#down").mouseup(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 8;
|
var enable = false;
|
commondMethod(url, code, enable);
|
})
|
$("#left").mousedown(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 4;
|
var enable = true;
|
commondMethod(url, code, enable);
|
})
|
$("#left").mouseup(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 4;
|
var enable = false;
|
commondMethod(url, code, enable);
|
})
|
$("#right").mousedown(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 6;
|
var enable = true;
|
commondMethod(url, code, enable);
|
})
|
$("#right").mouseup(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 6;
|
var enable = false;
|
commondMethod(url, code, enable);
|
})
|
//变倍
|
$("#controlZoomIn").mousedown(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 10;
|
var enable = true;
|
commondMethod(url, code, enable);
|
})
|
$("#controlZoomIn").mouseup(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 10;
|
var enable = false;
|
commondMethod(url, code, enable);
|
})
|
$("#controlZoomOut").mousedown(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 11;
|
var enable = true;
|
commondMethod(url, code, enable);
|
})
|
$("#controlZoomOut").mouseup(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 11;
|
var enable = false;
|
commondMethod(url, code, enable);
|
})
|
//变焦
|
$("#controlFocusNear").mousedown(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 12;
|
var enable = true;
|
commondMethod(url, code, enable);
|
})
|
$("#controlFocusNear").mouseup(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 12;
|
var enable = false;
|
commondMethod(url, code, enable);
|
})
|
$("#controlFocusFar").mousedown(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 13;
|
var enable = true;
|
commondMethod(url, code, enable);
|
})
|
$("#controlFocusFar").mouseup(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 13;
|
var enable = false;
|
commondMethod(url, code, enable);
|
})
|
//光圈
|
$("#controlIrisOpen").mousedown(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 14;
|
var enable = true;
|
commondMethod(url, code, enable);
|
})
|
$("#controlIrisOpen").mouseup(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 14;
|
var enable = false;
|
commondMethod(url, code, enable);
|
})
|
$("#controlIrisClose").mousedown(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 15;
|
var enable = true;
|
commondMethod(url, code, enable);
|
})
|
$("#controlIrisClose").mouseup(function () {
|
var url = "../hik/PTZControlWithSpeed";
|
var code = 15;
|
var enable = false;
|
commondMethod(url, code, enable);
|
})
|
|
$("#setPreset").click(function () {
|
cameraId = $('#select option:selected').val();
|
opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "presetIndex": 1};
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/setPreset",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(opt),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
})
|
$("#gotoPreset").click(function () {
|
cameraId = $('#select option:selected').val();
|
opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "presetIndex": 1};
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/gotoPreset",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(opt),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
})
|
$("#getPTZ").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/getPTZ",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(opt),
|
success: function (datas) {
|
console.log(datas);
|
$("#p").val(datas.data.p);
|
$("#t").val(datas.data.t);
|
$("#z").val(datas.data.z);
|
}
|
})
|
})
|
$("#setPTZ").click(function () {
|
cameraId = $('#select option:selected').val();
|
var p = $('#p').val();
|
var t = $('#t').val();
|
var z = $('#z').val();
|
//定义一个带有Map字段的实体对象
|
var myEntity = {
|
chanNo: 1,
|
cameraId: cameraId,
|
ptzMap: {
|
p: p,
|
t: t,
|
z: z
|
}
|
};
|
console.log(opt)
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/setPTZ",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(myEntity),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
})
|
$("#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();
|
//定义一个带有Map字段的实体对象
|
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, "chanNo": 1};
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/setZeroPTZ",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(opt),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
})
|
$("#WiperPwron").click(function () {
|
cameraId = $('#select option:selected').val();
|
opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "enable": true, "code": 16};
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/PTZControlWithSpeed",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(opt),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
})
|
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};
|
if (defogflag) {
|
$(this).text("关闭透雾");
|
defogflag = false;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/defogcfg",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optOpen),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
} else {
|
$(this).text("开启透雾");
|
defogflag = true;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/defogcfg",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optClose),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
}
|
|
})
|
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};
|
if (infrareflag) {
|
$(this).text("关闭红外");
|
infrareflag = false;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/infrarecfg",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optOpen),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
} else {
|
|
$(this).text("开启红外");
|
infrareflag = true;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/infrarecfg",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optClose),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
}
|
})
|
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};
|
if (focusModeflag) {
|
$(this).text("自动聚焦");
|
focusModeflag = false;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/focusMode",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optOpen),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
} else {
|
$(this).text("手动聚焦");
|
focusModeflag = true;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/focusMode",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optClose),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
}
|
})
|
$("#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, "chanNo": 1, "enable": true};
|
optClose = {"cameraId": cameraId, "chanNo": 1, "enable": false};
|
if (heateRpwronflag) {
|
$(this).text("关闭云台加热");
|
heateRpwronflag = false;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/heateRpwron",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optOpen),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
} else {
|
$(this).text("开启云台加热");
|
heateRpwronflag = true;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/heateRpwron",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optClose),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
}
|
})
|
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};
|
if (CameraDeicingflag) {
|
$(this).text("关闭镜头加热");
|
CameraDeicingflag = false;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json'
|
},
|
url: "../hik/cameraDeicing",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optOpen),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
} else {
|
$(this).text("开启镜头加热");
|
CameraDeicingflag = true;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/cameraDeicing",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optClose),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
}
|
})
|
$("#realCutPic").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/captureJPEGPicture",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(opt),
|
success: function (data) {
|
console.log(data.data);
|
$("#imgContainer").attr("src", "data:image/png;base64," + data.data);
|
}
|
})
|
})
|
$("#saveCutPic").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/picCutCate",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(opt),
|
success: function (data) {
|
console.log(data.data);
|
$('#imgContainer').attr('src', data.data);
|
}
|
})
|
})
|
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};
|
if (recordflag) {
|
$(this).text("停止录像");
|
recordflag = false;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/record",
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(optOpen),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
} else {
|
$(this).text("开始录像");
|
recordflag = true;
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: "../hik/record",
|
dataType: "json",
|
data: JSON.stringify(optClose),
|
type: "post",
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
}
|
})
|
|
var cameraMap = new Map();
|
|
/*云台公共方法*/
|
function commondMethod(url, code, enable) {
|
cameraId = $('#select option:selected').val();
|
opt = {"cameraId": cameraId, "chanNo": 1, "speed": 8, "enable": enable, "code": code};
|
$.ajax({
|
headers: {
|
'Accept': 'application/json',
|
'Content-Type': 'application/json',
|
'Authorization': token
|
},
|
url: url,
|
type: "post",
|
dataType: "json",
|
data: JSON.stringify(opt),
|
success: function (data) {
|
console.log(data);
|
}
|
})
|
}
|
|
let webRtcServer = null;
|
let videoMap = new Map();
|
$('video').click(function (e) {
|
let ID = e.target.id;//获取当前点击事件的元素
|
console.log(ID);
|
if (videoMap.get(ID) != null) {
|
closeVideo(ID, videoMap.get(ID));
|
} else {
|
var cameraId = $('#select option:selected').val();
|
let camera = cameraMap.get(cameraId);
|
console.log(camera);
|
if (camera.type == "ys") {
|
realViewYs("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port);
|
} else if (camera.type == "dh") {
|
realViewDh("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port);
|
} else {
|
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://192.168.1.227:8000");
|
let rtspUrl = "rtsp://" + username + ":" + password + "@" + ipaddr + ":" + port + "/ch1/main/av_stream";
|
let option = "rtptransport=tcp";
|
console.log("rtsp地址:" + rtspUrl);
|
webRtcServer.connect(rtspUrl, null, option, null);
|
videoMap.set(elem, webRtcServer);
|
}
|
|
//预览大华相机
|
function realViewDh(serverip, elem, username, password, ipaddr, port) {
|
webRtcServer = new WebRtcStreamer(elem, "http://" + serverip + ":8000");
|
let rtspUrl = "rtsp://" + username + ":" + password + "@" + ipaddr + ":" + port + "/cam/realmonitor?channel=1&subtype=0";
|
let option = "rtptransport=tcp";
|
console.log("rtsp地址:" + rtspUrl);
|
|
webRtcServer.connect(rtspUrl, null, option, null);
|
videoMap.set(elem, webRtcServer);
|
}
|
|
//预览宇视相机
|
function realViewYs(serverip, elem, username, password, ipaddr, port) {
|
webRtcServer = new WebRtcStreamer(elem, "http://" + serverip + ":8000");
|
let rtspUrl = "rtsp://" + username + ":" + password + "@" + ipaddr + ":" + port + "/media/video1/multicast";
|
console.log("rtsp地址:" + rtspUrl);
|
let option = "rtptransport=tcp";
|
webRtcServer.connect(rtspUrl, null, option, null);
|
videoMap.set(elem, webRtcServer);
|
}
|
|
function closeVideo(id, webrtc) {
|
webrtc.disconnect();
|
videoMap.delete(id);
|
}
|
|
//页面退出时销毁
|
window.onbeforeunload = function () {
|
webRtcServer.disconnect();
|
}
|
</script>
|
</body>
|
</html>
|