<!DOCTYPE html>
|
<html>
|
<head>
|
<meta charset="utf-8">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<title>对讲播放</title>
|
<link href="../../../bootstrap/css/button.css" type="text/css" rel="stylesheet">
|
<link href="../css/video.css" type="text/css" rel="stylesheet">
|
<script type="text/javascript" src="../../js/jquery.min.js"></script>
|
<script type="text/javascript" src="../../../js/lhgdialog.min.js"></script>
|
<script type="text/javascript" src="swfobject.js"></script>
|
<script type="text/javascript" src="jquery.query-2.1.7.js"></script>
|
<script type="text/javascript">
|
var isInitFinished = false;
|
var jsession = "";
|
var vehiIdno = "";
|
var devIdno = "";
|
var name = "";
|
var chnCount = 1;
|
var maxChnCount = 1;
|
var closeSecond = 0;
|
var stopIndex = 0;
|
var lang = new langZhCn();
|
var ip;
|
var port = 6605;
|
var isTalkback = false;
|
|
function langZhCn() {
|
this.loginError = "登陆失败";
|
this.jsessionError = "会话号不存在";
|
this.deviceNoExist = "找不到车辆信息";
|
this.errorVideoDevice = "这个设备不是视频设备";
|
this.vehicleNotOperate = "没有车辆或者设备操作权限";
|
this.closeTip = "秒后关闭视频";
|
this.nullMic = "您的电脑上没有麦克风,无法启动对讲";
|
this.micStop = "请先开启FLASH插件麦克风";
|
this.talkbackStart = "开始对讲";
|
this.talkbackStop = "停止对讲";
|
this.talkbackRequesting = "请求中";
|
this.talkbacking = "对讲中";
|
}
|
|
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.nullMic = "On your computer does not have a microphone, you can not start speaking";
|
this.micStop = "Please turned on FLASH plug-in microphone first";
|
this.talkbackStart = "Start Talkback";
|
this.talkbackStop = "Stop Talkback";
|
this.talkbackRequesting = "Requesting";
|
this.talkbacking = "Talkbacking";
|
}
|
|
$(document).ready(function(){
|
var params = {
|
allowFullscreen: "true",
|
allowScriptAccess: "always",
|
bgcolor: "#FFFFFF"
|
};
|
swfobject.embedSWF("player.swf", "cmsv6flash", "160", "100", "11.0.0", null, null, params, null);
|
setTimeout(initFlash, 50);
|
$("#closeTip").hide();
|
|
var channel = getUrlParameter("channel");
|
if (channel) {
|
maxChnCount = parseInt(channel, 10);
|
}
|
var temp = getUrlParameter("close");
|
if (temp) {
|
closeSecond = parseInt(temp, 10);
|
}
|
if (getUrlParameter("lang") == "zh") {
|
lang = new langEn();
|
}
|
|
$('#talkbackBtn').text(lang.talkbackStart);
|
|
//设备号
|
devIdno = getUrlParameter("devIdno");
|
//车牌号
|
vehiIdno = decodeURIComponent(getUrlParameter("vehiIdno"));
|
if(!devIdno && !vehiIdno) {//都为空
|
alert(lang.deviceNoExist);
|
}else {
|
if(devIdno) {
|
name = devIdno;
|
}else {
|
name = vehiIdno;
|
}
|
document.title = name;
|
|
//会话号
|
jsession = getUrlParameter("jsession");
|
//如果jsession为空,则登陆获取会话号
|
if(!jsession) {
|
login();
|
}else {
|
//加载设备信息
|
loadDeviceInfo();
|
}
|
}
|
});
|
|
//如果传入了用户名和密码,则登陆获取会话号
|
function login() {
|
var account = getUrlParameter("account");
|
var password = getUrlParameter("password");
|
var param = [];
|
param.push({name: 'account', value: account});
|
param.push({name: 'password', value: password});
|
this.doAjaxSubmit('StandardApiAction_loginEx.action', param, function(json, action, success) {
|
if(success) {
|
jsession = json.jsession;
|
//获取到会话号,则加载设备信息
|
loadDeviceInfo();
|
}else {
|
alert(lang.loginError);
|
}
|
});
|
}
|
|
//如果传入设备号,则直接判断设备号;
|
//如果没传入设备号,则判断传入的车牌号
|
//根据设备号或者车牌号获取设备信息,并判断是否有效和是否视频设备
|
//获取设备通道
|
function loadDeviceInfo() {
|
var param = [];
|
param.push({name: 'jsession', value: jsession});
|
param.push({name: 'devIdno', value: devIdno});
|
param.push({name: 'vehiIdno', value: vehiIdno});
|
|
this.doAjaxSubmit('StandardApiAction_getVideoDevice.action', param, function(json, action, success) {
|
if(success) {
|
//不是视频设备
|
if(!json.isVideoDevice) {
|
alert(lang.errorVideoDevice);
|
}else {
|
devIdno = json.devIdno;
|
//chnCount = json.chnCount; //对讲不解析通道数目
|
|
//加载完成再加载其他信息
|
loadOtherInfo();
|
}
|
}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 loadOtherInfo() {
|
if(!getUrlParameter("channel")) {
|
maxChnCount = chnCount;
|
}
|
//如果设备通道数量大于播放的最大窗口数量,则按播放的窗口数量计算
|
if(maxChnCount > 9) {
|
maxChnCount = 9;
|
}
|
if(chnCount > maxChnCount) {
|
chnCount = maxChnCount;
|
}
|
|
//播放视频
|
//previewVideo();
|
//开启对讲
|
starkTalkback();
|
}
|
|
//设置flash窗口数量
|
function loadFlashWindowNum(num) {
|
if (num == 1) {
|
swfobject.getObjectById('cmsv6flash').setWindowNum(1);
|
} else if (num > 1 && num <= 4) {
|
swfobject.getObjectById('cmsv6flash').setWindowNum(4);
|
} else {
|
swfobject.getObjectById('cmsv6flash').setWindowNum(9);
|
}
|
}
|
|
//初始化视频插件完成
|
function initFlash() {
|
if (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");
|
}
|
loadFlashWindowNum(maxChnCount);
|
var host = window.location.host;
|
ip = host.split(":")[0];
|
if(!ip || ip == 'localhost') {
|
ip = '127.0.0.1';
|
}
|
swfobject.getObjectById('cmsv6flash').setServerInfo(ip, port);
|
isInitFinished = true;
|
}
|
}
|
|
//开始预览视频
|
function previewVideo() {
|
//视频插件初始化完成
|
if (isInitFinished) {
|
//再一次设置flash窗口数量
|
loadFlashWindowNum(maxChnCount);
|
if (closeSecond != 0) {
|
$("#closeTip").show();
|
setTimeout(closeVideo, 1000);
|
}
|
for (var i = 0; i < chnCount; ++ i) {
|
swfobject.getObjectById('cmsv6flash').setBufferTime(i, 4);
|
swfobject.getObjectById('cmsv6flash').setVideoInfo(i, name + " - CH" + (i + 1));
|
swfobject.getObjectById('cmsv6flash').startVideo(i, jsession, devIdno, i, 1, true);
|
}
|
} 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 talkback() {
|
if (isTalkback) {
|
stopTalkback();
|
} else {
|
starkTalkback();
|
}
|
}
|
|
function setTalkbacking() {
|
isTalkback = true;
|
$('#talkbackBtn').text(lang.talkbackStop);
|
$('#talktip').text(lang.talkbackRequesting);
|
}
|
|
function starkTalkback() {
|
//视频插件初始化完成
|
if (isInitFinished) {
|
//再一次设置flash窗口数量
|
loadFlashWindowNum(1);
|
if (closeSecond != 0) {
|
$("#closeTip").show();
|
setTimeout(closeTalkback, 1000);
|
}
|
|
var ret = swfobject.getObjectById("cmsv6flash").startTalkback(jsession, devIdno, 0, ip, port);
|
//返回 0成功,1表示正在对讲,2表示没有mic,3表示禁用了mic
|
if (ret == 0) {
|
setTalkbacking();
|
} else if (ret == 1) {
|
setTalkbacking();
|
} else if (ret == 2) {
|
alert(lang.nullMic);
|
} else if (ret == 3) {
|
$.dialog({id:'talkbacktip', title: lang.micStop, content: '<img src="../../images/flash_mic_1.jpg"></img><img src="../../images/flash_mic_2.jpg"></img>', min:false, max:false, lock:true
|
, autoSize:true});
|
} else {
|
setTalkbacking();
|
}
|
} else {
|
setTimeout(starkTalkback, 500);
|
}
|
}
|
|
function stopTalkback() {
|
// for (var i = 0; i < 4; ++ i) {
|
// swfobject.getObjectById('cmsv6flash').stopVideo(i);
|
// }
|
if (closeSecond > 0) {
|
closeSecond -- ;
|
$("#spanCloseSecond").text(closeSecond + lang.closeTip);
|
setTimeout(closeTalkback, 1000);
|
} else {
|
$("#closeTip").hide();
|
swfobject.getObjectById('cmsv6flash').stopTalkback();
|
stopIndex ++ ;
|
if (stopIndex < chnCount) {
|
setTimeout(closeTalkback, 50);
|
}
|
isTalkback = false;
|
$('#talkbackBtn').text(lang.talkbackStart);
|
$('#talktip').text("");
|
}
|
}
|
|
function onTtxVideoMsg(index,type) {
|
if (!isTalkback) {
|
return ;
|
}
|
|
if (type == "startRecive" || type == "uploadRecive" || type == "loadRecive") {
|
$("#talktip").text(lang.talkbackRequesting);
|
} else if (type == "stopTalk") {
|
stopTalkback();
|
} else if (type == "playRecive") {
|
$("#talktip").text(lang.talkbacking);
|
} else if (type == "reciveStreamStop" || type == "reciveNetError" || type == "reciveStreamNotFound") {
|
$("#talktip").text(lang.talkbackRequesting);
|
} else if (type == "uploadNetClosed" || type == "uploadNetError") {
|
} else if (type == "upload") {
|
} else if (type == "uploadfull") {
|
} else {
|
}
|
}
|
|
//获取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];
|
}
|
|
//提交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);
|
}
|
});
|
}
|
</script>
|
</head>
|
<body bgcolor="#ffffff" width="160" heigth="120">
|
<div id="closeTip">
|
<p><span id="spanCloseSecond"></span></p>
|
</div>
|
<div id="cmsv6flash">
|
<h1>Alternative content</h1>
|
<p>
|
<a href="http://www.adobe.com/go/getflashplayer">
|
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
|
</a>
|
</p>
|
</div>
|
<div class="player-param">
|
<a id="talkbackBtn" class="button button-primary button-rounded button-small" onclick="talkback();">对讲</a>
|
</div>
|
<div >
|
<span id="talktip"></span>
|
</div>
|
</body>
|
</html>
|