var layer;
|
var timer;
|
var table;
|
var cameraData;
|
|
$(function () {
|
layui.use(['layer', 'table'], function () {
|
layer = layui.layer;
|
table = layui.table;
|
});
|
|
showPtz = function(){
|
$("#ptz-block").css("opacity",1);
|
};
|
|
disPtz = function(){
|
$("#ptz-block").css("opacity",0);
|
};
|
|
//初始化渲染播放列表
|
renderList();
|
});
|
|
/**
|
* 点击播放
|
* @param cameraId
|
*/
|
play = function (data) {
|
layer.msg("正在获取播放信息……");
|
|
var data = {
|
id: data.id,
|
playType: data.playType
|
};
|
$.ajax({
|
type: 'POST',
|
url: "../../basic/security/get-media",
|
dataType: 'JSON',
|
contentType: "application/json;charset=UTF-8",
|
data: JSON.stringify(data),
|
success: function (result) {
|
play2(result);
|
},
|
error: function (result) {
|
play2(result);
|
}
|
});
|
};
|
|
play2 = function (data) {
|
|
if (!data) {
|
layer.alert("未获取到当前摄像头播放信息!!");
|
return;
|
}
|
|
cameraData = data;
|
if(PlayType.VLC == data.playType){ //说明使用本地VLC播放
|
$("#easyPlayer").css('display','none');
|
$("#iframePlayer").css('display','none');
|
|
$("#vlcPlayer").css('display','block');
|
var html = '';
|
html += '<object type="application/x-vlc-plugin"' +
|
'events="true" width="100%" height="100%"' +
|
'pluginspage="http://www.videolan.org"' +
|
'th:codebase="@{../../static/plugins/vlc/npapi-vlc-2.2.2.tar.xz}">' +
|
'<param name="mrl" value="' + data.playAddr + '"/>'+
|
'<param name="volume" value="50"/>' +
|
'<param name="autoplay" value="true"/>' +
|
'<param name="loop" value="false"/>' +
|
'<param name="fullscreen" value="true"/>' +
|
'<param name="toolbar" value="false"/>' +
|
'</object>';
|
$("#vlcPlayer").html(html);
|
|
}else if (data.playIframe) {//说明使用IFRAME播放
|
layer.msg("开始启动播放……");
|
|
$("#easyPlayer").css('display','none');
|
$("#vlcPlayer").css('display','none');
|
$("#iframePlayer").css('display','block');
|
|
$("#iframePlayer").attr("src", data.playIframe);
|
|
} else if(data.playAddr){
|
layer.msg("开始启动播放……");
|
//播放视频
|
|
$("#iframePlayer").css('display','none');
|
$("#vlcPlayer").css('display','none');
|
$("#easyPlayer").css('display','block');
|
|
$('#easyPlayer').attr('video-title', data.name);
|
$('#easyPlayer').attr('video-url', data.playAddr);
|
|
//定时器-保活直播
|
if (timer) clearInterval(timer);
|
|
timer = setInterval(function () {
|
keepAlive();
|
}, 15 * 1000);
|
|
} else {
|
layer.alert("未获取到当前摄像头播放信息!!");
|
}
|
};
|
|
|
function renderList() {
|
if (!listCamera || listCamera.length == 0) {
|
return;
|
}
|
var eleTable = document.getElementById("cameraList");
|
var _tr;
|
var _td;
|
listCamera.forEach(function (data) {
|
_tr = document.createElement("tr");
|
_tr.ondblclick = function () {
|
play(data);
|
};
|
|
_td = document.createElement("td");
|
_td.innerText = data.name;
|
_tr.appendChild(_td);
|
|
_td = document.createElement("td");
|
_td.innerText = data.type == "01" ? "枪机" : "球机";
|
_tr.appendChild(_td);
|
|
_td = document.createElement("td");
|
_td.innerText = data.status == "OFF" ? "离线" : "在线";
|
_tr.appendChild(_td);
|
|
eleTable.appendChild(_tr);
|
});
|
}
|
|
|
//--------------------------视频管理------------------------//
|
/**
|
* 保活,msg参数为了防止浏览器缓存
|
*/
|
function keepAlive() {
|
var data = {
|
playType: cameraData.playType,
|
sn: cameraData.sn,
|
ip: cameraData.ipIn,
|
msg: Math.random()
|
};
|
$.ajax({
|
type: 'POST',
|
url: "../../basic/security/keep-alive",
|
dataType: 'JSON',
|
contentType: "application/json;charset=UTF-8",
|
data: JSON.stringify(data),
|
success: function (result) {
|
},
|
error: function (result) {
|
}
|
});
|
}
|
|
/**
|
* 播放还是暂停
|
*/
|
function playStop() {
|
var videL = $('#easyPlayer');
|
if (videL.paused) {
|
videL.play();
|
} else {
|
videL.pause();
|
}
|
}
|
|
/**
|
* 云台控制 -转向控制
|
* @param tag 执行命令 1=上,2=下,3=左,4=右,5=左上,6=左下,7=右上,8=右下,0=停止,9=变倍小,10 = 变倍加
|
*
|
*/
|
function mouseDownPTZControl(tag) {
|
|
if ("01" == cameraData.type) {
|
layer.msg("枪机摄像头不支持云台控制!");
|
return;
|
}
|
|
layer.msg("开始调用云平台……",
|
{time: 3000, shift: 5, offset: "rb"},
|
function () {
|
});
|
|
var data = {
|
playType: cameraData.playType,
|
sn: cameraData.sn,
|
ip: cameraData.ipIn,
|
command: tag
|
};
|
$.ajax({
|
type: 'POST',
|
url: "../../basic/security/ptz-media",
|
dataType: 'JSON',
|
contentType: "application/json;charset=UTF-8",
|
data: JSON.stringify(data),
|
success: function (result) {
|
if ("ERROR" == result.code) {
|
layer.alert(result.msg);
|
} else {
|
layer.msg("执行成功……",
|
{time: 3000, shift: 5, offset: "rb"},
|
function () {
|
});
|
}
|
},
|
error: function (result) {
|
layer.alert(result.msg);
|
}
|
});
|
}
|
|
/**
|
* 云台控制 -转向停止
|
* @param tag
|
*/
|
function mouseUpPTZControl() {
|
if ("01" == cameraData.type) {
|
return;
|
}
|
|
var data = {
|
playType: cameraData.playType,
|
sn: cameraData.sn,
|
ip: cameraData.ipIn,
|
command: "0"
|
};
|
$.ajax({
|
type: 'POST',
|
url: "../../basic/security/ptz-media",
|
dataType: 'JSON',
|
contentType: "application/json;charset=UTF-8",
|
data: JSON.stringify(data),
|
success: function (result) {
|
if ("ERROR" == result.code) {
|
layer.alert(result.msg);
|
}
|
},
|
error: function (result) {
|
layer.alert(result.msg);
|
}
|
});
|
}
|
|
/**
|
* 云台控制 -预置位置调用
|
*/
|
function clickGoPreset() {
|
layer.msg("开始调用云平台……",
|
{time: 3000, shift: 5, offset: "rb"},
|
function () {
|
});
|
|
var data = {
|
playType: cameraData.playType,
|
sn: cameraData.sn,
|
ip: cameraData.ipIn,
|
command: "2",
|
preset: 1
|
};
|
$.ajax({
|
type: 'POST',
|
url: "../../basic/security/ptz-preset",
|
dataType: 'JSON',
|
contentType: "application/json;charset=UTF-8",
|
data: JSON.stringify(data),
|
success: function (result) {
|
if ("ERROR" == result.code) {
|
layer.alert(result.msg);
|
} else {
|
layer.msg("执行成功……",
|
{time: 3000, shift: 5, offset: "rb"},
|
function () {
|
});
|
}
|
},
|
error: function (result) {
|
layer.alert(result.msg);
|
}
|
});
|
}
|
|
/**
|
* PTZZoomout 变倍 +
|
* @constructor
|
*/
|
function PTZZoomout() {
|
// if ("01" == cameraData.type) {
|
// layer.msg("枪机摄像头不支持云台控制!");
|
// return;
|
// }
|
|
layer.msg("开始调用云平台……",
|
{time: 3000, shift: 5, offset: "rb"},
|
function () {
|
});
|
|
var data = {
|
playType: cameraData.playType,
|
sn: cameraData.sn,
|
ip: cameraData.ipIn,
|
command: "10"
|
};
|
$.ajax({
|
type: 'POST',
|
url: "../../basic/security/ptz-media",
|
dataType: 'JSON',
|
contentType: "application/json;charset=UTF-8",
|
data: JSON.stringify(data),
|
success: function (result) {
|
if ("ERROR" == result.code) {
|
layer.alert(result.msg);
|
} else {
|
layer.msg("执行成功……",
|
{time: 3000, shift: 5, offset: "rb"},
|
function () {
|
});
|
}
|
},
|
error: function (result) {
|
layer.alert(result.msg);
|
}
|
});
|
}
|
|
/**
|
* PTZZoomout 变倍 -
|
* @constructor
|
*/
|
function PTZZoomIn() {
|
// if ("01" == cameraData.type) {
|
// layer.msg("枪机摄像头不支持云台控制!");
|
// return;
|
// }
|
|
layer.msg("开始调用云平台……",
|
{time: 3000, shift: 5, offset: "rb"},
|
function () {
|
});
|
|
var data = {
|
playType: cameraData.playType,
|
sn: cameraData.sn,
|
ip: cameraData.ipIn,
|
command: "9"
|
};
|
$.ajax({
|
type: 'POST',
|
url: "../../basic/security/ptz-media",
|
dataType: 'JSON',
|
contentType: "application/json;charset=UTF-8",
|
data: JSON.stringify(data),
|
success: function (result) {
|
if ("ERROR" == result.code) {
|
layer.alert(result.msg);
|
} else {
|
layer.msg("执行成功……",
|
{time: 3000, shift: 5, offset: "rb"},
|
function () {
|
});
|
}
|
},
|
error: function (result) {
|
layer.alert(result.msg);
|
}
|
});
|
}
|
|
/**
|
* PTZZoomout 变倍停止
|
* @constructor
|
*/
|
function PTZZoomStop() {
|
}
|