视频监控
This commit is contained in:
parent
8f0934d97e
commit
723d6a312c
|
|
@ -157,9 +157,9 @@ body {
|
||||||
}
|
}
|
||||||
|
|
||||||
#left-top-two {
|
#left-top-two {
|
||||||
width: 100%;
|
width: 92%;
|
||||||
height: 26%;
|
height: 26%;
|
||||||
justify-content: space-evenly;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
#jj-box,
|
#jj-box,
|
||||||
|
|
@ -307,7 +307,7 @@ body {
|
||||||
/*视频框样式*/
|
/*视频框样式*/
|
||||||
|
|
||||||
.ball-content {
|
.ball-content {
|
||||||
width: 96%;
|
width: 98%;
|
||||||
height: 94%;
|
height: 94%;
|
||||||
margin: 4% 1% 0 1%;
|
margin: 4% 1% 0 1%;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
|
@ -368,4 +368,37 @@ body {
|
||||||
justify-content: end;
|
justify-content: end;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 右侧样式 start */
|
/* 右侧样式 start */
|
||||||
|
|
||||||
|
/* dtree 样式 start */
|
||||||
|
.dtree-nav-item {
|
||||||
|
background: linear-gradient(90deg, rgba(153, 255, 255, 0) 0%, rgba(35, 161, 161, 0.5) 49%, rgba(153, 255, 255, 0) 100%);
|
||||||
|
border-radius: 0px 0px 0px 0px;
|
||||||
|
margin: 10px 0 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dtree-laySimple-item:hover {
|
||||||
|
background: linear-gradient(90deg, rgba(153, 255, 255, 0) 0%, rgba(50, 251, 251, 0.6) 49%, rgba(153, 255, 255, 0) 100%) !important;
|
||||||
|
border-radius: 0px 0px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dtree-laySimple-item-this {
|
||||||
|
background: linear-gradient(90deg, rgba(153, 255, 255, 0) 0%, rgba(50, 251, 251, 0.6) 49%, rgba(153, 255, 255, 0) 100%) !important;
|
||||||
|
border-radius: 0px 0px 0px 0px;
|
||||||
|
color: rgba(50, 251, 251, 0.6) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dtree-laySimple-item cite {
|
||||||
|
font-size: 16px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dtree-laySimple-item:hover cite {
|
||||||
|
color: rgba(50, 251, 251, 0.6) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dtree-laySimple-ficon {
|
||||||
|
font-size: 14px !important;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* dtree 样式 start */
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.9 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 461 KiB |
|
|
@ -1,15 +1,61 @@
|
||||||
let layer, form;
|
let layer, form, util, dtree, videoTree;
|
||||||
let winDom = 'videoPlayer1';
|
let winDom = 'videoPlayer1';
|
||||||
layui.use(['layer', 'form'], function () {
|
layui.config({
|
||||||
|
base: "../../plugin/layui-v2.9.7/layui/dtree/", //此处路径请自行处理, 可以使用绝对路径
|
||||||
|
}).extend({
|
||||||
|
dtree: 'dtree'
|
||||||
|
}).use(['layer', 'form', 'dtree', 'util'], function () {
|
||||||
form = layui.form;
|
form = layui.form;
|
||||||
layer = layui.layer;
|
layer = layui.layer;
|
||||||
$("#voi-photo").niceScroll({ cursorborder: "", cursorcolor: "#c0c4cc", boxzoom: true });
|
dtree = layui.dtree;
|
||||||
$("body").niceScroll({ cursorborder: "", cursorcolor: "#c0c4cc", boxzoom: true });
|
util = layui.util;
|
||||||
console.log("选中的标段编码:" + parent.$('#bidPro').val())
|
|
||||||
initVideo();
|
initVideo();
|
||||||
setTimeout(() => {
|
|
||||||
QXPlayVideo('201115200124261007', '0', winDom)
|
|
||||||
}, 2000);
|
|
||||||
|
|
||||||
loadVideoTree();
|
loadVideoTree();
|
||||||
|
$("body").niceScroll({ cursorborder: "", cursorcolor: "#c0c4cc", boxzoom: true });
|
||||||
|
$("#voi-photo").niceScroll({ cursorborder: "", cursorcolor: "#c0c4cc", boxzoom: true });
|
||||||
|
$("#video-tree").niceScroll({ cursorborder: "", cursorcolor: "#c0c4cc", boxzoom: true });
|
||||||
|
dtree.on("node('video-tree')", function (obj) {
|
||||||
|
if (obj.param.level === '1') {
|
||||||
|
return parent.layer.msg('请选择球机', { icon: 7 });
|
||||||
|
}
|
||||||
|
const nodeId = obj.param.nodeId;
|
||||||
|
let puid = nodeId.replace('QJ', '');
|
||||||
|
if (puid) {
|
||||||
|
parent.layer.msg("视频加载中,请稍候...", { icon: 16, scrollbar: false, time: 1000, });
|
||||||
|
QXPlayVideo(puid, '0', winDom)
|
||||||
|
playControl();
|
||||||
|
videoObject.devCode = puid;
|
||||||
|
} else {
|
||||||
|
return parent.layer.msg('请选择球机', { icon: 7 });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
util.event('lay-active', {
|
||||||
|
// 本地抓拍
|
||||||
|
photoLocal: function () {
|
||||||
|
screenshot();
|
||||||
|
},
|
||||||
|
// 远程录像
|
||||||
|
videoRemote: function () {
|
||||||
|
if (videoObject.playState) {
|
||||||
|
if (isEmpty(videoObject.remoteId)) {
|
||||||
|
// $(this).attr("src", "../../img/video/videoRemote-select.png");
|
||||||
|
remoteVideo(videoObject.devCode, 0);
|
||||||
|
} else {
|
||||||
|
// $(this).attr("src", "../../img/video/videoRemote.png");
|
||||||
|
stopRemote(videoObject.remoteId, 0)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
parent.layer.msg("请先播放视频。。。", { icon: 7 });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 远程抓拍
|
||||||
|
photoRemote: function () {
|
||||||
|
if (videoObject.playState) {
|
||||||
|
remoteVideo(videoObject.devCode, 1);
|
||||||
|
} else {
|
||||||
|
parent.layer.msg("请先播放视频。。。", { icon: 7 });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
/* 球机树 */
|
/* 球机树 */
|
||||||
function loadVideoTree() {
|
function loadVideoTree() {
|
||||||
const bidCode = parent.$('#bidPro').val();
|
const bidCode = parent.$('#bidPro').val();
|
||||||
const paramData = 'bidCode=' + bidCode + '&roleCode=' + roleCode + '&orgId=' + orgId + '&userId=' + userId;
|
const keyWord = $('#keyWord').val();
|
||||||
|
const paramData = 'bidCode=' + bidCode + '&roleCode=' + roleCode + '&orgId=' + orgId + '&userId=' + userId + '¶m=' + keyWord;
|
||||||
let montageParam = aqEnnable ? encryptCBC(paramData) : ' &' + encryptCBC(paramData);
|
let montageParam = aqEnnable ? encryptCBC(paramData) : ' &' + encryptCBC(paramData);
|
||||||
const url = commonUrl + 'screen/largeScreen/video/getVideoTree?params=' + montageParam;
|
const url = commonUrl + 'screen/largeScreen/video/getVideoTree?params=' + montageParam;
|
||||||
ajaxRequestGet(url, "GET", true, function () {
|
ajaxRequestGet(url, "GET", true, function () {
|
||||||
}, function (result) {
|
}, function (result) {
|
||||||
console.log(result);
|
|
||||||
if (result.code === 200) {
|
if (result.code === 200) {
|
||||||
// setData(result.data);
|
setData(result.data);
|
||||||
} else if (result.code === 500) {
|
} else if (result.code === 500) {
|
||||||
console.error('视频树' + result.msg);
|
console.error('视频树' + result.msg);
|
||||||
} else if (result.code === 401) {
|
} else if (result.code === 401) {
|
||||||
|
|
@ -18,4 +18,31 @@ function loadVideoTree() {
|
||||||
error(xhr, status, error)
|
error(xhr, status, error)
|
||||||
}, aqEnnable);
|
}, aqEnnable);
|
||||||
|
|
||||||
|
function setData(data) {
|
||||||
|
let totalNum = 0, onlineNum = 0, offLineNum = 0;
|
||||||
|
$.each(data, function (index, item) {
|
||||||
|
if (item.id !== '0') {
|
||||||
|
totalNum++;
|
||||||
|
if (item.onLine === '1') {
|
||||||
|
onlineNum++;
|
||||||
|
item.title = '<img src="../../../img/video/ball_online.png"><span>' + item.title + '</span>'
|
||||||
|
} else {
|
||||||
|
offLineNum++;
|
||||||
|
item.title = '<img src="../../../img/video/ball_offline.png"><span>' + item.title + '</span>'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
videoTree = dtree.render({
|
||||||
|
elem: "#video-tree",
|
||||||
|
width: "96%", // 指定树的宽度
|
||||||
|
data: data,
|
||||||
|
dataFormat: "list",
|
||||||
|
skin: "laySimple",
|
||||||
|
line: false, // 显示树线
|
||||||
|
});
|
||||||
|
// 设备在线情况
|
||||||
|
$('.device-status').eq(0).html('全部(' + totalNum + ')')
|
||||||
|
$('.device-status').eq(1).html('在线(' + onlineNum + ')')
|
||||||
|
$('.device-status').eq(2).html('离线(' + offLineNum + ')')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -74,7 +74,6 @@ function getQXConnect() {
|
||||||
* @param dom 窗口id
|
* @param dom 窗口id
|
||||||
*/
|
*/
|
||||||
function QXPlayVideo(puId, idx, dom) {
|
function QXPlayVideo(puId, idx, dom) {
|
||||||
|
|
||||||
//播视频接口
|
//播视频接口
|
||||||
destoryVideo(flvPlayer);
|
destoryVideo(flvPlayer);
|
||||||
let url = qxUrl + "stream.flv?puid=" + puId + "&idx=" + idx + "&stream=0&token=" + qxToken;
|
let url = qxUrl + "stream.flv?puid=" + puId + "&idx=" + idx + "&stream=0&token=" + qxToken;
|
||||||
|
|
@ -108,7 +107,7 @@ function QXPlayVideo(puId, idx, dom) {
|
||||||
flvPlayer.on(flvjs.Events.SCRIPTDATA_ARRIVED, (errorType, errorDetail, errorInfo) => {
|
flvPlayer.on(flvjs.Events.SCRIPTDATA_ARRIVED, (errorType, errorDetail, errorInfo) => {
|
||||||
if (flvPlayer) {
|
if (flvPlayer) {
|
||||||
videoObject.playState = true;
|
videoObject.playState = true;
|
||||||
$('.noVideoMask').css('background-image', 'none')
|
// $('.noVideoMask').css('background-image', 'none')
|
||||||
//视频断流、延迟处理
|
//视频断流、延迟处理
|
||||||
$('#' + dom).attr("ontimeupdate", "progress(event)")
|
$('#' + dom).attr("ontimeupdate", "progress(event)")
|
||||||
recordVideo();
|
recordVideo();
|
||||||
|
|
@ -222,10 +221,10 @@ function remoteVideo(puid, type) {
|
||||||
requestPost("CSS/C_CSS_StartManualStorage" + "?token=" + qxToken, params, function (data) {
|
requestPost("CSS/C_CSS_StartManualStorage" + "?token=" + qxToken, params, function (data) {
|
||||||
if (data.responseJSON.Error === '0') {
|
if (data.responseJSON.Error === '0') {
|
||||||
if (type === 0) {
|
if (type === 0) {
|
||||||
layer.msg("开始录像成功", { icon: 1 });
|
parent.layer.msg("开始录像成功", { icon: 1 });
|
||||||
videoObject.remoteId = data.responseJSON.Param.ID
|
videoObject.remoteId = data.responseJSON.Param.ID
|
||||||
} else {
|
} else {
|
||||||
layer.msg("抓拍成功", { icon: 1 });
|
parent.layer.msg("抓拍成功", { icon: 1 });
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
stopRemote(data.responseJSON.Param.ID, 1)
|
stopRemote(data.responseJSON.Param.ID, 1)
|
||||||
}, 3000);
|
}, 3000);
|
||||||
|
|
@ -250,7 +249,7 @@ function stopRemote(id, type) {
|
||||||
requestPost("CSS/C_CSS_StopManualStorage" + "?token=" + qxToken, params, function (data) {
|
requestPost("CSS/C_CSS_StopManualStorage" + "?token=" + qxToken, params, function (data) {
|
||||||
if (!isEmpty(data)) {
|
if (!isEmpty(data)) {
|
||||||
if (type === 0) {
|
if (type === 0) {
|
||||||
layer.msg("停止录像成功", { icon: 1 });
|
parent.layer.msg("停止录像成功", { icon: 1 });
|
||||||
videoObject.remoteId = null;
|
videoObject.remoteId = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -307,7 +306,7 @@ function destoryVideo(flvPlayer) {
|
||||||
*/
|
*/
|
||||||
function recordVideo() {
|
function recordVideo() {
|
||||||
let video = $("#videoPlayer1")[0];
|
let video = $("#videoPlayer1")[0];
|
||||||
let encodeType = "video/webm;codecs=vp9";
|
let encodeType = "video/webm;codecs=vp9,opus";
|
||||||
let chunks = [];
|
let chunks = [];
|
||||||
//创建MediaRecorder,设置媒体参数
|
//创建MediaRecorder,设置媒体参数
|
||||||
let stream = video.captureStream();
|
let stream = video.captureStream();
|
||||||
|
|
@ -322,17 +321,15 @@ function recordVideo() {
|
||||||
$('#videoLocal')[0].onclick = function () {
|
$('#videoLocal')[0].onclick = function () {
|
||||||
if (start) {
|
if (start) {
|
||||||
videoObject.recordVideoState = true;
|
videoObject.recordVideoState = true;
|
||||||
layer.msg("开启本地录像", { icon: 0 });
|
parent.layer.msg("开启本地录像", { icon: 0 });
|
||||||
chunks = [];
|
chunks = [];
|
||||||
recorder.start(10);
|
recorder.start(10);
|
||||||
$(this).attr("src", "../../img/video/videoLocal-select.png");
|
|
||||||
start = false;
|
start = false;
|
||||||
} else {
|
} else {
|
||||||
layer.msg("关闭本地录像", { icon: 0 });
|
parent.layer.msg("关闭本地录像", { icon: 0 });
|
||||||
videoObject.recordVideoState = false;
|
videoObject.recordVideoState = false;
|
||||||
recorder.stop();
|
recorder.stop();
|
||||||
download();
|
download();
|
||||||
$(this).attr("src", "../../img/video/videoLocal.png");
|
|
||||||
start = true;
|
start = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -340,12 +337,22 @@ function recordVideo() {
|
||||||
//下载录制内容
|
//下载录制内容
|
||||||
function download() {
|
function download() {
|
||||||
let blob = new Blob(chunks, { type: 'video/webm' });
|
let blob = new Blob(chunks, { type: 'video/webm' });
|
||||||
let file = new window.File([blob], new Date().getTime() + ".webm", { type: 'video/webm' })
|
const a = document.createElement('a');
|
||||||
console.log(file);
|
document.body.appendChild(a)
|
||||||
let formData = new FormData();
|
a.style.display = 'none'
|
||||||
formData.append("multipartFile", file)
|
const url = window.URL.createObjectURL(blob);
|
||||||
let loadingMsg = layer.msg('视频加载中,请稍候...', { icon: 16, scrollbar: false, time: 0 });
|
a.href = url;
|
||||||
$.ajax({
|
a.download = '视频.webm'; //视频下载后的名称
|
||||||
|
a.click();
|
||||||
|
document.body.removeChild(a)
|
||||||
|
window.URL.revokeObjectURL(url);
|
||||||
|
|
||||||
|
// let file = new window.File([blob], new Date().getTime() + ".webm", { type: 'video/webm' })
|
||||||
|
// console.log(file);
|
||||||
|
// let formData = new FormData();
|
||||||
|
// formData.append("multipartFile", file)
|
||||||
|
// let loadingMsg = layer.msg('视频加载中,请稍候...', { icon: 16, scrollbar: false, time: 0 });
|
||||||
|
/* $.ajax({
|
||||||
url: dataUrl + 'system/sys/video/webmToMp4?token=' + token,
|
url: dataUrl + 'system/sys/video/webmToMp4?token=' + token,
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
|
|
@ -367,7 +374,7 @@ function recordVideo() {
|
||||||
},
|
},
|
||||||
error: function (result) {
|
error: function (result) {
|
||||||
}
|
}
|
||||||
});
|
}); */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -376,7 +383,7 @@ function recordVideo() {
|
||||||
*/
|
*/
|
||||||
function screenshot() {
|
function screenshot() {
|
||||||
let video = $("#videoPlayer1")[0];
|
let video = $("#videoPlayer1")[0];
|
||||||
let canvas = $('#canvasPlayer1')[0];
|
let canvas = document.getElementById("canvas");;
|
||||||
let ctx = canvas.getContext('2d');
|
let ctx = canvas.getContext('2d');
|
||||||
let H = window.innerHeight;
|
let H = window.innerHeight;
|
||||||
let W = window.innerWidth;
|
let W = window.innerWidth;
|
||||||
|
|
@ -475,4 +482,35 @@ function uploadRectFile(obj) {
|
||||||
xhr.send();
|
xhr.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function playControl() {
|
||||||
|
let key;
|
||||||
|
//点击事件
|
||||||
|
let btn = $('[lay-event=control]');
|
||||||
|
btn.unbind();
|
||||||
|
btn.mousedown(function (event) {
|
||||||
|
if (videoObject.playState) {
|
||||||
|
key = qxControlType[$(this).attr('id')];
|
||||||
|
if (key[2]) {
|
||||||
|
turnControl(key[0], videoObject.devCode).then(r => {
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
qxControl(videoObject.devCode, key[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
event.stopPropagation();
|
||||||
|
}).mouseup(function (event) {
|
||||||
|
if (videoObject.playState) {
|
||||||
|
key = qxControlType[$(this).attr('id')];
|
||||||
|
if (key[2]) {
|
||||||
|
turnControl(key[3], videoObject.devCode).then(r => {
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
qxControl(videoObject.devCode, key[3])
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
parent.layer.msg("请先播放视频....", { icon: 7 });
|
||||||
|
}
|
||||||
|
event.stopPropagation();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<link rel="stylesheet" href="../../css/font.css">
|
<link rel="stylesheet" href="../../css/font.css">
|
||||||
<link rel="stylesheet" href="../../plugin/layui-v2.9.7/layui/css/layui.css">
|
<link rel="stylesheet" href="../../plugin/layui-v2.9.7/layui/css/layui.css">
|
||||||
|
<link rel="stylesheet" href="../../plugin/layui-v2.9.7/layui/dtree/dtree.css">
|
||||||
|
<link rel="stylesheet" href="../../plugin/layui-v2.9.7/layui/dtree/font/dtreefont.css">
|
||||||
<link rel="stylesheet" href="../../css/video/video.css">
|
<link rel="stylesheet" href="../../css/video/video.css">
|
||||||
<link rel="stylesheet" href="../../plugin/toolTip/mTips.css">
|
<link rel="stylesheet" href="../../plugin/toolTip/mTips.css">
|
||||||
<script src="../../js/publics/jquery-3.6.0.min.js" type="text/javascript"></script>
|
<script src="../../js/publics/jquery-3.6.0.min.js" type="text/javascript"></script>
|
||||||
|
|
@ -27,35 +29,35 @@
|
||||||
<div id="left-top-one" class="layout">
|
<div id="left-top-one" class="layout">
|
||||||
<div id="one-child">
|
<div id="one-child">
|
||||||
<div id="yclx" class="layout">
|
<div id="yclx" class="layout">
|
||||||
<button></button>
|
<button id="videoRemote" lay-active="videoRemote"></button>
|
||||||
<p>远程录像</p>
|
<p>远程录像</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="bdlx" class="layout">
|
<div id="bdlx" class="layout">
|
||||||
<button></button>
|
<button id="videoLocal"></button>
|
||||||
<p>本地录像</p>
|
<p>本地录像</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="two-child" class="layout">
|
<div id="two-child" class="layout">
|
||||||
<div id="yt" class="layout">
|
<div id="yt" class="layout">
|
||||||
<div id="yt-left" class="layout">
|
<div id="yt-left" class="layout">
|
||||||
<button></button>
|
<button id="left" lay-event="control"></button>
|
||||||
</div>
|
</div>
|
||||||
<div id="yt-center" class="layout">
|
<div id="yt-center" class="layout">
|
||||||
<button></button>
|
<button id="up" lay-event="control"></button>
|
||||||
<button></button>
|
<button id="down" lay-event="control"></button>
|
||||||
</div>
|
</div>
|
||||||
<div id="yt-right" class="layout">
|
<div id="yt-right" class="layout">
|
||||||
<button></button>
|
<button id="right" lay-event="control"></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="three-child">
|
<div id="three-child">
|
||||||
<div id="yczp" class="layout">
|
<div id="yczp" class="layout">
|
||||||
<button></button>
|
<button id="photoRemote" lay-active="photoRemote"></button>
|
||||||
<p>远程抓拍</p>
|
<p>远程抓拍</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="bdzp" class="layout">
|
<div id="bdzp" class="layout">
|
||||||
<button></button>
|
<button id="photoLocal" lay-active="photoLocal"></button>
|
||||||
<p>本地抓拍</p>
|
<p>本地抓拍</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -63,47 +65,49 @@
|
||||||
<div id="left-top-two" class="layout">
|
<div id="left-top-two" class="layout">
|
||||||
<div id="jj-box" class="layout">
|
<div id="jj-box" class="layout">
|
||||||
<div id="jj" class="layout">
|
<div id="jj" class="layout">
|
||||||
<button></button>
|
<button id="nearFocus" lay-event="control"></button>
|
||||||
<button></button>
|
<button id="farFocus" lay-event="control"></button>
|
||||||
</div>
|
</div>
|
||||||
<p>聚焦</p>
|
<p>聚焦</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="sf-box" class="layout">
|
<div id="sf-box" class="layout">
|
||||||
<div id="sf" class="layout">
|
<div id="sf" class="layout">
|
||||||
<button></button>
|
<button id="amplify" lay-event="control"></button>
|
||||||
<button></button>
|
<button id="shrink" lay-event="control"></button>
|
||||||
</div>
|
</div>
|
||||||
<p>缩放</p>
|
<p>缩放</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="gq-box" class="layout">
|
<!-- <div id="gq-box" class="layout">
|
||||||
<div id="gq" class="layout">
|
<div id="gq" class="layout">
|
||||||
<button></button>
|
<button id="apertureMinus" lay-event="control"></button>
|
||||||
<button></button>
|
<button id="apertureAdd" lay-event="control"></button>
|
||||||
</div>
|
</div>
|
||||||
<p>光圈</p>
|
<p>光圈</p>
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 球机列表 -->
|
<!-- 球机列表 -->
|
||||||
<div id="left-bottom">
|
<div id="left-bottom">
|
||||||
<div id="search-box">
|
<div id="search-box">
|
||||||
<form class="layui-form layout">
|
<form class="layui-form layout" onsubmit="return false;">
|
||||||
<input class="layui-input" autocomplete="off" placeholder="请输入关键字">
|
<input class="layui-input" autocomplete="off" id="keyWord" placeholder="请输入关键字">
|
||||||
<img src="../../img/video/search.png" id="search-img" alt="搜索">
|
<img src="../../img/video/search.png" id="search-img" alt="搜索" onclick="loadVideoTree()">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div id="device-online-box" class="layout">
|
<div id="device-online-box" class="layout">
|
||||||
<div class="device-status layout">全部(100)</div>
|
<div class="device-status layout">全部(0)</div>
|
||||||
<div class="device-status layout">在线(20)</div>
|
<div class="device-status layout">在线(0)</div>
|
||||||
<div class="device-status layout">离线(80)</div>
|
<div class="device-status layout">离线(0)</div>
|
||||||
|
</div>
|
||||||
|
<div id="device-tree">
|
||||||
|
<ul id="video-tree" class="dtree" style="height: 100%;overflow: auto;margin: 0 2%;" data-id="-1"></ul>
|
||||||
</div>
|
</div>
|
||||||
<div id="device-tree"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="center-box">
|
<div id="center-box">
|
||||||
<div id="video-box">
|
<div id="video-box">
|
||||||
<div id="balla" class="split split-horizontal">
|
<div id="balla" class="split split-horizontal">
|
||||||
<div id="windowbox" class="ballsplit "
|
<div id="windowbox" class="ballsplit " ondblclick="ballScreenBig('1')"
|
||||||
style="width: 100%;height: 100%; position: relative;z-index: 9999999999;pointer-events:auto">
|
style="width: 100%;height: 100%; position: relative;z-index: 9999999999;pointer-events:auto">
|
||||||
<video id="videoPlayer1" class="ball-content"></video>
|
<video id="videoPlayer1" class="ball-content"></video>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -127,7 +131,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="voi-item">
|
<div class="voi-item">
|
||||||
<img src="../../img/video/voi_photo.png">
|
<img src="../../img/video/voi_photo2.png">
|
||||||
<div class="voi-info layout">
|
<div class="voi-info layout">
|
||||||
<div class="voi-time layout">
|
<div class="voi-time layout">
|
||||||
<img src="../../img/video/alarm.png" alt="告警">
|
<img src="../../img/video/alarm.png" alt="告警">
|
||||||
|
|
@ -139,7 +143,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="voi-item">
|
<div class="voi-item">
|
||||||
<img src="../../img/video/voi_photo.png">
|
<img src="../../img/video/voi_photo3.png">
|
||||||
<div class="voi-info layout">
|
<div class="voi-info layout">
|
||||||
<div class="voi-time layout">
|
<div class="voi-time layout">
|
||||||
<img src="../../img/video/alarm.png" alt="告警">
|
<img src="../../img/video/alarm.png" alt="告警">
|
||||||
|
|
@ -151,7 +155,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="voi-item">
|
<div class="voi-item">
|
||||||
<img src="../../img/video/voi_photo.png">
|
<img src="../../img/video/voi_photo4.png">
|
||||||
<div class="voi-info layout">
|
<div class="voi-info layout">
|
||||||
<div class="voi-time layout">
|
<div class="voi-time layout">
|
||||||
<img src="../../img/video/alarm.png" alt="告警">
|
<img src="../../img/video/alarm.png" alt="告警">
|
||||||
|
|
@ -167,6 +171,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
<canvas id="canvas" style="display:none;" width="640" height="360"></canvas>
|
||||||
<script type="text/javascript" src="../../js/pages/video/qx/conf.js"></script>
|
<script type="text/javascript" src="../../js/pages/video/qx/conf.js"></script>
|
||||||
<script type="text/javascript" src="../../js/pages/video/qx/flv.min.js"></script>
|
<script type="text/javascript" src="../../js/pages/video/qx/flv.min.js"></script>
|
||||||
<script type="text/javascript" src="../../js/pages/video/qx/FileSaver.min.js"></script>
|
<script type="text/javascript" src="../../js/pages/video/qx/FileSaver.min.js"></script>
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue