emsApplication/applications/WebConfigure/web/js/camerarecord.js

586 lines
22 KiB
JavaScript
Raw Normal View History

2024-05-24 12:19:45 +08:00
var cameraApp= angular.module('cameraApp',[]);
cameraApp.controller('cameraCtrl',function($http,$scope,$rootScope,$timeout){
$scope.channelIDs = 1;//频道号 默认为1
$scope.optMemory;//当前选择的存储配置
$scope.videotape;//录像设备
$(document).ready(function () {
if($scope.languageJson == undefined)
$scope.languageJson = angular.fromJson(sessionStorage.getItem("languageJson"));
var title = $scope.languageJson.Playback.Title;
var voides = JudgeBrowsers();
initvideoplugin(voides);
inittree(voides);
initVideotape();
inittimeline();
initdatetimepicker();
setSystemStyle();
});
function initvideoplugin(voides) {
if(voides != true) return;
if (-1==WebVideoCtrl.I_CheckPluginInstall()) {
$("#camera-plugin").innerHTML="<a href='files/WebComponentsKit.exe' target='_black'> 您还未安装过插件,单击该连接下载安装!</a>";
return;
}
var width=$("#camera-plugin").width();
var height=$("#camera-plugin").height();
WebVideoCtrl.I_InitPlugin(width, height, {
iWndowType: 2,
cbSelWnd: function (xmlDoc) {
g_iWndIndex = $(xmlDoc).find("SelectWnd").eq(0).text();
}
});
WebVideoCtrl.I_InsertOBJECTPlugin("camera-plugin");
}
function inittree(voides){
var dataObj={};
var dataArray = [];
dataArray.push({
K: 'videoEquipment.getAllPlayback',
V: 'NA'
});
dataObj.data = dataArray;
var result = [];//返回的数据
$http({
method: 'POST',
url: '/data',
data: dataObj,
headers: {
'Content-Type': 'text/plain'
}
}).then(function(response) {
var obj = eval(response.data);
if (angular.isArray(obj) & obj.length > 0 & obj[0].V!="]") {
result = eval(obj[0].V);
$scope.reocrdequipmen = result;
if(voides != true) return;
$scope.optMemory = result[0];//存放第一个存储设备数据
for(var i=0;i<result.length;i++){
var szIP = result[i].ip,
szPort = result[i].port,
szUsername = result[i].username,
szPassword = result[i].pwd,
szID = result[i].id;
WebVideoCtrl.I_Logout(szIP);
var iRet = WebVideoCtrl.I_Login(szIP, 1, szPort, szUsername, szPassword, {
success: function (xmlDoc) {
setTimeout(function(){
clickGetDigitalChannelInfo(szIP,$("#requipment"+szID));
},500);
},
error: function () {
// alert("请检测设备是否连接成功!");
}
});
}
}
});
}
function JudgeBrowsers(){
var NV = {};
var UA = navigator.userAgent.toLowerCase();
NV.name = (UA.indexOf("chrome")>0)?'chrome':'unkonw';
NV.version = (NV.name=='chrome')?UA.match(/chrome\/([\d.]+)/)[1]:'0';
var isIe = "ActiveXObject" in window;
if(isIe) return true;
if(NV.name === 'chrome' && parseInt(NV.version) <= 42) return true;//64bit chrome v34
}
function setSystemStyle(){
var style = localStorage.getItem("systemStyle");
var random = parseInt(10000*Math.random());
if(style != undefined && style != "Blue")
$("#Camera_StyleLink").attr("href", "../css/"+style+"Style.css?v=" + random);
else
$("#Camera_VersionLink").attr("href","../css/versions2.css?v="+random);
$(".loginbody").addClass("body_bg");
};
function initVideotape(){
var dataObj={};
var dataArray = [];
dataArray.push({
K: 'videoEquipment.getAllMonitor',
V: 'NA'
});
dataObj.data = dataArray;
var result = [];//返回的数据
$http({
method: 'POST',
url: '/data',
data: dataObj,
headers: {
'Content-Type': 'text/plain'
}
}).then(function(response) {
var obj = eval(response.data);
if (angular.isArray(obj) & obj.length > 0) {
result = angular.fromJson(obj[0].V);//eval(V);
$scope.videotape = result;
}
});
}
function clickGetDigitalChannelInfo(ip,obj) {
var szIP =ip, iAnalogChannelNum = 0;
if ("" == szIP) return;
// 模拟通道
WebVideoCtrl.I_GetAnalogChannelInfo(szIP, {
async: false,
success: function (xmlDoc) {
iAnalogChannelNum = $(xmlDoc).find("VideoInputChannel").length;
}
});
var results = new Array();
// 数字通道
WebVideoCtrl.I_GetDigitalChannelInfo(szIP, {
async: false,
success: function (xmlDoc) {
var oChannels = $(xmlDoc).find("InputProxyChannelStatus");
$.each(oChannels, function () {
var values = {};
values.id = parseInt($(this).find("id").eq(0).text());
values.ipAddress = $(this).find("ipAddress").eq(0).text();
values.srcInputPort = $(this).find("srcInputPort").eq(0).text();
values.managePortNo = $(this).find("managePortNo").eq(0).text();
values.online = $(this).find("online").eq(0).text();
values.name= $(this).find("name").eq(0).text();
values.proxyProtocol = $(this).find("proxyProtocol").eq(0).text();
results.push(values);
});
$scope.reocrdequipmens = results;
$scope.$apply();
},
error: function () {
console.log(szIP + " 没有数字通道!");
}
});
}
function inittimeline(){
var tld = "timeline";
var tg1 = $("#placement").timeline({
"min_zoom":1,
"max_zoom":50,
"show_centerline":true,
"show_footer":true,
"display_zoom_level":true,
"event_modal":{type:"full"},
"event_overflow":"scroll",
"data_source":"#mylife"
});
/*setTimeout(function(){
initrecordplay();
},500);*/
}
function initrecordplay(){
$("#mylife >.timeglider-event-spanning").on('click',function(){
var starttime=$(this).attr("starttime");
$("#currentdate").text(starttime);
});
}
function initdatetimepicker(){
$('.form_time').datetimepicker({
weekStart: 1,
todayBtn: 1,
autoclose: 1,
todayHighlight: 1,
minView: 0,
maxView: 1,
forceParse: 0
});/*language: 'zh-CN',*/
var date = new Date();
var starttime = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " 00:00:00";
$("#starttime").val(starttime);
$("#endtime").val(getNowFormatDate());
}
function getNowFormatDate() {
var date = new Date();
var seperator1 = "-";
var seperator2 = ":";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
+ " " + date.getHours() + seperator2 + date.getMinutes()
+ seperator2 + date.getSeconds();
return currentdate;
}
$scope.setcurrentrecord = function(ip,par,obj){
$scope.currentip=ip;
$(".tree li").css("color","#fff");
$("#"+ par.id+"_"+obj.id).css("color","#9E1F24");
$scope.channelIDs = obj.id;
};
function searchrecord(iType){
var xmlDoc = WebVideoCtrl.I_GetLocalCfg();
var szStartTime=$("#starttime").val(),
szEndTime=$("#endtime").val(),
szIP = $scope.optMemory.ip,//"192.168.2.144",
iChannelID = $scope.channelIDs,
bZeroChannel =false;
if ("" == szIP) return;
if (bZeroChannel) return;
// 首次搜索
if (0 == iType) iSearchTimes = 0;
WebVideoCtrl.I_RecordSearch(szIP, iChannelID, szStartTime, szEndTime, {
iSearchPos: iSearchTimes * 40,
success: function (xmlDoc) {
if("MORE" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) {
for(var i = 0, nLen = $(xmlDoc).find("searchMatchItem").length; i < nLen; i++) {
var szPlaybackURI = $(xmlDoc).find("playbackURI").eq(i).text();
if(szPlaybackURI.indexOf("name=") < 0) break;
var szStartTime = $(xmlDoc).find("startTime").eq(i).text();
var szEndTime = $(xmlDoc).find("endTime").eq(i).text();
szStartTime = szStartTime.replace("T", " ").replace("Z", "");
szEndTime = szEndTime.replace("T", " ").replace("Z", "");
if(isstart)
{
videostarttime = szStartTime;
isstart = false;
}
recorddt += "<tr><td>"+szStartTime+"</td><td>"+szEndTime+"</td><td>ho</td><td>10</td><td></td></tr>";
}
iSearchTimes++;
searchrecord(1);// 继续搜索
} else if ("OK" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) {
var iLength = $(xmlDoc).find("searchMatchItem").length;
for(var i = 0; i < iLength; i++) {
var szPlaybackURI = $(xmlDoc).find("playbackURI").eq(i).text();
if(szPlaybackURI.indexOf("name=") < 0) break;
var szStartTime = $(xmlDoc).find("startTime").eq(i).text();
var szEndTime = $(xmlDoc).find("endTime").eq(i).text();
szStartTime = szStartTime.replace("T", " ").replace("Z", "");
szEndTime = szEndTime.replace("T", " ").replace("Z", "");
recorddt += "<tr><td>"+szStartTime+"</td><td>"+szEndTime+"</td><td>ho</td><td>10</td><td></td></tr>";
}
var result = getinlinedata.replace("@data",recorddt);
result = result.replace("@videostarttime",videostarttime);
while($("#mylife").html()!==undefined){
$("#mylife").remove();
}
$("#timelinedata").children().remove();
$("#timelinedata").html(result);
inittimeline();
} else if("NO MATCHES" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) {
setTimeout(function() {
//alert(szIP + " 没有录像文件!");
}, 50);
}
},
error: function () {
//alert(szIP + " 搜索录像文件失败!");
}
});
}
function loginvideo(ip,port,username,pwd,channelno) {
WebVideoCtrl.I_Logout(ip);
var iRet = WebVideoCtrl.I_Login(ip, 1, port, username, pwd, {
success: function (xmlDoc) {
recorddt="";
searchrecord(0);
}
});
}
$scope.fullscreen = function(){
if(-1==WebVideoCtrl.I_CheckPluginInstall()) return;
WebVideoCtrl.I_FullScreen(true)
};
$scope.getequipmentchannel = function(ip,port,username,pwd,channelno,obj) {
WebVideoCtrl.I_Logout(ip);
var iRet = WebVideoCtrl.I_Login(ip, 1, port, username, pwd, {
success: function (xmlDoc) {
clickGetDigitalChannelInfo(ip,obj);
}
});
};
$scope.optMemoryEquipment = function(prar){
$scope.optMemory = prar;
};
$scope.changeWndNum = function(iType) {
if (-1==WebVideoCtrl.I_CheckPluginInstall()) return;
iType = parseInt(iType, 10);
WebVideoCtrl.I_ChangeWndNum(iType);
};
var iSearchTimes = 0;
var recorddt,getinlinedata,videostarttime,isstart=true;
$scope.search = function(iType){
videostarttime = getNowFormatDate();
isstart=true;
getinlinedata = " <table style='display: none;' class='timeline-table' id='mylife' focus_date='@videostarttime' size_importance='false' initial_zoom='6'>";
getinlinedata +="<tr><th class='tg-startdate'></th><th class='tg-enddate'></th><th class='tg-date_limit'></th><th class='tg-importance'></th><th class='tg-title'></th></tr>@data</table>";
loginvideo($scope.optMemory.ip,$scope.optMemory.port,$scope.optMemory.username,$scope.optMemory.pwd,iType);
};
$scope.getUrlParameter = function(name){
var url = location.href;
var parameters = url.substr(url.indexOf("?")+1);
var paramItems = parameters.split("&");
var paramName;
var paramValue = "";
for(i in paramItems)
{
paramName = paramItems[i].split("=")[0];
paramValue = paramItems[i].split("=")[1];
if(paramName.toLowerCase() == name.toLowerCase())
{
return(paramValue);
}
}
return "";
};
//将时间转为yyyy-MM-dd HH:mm:ss格式字符串
function getFormatDate(date) {
date = new Date(date.getTime() - 1000*60*5 - 1000*26);
var seperator1 = "-";
var seperator2 = ":";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var hour = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
if (hour < 10) {
hour = "0" + hour;
}
if (minutes < 10) {
minutes = "0" + minutes;
}
if (seconds < 10) {
seconds = "0" + seconds;
}
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
+ " " + hour + seperator2 + minutes
+ seperator2 + seconds;
return currentdate;
}
function getCurrentDate(){
var curr = $("#currentdate").text();
var str = curr;
var index1 = curr.indexOf(":")-2;
var index2 = curr.indexOf(":");
var e = curr.substring(index1,index2);
var str1 = curr.substring(0,index1);
var str2 = curr.substring(index2);
if(e == "24" || e == "00"){
str = str1+"12"+str2;
}else if(e == "12"){
str = str1+"00"+str2;
}
return str;
}
//开始播放
$scope.clickStartPlay=function(){
var myTbody = document.getElementById("timelinedata").firstElementChild.lastElementChild;
var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
szDeviceIdentify = $scope.optMemory.ip,
iRtspPort = 554,
iStreamType = 1,//码流1为主码流2为子码流3为第三码流4为转码流
bZeroChannel = false,
iChannelID = $scope.channelIDs,//1
szStartTime = myTbody.rows[1].cells[0].innerHTML,
szEndTime = myTbody.rows[myTbody.rows.length-1].cells[1].innerHTML,
bChecked = false,
szPlayTime = getCurrentDate();
//将时间转为yyyy-MM-dd HH:mm:ss格式
szPlayTime = getFormatDate(new Date(Date.parse(szPlayTime.replace(/-/g, "/"))));
//实现选择时间段回放
var dateStart = new Date(Date.parse(szStartTime.replace(/-/g, "/")));
var datePlay = new Date(Date.parse(szPlayTime.replace(/-/g, "/")));
var dateEnd = new Date(Date.parse(szEndTime.replace(/-/g, "/")));
if(datePlay>dateStart && datePlay<dateEnd){//当选择时间在查询时间段,则从选择时间段开始播放,否则从查询时间段开始播放
szStartTime = szPlayTime;
}
if (null == szDeviceIdentify) {
return;
}
if (bZeroChannel) {// 零通道不支持回放
return;
}
var startPlayback = function () {
if (bChecked) {// 启用转码回放
var oTransCodeParam = {
TransFrameRate: "14",// 0全帧率51627486981010111212161415151813201622
TransResolution: "1",// 255Auto34CIF2QCIF1CIF
TransBitrate: "19"// 232K348K464K580K696K7128K8160K9192K10224K11256K12320K13384K14448K15512K16640K17768K18896K191024K201280K211536K221792K232048K243072K254096K268192K
};
WebVideoCtrl.I_StartPlayback(szDeviceIdentify, {
iRtspPort: iRtspPort,
iStreamType: iStreamType,
iChannelID: iChannelID,
szStartTime: szStartTime,
szEndTime: szEndTime,
oTransCodeParam: oTransCodeParam,
success: function () {
},
error: function (status, xmlDoc) {
if (403 === status) {
alert("设备不支持Websocket取流");
} else {
alert("开始回放失败!");
}
}
});
} else {
WebVideoCtrl.I_StartPlayback(szDeviceIdentify, {
iRtspPort: iRtspPort,
iStreamType: iStreamType,
iChannelID: iChannelID,
szStartTime: szStartTime,
szEndTime: szEndTime,
success: function () {
},
error: function (status, xmlDoc) {
if (403 === status) {
alert("设备不支持Websocket取流");
} else {
alert("开始回放失败!");
}
}
});
}
};
if (oWndInfo != null) {// 已经在播放了,先停止
WebVideoCtrl.I_Stop({
success: function () {
startPlayback();
}
});
} else {
startPlayback();
}
};
//停止播放
$scope.clickStopPlay = function(){
var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
if (oWndInfo != null) {
var iRet = WebVideoCtrl.I_Stop();
}
};
//倒放
$scope.clickReversePlay = function(){
var myTbody = document.getElementById("timelinedata").firstElementChild.lastElementChild;
var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
szDeviceIdentify = $scope.optMemory.ip+"_"+$scope.optMemory.port,
iRtspPort = 554,
iStreamType = 1,
bZeroChannel = false,
iChannelID = $scope.channelIDs,//1,
szStartTime = myTbody.rows[1].cells[0].innerHTML,
szEndTime = myTbody.rows[myTbody.rows.length-1].cells[1].innerHTML;
if (null == szDeviceIdentify) {
return;
}
if (bZeroChannel) {// 零通道不支持倒放
return;
}
var reversePlayback = function () {
var iRet = WebVideoCtrl.I_ReversePlayback(szDeviceIdentify, {
iRtspPort: iRtspPort,
iStreamType: iStreamType,
iChannelID: iChannelID,
szStartTime: szStartTime,
szEndTime: szEndTime
});
if (0 == iRet) {
// "开始倒放成功!";
} else {
alert("开始倒放失败!");
}
};
if (oWndInfo != null) {// 已经在播放了,先停止
WebVideoCtrl.I_Stop({
success: function () {
reversePlayback();
}
});
} else {
reversePlayback();
}
};
//单帧
$scope.clickFrame = function(){
var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
if (oWndInfo != null) {
WebVideoCtrl.I_Frame({
success: function () {
// "单帧播放成功!";
},
error: function () {
alert("单帧播放失败!");
}
});
}
};
// 慢放
$scope.clickPlaySlow = function() {
var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
if (oWndInfo != null) {
WebVideoCtrl.I_PlaySlow({
success: function () {
//"慢放成功!";
},
error: function () {
alert("慢放失败!");
}
});
}
};
// 快放
$scope.clickPlayFast= function() {
var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
if (oWndInfo != null) {
WebVideoCtrl.I_PlayFast({
success: function () {
//"快放成功!";
},
error: function () {
alert("快放失败!");
}
});
}
};
});