'use strict'; var token = ""; var device_list = []; var myPlayer = ""; var presetPos = new Array(); var pictureId = ""; var storageId = ""; var videoelem = ""; var flvPlayer = ""; var flvPlayerList = []; var playsite = 1; //播放的第几窗口 var replay = 0; var chooseplaysite = 0; //选中的第几窗口,默认为0代表没有选择 var kk=0; getValue(); let ids = ['34130100001310000002','34130100001310000004','34130100001310000008','34130100001310000005'] ; let ids1 = ['34130100001310000003','34130100001310000001','34130100001310000007','34130100001310000006'] ; function getData(id){ //alert(id) var data; $.ajax({ type:"POST", url:bonuspath +'/backstage/seat/getinfoBysxt', data:{id: id}, async: false, success:function(data) { localStorage.setItem("dataobj", data); data = JSON.parse(data); var html; for(var i=0;i"+data.obj.list[i].seat+':'+data.obj.list[i].name+""; // $("#overlay").append(html); }*/ } } return data; }, error:function(data){ alert("服务器") } }) } function canvasVideo(){ var kc=$("#kc").val(); var zw=$("#zw").val(); if(kc !="" && zw !=""){ var v = document.getElementById("video1"); var c = document.getElementById("mycanvas"); var height = c.height; var width = c.width; var ctx = c.getContext('2d'); ctx.drawImage(v, 0, 0, width, height); var dataURL = c.toDataURL("image/png", 0.1); var imgData = dataURL.replace("data:image/png;base64,", ""); $.ajax({ url: bonuspath+"/backstage/camera/img_upload", data: { "imgBase64Data": imgData, kc:kc, zw:zw }, dataType: 'json', type: 'post', timeout: 100000, success: function(data) { $("#jietuPicture").attr('src',data); }, error: function(xhr, type, errorThrown) { console.log(errorThrown); } }); }else{ alert("请输入给考生的考场号和座位号") } } //播放延迟处理 function progress(e) { var bf = e.srcElement.buffered; var currentTime = e.srcElement.currentTime; if (bf.length > 0) { let end = bf.end(0); if (end - currentTime > 1.5) { e.srcElement.currentTime = end - 0.1; } } } //post请求 function requestPost(router, params,url, callback) { var self = this; $.ajax({ type: 'post', url: url + router, data: params, traditional: true, dataType: 'json', async: true, complete: function (rv) { if (typeof callback == 'function') callback(rv) } }) } //get请求 function requestGet(router, callback) { var self = this; var url = _cf.q2http_url + router; $.ajax({ type: 'get', url: url, dataType: 'json', async: true, complete: function (rv) { if (typeof callback == 'function') callback(rv) } }) } //创建平台连接 function connect() { var self = this; var params = { "address": _cf.connParams.address, "port": _cf.connParams.port, "user": _cf.connParams.user, "password": _cf.connParams.password, "epid": _cf.connParams.epid, "fixaddr": _cf.connParams.bfix } requestPost('login', params,_cf.q2http_url , function (rv) { let self = this; var result = { errcode: -1, token: '' } var respJSON = rv.responseJSON; if (respJSON.hasOwnProperty('errcode')) { result.errcode = respJSON.errcode; } if (respJSON.hasOwnProperty('token')) { result.token = respJSON.token; result.errcode = 0; token = result.token; fetch_device(0, 200); //存储设备列表 device_resource_tree(); } for(let i=0;i { console.log(rv); var respJSON = rv.responseJSON; var res = respJSON.obj; var videoList = []; var childNodes = new Array(); for (let j = 0; j < res.length; j++) { var resource = res[j]; if (resource.type != "IV") { continue; } else { videoList = resource var iconsuffix = "offline"; var icon = "icon-camera-" + iconsuffix; if (newList.onlineFlag == 1) { iconsuffix = "online"; icon = "icon-camera-" + iconsuffix; } } childNodes.push({ id: newList.id + "_" + videoList.ballIndex, text: videoList.name, iconCls: icon, attributes: { newList: newList, self: videoList } }); if (childNodes.length > 0) { //删除load节点 for (var i = 0; i < childs.length; i++) { $('#resource_tree').tree('remove', childs[i].target); } $('#resource_tree').tree('append', { parent: node.target, data: childNodes }); } } }); } } } }) } function CheckifSelectExamNo(){ if($("#kc").val() ==""){ alert("请输入本场考试的考场号") return false; } } function playvideo(puid,idx,site) { //alert("node"+node) //校验是否选择考场号 // CheckifSelectExamNo(); //console.log('node',node) //var puid = node.attributes.newList.id; //var idx = node.attributes.self.ballIndex; //播视频接口 let url = _cf.q2http_url + "stream.flv?puid=" + puid + "&idx=" + idx + "&stream=0&token=" + token; if (flvjs.isSupported()) { var videoElement = ""; //4个窗口循环播放 if (site == 2) { videoElement = document.getElementById('video2'); } else if (site == 3) { videoElement = document.getElementById('video3'); } else if (site == 4) { videoElement = document.getElementById('video4'); } else if (site == 1) { videoElement = document.getElementById('video1'); } else if (site == 5) { videoElement = document.getElementById('video5'); } else if (site == 6) { videoElement = document.getElementById('video6'); } else if (site == 7) { videoElement = document.getElementById('video7'); } else if (site == 8) { videoElement = document.getElementById('video8'); } //循环播放后清除对应窗口数据缓存 if (flvPlayerList && flvPlayerList.length > 0 && replay == 1) { //去掉空播放对象 flvPlayerList.forEach(function (item, index) { if (!item) { flvPlayerList.splice(index, 1); } }); for (let v of flvPlayerList) { if (v.key == playsite) { if (v.value) { v.value.unload(); v.value.detachMediaElement(); v.value.destroy(); v.value = ""; } } } } videoElement.controls = false; flvPlayer = flvjs.createPlayer({ type: 'flv', url: url, isLive: true, hasAudio: false }, { enableWorker: false, autoCleanupSourceBuffer: true, //清理缓冲区 enableStashBuffer: false, stashInitialSize: 128, // 减少首桢显示等待时长 statisticsInfoReportInterval: 600 }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); setTimeout(function () { flvPlayer.play(); }, 100); flvPlayer.on("scriptdata_arrived", function (e) { console.log("视频正在播放"); //记下存放flvPlayer flvPlayerList.push({ key: playsite, value: flvPlayer }); //去掉空播放对象 flvPlayerList.forEach(function (item, index) { console.log(item); if (!item.value) { flvPlayerList.splice(index, 1); } }); //如果4个播放窗口播完开始循环播放,从第一个窗口播放 if (playsite < 8) { playsite += 1; } else { playsite = 1; replay = 1; } }); flvPlayer.on("error", function (e) { //出现错误,重新播放 console.log("出现错误,重新播放"); console.log('url', url); setTimeout(() => { if (flvPlayerList && flvPlayerList.length) { flvPlayerList[playsite - 1].unload(); flvPlayerList[playsite - 1].detachMediaElement(); flvPlayerList[playsite - 1].destroy(); flvPlayerList[playsite - 1] = "" } var videoElement = document.getElementById('video1'); if (playsite == 2) { videoElement = document.getElementById('video2'); } else if (playsite == 3) { videoElement = document.getElementById('video3'); } else if (playsite == 4) { videoElement = document.getElementById('video4'); } else if (playsite == 1) { videoElement = document.getElementById('video1'); } else if (playsite == 5) { videoElement = document.getElementById('video5'); } else if (playsite == 6) { videoElement = document.getElementById('video6'); } else if (playsite == 7) { videoElement = document.getElementById('video7'); } else if (playsite == 8) { videoElement = document.getElementById('video8'); } if (videoelem) { videoElement = videoelem; } videoElement.controls = false; var flvPlayer = new flv.createPlayer({ type: 'flv', isLive: true, hasAudio: false, url: url }, { enableWorker: false, autoCleanupSourceBuffer: true, enableStashBuffer: false, stashInitialSize: 128, // 减少首桢显示等待时长 statisticsInfoReportInterval: 600 }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); flvPlayer.play(); }, 100) }); } else { createPlayer(); myPlayer.src(url); myPlayer.on("error", e => { setTimeout(e => { myPlayer.src(url); myPlayer.load(url); myPlayer.play(); }, 1000); }); myPlayer.on("ended", e => { setTimeout((e) => { myPlayer.src(url); myPlayer.load(url); myPlayer.play(); }, 1000); }) } } function playvideo1(puid,idx,site) { //alert("node"+node) //校验是否选择考场号 // CheckifSelectExamNo(); //console.log('node',node) //var puid = node.attributes.newList.id; //var idx = node.attributes.self.ballIndex; //播视频接口 let url = _cf1.q2http_url + "stream.flv?puid=" + puid + "&idx=" + idx + "&stream=0&token=" + token; if (flvjs.isSupported()) { var videoElement = ""; //4个窗口循环播放 if (site == 2) { videoElement = document.getElementById('video2'); } else if (site == 3) { videoElement = document.getElementById('video3'); } else if (site == 4) { videoElement = document.getElementById('video4'); } else if (site == 1) { videoElement = document.getElementById('video1'); } else if (site == 5) { videoElement = document.getElementById('video5'); } else if (site == 6) { videoElement = document.getElementById('video6'); } else if (site == 7) { videoElement = document.getElementById('video7'); } else if (site == 8) { videoElement = document.getElementById('video8'); } //循环播放后清除对应窗口数据缓存 if (flvPlayerList && flvPlayerList.length > 0 && replay == 1) { //去掉空播放对象 flvPlayerList.forEach(function (item, index) { if (!item) { flvPlayerList.splice(index, 1); } }); for (let v of flvPlayerList) { if (v.key == playsite) { if (v.value) { v.value.unload(); v.value.detachMediaElement(); v.value.destroy(); v.value = ""; } } } } videoElement.controls = false; flvPlayer = flvjs.createPlayer({ type: 'flv', url: url, isLive: true, hasAudio: false }, { enableWorker: false, autoCleanupSourceBuffer: true, //清理缓冲区 enableStashBuffer: false, stashInitialSize: 128, // 减少首桢显示等待时长 statisticsInfoReportInterval: 600 }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); setTimeout(function () { flvPlayer.play(); }, 100); flvPlayer.on("scriptdata_arrived", function (e) { console.log("视频正在播放"); //记下存放flvPlayer flvPlayerList.push({ key: playsite, value: flvPlayer }); //去掉空播放对象 flvPlayerList.forEach(function (item, index) { console.log(item); if (!item.value) { flvPlayerList.splice(index, 1); } }); //如果4个播放窗口播完开始循环播放,从第一个窗口播放 if (playsite < 8) { playsite += 1; } else { playsite = 1; replay = 1; } }); flvPlayer.on("error", function (e) { //出现错误,重新播放 console.log("出现错误,重新播放"); console.log('url', url); setTimeout(() => { if (flvPlayerList && flvPlayerList.length) { flvPlayerList[playsite - 1].unload(); flvPlayerList[playsite - 1].detachMediaElement(); flvPlayerList[playsite - 1].destroy(); flvPlayerList[playsite - 1] = "" } var videoElement = document.getElementById('video1'); if (playsite == 2) { videoElement = document.getElementById('video2'); } else if (playsite == 3) { videoElement = document.getElementById('video3'); } else if (playsite == 4) { videoElement = document.getElementById('video4'); } else if (playsite == 1) { videoElement = document.getElementById('video1'); } else if (playsite == 5) { videoElement = document.getElementById('video5'); } else if (playsite == 6) { videoElement = document.getElementById('video6'); } else if (playsite == 7) { videoElement = document.getElementById('video7'); } else if (playsite == 8) { videoElement = document.getElementById('video8'); } if (videoelem) { videoElement = videoelem; } videoElement.controls = false; var flvPlayer = new flv.createPlayer({ type: 'flv', isLive: true, hasAudio: false, url: url }, { enableWorker: false, autoCleanupSourceBuffer: true, enableStashBuffer: false, stashInitialSize: 128, // 减少首桢显示等待时长 statisticsInfoReportInterval: 600 }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); flvPlayer.play(); }, 100) }); } else { createPlayer(); myPlayer.src(url); myPlayer.on("error", e => { setTimeout(e => { myPlayer.src(url); myPlayer.load(url); myPlayer.play(); }, 1000); }); myPlayer.on("ended", e => { setTimeout((e) => { myPlayer.src(url); myPlayer.load(url); myPlayer.play(); }, 1000); }) } } function createPlayer() { var videoElement = document.getElementById('video1'); if (videoelem) { videoElement = videoelem; } myPlayer = new videojs('videoElement', { "techOrder": ["html5", "flash"], preload: 'auto', posterImage: false, controls: true, autoplay: true, bigPlayButton: false, videoWidth: 704, videoHeight: 598, controlBar: { playToggle: false, volumePanel: { inline: false }, remainingTimeDisplay: false, progressControl: false, LiveDisplay: true } }); } //停止视频 function pausevideo() { if (flvjs.isSupported()) { // //去掉空播放对象 flvPlayerList.forEach(function (item, index) { if (!item) { flvPlayerList.splice(index, 1); } }); if (chooseplaysite && flvPlayerList && flvPlayerList.length) { for (let v of flvPlayerList) { if (v.key == chooseplaysite) { if (v.value) { v.value.unload(); v.value.detachMediaElement(); v.value.destroy(); v.value = ""; } } } } else { alert("请选择要视频窗口"); } } else { myPlayer.reset(); } } //双击视频可以全屏播放 function videofullscreen(a) { // $(p).fullScreen(true); // $(p).toggleFullScreen(); //$(p).fullScreen(false); canvasDrawVideo.onLoad('c1') event.stopPropagation(); } //单击视频框添加样式 function changestyle(box) { var p = '#' + box.id; $(p).siblings().css("border", "1px grey solid"); $(p).css("border", "1px rgb(97, 19, 239) solid"); if (box == windowbox) { videoelem = document.getElementById('video1'); chooseplaysite = 1; //对应的第1窗口,以下类推 } else if (box == windowbox2) { videoelem = document.getElementById('video2'); chooseplaysite = 2; } else if (box == windowbox3) { videoelem = document.getElementById('video3'); chooseplaysite = 3; } else if (box == windowbox4) { videoelem = document.getElementById('video4'); chooseplaysite = 4; } else if (box == windowbox5) { videoelem = document.getElementById('video5'); chooseplaysite = 5; } else if (box == windowbox6) { videoelem = document.getElementById('video6'); chooseplaysite = 6; } else if (box == windowbox7) { videoelem = document.getElementById('video7'); chooseplaysite = 7; } else if (box == windowbox8) { videoelem = document.getElementById('video8'); chooseplaysite = 8; } //右键点击事件取消具体某个窗口播放视频 document.oncontextmenu = function (e) { return false; }; $(p).mousedown(function (e) { if (e.which == 3) { $(p).css("border", "1px grey solid"); videoelem = ""; chooseplaysite = 0; } }); } //云台操作 function get_select_node() { var node = $('#resource_tree').tree("getSelected"); /*if (node && node.attributes && node.attributes.self && node.attributes.self.Type == "IV") { return { puid: node.attributes.newList.id, idx: node.attributes.self.Idx }; }*/ return { puid: node.attributes.newList.id, idx: node.attributes.self.Idx }; return null; } //缩放功能 function zoomcontrol(btn, option) { let self = this; var camera = get_select_node(); if (!camera) return; let params = { puid: camera.puid, idx: camera.idx } if (!camera) return; if (option == "stop") { //停止缩放接口 requestPost('PTZ/C_PTZ_StopPictureZoom?token=' + token, params, rv => { var respJSON = rv.responseJSON; }) } else if (option == "zoomin") { //放大图像接口 requestPost('PTZ/C_PTZ_ZoomInPicture?token=' + token, params, rv => {}) } else { //缩小图像接口 requestPost('PTZ/C_PTZ_ZoomOutPicture?token=' + token, params, rv => {}) } } //远近焦点功能 function focuscontrol(btn, option) { let self = this; var camera = get_select_node(); if (!camera) return; let params = { puid: camera.puid, idx: camera.idx } if (!camera) return; if (option == "near") { requestPost('PTZ/C_PTZ_MakeFocusNear?token=' + token, params, rv => { console.log(rv) }) } else if (option == "faraway") { requestPost('PTZ/C_PTZ_MakeFocusFar?token=' + token, params, rv => { console.log(rv) }) } else { requestPost('PTZ/C_PTZ_StopFocusMove?token=' + token, params, rv => { console.log(rv) }) } } //动态添加select里面的option function getValue() { var data = new Array(); data.length = 256; for (let i = 1; i < data.length; i++) { $("#select").append(""); } } //设置预置位 function setPresetPos() { let self = this; var camera = get_select_node(); if (!camera) return; var value = $("#select option:selected").val(); console.log(value) if (value != "") { pos = value; } requestPost('PTZ/C_PTZ_SetPresetPos?token=' + token, { puid: camera.puid, idx: camera.idx, PresetPos: pos }, rv => {}); } //前往预置位 function startPresetPos(presetPos) { let self = this; var camera = get_select_node(); if (!camera) return; var value = $("#select").val(); requestPost('PTZ/C_PTZ_MoveToPresetPos?token=' + token, { puid: camera.puid, idx: camera.idx, PresetPos: value }, rv => {}); } //前往最原始预置位 function originalPresetPos() { let self = this; var camera = get_select_node(); if (!camera) return; requestPost('PTZ/C_PTZ_GotoOriginalPresetPos?token=' + token, { puid: camera.puid, idx: camera.idx }, rv => { // console.log(rv) }); } //开始云抓拍 function startmanual() { let self = this; var camera = get_select_node(); if (!camera) return; requestPost('CSS/C_CSS_StartManualSnapshot?token=' + token, { puid: camera.puid, idx: camera.idx, stream: 0 }, rv => { var respJSON = rv.responseJSON; pictureId = respJSON.ID; }); } //开始云录像 function startstorage() { let self = this; var camera = get_select_node(); if (!camera) return; var puid = camera.puid; var idx = camera.idx; requestPost('CSS/C_CSS_StartManualStorage?token=' + token, { puid: camera.puid, idx: camera.idx, duration: 5, reserveDay: 30, fileLength: 15, type: 0 }, rv => { var respJSON = rv.responseJSON; storageId = respJSON.Param.ID; }); } //停止云抓拍、云录像 function stopmanual(id) { console.log(id); requestPost('CSS/C_CSS_StopManualStorage?token=' + token, { id: id }, rv => {}); } function stopcall() { var camera = get_select_node(); if (!camera) return; var puid = camera.puid; var idx = camera.idx; var name = puid + "_" + idx //参数说明 /* name:喊话的标识,每个喊话都有一个标识,刷新网页或者不需要喊话了,请调用停止接口,否则喊话通道会一直存在 */ stopCall(name); }