From 424674464f50e09afa2848abdcad18aa9ebdb108 Mon Sep 17 00:00:00 2001 From: echel0n Date: Fri, 11 Jul 2014 04:05:33 -0700 Subject: [PATCH] Playing videos from display show page has now been made opt-in, you can enable/disable via general config menu. Swapped out video-js player for jwplayer to support mkv video codec. Fixed issue with videos not playing. --- .../interfaces/default/config_general.tmpl | 8 + gui/slick/interfaces/default/displayShow.tmpl | 25 +- gui/slick/js/displayShow.js | 20 +- gui/slick/js/jwplayer/jwplayer.html5.js | 243 + gui/slick/js/jwplayer/jwplayer.js | 128 + gui/slick/js/video-js/demo.captions.vtt | 41 - gui/slick/js/video-js/demo.html | 32 - gui/slick/js/video-js/font/vjs.eot | Bin 4804 -> 0 bytes gui/slick/js/video-js/font/vjs.svg | 28 - gui/slick/js/video-js/font/vjs.ttf | Bin 4640 -> 0 bytes gui/slick/js/video-js/font/vjs.woff | Bin 3492 -> 0 bytes gui/slick/js/video-js/video-js.css | 904 -- gui/slick/js/video-js/video-js.less | 1098 --- gui/slick/js/video-js/video-js.min.css | 5 - gui/slick/js/video-js/video.dev.js | 8241 ----------------- gui/slick/js/video-js/video.js | 149 - sickbeard/__init__.py | 7 +- sickbeard/webserve.py | 3 +- sickbeard/webserveInit.py | 2 +- 19 files changed, 403 insertions(+), 10531 deletions(-) create mode 100644 gui/slick/js/jwplayer/jwplayer.html5.js create mode 100644 gui/slick/js/jwplayer/jwplayer.js delete mode 100644 gui/slick/js/video-js/demo.captions.vtt delete mode 100644 gui/slick/js/video-js/demo.html delete mode 100644 gui/slick/js/video-js/font/vjs.eot delete mode 100644 gui/slick/js/video-js/font/vjs.svg delete mode 100644 gui/slick/js/video-js/font/vjs.ttf delete mode 100644 gui/slick/js/video-js/font/vjs.woff delete mode 100644 gui/slick/js/video-js/video-js.css delete mode 100644 gui/slick/js/video-js/video-js.less delete mode 100644 gui/slick/js/video-js/video-js.min.css delete mode 100644 gui/slick/js/video-js/video.dev.js delete mode 100644 gui/slick/js/video-js/video.js diff --git a/gui/slick/interfaces/default/config_general.tmpl b/gui/slick/interfaces/default/config_general.tmpl index 4973f89b..d2cd6a53 100644 --- a/gui/slick/interfaces/default/config_general.tmpl +++ b/gui/slick/interfaces/default/config_general.tmpl @@ -159,6 +159,14 @@ +
+ + +
+ diff --git a/gui/slick/interfaces/default/displayShow.tmpl b/gui/slick/interfaces/default/displayShow.tmpl index 6bea0c21..f98b67f7 100644 --- a/gui/slick/interfaces/default/displayShow.tmpl +++ b/gui/slick/interfaces/default/displayShow.tmpl @@ -11,15 +11,9 @@ #set $exceptions_string = " | ".join($show.exceptions) #include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_top.tmpl") - - - - - - + + #if $show_message:
$show_message

@@ -310,13 +304,13 @@ #end if #if int($epResult["season"]) != $curSeason: - + - +

#if int($epResult["season"]) == 0 then "Specials" else "Season "+str($epResult["season"])#

