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

586 lines
22 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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("快放失败!");
}
});
}
};
});