/** * Kplayer播放器内置功能 */ var tReq; var tTimer; var pingInt; $(function() { window.onresize = function() { showCloseBtn(); } pingInt = setInterval("ping()", 60000); var fileId = getFileId(); $ .ajax({ url : 'homeController/playVideo.ajax', type : 'POST', dataType : 'text', data : { fileId : fileId }, success : function(result) { if (result != "ERROR") { f = eval("(" + result + ")"); $("#vname").text( f.fileName.replace('\'', ''').replace('<', '<').replace('>', '>')); $("#vcreator").text(f.fileCreator); $("#vcdate").text(f.fileCreationDate); $("#vsize").text(f.fileSize); if (f.needEncode == "N") { playVideo(); } else { $("#playerMassage") .html( "

播放器正在努力解码中...

已完成:0%

提示:该视频需解码后播放,请耐心等待!

"); doTranscode(); } } else { alert("错误:无法定位要预览的文件或该操作未被授权。"); reMainPage(); } }, error : function() { alert("错误:请求失败,请刷新重试。"); reMainPage(); } }); }); // 获取URL上的视频id参数,它必须是第一个参数。 function getFileId() { var url = location.search; if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("="); return strs[1]; } return ""; } // 显示视频信息并播放视频 function playVideo() { $("#playerbox") .html( ""); var player = videojs('kiftplayer', { preload : 'auto' }); player.ready(function() { this.play(); }); } // 关闭当前窗口并释放播放器 function reMainPage() { if (tReq != null) { tReq.abort() } if (tTimer != null) { window.clearTimeout(tTimer); } window.opener = null; window.open('', '_self'); window.close(); } // 进行转码请求并监听进度状态(轮询) function doTranscode() { tReq = $.ajax({ url : 'resourceController/getVideoTranscodeStatus.ajax', type : 'POST', dataType : 'text', data : { fileId : f.fileId }, success : function(result) { if (result == "FIN") { playVideo(); } else if (result == "ERROR") { alert("错误:请求失败,请刷新重试。"); reMainPage(); } else { $("#transcodeProgress").text(result); tTimer = setTimeout('doTranscode()', 500);// 每隔1秒询问一次进度 } }, error : function() { alert("错误:请求失败,请刷新重试。"); reMainPage(); } }); } function showCloseBtn() { var win = $(window).width(); if (win < 450) { $("#closeBtn").addClass("hidden"); } else { $("#closeBtn").removeClass("hidden"); } } // 防止播放视频时会话超时的应答器,每分钟应答一次 function ping() { $.ajax({ url : "homeController/ping.ajax", type : "POST", dataType : "text", data : {}, success : function(result) { if (result != 'pong') { window.clearInterval(pingInt); } }, error : function() { window.clearInterval(pingInt); } }); }