361 lines
9.4 KiB
JavaScript
361 lines
9.4 KiB
JavaScript
/**
|
||
* @Author: zhangtq 2452618307@qq.com
|
||
* @Date: 2024-11-18 13:33:30
|
||
* @LastEditors: zhangtq 2452618307@qq.com
|
||
* @LastEditTime: 2024-11-18 17:50:36
|
||
* @FilePath: static/js/qx/connection.js
|
||
* @Description: 这是默认设置,可以在设置》工具》File Description中进行配置
|
||
*/
|
||
var token = null;
|
||
var storageId = "";
|
||
var startTime ="";
|
||
var endTime = "";
|
||
var storageType = 0;//初始值,1为表示可录像,点击后变为2,表示可下载
|
||
var storageVideoScreen=0;
|
||
$(function(){
|
||
// connect();
|
||
|
||
});
|
||
|
||
function getPhoto(){
|
||
console.log("getPhoto selectedScreen="+selectedScreen);
|
||
var canvas = document.getElementById("huaImg");
|
||
var video = document.getElementById(selectedScreen);
|
||
let ctx = canvas.getContext('2d');
|
||
canvas.width = 1080;;
|
||
canvas.height = 720;
|
||
ctx.drawImage(video, 0, 0, 1080, 720); // 将video中的数据绘制到canvas里
|
||
saveImage(canvas, new Date().getTime() + '.png'); // 存储图片到本地
|
||
}
|
||
function saveImage(canvas, filename) {
|
||
let image = canvas.toDataURL('image/png').replace('image/png', 'image/octet-stream');
|
||
saveAs(image, filename || new Date().getTime() + '.png');
|
||
}
|
||
|
||
function storageVideo(){
|
||
console.log("storageType=="+storageType);
|
||
if(storageVideoScreen == 0){
|
||
storageVideoScreen = selectedScreen;
|
||
}else{
|
||
console.log("storageVideoScreen=="+storageVideoScreen);
|
||
console.log("selectedScreen=="+selectedScreen);
|
||
if(storageVideoScreen != selectedScreen){
|
||
layer.alert("开始录制和结束录制请确保是同一个视频!!!");
|
||
return;
|
||
}
|
||
}
|
||
var num = parseInt(storageType%2);
|
||
if(num ==0){
|
||
$("#videotape").css("background-image","url('../../../img/video/ydj/lx.png')");
|
||
startstorage();
|
||
}else{
|
||
$("#videotape").css("background-image","url('../../../img/video/wdj/lx.png')");
|
||
stopmanual(storageId);
|
||
storageVideoScreen =0;
|
||
}
|
||
storageType++;
|
||
console.log("num=="+num);
|
||
|
||
}
|
||
|
||
function stopmanual(id) {
|
||
layer.msg('结束录像,正在准备下载,请稍后。。。');
|
||
let pId = null;
|
||
let idex = 0;
|
||
$.each(playBallList, function (index, item) {
|
||
if (!isEmpty(item)) {
|
||
if (selectedScreen === item.selectedScreen) {
|
||
if (item.start && item.myPlayer !== null) {
|
||
pId = item.puid;
|
||
}
|
||
}
|
||
}
|
||
});
|
||
endTime = Date.parse(new Date())/1000+10;
|
||
console.log("endTime="+endTime);
|
||
console.log("storageId="+id);
|
||
requestPost('CSS/C_CSS_StopManualStorage?token=' + token, {
|
||
id: id
|
||
}, rv => {
|
||
getQxVideoList();
|
||
});
|
||
|
||
}
|
||
|
||
function getQxVideoList(){
|
||
let pId = null;
|
||
let idex = 0;
|
||
// $.each(playBallList, function (index, item) {
|
||
// if (!isEmpty(item)) {
|
||
// if (selectedScreen === item.selectedScreen) {
|
||
// if (item.start && item.myPlayer !== null) {
|
||
// pId = item.puid;
|
||
// }
|
||
// }
|
||
// }
|
||
// });
|
||
var startTime = getTodayStartTime()+"";
|
||
var endTime = getTodayEndTime()+"";
|
||
requestGetWithParam('CSS/C_CSS_QueryStorageFiles?token=' + token, {
|
||
idx: 0,
|
||
puid:pId,
|
||
begin:startTime,
|
||
end:endTime,
|
||
offset:'0',
|
||
count:'200'
|
||
}, rv => {
|
||
var resultJson = JSON.parse(rv.responseText);
|
||
if(resultJson == "{}" || rv.responseText == "{}"){
|
||
layer.alert("暂无云视频!");
|
||
return;
|
||
}
|
||
var files = resultJson.File;
|
||
var filesLength = files.length;
|
||
var sTime = '';
|
||
var eTime = '';
|
||
console.log("files="+JSON.stringify(files));
|
||
var isArray = Array.isArray(files)
|
||
if(isArray){
|
||
for(var i=0;i<files.length;i++){
|
||
if(i==(files.length-1)){
|
||
var fi = files[i];
|
||
sTime = fi.Begin;
|
||
eTime = fi.End;
|
||
}
|
||
}
|
||
console.log("sTime111="+sTime);
|
||
console.log("eTime111="+eTime);
|
||
}else{
|
||
sTime = files.Begin;
|
||
eTime = files.End;
|
||
console.log("sTime222="+sTime);
|
||
console.log("eTime222="+eTime);
|
||
}
|
||
mp4Transcode(pId,sTime,eTime);
|
||
console.log("files="+files);
|
||
});
|
||
}
|
||
|
||
function mp4Transcode(pId,sTime,eTime){
|
||
requestPost('CSS/transcode?token=' + token, {
|
||
idx: 0,
|
||
puid:pId,
|
||
beginUTCSecond:sTime,
|
||
endUTCSecond:eTime,
|
||
retentionMinutes:5
|
||
}, rv => {
|
||
var resultJson = JSON.parse(rv.responseText);
|
||
var transcodeId = resultJson.transcodeId;
|
||
var timer1=setTimeout(function(){
|
||
mp4TranscodeProgress(transcodeId,timer1);
|
||
},5000);
|
||
});
|
||
};
|
||
|
||
function mp4TranscodeProgress(transcodeId,timer1){
|
||
requestGetWithParam('CSS/transcodeProgress?token=' + token, {
|
||
transcodeId: transcodeId
|
||
}, rv => {
|
||
var resultJson = JSON.parse(rv.responseText);
|
||
var ErrorCode = resultJson.ErrorCode;
|
||
var msg = resultJson.msg;
|
||
var reMsg = "transcode "+transcodeId+" done";
|
||
if(msg==reMsg && ErrorCode==0){
|
||
clearInterval(timer1);
|
||
location.href=q2Url + "CSS/downloadTranscodeFile?token="+token+"&transcodeId="+transcodeId
|
||
//location.href=_cf.q2http_url+"icvs/CSS/downloadTranscodeFile?token="+token+"&transcodeId="+transcodeId
|
||
}
|
||
});
|
||
}
|
||
|
||
function getTodayStartTime(){
|
||
var startTime = toDayExchange()+" 00:00:00";
|
||
var date = new Date(startTime);
|
||
var longDateStar = Date.parse(date)/1000;
|
||
console.log("getTodayStartTime="+longDateStar);
|
||
return longDateStar;
|
||
}
|
||
|
||
function getTodayEndTime(){
|
||
var endTime = toDayExchange()+" 23:59:59";
|
||
var date = new Date(endTime);
|
||
var longDateEnd = Date.parse(date)/1000;
|
||
console.log("getTodayEndTime="+longDateEnd);
|
||
return longDateEnd;
|
||
|
||
}
|
||
|
||
|
||
function toDayExchange() {
|
||
var date = new Date()
|
||
var Y = date.getFullYear() + '-'
|
||
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
|
||
var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
|
||
// var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'
|
||
// var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'
|
||
// var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds())
|
||
return Y + M + D
|
||
}
|
||
|
||
//开始云录像
|
||
function startstorage() {
|
||
layer.msg('开始录像。');
|
||
startTime = Date.parse(new Date())/1000-10;
|
||
let pId = null;
|
||
let idex = 0;
|
||
$.each(playBallList, function (index, item) {
|
||
if (!isEmpty(item)) {
|
||
if (selectedScreen === item.selectedScreen) {
|
||
if (item.start && item.myPlayer !== null) {
|
||
pId = item.puid;
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
console.log("清晰录像++++");
|
||
requestPost('CSS/C_CSS_StartManualStorage?token=' + token, {
|
||
puid: pId,
|
||
idx: idex,
|
||
duration: 5,
|
||
reserveDay: 30,
|
||
fileLength: 15,
|
||
type: 0
|
||
}, rv => {
|
||
var respJSON = JSON.parse(rv.responseText);
|
||
storageId = respJSON.Param.ID;
|
||
});
|
||
|
||
}
|
||
|
||
//创建平台连接
|
||
function connect() {
|
||
var self = this;
|
||
var params = {
|
||
"address": _cf.connParams.address,
|
||
"port": _cf.connParams.port,
|
||
"user": _cf.connParams.user,
|
||
"password": _cf.connParams.password,
|
||
"epid": _cf.connParams.epid,
|
||
"fixaddr": _cf.connParams.bfix
|
||
}
|
||
requestPost('login', params, function (rv) {
|
||
let self = this;
|
||
var result = {
|
||
errcode: -1,
|
||
token: ''
|
||
}
|
||
var respJSON = JSON.parse(rv.responseText);
|
||
if (respJSON.hasOwnProperty('errcode')) {
|
||
result.errcode = respJSON.errcode;
|
||
}
|
||
if (respJSON.hasOwnProperty('token')) {
|
||
result.token = respJSON.token;
|
||
result.errcode = 0;
|
||
token = result.token;
|
||
console.log("token="+token)
|
||
// fetchDevice(0,100);
|
||
}
|
||
})
|
||
}
|
||
|
||
//post请求
|
||
function requestPost(router, params, callback) {
|
||
// console.log('router='+router+" ,params="+params+" ,callback="+callback);
|
||
console.log('requestPost params='+JSON.stringify(params));
|
||
var self = this;
|
||
$.ajax({
|
||
type: 'post',
|
||
url: q2Url + router,
|
||
data: params,
|
||
traditional: true,
|
||
dataType: 'json',
|
||
async: true,
|
||
complete: function (rv) {
|
||
console.log(JSON.stringify(rv));
|
||
if (typeof callback == 'function') callback(rv)
|
||
}
|
||
})
|
||
}
|
||
//get请求
|
||
function requestGet(router, callback) {
|
||
var self = this;
|
||
var url = q2Url + router;
|
||
$.ajax({
|
||
type: 'get',
|
||
url: url,
|
||
dataType: 'json',
|
||
async: true,
|
||
complete: function (rv) {
|
||
if (typeof callback == 'function') callback(rv)
|
||
}
|
||
})
|
||
}
|
||
|
||
//get请求
|
||
function requestGetWithParam(router, params,callback) {
|
||
var self = this;
|
||
var url = q2Url + router;
|
||
$.ajax({
|
||
type: 'get',
|
||
url: url,
|
||
dataType: 'json',
|
||
data:params,
|
||
async: true,
|
||
complete: function (rv) {
|
||
if (typeof callback == 'function') callback(rv)
|
||
}
|
||
})
|
||
};
|
||
|
||
//缩放功能
|
||
function zoomcontrol(puid,idx,option) {
|
||
let self = this;
|
||
let params = {
|
||
puid: puid,
|
||
idx: idx,
|
||
}
|
||
if (option == "stop") {
|
||
//停止缩放接口
|
||
requestPost('PTZ/C_PTZ_StopPictureZoom?token=' + token, params, rv => {
|
||
var respJSON = rv.responseJSON;
|
||
})
|
||
$("#big").css("background-image","url('../../../img/video/wdj/fd.png')");
|
||
$("#small").css("background-image","url('../../../img/video/wdj/sx.png')");
|
||
} else if (option == "zoomin") {
|
||
//放大图像接口
|
||
$("#big").css("background-image","url('../../../img/video/ydj/fd.png')");
|
||
requestPost('PTZ/C_PTZ_ZoomInPicture?token=' + token, params, rv => {})
|
||
} else {
|
||
$("#small").css("background-image","url('../../../img/video/ydj/sx.png')");
|
||
//缩小图像接口
|
||
requestPost('PTZ/C_PTZ_ZoomOutPicture?token=' + token, params, rv => {})
|
||
}
|
||
};
|
||
|
||
function focuscontrol(puid,idx,option) {
|
||
let params = {
|
||
puid: puid,
|
||
idx: idx,
|
||
}
|
||
if (option == "near") {
|
||
$("#jfocus").css("background-image","url('../../../img/video/ydj/jj.png')");
|
||
requestPost('PTZ/C_PTZ_MakeFocusNear?token=' + token, params, rv => {
|
||
console.log(rv)
|
||
})
|
||
} else if (option == "faraway") {
|
||
$("#yfocus").css("background-image","url('../../../img/video/ydj/yj.png')");
|
||
requestPost('PTZ/C_PTZ_MakeFocusFar?token=' + token, params, rv => {
|
||
console.log(rv)
|
||
})
|
||
} else {
|
||
requestPost('PTZ/C_PTZ_StopFocusMove?token=' + token, params, rv => {
|
||
console.log(rv)
|
||
})
|
||
|
||
$("#yfocus").css("background-image","url('../../../img/video/wdj/yj.png')");
|
||
$("#jfocus").css("background-image","url('../../../img/video/wdj/jj.png')");
|
||
}
|
||
}
|
||
|