var isInitFinished = false;//是否加载完视频插件???
|
var swfwidth = 0;//swf插件窗口宽度
|
var swfheight = 0;
|
var PlateNum = 0; //url中车牌号
|
var chnCount = 4;//默认通道数
|
var maxChnCount = 16; //最大窗口数
|
var loginServer = null;
|
var isLoadLoginServer = false;
|
var jsession = "";
|
var devIdno = "";// 车辆对应设备号
|
var vehiIdno = ""; //车牌号
|
var isShowResidualSeconds = false; //是否显示视频播放剩余秒数
|
var isSelectFilled = false;//加载完通道菜单
|
var closeSecond = 60;//自动关闭视频秒数
|
var stopIndex = 0;
|
var serverIp = "183.6.154.122";//请求的服务器ip
|
var serverPort = "8088";//请求的服务器端口
|
var isSuccessed = "";
|
var lang = new langZhCn();
|
|
|
function langZhCn() {
|
this.loginError = "登陆失败";
|
this.jsessionError = "会话号不存在";
|
this.deviceNoExist = "找不到车辆信息";
|
this.errorVideoDevice = "这个设备不是视频设备";
|
this.vehicleNotOperate = "没有车辆或者设备操作权限";
|
this.closeTip = "秒后关闭视频";
|
this.realtimeVideo = "实时视频";
|
this.replayVideo = "历史视频";
|
this.fourWindows = "四窗口";
|
this.nineWindows = "九窗口";
|
this.sixteenWindows = "十六窗口";
|
this.monitor = "监听";
|
this.talkback = "对讲";
|
this.start = "启动";
|
this.stop = "停止";
|
this.cannotOperate = "信息不完整,无法运行!";
|
this.isTalking = "已在对讲中";
|
this.noMic = "没有找到麦克风";
|
this.forbiddenMic = "您禁用了麦克风";
|
this.talkback_openMic = "请开启FLASH插件麦克风";
|
this.talkback_flashMicStep1 = "第一步,请在视频窗上右键菜单中选择设置";
|
this.talkback_flashMicStep2 = "第二步在设置窗口中 选择 “允许”,并勾选“记住”";
|
this.talkback_flashMicStep3 = "关闭设置,并重新启动对讲";
|
this.inTheRequest = "请求中……";
|
this.running = "运行中……";
|
this.haveStopped = "已停止";
|
this.monitoring = "监听中……";
|
this.talking = "对讲中……";
|
this.langType = "zh";
|
this.no_privi = "无权限!";
|
this.error_key = "授权码错误!";
|
|
this.notOnline = "设备不在线";
|
this.plateTypeErr = "车牌颜色不匹配!";
|
}
|
|
function langEn() {
|
this.loginError = "Login failed";
|
this.jsessionError = "Jsession error";
|
this.deviceNoExist = "Can't not find vehicles";
|
this.vehicleNotOperate = "No vehicle or device operating authority";
|
this.errorVideoDevice = "This device is not video device";
|
this.closeTip = " seconds later close video";
|
this.realtimeVideo = "Realtime Video";
|
this.replayVideo = "Replay Video";
|
this.fourWindows = "four windows";
|
this.nineWindows = "nine windows";
|
this.sixteenWindows = "sixteen windows";
|
this.monitor = "monitor";
|
this.talkback = "talkback";
|
this.start = "start";
|
this.stop = "stop";
|
this.cannotOperate = "Can not operated since lack of information!";
|
this.isTalking = "is already talking";
|
this.noMic = "Can't find the microphone!";
|
this.forbiddenMic = "The microphone have been forbidden!";
|
this.talkback_openMic = "Please open the microphone of the FLASH plug-in";
|
this.talkback_flashMicStep1 = "1. select Settings in the video window on the right-click menu";
|
this.talkback_flashMicStep2 = "The second step in the Settings window select 'Allow' and check the 'Remember'";
|
this.talkback_flashMicStep3 = "Close the settings and restart the intercom";
|
this.inTheRequest = "In The Request";
|
this.running = "Running...";
|
this.haveStopped = "Have Stopped";
|
this.monitoring = "Monitoring";
|
this.talking = "talking";
|
this.no_privi = "No permission!";
|
this.error_key = "The ak is wrong!";
|
this.notOnline = "device not online";
|
this.plateTypeErr = "License plate color does not match!";
|
}
|
|
function langChange() {
|
if (getUrlParameter("lang") == "en") {
|
lang = new langEn();
|
return false;
|
} else {
|
return true;
|
}
|
}
|
|
|
var errorType;
|
$(document).ready(function () {
|
langChange();
|
errorType = getUrlParameter("errorType");
|
$("#closeTip").hide();
|
$('#current').next().text(lang.realtimeVideo);
|
$('#history').next().text(lang.replayVideo);
|
$('#btn1').attr("title", lang.fourWindows);
|
$('#btn2').attr("title", lang.nineWindows);
|
$('#btn3').attr("title", lang.sixteenWindows);
|
$('#monitor').next().text(lang.monitor);
|
$('#talkback').next().text(lang.talkback);
|
$('#operationBtn').text(lang.start);
|
$('input:radio[name="voiceType"],.labelSelection').click(function () {
|
var selectType = $('input:radio[name="voiceType"]:checked').val();
|
if (selectType == "monitor") {
|
$('#monitorChns').attr("disabled", false);
|
} else {
|
$('#monitorChns').attr("disabled", true);
|
}
|
|
});
|
$('#operationBtn').click(function () {
|
var text = $('#operationBtn').text();
|
var type = $('input:radio[name="voiceType"]:checked').val();
|
if (text == lang.start) {
|
$('#status').text(lang.inTheRequest);
|
if (type == "monitor") {
|
startMonitor();
|
} else {
|
startTalkback();
|
}
|
//是否成功连接
|
if (isSuccessed) {
|
if (type == "monitor") {
|
$('#status').text(lang.monitoring);
|
} else {
|
$('#status').text(lang.talking);
|
}
|
$('#operationBtn').text(lang.stop);
|
$('input:radio[name="voiceType"],#monitorChns').attr("disabled", true);
|
} else {
|
$('#operationBtn').text(lang.start);
|
$('#status').text("");
|
if (type == "monitor") {
|
$('input:radio[name="voiceType"],#monitorChns').attr("disabled", false);
|
} else {
|
$('input:radio[name="voiceType"]').attr("disabled", false);
|
}
|
}
|
|
} else {
|
if (type == "monitor") {
|
stopMonitor();
|
$('#operationBtn').text(lang.start);
|
$('#status').text("");
|
$('input:radio[name="voiceType"],#monitorChns').attr("disabled", false);
|
} else {
|
stopTalkback();
|
$('#operationBtn').text(lang.start);
|
$('#status').text("");
|
$('input:radio[name="voiceType"]').attr("disabled", false);
|
}
|
}
|
});
|
var channel = getUrlParameter("channel");//1,2,3 0播放所有通道
|
if (channel) {
|
var split = channel.split(',');
|
for (var i = 0, j = channel.length; i < j; i++) {
|
if (channel[i] == 0) {
|
previewAll = true;
|
}
|
}
|
//需要播放的通道
|
if (!previewAll) {
|
previewChn = split;
|
}
|
} else {
|
previewAll = true;
|
}
|
|
|
// var channelNum=parseInt(channel, 10);
|
// if (!isNaN(channelNum)) {
|
// chnCount = channelNum;
|
// }
|
var temp = getUrlParameter("closeMins");
|
if (temp) {
|
closeSecond = parseInt(temp, 10) * 60;
|
}
|
// var obj_ = flashChecker(lang.langType);
|
// if (obj_ && obj_.f == 1) {
|
// } else {
|
// return;
|
// }
|
//加载页面
|
loadPage();
|
getServer();
|
//配置页面信息
|
$('#btn1').click(function () {
|
doSwitchWindow(4);
|
});
|
$('#btn2').click(function () {
|
doSwitchWindow(9);
|
});
|
$('#btn3').click(function () {
|
doSwitchWindow(16);
|
});
|
$('#videoTitle').val(vehiIdno);
|
});
|
var previewAll = false;
|
var previewChn = [];
|
|
//填充通道菜单选项
|
function fillOptions() {
|
for (var i = 0; i < chnCount; i++) {
|
$('#monitorChns').append('<option value="' + i + '">CH' + (i + 1) + '</option>');
|
}
|
isSelectFilled = true;
|
}
|
|
//视频插件要初始化完成后才能调用
|
//开始监听 startListen(jsession, devIdno, channel, ip, port)
|
function startMonitor() {
|
isSuccessed = false;
|
if (isInitFinished && isSelectFilled) {
|
//获取当前选择通道
|
var c = $('#monitorChns option:selected').val();
|
//开始监听
|
swfobject.getObjectById("cmsv6flash").startListen(jsession, devIdno, c, serverIp, serverPort);
|
isSuccessed = true;
|
} else {
|
alert(lang.cannotOperate);
|
}
|
}
|
|
//停止监听
|
function stopMonitor() {
|
swfobject.getObjectById("cmsv6flash").stopListen();
|
}
|
|
//视频插件要初始化完成后才能调用
|
//开始对讲
|
function startTalkback() {
|
isSuccessed = false;
|
if (isInitFinished && isSelectFilled) {
|
//开始对讲
|
var ret = swfobject.getObjectById("cmsv6flash").startTalkback(jsession, devIdno, 0, serverIp, serverPort);
|
//返回 0成功,1表示正在对讲,2表示没有mic,3表示禁用了mic。
|
if (Number(ret) == 1) {
|
$.dialog.tips(lang.isTalking, 2);
|
isSuccessed = true;
|
return;
|
} else if (Number(ret) == 2) {
|
alert(lang.noMic);
|
return;
|
} else if (Number(ret) == 3) {
|
$.dialog({
|
id: 'talkbacktip',
|
title: lang.talkback_openMic,
|
content: 'url:talkbacktipSP.html',
|
min: false,
|
max: false,
|
lock: true
|
,
|
autoSize: true
|
});
|
return;
|
}
|
isSuccessed = true;
|
} else {
|
alert(lang.cannotOperate);
|
}
|
}
|
|
////启动对讲 //0成功,1表示正在对讲,2表示没有mic,3表示禁用了mic
|
//var ret = ttxVideo.startTalkback(device.getIdno());
|
//if (ret == 0) {
|
// //$("input[name='listing']").attr("disabled", "disabled");
|
// this.isTalking = true;
|
// $("#talkbackTip").html(lang.requiring);
|
// $("#btnTalkback").html(lang.stop);
|
//} else if (ret == 1) {
|
// //一般都不会到此接口
|
//} else if (ret == 2) {
|
// alert(lang.talkback_noMic);
|
//} else if (ret == 3) {
|
// $.dialog({id:'talkbacktip', title: lang.talkback_openMic, content: 'url:LocationManagement/talkbacktip.html', min:false, max:false, lock:true
|
// , autoSize:true});
|
//} else {
|
// //一般都不会到此接口
|
// //除非视频插件没有初始化完成
|
//}
|
|
//停止对讲
|
function stopTalkback() {
|
swfobject.getObjectById("cmsv6flash").stopTalkback();
|
}
|
|
/**
|
* 第三方平台车牌号和平台内不一致问题
|
*/
|
var plateColor = null;
|
function getVehiIdno() {
|
// 车牌号 和 车牌名称
|
var plateName = decodeURIComponent(getUrlParameter("vehno"));
|
plateColor = getUrlParameter("color");
|
return plateName;
|
}
|
|
function loadPage() {
|
setPanelWidth();
|
//载入视频插件
|
initPlayer();
|
if (errorType) {
|
if (errorType == 1) {
|
alert(lang.no_privi);
|
return;
|
} else if (errorType == 2) {
|
alert(lang.error_key);
|
return;
|
}
|
}
|
//获取车牌号
|
vehiIdno = decodeURIComponent(getUrlParameter("PlateNum"));
|
if (!vehiIdno) {//为空
|
vehiIdno = getVehiIdno();
|
if (!plateColor) {
|
alert(lang.plateTypeErr);
|
return;
|
}
|
previewAll = true;
|
}
|
if (!vehiIdno) {
|
alert(lang.deviceNoExist);
|
return;
|
}
|
var jsession_ = getUrlParameter("jsession")
|
if (jsession_) {
|
//获取到会话号s
|
jsession = jsession_;
|
//取得会话号则加载视频
|
loadDeviceInfo();
|
} else {
|
login();
|
}
|
}
|
|
//如果传入了用户名和密码,则继续加载信息
|
function login() {
|
var account = getUrlParameter("account");
|
var password = getUrlParameter("password");
|
// 其他方式传参
|
if (!account && !password) {
|
account = getUrlParameter("id");
|
password = getUrlParameter("pwd");
|
}
|
|
var md5 = getUrlParameter("md5");
|
var param = {};
|
param.account = account;
|
param.password = password;
|
param.md5 = md5;
|
// param.push({name: 'account', value: account});
|
// param.push({name: 'password', value: password});
|
// param.push({name: 'md5', value: md5});
|
doAjaxSubmit('http://v1.966120.com.cn:8088/StandardApiAction_login.action', param, function (json, action, success) {
|
if (success) {
|
//获取到会话号
|
jsession = json.jsession;
|
//取得会话号则加载视频
|
loadDeviceInfo();
|
} else {
|
alert("登录失败!");
|
}
|
});
|
}
|
|
|
//初始化视频插件
|
function initPlayer() {
|
//视频插件初始化参数
|
var params = {
|
allowFullscreen: "true",
|
allowScriptAccess: "always",
|
bgcolor: "#FFFFFF",
|
wmode: "transparent"
|
};
|
//初始化flash
|
// swfobject.embedSWF("player.swf", "cmsv6flash", swfwidth, swfheight, "11.0.0", null, null, params, null);
|
ttxVideoAll.init("cmsv6flash", swfwidth, swfheight, params);
|
setTimeout(initFlash, 50);
|
}
|
|
//设置flash窗口数量
|
function loadFlashWindowNum(num) {
|
if (num <= 4) {
|
swfobject.getObjectById('cmsv6flash').setWindowNum(4);
|
} else if (num > 5 && num <= 9) {
|
swfobject.getObjectById('cmsv6flash').setWindowNum(9);
|
} else {
|
swfobject.getObjectById('cmsv6flash').setWindowNum(16);
|
}
|
}
|
|
//如果传入设备号,则直接判断设备号;
|
//如果没传入设备号,则判断传入的车牌号
|
//根据设备号或者车牌号获取设备信息,并判断是否有效和是否视频设备
|
//获取设备通道
|
function loadDeviceInfo() {
|
var param = {};
|
param.jsession = jsession;
|
//param.vehiIdno = vehiIdno;
|
param.devIdno = vehiIdno;
|
if (plateColor) {
|
param.plateType = plateColor;
|
}
|
// param.push({name: 'jsession', value: jsession});
|
// param.push({name: 'vehiIdno', value: vehiIdno});
|
this.doAjaxSubmit('http://v1.966120.com.cn:8088/StandardApiAction_getVideoDevice.action', param, function (json, action, success) {
|
if (success) {
|
if (json.plateTypeErr && json.plateTypeErr == 1) {
|
alert(lang.plateTypeErr);
|
return;
|
}
|
//不是视频设备
|
if (!json.isVideoDevice) {
|
alert(lang.errorVideoDevice);
|
} else {
|
devIdno = json.devIdno;
|
chnCount = json.chnCount;
|
//设备在线
|
if (json.isOnline != null && json.isOnline == 1) {
|
//播放视频
|
previewVideo();
|
fillOptions();
|
} else {//设备不在线
|
alert(lang.notOnline);
|
}
|
}
|
} else {
|
//没有操作权限
|
if (json) {
|
if (json.result == 5) {
|
alert(lang.jsessionError);
|
} else if (json.result == 8) {
|
alert(lang.vehicleNotOperate);
|
} else {
|
alert(lang.deviceNoExist);
|
}
|
} else {
|
alert(lang.deviceNoExist);
|
}
|
}
|
});
|
}
|
|
|
//开始预览视频
|
function previewVideo() {
|
//loadFlashWindowNum(chnCount);
|
//视频插件初始化完成
|
if (isInitFinished && isLoadLoginServer) {
|
// //再一次设置flash窗口数量
|
//loadFlashWindowNum(maxChnCount);
|
loadFlashWindowNum(chnCount);
|
if (closeSecond != 0) {
|
if (isShowResidualSeconds) {
|
$("#closeTip").show();
|
}
|
setTimeout(closeVideo, 1000);
|
}
|
|
for (var i = 0; i < chnCount; i++) {
|
//其他窗体不播放 展示可以按钮播放
|
swfobject.getObjectById('cmsv6flash').setVideoInfo(i, vehiIdno + " - CH" + (i + 1));
|
swfobject.getObjectById('cmsv6flash').startVideo(i, jsession, devIdno, i, 1, true);
|
if (previewAll) {} else {
|
//是否需要展示播放
|
var isPerview = false;
|
if (previewChn && previewChn.length > 0) {
|
for (var j = 0; j < previewChn.length; j++) {
|
var chnIndex = previewChn[j];
|
if (chnIndex == (i + 1)) {
|
isPerview = true;
|
break;
|
}
|
}
|
}
|
if (!isPerview) {
|
swfobject.getObjectById('cmsv6flash').stopVideo(i);
|
}
|
}
|
}
|
} else {
|
setTimeout(previewVideo, 500);
|
}
|
}
|
|
|
|
|
|
function closeVideo() {
|
// for (var i = 0; i < 4; ++ i) {
|
// swfobject.getObjectById('cmsv6flash').stopVideo(i);
|
// }
|
if (closeSecond > 0) {
|
closeSecond--;
|
$("#spanCloseSecond").text(closeSecond + lang.closeTip);
|
setTimeout(closeVideo, 1000);
|
} else {
|
$("#closeTip").hide();
|
swfobject.getObjectById('cmsv6flash').stopVideo(stopIndex);
|
stopIndex++;
|
if (stopIndex < chnCount) {
|
setTimeout(closeVideo, 50);
|
}
|
}
|
}
|
|
//视频插件是否加载完成
|
function initFlash() {
|
if (typeof swfobject == "undefined" || swfobject.getObjectById("cmsv6flash") == null ||
|
typeof swfobject.getObjectById("cmsv6flash").setWindowNum == "undefined") {
|
setTimeout(initFlash, 50);
|
} else {
|
//设置视频插件的语言
|
if (getUrlParameter("lang") == "en") {
|
swfobject.getObjectById('cmsv6flash').setLanguage("en.xml");
|
} else {
|
swfobject.getObjectById('cmsv6flash').setLanguage("cn.xml");
|
}
|
//先将全部窗口创建好
|
swfobject.getObjectById("cmsv6flash").setWindowNum(16);
|
//再配置当前的窗口数目
|
loadFlashWindowNum(chnCount);
|
//设置视频插件的服务器
|
getLoginServer();
|
isInitFinished = true;
|
// swfobject.getObjectById("cmsv6flash").setServerInfo("127.0.0.1", "6605");
|
// playAllVideos(num);
|
}
|
}
|
|
//播放所有视频
|
function playAllVideos(num) {
|
for (i = 0; i < num; i++) {
|
playVideo(i);
|
}
|
// setTimeout("stopAllVideos(num)", 3 * 60 * 1000);
|
}
|
|
//停止所有视频
|
function stopAllVideos(num) {
|
for (i = 0; i < num; i++) {
|
stopVideo(i);
|
}
|
}
|
|
//视频插件要初始化完成后才能调用
|
//播放视频
|
function playVideo(index) {
|
//停止播放视频
|
swfobject.getObjectById("cmsv6flash").stopVideo(index);
|
//设置视频窗口标题
|
swfobject.getObjectById("cmsv6flash").setVideoInfo(index, vehiIdno + "-CH" + (index + 1));
|
//播放视频
|
swfobject.getObjectById("cmsv6flash").startVideo(index, jsession, devIdno, 0, 1, true);
|
}
|
|
//停止播放视频
|
function stopVideo(index) {
|
swfobject.getObjectById("cmsv6flash").stopVideo(index);
|
}
|
|
////重置视频窗口
|
//function reSetVideo(index) {
|
// swfobject.getObjectById("cmsv6flash").reSetVideo(index);
|
//}
|
|
|
//获取URL参数信息
|
function getUrlParameter(name) {
|
if (location.search == '') {
|
return '';
|
}
|
|
var o = {};
|
var search = location.search.replace(/\?/, '');//只替换第一个问号,如果参数中带有问号,当作普通文本
|
var s = search.split('&');
|
for (var i = 0; i < s.length; i++) {
|
o[s[i].split('=')[0]] = s[i].split('=')[1];
|
}
|
return o[name] == undefined ? '' : o[name];
|
}
|
|
//切换窗口数目
|
function doSwitchWindow(num) {
|
swfobject.getObjectById('cmsv6flash').setWindowNum(num);
|
// maxChnCount=num;
|
// loadDeviceInfo();
|
}
|
|
//提交ajax
|
function doAjaxSubmit(action, params, callback) {
|
$.ajax({
|
type: 'POST',
|
url: action,
|
data: params,
|
cache: false,/*禁用浏览器缓存*/
|
dataType: 'json',
|
success: function (json) {
|
if (json.result == 0) {
|
callback.call(this, json, action, true);
|
} else {
|
callback.call(this, json, action, false);
|
}
|
},
|
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
try {
|
if (p.onError) p.onError(XMLHttpRequest, textStatus, errorThrown);
|
} catch (e) {
|
}
|
callback.call(this, null, action, false);
|
}
|
});
|
}
|
|
/**
|
* 判断clientIp与url是否相同,取相同的clientIp 公用方法
|
*/
|
function getLoginServer() {
|
if (isLoadLoginServer) {
|
serverIp = loginServer.ip;
|
serverPort = loginServer.port;
|
swfobject.getObjectById('cmsv6flash').setServerInfo(serverIp, serverPort);
|
// isInitFinished = true;
|
// setViewSize();
|
// setBufferTime();
|
// setPanelWidth();
|
} else {
|
setTimeout(getLoginServer, 50);
|
}
|
}
|
|
//获取服务器地址
|
function getServer() {
|
$.myajax.jsonPost('http://v1.966120.com.cn:8088/StandardLoginAction_getLoginServer.action', null, false, function (json, success) {
|
if (success) {
|
var server = JSON.parse(atob(json.loginServer));
|
var lstSvrIp = [];
|
lstSvrIp.push(server[0].clientIp);
|
lstSvrIp.push(server[0].lanip);
|
lstSvrIp.push(server[0].clientIp2);
|
lstSvrIp.push(server[0].clientIp3);
|
loginServer = {};
|
loginServer.ip = getComServerIp(lstSvrIp);
|
loginServer.port = server[0].clientPort;
|
isLoadLoginServer = true;
|
}
|
}, null);
|
}
|
|
function setPanelWidth() {
|
|
// var _width = document.body.clientWidth;
|
// var _height = document.body.clientHeight;
|
var _width = min($(window).innerWidth(), document.body.clientWidth, document.documentElement.clientWidth);
|
var _height = min($(window).innerHeight(), document.body.clientHeight, document.documentElement.clientHeight) - 39;
|
if (_width < 600) {
|
$('body').width(600);
|
swfwidth = 600 - 7;
|
$('#bottomSelection').width(swfwidth);
|
} else {
|
$('body').width(_width - 8);
|
swfwidth = _width - 15;
|
$('#bottomSelection').width(swfwidth);
|
}
|
swfheight = _height - 39 - $('#bottomSelection').height();
|
$("#cmsv6flash").width(swfwidth);
|
$("#cmsv6flash").height(swfheight);
|
}
|
|
function min(a, b, c) {
|
var i = a;
|
if (a > b) {
|
i = b;
|
} else if (i > c) {
|
i = c
|
}
|
return c;
|
}
|