jyyhq/witDisplay/js/video/connection.js

625 lines
17 KiB
JavaScript
Raw Normal View History

2025-02-10 12:18:11 +08:00
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/videoRecord.png')");
startstorage();
}else{
$("#videotape").css("background-image","url('../../img/video/videoRecord.png')");
stopmanual(storageId);
storageVideoScreen =0;
}
storageType++;
console.log("num=="+num);
}
function stopmanual(id) {
layer.msg('结束录像,正在准备下载,请稍后。。。');
let pId = null;
let idex = 0;
var pathType = 0;
var useToken = '';
$.each(playBallList, function (index, item) {
if (!isEmpty(item)) {
if (selectedScreen === item.selectedScreen) {
if (item.start && item.myPlayer !== null) {
pId = item.puid;
pathType = item.pathType;
useToken = item.token;
}
}
}
});
endTime = Date.parse(new Date())/1000+10;
console.log("endTime="+endTime);
console.log("storageId="+id);
if (pathType === 2){
requestPost2('CSS/C_CSS_StopManualStorage?token=' + useToken, {
id: id
}, rv => {
console.log("getQxVideoList2==============")
getQxVideoList();
});
}else {
requestPost('CSS/C_CSS_StopManualStorage?token=' + useToken, {
id: id
}, rv => {
console.log("getQxVideoList1==============")
getQxVideoList();
});
}
}
function getQxVideoList(){
let pId = null;
let idex = 0;
let useToken = '';
let pathType = 0;
$.each(playBallList, function (index, item) {
if (!isEmpty(item)) {
if (selectedScreen === item.selectedScreen) {
if (item.start && item.myPlayer !== null) {
pId = item.puid;
useToken = item.token;
pathType = item.pathType;
}
}
}
});
var startTime = getTodayStartTime()+"";
var endTime = getTodayEndTime()+"";
if (pathType === 2){
requestGetWithParam2('CSS/C_CSS_QueryStorageFiles?token=' + useToken, {
idx: idex,
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,pathType,useToken);
console.log("files="+files);
});
}else {
requestGetWithParam('CSS/C_CSS_QueryStorageFiles?token=' + useToken, {
idx: idex,
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,pathType,useToken);
console.log("files="+files);
});
}
}
function mp4Transcode(pId,sTime,eTime,pathType,useToken){
console.log("mp4Transcod================");
if (pathType === 2){
requestPost2('CSS/transcode?token=' + useToken, {
idx: 0,
puid:pId,
beginUTCSecond:sTime,
endUTCSecond:eTime,
retentionMinutes:5
}, rv => {
var resultJson = JSON.parse(rv.responseText);
var transcodeId = resultJson.transcodeId;
console.log("mp4Transcode resultJson================"+JSON.stringify(resultJson));
console.log("mp4Transcode transcodeId================"+JSON.stringify(transcodeId));
var timer1=setTimeout(function(){
mp4TranscodeProgress(transcodeId,timer1,pathType,useToken);
},5000);
});
}else {
requestPost('CSS/transcode?token=' + useToken, {
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,pathType,useToken);
},5000);
});
}
};
function mp4TranscodeProgress(transcodeId,timer1,pathType,useToken){
console.log("mp4TranscodeProgress================");
if (pathType === 2){
requestGetWithParam2('CSS/transcodeProgress?token=' + useToken, {
transcodeId: transcodeId
}, rv => {
var resultJson = JSON.parse(rv.responseText);
var ErrorCode = resultJson.ErrorCode;
var msg = resultJson.msg;
var reMsg = "transcode "+transcodeId+" done";
console.log("mp4TranscodeProgress resultJson================"+JSON.stringify(resultJson));
console.log("mp4TranscodeProgress resultJson================"+resultJson);
console.log("mp4TranscodeProgress transcodeId================"+ErrorCode);
console.log("mp4TranscodeProgress msg================"+msg);
console.log("mp4TranscodeProgress reMsg================"+reMsg);
if(msg==reMsg && ErrorCode==0){
clearInterval(timer1);
location.href="http://192.168.0.100:9585/icvs/CSS/downloadTranscodeFile?token="+useToken+"&transcodeId="+transcodeId
console.log("12312121212121");
}
});
}else {
requestGetWithParam('CSS/transcodeProgress?token=' + useToken, {
transcodeId: transcodeId
}, rv => {
var resultJson = JSON.parse(rv.responseText);
var ErrorCode = resultJson.ErrorCode;
var msg = resultJson.msg;
var reMsg = "transcode "+transcodeId+" done";
console.log("mp4TranscodeProgress resultJson================"+JSON.stringify(resultJson));
console.log("mp4TranscodeProgress resultJson================"+resultJson);
console.log("mp4TranscodeProgress transcodeId================"+ErrorCode);
console.log("mp4TranscodeProgress msg================"+msg);
console.log("mp4TranscodeProgress reMsg================"+reMsg);
if(msg==reMsg && ErrorCode==0){
clearInterval(timer1);
location.href="http://192.168.0.100:1854/icvs/CSS/downloadTranscodeFile?token="+useToken+"&transcodeId="+transcodeId
console.log("444444444444444444444444444");
}
});
}
}
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;
let useToken = '';
let pathType = 0;
$.each(playBallList, function (index, item) {
if (!isEmpty(item)) {
if (selectedScreen === item.selectedScreen) {
if (item.start && item.myPlayer !== null) {
pId = item.puid;
useToken = item.token;
pathType = item.pathType;
}
}
}
});
console.log("清晰录像++++");
console.log("useToken++++"+useToken);
console.log("pathType++++"+pathType);
if (pathType === 2){
requestPost2('CSS/C_CSS_StartManualStorage?token=' + useToken, {
puid: pId,
idx: idex,
duration: 5,
reserveDay: 30,
fileLength: 15,
type: 0
}, rv => {
var respJSON = JSON.parse(rv.responseText);
console.log("respJSON====="+respJSON);
console.log("respJSON(((====="+JSON.stringify(respJSON));
storageId = respJSON.Param.ID;
});
}else {
requestPost('CSS/C_CSS_StartManualStorage?token=' + useToken, {
puid: pId,
idx: idex,
duration: 5,
reserveDay: 30,
fileLength: 15,
type: 0
}, rv => {
var respJSON = JSON.parse(rv.responseText);
console.log("respJSON====="+respJSON);
console.log("respJSON(((====="+JSON.stringify(respJSON));
storageId = respJSON.Param.ID;
});
}
}
//获取设备列表
function fetchDevice(offset, count) {
var self = this;
//获取设备列表的接口
var router = 'CAS/C_CAS_QueryPUIDSets?offset=' + offset + '&count=' + count + '&token=' + token;
requestGet(router, rv => {
var respJSON = rv.responseJSON;
if (respJSON.constructor != Array) {
respJSON = [respJSON];
}
device_list = respJSON;
//把设备加载到指定的位置
//console.log("device_list="+JSON.stringify(device_list));
addDevice(device_list);
if (device_list.length == count) {
offset += count;
fetchDevice(offset, count);
} else {
return;
}
})
}
function addDevice(device_list){
$.each(device_list, function (index, item) {
let puId = item.$;
let online = item.OnlineFlag;
if(online == '1'){
onLineBallList.push({
puid: puId,
online: online
});
}
});
// console.log("onLineBallList="+JSON.stringify(onLineBallList));
}
//创建平台连接
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: _cf.q2http_url + 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 = _cf.q2http_url + 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 = _cf.q2http_url + router;
$.ajax({
type: 'get',
url: url,
dataType: 'json',
data:params,
async: true,
complete: function (rv) {
if (typeof callback == 'function') callback(rv)
}
})
};
/*********************云台控制****************/
function ptz(type) {
let pId = null;
let idex = 0;
let useToken = '';
//视频替换
$.each(playBallList, function (index, item) {
if (!isEmpty(item)) {
if (selectedScreen === item.selectedScreen) {
if (item.start && item.myPlayer !== null) {
pId = item.puid;
useToken = item.token;
console.log("useToken=============="+useToken)
}
}
}
});
console.log("pId="+pId)
console.log("sssssss="+selectedScreen)
if(type == 'TurnUp'){
turncontrol(pId,idex,'up',useToken);
}else if(type == 'TurnDown'){
turncontrol(pId,idex,'down',useToken);
}else if(type == 'TurnLeft'){
turncontrol(pId,idex,'left',useToken);
}else if(type == 'TurnRight'){
turncontrol(pId,idex,'right',useToken);
}else if(type == 'ZoomInPicture'){
//放大
zoomcontrol(pId,idex,'zoomin',useToken);
}else if(type == 'ZoomOutPicture'){
//缩小
zoomcontrol(pId,idex,'zoominout',useToken);
}else if(type == 'MakeFocusFar'){
//远焦
focuscontrol(pId,idex,'faraway',useToken);
}else if(type == 'MakeFocusNear'){
//近焦
focuscontrol(pId,idex,'near',useToken);
}else if(type == 'StopFocusMove'){
focuscontrol(pId,idex,'stop',useToken);
}else if(type == 'StopPictureZoom'){
zoomcontrol(pId,idex,'stop',useToken);
}else{
turncontrol(pId,idex,'stop',useToken);
}
};
//清新云台上下左右
//旋转平台功能
async function turncontrol(puid,idx,option,useToken) {
if (option == "up") {
$("#balltop").css("background-image","url('../../../img/video/ydj/s.png')");
await requestPost('PTZ/C_PTZ_Turn?token=' + useToken, {
puid: puid,
idx: idx,
motion: 'up'
}, async (rv) => {
});
} else if (option == "down") {
$("#ballbuttom").css("background-image","url('../../../img/video/ydj/x.png')");
var number = "down";
await requestPost('PTZ/C_PTZ_Turn?token=' + useToken, {
puid: puid,
idx: idx,
motion: 'down'
}, rv => {
});
} else if (option == "left") {
$("#ballleft").css("background-image","url('../../../img/video/ydj/z.png')");
var number = "left";
await requestPost('PTZ/C_PTZ_Turn?token=' + useToken, {
puid: puid,
idx: idx,
motion: 'left'
}, rv => {
});
} else if (option == "right") {
var number = "right";
$("#ballright").css("background-image","url('../../../img/video/ydj/y.png')");
await requestPost('PTZ/C_PTZ_Turn?token=' + useToken, {
puid: puid,
idx: idx,
motion: 'right'
}, rv => {
});
} else if (option == "stop") {
var number = "stop";
console.log("stop----------------");
requestPost('PTZ/C_PTZ_Turn?token=' + useToken, {
puid: puid,
idx: idx,
motion: 'stop'
}, rv => {
console.log("stop++++++++++++++++");
$("#balltop").css("background-image","url('../../../img/video/wdj/s.png')");
$("#ballbuttom").css("background-image","url('../../../img/video/wdj/x.png')");
$("#ballleft").css("background-image","url('../../../img/video/wdj/z.png')");
$("#ballright").css("background-image","url('../../../img/video/wdj/y.png')");
});
}
};
//缩放功能
function zoomcontrol(puid,idx,option,useToken) {
let self = this;
let params = {
puid: puid,
idx: idx,
}
if (option == "stop") {
//停止缩放接口
requestPost('PTZ/C_PTZ_StopPictureZoom?token=' + useToken, params, rv => {
var respJSON = rv.responseJSON;
})
$("#big").css("background-image","url('../../img/video/scale01.png')");
$("#small").css("background-image","url('../../img/video/scale02.png')");
} else if (option == "zoomin") {
//放大图像接口
$("#big").css("background-image","url('../../img/video/scale01.png')");
requestPost('PTZ/C_PTZ_ZoomInPicture?token=' + useToken, params, rv => {})
} else {
$("#small").css("background-image","url('../../img/video/scale02.png')");
//缩小图像接口
requestPost('PTZ/C_PTZ_ZoomOutPicture?token=' + useToken, params, rv => {})
}
};
function focuscontrol(puid,idx,option,useToken) {
let params = {
puid: puid,
idx: idx,
}
if (option == "near") {
$("#jfocus").css("background-image","url('../../img/video/focus01.png')");
requestPost('PTZ/C_PTZ_MakeFocusNear?token=' + useToken, params, rv => {
console.log(rv)
})
} else if (option == "faraway") {
$("#yfocus").css("background-image","url('../../img/video/focus02.png')");
requestPost('PTZ/C_PTZ_MakeFocusFar?token=' + useToken, params, rv => {
console.log(rv)
})
} else {
requestPost('PTZ/C_PTZ_StopFocusMove?token=' + useToken, params, rv => {
console.log(rv)
})
$("#yfocus").css("background-image","url('../../img/video/focus01.png')");
$("#jfocus").css("background-image","url('../../img/video/focus02.png')");
}
}