Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var html5Player;
- var playerIsInit;
- var movieControlBarIsInit = false;
- var tvControlBarIsInit = false;
- var totalTime = 0;
- var currentTime = 0;
- var videoContainer;
- var streamingType;
- var updateTimer;
- var nextTimer;
- var tempRate;
- var volumeValue = 0.5;
- var playbackCompleted = false;
- var isPlaying = false;
- var isSeeking = false;
- var isClose = false;
- var isBuffering = false;
- var isMute = false;
- var errorLimit = 3;
- var errorTime = 0;
- var errorShowFlag = true;
- var barWidth = 600;
- var volWidth = 20;
- var positionList;
- var highlightList = [];
- var videoStart = 0;
- var videoCoda = 0;
- var easterEgg = 0;
- var skipStart = false;
- var skipCoda = false;
- var skipEnd = false;
- var matchAud = false;
- var PlayUpdateTimer = 60;
- var t1 = "",t2 = "",t3 = ""; // WebTrends
- function html5PlayUtil() {}
- html5PlayUtil.prototype.playStreaming = function(streamUrlTmp, type, position, thumbnail){
- streamUrl = streamUrlTmp;
- streamingType = type;
- positionList = position;
- if (playerIsInit) {
- if (streamingType == 'VOD') {
- $('.videoContainer #totalTime').html('0 : 00 : 00');
- $('.videoContainer #playTime').html('0 : 00');
- $('#btnSpeed a').removeClass('active');
- $("#btnSpeed a:nth-of-type(2)").addClass("active");
- $('#butQuality a').removeClass('active');
- $("#butQuality a:first").addClass("active");
- $('.subtitle-tips').html('');
- curSub = "";
- curAud = "";
- }
- clearInterval(updateTimer);
- this.loadVideo(streamUrl);
- } else {
- if (streamingType == 'VOD') {
- this.initPlayer();
- } else if (streamingType == 'LIVE') {
- this.initTVPlayer();
- }
- this.loadVideo(streamUrl);
- }
- setTimeout(function(){
- $('#btnVODPlay').addClass('paused');
- $('#btnPlay').addClass('paused');
- $("#volume-bar").slider('setValue', 10);
- }, 700);
- }
- var config = {
- playback: {
- autoPlay: true
- }
- };
- //初始化Player
- html5PlayUtil.prototype.initPlayer = function(){
- var video = document.getElementById('movie_player');
- html5Player = new voPlayer.Player(video);
- videoContainer = document.getElementById('containerArea');
- html5Player.init(config);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_STARTED, onPlayStarted, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_WAITING, onPlayWaiting, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_PLAYING, onPlayPlaying, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_SEEK_COMPLETE, onSeekComplete, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_SRC_CB_OPEN_FINISHED, onOpenComplete, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_COMPLETE, onPlaybackComplete, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_LOG_ADDED, onLogAdded, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_ERROR_EVENTS, onErrorAdded, false);
- playerIsInit = true;
- };
- html5PlayUtil.prototype.initTVPlayer = function(){
- var video = document.getElementById('live_player');
- html5Player = new voPlayer.Player(video);
- videoContainer = document.getElementById('liveContainerArea');
- html5Player.init(config);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_STARTED, onPlayStarted, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_SRC_CB_OPEN_FINISHED, onOpenComplete, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_WAITING, onPlayWaiting, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_PLAY_PLAYING, onPlayPlaying, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_ERROR_EVENTS, onErrorAdded, false);
- html5Player.addEventListener(voPlayer.events.VO_OSMP_CB_LOG_ADDED, onLogAdded, false);
- playerIsInit = true;
- };
- var vid;
- html5PlayUtil.prototype.loadVideo = function(url){
- var source =
- {
- links:
- [{
- uri: url
- }]
- };
- if (streamingType == 'VOD') {
- if (!is_preview_movie) {
- if (StreamingUtil.isDrm(url)) {
- source =
- {
- links:
- [{
- uri: url,
- drm:
- {
- widevine: { laUrl: "https://widevine.video.friday.tw/?deviceId=Mzg4NTllNGQtZmJhMS0zMGYxLWIzMDEtYzMxOWE1NjZiNGNk" }
- }
- }]
- };
- }
- }
- html5Player.open(source);
- $('video').attr('crossorigin','anonymous');
- vid = document.querySelector('video');
- if (typeof watch_name !== 'undefined')
- $('.player-movie-title').text(watch_name);
- } else if (streamingType == 'LIVE') {
- html5Player.open(source);
- $('video').attr('crossorigin','anonymous');
- vid = document.querySelector('video');
- if (parent.mutedFlag) {
- vid.muted = true;
- parent.mutedFlag = false;
- setTimeout(function(){ $(".btn-volume").trigger('click'); }, 700);
- }
- }
- $('.playloading').css('display','block');
- }
- html5PlayUtil.prototype.play = function(){
- if (playerIsInit) {
- isPlaying = true;
- html5Player.play();
- if (streamingType == 'VOD') {
- _stopPlayUpdate = false;
- if (streaming.canLike) {
- canLike = false;
- if (typeof movieTimeOutAlert == 'function') {
- _moviePlayViewTime=0;
- setTimeout(movieTimeOutAlert, 1000);
- }
- }
- } else if (streamingType == 'LIVE') {
- if (_tvplayViewTime>=_tvplayTimeAlert && needTimeAlert && !IsLogin()) {
- _tvplayViewTime = 0;
- setTimeout(timeOutAlert, 1000);
- }
- }
- }
- }
- html5PlayUtil.prototype.pause = function(){
- if (playerIsInit) {
- isPlaying = false;
- isBuffering = false;
- _stopPlayUpdate = true;
- clearInterval(updateTimer);
- html5Player.pause();
- }
- }
- html5PlayUtil.prototype.volume = function(realVolume){
- if (playerIsInit) {
- volumeValue = realVolume;
- html5Player.setVolume(realVolume);
- if (realVolume == 0) {
- isMute = true;
- } else {
- isMute = false;
- }
- }
- }
- html5PlayUtil.prototype.playbackRate = function(rate){
- if (playerIsInit) {
- tempRate = rate;
- document.querySelector('Video').playbackRate = rate;
- }
- }
- html5PlayUtil.prototype.videoQuality = function(quality){
- if (playerIsInit) {
- if (tempRate != 1) {
- document.querySelector('Video').playbackRate = 1;
- }
- html5Player.selectQualityLevel(quality);
- if (tempRate != 1) {
- document.querySelector('Video').playbackRate = tempRate;
- }
- }
- }
- html5PlayUtil.prototype.fullscreen = function(){
- if (isFullScreen()) {
- exitFullScreen();
- } else {
- enterFullScreen();
- }
- }
- html5PlayUtil.prototype.jumpTo = function(position){
- if (playerIsInit) {
- html5Player.setPosition(position);
- }
- }
- html5PlayUtil.prototype.currentTime = function(){
- return html5Player.getPosition();
- }
- html5PlayUtil.prototype.duration = function(){
- return html5Player.getDuration();
- }
- html5PlayUtil.prototype.closePlayer = function(){
- if (playerIsInit) {
- isPlaying = false;
- _stopPlayUpdate = true;
- if (typeof streamUrl != "undefined") {
- AnalyticsListen(0, "VO_OSMP_CB_STOP_COMPLETE", streamUrl, isMute, volumeValue, totalTime, currentTime, playbackCompleted, html5Player.getVersion());
- }
- html5Player.close();
- }
- }
- /*********************** Callback from Player start**********************/
- var loadingFlag = true;
- function onPlayStarted() {
- isPlaying = true;
- isClose = false;
- isBuffering = false;
- if (loadingFlag && streamingType == 'VOD') {
- if (!movieControlBarIsInit) {
- PlayerActionUtil.bindMovieControlBarEvents();
- }
- if (vid.textTracks.length==0 && temp_subtitles_url!='') {
- $('video').append('<track id="subtitle" src="'+temp_subtitles_url+'" label="subtitle" kind="subtitles" srclang="eng" default="true" />');
- if (vid.textTracks.length>0) {
- vid.textTracks[0].mode = "showing";
- }
- }
- if (!_playUpdateTimerStarted) {
- PlayerActionUtil.startPlayUpdateTimer((PlayUpdateTimer * 1000), playUpdateCallback);
- }
- if (streaming.canLike) {
- canLike = false;
- if (typeof movieTimeOutAlert == 'function') {
- _moviePlayViewTime=0;
- setTimeout(movieTimeOutAlert, 1000);
- }
- }
- var audTracks = html5Player.getAudioTracks();
- if (streaming.mainTrack==null || streaming.mainTrack=="null") {
- var audioProperty = audTracks[0];
- setTimeout(function() {
- html5Player.selectAudioTrack(audTracks[0]['id']);
- }, 1000);
- } else {
- for (var i = 0; i < audTracks.length; i++) {
- var audioProperty = audTracks[i];
- if (audioProperty.lang == streaming.mainTrack) {
- matchAud = true;
- setTimeout(function() {
- html5Player.selectAudioTrack(audioProperty.id);
- }, 1000);
- break;
- }
- }
- if (!matchAud) {
- var audioProperty = audTracks[0];
- setTimeout(function() {
- html5Player.selectAudioTrack(audTracks[0]['id']);
- }, 1000);
- }
- }
- loadingFlag = false;
- _stopPlayUpdate = false;
- } else {
- if (!tvControlBarIsInit) {
- PlayerActionUtil.bindTVControlBarEvents();
- }
- }
- clearInterval(updateTimer);
- updateTimer = setInterval(function() {
- onPlayTimeUpdated();
- }, 700);
- }
- function onPlayTimeUpdated() {
- updatePlayTime();
- updateThumbPos();
- }
- function onOpenComplete() {
- if (streamingType == 'VOD') {
- tempRate = 1;
- totalTime = h5player.duration();
- h5player.volume(0.5);
- if (movieStartTime!=0) {
- if (Math.floor(totalTime) - movieStartTime <= 1) {
- h5player.jumpTo(0);
- } else {
- h5player.jumpTo(movieStartTime);
- }
- }
- h5player.videoQuality('');
- $('#butQuality a').removeClass('active');
- $("#butQuality a:first").addClass("active");
- if (positionList!="") {
- var chapter_start = "<div class=\"swiper-container gallery-movie\" id=\"chapter-swiper\"><div class=\"swiper-wrapper\">";
- var content = "";
- var chapter_end = "</div><div class=\"swiper-button-prev swiper-button-white\"></div><div class=\"swiper-button-next swiper-button-white\"></div></div>";
- for (var i=0;i<positionList.length;i++) {
- if (positionList[i].cueType == "Header") {
- videoStart = positionList[i].timePosition;
- }
- if (positionList[i].cueType == "Tailer") {
- videoCoda = positionList[i].timePosition;
- }
- if (positionList[i].cueType == "EGG") {
- easterEgg = positionList[i].timePosition;
- }
- var position = {"start":(positionList[i].timePosition*(barWidth/totalTime)), "end":(positionList[i].timePosition*(barWidth/totalTime)+1.5)};
- highlightList[i] = position;
- var cueImg = positionList[i].url;
- if (cueImg!=null && cueImg!="") {
- cueImg = cueImg.replace(".", "_L.");
- }
- content = content+"<div class=\"swiper-slide\" style=\"width:22%; margin-right:2.5%\"><a onclick=\"jumpChapter('chapter','"+positionList[i].timePosition+"');\">"+
- "<div class=\"img-block\"><img class=\"swiper-lazy\" data-src=\""+config_imageDomain+cueImg+"\"></div>"+
- "<div class=\"info\"><p>"+positionList[i].description+"</p><p>"+timeToHms(positionList[i].timePosition)+"</p></div></a></div>";
- }
- $('#chapterContent').html(chapter_start+content+chapter_end);
- } else {
- $('#btnChapters').css('display','none');
- }
- $("#range").slider('destroy');
- $('#range').slider({
- rangeHighlights: highlightList
- });
- } else if (streamingType == 'LIVE') {
- if (needTimeAlert && !IsLogin()) {
- setTimeout(timeOutAlert, 1000);
- }
- }
- }
- function onSeekComplete() {
- isSeeking = false;
- isBuffering = false;
- updatePlayTime();
- updateThumbPos();
- }
- function onPlaybackComplete() {
- playbackCompleted = true;
- PlayerActionUtil.startPlayUpdate(playUpdateCallback);
- $('.playloading').css('display','none');
- $('.btn-play .hide').css('display','block');
- $('.btn-play .show').css('display','none');
- $('#btnVODPlay').removeClass('paused');
- //$('#btnVODPlay').click();
- if (isFullScreen()) {
- exitFullScreen();
- }
- if (streaming.contentType == 1) {
- var related = parent.getRelated();
- $('#relatedlist1').html(related);
- $('#recommend-popup1').css('display','block');
- } else if (streaming.contentType==2 || streaming.contentType==3 || streaming.contentType==4) {
- if (streaming.haveNextEpisode == true) {
- $('#recommend-popup3').css('display','block');
- if (streaming.haveLastEpisode == false) {
- $(".option span:first").css('display','none');
- $(".option p:first").html('');
- }
- nextTimer = setInterval(function() {
- timer();
- }, 1000);
- } else {
- var related = parent.getRelated();
- $('#relatedlist2').html(related);
- $('#recommend-popup2').css('display','block');
- }
- }
- }
- function onErrorAdded(event) {
- AnalyticsListen(event.code, event.message.toString(), streamUrl, isMute, volumeValue, totalTime, currentTime, playbackCompleted, html5Player.getVersion());
- var code = '0x'+event.code.toString(16);
- var description = event.message;
- if (description) {
- if (description.length > 100) {
- description = description.substring(0, 100);
- }
- }
- var msgValue = getErrMsg(code);
- msgIndex = msgValue.indexOf("#");
- if (msgIndex!=-1) {
- codeName = msgValue.split("#")[0];
- wording = msgValue.split("#")[1];
- if (errorShowFlag) {
- alert(wording);
- }
- errorShowFlag = false;
- } else {
- codeName = msgValue;
- }
- errorTime++;
- var playUpdateParams = {
- code : code,
- message : codeName,
- description : description
- };
- if (errorTime <= errorLimit) {
- VenusAPI.errorLogUpdate(playUpdateParams);
- }
- console.log('ERROR: 0x' + event.code.toString(16) + ':' + event.message + '\n');
- }
- function onLogAdded(event) {
- AnalyticsListen(0, event.message.toString(), streamUrl, isMute, volumeValue, totalTime, currentTime, playbackCompleted, html5Player.getVersion());
- }
- function onPlayWaiting() {
- isBuffering = true;
- //if (fixFirefoxAutoplayBug) {
- // isBuffering = false;
- //}
- }
- function onPlayPlaying() {
- isBuffering = false;
- }
- function getErrMsg(code) {
- if (code == '0x81000001') {
- return 'VO_OSMP_SRC_ERR_FORMAT_UNSUPPORT';
- } else if (code == '0x81000002') {
- return 'VO_OSMP_SRC_ERR_CODEC_UNSUPPORT';
- } else if (code == '0x81000003') {
- return 'VO_OSMP_SRC_ERR_BROWSER_UNSUPPORT_MSE';
- } else if (code == '0x81000004') {
- return 'VO_OSMP_SRC_ERR_MANIFEST_DOWNLOAD_FAIL#請確認網路狀態,並關閉播放器重試(htl04)';
- } else if (code == '0x81000005') {
- return 'VO_OSMP_SRC_ERR_MANIFEST_PARSE_FAIL';
- } else if (code == '0x81000006') {
- return 'VO_OSMP_SRC_ERR_CONTENT_DOWNLOAD_FAIL#請確認網路狀態,並關閉播放器重試(htl06)';
- } else if (code == '0x81000007') {
- return 'VO_OSMP_SRC_ERR_CONTENT_PARSE_FAIL';
- } else if (code == '0x81000008') {
- return 'VO_OSMP_SRC_ERR_TEXT_TRACK_PARSE_FAIL';
- } else if (code == '0x81000009') {
- return 'VO_OSMP_SRC_ERR_SOURCE_BUFFER_ERROR';
- } else if (code == '0x8100000A' || code == '0x8100000a') {
- return 'VO_OSMP_SRC_ERR_OUTMEMORY';
- } else if (code == '0x8100000B' || code == '0x8100000b') {
- return 'VO_OSMP_SRC_ERR_UNKNOWN';
- } else if (code == '0x8100000C' || code == '0x8100000c') {
- return 'VO_OSMP_DRM_ERR_BROWSER_UNSUPPORT#請確認瀏覽器版本是否支援(htl0C)';
- } else if (code == '0x8100000D' || code == '0x8100000d') {
- return 'VO_OSMP_DRM_ERR_KEY_FAIL#請稍候再試(htl0D)';
- } else if (code == '0x8100000E' || code == '0x8100000e') {
- return 'VO_OSMP_DRM_ERR_KEY_SESSION_FAIL#請稍候再試(htl0E)';
- } else if (code == '0x8100000F' || code == '0x8100000f') {
- return 'VO_OSMP_DRM_ERR_LICENSE_REQUEST_FAIL#請稍候再試(htl0F)';
- } else if (code == '0x81000010') {
- return 'VO_OSMP_DRM_ERR_SELECT_KEY_SYSTEM_FAIL#請確認瀏覽器版本是否支援(htl10)';
- } else if (code == '0x81000011') {
- return 'VO_OSMP_DRM_ERR_DECRYPT_FAIL';
- } else {
- return 'VO_OSMP_SRC_ERR_UNKNOWN';
- }
- }
- /*********************** Callback from Player end **********************/
- function updatePlayTime() {
- if (playerIsInit) {
- if (streamingType == 'VOD') {
- var duration = html5Player.getDuration();
- if (!isNaN(duration)) {
- currentTime = html5Player.getPosition();
- setDisplayTime('total',duration);
- setDisplayTime('current',currentTime);
- if (duration - currentTime < 1) {
- isPlaying = false;
- }
- if (_stopPlayUpdate == false) {
- //if (ctype == '1') {
- if (!skipEnd && easterEgg > 0 && (currentTime > videoCoda+1) && (currentTime < easterEgg)) {
- $("#jumpEasterEgg").css('display','block');
- } else if (easterEgg > 0 && (currentTime > easterEgg)) {
- $("#jumpEasterEgg").css('display','none');
- } else if (!skipCoda && videoCoda > 0 && (currentTime > videoCoda)) {
- $("#jumpCoda").css('display','block');
- } else if (currentTime > videoStart) {
- $("#jumpStart").css('display','none');
- } else if (!skipStart && (currentTime < videoStart)) {
- $("#jumpStart").css('display','block');
- $("#jumpStart").css('right','calc(100% - 160px)');
- }
- //}
- }
- if (isBuffering) {
- $('.playloading').css('display','block');
- } else {
- $('.playloading').css('display','none');
- }
- }
- } else {
- if (isBuffering) {
- $('.playloading').css('display','block');
- } else {
- $('.playloading').css('display','none');
- }
- }
- }
- }
- function updateThumbPos() {
- if (playerIsInit) {
- var duration = html5Player.getDuration();
- var percent = barWidth * (currentTime/duration);
- $("#range").slider('setValue', percent);
- }
- }
- function setDisplayTime(type, time) {
- var timeHMS = timeToHms(time);
- if (type == 'total') {
- $('.videoContainer #totalTime').html(timeHMS);
- } else if (type == 'current') {
- $('.videoContainer #playTime').html(timeHMS);
- }
- }
- function getHtml5Subtitle() {
- if($('#subtitleList').html()!="")
- return;
- var sl = streaming.subtitles.length;
- var subList = "";
- if (sl > 0) {
- var subClass = curSub==-1?'class="active"':'';
- subList = '<a onclick="changeHtml5Subtitle(-1);" ' + subClass + '>不顯示</a>';
- for (var i = 0; i < streaming.subtitles.length ; i++) {
- var name = streaming.subtitles[i].name;
- subClass = curSub == i ? 'class="active"' : '';
- subList += '<a onclick="changeHtml5Subtitle('+i+');"' + subClass + '>' + name + '</a>';
- }
- } else {
- $('#butSubtitle').css('display','none');
- }
- $('#subtitleList').html(subList);
- }
- function changeHtml5Subtitle(var1) {
- curSub = var1;
- $('#subtitleValue').val(var1);
- if (var1 != -1) {
- $('track').remove();
- var subtitles_url = "";
- if (streaming.subtitles.length > 0) {
- subtitles_url = streaming.subtitles[var1].url;
- subtitles_url = subtitles_url.replace("http://", "https://");
- }
- $('video').append('<track id="subtitle" src="'+subtitles_url+'" label="subtitle" kind="subtitles" srclang="eng" default="true" />');
- if (vid.textTracks.length>0) {
- vid.textTracks[0].mode = "showing";
- }
- } else {
- vid.textTracks[0].mode = "hidden";
- }
- $('#subtitleList').html('');
- getHtml5Subtitle();
- t2 = "設定", t3 = "字幕";
- WTctr_play();
- }
- function getHtml5Audio() {
- if($('#audioList').html()!="")
- return;
- var audioTracks = html5Player.getAudioTracks();
- var audClass = "";
- var audList = "";
- for (var i = 0; i < audioTracks.length; i++) {
- var audioProperty = audioTracks[i];
- var name = getChineseAudio(audioProperty.lang);
- if (curAud=="") {
- if (audioProperty.lang == streaming.mainTrack) {
- audClass = 'class="active"';
- } else {
- if (streaming.mainTrack==null && i==0) {
- audClass = 'class="active"';
- } else if (matchAud==false && i==0) {
- audClass = 'class="active"';
- } else {
- audClass = '';
- }
- }
- } else {
- audClass = curAud == audioProperty.id ? 'class="active"' : '';
- }
- audList += '<a onclick="changeHtml5Audio(\''+audioProperty.id+'\');"' + audClass + '>' + name + '</a>';
- }
- $('#audioList').html(audList);
- }
- function changeHtml5Audio(var1) {
- curAud = var1;
- html5Player.selectAudioTrack(curAud);
- $('#audioList').html('');
- getHtml5Audio();
- t2 = "設定", t3 = "語言" ;
- WTctr_play();
- }
- function timeToHms(d) {
- d = Number(d);
- var h = Math.floor(d / 3600);
- var m = Math.floor(d % 3600 / 60);
- var s = Math.floor(d % 3600 % 60);
- return ((h > 0 ? h + " : " + (m < 10 ? "0" : "") : "") + m + " : " + (s < 10 ? "0" : "") + s);
- }
- function isFullScreen() {
- return document.fullscreenElement || document.msFullscreenElement || document.mozFullScreen || document.webkitIsFullScreen;
- }
- //
- var fullScreen = false;
- function enterFullScreen() {
- if (videoContainer.requestFullscreen) {
- videoContainer.requestFullscreen();
- } else if (videoContainer.msRequestFullscreen) {
- videoContainer.msRequestFullscreen();
- } else if (videoContainer.mozRequestFullScreen) {
- videoContainer.mozRequestFullScreen();
- } else {
- videoContainer.webkitRequestFullScreen();
- }
- fullScreen = true;
- }
- function exitFullScreen() {
- if (document.exitFullscreen) {
- document.exitFullscreen();
- } else if (document.mozCancelFullScreen) {
- document.mozCancelFullScreen();
- } else if (document.msExitFullscreen) {
- document.msExitFullscreen();
- } else {
- document.webkitCancelFullScreen();
- }
- fullScreen = false;
- }
- $(document).on("mozfullscreenchange webkitfullscreenchange fullscreenchange", fullscreenChange);
- function fullscreenChange(){
- if (!isFullScreen()) {
- fullScreen = false;
- }
- }
- function closeHtml5Movie() {
- isClose = true;
- PlayerActionUtil.startPlayUpdate(playUpdateCallback);
- h5player.pause();
- //PlayerActionUtil.removeHotkeys();
- h5player.closePlayer();
- playNextFlag = false;
- loadingFlag = true;
- fixFirefoxAutoplayBug = false;
- errorShowFlag = true;
- errorTime = 0;
- $('#subtitleValue').val('');
- }
- function PlayerActionUtil() {}
- PlayerActionUtil.bindMovieControlBarEvents = function() {
- movieControlBarIsInit = true;
- var skipSeconds = 30;
- var mouseX_window = "";
- $(function() {
- //播放按鍵
- $("#btnVODPlay").on('click', function() {
- if ($('#btnVODPlay').hasClass('paused')) {
- $('#btnVODPlay').removeClass('paused');
- h5player.pause();
- } else {
- $('#btnVODPlay').addClass('paused');
- h5player.play();
- }
- });
- //快轉按鍵
- $("#btnFwd").on('click', function() {
- var pos = h5player.currentTime();
- h5player.jumpTo(pos+skipSeconds);
- });
- //倒轉按鍵
- $("#btnBck").on('click', function() {
- var pos = h5player.currentTime();
- if (pos-skipSeconds>0) {
- h5player.jumpTo(pos-skipSeconds);
- } else {
- h5player.jumpTo(0);
- }
- });
- //音量按鍵
- $(".btn-volume").on('click', function() {
- if (playerIsInit) {
- if($('.btn-volume').hasClass('mute')) {
- h5player.volume(0);
- } else {
- h5player.volume(0.5);
- $("#volume-bar").slider('setValue', 10);
- }
- }
- });
- var volDrag = false;
- $('#volume-bar').slider().on('slideStart', function(ev) {
- originalVal = $('#volume-bar').data('slider').getValue();
- if (playerIsInit) {
- volDrag = true;
- }
- });
- $('#volume-bar').slider().on('slideStop', function(ev) {
- var newVal = $('#volume-bar').data('slider').getValue();
- if (originalVal != newVal) {
- if (volDrag) {
- volDrag = false;
- var pos = newVal / volWidth;
- if (pos >= 1) {
- pos = 1;
- } else if (pos <= 0) {
- pos = 0
- }
- var realVolume = pos;
- h5player.volume(realVolume);
- $('#volume-bar').slider({
- value:newVal
- });
- }
- }
- });
- //Seek Bar
- var playFlag = false;
- var maxduration;
- var clipPos;
- $('#range').slider().on('change', function(event) {
- var a = event.value.newValue;
- var b = event.value.oldValue;
- if (a!=b) {
- isSeeking = true;
- maxduration = h5player.duration();
- if (playerIsInit) {
- if (isPlaying) {
- h5player.pause();
- playFlag = true;
- }
- }
- var rangeX_start = $('#range-slider').offset().left;
- var mouseX_range = mouseX_window - rangeX_start; //滑鼠在range上的X位置
- var rangeWidth = $('#range-slider').outerWidth(); //range寬度
- var pos = a / (rangeWidth-1) * maxduration;
- if (clipPos!='') {
- pos = clipPos;
- } else {
- pos = (maxduration/barWidth)*a;
- }
- $('.playloading').css('display','block');
- h5player.jumpTo(pos);
- if (playFlag) {
- h5player.play();
- playFlag = false;
- t2 = "錨點", t3 = "na";
- WTctr_play();
- }
- }
- });
- //跳轉章節
- var swiper = "";
- $("#btnChapters").on('click', function() {
- $("#btnVODPlay").click();
- $('#chapter-popup').css('display','block');
- if (swiper != "") {
- swiper.destroy();
- }
- swiper = new Swiper('#chapter-swiper', {
- slidesPerView: 4,
- spaceBetween: 30,
- slidesPerGroup: 4,
- loop: false,
- loopFillGroupWithBlank: true,
- lazy: true,
- navigation: {
- nextEl: '.swiper-button-next',
- prevEl: '.swiper-button-prev',
- },
- });
- });
- //全螢幕
- $("#fullscreen").on('click', function() {
- h5player.fullscreen();
- });
- //設定
- $('.btn-menu').on('click', function() {
- var _this = $('#setting');
- //if ($(_this).css("display") == "none") {//hide->show
- getHtml5Subtitle();
- getHtml5Audio(); //等音軌版本
- //$(_this).slideDown();
- //} else {//show->hide
- //$(_this).slideUp();
- //}
- });
- // setting
- $("#setting").on("click", "a", function(){
- t2 = $(this).closest(".t2").attr("t2");
- t3 = $(this).closest("li").find(".title").html();
- WTctr_play();
- })
- //畫質
- $("#butQuality a").click(function() {
- var quality = $(this).attr('lid');
- var qualityIdx = quality.split("bQ")[1];
- var qualityLevels = html5Player.getQualityLevels();
- if (qualityLevels.length>3 && qualityIdx>-1) {
- var videoProperty = qualityLevels[qualityIdx];
- h5player.videoQuality(videoProperty.id);
- } else {
- h5player.videoQuality('');
- }
- $('#butQuality a').removeClass('active');
- $(this).addClass('active');
- });
- //倍速
- $('#btnSpeed a').on('click', function() {
- var speed = $(this).attr('lid');
- var speedIdx = speed.split("bS")[1];
- h5player.playbackRate(speedIdx);
- $('#btnSpeed a').removeClass('active');
- $(this).addClass('active');
- });
- //縮圖顯示
- $('#range-slider').mousemove(function( event ) {
- if (!is_preview_movie) {
- var videoWidth = $('#movie_player').outerWidth(); //video寬度
- var rangeWidth = $('#range-slider').outerWidth(); //range寬度
- mouseX_window = event.pageX; //滑鼠所在螢幕X位置
- var rangeX_start = $('#range-slider').offset().left; //range啟始的X位置
- var rangeGap = (videoWidth - rangeWidth) / 2;
- var mouseX_range = mouseX_window - rangeX_start; //滑鼠在range上的X位置
- var clipWidth = $('.clip-box').outerWidth(); //預覽圖寬度
- var clipX_end = mouseX_range + (clipWidth/2);
- var clipP;
- if (mouseX_range > clipWidth/2) {
- if (clipX_end < rangeWidth) {
- clipP = mouseX_range-(clipWidth/2)+rangeGap;
- } else {
- clipP = rangeWidth+rangeGap-clipWidth;
- }
- $("#clipView").show().css({ left: clipP });
- } else {
- $("#clipView").show().css({ left: rangeGap });
- }
- maxduration = h5player.duration();
- var pos;
- if (mouseX_range < 0) {
- pos = 0;
- } else {
- if (mouseX_range < (rangeWidth-1)) {
- pos = mouseX_range / (rangeWidth-1) * maxduration;
- } else {
- pos = (rangeWidth-1) / (rangeWidth-1) * maxduration;
- }
- }
- if (isNaN(pos)) {
- $('#clip-box-info').html("0 : 00");
- } else {
- if (positionList!="") {
- if (pos>=videoCoda && videoCoda>0 && easterEgg==0) {
- $("#jumpCoda").css('display','block');
- setTimeout(function() {
- $("#jumpCoda").css('display','none');
- }, 4000);
- } else if (pos>=easterEgg && easterEgg>0) {
- $("#jumpEasterEgg").css('display','block');
- setTimeout(function() {
- $("#jumpEasterEgg").css('display','none');
- }, 4000);
- }
- }
- $('#clip-box-info').html(timeToHms(pos));
- }
- clipPos = pos;
- var pic = Math.ceil(pos / (60*20)); //20分鐘一張圖
- var pic_num = pic>0 ? pic:1;
- $("#clip-box-img").attr("src",config_imageDomain+"/THUMB/"+streaming.streamingId+"/"+streaming.streamingId+"_thumb_"+pic_num+"_L.jpg");
- var picTemp = parseInt(pic_num)-1;
- var thumbnail = Math.ceil((pos-(picTemp*60*20)) / 10);
- if (thumbnail == 0) {
- thumbnail = 1;
- }
- var thumbnail_int = parseInt(thumbnail / 10);
- var thumbnail_remainder = thumbnail % 10;
- var thumbnail_X;
- if (thumbnail > 10) {
- if (thumbnail_remainder == 0) {
- thumbnail_X = thumbnail_int-1;
- } else {
- thumbnail_X = thumbnail_int;
- }
- } else {
- thumbnail_X = 0;
- }
- var thumbnail_Y = thumbnail_remainder>0 ? (thumbnail_remainder-1):9;
- $("#clip-box-img").css("margin",((-112.6)*thumbnail_X)+"px "+ "0px 0px"+" "+((-200)*thumbnail_Y)+"px"); //高112 寬200
- $('.clip-box').css('display','block');
- }
- });
- $('#range-slider').mouseleave(function() {
- $('.clip-box').css('display','none');
- clipPos = '';
- });
- });
- }
- PlayerActionUtil.bindTVControlBarEvents = function() {
- tvControlBarIsInit = true;
- //播放按鍵
- $("#btnPlay").on('click', function() {
- if ($('#btnPlay').hasClass('paused')) {
- $('#btnPlay').removeClass('paused');
- h5player.pause();
- } else {
- $('#btnPlay').addClass('paused');
- h5player.play();
- }
- });
- //音量按鍵
- $(".btn-volume").on('click', function() {
- if (playerIsInit) {
- if($('.btn-volume').hasClass('mute')) {
- h5player.volume(0);
- } else {
- vid.muted = false;
- h5player.volume(0.5);
- $("#volume-bar").slider('setValue', 10);
- }
- }
- });
- var volDrag = false;
- $('#volume-bar').slider().on('slideStart', function(ev) {
- originalVal = $('#volume-bar').data('slider').getValue();
- if (playerIsInit) {
- volDrag = true;
- }
- });
- $('#volume-bar').slider().on('slideStop', function(ev) {
- var newVal = $('#volume-bar').data('slider').getValue();
- if (originalVal != newVal) {
- if (volDrag) {
- volDrag = false;
- var pos = newVal / volWidth;
- if (pos >= 1) {
- pos = 1;
- } else if (pos <= 0) {
- pos = 0
- }
- var realVolume = pos;
- h5player.volume(realVolume);
- $('#volume-bar').slider({
- value:newVal
- });
- }
- }
- });
- //全螢幕
- $("#fullscreen").on('click', function() {
- h5player.fullscreen();
- });
- }
- PlayerActionUtil.startPlayUpdateTimer = function(time, playUpdateCallback) {
- setTimeout(
- function() {
- _playUpdateTimerStarted = true;
- if(!is_preview_movie)
- PlayerActionUtil.startPlayUpdate(playUpdateCallback);
- PlayerActionUtil.startPlayUpdateTimer(time, playUpdateCallback);
- }, time);
- }
- PlayerActionUtil.startPlayUpdate = function(playUpdateCallback) {
- var playUpdateParams = {
- contentId : streaming.contentId,
- contentType : streaming.contentType,
- streamingId : streaming.streamingId,
- stopTime : Math.round(h5player.currentTime())
- };
- if (!_stopPlayUpdate && (getCookie("dbCrashFlag") != "911")) {
- VenusAPI.playUpdate(null, playUpdateParams, playUpdateCallback);
- if (isClose) {
- VenusAPI.playStop();
- }
- }
- }
- PlayerActionUtil.bindHotkeyEvents = function() {
- shortcut.add("esc",function() {
- if (isFullScreen()) {
- exitFullScreen();
- } else {
- isClose = true;
- PlayerActionUtil.startPlayUpdate(playUpdateCallback);
- h5player.pause();
- PlayerActionUtil.removeHotkeys();
- h5player.closePlayer();
- playNextFlag = false;
- loadingFlag = true;
- errorShowFlag = true;
- errorTime = 0;
- closePopup();
- }
- });
- }
- PlayerActionUtil.removeHotkeys = function() {
- var hotKeys =
- [
- "esc"
- ];
- for (var i=0; i<hotKeys.length; i++) {
- shortcut.remove(hotKeys[i]);
- }
- }
- function jumpChapter(type, pos) {
- if (type == "start") {
- html5Player.setPosition(videoStart);
- $("#jumpStart").css('display','none');
- t2 = "跳過片頭", t3 = "na" ;
- } else if (type == "coda") {
- skipCoda = true;
- html5Player.setPosition(totalTime-2);
- $("#jumpCoda").css('display','none');
- t2 = "跳過片尾", t3 = "na" ;
- } else if (type == "easterEgg") {
- html5Player.setPosition(easterEgg);
- $("#jumpEasterEgg").css('display','none');
- t2 = "跳過片尾 看彩蛋", t3 = "na" ;
- } else if (type == "chapter") {
- html5Player.setPosition(pos);
- $("#btnVODPlay").click();
- $("#chapter-popup").css('display','none');
- t2 = "跳轉章節icon", t3 = "章節縮圖" ;
- }
- WTctr_play();
- }
- function jumpHidden(type) {
- if (type == "start") {
- skipStart = true;
- $("#jumpStart").css('display','none');
- } else if (type == "coda") {
- $("#jumpCoda").css('display','none');
- } else if (type == "easterEgg") {
- skipEnd = true;
- $("#jumpEasterEgg").css('display','none');
- }
- }
- var sec = 10;
- function timer() {
- $(".timer .number").text(sec);
- if(sec > 0) {
- sec--;
- $(".timer .number").text(sec);
- } else {
- // WT 自動續播
- parent.videoplay_tracking("自動續播");
- clearInterval(nextTimer);
- sec = 10;
- $(".timer-box").fadeOut(500);
- var sHref=top.location.href;
- parent.$.fancybox.close();
- if(sHref.indexOf("chapter")> 0){
- var name = "#playbutton_"+(playIndex+1);
- parent.$(name).trigger('click');
- }else{
- parent.$(".play-button-box").data('src', "/player?sid="+nextSid+"&stype="+stype+"&ctype="+ctype+"&cid="+nextCid+"&epi="+nextEpisodeName);
- parent.$("#playbutton").trigger('click');
- }
- }
- }
- function clickRecommend(url, type) {
- if (type == "play") {
- setCookie("recommend_autoplay", "1");
- setCookie("eventPageId", "05");
- }
- parent.window.location = url;
- }
- function closeRecommendPopup(type) {
- $('#recommend-popup1').css('display','none');
- $('#recommend-popup2').css('display','none');
- $('#recommend-popup3').css('display','none');
- $('#chapter-popup').css('display','none');
- if (ctype != 1) {
- clearInterval(nextTimer);
- }
- if (type == "replay") {
- $("#btnVODPlay").click();
- } else if (type == "next" || type == "last") {
- var sHref=top.location.href;
- parent.$.fancybox.close();
- if(sHref.indexOf("chapter") > 0 ){
- var name;
- if (type == "next") {
- name = "#playbutton_"+(playIndex+1);
- // WT 續播
- parent.videoplay_tracking("續播");
- } else {
- name = "#playbutton_"+(playIndex-1);
- }
- parent.$(name).trigger('click');
- } else {
- if (type == "next") {
- // WT 續播
- parent.videoplay_tracking("續播");
- parent.$(".play-button-box").data('src', "/player?sid="+nextSid+"&stype="+stype+"&ctype="+ctype+"&cid="+nextCid+"&epi="+nextEpisodeName);
- } else {
- parent.$(".play-button-box").data('src', "/player?sid="+lastSid+"&stype="+stype+"&ctype="+ctype+"&cid="+lastCid+"&epi="+lastEpisodeName);
- }
- parent.$("#playbutton").trigger('click');
- }
- } else if (type == "chapter") {
- $("#btnVODPlay").click();
- }
- return false;
- }
- function FirefoxAutoplay() {
- if (!fixFirefoxAutoplayBug) {
- if (is_preview_movie) {
- fixFirefoxAutoplayBug = true;
- setTimeout(
- function(){
- h5player.pause();
- h5player.play();
- }, 2000);
- } else {
- h5player.pause();
- h5player.play();
- }
- } else {
- isBuffering = false;
- }
- }
- //WT CTR
- var WT_block = "PLAYER";
- function WTctr_play(){
- if(typeof t3 === "undefined") t3 = "na";
- if(typeof t2 === "undefined" && typeof t3 !== "undefined"){
- t2 = t3, t3 = "na";
- }
- t1 = getContentTypeName(streaming.contentType);
- if(t2) WTctr_player(WT_block, t1, t2, t3);
- }
- function WTctr_player(block, t1, t2, t3){
- if((block != "") && (typeof t1 !== "undefined") && (typeof t2 !== "undefined")){
- dcsMultiTrack('DCS.dcsuri', '/CTR.dat', 'DCSext.WTlayout_block', block, 'DCSext.WTlayout_type', t1, 'DCSext.WTlayout_type2', t2, 'DCSext.WTlayout_type3', t3);
- }
- }
- function getChineseAudio(name) {
- var changeName = name;
- if (name=="def") {
- changeName = "預設";
- } else if (name=="chi"){
- changeName = "華語";
- } else if (name=="kor") {
- changeName = "韓語";
- } else if (name=="jpn") {
- changeName = "日語";
- } else if (name=="fre") {
- changeName = "法語";
- } else if (name=="ger") {
- changeName = "德語";
- } else if (name=="eng") {
- changeName = "英語";
- } else if (name=="hkg") {
- changeName = "粵語";
- } else if (name=="ita") {
- changeName = "義大利語";
- } else if (name=="spa") {
- changeName = "西班牙語";
- } else if (name=="twn") {
- changeName = "閩南語";
- } else if (name=="tha") {
- changeName = "泰語";
- } else if (name=="tib") {
- changeName = "藏語";
- } else if (name=="hin") {
- changeName = "印度語";
- } else if (name=="dan") {
- changeName = "丹麥語";
- } else if (name=="vie") {
- changeName = "越南語";
- } else if (name=="swe") {
- changeName = "瑞典語";
- } else if (name=="may") {
- changeName = "馬來語";
- } else if (name=="dut") {
- changeName = "荷蘭語";
- } else if (name=="pol") {
- changeName = "波蘭語";
- } else if (name=="ind") {
- changeName = "印尼語";
- } else if (name=="per") {
- changeName = "波斯語";
- } else if (name=="gre") {
- changeName = "希臘語";
- } else if (name=="lat") {
- changeName = "拉丁語";
- } else if (name=="bur") {
- changeName = "緬甸語";
- } else if (name=="egy") {
- changeName = "埃及語";
- } else if (name=="ice") {
- changeName = "冰島語";
- } else if (name=="dzo") {
- changeName = "不丹語";
- } else if (name=="cze") {
- changeName = "捷克語";
- } else if (name=="kur") {
- changeName = "庫德語";
- } else if (name=="lao") {
- changeName = "寮國語";
- } else if (name=="mya") {
- changeName = "瑪雅語";
- } else if (name=="mon") {
- changeName = "蒙古語";
- } else if (name=="afr") {
- changeName = "南非語";
- } else if (name=="nor") {
- changeName = "挪威語";
- } else if (name=="zul") {
- changeName = "祖魯語";
- } else if (name=="rus") {
- changeName = "俄羅斯語";
- } else if (name=="heb") {
- changeName = "希伯來語";
- } else if (name=="por") {
- changeName = "葡萄牙語";
- } else if (name=="tam") {
- changeName = "坦米爾語";
- } else if (name=="hun") {
- changeName = "匈牙利語";
- } else if (name=="phl") {
- changeName = "菲律賓語";
- } else if (name=="mac") {
- changeName = "馬其頓語";
- } else if (name=="ara") {
- changeName = "阿拉伯語";
- } else if (name=="aut") {
- changeName = "奧地利語";
- } else if (name=="bam") {
- changeName = "班巴拉語";
- } else if (name=="lin") {
- changeName = "林格拉語";
- } else if (name=="hat") {
- changeName = "克里奧語";
- } else if (name=="kaz") {
- changeName = "哈薩克語";
- } else if (name=="khm") {
- changeName = "柬埔寨語";
- } else if (name=="lit") {
- changeName = "立陶宛語";
- } else if (name=="ben") {
- changeName = "孟加拉語";
- } else if (name=="nep") {
- changeName = "尼泊爾語";
- } else if (name=="geo") {
- changeName = "喬治亞語";
- } else if (name=="lso") {
- changeName = "塞索托語";
- } else if (name=="sin") {
- changeName = "僧伽羅語";
- } else if (name=="tgl") {
- changeName = "他加祿語";
- } else if (name=="tel") {
- changeName = "泰盧固語";
- } else if (name=="tur") {
- changeName = "土耳其語";
- } else if (name=="bul") {
- changeName = "保加利亞語";
- } else if (name=="amh") {
- changeName = "阿姆哈拉語";
- } else if (name=="est") {
- changeName = "愛沙尼亞語";
- } else if (name=="bos") {
- changeName = "波士尼亞語";
- } else if (name=="fla") {
- changeName = "法蘭德斯語";
- } else if (name=="scc") {
- changeName = "塞爾維亞語";
- } else if (name=="lav") {
- changeName = "拉脫維亞語";
- } else if (name=="rum") {
- changeName = "羅馬尼亞語";
- } else if (name=="slo") {
- changeName = "斯洛伐克語";
- } else if (name=="cat") {
- changeName = "加泰隆尼亞語";
- } else if (name=="scr") {
- changeName = "克羅埃西亞語";
- } else if (name=="alb") {
- changeName = "阿爾巴尼亞語";
- } else if (name=="slv") {
- changeName = "斯洛維尼亞語";
- } else if (name=="oth") {
- changeName = "其他";
- }
- return changeName;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement