|
|
/**
|
|
|
* Created by Administrator on 2017/9/11.
|
|
|
*/
|
|
|
//flash插件版本
|
|
|
function I_CheckPluginVersion() {
|
|
|
var hasFlash = 0; //是否安装了flash
|
|
|
//document.all可用来判断是否是IE浏览器,TRUE即是IE浏览器
|
|
|
if (document.all) {
|
|
|
var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
|
|
|
if (swf) {
|
|
|
hasFlash = 1;
|
|
|
}
|
|
|
} else {
|
|
|
if (navigator.plugins && navigator.plugins.length > 0) {
|
|
|
var swf = navigator.plugins["Shockwave Flash"];
|
|
|
if (swf) {
|
|
|
hasFlash = 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return hasFlash;
|
|
|
}
|
|
|
var smart_max_Row = 0;//记录最大行
|
|
|
var smart_max_Column = 0;//记录最大列
|
|
|
var smart_player_box_item_all_array = [];//播放器容器对象数组
|
|
|
var smart_player_item_all_array = [];//播放器对象数组
|
|
|
var smart_clickFlag = [];//记录是否显示选中框
|
|
|
var smart_lastClickIndex;//上一次点击的元素下标
|
|
|
var smart_currentClickIndex;//当前点击元素的下标
|
|
|
var smart_currentActiveBorderIndex = -1;//记录分屏切换时选中框的下标
|
|
|
var smart_currentRightMenuIndex = 0;//记录当前右键元素的下标
|
|
|
var smart_contentWidth = 0;//播放器大容器的宽
|
|
|
var smart_contentPadding;//播放器大容器的内边距
|
|
|
var smart_dblclickFlag = [];//判断全屏还是退出全屏
|
|
|
var smart_mulScreenFlag = false;//记录是否进行过多窗口全屏播放操作
|
|
|
var smart_start_array = [];//正在播放的视频的下标
|
|
|
var smart_stop_array = [];//没有播放的视频的下标
|
|
|
var smart_loaded = false;//判断视频是否加载完毕
|
|
|
var smart_gColumn;//记录当前页的列数
|
|
|
var smart_gRow;//记录当前页的行数
|
|
|
var smart_playArr = [];//记录点击播放以后的视频地址
|
|
|
var smart_recordArr = [];//记录录制状态的播放地址,下标为正式窗口号,内容为播放地址
|
|
|
var smart_recordTimerArr = [];//记录录制状态的播放地址,下标为正式窗口号,内容为定时器
|
|
|
var smart_recordHeartTimerArr = [];//记录录制状态的播放地址,下标为正式窗口号,内容为定时器
|
|
|
var smart_gRelationArray = [];//调整位置以后按序记录播放器下标
|
|
|
var smart_realPlayerArr = [];//存放分屏以后实际显示播放器的下标
|
|
|
var smart_selectScaleNum = -1;//存放上一次显示视频比例的播放器窗口号
|
|
|
var smart_screenVideoMap = [];//全局数组存在视频播放框号与播放视频之间的对应关系
|
|
|
var subBorderSelect;//选中框的颜色
|
|
|
var subBorder;//框的颜色
|
|
|
var top_Element_Id;//记录播放器大容器所在的父元素的id
|
|
|
var element_Id;//播放器大容器的id
|
|
|
var videoScale;//记录视频比例
|
|
|
var subBackgroundImg;//记录背景图片
|
|
|
var clickTimer = null;//区分用户进行单击还是双击操作
|
|
|
var directory = '';//记录目录
|
|
|
var playerDirectory = '';//播放控件地址
|
|
|
var smart_count = 0;//计数
|
|
|
var smart_count2 = 0;//计数
|
|
|
var smart_tourage_video_paly_time = 0;//播放器窗口播放时间
|
|
|
var smart_tourage_video_paly_address = '';//播放器窗口播放地址
|
|
|
var smart_selectNewIndexFlag;
|
|
|
var panelAppendHTML = "";//播放器下方增加的Html内容
|
|
|
var defaultPlugin = {
|
|
|
topElementId: '',//父页面元素所在的id
|
|
|
elementId: '',//大容器的id
|
|
|
maxRow: '',//最大行
|
|
|
maxColumn: '',//最大列
|
|
|
szWidth: '500px',//容器默认宽度
|
|
|
szHeight: '500px',//容器默认高度
|
|
|
subBorder: '#000',//边框颜色,字符串
|
|
|
subBorderSelect: '#6E8CB6',//选中边框颜色
|
|
|
subBackgroundImg: "ckplayer/video-bg.png",//背景图片
|
|
|
selectNewIndexFlag: true
|
|
|
}
|
|
|
//播放器参数
|
|
|
var params = {bgcolor: '#FFF', allowFullScreen: true, allowScriptAccess: 'always', wmode: 'transparent'};
|
|
|
//初始化大容器
|
|
|
function I_initPlugin(options) {
|
|
|
if (isNull(options)) {
|
|
|
alert("您传入的播放器参数不正确");
|
|
|
return false;
|
|
|
}
|
|
|
options.elementId = options.elementId || defaultPlugin.elementId;
|
|
|
options.topElementId = options.topElementId || defaultPlugin.topElementId;
|
|
|
options.maxRow = options.maxRow || defaultPlugin.maxRow;
|
|
|
options.maxColumn = options.maxColumn || defaultPlugin.maxColumn;
|
|
|
options.szWidth = options.szWidth || defaultPlugin.szWidth;
|
|
|
options.szHeight = options.szHeight || defaultPlugin.szHeight;
|
|
|
options.subBorder = options.subBorder || defaultPlugin.subBorder;
|
|
|
options.subBorderSelect = options.subBorderSelect || defaultPlugin.subBorderSelect;
|
|
|
options.subBackgroundImg = options.subBackgroundImg || defaultPlugin.subBackgroundImg;
|
|
|
options.dblClick = options.dblClick != false;
|
|
|
options.panelAppendHTML = options.panelAppendHTML || '';
|
|
|
panelAppendHTML = options.panelAppendHTML;
|
|
|
//options.selectNewIndexFlag = options.selectNewIndexFlag == false ? false : true;
|
|
|
//smart_selectNewIndexFlag = options.selectNewIndexFlag;
|
|
|
if (isNull(options.elementId)) {
|
|
|
alert("您绑定的播放器容器没有传入");
|
|
|
return false;
|
|
|
}
|
|
|
if (isNull(options.topElementId)) {
|
|
|
alert("您没有传入播放器容器所在的父元素的id");
|
|
|
return false;
|
|
|
}
|
|
|
if (isNull(options.maxRow) || isNull(options.maxColumn)) {
|
|
|
alert("您没有传入播放器分屏的最大行或者最大列");
|
|
|
return false;
|
|
|
}
|
|
|
smart_max_Row = options.maxRow;
|
|
|
smart_max_Column = options.maxColumn;
|
|
|
top_Element_Id = options.topElementId;
|
|
|
element_Id = options.elementId;
|
|
|
subBorder = options.subBorder;
|
|
|
subBorderSelect = options.subBorderSelect;
|
|
|
subBackgroundImg = options.subBackgroundImg;
|
|
|
videoScale = options.videoScale;
|
|
|
//大容器样式
|
|
|
$("#" + element_Id).addClass("smart-position-rel");
|
|
|
$("#" + element_Id).css({'border': '2px solid ' + subBorder});
|
|
|
document.getElementById(options.elementId).style.width = options.szWidth;
|
|
|
document.getElementById(options.elementId).style.height = options.szHeight;
|
|
|
document.getElementById(options.elementId).style.margin = "0 auto";
|
|
|
//添加播放器容器内容和播放器内容
|
|
|
var html = "";
|
|
|
html = '<div id="smart-player-box"></div>';
|
|
|
document.getElementById(options.elementId).innerHTML = html;
|
|
|
html = '<div id="smart-player"></div>';
|
|
|
$("#smart-player-box").after(html);
|
|
|
html = "";
|
|
|
smart_clickFlag = new Array(smart_max_Row * smart_max_Column);
|
|
|
for (var i = 0; i < smart_max_Row; i++) {
|
|
|
for (var j = 0; j < smart_max_Column; j++) {
|
|
|
html += "<div onmousemove='showScale(event," + (i * smart_max_Column + j) + ")' class='smart-player-box-item smart-hidden-noload' " +
|
|
|
"id='smart_player_box_" + (i * smart_max_Column + j) + "' ondrop='drop(event,this," + (i * smart_max_Column + j) + ")' " +
|
|
|
"ondragover='allowDrop(event)' draggable='true' ondragstart='drag(event, this," + (i * smart_max_Column + j) + ")'>" + options.panelAppendHTML + "</div>";
|
|
|
smart_clickFlag[i * smart_max_Column + j] = true;
|
|
|
smart_dblclickFlag[i * smart_max_Column + j] = true;
|
|
|
smart_gRelationArray.push(i * smart_max_Column + j);
|
|
|
smart_screenVideoMap.push(-1);
|
|
|
}
|
|
|
}
|
|
|
$("#smart-player-box").html(html);
|
|
|
html = "";
|
|
|
for (var i = 0; i < smart_max_Row; i++) {
|
|
|
for (var j = 0; j < smart_max_Column; j++) {
|
|
|
html += '<div class="smart-player-item smart-hidden-noload" id="smart_player_' + (i * smart_max_Column + j) + '"></div>';
|
|
|
}
|
|
|
}
|
|
|
$("#smart-player").html(html);
|
|
|
smart_player_box_item_all_array = document.getElementsByClassName("smart-player-box-item");
|
|
|
smart_player_item_all_array = document.getElementsByClassName("smart-player-item");
|
|
|
|
|
|
for (var i = 0; i < smart_player_item_all_array.length; i++) {
|
|
|
var flashvars = {
|
|
|
f: '',
|
|
|
c: 0,
|
|
|
p: 1,
|
|
|
b: 0,
|
|
|
loaded: 'smart_loadedHandler(' + i + ')'
|
|
|
};
|
|
|
CKobject.embedSWF(getPlayerDirectory() + 'ckplayer/ckplayer.swf', "smart_player_" + i, "smart_" + i, '100%', '100%', flashvars, params);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
//单击事件
|
|
|
$(".smart-player-box-item").click(function () {
|
|
|
var that = this;
|
|
|
clearTimeout(clickTimer);
|
|
|
clickTimer = setTimeout(function () {
|
|
|
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
|
|
|
if (smart_player_box_item_all_array[i] === that) {
|
|
|
if ($(smart_player_box_item_all_array[i]).hasClass("smart-full-screen-box")) {
|
|
|
return;
|
|
|
}
|
|
|
smart_currentClickIndex = i;
|
|
|
if (smart_lastClickIndex === smart_currentClickIndex) {//上一次点击元素和当前元素相同
|
|
|
if (smart_clickFlag[smart_currentClickIndex]) {//加框
|
|
|
$(smart_player_box_item_all_array[smart_currentClickIndex]).css({
|
|
|
'border': '2px solid ' + subBorderSelect
|
|
|
});
|
|
|
smart_clickFlag[smart_currentClickIndex] = false;
|
|
|
smart_currentActiveBorderIndex = smart_currentClickIndex;
|
|
|
} else {//去框
|
|
|
smart_clickFlag[smart_currentClickIndex] = true;
|
|
|
smart_currentActiveBorderIndex = -1;
|
|
|
$(smart_player_box_item_all_array[smart_currentClickIndex]).css({
|
|
|
'border': '2px solid ' + subBorder
|
|
|
});
|
|
|
}
|
|
|
} else {//上一次点击元素和当前元素不同
|
|
|
$(smart_player_box_item_all_array[smart_currentClickIndex]).css({
|
|
|
'border': '2px solid ' + subBorderSelect
|
|
|
});
|
|
|
smart_clickFlag[smart_currentClickIndex] = false;
|
|
|
if (smart_lastClickIndex !== undefined) {
|
|
|
$(smart_player_box_item_all_array[smart_lastClickIndex]).css({
|
|
|
'border': '2px solid ' + subBorder
|
|
|
});
|
|
|
}
|
|
|
smart_clickFlag[smart_lastClickIndex] = true;
|
|
|
smart_currentActiveBorderIndex = smart_currentClickIndex;
|
|
|
smartPlayerSelectNew(smart_lastClickIndex, smart_currentClickIndex);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
smart_lastClickIndex = smart_currentClickIndex;
|
|
|
smartPlayerClick();
|
|
|
}, 300);
|
|
|
});
|
|
|
//双击事件
|
|
|
$(".smart-player-box-item").dblclick(function () {
|
|
|
clearTimeout(clickTimer);
|
|
|
if (options.dblClick) {
|
|
|
var id = $(this).attr("id");
|
|
|
id = id.substring(17, id.length);
|
|
|
if ($(this).hasClass("smart-full-screen-box")) {//大屏显示
|
|
|
if (smart_mulScreenFlag) {
|
|
|
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
|
|
|
if ($(smart_player_box_item_all_array[i]).hasClass('smart-full-screen-box')) {//当前大窗口显示
|
|
|
$(smart_player_box_item_all_array[i]).removeClass('smart-full-screen-box');
|
|
|
$(smart_player_item_all_array[i]).removeClass('smart-full-screen-box');
|
|
|
$("#smart-player").removeClass("smart-bg-full-screen");
|
|
|
if (i != 0) {
|
|
|
$("#smart-player-box").removeClass("smart-resize-margin");
|
|
|
}
|
|
|
} else {//其他隐藏
|
|
|
$(smart_player_box_item_all_array[i]).removeClass("smart-hidden");
|
|
|
$(smart_player_item_all_array[i]).removeClass("smart-hidden");
|
|
|
}
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
if (smart_dblclickFlag[id]) {
|
|
|
$("#" + top_Element_Id, window.top.document).addClass("smart-full-screen-box");
|
|
|
launchFullScreen($("#" + top_Element_Id, window.top.document).get(0));
|
|
|
smart_dblclickFlag[id] = false;
|
|
|
} else {
|
|
|
cancelFullscreen();
|
|
|
smart_dblclickFlag[id] = true;
|
|
|
}
|
|
|
} else {//大窗口显示
|
|
|
var divider_img = document.getElementsByClassName("divider-img");
|
|
|
if (!smart_mulScreenFlag) {
|
|
|
smart_contentWidth = parseInt($("#" + element_Id).parent().css("width")) - 8;
|
|
|
smart_contentPadding = $("#" + element_Id).parent().css("padding");
|
|
|
}
|
|
|
I_FullScreen(id);
|
|
|
}
|
|
|
}
|
|
|
// setSelectIndex();
|
|
|
});
|
|
|
|
|
|
}
|
|
|
//处理视频打开时,鼠标移进移出时上面比例条的显示与否
|
|
|
var dedaultPlayer = {
|
|
|
row: 1,//默认分屏行
|
|
|
column: 1//默认分屏列
|
|
|
}
|
|
|
//更新播放器分屏显示的行与列
|
|
|
function I_stylePlayer(options) {
|
|
|
//判断是否有视频正在录制中
|
|
|
if (I_hasRecording()) {
|
|
|
alert("当前有视频正在录制,请先停止录制任务")
|
|
|
}
|
|
|
options = options || dedaultPlayer;
|
|
|
if (options !== dedaultPlayer) {//确定新样式
|
|
|
options.row = options.row || dedaultPlayer.row;
|
|
|
options.column = options.column || dedaultPlayer.column;
|
|
|
}
|
|
|
if (options.row > smart_max_Row) {
|
|
|
alert("您选择的视频行数大于传入的最大行,无法完成初始化");
|
|
|
return false;
|
|
|
}
|
|
|
if (options.column > smart_max_Column) {
|
|
|
alert("您选择的视频列数大于传入的最大列,无法完成初始化");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
//切换分屏的时候,如果有全屏状态切回正常状态
|
|
|
$(".smart-full-screen-box").removeClass("smart-full-screen-box");
|
|
|
$(".smart-bg-full-screen").removeClass("smart-bg-full-screen");
|
|
|
$(".smart-resize-margin").removeClass("smart-resize-margin");
|
|
|
$(".smart-hidden").removeClass("smart-hidden");
|
|
|
var row = Number(options.row);
|
|
|
var column = Number(options.column);
|
|
|
smart_gColumn = column;
|
|
|
smart_gRow = row;
|
|
|
var play_box_width = toPercent(100 / column);
|
|
|
var play_box_height = toPercent(100 / row);
|
|
|
//每次切换分屏前隐藏所有播放器容器和播放器,并重新计算宽度和高度
|
|
|
for (var i = 0; i < smart_max_Row * smart_max_Column; i++) {
|
|
|
$($(".smart-player-box-item")[i]).addClass("smart-hidden-noload");
|
|
|
$($(".smart-player-item")[i]).addClass("smart-hidden-noload");
|
|
|
smart_player_box_item_all_array[i].style.width = play_box_width;
|
|
|
smart_player_box_item_all_array[i].style.height = play_box_height;
|
|
|
smart_player_item_all_array[i].style.width = play_box_width;
|
|
|
smart_player_item_all_array[i].style.height = play_box_height;
|
|
|
}
|
|
|
smart_stop_array.length = 0;//重置未播放的播放器下标的数组
|
|
|
smart_realPlayerArr.length = 0;//重置分屏以后实际显示播放器的下标的数组
|
|
|
var tempArr = [];//临时记录分屏以后,按照顺序应该显示的下标的数组
|
|
|
for (var i = 0; i < row * smart_max_Column; i = i + smart_max_Column) {
|
|
|
for (var j = i; j < column + i; j++) {
|
|
|
tempArr.push(j);
|
|
|
}
|
|
|
}
|
|
|
//更新实际显示播放器的下标的数组,更新smart_stop_array,并设置应该显示的播放器的位置,显示对应的播放器
|
|
|
for (var i = 0; i < tempArr.length; i++) {
|
|
|
smart_realPlayerArr.push(smart_gRelationArray[tempArr[i]]);
|
|
|
smart_stop_array.push(i);
|
|
|
var x = parseInt(tempArr[i] / smart_max_Column);
|
|
|
var y = tempArr[i] % smart_max_Column;
|
|
|
smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.top = toPercent(x * (100 / row));
|
|
|
smart_player_item_all_array[smart_gRelationArray[tempArr[i]]].style.top = toPercent(x * (100 / row));
|
|
|
smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.left = toPercent(y * (100 / column));
|
|
|
smart_player_item_all_array[smart_gRelationArray[tempArr[i]]].style.left = toPercent(y * (100 / column));
|
|
|
smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.border = '2px solid ' + subBorder;
|
|
|
$($(".smart-player-box-item")[smart_gRelationArray[tempArr[i]]]).removeClass("smart-hidden-noload");
|
|
|
$($(".smart-player-item")[smart_gRelationArray[tempArr[i]]]).removeClass("smart-hidden-noload");
|
|
|
if (smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.background === "transparent" || smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.background === "none") {
|
|
|
$(smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]]).css({
|
|
|
"background": "transparent"
|
|
|
});
|
|
|
smart_stop_array.remove(i);
|
|
|
} else {
|
|
|
$(smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]]).css({
|
|
|
"background": "url(" + getDirectory() + subBackgroundImg + ")",
|
|
|
"background-size": "100% 100%"
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
updatePadding();
|
|
|
setSelectIndex();
|
|
|
}
|
|
|
var defaultStart = {
|
|
|
iWndIndex: 0,//默认选择第一个窗口播放
|
|
|
iStreamType: 1//默认主码流预览
|
|
|
}
|
|
|
//开始播放
|
|
|
function I_StartRealPlay(url, options) {
|
|
|
|
|
|
var iWndIndex;
|
|
|
if (arguments.length > 0) {//存在
|
|
|
iWndIndex = smart_realPlayerArr[options.iWndIndex];
|
|
|
} else {//不存在
|
|
|
var minNum = smart_stop_array.min();
|
|
|
minNum = minNum || 0;
|
|
|
iWndIndex = smart_currentActiveBorderIndex == -1 ? smart_realPlayerArr[minNum] : smart_currentActiveBorderIndex;
|
|
|
}
|
|
|
if (isNull(url)) {
|
|
|
alert("您没有传入视频播放源");
|
|
|
smartPlayerError(iWndIndex, '');
|
|
|
return false;
|
|
|
}
|
|
|
if (document.getElementById("smart_player_" + iWndIndex) === null || $(document.getElementById("smart_player_" + iWndIndex).parentNode).hasClass("smart-hidden-noload")) {
|
|
|
alert("您选择的播放器容器不存在");
|
|
|
return false;
|
|
|
}
|
|
|
if (!isSamePlay(iWndIndex, url)) {
|
|
|
return;
|
|
|
}
|
|
|
/*
|
|
|
if(!smart_selectNewIndexFlag){
|
|
|
var smart_curr_play_time = Date.parse(new Date());
|
|
|
if(smart_curr_play_time - smart_tourage_video_paly_time < 300 && smart_tourage_video_paly_address && url == smart_tourage_video_paly_address){
|
|
|
console.log("come");
|
|
|
return;
|
|
|
}
|
|
|
smart_tourage_video_paly_time = smart_curr_play_time;
|
|
|
smart_tourage_video_paly_address = url;
|
|
|
}
|
|
|
*/
|
|
|
if (smart_recordArr[iWndIndex]) {
|
|
|
alert("当前窗口视频正在录制,请先停止录制或选中其他播放窗口");
|
|
|
return;
|
|
|
}
|
|
|
smart_playArr[iWndIndex] = url;
|
|
|
$(smart_player_item_all_array[iWndIndex]).css({'padding': '0px'});
|
|
|
$(smart_player_box_item_all_array[iWndIndex]).css({
|
|
|
'background': 'transparent',
|
|
|
'border': 'solid 2px ' + subBorder
|
|
|
});
|
|
|
if (!smart_loaded) {
|
|
|
return;
|
|
|
}
|
|
|
updatePadding();
|
|
|
CKobject.getObjectById("smart_" + iWndIndex).newAddress('{f->' + url + '}');
|
|
|
//更新smart_stop_array和smart_start_array
|
|
|
smart_stop_array.remove(smart_realPlayerArr.indexOf(Number(iWndIndex)));
|
|
|
if (smart_start_array.indexOf(smart_realPlayerArr.indexOf(Number(iWndIndex))) === -1) {
|
|
|
smart_start_array.push(smart_realPlayerArr.indexOf(Number(iWndIndex)));
|
|
|
}
|
|
|
smart_screenVideoMap[iWndIndex] = url;
|
|
|
setSelectIndex();
|
|
|
smartPlayerStart(options);
|
|
|
return true;
|
|
|
}
|
|
|
//停止播放
|
|
|
function I_Stop(index) {
|
|
|
var iWndIndex;
|
|
|
if (index) {
|
|
|
iWndIndex = smart_realPlayerArr[index];
|
|
|
} else {
|
|
|
iWndIndex = smart_currentRightMenuIndex;
|
|
|
}
|
|
|
if (smart_recordArr[iWndIndex]) {
|
|
|
alert("当前视频正在录制,请先停止");
|
|
|
return;
|
|
|
}
|
|
|
$(document.getElementsByClassName("smart-player-box-item")[iWndIndex]).css({
|
|
|
"background": "url(" + getDirectory() + subBackgroundImg + ")",
|
|
|
"background-size": "100% 100%"
|
|
|
});
|
|
|
smart_playArr[iWndIndex] = '';
|
|
|
smart_screenVideoMap[iWndIndex] = -1;
|
|
|
CKobject.getObjectById("smart_" + iWndIndex).newAddress('{f->' + "" + '}');
|
|
|
smart_start_array.remove(smart_realPlayerArr.indexOf(Number(iWndIndex)));
|
|
|
if (smart_stop_array.indexOf(smart_realPlayerArr.indexOf(Number(iWndIndex))) === -1) {
|
|
|
smart_stop_array.push(smart_realPlayerArr.indexOf(Number(iWndIndex)));
|
|
|
}
|
|
|
//setSelectIndex();
|
|
|
updatePadding();
|
|
|
smartPlayerStop(iWndIndex);
|
|
|
}
|
|
|
//全部关闭
|
|
|
function I_StopAll() {
|
|
|
if (I_hasRecording()) {
|
|
|
alert("当前存在窗口视频正在录制,请先停止");
|
|
|
return;
|
|
|
}
|
|
|
for (var i = 0; i < smart_realPlayerArr.length; i++) {
|
|
|
|
|
|
$(smart_player_box_item_all_array[smart_realPlayerArr[i]]).css({
|
|
|
"background": "url(" + getDirectory() + subBackgroundImg + ")",
|
|
|
"background-size": "100% 100%"
|
|
|
});
|
|
|
smart_screenVideoMap[smart_realPlayerArr[i]] = -1;
|
|
|
CKobject.getObjectById("smart_" + smart_realPlayerArr[i]).newAddress('{f->' + "" + '}');
|
|
|
}
|
|
|
smart_start_array.length = 0;
|
|
|
smart_stop_array.length = 0;
|
|
|
for (var i = 0; i < smart_realPlayerArr.length; i++) {
|
|
|
smart_stop_array[i] = i;
|
|
|
}
|
|
|
// setSelectIndex();
|
|
|
updatePadding();
|
|
|
smartPlayerStopAll();
|
|
|
}
|
|
|
|
|
|
//大窗口播放
|
|
|
function I_FullScreen(iWndIndex) {
|
|
|
iWndIndex = iWndIndex || smart_currentRightMenuIndex;
|
|
|
$("#" + element_Id).css({'border': 'none'});
|
|
|
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
|
|
|
if (i == iWndIndex) {//当前大窗口显示
|
|
|
$(smart_player_box_item_all_array[i]).addClass('smart-full-screen-box');
|
|
|
$(smart_player_item_all_array[i]).addClass('smart-full-screen-box');
|
|
|
$("#smart-player").addClass("smart-bg-full-screen");
|
|
|
if (i != 0) {
|
|
|
$("#smart-player-box").addClass("smart-resize-margin");
|
|
|
}
|
|
|
} else {//其他隐藏
|
|
|
$(smart_player_box_item_all_array[i]).addClass("smart-hidden");
|
|
|
$(smart_player_item_all_array[i]).addClass("smart-hidden");
|
|
|
}
|
|
|
}
|
|
|
smartFullScreen(iWndIndex);
|
|
|
}
|
|
|
//自定义右键菜单
|
|
|
function I_initRightMenu(rightMenuData) {
|
|
|
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
|
|
|
$(smart_player_box_item_all_array[i]).smartMenu(rightMenuData, {
|
|
|
name: "player-box-" + i
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
//多窗口全屏播放
|
|
|
function I_MultiFullScreen() {
|
|
|
if (!$("#" + top_Element_Id, window.top.document).hasClass("smart-full-screen-box")) {
|
|
|
smart_contentWidth = parseInt($("#" + element_Id).parent().css("width")) - 8;
|
|
|
smart_contentPadding = $("#" + element_Id).parent().css("padding");
|
|
|
}
|
|
|
$("#" + top_Element_Id, window.top.document).addClass("smart-full-screen-box");
|
|
|
launchFullScreen($("#" + top_Element_Id, window.top.document).get(0));
|
|
|
smart_mulScreenFlag = true;
|
|
|
}
|
|
|
// 全屏显示(需要全屏显示DOM元素)
|
|
|
function launchFullScreen(element) {
|
|
|
if (isNull(element)) {
|
|
|
alert("您传入的顶级父元素的id不存在");
|
|
|
return;
|
|
|
}
|
|
|
$("#" + element_Id).css({'border': 'none'});
|
|
|
var topElement = $("#" + top_Element_Id, window.top.document).get(0);
|
|
|
var topChilds = $("#" + top_Element_Id, window.top.document).parent().children();
|
|
|
for (var i = 0; i < topChilds.length; i++) {
|
|
|
if (topChilds[i] === topElement) {
|
|
|
$("#" + top_Element_Id, window.top.document).addClass("smart-full-screen-box");
|
|
|
} else {
|
|
|
$(topChilds[i]).addClass("smart-display-none");
|
|
|
}
|
|
|
}
|
|
|
var all = $("#" + top_Element_Id, window.top.document).children();
|
|
|
var obj = $("#" + top_Element_Id, window.top.document).get(0).getElementsByTagName("iframe");
|
|
|
if (obj.length != 0) {
|
|
|
obj = obj[0];
|
|
|
for (var i = 0; i < all.length; i++) {
|
|
|
if (all[i] === obj) {
|
|
|
$(obj).addClass("smart-full-screen-box");
|
|
|
} else {
|
|
|
$(all[i]).addClass("smart-display-none");
|
|
|
}
|
|
|
}
|
|
|
var childs = $("body").children().children();
|
|
|
for (var i = 0; i < childs.length; i++) {
|
|
|
if (childs[i] === document.getElementById(element_Id).parentNode) {
|
|
|
var cs = document.getElementById(element_Id).parentNode.childNodes;
|
|
|
for (var j = 0; j < cs.length; j++) {
|
|
|
if (cs[j] === document.getElementById(element_Id)) {
|
|
|
$("#" + element_Id).addClass("smart-full-screen-box");
|
|
|
$("#" + element_Id).parent().css({
|
|
|
'padding': '0',
|
|
|
'width': '100%'
|
|
|
});
|
|
|
// $(".content").css({
|
|
|
// 'padding':'0'
|
|
|
// });
|
|
|
} else {
|
|
|
$(cs[j]).addClass("smart-display-none");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
$(childs[i]).addClass("smart-display-none");
|
|
|
}
|
|
|
}
|
|
|
// var childs = $("body").children();
|
|
|
// for(var i = 0; i < childs.length;i++){
|
|
|
// if(childs[i] === document.getElementById(element_Id)){
|
|
|
// $("#" + element_Id).addClass("smart-full-screen-box");
|
|
|
// }else{
|
|
|
// $(childs[i]).addClass("smart-display-none");
|
|
|
// }
|
|
|
// }
|
|
|
}
|
|
|
$(document.getElementsByTagName("body")[0]).css({"overflow": "hidden"});
|
|
|
smartLaunchFullscreenStyle();
|
|
|
// 先检测最标准的方法
|
|
|
if (element.requestFullScreen) {
|
|
|
element.requestFullScreen();
|
|
|
} else if (element.mozRequestFullScreen) {
|
|
|
// 其次,检测Mozilla的方法
|
|
|
element.mozRequestFullScreen();
|
|
|
} else if (element.webkitRequestFullScreen) {
|
|
|
// if 检测 webkit的API
|
|
|
element.webkitRequestFullScreen();
|
|
|
}
|
|
|
}
|
|
|
// 退出全屏,不用管具体是哪个元素,因为屏幕是唯一的。
|
|
|
function cancelFullscreen() {
|
|
|
exitFullScreen();
|
|
|
if (window.top.document.cancelFullScreen) {
|
|
|
window.top.document.cancelFullScreen();
|
|
|
} else if (window.top.document.mozCancelFullScreen) {
|
|
|
window.top.document.mozCancelFullScreen();
|
|
|
} else if (window.top.document.webkitCancelFullScreen) {
|
|
|
window.top.document.webkitCancelFullScreen();
|
|
|
}
|
|
|
}
|
|
|
//用户点击按钮esc,监听退出全屏
|
|
|
window.top.document.addEventListener("fullscreenchange", function (e) {
|
|
|
if (!window.top.document.webkitIsFullScreen) {
|
|
|
smart_mulScreenFlag = false;
|
|
|
exitFullScreen();
|
|
|
}
|
|
|
});
|
|
|
window.top.document.addEventListener("mozfullscreenchange", function (e) {
|
|
|
if (!window.top.document.webkitIsFullScreen) {
|
|
|
smart_mulScreenFlag = false;
|
|
|
exitFullScreen();
|
|
|
}
|
|
|
});
|
|
|
window.top.document.addEventListener("webkitfullscreenchange", function (e) {
|
|
|
if (!window.top.document.webkitIsFullScreen) {
|
|
|
smart_mulScreenFlag = false;
|
|
|
exitFullScreen();
|
|
|
}
|
|
|
});
|
|
|
window.top.document.addEventListener("msfullscreenchange", function (e) {
|
|
|
if (!window.top.document.webkitIsFullScreen) {
|
|
|
smart_mulScreenFlag = false;
|
|
|
exitFullScreen();
|
|
|
}
|
|
|
});
|
|
|
function showScale(obj, num) {
|
|
|
if (!isNull(videoScale) && smart_player_box_item_all_array[num].style.background === "transparent" || smart_player_box_item_all_array[num].style.background === "none") {
|
|
|
var e = obj || window.event;
|
|
|
var mouseY = e.layerY || e.offsetY;
|
|
|
if ($(smart_player_box_item_all_array[num]).hasClass("smart-full-screen-box")) {
|
|
|
if (mouseY > 35) {
|
|
|
$(smart_player_box_item_all_array[num]).find($(".smart-bg-scale")).remove();
|
|
|
} else {
|
|
|
if ($(smart_player_box_item_all_array[num]).find($(".smart-bg-scale")).html() == undefined) {
|
|
|
$(smart_player_box_item_all_array[num]).append(scaleHtml(videoScale, num));
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
if (mouseY > 35) {
|
|
|
$(smart_player_box_item_all_array[num]).find($(".smart-bg-scale")).remove();
|
|
|
} else {
|
|
|
if ($(smart_player_box_item_all_array[num]).find($(".smart-bg-scale")).html() == undefined) {
|
|
|
$(smart_player_box_item_all_array[num]).append(scaleHtml(videoScale, num));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (num != smart_selectScaleNum) {
|
|
|
$(smart_player_box_item_all_array[smart_selectScaleNum]).find($(".smart-bg-scale")).remove();
|
|
|
}
|
|
|
smart_selectScaleNum = num;
|
|
|
}
|
|
|
}
|
|
|
//重新连接
|
|
|
function I_Reconnect(index) {
|
|
|
var iWndIndex;
|
|
|
if (index) {
|
|
|
iWndIndex = smart_realPlayerArr[index];
|
|
|
} else {
|
|
|
iWndIndex = smart_currentRightMenuIndex;
|
|
|
}
|
|
|
var f = CKobject.getObjectById("smart_" + iWndIndex).getStatus().myflashvars.f;
|
|
|
CKobject.getObjectById("smart_" + iWndIndex).newAddress('{f->' + f + '}');
|
|
|
}
|
|
|
//调整尺寸
|
|
|
function I_setPlayerResize(rw, rh, num) {
|
|
|
if (arguments.length === 1) {//满屏
|
|
|
CKobject.getObjectById("smart_" + arguments[0]).videoWAndH(100, 100);
|
|
|
return;
|
|
|
}
|
|
|
if (arguments.length === 0 || arguments.length === 2) {
|
|
|
num = smart_currentRightMenuIndex;
|
|
|
}
|
|
|
if (arguments.length === 0) {
|
|
|
CKobject.getObjectById("smart_" + num).videoWAndH(100, 100);
|
|
|
return;
|
|
|
}
|
|
|
var oldW = document.getElementsByClassName("smart-player-box-item")[num].offsetWidth;
|
|
|
var oldH = document.getElementsByClassName("smart-player-box-item")[num].offsetHeight;
|
|
|
var oldRate = oldW / oldH;
|
|
|
var newRate = rw / rh;
|
|
|
var newW, newH;
|
|
|
if (oldRate > newRate) {//高不变
|
|
|
newW = oldH * rw / rh;
|
|
|
CKobject.getObjectById("smart_" + num).videoWAndH(newW * 100 / oldW, 100);
|
|
|
} else if (oldRate < newRate) {//宽不变
|
|
|
newH = oldW * rh / rw;
|
|
|
CKobject.getObjectById("smart_" + num).videoWAndH(100, newH * 100 / oldH);
|
|
|
}
|
|
|
}
|
|
|
//更换清晰度
|
|
|
function I_setDefinition(str) {
|
|
|
if (str == "0") {
|
|
|
var f = CKobject.getObjectById("smart_" + smart_currentRightMenuIndex).getStatus().myflashvars.f;
|
|
|
f = f.replace('tourage', 'hls');
|
|
|
} else if (str == '1') {
|
|
|
var f = CKobject.getObjectById("smart_" + smart_currentRightMenuIndex).getStatus().myflashvars.f;
|
|
|
f = f.replace('hls', 'tourage');
|
|
|
}
|
|
|
CKobject.getObjectById("smart_" + smart_currentRightMenuIndex).newAddress('{f->' + f + '}');
|
|
|
}
|
|
|
//退出全屏的样式修改
|
|
|
function exitFullScreen() {
|
|
|
$(".smart-full-screen-box").removeClass("smart-full-screen-box");
|
|
|
$(".smart-bg-full-screen").removeClass("smart-bg-full-screen");
|
|
|
$(".smart-resize-margin").removeClass("smart-resize-margin");
|
|
|
$(".smart-hidden").removeClass("smart-hidden");
|
|
|
$("#" + element_Id).css({'border': '2px solid ' + subBorder});
|
|
|
$(document.getElementsByTagName("body")[0]).css({"overflow": "auto"});
|
|
|
var topElement = $("#" + top_Element_Id, window.top.document).get(0);
|
|
|
var topChilds = $("#" + top_Element_Id, window.top.document).parent().children();
|
|
|
for (var i = 0; i < topChilds.length; i++) {
|
|
|
if (topChilds[i] === topElement) {
|
|
|
$("#" + top_Element_Id, window.top.document).removeClass("smart-full-screen-box");
|
|
|
} else {
|
|
|
$(topChilds[i]).removeClass("smart-display-none");
|
|
|
}
|
|
|
}
|
|
|
var all = $("#" + top_Element_Id, window.top.document).children();
|
|
|
var obj = $("#" + top_Element_Id, window.top.document).get(0).getElementsByTagName("iframe");
|
|
|
if (obj.length != 0) {
|
|
|
obj = obj[0];
|
|
|
for (var i = 0; i < all.length; i++) {
|
|
|
if (all[i] === obj) {
|
|
|
$(obj).removeClass("smart-full-screen-box");
|
|
|
} else {
|
|
|
$(all[i]).removeClass("smart-display-none");
|
|
|
}
|
|
|
}
|
|
|
// var childs = $("body").children();
|
|
|
// for(var i = 0; i < childs.length;i++){
|
|
|
// if(childs[i] === document.getElementById(element_Id)){
|
|
|
// $("#" + element_Id).removeClass("smart-full-screen-box");
|
|
|
// }else{
|
|
|
// $(childs[i]).removeClass("smart-display-none");
|
|
|
// }
|
|
|
// }
|
|
|
var childs = $("body").children().children();
|
|
|
for (var i = 0; i < childs.length; i++) {
|
|
|
if (childs[i] === document.getElementById(element_Id).parentNode) {
|
|
|
var cs = document.getElementById(element_Id).parentNode.childNodes;
|
|
|
for (var j = 0; j < cs.length; j++) {
|
|
|
if (cs[j] === document.getElementById(element_Id)) {
|
|
|
$("#" + element_Id).removeClass("smart-full-screen-box");
|
|
|
$("#" + element_Id).parent().css({
|
|
|
'padding': smart_contentPadding,
|
|
|
'width': smart_contentWidth + "px"
|
|
|
});
|
|
|
} else {
|
|
|
$(cs[j]).removeClass("smart-display-none");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
$(childs[i]).removeClass("smart-display-none");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
smartCancelFullscreenStyle();
|
|
|
}
|
|
|
//视频加载完成以后的处理
|
|
|
function smart_loadedHandler(num) {
|
|
|
|
|
|
CKobject.getObjectById("smart_" + num).addListener('play', 'playHandler(' + num + ')');
|
|
|
CKobject.getObjectById("smart_" + num).addListener('resize', 'resizeHandler(' + num + ')');
|
|
|
CKobject.getObjectById("smart_" + num).addListener('error', 'errorHandler(' + num + ')');
|
|
|
if (!isNull(smart_playArr[num])) {
|
|
|
var f = smart_playArr[num];
|
|
|
CKobject.getObjectById("smart_" + num).newAddress('{f->' + f + '}');
|
|
|
if (smart_stop_array.indexOf(smart_realPlayerArr.indexOf(num)) > -1) {
|
|
|
smart_stop_array.remove(smart_realPlayerArr.indexOf(num));
|
|
|
var minNum = smart_stop_array.min();
|
|
|
minNum = minNum || 0;
|
|
|
$(smart_player_box_item_all_array[smart_realPlayerArr[minNum]]).css(
|
|
|
'border', 'solid 2px ' + subBorderSelect
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
smart_count++;
|
|
|
if (smart_count == (smart_gColumn * smart_gRow)) {
|
|
|
smart_loaded = true;
|
|
|
smartPlayerLoader();
|
|
|
}
|
|
|
}
|
|
|
//监听播放器尺寸发生变化
|
|
|
function resizeHandler() {
|
|
|
for (var i = 0; i < smart_start_array.length; i++) {
|
|
|
CKobject.getObjectById("smart_" + smart_start_array[i]).changeFace(true);
|
|
|
}
|
|
|
}
|
|
|
//监听视频加载失败的事件处理
|
|
|
function errorHandler(num) {
|
|
|
|
|
|
smart_count2++;
|
|
|
if (smart_count2 >= smart_gRow * smart_gColumn) {
|
|
|
if (smart_screenVideoMap[num] != -1 && smart_screenVideoMap[num] != undefined) {
|
|
|
smartPlayerError(num, smart_screenVideoMap[num]);
|
|
|
setSelectIndex();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
//监听播放以后的事件处理
|
|
|
function playHandler(num) {
|
|
|
//当视频播放的时候去掉加载动画的照片
|
|
|
$("#" + num).css({
|
|
|
"background": "none"
|
|
|
});
|
|
|
//更新正在播放的视频的下标的数组
|
|
|
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
|
|
|
if (i === num) {
|
|
|
if (smart_start_array.indexOf(smart_realPlayerArr.indexOf(num)) === -1) {
|
|
|
smart_start_array.push(smart_realPlayerArr.indexOf(i));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//更新未播放的视频的下标的数组
|
|
|
for (var i = 0; i < smart_stop_array.length; i++) {
|
|
|
for (var j = 0; j < smart_start_array.length; j++) {
|
|
|
if (smart_stop_array[i] === smart_start_array[j]) {
|
|
|
smart_stop_array.remove(smart_start_array[j]);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//视频加载成功以后的回调函数
|
|
|
smartPlayerSuccess(num, smart_screenVideoMap[num]);
|
|
|
}
|
|
|
//去掉周边黑框
|
|
|
function updatePadding() {
|
|
|
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
|
|
|
if (smart_player_box_item_all_array[i].style.background === 'transparent' || smart_player_box_item_all_array[i].style.background === 'none') {
|
|
|
$(smart_player_item_all_array[i]).css({'padding': '0px'});
|
|
|
} else {
|
|
|
$(smart_player_item_all_array[i]).css({'padding': '0 10px'});
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//播放器单击事件的回调
|
|
|
function smartPlayerClick() {
|
|
|
}
|
|
|
//视频开始播放的回调函数
|
|
|
function smartPlayerStart(options) {
|
|
|
}
|
|
|
//视频停止播放的回调函数
|
|
|
function smartPlayerStop(iWndIndex) {
|
|
|
}
|
|
|
//关闭所有视频的回调函数
|
|
|
function smartPlayerStopAll() {
|
|
|
}
|
|
|
//播放器加载成功以后的回调函数
|
|
|
function smartPlayerSuccess(num, url) {
|
|
|
}
|
|
|
//播放器加载失败以后的回调函数
|
|
|
function smartPlayerError(num, url) {
|
|
|
|
|
|
}
|
|
|
//播放器初始化完成以后的回调函数
|
|
|
function smartPlayerLoader() {
|
|
|
}
|
|
|
//选中新的窗口添加选中框以后的回调函数
|
|
|
function smartPlayerSelectNew(lastClickIndex, currentClickIndex) {
|
|
|
}
|
|
|
//全屏以后需要处理的样式的回调函数
|
|
|
function smartLaunchFullscreenStyle() {
|
|
|
}
|
|
|
//退出全屏以后需要处理的样式的回调函数
|
|
|
function smartCancelFullscreenStyle() {
|
|
|
}
|
|
|
//大窗口播放的回调函数
|
|
|
function smartFullScreen(iWndIndex) {
|
|
|
}
|
|
|
//转为百分比数字
|
|
|
function toPercent(point) {
|
|
|
var str = Number(point).toFixed(3);
|
|
|
str += "%";
|
|
|
return str;
|
|
|
}
|
|
|
//为空判断
|
|
|
function isNull(obj) {
|
|
|
if (obj === undefined || obj === null) {
|
|
|
return true;
|
|
|
}
|
|
|
if (typeof obj === "string") {
|
|
|
if (obj === 'undefined' || obj === 'null' || trimAll(obj, 'g') === '') {
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
//去掉所有空格
|
|
|
function trimAll(str, is_global) {
|
|
|
var result;
|
|
|
result = str.replace(/(^\s+)|(\s+$)/g, "");
|
|
|
if (is_global.toLowerCase() == "g") {
|
|
|
result = result.replace(/\s/g, "");
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
//获得元素在数组中的下标
|
|
|
Array.prototype.indexOf = function (val) {
|
|
|
for (var i = 0; i < this.length; i++) {
|
|
|
if (this[i] == val) return i;
|
|
|
}
|
|
|
return -1;
|
|
|
};
|
|
|
//删除数组中的元素
|
|
|
Array.prototype.remove = function (val) {
|
|
|
var index = this.indexOf(val);
|
|
|
if (index > -1) {
|
|
|
this.splice(index, 1);
|
|
|
}
|
|
|
};
|
|
|
//数组最小值
|
|
|
Array.prototype.min = function () {
|
|
|
var min = this[0];
|
|
|
var len = this.length;
|
|
|
for (var i = 1; i < len; i++) {
|
|
|
if (this[i] < min) {
|
|
|
min = this[i];
|
|
|
}
|
|
|
}
|
|
|
return min;
|
|
|
};
|
|
|
function scaleHtml(data, num) {
|
|
|
var data = data.split(",");
|
|
|
var html = "";
|
|
|
html = '<div class="smart-row smart-bg-scale">' +
|
|
|
'<div style="width:20%;"></div>' +
|
|
|
'<div class="smart-flex-1 smart-row">';
|
|
|
for (var i = 0; i < data.length; i++) {
|
|
|
if (data[i] === "满屏") {
|
|
|
html += '<div class="smart-flex-1" onclick="I_setPlayerResize(' + num + ')"><div class="smart-rateVideo" >' + data[i] + '</div></div>';
|
|
|
} else {
|
|
|
var arr = data[i].split(":");
|
|
|
html += '<div class="smart-flex-1" onclick="I_setPlayerResize(' + arr[0] + ',' + arr[1] + ',' + num + ')"><div class="smart-rateVideo">' + data[i] + '</div></div>';
|
|
|
}
|
|
|
}
|
|
|
html += '</div>' +
|
|
|
'<div style="width:20%;"></div>' +
|
|
|
'</div>';
|
|
|
return html;
|
|
|
}
|
|
|
function setDirectory(directory) {
|
|
|
window.directory = directory || '';
|
|
|
}
|
|
|
function getDirectory() {
|
|
|
return window.directory;
|
|
|
}
|
|
|
//播放器资源专用路径
|
|
|
function setPlayerDirectory(playerDirectory) {
|
|
|
window.playerDirectory = playerDirectory || '';
|
|
|
}
|
|
|
function getPlayerDirectory() {
|
|
|
return window.playerDirectory;
|
|
|
}
|
|
|
//设置选中框样式
|
|
|
function setSelectIndex() {
|
|
|
var minNum = smart_stop_array.min();
|
|
|
minNum = minNum || 0;
|
|
|
$(smart_player_box_item_all_array[smart_currentActiveBorderIndex]).css(
|
|
|
'border', 'solid 2px ' + subBorder
|
|
|
);
|
|
|
$(smart_player_box_item_all_array[smart_realPlayerArr[minNum]]).css(
|
|
|
'border', 'solid 2px ' + subBorderSelect
|
|
|
);
|
|
|
smart_currentActiveBorderIndex = smart_realPlayerArr[minNum];
|
|
|
smart_currentClickIndex = smart_realPlayerArr[minNum];
|
|
|
smart_lastClickIndex = smart_realPlayerArr[minNum];
|
|
|
}
|
|
|
//获得当前选中框的播放器的下标
|
|
|
function getSelectPlayerIndex() {
|
|
|
return smart_currentActiveBorderIndex;
|
|
|
}
|
|
|
//获得当前选中框的下标
|
|
|
function getSelectIndex() {
|
|
|
if (smart_realPlayerArr.indexOf(smart_currentActiveBorderIndex) == -1) {
|
|
|
setSelectIndex();
|
|
|
}
|
|
|
return smart_realPlayerArr.indexOf(smart_currentActiveBorderIndex);
|
|
|
}
|
|
|
function allowDrop(ev) {
|
|
|
ev.preventDefault();
|
|
|
}
|
|
|
var srcdiv = null;//记录原拖动对象
|
|
|
var srcIndex = -1;//记录原拖动下标
|
|
|
var srcPosition = [-1, -1];//记录原拖动位置,第一个参数是左,第二个参数是上
|
|
|
//拖
|
|
|
function drag(ev, divdom, index) {
|
|
|
srcdiv = divdom;
|
|
|
srcIndex = index;
|
|
|
srcPosition[0] = divdom.style.left;
|
|
|
srcPosition[1] = divdom.style.top;
|
|
|
}
|
|
|
//落
|
|
|
function drop(ev, divdom, index) {
|
|
|
ev.preventDefault();
|
|
|
if (srcdiv != divdom) {
|
|
|
srcdiv.style.left = divdom.style.left;
|
|
|
srcdiv.style.top = divdom.style.top;
|
|
|
smart_player_item_all_array[srcIndex].style.left = divdom.style.left;
|
|
|
smart_player_item_all_array[srcIndex].style.top = divdom.style.top;
|
|
|
divdom.style.left = srcPosition[0];
|
|
|
divdom.style.top = srcPosition[1];
|
|
|
smart_player_item_all_array[index].style.left = srcPosition[0];
|
|
|
smart_player_item_all_array[index].style.top = srcPosition[1];
|
|
|
// divdom.innerHTML = panelAppendHTML;
|
|
|
updateRelationArray(srcIndex, index);
|
|
|
}
|
|
|
}
|
|
|
//判断同样的视频源之前是否播放过
|
|
|
function isSamePlay(index, url) {
|
|
|
var iWndIndex = index;//要选择播放的播放器编号
|
|
|
var oriWndIndex = -1;//原本在播放该视频的窗口编号
|
|
|
//判断视频是否已经播放
|
|
|
for (var i = 0; i < smart_screenVideoMap.length; i++) {
|
|
|
if (smart_screenVideoMap[i] == url) {//视频已经有窗口在播
|
|
|
oriWndIndex = i;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (oriWndIndex == -1) {
|
|
|
return true;
|
|
|
} else {
|
|
|
if (smart_realPlayerArr.indexOf(oriWndIndex) > -1) {//同一页
|
|
|
// smart_recordArr[iWndIndex] = smart_recordArr[oriWndIndex];
|
|
|
// smart_recordArr[oriWndIndex] = undefined;
|
|
|
drag(event, smart_player_box_item_all_array[oriWndIndex], oriWndIndex);
|
|
|
drop(event, smart_player_box_item_all_array[iWndIndex], iWndIndex);
|
|
|
} else {
|
|
|
var left = smart_player_box_item_all_array[iWndIndex].style.left;
|
|
|
var top = smart_player_box_item_all_array[iWndIndex].style.top;
|
|
|
$(smart_player_box_item_all_array[iWndIndex]).addClass("smart-hidden-noload");
|
|
|
$(smart_player_item_all_array[iWndIndex]).addClass("smart-hidden-noload");
|
|
|
smart_player_box_item_all_array[oriWndIndex].style.left = left;
|
|
|
smart_player_box_item_all_array[oriWndIndex].style.top = top;
|
|
|
smart_player_item_all_array[oriWndIndex].style.left = left;
|
|
|
smart_player_item_all_array[oriWndIndex].style.top = top;
|
|
|
$(smart_player_box_item_all_array[oriWndIndex]).removeClass("smart-hidden-noload");
|
|
|
$(smart_player_item_all_array[oriWndIndex]).removeClass("smart-hidden-noload");
|
|
|
updateRelationArray(oriWndIndex, iWndIndex);
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
//每次拖拽动作完成以后,更新smart_gRelationArray,smart_realPlayerArr,smart_stop_array,smart_start_array
|
|
|
function updateRelationArray(srcIndex, index) {
|
|
|
//更新全局数组smart_gRelationArray
|
|
|
var src = smart_gRelationArray.indexOf(srcIndex);
|
|
|
var cur = smart_gRelationArray.indexOf(index);
|
|
|
var temp = smart_gRelationArray[src];
|
|
|
smart_gRelationArray[src] = smart_gRelationArray[cur];
|
|
|
smart_gRelationArray[cur] = temp;
|
|
|
//更新实际播放器的下标顺序
|
|
|
smart_realPlayerArr.length = 0;
|
|
|
//更新smart_start_array,smart_stop_array
|
|
|
smart_start_array.length = 0;
|
|
|
smart_stop_array.length = 0;
|
|
|
var tempArr = [];//临时记录分屏以后,按照顺序应该显示的下标的数组
|
|
|
for (var i = 0; i < smart_gRow * smart_max_Column; i = i + 4) {
|
|
|
for (var j = i; j < smart_gColumn + i; j++) {
|
|
|
tempArr.push(j);
|
|
|
}
|
|
|
}
|
|
|
//更新实际显示播放器的下标的数组,更新smart_stop_array,并设置应该显示的播放器的位置,显示对应的播放器
|
|
|
for (var i = 0; i < tempArr.length; i++) {
|
|
|
smart_realPlayerArr.push(smart_gRelationArray[tempArr[i]]);
|
|
|
smart_stop_array.push(i);
|
|
|
if (smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.background === "transparent" || smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.background === "none") {
|
|
|
smart_stop_array.remove(i);
|
|
|
smart_start_array.push(i);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
function changeImg(ele) {
|
|
|
if ($(ele).attr("src").indexOf("active") > 0) {
|
|
|
return;
|
|
|
}
|
|
|
var divider_img = document.getElementsByClassName("divider-img");
|
|
|
for (var i = 0; i < divider_img.length; i++) {
|
|
|
var src = $(divider_img[i]).attr("src");
|
|
|
src = src.substring(0, src.length - 4);
|
|
|
var row = $(divider_img[i]).attr("_row");
|
|
|
var column = $(divider_img[i]).attr("_column");
|
|
|
if (divider_img[i] === ele) {
|
|
|
$(divider_img[i]).attr("src", src + "-active.png");
|
|
|
$(divider_img[i]).addClass("divider-active-img");
|
|
|
I_stylePlayer({row: row, column: column})
|
|
|
} else {
|
|
|
if (src.indexOf("active") > 0) {
|
|
|
src = src.substring(0, src.length - 7);
|
|
|
$(divider_img[i]).attr("src", src + ".png");
|
|
|
$(divider_img[i]).removeClass("divider-active-img");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
function getVideoPaneId(iWndIndex) {
|
|
|
|
|
|
var index;
|
|
|
if (typeof(iWndIndex) == "undefined") {
|
|
|
iWndIndex = getSelectIndex();
|
|
|
iWndIndex = iWndIndex == -1 ? 0 : iWndIndex;
|
|
|
}
|
|
|
index = smart_realPlayerArr[iWndIndex];
|
|
|
index = (index || index == 0) ? index : smart_currentRightMenuIndex;
|
|
|
return "smart_player_box_" + index;
|
|
|
}
|
|
|
|
|
|
//获取当前的播放窗口总数
|
|
|
function I_currVideoWinNum() {
|
|
|
return smart_gColumn * smart_gRow;
|
|
|
}
|
|
|
|
|
|
//判断是否加载完毕
|
|
|
function I_initLoaded() {
|
|
|
return smart_loaded;
|
|
|
}
|
|
|
|
|
|
//================录制相关===============
|
|
|
|
|
|
//得到播放地址
|
|
|
function I_getPlayUrl(iWndIndex) {
|
|
|
return smart_playArr[iWndIndex]
|
|
|
}
|
|
|
|
|
|
//判断当前是否有录制任务
|
|
|
function I_hasRecording() {
|
|
|
for (var i = 0; i < smart_recordArr.length; i++) {
|
|
|
if (smart_recordArr[i])
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
function getAllRecordVideoUrl() {
|
|
|
var res = [];
|
|
|
for (var i = 0; i < smart_recordArr.length; i++) {
|
|
|
if (smart_recordArr[i])
|
|
|
res.push(smart_recordArr[i]);
|
|
|
}
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
//开始录制: 参数传递一个对象,可封装多个参数
|
|
|
function I_StartRecordVideo(index) {
|
|
|
var iWndIndex;
|
|
|
if (index) {
|
|
|
iWndIndex = smart_realPlayerArr[index];
|
|
|
} else {
|
|
|
iWndIndex = smart_currentRightMenuIndex;
|
|
|
}
|
|
|
smartStartRecordVideo(iWndIndex);
|
|
|
}
|
|
|
|
|
|
//开始录制的回调
|
|
|
function smartStartRecordVideo(iWndIndex) {
|
|
|
var playUrl = I_getPlayUrl(iWndIndex);
|
|
|
if (playUrl) {
|
|
|
var videoPaneId = "smart_player_box_" + iWndIndex;
|
|
|
$.ajax({
|
|
|
type: "get",
|
|
|
url: "/tapi/video/recordVideo",
|
|
|
data: {playUrl: playUrl},
|
|
|
// async: false,
|
|
|
success: function (data) {
|
|
|
if (data && data.status) {
|
|
|
//录制开始,将对应播放地址保存在队列中
|
|
|
smart_recordArr[iWndIndex] = playUrl;
|
|
|
//设置录制标志
|
|
|
$("#" + videoPaneId).find("div.video-win-record").html(
|
|
|
"<span class='video-win-record-pro'>正在录制 :</span><span class='video-win-record-time'> 00:00:00</span>" +
|
|
|
"<span class='video-win-record-stop' title='停止' onclick='I_StopRecordVideo(" + iWndIndex + ")'></span>");
|
|
|
//添加录制时间定时器,并将定时器添加到队列中
|
|
|
var time = 0;
|
|
|
var timer = setInterval(function () {
|
|
|
time++;
|
|
|
$("#" + videoPaneId).find("div.video-win-record span.video-win-record-time").html(I_RecordTime(time));
|
|
|
}, 1000);
|
|
|
smart_recordTimerArr[iWndIndex] = timer;
|
|
|
//设置心跳定时器,并将定时器添加到队列中
|
|
|
var heartTimer = setInterval(function () {
|
|
|
videoRecordHeart(playUrl);
|
|
|
}, 60000);
|
|
|
smart_recordHeartTimerArr[iWndIndex] = heartTimer;
|
|
|
} else {
|
|
|
// alert(data.message);
|
|
|
if (data.errorCode == 1) {
|
|
|
alert("已有他人录制,请5分钟后重试!");
|
|
|
}else {
|
|
|
alert("录制启动失败,请重试!");
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
error: function () {
|
|
|
alert("录制启动失败");
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
alert("未找到录制视频源,请确定该窗口有视频播放");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//停止录制
|
|
|
function I_StopRecordVideo(iWndIndex) {
|
|
|
smartStopRecordVideo(iWndIndex);
|
|
|
}
|
|
|
|
|
|
//停止录制回调
|
|
|
function smartStopRecordVideo(iWndIndex) {
|
|
|
var playUrl = I_getPlayUrl(iWndIndex);
|
|
|
if (playUrl && smart_recordArr.indexOf(playUrl) > -1) {//判断对应视频是否在录制队列中
|
|
|
var videoPaneId = "smart_player_box_" + iWndIndex;
|
|
|
if(confirm("确定要停止视频录制吗?")) {
|
|
|
$.ajax({
|
|
|
type: "get",
|
|
|
url: "/tapi/video/recordDone",
|
|
|
data: {playUrl: playUrl},
|
|
|
// async: false,
|
|
|
success: function (data) {
|
|
|
// console.log("录制结束: " + playUrl, data);
|
|
|
// if (data && data.status) {
|
|
|
//修改录制提示标识
|
|
|
$("#" + videoPaneId).find("span.video-win-record-pro").html("录制停止,时长 :");
|
|
|
$("#" + videoPaneId).find("span.video-win-record-stop").hide();
|
|
|
clearInterval(smart_recordTimerArr[iWndIndex]); //清除对应的录制时间定时器
|
|
|
clearInterval(smart_recordHeartTimerArr[iWndIndex]); //清除对应的心跳定时器
|
|
|
smart_recordArr[iWndIndex] = undefined;
|
|
|
notify("已停止录制", "success");
|
|
|
},
|
|
|
error: function () {
|
|
|
//修改录制提示标识
|
|
|
$("#" + videoPaneId).find("span.video-win-record-pro").html("录制停止,时长 :");
|
|
|
$("#" + videoPaneId).find("span.video-win-record-stop").hide();
|
|
|
clearInterval(smart_recordTimerArr[iWndIndex]); //清除对应的录制时间定时器
|
|
|
clearInterval(smart_recordHeartTimerArr[iWndIndex]); //清除对应的心跳定时器
|
|
|
smart_recordArr[iWndIndex] = undefined;
|
|
|
notify("已停止录制", "success");
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
} else {
|
|
|
alert("该视频并不在录制状态");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function I_RecordTime(time) {
|
|
|
return "00".substr(0, 2 - parseInt(time / 3600).toString().length) + parseInt(time / 3600).toString() + ":" +
|
|
|
"00".substr(0, 2 - parseInt(time / 60 % 60).toString().length) + parseInt(time / 60 % 60).toString() + ":" +
|
|
|
"00".substr(0, 2 - parseInt(time % 60).toString().length) + parseInt(time % 60).toString();
|
|
|
}
|
|
|
|
|
|
//录制视频心跳检测
|
|
|
function videoRecordHeart(playUrl) {
|
|
|
$.ajax({
|
|
|
type: "get",
|
|
|
url: "/tapi/video/recordHeart",
|
|
|
data: {playUrl: playUrl},
|
|
|
success: function (data) {
|
|
|
console.log("心跳: " + playUrl, data)
|
|
|
},
|
|
|
error: function () {
|
|
|
console.log("心跳: " + playUrl, "fail")
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//视频截图
|
|
|
function I_StartShotVideo(index) {
|
|
|
var iWndIndex;
|
|
|
if (index) {
|
|
|
iWndIndex = smart_realPlayerArr[index];
|
|
|
} else {
|
|
|
iWndIndex = smart_currentRightMenuIndex;
|
|
|
}
|
|
|
smartShotVideo(iWndIndex);
|
|
|
}
|
|
|
|
|
|
function smartShotVideo (iWndIndex) {
|
|
|
var playUrl = I_getPlayUrl(iWndIndex);
|
|
|
if (playUrl) {
|
|
|
$(".loading").show();
|
|
|
$.ajax({
|
|
|
type: "get",
|
|
|
url: "/tapi/video/shotVideo",
|
|
|
data: {playUrl: playUrl},
|
|
|
// async: false,
|
|
|
success: function (data) {
|
|
|
if (data) {
|
|
|
if (data.status) {
|
|
|
var url = encodeURI("/tapi/downLoad?fileName=uuid&url=" + data.message);
|
|
|
// setTimeout(function () {
|
|
|
$(".loading").hide();
|
|
|
window.location.href= url;
|
|
|
// }, 500);
|
|
|
} else {
|
|
|
$(".loading").hide();
|
|
|
notify (data.message || "截图失败", "warning");
|
|
|
}
|
|
|
} else {
|
|
|
$(".loading").hide();
|
|
|
notify ("截图失败", "warning");
|
|
|
}
|
|
|
},
|
|
|
error: function () {
|
|
|
$(".loading").hide();
|
|
|
notify("截图失败");
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
alert("未找到录制视频源,请确定该窗口有视频播放");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
function downloadFile(url) {
|
|
|
try{
|
|
|
var elemIF = document.createElement('iframe');
|
|
|
elemIF.src = url;
|
|
|
elemIF.style.display = 'none';
|
|
|
document.body.appendChild(elemIF);
|
|
|
// 防止下载两次
|
|
|
setTimeout(function() {
|
|
|
document.body.removeChild(elemIF)
|
|
|
}, 1000);
|
|
|
}catch(e){
|
|
|
console.log(e);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|