UNPKG

videojs-shaka

Version:
3 lines (2 loc) 7.81 kB
/*! @name videojs-shaka @version 1.1.2 @license MIT */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("video.js")):"function"==typeof define&&define.amd?define(["video.js"],e):(t=t||self).videojsShaka=e(t.videojs)}(this,function(t){"use strict";function e(){return(e=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t}).apply(this,arguments)}function a(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}function n(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function i(t,e){var a=[],n=e.getVariantTracks().filter(function(t){return"variant"===t.type});if(n.length>1){a.push({id:-1,label:"auto",selected:!0})}return n.forEach(function(t,e){var n=t,i="";t.height>=2160?i=" (4k)":t.height>=1440?i=" (2k)":t.height>=720&&(i=" (HD)"),n.label=t.height+"p"+i,a.push(n)}),a.sort(function(t,e){return t.language>e.language?-1:e.language>t.language?1:t.height>e.height?-1:e.height>t.height?1:t.bandwidth>e.bandwidth?-1:e.bandwidth>t.bandwidth?1:0}).reduce(function(t,e){return(e.height!==t.previousHeight||e.height===t.previousHeight&&e.language!==t.previousLanguage)&&(t.previousHeight=e.height,t.previousLanguage=e.language,t.list.push(e)),t},{previousHeight:null,previousLanguage:null,list:[]}).list}function r(t,e){var a,n=[];a=e.getTextTracks(),n.forEach(t.removeRemoteTextTrack.bind(t)),n=[],a.length&&!t.options_.sideload?n=function(t,e,a){var n=[],i=a.map(function(t){return{dashTrack:t,trackConfig:{label:t.label||t.language,language:t.language,srclang:t.language,kind:t.kind}}}).map(function(e){var a=e.trackConfig,i=e.dashTrack,r=t.addRemoteTextTrack(a,!1);return n.push({textTrack:r.track,dashTrack:i}),r});function r(){for(var a,i=t.textTracks(),r=function(t){var e=i[t];if("showing"===e.mode){var r=function(t,e){for(var a=0;a<t.length;a++)if(e(t[a]))return t[a]}(n,function(t){return t.textTrack===e});a=r?r.dashTrack:null}},o=0;o<i.length;o+=1)r(o);a?(e.selectTextTrack(a),e.setTextTrackVisibility(!0)):e.setTextTrackVisibility(!1)}return t.textTracks().on("change",r),e.addEventListener("unloading",function(){t.textTracks().off("change",r)}),r(),i}(t,e,a):e.setTextTrackVisibility(!1)}function o(e,a){!function(e,a,n){var i=e.audioTracks();function r(t){return"dash-audio-"+t}function o(t){var e=t.language;return t.role&&(e+=" ("+t.role+")"),e}function s(t,e){return t.find(function(t){return o(t)===e.label})}i.length&&e.clearTracks(["audio"]);var l=n[0];n.forEach(function(a,n){var s=o(a);a===l&&e.trigger("shakaaudiotrackchange",{language:a.language}),i.addTrack(new t.AudioTrack({enabled:a===l,id:r(n),kind:"main",label:s,language:a.language}))});var c=function(){for(var t=0;t<i.length;t++){var r=i[t];if(r.enabled){var o=s(n,r);if(o){e.trigger("shakaaudiotrackchange",{language:o.language}),a.selectAudioLanguage(o.language,o.role);continue}}}};i.addEventListener("change",c),a.addEventListener("unloading",function(){i.removeEventListener("change",c)})}(e,a,a.getAudioLanguagesAndRoles())}var s=(t=t&&t.hasOwnProperty("default")?t.default:t).getTech("Html5"),l=function(e){function n(a,n){var i;return(i=e.call(this,a,n)||this).vjsPlayer=t(a.playerId),i.player_.ready(function(){i.player_.addClass("vjs-shaka")}),i}a(n,e);var l=n.prototype;return l.createEl=function(){return this.el_=s.prototype.createEl.apply(this,arguments),shaka.polyfill.installAll(),shaka.log&&(this.options_.debug?shaka.log.setLevel(shaka.log.Level.DEBUG):shaka.log.setLevel(shaka.log.Level.ERROR)),this.shaka_=new shaka.Player(this.el_),this.el_.tech=this,this.el_},l.setSrc=function(t){var e=this,a=this.options_.configuration||{};"function"==typeof a.drm?a.drm=a.drm():a.drm=a.drm||{},a.abr||(a.abr={enabled:!0}),this.shaka_.configure(a),this.options_.licenseServerAuth&&this.shaka_.getNetworkingEngine().registerRequestFilter(this.options_.licenseServerAuth),this.shaka_.addEventListener("buffering",function(t){t.buffering?e.vjsPlayer.trigger("waiting"):e.vjsPlayer.trigger("playing")}),this.shaka_.addEventListener("error",function(t){e.retriggerError(t.detail)}),this.shaka_.load(t).then(function(){e.initShakaMenus()}).catch(e.retriggerError.bind(this))},l.dispose=function(){this.shaka_&&(this.shaka_.unload(),this.shaka_.destroy())},l.initShakaMenus=function(){var t,e;t=this,e=this.shaka_,t.trigger("loadedqualitydata",{qualityData:{video:i(0,e)},qualitySwitchCallback:function(t,a){if(e.configure({abr:{enabled:-1===t}}),-1!==t){var n=e.getVariantTracks().filter(function(e){return e.id===t&&"variant"===e.type});if(e.selectVariantTrack(n[0],!0),shaka.util.FakeEvent){var i=new shaka.util.FakeEvent("variantchanged");e.dispatchEvent(i)}}}}),r(this,this.shaka_),o(this,this.shaka_)},l.retriggerError=function(t){var e,a=this;if(t.message&&(t.message.indexOf("UNSUPPORTED")>-1||t.message.indexOf("NOT_SUPPORTED")>-1))e=4;else switch(t.category){case 1:e=2;break;case 2:case 3:case 4:e=3;break;case 5:e=1;break;case 6:e=5;break;case 7:case 8:case 9:e=0}this.vjsPlayer.error({code:e,message:t.code+" - "+t.message}),setTimeout(function(){a.dispose()},10)},n}(s);l.defaultState={},l.VERSION="1.1.2",l.isSupported=function(){return!!window.MediaSource},l.canPlaySource=function(t,e){return/^(application\/dash\+xml|application\/x-mpegURL)/i.test(t.type)?"probably":""};var c=function(t){function e(e,a){var i,r=n(n(i=t.call(this,e,a)||this));return e.tech_.on("shakaaudiotrackchange",function(t,e){var a=e.language;r.children().forEach(function(t){"auto"===t.options_.label?(t.selected(!0),t.show()):t.options_.language===a?(t.selected(!1),t.show()):(t.selected(!1),t.hide())})}),e.on("qualitytrackchange",function(){r.hide()}),i}return a(e,t),e.prototype.addItem=function(e){var a=this;t.prototype.addItem.call(this,e),e.on(["tap","click"],function(){for(var t=a.children(),n=0;n<t.length;n++){var i=t[n];e!==i&&i.selected(!1)}})},e}(t.getComponent("Menu")),u=function(t){function e(){return t.apply(this,arguments)||this}return a(e,t),e.prototype.handleClick=function(){t.prototype.handleClick.call(this),this.player_.trigger("qualitytrackchange",this.options_),this.options_.qualitySwitchCallback(this.options_.id,this.options_.trackType)},e}(t.getComponent("MenuItem")),h=t.getComponent("MenuButton"),g={video:"vjs-icon-hd",audio:"vjs-icon-cog",subtitle:"vjs-icon-subtitles"},d=function(t){function n(e,a){return t.call(this,e,a)||this}a(n,t);var i=n.prototype;return i.createMenu=function(){for(var t,a,n=new c(this.player_,this.options_),i=0;i<this.options_.qualityList.length;i++){var r=this.options_.qualityList[i],o=this.options_;a=e({qualitySwitchCallback:o.qualitySwitchCallback,trackType:o.trackType},r,{selectable:!0}),t=new u(this.player_,a),n.addItem(t)}return n},i.buildCSSClass=function(){return"vjs-quality-button "+g[this.options_.trackType]+" vjs-icon-placeholder "+t.prototype.buildCSSClass.call(this)},i.buildWrapperCSSClass=function(){return"vjs-quality-button "+t.prototype.buildWrapperCSSClass.call(this)},n}(h);return t.getTech("Tech").registerTech("Shaka",l),(t.registerPlugin||t.plugin)("qualityPickerPlugin",function(){var t=this,e=["video","audio","subtitle"];function a(a,n){var i=n.qualityData,r=n.qualitySwitchCallback,o=t.controlBar.getChild("fullscreenToggle");t.controlBar.removeChild(o);for(var s=0;s<e.length;s++){var l=e[s],c=l+"PickerButton";c=c.charAt(0).toUpperCase()+c.slice(1);var u=t.controlBar.getChild(c);u&&(u.dispose(),t.controlBar.removeChild(u)),i[l]&&i[l].length>1&&(u=new d(t,{name:c,qualityList:i[l],qualitySwitchCallback:r,trackType:l}),t.controlBar.addChild(u))}o&&t.controlBar.addChild(o)}t.tech_?t.tech_.on("loadedqualitydata",a):t.ready(function(){t.tech_.on("loadedqualitydata",a)},!0)}),l});