- VideoNFOTBNEpisode#if $show.is_anime then "Absolute" else ""# #if $scene then "Scene #" else ""# #if $scene_anime then "Scene Absolute" else ""#NameAirdate#if $sickbeard.USE_SUBTITLES and $show.subtitles then "Subtitles" else ""#StatusSearch + #if $sickbeard.PLAY_VIDEOS then "Video" else ""#NFOTBNEpisode#if $show.is_anime then "Absolute" else ""# #if $scene then "Scene #" else ""# #if $scene_anime then "Scene Absolute" else ""#NameAirdate#if $sickbeard.USE_SUBTITLES and $show.subtitles then "Subtitles" else ""#StatusSearch #set $curSeason = int($epResult["season"]) #end if @@ -328,16 +322,15 @@ " name="<%=str(epResult["season"]) +"x"+str(epResult["episode"]) %>" /> #end if + #if $sickbeard.PLAY_VIDEOS: #if $epResult["location"]: #set $video_root = $os.path.dirname($show._location) - + #set $video_source = $sbRoot + $epResult["location"].replace($video_root, '/videos') +
Loading the player...
#end if + #end if \"Y" \"Y" diff --git a/gui/slick/js/displayShow.js b/gui/slick/js/displayShow.js index f096ad33..02b5ac06 100644 --- a/gui/slick/js/displayShow.js +++ b/gui/slick/js/displayShow.js @@ -266,19 +266,11 @@ $(document).ready(function () { setAbsoluteSceneNumbering(forAbsolute, sceneAbsolute); }); - $('.video-js').live('click', function (e) { - this.player = videojs(this); - if (!this.player.paused()) - if (this.player.requestFullscreen) { - this.player.requestFullscreen(); - } else if (this.player.mozRequestFullScreen) { - this.player.mozRequestFullScreen(); - } else if (this.player.webkitRequestFullscreen) { - this.player.webkitRequestFullscreen(); - } else if (this.player.msRequestFullscreen) { - this.player.msRequestFullscreen(); - } - else - this.player.posterImage.show(); + $('.jwvideo').each(function () { + jwplayer(this.id).setup({ + file: $(this).attr("id"), + width:120, + height:120 + }); }); }); \ No newline at end of file diff --git a/gui/slick/js/jwplayer/jwplayer.html5.js b/gui/slick/js/jwplayer/jwplayer.html5.js new file mode 100644 index 00000000..471175f5 --- /dev/null +++ b/gui/slick/js/jwplayer/jwplayer.html5.js @@ -0,0 +1,243 @@ +(function(g){g.html5={};g.html5.version="6.9.4867";g=g.utils.css;g(".jwplayer ".slice(0,-1)+" div span a img ul li video".split(" ").join(", .jwplayer ")+", .jwclick",{margin:0,padding:0,border:0,color:"#000000","font-size":"100%",font:"inherit","vertical-align":"baseline","background-color":"transparent","text-align":"left",direction:"ltr","-webkit-tap-highlight-color":"rgba(255, 255, 255, 0)"});g(".jwplayer ul",{"list-style":"none"})})(jwplayer); +(function(g){var l=document;g.parseDimension=function(c){return"string"==typeof c?""===c?0:-1d?"0":"")+d+":"+(10>c?"0":"")+c}return"00:00"};g.bounds=function(c){var a={left:0,right:0,width:0,height:0,top:0,bottom:0};if(!c||!l.body.contains(c))return a;if(c.getBoundingClientRect){c=c.getBoundingClientRect(c);var d=window.pageYOffset, +k=window.pageXOffset;if(!c.width&&!c.height&&!c.left&&!c.top)return a;a.left=c.left+k;a.right=c.right+k;a.top=c.top+d;a.bottom=c.bottom+d;a.width=c.right-c.left;a.height=c.bottom-c.top}else{a.width=c.offsetWidth|0;a.height=c.offsetHeight|0;do a.left+=c.offsetLeft|0,a.top+=c.offsetTop|0;while(c=c.offsetParent);a.right=a.left+a.width;a.bottom=a.top+a.height}return a};g.empty=function(c){if(c)for(;0C?C=f:f=C;q=!0;break; +case l.NONE:f=C=1;case l.EXACTFIT:q=!0;break;default:f>C?0.95H)&&wa(H);p()}},emptied:g,ended:function(){O&&W!=a.IDLE&&(X=-1,Ca=d,f(c.JWPLAYER_MEDIA_BEFORECOMPLETE),O&&(F(a.IDLE),Ca=k,f(c.JWPLAYER_MEDIA_COMPLETE)))},error:function(){O&&(l.log("Error playing media: %o",b.error),f(c.JWPLAYER_MEDIA_ERROR,{message:"Error loading media: File could not be played"}), +F(a.IDLE))},loadeddata:g,loadedmetadata:v,loadstart:g,pause:m,play:m,playing:m,progress:t,ratechange:g,readystatechange:g,seeked:function(){!J&&W!=a.PAUSED&&F(a.PLAYING)},seeking:y?D:g,stalled:g,suspend:g,timeupdate:p,volumechange:function(){f(c.JWPLAYER_MEDIA_VOLUME,{volume:Math.round(100*b.volume)});f(c.JWPLAYER_MEDIA_MUTE,{mute:b.muted})},waiting:D,webkitbeginfullscreen:function(a){ma=!0;j(a);l.isIOS()&&(b.controls=k)},webkitendfullscreen:function(a){ma=!1;j(a);l.isIOS()&&(b.controls=k)}},B,K, +u,A,x=k,z,H=0,J=k,W=a.IDLE,E,S=-1,Y=-1,O=k,T,X=-1,$=l.isAndroidNative(),ha=l.isIOS(7),ka=[],Ca=k,ma=null,R=l.extend(this,new c.eventdispatcher(e));R.load=function(b){if(O){T=b.sources;0>X&&(X=0);if(T)for(var a=l.getCookies().qualityLabel,d=0;da)){X=a;l.saveCookie("qualityLabel",T[a].label);f(c.JWPLAYER_MEDIA_LEVEL_CHANGED,{currentQuality:a,levels:w(T)});a=(10*b.currentTime|0)/10;var d=(10*b.duration|0)/10;0>=d&&(d=u);n(a,d)}};R.getCurrentQuality=function(){return X};R.getQualityLevels=function(){return w(T)};b||(b=document.createElement("video"));l.foreach(L,function(a,c){b.addEventListener(a,c,k)});ha||(b.controls=d,b.controls= +k);b.setAttribute("x-webkit-airplay","allow");O=d}})(jwplayer); +(function(g,l){function c(){return!1}function a(){}var d=g.jwplayer,k=d.utils,b=d.events,e=b.state,f=new k.scriptloader(g.location.protocol+"//www.youtube.com/iframe_api"),C=k.isMobile(),p=k.isSafari();g.onYouTubeIframeAPIReady=function(){f=null};d.html5.youtube=function(a){function c(a){g.YT&&g.YT.loaded?(A=g.YT,h(a)):setTimeout(c,100)}function t(){}function h(){var b;if(b=!!A)b=z.parentNode,b||(E||(d(a).onReady(h),E=!0),b=null),b=!!b;b&&S&&S.apply(u)}function m(c){var d={oldstate:J,newstate:c}; +J=c;clearInterval(O);c!==e.IDLE&&(O=setInterval(D,250),c===e.PLAYING?k.css("#"+a+" .jwcontrols",{display:""}):c===e.BUFFERING&&w());u.sendEvent(b.JWPLAYER_PLAYER_STATE,d)}function D(){if(x&&x.getPlayerState){var a=x.getPlayerState();null!==a&&(void 0!==a&&a!==T)&&(T=a,j({data:a}));var c=A.PlayerState;a===c.PLAYING?(w(),a={position:(10*x.getCurrentTime()|0)/10,duration:x.getDuration()},u.sendEvent(b.JWPLAYER_MEDIA_TIME,a)):a===c.BUFFERING&&w()}}function w(){var a=0;x&&x.getVideoLoadedFraction&&(a= +Math.round(100*x.getVideoLoadedFraction()));W!==a&&(W=a,u.sendEvent(b.JWPLAYER_MEDIA_BUFFER,{bufferPercent:a}))}function n(){var a={duration:x.getDuration(),width:z.clientWidth,height:z.clientHeight};u.sendEvent(b.JWPLAYER_MEDIA_META,a)}function F(a,b){if(!a)throw"invalid Youtube ID";if(!z.parentNode)throw"Youtube iFrame removed from DOM";var c={height:"100%",width:"100%",videoId:a,playerVars:k.extend({autoplay:0,controls:0,showinfo:0,rel:0,modestbranding:0,playsinline:1,origin:location.protocol+ +"//"+location.hostname},b),events:{onReady:r,onStateChange:j,onPlaybackQualityChange:y,onError:s}};u.setVisibility(!0);x=new A.Player(z,c);z=x.getIframe();S=null;I()}function r(){Y&&(Y.apply(u),Y=null)}function j(a){var c=A.PlayerState;switch(a.data){case c.UNSTARTED:m(e.BUFFERING);break;case c.ENDED:J!=e.IDLE&&(X=!0,u.sendEvent(b.JWPLAYER_MEDIA_BEFORECOMPLETE,void 0),m(e.IDLE),X=!1,u.sendEvent(b.JWPLAYER_MEDIA_COMPLETE,void 0));break;case c.PLAYING:$=!1;ha&&(ha=!1,n(),a={levels:u.getQualityLevels(), +currentQuality:u.getCurrentQuality()},u.sendEvent(b.JWPLAYER_MEDIA_LEVELS,a));m(e.PLAYING);break;case c.PAUSED:m(e.PAUSED);break;case c.BUFFERING:m(e.BUFFERING);break;case c.CUED:m(e.IDLE)}}function y(){ha&&u.play()}function s(){u.sendEvent(b.JWPLAYER_MEDIA_ERROR,{message:"Error loading YouTube: Video could not be played"})}function I(){if(C||p)u.setVisibility(!0),k.css("#"+a+" .jwcontrols",{display:"none"})}function L(){clearInterval(O);if(x&&x.stopVideo)try{x.stopVideo(),x.clearVideo()}catch(a){}} +function B(){L();z&&(H&&H===z.parentNode)&&H.removeChild(z);S=Y=x=null}function K(a){Y=null;var b=k.youTubeID(a.sources[0].file);a.image||(a.image="http://i.ytimg.com/vi/"+b+"/0.jpg");u.setVisibility(!0);if(A)if(x)if(x.getPlayerState)if(x.getVideoData().video_id!==b){$?(L(),x.cueVideoById(b)):x.loadVideoById(b);var c=x.getPlayerState(),d=A.PlayerState;(c===d.UNSTARTED||c===d.CUED)&&I()}else 0F||(a=f.replace(/xx/gi,Math.ceil(F-a)),t(a))}function q(a,b){if("number"==l.typeOf(y))F=y;else if("%"==y.slice(-1)){var c=parseFloat(y.slice(0,-1));b&&!isNaN(c)&&(F=b*c/100)}else"string"==l.typeOf(y)?F=l.seconds(y):isNaN(y)||(F=y)}function v(){r&&B.sendEvent(a.JWPLAYER_AD_SKIPPED)}function t(a){a=a||g;var b=n.getContext("2d");b.clearRect(0,0,d,k);m(b,0,0,d,k,5,!0,!1,!1);m(b,0,0,d,k,5,!1, +!0,!1);b.fillStyle="#979797";b.globalAlpha=1;var c=n.height/2,f=n.width/2;b.textAlign="center";b.font="Bold 12px Sans-Serif";a===g&&(f-=s.width,b.drawImage(s,n.width-(n.width-b.measureText(g).width)/2-4,(k-s.height)/2));b.fillText(a,f,c+4)}function h(a){a=a||g;var b=n.getContext("2d");b.clearRect(0,0,d,k);m(b,0,0,d,k,5,!0,!1,!0);m(b,0,0,d,k,5,!1,!0,!0);b.fillStyle="#FFFFFF";b.globalAlpha=1;var c=n.height/2,f=n.width/2;b.textAlign="center";b.font="Bold 12px Sans-Serif";a===g&&(f-=s.width,b.drawImage(I, +n.width-(n.width-b.measureText(g).width)/2-4,(k-s.height)/2));b.fillText(a,f,c+4)}function m(a,b,c,d,f,e,h,k,m){"undefined"==typeof k&&(k=!0);"undefined"===typeof e&&(e=5);a.beginPath();a.moveTo(b+e,c);a.lineTo(b+d-e,c);a.quadraticCurveTo(b+d,c,b+d,c+e);a.lineTo(b+d,c+f-e);a.quadraticCurveTo(b+d,c+f,b+d-e,c+f);a.lineTo(b+e,c+f);a.quadraticCurveTo(b,c+f,b,c+f-e);a.lineTo(b,c+e);a.quadraticCurveTo(b,c,b+e,c);a.closePath();k&&(a.strokeStyle="white",a.globalAlpha=m?1:0.25,a.stroke());h&&(a.fillStyle= +"#000000",a.globalAlpha=0.5,a.fill())}function D(a,b){var c=document.createElement(a);b&&(c.className=b);return c}var w,n,F=-1,r=!1,j,y=0,s,I,L=!1,B=l.extend(this,new a.eventdispatcher);B.updateSkipTime=function(a,b){q(a,b);0<=F&&(c.style(w,{visibility:j?"visible":"hidden"}),0=A.length||(A[u].data?B.populate(A[u].data):x==A.length?(l("file not loaded: "+A[u].file),0!==H&&j(a.JWPLAYER_CAPTIONS_CHANGED,A,0),H=0):z=b,n(!1))):(H=0,n(!1))}function j(a,b,c){W.sendEvent(a,{type:a,tracks:b,track:c})}function y(){for(var a=[{label:"Off"}],b=0;b=h)){a=b;break}-1==a?k(""):a!=t&&(t=a,k(g[b].text))}function f(a,b,c){c=l.hexToRgba("#000000",c);"dropshadow"===a?b.textShadow="0 2px 1px "+c:"raised"===a?b.textShadow="0 0 5px "+c+", 0 1px 5px "+c+", 0 2px 5px "+c:"depressed"===a?b.textShadow="0 -2px 1px "+c:"uniform"===a&&(b.textShadow="-2px 0 1px "+c+",2px 0 1px "+c+",0 -2px 1px "+c+",0 2px 1px "+c+",-1px 1px 1px "+c+",1px 1px 1px "+c+",1px -1px 1px "+ +c+",1px 1px 1px "+c)}var g,p,q,v,t,h,m="visible",D=-1;this.hide=function(){clearInterval(D);c(p,{display:"none"})};this.populate=function(a){t=-1;g=a;e()};this.resize=function(){b()};this.show=function(){c(p,{display:"block"});b();clearInterval(D);D=setInterval(b,250)};this.update=function(a){h=a;g&&e()};var w=a.fontOpacity,n=a.windowOpacity,F=a.edgeStyle,r=a.backgroundColor,j={display:"inline-block"},y={color:l.hexToRgba(l.rgbHex(a.color),w),display:"inline-block",fontFamily:a.fontFamily,fontStyle:a.fontStyle, +fontWeight:a.fontWeight,textAlign:"center",textDecoration:a.textDecoration,wordWrap:"break-word"};n&&(j.backgroundColor=l.hexToRgba(l.rgbHex(a.windowColor),n));f(F,y,w);a.back?y.backgroundColor=l.hexToRgba(l.rgbHex(r),a.backgroundOpacity):null===F&&f("uniform",y);p=document.createElement("div");q=document.createElement("div");v=document.createElement("span");c(p,{display:"block",height:"auto",position:"absolute",bottom:"20px",textAlign:"center",width:"100%"});c(q,j);c(v,y);q.appendChild(v);p.appendChild(q); +d.appendChild(p)}})(jwplayer); +(function(g){function l(a){return a?parseInt(a.width,10)+"px "+parseInt(a.height,10)+"px":"0 0"}var c=g.html5,a=g.utils,d=g.events,k=d.state,b=a.css,e=a.transitionStyle,f=a.isMobile(),C=a.isAndroid(4,!0),p="button",q="text",v="slider",t="none",h="100%",m=!1,D=!0,w=null,n="",F={display:t},r={display:"block"},j={display:n},y="array",s=m,I=window,L=document;c.controlbar=function(e,K){function u(a,b,c){return{name:a,type:b,className:c}}function A(c){b.block(aa);var d=c.duration==Number.POSITIVE_INFINITY, +h=0===c.duration&&0!==c.position&&a.isSafari()&&!f;d||h?(U.setText(e.jwGetPlaylist()[e.jwGetPlaylistIndex()].title||"Live broadcast"),ka(!1)):(G.elapsed&&(d=a.timeFormat(c.position),G.elapsed.innerHTML=d),G.duration&&(d=a.timeFormat(c.duration),G.duration.innerHTML=d),0a&&(a=0);0.9d+(la.margin|0)?b.style(P,{width:d}):b.style(P,{width:n}));fa&&b.style(fa.element(),{display:!ua&&!sa?"block":t});b.style(G.hd,{display:!ua&&!c&&!sa&&ia&&1f-$?(g.jwSetFullscreen(),$=void 0):$=(new Date).getTime();var j=c.bounds(y.parentNode.querySelector(".jwcontrolbar")),h=c.bounds(y),f=j.left-10-h.left,k=j.left+30- +h.left,D=h.bottom-40,m=h.bottom,x=j.right-30-h.left,j=j.right+10-h.left;if(b&&!(e.x>=f&&e.x<=k&&e.y>=D&&e.y<=m)){if(e.x>=x&&e.x<=j&&e.y>=D&&e.y<=m){g.jwSetFullscreen();return}T.sendEvent(a.JWPLAYER_DISPLAY_CLICK);if(J)return}switch(g.jwGetState()){case d.PLAYING:case d.BUFFERING:g.jwPause();break;default:g.jwPlay()}}}function h(a,b){O.showicons&&(a||b?(E.setRotation("buffer"==a?parseInt(O.bufferrotation,10):0,parseInt(O.bufferinterval,10)),E.setIcon(a),E.setText(b)):E.hide())}function m(a){B!=a?(B&& +j(f,p),(B=a)?(a=new Image,a.addEventListener("load",n,p),a.src=B):(k("#"+y.id+" "+f,{"background-image":""}),j(f,p),K=u=0)):B&&!J&&j(f,C);w(g.jwGetState())}function D(a){clearTimeout(ha);ha=setTimeout(function(){w(a.newstate)},100)}function w(a){a=S?S:g?g.jwGetState():d.IDLE;if(a!=Y)switch(Y=a,E&&E.setRotation(0),a){case d.IDLE:!z&&!H&&(B&&!A&&j(f,C),a=!0,g._model&&!1===g._model.config.displaytitle&&(a=!1),h("play",L&&a?L.title:""));break;case d.BUFFERING:z=p;x.error&&x.error.setText();H=p;h("buffer"); +break;case d.PLAYING:h();break;case d.PAUSED:h("play")}}function n(){K=this.width;u=this.height;w(g.jwGetState());r();B&&k("#"+y.id+" "+f,{"background-image":"url("+B+")"})}function F(a){z=C;h("error",a.message)}function r(){0e.left&&b.offsetX(f.left-e.left+8);u.show();c.foreach(y, +function(a,b){a!=g&&b.hide()})},!1);m.addEventListener("mouseout",function(){w=setTimeout(u.hide,100)},!1);s.appendChild(u.element());y[g]=u}}r++;D()}};B.removeButton=function(a){if(j[a]){I.removeChild(j[a].element);I.removeChild(j[a].divider);var b=document.getElementById(""+n+"_"+a+"_tooltip");b&&s.removeChild(b);delete j[a];r--;D()}};B.numButtons=function(){return r};B.visible=!1;s=h("div","jwdock");I=h("div","jwdockbuttons");s.appendChild(I);s.id=n;var K=m("button"),u=m("buttonOver"),A=m("buttonActive"); +K&&(a(t(),{height:K.height,padding:w.margin}),a(k,{height:K.height}),a(t("div.button"),c.extend(q(K),{width:K.width,cursor:"pointer",border:e})),a(t("div.button:hover"),q(u)),a(t("div.button:active"),q(A)),a(t("div.button\x3ediv"),{opacity:w.iconalpha}),a(t("div.button:hover\x3ediv"),{opacity:w.iconalphaover}),a(t("div.button:active\x3ediv"),{opacity:w.iconalphaactive}),a(t(".jwoverlay"),{top:w.margin+K.height}),v("capLeft",I),v("capRight",I),v("divider"));setTimeout(function(){d(s)})};a(".jwdock", +{opacity:0,display:e});a(".jwdock \x3e *",{height:"100%","float":"left"});a(".jwdock \x3e .jwoverlay",{height:"auto","float":e,"z-index":99});a(k+" div.button",{position:"relative"});a(k+" \x3e *",{height:"100%","float":"left"});a(k+" .divider",{display:e});a(k+" div.button ~ .divider",{display:f});a(k+" .capLeft, "+k+" .capRight",{display:e});a(k+" .capRight",{"float":"right"});a(k+" div.button \x3e div",{left:0,right:0,top:0,bottom:0,margin:5,position:"absolute","background-position":"center","background-repeat":"no-repeat"}); +c.transitionStyle(".jwdock","background .25s, opacity .25s");c.transitionStyle(".jwdock .jwoverlay","opacity .25s");c.transitionStyle(k+" div.button div","opacity .25s")})(jwplayer); +(function(g){var l=g.html5,c=g.utils,a=g.events,d=a.state,k=g.playlist;l.instream=function(b,e,f,g){function p(a){D(a.type,a);J&&b.jwInstreamDestroy(!1,E)}function q(a){D(a.type,a);h()}function v(a){D(a.type,a)}function t(){z&&z.releaseState(E.jwGetState());A.play()}function h(){if(r&&j+1a&&E.jwInstreamSeek(a)}};E.jwSeekDrag=function(a){J.seekDrag(a)};E.jwGetPosition=function(){};E.jwGetDuration=function(){};E.jwGetWidth=b.jwGetWidth;E.jwGetHeight=b.jwGetHeight;E.jwGetFullscreen=b.jwGetFullscreen;E.jwSetFullscreen=b.jwSetFullscreen;E.jwGetVolume=function(){return e.volume};E.jwSetVolume=function(a){J.setVolume(a);b.jwSetVolume(a)};E.jwGetMute= +function(){return e.mute};E.jwSetMute=function(a){J.setMute(a);b.jwSetMute(a)};E.jwGetState=function(){return!J?d.IDLE:J.state};E.jwGetPlaylist=function(){return[F]};E.jwGetPlaylistIndex=function(){return 0};E.jwGetStretching=function(){return e.config.stretching};E.jwAddEventListener=function(a,b){E.addEventListener(a,b)};E.jwRemoveEventListener=function(a,b){E.removeEventListener(a,b)};E.jwSetCurrentQuality=function(){};E.jwGetQualityLevels=function(){return[]};E.jwGetControls=function(){return b.jwGetControls()}; +E.skin=b.skin;E.id=b.id+"_instream";return E}})(window.jwplayer); +(function(g){var l=g.utils,c=l.css,a=g.events.state,d=g.html5.logo=function(k,b){function e(b){l.exists(b)&&b.stopPropagation&&b.stopPropagation();if(!t||!p.link)f.jwGetState()==a.IDLE||f.jwGetState()==a.PAUSED?f.jwPlay():f.jwPause();t&&p.link&&(f.jwPause(),f.jwSetFullscreen(!1),window.open(p.link,p.linktarget))}var f=k,C=f.id+"_logo",p,q,v=d.defaults,t=!1;this.resize=function(){};this.element=function(){return q};this.offset=function(a){c("#"+C+" ",{"margin-bottom":a})};this.position=function(){return p.position}; +this.margin=function(){return parseInt(p.margin)};this.hide=function(a){if(p.hide||a)t=!1,q.style.visibility="hidden",q.style.opacity=0};this.show=function(){t=!0;q.style.visibility="visible";q.style.opacity=1};var h="o";f.edition&&(h=f.edition(),h="pro"==h?"p":"premium"==h?"r":"ads"==h?"a":"free"==h?"f":"o");if("o"==h||"f"==h)v.link="http://www.longtailvideo.com/jwpabout/?a\x3dl\x26v\x3d"+g.version+"\x26m\x3dh\x26e\x3d"+h;p=l.extend({},v,b);p.hide="true"==p.hide.toString();q=document.createElement("img"); +q.className="jwlogo";q.id=C;if(p.file){var v=/(\w+)-(\w+)/.exec(p.position),h={},m=p.margin;3==v.length?(h[v[1]]=m,h[v[2]]=m):h.top=h.right=m;c("#"+C+" ",h);q.src=(p.prefix?p.prefix:"")+p.file;l.isMobile()?(new l.touch(q)).addEventListener(l.touchEvents.TAP,e):q.onclick=e}else q.style.display="none";return this};d.defaults={prefix:l.repo(),file:"logo.png",linktarget:"_top",margin:8,hide:!1,position:"top-right"};c(".jwlogo",{cursor:"pointer",position:"absolute"})})(jwplayer); +(function(g){var l=g.html5,c=g.utils,a=c.css;l.menu=function(d,g,b,e){function f(a){return!a||!a.src?{}:{background:"url("+a.src+") no-repeat left","background-size":a.width+"px "+a.height+"px"}}function C(a,b){return function(){D(a);v&&v(b)}}function p(a,b){var c=document.createElement("div");a&&(c.className=a);b&&b.appendChild(c);return c}function q(a){return(a=b.getSkinElement("tooltip",a))?a:{width:0,height:0,src:void 0}}var v=e,t=new l.overlay(g+"_overlay",b);e=c.extend({fontcase:void 0,fontcolor:"#cccccc", +fontsize:11,fontweight:void 0,activecolor:"#ffffff",overcolor:"#ffffff"},b.getComponentSettings("tooltip"));var h,m=[];this.element=function(){return t.element()};this.addOption=function(a,b){var d=p("jwoption",h);d.id=g+"_option_"+b;d.innerHTML=a;c.isMobile()?(new c.touch(d)).addEventListener(c.touchEvents.TAP,C(m.length,b)):d.addEventListener("click",C(m.length,b));m.push(d)};this.clearOptions=function(){for(;0b?(b=0,d=!0):b=-1==b||b>e.playlist.length?e.playlist.length-1:b;if(d||b!==e.item){e.item=b;e.sendEvent(a.JWPLAYER_PLAYLIST_ITEM,{index:e.item});d=e.playlist[b];b=C.html5;if(e.playlist.length){var h=d.sources[0];if("youtube"===h.type||c.isYouTube(h.file))b=C.youtube,b!==f&&(b&&b.destroy(),b=C.youtube=new l.youtube(e.id))}e.setVideo(b);b.init&&b.init(d)}};e.setVolume=function(d){e.mute&&0a.right?n.offsetX(a.right-d.right):d.lefta&&(a=0);1parseFloat(jwplayer.version))&&m("Incompatible player version"); +if(0===a.length)h(t);else for(c=0;cC[d].end;)d++;d===C.length&&d--;d=C[d].text;a:{var f=d;if(f&&f!==v){v=f;0>f.indexOf("://")&&(f=p?p+"/"+f:f);var g={display:"block",margin:"0 auto", +"background-position":"0 0",width:0,height:0};if(0=a.keyCode){var c=(a.keyCode-48)/10*b.getDuration();b.seek(c)}}if(/13|32|37|38|39|40/.test(a.keyCode))return a.preventDefault(),!1}function L(){var a= +!Ma;Ma=!1;a&&fa.sendEvent(d.JWPLAYER_VIEW_TAB_FOCUS,{hasFocus:!0});M.adMode()||(ma(),H())}function B(){Ma=!1;fa.sendEvent(d.JWPLAYER_VIEW_TAB_FOCUS,{hasFocus:!1})}function K(){var a=e(N),b=Math.round(a.width),c=Math.round(a.height);if(q.body.contains(N)){if(b&&c&&(b!==Za||c!==Ia))Za=b,Ia=c,Q&&Q.redraw(),clearTimeout(ra),ra=setTimeout($,50),fa.sendEvent(d.JWPLAYER_RESIZE,{width:b,height:c})}else g.removeEventListener("resize",K),f&&g.removeEventListener("orientationchange",K);return a}function u(a){a&& +(a.element().addEventListener("mousemove",W,m),a.element().addEventListener("mouseout",E,m))}function A(){}function x(){clearTimeout(za);za=setTimeout(Aa,10)}function z(a,b){var c=q.createElement(a);b&&(c.className=b);return c}function H(){clearTimeout(za);za=setTimeout(Aa,$a)}function J(){clearTimeout(za);if(r.jwGetState()==k.PAUSED||r.jwGetState()==k.PLAYING)Da(),ia||(za=setTimeout(Aa,$a))}function W(){clearTimeout(za);ia=h}function E(){ia=m}function S(a){fa.sendEvent(a.type,a)}function Y(a){if(a.done)O(); +else{if(!a.complete){M.adMode()||(M.instreamMode(!0),M.adMode(!0),M.show(!0));M.setText(a.message);var b=a.onClick;void 0!==b&&Q.setAlternateClickHandler(function(){b(a)});void 0!==a.onSkipAd&&da&&da.setSkipoffset(a,a.onSkipAd)}da&&da.adChanged(a)}}function O(){M.setText("");M.adMode(!1);M.instreamMode(!1);M.show(!0);da&&(da.adsEnded(),da.setState(r.jwGetState()));Q.revertAlternateClickHandler()}function T(c,d,e){var f=N.className,g,k,l=r.id+"_view";b.block(l);if(e=!!e)f=f.replace(/\s*aspectMode/, +""),N.className!==f&&(N.className=f),b.style(N,{display:F},e);a.exists(c)&&a.exists(d)&&(j.width=c,j.height=d);e={width:c};-1==f.indexOf(v)&&(e.height=d);b.style(N,e,!0);Q&&Q.redraw();M&&M.redraw(h);Z&&(Z.offset(M&&0<=Z.position().indexOf("bottom")?M.height()+M.margin():0),setTimeout(function(){ea&&ea.offset("top-left"==Z.position()?Z.element().clientWidth+Z.margin():0)},500));X(d);g=j.playlistsize;k=j.playlistposition;if(la&&g&&("right"==k||"bottom"==k))la.redraw(),f={display:F},e={},f[k]=0,e[k]= +g,"right"==k?f.width=g:f.height=g,b.style(Pa,f),b.style(ya,e);$(c,d);b.unblock(l)}function X(a){var b=e(N);ca=0=b.height;M&&(ca?(M.audioMode(h),Da(),Q.hidePreview(h),Q&&Q.hide(),Ea(m)):(M.audioMode(m),Na(r.jwGetState())));Z&&ca&&Ra();N.style.backgroundColor=ca?"transparent":"#000"}function $(a,b){if(!a||isNaN(Number(a))){if(!ba)return;a=ba.clientWidth}if(!b||isNaN(Number(b))){if(!ba)return;b=ba.clientHeight}j.getVideo().resize(a, +b,j.stretching)&&(clearTimeout(ra),ra=setTimeout($,250))}function ha(a){if(a.target===N||N.contains(a.target))void 0!==a.jwstate?a=a.jwstate:Ga?(a=q.currentFullScreenElement||q.webkitCurrentFullScreenElement||q.mozFullScreenElement||q.msFullscreenElement,a=!!(a&&a.id===r.id)):a=j.getVideo().getFullScreen(),Ga?ka(N,a):Ca(a)}function ka(c,d){a.removeClass(c,"jwfullscreen");d?(a.addClass(c,"jwfullscreen"),b.style(q.body,{"overflow-y":w}),H()):b.style(q.body,{"overflow-y":""});M&&M.redraw();Q&&Q.redraw(); +ea&&ea.redraw();$();Ca(d)}function Ca(a){j.setFullscreen(a);a?(clearTimeout(ra),ra=setTimeout($,200)):C&&r.jwGetState()==k.PAUSED&&setTimeout(Qa,500)}function ma(){(!p||ca)&&M&&j.controls&&M.show()}function R(){P!==h&&M&&(!ca&&!j.getVideo().audioMode())&&M.hide()}function Ba(){ea&&(!ca&&j.controls)&&ea.show()}function wa(){ea&&(!aa&&!j.getVideo().audioMode())&&ea.hide()}function Ra(){Z&&(!j.getVideo().audioMode()||ca)&&Z.hide(ca)}function Qa(){Q&&j.controls&&!ca&&(!p||r.jwGetState()==k.IDLE)&&Q.show(); +(!f||!j.fullscreen)&&j.getVideo().setControls(m)}function Aa(){clearTimeout(za);if(P!==h){Ha=m;var b=r.jwGetState();(!j.controls||b!=k.PAUSED)&&R();j.controls||wa();b!=k.IDLE&&b!=k.PAUSED&&(wa(),Ra());a.addClass(N,"jw-user-inactive")}}function Da(){if(P!==m){Ha=h;if((j.controls||ca)&&!(p&&Ta==k.PAUSED))ma(),Ba();rb.hide&&Z&&!ca&&Z.show();a.removeClass(N,"jw-user-inactive")}}function Ea(a){a=a&&!ca;j.getVideo().setVisibility(a)}function cb(){aa=h;Ja(m);j.controls&&Ba()}function vb(){da&&da.setState(r.jwGetState())} +function jb(){}function Oa(a){aa=m;clearTimeout(Xa);Xa=setTimeout(function(){Na(a.newstate)},100)}function wb(){R()}function Na(a){Ta=a;if(j.getVideo().isCaster)Q&&(Q.show(),Q.hidePreview(m)),b.style(ba,{visibility:w,opacity:0}),M&&(M.show(),M.hideFullscreen(h));else{switch(a){case k.PLAYING:P=j.getVideo().isCaster!==h?null:h;(V?Fa:j).getVideo().audioMode()?(Ea(m),Q.hidePreview(ca),Q.setHiding(h),M&&(Da(),M.hideFullscreen(h)),Ba()):(Ea(h),$(),Q.hidePreview(h),M&&M.hideFullscreen(!j.getVideo().supportsFullscreen())); +break;case k.IDLE:Ea(m);ca||(Q.hidePreview(m),Qa(),Ba(),M&&M.hideFullscreen(m));break;case k.BUFFERING:Qa();Aa();f&&Ea(h);break;case k.PAUSED:Qa(),Da()}Z&&!ca&&Z.show()}}function Va(a){return"#"+r.id+(a?" ."+a:"")}function Wa(a,c){b(a,{display:c?F:n})}var N,ya,pa,qb,Pa,za=-1,$a=f?4E3:2E3,ba,Za,Ia,va,Ya,Sa,Fa,V=m,M,Q,da,ea,Z,rb=a.extend({},j.componentConfig("logo")),ta,la,ca,G=m,Ha=m,P=null,aa,qa,ra=-1,ia=m,Ta,ga,La,Ga=!1,Ma=!1,fa=a.extend(this,new d.eventdispatcher);this.getCurrentCaptions=function(){return ta.getCurrentCaptions()}; +this.setCurrentCaptions=function(a){ta.setCurrentCaptions(a)};this.getCaptionsList=function(){return ta.getCaptionsList()};this.setup=function(e){if(!G){r.skin=e;ya=z("span","jwmain");ya.id=r.id+"_view";ba=z("span","jwvideo");ba.id=r.id+"_media";pa=z("span","jwcontrols");va=z("span","jwinstream");Pa=z("span","jwplaylistcontainer");qb=z("span","jwaspect");e=j.height;var s=j.componentConfig("controlbar"),w=j.componentConfig("display");X(e);ta=new c.captions(r,j.captions);ta.addEventListener(d.JWPLAYER_CAPTIONS_LIST, +S);ta.addEventListener(d.JWPLAYER_CAPTIONS_CHANGED,S);ta.addEventListener(d.JWPLAYER_CAPTIONS_LOADED,A);pa.appendChild(ta.element());Q=new c.display(r,w);Q.addEventListener(d.JWPLAYER_DISPLAY_CLICK,function(a){S(a);f?Ha?Aa():Da():Oa({newstate:r.jwGetState()});Ha&&H()});ca&&Q.hidePreview(h);pa.appendChild(Q.element());Z=new c.logo(r,rb);pa.appendChild(Z.element());ea=new c.dock(r,j.componentConfig("dock"));pa.appendChild(ea.element());r.edition&&!f?qa=new c.rightclick(r,{abouttext:j.abouttext,aboutlink:j.aboutlink}): +f||(qa=new c.rightclick(r,{}));j.playlistsize&&(j.playlistposition&&j.playlistposition!=n)&&(la=new c.playlistcomponent(r,{}),Pa.appendChild(la.element()));M=new c.controlbar(r,s);M.addEventListener(d.JWPLAYER_USER_ACTION,H);pa.appendChild(M.element());p&&R();D&&fa.forceControls(h);ya.appendChild(ba);ya.appendChild(pa);ya.appendChild(va);N.appendChild(ya);N.appendChild(qb);N.appendChild(Pa);j.getVideo().setContainer(ba);j.addEventListener("fullscreenchange",ha);for(e=t.length;e--;)q.addEventListener(t[e], +ha,m);g.removeEventListener("resize",K);g.addEventListener("resize",K,m);f&&(g.removeEventListener("orientationchange",K),g.addEventListener("orientationchange",K,m));l(r.id).onAdPlay(function(){M.adMode(!0);Na(k.PLAYING)});l(r.id).onAdSkipped(function(){M.adMode(!1)});l(r.id).onAdComplete(function(){M.adMode(!1)});l(r.id).onAdError(function(){M.adMode(!1)});r.jwAddEventListener(d.JWPLAYER_PLAYER_READY,jb);r.jwAddEventListener(d.JWPLAYER_PLAYER_STATE,Oa);r.jwAddEventListener(d.JWPLAYER_MEDIA_ERROR, +wb);r.jwAddEventListener(d.JWPLAYER_PLAYLIST_COMPLETE,cb);r.jwAddEventListener(d.JWPLAYER_PLAYLIST_ITEM,vb);r.jwAddEventListener(d.JWPLAYER_CAST_AVAILABLE,function(a){a.available?(fa.forceControls(h),D=h):fa.releaseControls()});r.jwAddEventListener(d.JWPLAYER_CAST_SESSION,function(a){da||(da=new l.html5.castDisplay(r.id),da.statusDelegate=function(a){da.setState(a.newstate)});a.active?(b.style(ta.element(),{display:"none"}),fa.forceControls(h),da.setState("connecting").setName(a.deviceName).show(), +r.jwAddEventListener(d.JWPLAYER_PLAYER_STATE,da.statusDelegate),r.jwAddEventListener(d.JWPLAYER_CAST_AD_CHANGED,Y)):(r.jwRemoveEventListener(d.JWPLAYER_PLAYER_STATE,da.statusDelegate),r.jwRemoveEventListener(d.JWPLAYER_CAST_AD_CHANGED,Y),da.hide(),M.adMode()&&O(),b.style(ta.element(),{display:null}),Oa({newstate:r.jwGetState()}),K())});Oa({newstate:k.IDLE});f||(pa.addEventListener("mouseout",x,m),pa.addEventListener("mousemove",J,m),a.isMSIE()&&(ba.addEventListener("mousemove",J,m),ba.addEventListener("click", +Q.clickHandler)));u(M);u(ea);u(Z);b("#"+N.id+"."+v+" .jwaspect",{"margin-top":j.aspectratio,display:F});e=a.exists(j.aspectratio)?parseFloat(j.aspectratio):100;s=j.playlistsize;b("#"+N.id+".playlist-right .jwaspect",{"margin-bottom":-1*s*(e/100)+"px"});b("#"+N.id+".playlist-right .jwplaylistcontainer",{width:s+"px",right:0,top:0,height:"100%"});b("#"+N.id+".playlist-bottom .jwaspect",{"padding-bottom":s+"px"});b("#"+N.id+".playlist-bottom .jwplaylistcontainer",{width:"100%",height:s+"px",bottom:0}); +b("#"+N.id+".playlist-right .jwmain",{right:s+"px"});b("#"+N.id+".playlist-bottom .jwmain",{bottom:s+"px"});setTimeout(function(){T(j.width,j.height)},0)}};var Ja=this.fullscreen=function(b){a.exists(b)||(b=!j.fullscreen);b=!!b;b!==j.fullscreen&&(Ga?(b?ga.apply(N):La.apply(q),ka(N,b)):j.getVideo().setFullScreen(b))};this.resize=function(a,b){T(a,b,h);K()};this.resizeMedia=$;var pb=this.completeSetup=function(){b.style(N,{opacity:1});g.onbeforeunload=function(){j.getVideo().isCaster||r.jwStop()}}, +Xa;this.setupInstream=function(a,c,d,e){b.unblock();Wa(Va("jwinstream"),h);Wa(Va("jwcontrols"),m);va.appendChild(a);Ya=c;Sa=d;Fa=e;Oa({newstate:k.PLAYING});V=h;va.addEventListener("mousemove",J);va.addEventListener("mouseout",x)};this.destroyInstream=function(){b.unblock();Wa(Va("jwinstream"),m);Wa(Va("jwcontrols"),h);va.innerHTML="";va.removeEventListener("mousemove",J);va.removeEventListener("mouseout",x);V=m};this.setupError=function(a){G=h;l.embed.errorScreen(N,a,j);pb()};this.addButton=function(a, +b,c,d){ea&&(ea.addButton(a,b,c,d),r.jwGetState()==k.IDLE&&Ba())};this.removeButton=function(a){ea&&ea.removeButton(a)};this.setControls=function(a){var b=j.controls,c=!!a;j.controls=c;c!=b&&(V?a?(Ya.show(),Sa.show()):(Ya.hide(),Sa.hide()):c?Oa({newstate:r.jwGetState()}):(Aa(),Q&&Q.hide()),fa.sendEvent(d.JWPLAYER_CONTROLS,{controls:c}))};this.forceControls=function(a){P=!!a;a?Da():Aa()};this.releaseControls=function(){P=null;Na(r.jwGetState())};this.addCues=function(a){M&&M.addCues(a)};this.forceState= +function(a){Q.forceState(a)};this.releaseState=function(){Q.releaseState(r.jwGetState())};this.getSafeRegion=function(){var a={x:0,y:0,width:0,height:0};if(!j.controls)return a;M.showTemp();ea.showTemp();var b=e(ya),c=b.top,d=V?e(q.getElementById(r.id+"_instream_controlbar")):e(M.element()),f=V?m:0e&&(g=c))}(b=g)?(null===H&&(H=a("div","companion"),k(r,H)),b.width/b.height> +t?(c=316,d=b.height*c/b.width):(d=176,c=b.width*d/b.height),p.style(H,{"background-image":b.source,"background-size":c+"px "+d+"px"})):n()};this.adChanged=function(b){if(b.complete)z&&z.reset(-1),x=null;else{z&&(void 0===b.skipoffset?q():(b.position||b.duration)&&z.updateSkipTime(b.position|0,b.duration|0));var c=b.tag+b.sequence;c!==x&&(p(u+" .jwpreview",{opacity:0}),b.companions?this.setCompanions(b.companions):n(),b.clickthrough?null===J&&(J=a("div","click-label"),J.innerText="Click here to learn more \x3e", +k(r,J)):w(),x=c,this.setState(b.newstate))}};this.adsEnded=function(){q();n();w();p(u+" .jwpreview",{opacity:0.6});x=null};this.destroy=function(){this.hide();r.parentNode&&r.parentNode.removeChild(r)}};var h=".jwcast button";p(h,{opacity:1});p(h+":hover",{opacity:0.75});h+=".off";p(h,{opacity:0.75});p(h+":hover",{opacity:1})})(jwplayer,document); +(function(g){var l=jwplayer.utils.extend,c=g.logo;c.defaults.prefix="";c.defaults.file="data:image/png;base64,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";g.logo= +function(a,d){"free"==a.edition()?d=null:(c.defaults.file="",c.defaults.prefix="");l(this,new c(a,d))}})(jwplayer.html5);(function(g){var l=g.html5,c=l.model;l.model=function(a,d){var k=new g.utils.key(a.key),b=new c(a,d),e=b.componentConfig;b.edition=function(){return k.edition()};b.componentConfig=function(a){return"logo"==a?b.logo:e(a)};return b}})(jwplayer); +(function(g){var l=g.html5,c=l.player;l.player=function(a){a=new c(a);var d;d=a._model.edition();if("enterprise"===d||"ads"===d)d=new g.cast.controller(a,a._model),a.jwStartCasting=d.startCasting,a.jwStopCasting=d.stopCasting;return a};c.prototype.edition=function(){return this._model.edition()}})(jwplayer); +(function(g){var l=jwplayer.utils.extend,c=g.rightclick;g.rightclick=function(a,d){if("free"==a.edition())d.aboutlink="http://www.longtailvideo.com/jwpabout/?a\x3dr\x26v\x3d"+g.version+"\x26m\x3dh\x26e\x3df",delete d.abouttext;else{if(!d.aboutlink){var k="http://www.longtailvideo.com/jwpabout/?a\x3dr\x26v\x3d"+g.version+"\x26m\x3dh\x26e\x3d",b=a.edition();d.aboutlink=k+("pro"==b?"p":"premium"==b?"r":"enterprise"==b?"e":"ads"==b?"a":"f")}d.abouttext?d.abouttext+=" ...":(k=a.edition(),k=k.charAt(0).toUpperCase()+ +k.substr(1),d.abouttext="About JW Player "+g.version+" ("+k+" edition)")}l(this,new c(a,d))}})(jwplayer.html5);(function(g){var l=g.view;g.view=function(c,a){var d=new l(c,a),g=d.setup,b=a.edition();d.setup=function(a){g(a)};"invalid"==b&&d.setupError("Error setting up player: Invalid license key");return d}})(window.jwplayer.html5); \ No newline at end of file diff --git a/gui/slick/js/jwplayer/jwplayer.js b/gui/slick/js/jwplayer/jwplayer.js new file mode 100644 index 00000000..9b4fd93e --- /dev/null +++ b/gui/slick/js/jwplayer/jwplayer.js @@ -0,0 +1,128 @@ +"undefined"==typeof jwplayer&&(jwplayer=function(h){if(jwplayer.api)return jwplayer.api.selectPlayer(h)},jwplayer.version="6.9.4867",jwplayer.vid=document.createElement("video"),jwplayer.audio=document.createElement("audio"),jwplayer.source=document.createElement("source"),function(h){function d(c){return function(){return a(c)}}function m(c,a,k,l,b){return function(){var d,f;if(b)k(c);else{try{if(d=c.responseXML)if(f=d.firstChild,d.lastChild&&"parsererror"===d.lastChild.nodeName){l&&l("Invalid XML", +a,c);return}}catch(g){}if(d&&f)return k(c);(d=e.parseXML(c.responseText))&&d.firstChild?(c=e.extend({},c,{responseXML:d}),k(c)):l&&l(c.responseText?"Invalid XML":a,a,c)}}}var j=document,g=window,b=navigator,e=h.utils={};e.exists=function(c){switch(typeof c){case "string":return 0l||l>k)}else k=void 0;if(k)return c;k=a.substring(0,a.indexOf("://")+3);var l=a.substring(k.length,a.indexOf("/",k.length+1)),b;0===c.indexOf("/")?b=c.split("/"):(b=a.split("?")[0],b=b.substring(k.length+l.length+1,b.lastIndexOf("/")),b=b.split("/").concat(c.split("/")));for(var d=[],f=0;fa&&0>k&&(!c||!isNaN(c))?f.CDN:f.RELATIVE}};e.getPluginName=function(c){return c.replace(/^(.*\/)?([^-]*)-?.*\.(swf|js)$/,"$2")};e.getPluginVersion=function(c){return c.replace(/[^-]*-?([^\.]*).*$/, +"$1")};e.isYouTube=function(c){return/^(http|\/\/).*(youtube\.com|youtu\.be)\/.+/.test(c)};e.youTubeID=function(c){try{return/v[=\/]([^?&]*)|youtu\.be\/([^?]*)|^([\w-]*)$/i.exec(c).slice(1).join("").replace("?","")}catch(a){return""}};e.isRtmp=function(c,a){return 0===c.indexOf("rtmp")||"rtmp"==a};e.foreach=function(c,a){var k,l;for(k in c)"function"==e.typeOf(c.hasOwnProperty)?c.hasOwnProperty(k)&&(l=c[k],a(k,l)):(l=c[k],a(k,l))};e.isHTTPS=function(){return 0===g.location.href.indexOf("https")}; +e.repo=function(){var c="http://p.jwpcdn.com/"+h.version.split(/\W/).splice(0,2).join("/")+"/";try{e.isHTTPS()&&(c=c.replace("http://","https://ssl."))}catch(a){}return c};e.ajax=function(c,a,k,l){var b,d=!1;0l.indexOf("url")?"url("+l+")":l+c:0===l||"z-index"===a||"opacity"===a?""+l+c:/color/i.test(a)?"#"+b.pad(l.toString(16).replace(/^0x/i,""),6)+c:Math.ceil(l)+"px"+c}function j(a,b){for(var c=0;cf.elements.indexOf(a)&&f.elements.push(a)}else j(a,d)}};n.block=function(a){null===f&&(f={id:a,styleSheets:{},elements:[]})};n.unblock=function(a){if(f&&(!a||f.id===a)){for(var b in f.styleSheets)g(b);for(a=0;aa)){f.addEventListener(e.ERROR,g);f.addEventListener(e.COMPLETE,b);return}var c= +m.createElement("script");c.addEventListener?(c.onload=b,c.onerror=g):c.readyState&&(c.onreadystatechange=function(a){("loaded"==c.readyState||"complete"==c.readyState)&&b(a)});m.getElementsByTagName("head")[0].appendChild(c);c.src=j;a=d.LOADING;h.scriptloader.loaders[j]=this}};this.getStatus=function(){return a}};h.scriptloader.loaders={}}(jwplayer.utils),function(h){h.trim=function(d){return d.replace(/^\s*/,"").replace(/\s*$/,"")};h.pad=function(d,h,j){for(j||(j="0");d.length=e.length&&(e[1]=0);for(var h=d.strToLongs(j.encode(b).slice(0, +16)),a=e.length,f=e[a-1],c=e[0],n,k=Math.floor(6+52/a),l=0;0>>2&3;for(var r=0;r>>5^c<<2)+(c>>>3^f<<4)^(l^c)+(h[r&3^n]^f),f=e[r]+=f}e=d.longsToStr(e);return m.encode(e)};d.decrypt=function(g,b){if(0==g.length)return"";for(var e=d.strToLongs(m.decode(g)),h=d.strToLongs(j.encode(b).slice(0,16)),a=e.length,f=e[a-1],c=e[0],n,k=2654435769*Math.floor(6+52/a);0!=k;){n=k>>>2&3;for(var l=a-1;0<=l;l--)f=e[0>>5^c<<2)+(c>>>3^f<<4)^(k^c)+(h[l&3^ +n]^f),c=e[l]-=f;k-=2654435769}e=d.longsToStr(e);e=e.replace(/\0+$/,"");return j.decode(e)};d.strToLongs=function(d){for(var b=Array(Math.ceil(d.length/4)),e=0;e>>8&255,d[e]>>>16&255,d[e]>>>24&255);return b.join("")};var m={code:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\x3d", +encode:function(d,b){var e,h,a,f,c=[],n="",k,l,r=m.code;l=("undefined"==typeof b?0:b)?j.encode(d):d;k=l.length%3;if(0k++;)n+="\x3d",l+="\x00";for(k=0;k>18&63,h=f>>12&63,a=f>>6&63,f&=63,c[k/3]=r.charAt(e)+r.charAt(h)+r.charAt(a)+r.charAt(f);c=c.join("");return c=c.slice(0,c.length-n.length)+n},decode:function(d,b){b="undefined"==typeof b?!1:b;var e,h,a,f,c,n=[],k,l=m.code;k=b?j.decode(d):d;for(var r= +0;r>>16&255,h=a>>>8&255,a&=255,n[r/4]=String.fromCharCode(e,h,a),64==c&&(n[r/4]=String.fromCharCode(e,h)),64==f&&(n[r/4]=String.fromCharCode(e));f=n.join("");return b?j.decode(f):f}},j={encode:function(d){d=d.replace(/[\u0080-\u07ff]/g,function(b){b=b.charCodeAt(0);return String.fromCharCode(192|b>>6,128|b&63)});return d=d.replace(/[\u0800-\uffff]/g,function(b){b= +b.charCodeAt(0);return String.fromCharCode(224|b>>12,128|b>>6&63,128|b&63)})},decode:function(d){d=d.replace(/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g,function(b){b=(b.charCodeAt(0)&15)<<12|(b.charCodeAt(1)&63)<<6|b.charCodeAt(2)&63;return String.fromCharCode(b)});return d=d.replace(/[\u00c0-\u00df][\u0080-\u00bf]/g,function(b){b=(b.charCodeAt(0)&31)<<6|b.charCodeAt(1)&63;return String.fromCharCode(b)})}}}(jwplayer.utils),function(h){h.events={COMPLETE:"COMPLETE",ERROR:"ERROR",API_READY:"jwplayerAPIReady", +JWPLAYER_READY:"jwplayerReady",JWPLAYER_FULLSCREEN:"jwplayerFullscreen",JWPLAYER_RESIZE:"jwplayerResize",JWPLAYER_ERROR:"jwplayerError",JWPLAYER_SETUP_ERROR:"jwplayerSetupError",JWPLAYER_MEDIA_BEFOREPLAY:"jwplayerMediaBeforePlay",JWPLAYER_MEDIA_BEFORECOMPLETE:"jwplayerMediaBeforeComplete",JWPLAYER_COMPONENT_SHOW:"jwplayerComponentShow",JWPLAYER_COMPONENT_HIDE:"jwplayerComponentHide",JWPLAYER_MEDIA_BUFFER:"jwplayerMediaBuffer",JWPLAYER_MEDIA_BUFFER_FULL:"jwplayerMediaBufferFull",JWPLAYER_MEDIA_ERROR:"jwplayerMediaError", +JWPLAYER_MEDIA_LOADED:"jwplayerMediaLoaded",JWPLAYER_MEDIA_COMPLETE:"jwplayerMediaComplete",JWPLAYER_MEDIA_SEEK:"jwplayerMediaSeek",JWPLAYER_MEDIA_TIME:"jwplayerMediaTime",JWPLAYER_MEDIA_VOLUME:"jwplayerMediaVolume",JWPLAYER_MEDIA_META:"jwplayerMediaMeta",JWPLAYER_MEDIA_MUTE:"jwplayerMediaMute",JWPLAYER_MEDIA_LEVELS:"jwplayerMediaLevels",JWPLAYER_MEDIA_LEVEL_CHANGED:"jwplayerMediaLevelChanged",JWPLAYER_CAPTIONS_CHANGED:"jwplayerCaptionsChanged",JWPLAYER_CAPTIONS_LIST:"jwplayerCaptionsList",JWPLAYER_CAPTIONS_LOADED:"jwplayerCaptionsLoaded", +JWPLAYER_PLAYER_STATE:"jwplayerPlayerState",state:{BUFFERING:"BUFFERING",IDLE:"IDLE",PAUSED:"PAUSED",PLAYING:"PLAYING"},JWPLAYER_PLAYLIST_LOADED:"jwplayerPlaylistLoaded",JWPLAYER_PLAYLIST_ITEM:"jwplayerPlaylistItem",JWPLAYER_PLAYLIST_COMPLETE:"jwplayerPlaylistComplete",JWPLAYER_DISPLAY_CLICK:"jwplayerViewClick",JWPLAYER_VIEW_TAB_FOCUS:"jwplayerViewTabFocus",JWPLAYER_CONTROLS:"jwplayerViewControls",JWPLAYER_USER_ACTION:"jwplayerUserAction",JWPLAYER_INSTREAM_CLICK:"jwplayerInstreamClicked",JWPLAYER_INSTREAM_DESTROYED:"jwplayerInstreamDestroyed", +JWPLAYER_AD_TIME:"jwplayerAdTime",JWPLAYER_AD_ERROR:"jwplayerAdError",JWPLAYER_AD_CLICK:"jwplayerAdClicked",JWPLAYER_AD_COMPLETE:"jwplayerAdComplete",JWPLAYER_AD_IMPRESSION:"jwplayerAdImpression",JWPLAYER_AD_COMPANIONS:"jwplayerAdCompanions",JWPLAYER_AD_SKIPPED:"jwplayerAdSkipped",JWPLAYER_AD_PLAY:"jwplayerAdPlay",JWPLAYER_AD_PAUSE:"jwplayerAdPause",JWPLAYER_AD_META:"jwplayerAdMeta",JWPLAYER_CAST_AVAILABLE:"jwplayerCastAvailable",JWPLAYER_CAST_SESSION:"jwplayerCastSession",JWPLAYER_CAST_AD_CHANGED:"jwplayerCastAdChanged"}}(jwplayer), +function(h){var d=h.utils;h.events.eventdispatcher=function(m,j){function g(b,a,f){if(b)for(var c=0;cparseFloat(h.version)))c=!0,n="Incompatible player version",e()});0===a&&e()}}var a=d.loaderstatus.NEW, +f=!1,c=!1,n,k=b,l=new m.eventdispatcher;d.extend(this,l);this.setupPlugins=function(a,b,c){var f={length:0,plugins:{}},e=0,l={},k=g.getPlugins();j(b.plugins,function(g,j){var h=d.getPluginName(g),n=k[h],p=n.getFlashPath(),m=n.getJS(),L=n.getURL();p&&(f.plugins[p]=d.extend({},j),f.plugins[p].pluginmode=n.getPluginmode(),f.length++);try{if(m&&b.plugins&&b.plugins[L]){var r=document.createElement("div");r.id=a.id+"_"+h;r.style.position="absolute";r.style.top=0;r.style.zIndex=e+10;l[h]=n.getNewInstance(a, +d.extend({},b.plugins[L]),r);e++;a.onReady(c(l[h],r,!0));a.onResize(c(l[h],r))}}catch(O){d.log("ERROR: Failed to load "+h+".")}});a.plugins=l;return f};this.load=function(){if(!(d.exists(b)&&"object"!=d.typeOf(b))){a=d.loaderstatus.LOADING;j(b,function(a){d.exists(a)&&(a=g.addPlugin(a),a.addEventListener(m.COMPLETE,p),a.addEventListener(m.ERROR,r))});var c=g.getPlugins();j(c,function(a,b){b.load()})}p()};this.destroy=function(){l&&(l.resetEventListeners(),l=null)};var r=this.pluginFailed=function(){c|| +(c=!0,n="File not found",e())};this.getStatus=function(){return a}}}(jwplayer),function(h){h.parsers={localName:function(d){return d?d.localName?d.localName:d.baseName?d.baseName:"":""},textContent:function(d){return d?d.textContent?h.utils.trim(d.textContent):d.text?h.utils.trim(d.text):"":""},getChildNode:function(d,h){return d.childNodes[h]},numChildren:function(d){return d.childNodes?d.childNodes.length:0}}}(jwplayer),function(h){var d=h.parsers;(d.jwparser=function(){}).parseEntry=function(m, +j){for(var g=[],b=[],e=h.utils.xmlAttribute,p=0;pk++&&setTimeout(m,1E3)}function j(){n&&(n.resetEventListeners(),n=null)}function g(){a.apiConfig=null}function b(){}function e(b){a.loader.sendEvent("session",{session:b});b.sendMessage(a.NS,{whoami:1})}function p(b){a.availability=b;a.loader.sendEvent("availability",{availability:b})}window.chrome=d;var a=h.cast,f=h.utils,c=h.events,n,k=0,l="C7EF2AC5"; +a.loader=f.extend({initialize:function(){null!==a.availability?a.loader.sendEvent("availability",{availability:a.availability}):d&&d.cast?m():n||(n=new f.scriptloader("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"),n.addEventListener(c.ERROR,j),n.addEventListener(c.COMPLETE,m),n.load())}},new c.eventdispatcher("cast.loader"));a.availability=null}(window.jwplayer,window.chrome||{}),function(h){function d(b){return function(){return b}}function m(){}var j=h.cast,g=h.utils,b=h.events,e=b.state; +j.provider=function(h,a){function f(b,c){var d={command:b};void 0!==c&&(d.args=c);a.sendMessage(h,d,m,function(a){j.error("message send error",a)})}function c(a){l.oldstate=l.newstate;l.newstate=a;n.sendEvent(b.JWPLAYER_PLAYER_STATE,{oldstate:l.oldstate,newstate:l.newstate})}var n=g.extend(this,new b.eventdispatcher("cast.provider")),k=-1,l={newstate:e.IDLE,oldstate:e.IDLE,buffer:0,position:0,duration:-1,audioMode:!1};n.isCaster=!0;n.init=function(){};n.destroy=function(){clearTimeout(k);a=null}; +n.updateModel=function(a,c){a.newstate&&(l.newstate=a.newstate,l.oldstate=a.oldstate||l.oldstate,n.sendEvent(b.JWPLAYER_PLAYER_STATE,{oldstate:l.oldstate,newstate:l.newstate}));if("ad"!==c){if(void 0!==a.position||void 0!==a.duration)void 0!==a.position&&(l.position=a.position),void 0!==a.duration&&(l.duration=a.duration),n.sendEvent(b.JWPLAYER_MEDIA_TIME,{position:l.position,duration:l.duration});void 0!==a.buffer&&(l.buffer=a.buffer,n.sendEvent(b.JWPLAYER_MEDIA_BUFFER,{bufferPercent:l.buffer}))}}; +n.supportsFullscreen=function(){return!1};n.setup=function(a,b){b.state&&(l.newstate=b.state);void 0!==b.buffer&&(l.buffer=b.buffer);void 0!==a.position&&(l.position=a.position);void 0!==a.duration&&(l.duration=a.duration);c(e.BUFFERING);f("setup",a)};n.playlistItem=function(a){c(e.BUFFERING);f("item",a)};n.load=function(a){c(e.BUFFERING);f("load",a)};n.stop=function(){clearTimeout(k);k=setTimeout(function(){c(e.IDLE);f("stop")},0)};n.play=function(){f("play")};n.pause=function(){c(e.PAUSED);f("pause")}; +n.seek=function(a){c(e.BUFFERING);n.sendEvent(b.JWPLAYER_MEDIA_SEEK,{position:l.position,offset:a});f("seek",a)};n.audioMode=function(){return l.audioMode};n.detachMedia=function(){j.error("detachMedia called while casting");return document.createElement("video")};n.attachMedia=function(){j.error("attachMedia called while casting")};var r;n.setContainer=function(a){r=a};n.getContainer=function(){return r};n.volume=n.mute=n.setControls=n.setCurrentQuality=n.remove=n.resize=n.seekDrag=n.addCaptions= +n.resetCaptions=n.setVisibility=n.fsCaptions=m;n.setFullScreen=n.getFullScreen=n.checkComplete=d(!1);n.getWidth=n.getHeight=n.getCurrentQuality=d(0);n.getQualityLevels=d(["Auto"])}}(window.jwplayer),function(h){function d(a,b){j.foreach(b,function(b,c){var d=a[b];"function"==typeof d&&d.call(a,c)})}function m(a,b,d){var e=a.style;e.backgroundColor="#000";e.color="#FFF";e.width=j.styleDimension(d.width);e.height=j.styleDimension(d.height);e.display="table";e.opacity=1;d=document.createElement("p"); +e=d.style;e.verticalAlign="middle";e.textAlign="center";e.display="table-cell";e.font="15px/20px Arial, Helvetica, sans-serif";d.innerHTML=b.replace(":",":\x3cbr\x3e");a.innerHTML="";a.appendChild(d)}var j=h.utils,g=h.events,b=!0,e=!1,p=document,a=h.embed=function(f){function c(){if(!B)if("array"===j.typeOf(u.playlist)&&2>u.playlist.length&&(0===u.playlist.length||!u.playlist[0].sources||0===u.playlist[0].sources.length))l();else if(!G)if("string"===j.typeOf(u.playlist))A=new h.playlist.loader,A.addEventListener(g.JWPLAYER_PLAYLIST_LOADED, +function(a){u.playlist=a.playlist;G=e;c()}),A.addEventListener(g.JWPLAYER_ERROR,function(a){G=e;l(a)}),G=b,A.load(u.playlist);else if(v.getStatus()==j.loaderstatus.COMPLETE){for(var k=0;k=e||0>=g?0:100*(g/e)+"%")}-1==b.width.toString().indexOf("%")?delete b.aspectratio: +e?b.aspectratio=e:delete b.aspectratio;return b}).addConfig=function(b,e){d(e);return j.extend(b,e)}}(jwplayer),function(h){var d=h.utils,m=document;h.embed.download=function(j,g,b){function e(a,b){for(var c=m.querySelectorAll(a),e=0;er)return l.sendEvent(m.ERROR,{message:"Flash version must be 10.0 or greater"}),!1;var g,h,t=f.config.listbar,q=d.extend({}, +p);if(b.id+"_wrapper"==b.parentNode.id)g=document.getElementById(b.id+"_wrapper");else{g=document.createElement("div");h=document.createElement("div");h.style.display="none";h.id=b.id+"_aspect";g.id=b.id+"_wrapper";g.style.position="relative";g.style.display="block";g.style.width=d.styleDimension(q.width);g.style.height=d.styleDimension(q.height);if(f.config.aspectratio){var E=parseFloat(f.config.aspectratio);h.style.display="block";h.style.marginTop=f.config.aspectratio;g.style.height="auto";g.style.display= +"inline-block";t&&("bottom"==t.position?h.style.paddingBottom=t.size+"px":"right"==t.position&&(h.style.marginBottom=-1*t.size*(E/100)+"px"))}b.parentNode.replaceChild(g,b);g.appendChild(b);g.appendChild(h)}g=a.setupPlugins(f,q,n);0=q.height?"transparent":"opaque";h="height width modes events primary base fallback volume".split(" "); +for(t=0;t 00:04.110 -Captions describe all relevant audio for the hearing impaired. -[ Heroic music playing for a seagull ] - -00:04.500 --> 00:05.000 -[ Splash!!! ] - -00:05.100 --> 00:06.000 -[ Sploosh!!! ] - -00:08.000 --> 00:09.225 -[ Splash...splash...splash splash splash ] - -00:10.525 --> 00:11.255 -[ Splash, Sploosh again ] - -00:13.500 --> 00:14.984 -Dolphin: eeeEEEEEeeee! - -00:14.984 --> 00:16.984 -Dolphin: Squawk! eeeEEE? - -00:25.000 --> 00:28.284 -[ A whole ton of splashes ] - -00:29.500 --> 00:31.000 -Mine. Mine. Mine. - -00:34.300 --> 00:36.000 -Shark: Chomp - -00:36.800 --> 00:37.900 -Shark: CHOMP!!! - -00:37.861 --> 00:41.193 -EEEEEEOOOOOOOOOOWHALENOISE - -00:42.593 --> 00:45.611 -[ BIG SPLASH ] \ No newline at end of file diff --git a/gui/slick/js/video-js/demo.html b/gui/slick/js/video-js/demo.html deleted file mode 100644 index 80937185..00000000 --- a/gui/slick/js/video-js/demo.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - Video.js | HTML5 Video Player - - - - - - - - - - - - - - - - - diff --git a/gui/slick/js/video-js/font/vjs.eot b/gui/slick/js/video-js/font/vjs.eot deleted file mode 100644 index a2c0f5f24111047aa05a51377821e11312b48912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4804 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 - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/gui/slick/js/video-js/font/vjs.ttf b/gui/slick/js/video-js/font/vjs.ttf deleted file mode 100644 index 682a9b21ef23161d9f1ce0087c4385a8b31b3e26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4640 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 -*/ -.vjs-default-skin { - color: #cccccc; -} -/* Custom Icon Font --------------------------------------------------------------------------------- -The control icons are from a custom font. Each icon corresponds to a character -(e.g. "\e001"). Font icons allow for easy scaling and coloring of icons. -*/ -@font-face { - font-family: 'VideoJS'; - src: url('font/vjs.eot'); - src: url('font/vjs.eot?#iefix') format('embedded-opentype'), url('font/vjs.woff') format('woff'), url('font/vjs.ttf') format('truetype'); - font-weight: normal; - font-style: normal; -} -/* Base UI Component Classes --------------------------------------------------------------------------------- -*/ -/* Slider - used for Volume bar and Seek bar */ -.vjs-default-skin .vjs-slider { - /* Replace browser focus hightlight with handle highlight */ - outline: 0; - position: relative; - cursor: pointer; - padding: 0; - /* background-color-with-alpha */ - background-color: #333333; - background-color: rgba(51, 51, 51, 0.9); -} -.vjs-default-skin .vjs-slider:focus { - /* box-shadow */ - -webkit-box-shadow: 0 0 2em #ffffff; - -moz-box-shadow: 0 0 2em #ffffff; - box-shadow: 0 0 2em #ffffff; -} -.vjs-default-skin .vjs-slider-handle { - position: absolute; - /* Needed for IE6 */ - left: 0; - top: 0; -} -.vjs-default-skin .vjs-slider-handle:before { - content: "\e009"; - font-family: VideoJS; - font-size: 1em; - line-height: 1; - text-align: center; - text-shadow: 0em 0em 1em #fff; - position: absolute; - top: 0; - left: 0; - /* Rotate the square icon to make a diamond */ - /* transform */ - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -/* Control Bar --------------------------------------------------------------------------------- -The default control bar that is a container for most of the controls. -*/ -.vjs-default-skin .vjs-control-bar { - /* Start hidden */ - display: none; - position: absolute; - /* Place control bar at the bottom of the player box/video. - If you want more margin below the control bar, add more height. */ - bottom: 0; - /* Use left/right to stretch to 100% width of player div */ - left: 0; - right: 0; - /* Height includes any margin you want above or below control items */ - height: 3.0em; - /* background-color-with-alpha */ - background-color: #07141e; - background-color: rgba(7, 20, 30, 0.7); -} -/* Show the control bar only once the video has started playing */ -.vjs-default-skin.vjs-has-started .vjs-control-bar { - display: block; - /* Visibility needed to make sure things hide in older browsers too. */ - - visibility: visible; - opacity: 1; - /* transition */ - -webkit-transition: visibility 0.1s, opacity 0.1s; - -moz-transition: visibility 0.1s, opacity 0.1s; - -o-transition: visibility 0.1s, opacity 0.1s; - transition: visibility 0.1s, opacity 0.1s; -} -/* Hide the control bar when the video is playing and the user is inactive */ -.vjs-default-skin.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar { - display: block; - visibility: hidden; - opacity: 0; - /* transition */ - -webkit-transition: visibility 1s, opacity 1s; - -moz-transition: visibility 1s, opacity 1s; - -o-transition: visibility 1s, opacity 1s; - transition: visibility 1s, opacity 1s; -} -.vjs-default-skin.vjs-controls-disabled .vjs-control-bar { - display: none; -} -.vjs-default-skin.vjs-using-native-controls .vjs-control-bar { - display: none; -} -/* The control bar shouldn't show after an error */ -.vjs-default-skin.vjs-error .vjs-control-bar { - display: none; -} -/* IE8 is flakey with fonts, and you have to change the actual content to force -fonts to show/hide properly. - - "\9" IE8 hack didn't work for this - - Found in XP IE8 from http://modern.ie. Does not show up in "IE8 mode" in IE9 -*/ -@media \0screen { - .vjs-default-skin.vjs-user-inactive.vjs-playing .vjs-control-bar :before { - content: ""; - } -} -/* General styles for individual controls. */ -.vjs-default-skin .vjs-control { - outline: none; - position: relative; - float: left; - text-align: center; - margin: 0; - padding: 0; - height: 3.0em; - width: 4em; -} -/* FontAwsome button icons */ -.vjs-default-skin .vjs-control:before { - font-family: VideoJS; - font-size: 1.5em; - line-height: 2; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - text-align: center; - text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5); -} -/* Replacement for focus outline */ -.vjs-default-skin .vjs-control:focus:before, -.vjs-default-skin .vjs-control:hover:before { - text-shadow: 0em 0em 1em #ffffff; -} -.vjs-default-skin .vjs-control:focus { - /* outline: 0; */ - /* keyboard-only users cannot see the focus on several of the UI elements when - this is set to 0 */ - -} -/* Hide control text visually, but have it available for screenreaders */ -.vjs-default-skin .vjs-control-text { - /* hide-visually */ - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -/* Play/Pause --------------------------------------------------------------------------------- -*/ -.vjs-default-skin .vjs-play-control { - width: 5em; - cursor: pointer; -} -.vjs-default-skin .vjs-play-control:before { - content: "\e001"; -} -.vjs-default-skin.vjs-playing .vjs-play-control:before { - content: "\e002"; -} -/* Playback toggle --------------------------------------------------------------------------------- -*/ -.vjs-default-skin .vjs-playback-rate .vjs-playback-rate-value { - font-size: 1.5em; - line-height: 2; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - text-align: center; - text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5); -} -.vjs-default-skin .vjs-playback-rate.vjs-menu-button .vjs-menu .vjs-menu-content { - width: 4em; - left: -2em; - list-style: none; -} -/* Volume/Mute --------------------------------------------------------------------------------- */ -.vjs-default-skin .vjs-mute-control, -.vjs-default-skin .vjs-volume-menu-button { - cursor: pointer; - float: right; -} -.vjs-default-skin .vjs-mute-control:before, -.vjs-default-skin .vjs-volume-menu-button:before { - content: "\e006"; -} -.vjs-default-skin .vjs-mute-control.vjs-vol-0:before, -.vjs-default-skin .vjs-volume-menu-button.vjs-vol-0:before { - content: "\e003"; -} -.vjs-default-skin .vjs-mute-control.vjs-vol-1:before, -.vjs-default-skin .vjs-volume-menu-button.vjs-vol-1:before { - content: "\e004"; -} -.vjs-default-skin .vjs-mute-control.vjs-vol-2:before, -.vjs-default-skin .vjs-volume-menu-button.vjs-vol-2:before { - content: "\e005"; -} -.vjs-default-skin .vjs-volume-control { - width: 5em; - float: right; -} -.vjs-default-skin .vjs-volume-bar { - width: 5em; - height: 0.6em; - margin: 1.1em auto 0; -} -.vjs-default-skin .vjs-volume-menu-button .vjs-menu-content { - height: 2.9em; -} -.vjs-default-skin .vjs-volume-level { - position: absolute; - top: 0; - left: 0; - height: 0.5em; - /* assuming volume starts at 1.0 */ - - width: 100%; - background: #66a8cc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC) -50% 0 repeat; -} -.vjs-default-skin .vjs-volume-bar .vjs-volume-handle { - width: 0.5em; - height: 0.5em; - /* Assumes volume starts at 1.0. If you change the size of the - handle relative to the volume bar, you'll need to update this value - too. */ - - left: 4.5em; -} -.vjs-default-skin .vjs-volume-handle:before { - font-size: 0.9em; - top: -0.2em; - left: -0.2em; - width: 1em; - height: 1em; -} -.vjs-default-skin .vjs-volume-menu-button .vjs-menu .vjs-menu-content { - width: 6em; - left: -4em; -} -/* Progress --------------------------------------------------------------------------------- -*/ -.vjs-default-skin .vjs-progress-control { - position: absolute; - left: 0; - right: 0; - width: auto; - font-size: 0.3em; - height: 1em; - /* Set above the rest of the controls. */ - top: -1em; - /* Shrink the bar slower than it grows. */ - /* transition */ - -webkit-transition: all 0.4s; - -moz-transition: all 0.4s; - -o-transition: all 0.4s; - transition: all 0.4s; -} -/* On hover, make the progress bar grow to something that's more clickable. - This simply changes the overall font for the progress bar, and this - updates both the em-based widths and heights, as wells as the icon font */ -.vjs-default-skin:hover .vjs-progress-control { - font-size: .9em; - /* Even though we're not changing the top/height, we need to include them in - the transition so they're handled correctly. */ - - /* transition */ - -webkit-transition: all 0.2s; - -moz-transition: all 0.2s; - -o-transition: all 0.2s; - transition: all 0.2s; -} -/* Box containing play and load progresses. Also acts as seek scrubber. */ -.vjs-default-skin .vjs-progress-holder { - height: 100%; -} -/* Progress Bars */ -.vjs-default-skin .vjs-progress-holder .vjs-play-progress, -.vjs-default-skin .vjs-progress-holder .vjs-load-progress { - position: absolute; - display: block; - height: 100%; - margin: 0; - padding: 0; - /* updated by javascript during playback */ - - width: 0; - /* Needed for IE6 */ - left: 0; - top: 0; -} -.vjs-default-skin .vjs-play-progress { - /* - Using a data URI to create the white diagonal lines with a transparent - background. Surprisingly works in IE8. - Created using http://www.patternify.com - Changing the first color value will change the bar color. - Also using a paralax effect to make the lines move backwards. - The -50% left position makes that happen. - */ - - background: #66a8cc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC) -50% 0 repeat; -} -.vjs-default-skin .vjs-load-progress { - background: #646464 /* IE8- Fallback */; - background: rgba(255, 255, 255, 0.4); -} -.vjs-default-skin .vjs-seek-handle { - width: 1.5em; - height: 100%; -} -.vjs-default-skin .vjs-seek-handle:before { - padding-top: 0.1em /* Minor adjustment */; -} -/* Live Mode --------------------------------------------------------------------------------- -*/ -.vjs-default-skin.vjs-live .vjs-time-controls, -.vjs-default-skin.vjs-live .vjs-time-divider, -.vjs-default-skin.vjs-live .vjs-progress-control { - display: none; -} -.vjs-default-skin.vjs-live .vjs-live-display { - display: block; -} -/* Live Display --------------------------------------------------------------------------------- -*/ -.vjs-default-skin .vjs-live-display { - display: none; - font-size: 1em; - line-height: 3em; -} -/* Time Display --------------------------------------------------------------------------------- -*/ -.vjs-default-skin .vjs-time-controls { - font-size: 1em; - /* Align vertically by making the line height the same as the control bar */ - line-height: 3em; -} -.vjs-default-skin .vjs-current-time { - float: left; -} -.vjs-default-skin .vjs-duration { - float: left; -} -/* Remaining time is in the HTML, but not included in default design */ -.vjs-default-skin .vjs-remaining-time { - display: none; - float: left; -} -.vjs-time-divider { - float: left; - line-height: 3em; -} -/* Fullscreen --------------------------------------------------------------------------------- -*/ -.vjs-default-skin .vjs-fullscreen-control { - width: 3.8em; - cursor: pointer; - float: right; -} -.vjs-default-skin .vjs-fullscreen-control:before { - content: "\e000"; -} -/* Switch to the exit icon when the player is in fullscreen */ -.vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control:before { - content: "\e00b"; -} -/* Big Play Button (play button at start) --------------------------------------------------------------------------------- -Positioning of the play button in the center or other corners can be done more -easily in the skin designer. http://designer.videojs.com/ -*/ -.vjs-default-skin .vjs-big-play-button { - left: 0.5em; - top: 0.5em; - font-size: 3em; - display: block; - z-index: 2; - position: absolute; - width: 4em; - height: 2.6em; - text-align: center; - vertical-align: middle; - cursor: pointer; - opacity: 1; - /* Need a slightly gray bg so it can be seen on black backgrounds */ - /* background-color-with-alpha */ - background-color: #07141e; - background-color: rgba(7, 20, 30, 0.7); - border: 0.1em solid #3b4249; - /* border-radius */ - -webkit-border-radius: 0.8em; - -moz-border-radius: 0.8em; - border-radius: 0.8em; - /* box-shadow */ - -webkit-box-shadow: 0px 0px 1em rgba(255, 255, 255, 0.25); - -moz-box-shadow: 0px 0px 1em rgba(255, 255, 255, 0.25); - box-shadow: 0px 0px 1em rgba(255, 255, 255, 0.25); - /* transition */ - -webkit-transition: all 0.4s; - -moz-transition: all 0.4s; - -o-transition: all 0.4s; - transition: all 0.4s; -} -/* Optionally center */ -.vjs-default-skin.vjs-big-play-centered .vjs-big-play-button { - /* Center it horizontally */ - left: 50%; - margin-left: -2.1em; - /* Center it vertically */ - top: 50%; - margin-top: -1.4000000000000001em; -} -/* Hide if controls are disabled */ -.vjs-default-skin.vjs-controls-disabled .vjs-big-play-button { - display: none; -} -/* Hide when video starts playing */ -.vjs-default-skin.vjs-has-started .vjs-big-play-button { - display: none; -} -/* Hide on mobile devices. Remove when we stop using native controls - by default on mobile */ -.vjs-default-skin.vjs-using-native-controls .vjs-big-play-button { - display: none; -} -.vjs-default-skin:hover .vjs-big-play-button, -.vjs-default-skin .vjs-big-play-button:focus { - outline: 0; - border-color: #fff; - /* IE8 needs a non-glow hover state */ - background-color: #505050; - background-color: rgba(50, 50, 50, 0.75); - /* box-shadow */ - -webkit-box-shadow: 0 0 3em #ffffff; - -moz-box-shadow: 0 0 3em #ffffff; - box-shadow: 0 0 3em #ffffff; - /* transition */ - -webkit-transition: all 0s; - -moz-transition: all 0s; - -o-transition: all 0s; - transition: all 0s; -} -.vjs-default-skin .vjs-big-play-button:before { - content: "\e001"; - font-family: VideoJS; - /* In order to center the play icon vertically we need to set the line height - to the same as the button height */ - - line-height: 2.6em; - text-shadow: 0.05em 0.05em 0.1em #000; - text-align: center /* Needed for IE8 */; - position: absolute; - left: 0; - width: 100%; - height: 100%; -} -.vjs-error .vjs-big-play-button { - display: none; -} -/* Error Display --------------------------------------------------------------------------------- -*/ -.vjs-error-display { - display: none; -} -.vjs-error .vjs-error-display { - display: block; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; -} -.vjs-error .vjs-error-display:before { - content: 'X'; - font-family: Arial; - font-size: 4em; - color: #666666; - /* In order to center the play icon vertically we need to set the line height - to the same as the button height */ - - line-height: 1; - text-shadow: 0.05em 0.05em 0.1em #000; - text-align: center /* Needed for IE8 */; - vertical-align: middle; - position: absolute; - top: 50%; - margin-top: -0.5em; - width: 100%; -} -.vjs-error-display div { - position: absolute; - font-size: 1.4em; - text-align: center; - bottom: 1em; - right: 1em; - left: 1em; -} -.vjs-error-display a, -.vjs-error-display a:visited { - color: #F4A460; -} -/* Loading Spinner --------------------------------------------------------------------------------- -*/ -.vjs-loading-spinner { - display: none; - position: absolute; - top: 50%; - left: 50%; - font-size: 4em; - line-height: 1; - width: 1em; - height: 1em; - margin-left: -0.5em; - margin-top: -0.5em; - opacity: 0.75; - /* animation */ - -webkit-animation: spin 1.5s infinite linear; - -moz-animation: spin 1.5s infinite linear; - -o-animation: spin 1.5s infinite linear; - animation: spin 1.5s infinite linear; -} -/* Errors are unrecoverable without user interaction, - so hide the spinner in the case of an error */ -.video-js.vjs-error .vjs-loading-spinner { - /* using !important flag because currently the loading spinner - uses hide()/show() instead of classes. The !important can be - removed when that's updated */ - - display: none !important; - /* ensure animation doesn't continue while hidden */ - - /* animation */ - -webkit-animation: none; - -moz-animation: none; - -o-animation: none; - animation: none; -} -.vjs-default-skin .vjs-loading-spinner:before { - content: "\e01e"; - font-family: VideoJS; - position: absolute; - top: 0; - left: 0; - width: 1em; - height: 1em; - text-align: center; - text-shadow: 0em 0em 0.1em #000; -} -@-moz-keyframes spin { - 0% { - -moz-transform: rotate(0deg); - } - 100% { - -moz-transform: rotate(359deg); - } -} -@-webkit-keyframes spin { - 0% { - -webkit-transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - } -} -@-o-keyframes spin { - 0% { - -o-transform: rotate(0deg); - } - 100% { - -o-transform: rotate(359deg); - } -} -@keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(359deg); - } -} -/* Menu Buttons (Captions/Subtitles/etc.) --------------------------------------------------------------------------------- -*/ -.vjs-default-skin .vjs-menu-button { - float: right; - cursor: pointer; -} -.vjs-default-skin .vjs-menu { - display: none; - position: absolute; - bottom: 0; - left: 0em; - /* (Width of vjs-menu - width of button) / 2 */ - - width: 0em; - height: 0em; - margin-bottom: 3em; - border-left: 2em solid transparent; - border-right: 2em solid transparent; - border-top: 1.55em solid #000000; - /* Same width top as ul bottom */ - - border-top-color: rgba(7, 40, 50, 0.5); - /* Same as ul background */ - -} -/* Button Pop-up Menu */ -.vjs-default-skin .vjs-menu-button .vjs-menu .vjs-menu-content { - display: block; - padding: 0; - margin: 0; - position: absolute; - width: 10em; - bottom: 1.5em; - /* Same bottom as vjs-menu border-top */ - - max-height: 15em; - overflow: auto; - left: -5em; - /* Width of menu - width of button / 2 */ - - /* background-color-with-alpha */ - background-color: #07141e; - background-color: rgba(7, 20, 30, 0.7); - /* box-shadow */ - -webkit-box-shadow: -0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2); - -moz-box-shadow: -0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2); - box-shadow: -0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2); -} -.vjs-default-skin .vjs-menu-button:hover .vjs-menu { - display: block; -} -.vjs-default-skin .vjs-menu-button ul li { - list-style: none; - margin: 0; - padding: 0.3em 0 0.3em 0; - line-height: 1.4em; - font-size: 1.2em; - text-align: center; - text-transform: lowercase; -} -.vjs-default-skin .vjs-menu-button ul li.vjs-selected { - background-color: #000; -} -.vjs-default-skin .vjs-menu-button ul li:focus, -.vjs-default-skin .vjs-menu-button ul li:hover, -.vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus, -.vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover { - outline: 0; - color: #111; - /* background-color-with-alpha */ - background-color: #ffffff; - background-color: rgba(255, 255, 255, 0.75); - /* box-shadow */ - -webkit-box-shadow: 0 0 1em #ffffff; - -moz-box-shadow: 0 0 1em #ffffff; - box-shadow: 0 0 1em #ffffff; -} -.vjs-default-skin .vjs-menu-button ul li.vjs-menu-title { - text-align: center; - text-transform: uppercase; - font-size: 1em; - line-height: 2em; - padding: 0; - margin: 0 0 0.3em 0; - font-weight: bold; - cursor: default; -} -/* Subtitles Button */ -.vjs-default-skin .vjs-subtitles-button:before { - content: "\e00c"; -} -/* Captions Button */ -.vjs-default-skin .vjs-captions-button:before { - content: "\e008"; -} -/* Replacement for focus outline */ -.vjs-default-skin .vjs-captions-button:focus .vjs-control-content:before, -.vjs-default-skin .vjs-captions-button:hover .vjs-control-content:before { - /* box-shadow */ - -webkit-box-shadow: 0 0 1em #ffffff; - -moz-box-shadow: 0 0 1em #ffffff; - box-shadow: 0 0 1em #ffffff; -} -/* -REQUIRED STYLES (be careful overriding) -================================================================================ -When loading the player, the video tag is replaced with a DIV, -that will hold the video tag or object tag for other playback methods. -The div contains the video playback element (Flash or HTML5) and controls, -and sets the width and height of the video. - -** If you want to add some kind of border/padding (e.g. a frame), or special -positioning, use another containing element. Otherwise you risk messing up -control positioning and full window mode. ** -*/ -.video-js { - background-color: #000; - position: relative; - padding: 0; - /* Start with 10px for base font size so other dimensions can be em based and - easily calculable. */ - - font-size: 10px; - /* Allow poster to be vertially aligned. */ - - vertical-align: middle; - /* display: table-cell; */ - /*This works in Safari but not Firefox.*/ - - /* Provide some basic defaults for fonts */ - - font-weight: normal; - font-style: normal; - /* Avoiding helvetica: issue #376 */ - - font-family: Arial, sans-serif; - /* Turn off user selection (text highlighting) by default. - The majority of player components will not be text blocks. - Text areas will need to turn user selection back on. */ - - /* user-select */ - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -/* Playback technology elements expand to the width/height of the containing div -