@eluvio/elv-player-js 1.0.110 → 1.0.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +177 -1
- package/package.json +1 -1
- package/src/index.js +9 -5
- package/src/static/stylesheets/player.scss +35 -7
- package/dist/0.bundle.js +0 -10
- package/dist/3.bundle.js +0 -18
- package/dist/4.bundle.js +0 -1
- package/dist/5.bundle.js +0 -1
- package/dist/6.bundle.js +0 -289
- package/dist/82039b3023d7b2c52c275b57ce7bbc42.png +0 -0
- package/dist/index.js +0 -1
- package/dist/vendors~main.bundle.js +0 -39
package/dist/6.bundle.js
DELETED
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{462:function(e,t,r){"undefined"!=typeof window&&function webpackUniversalModuleDefinition(t,r){e.exports=r()}(0,()=>(()=>{var e={"./src/config.ts":
|
|
2
|
-
/*!***********************!*\
|
|
3
|
-
!*** ./src/config.ts ***!
|
|
4
|
-
\***********************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{enableStreamingMode:()=>enableStreamingMode,hlsDefaultConfig:()=>E,mergeConfig:()=>mergeConfig});var i=r(/*! ./controller/abr-controller */"./src/controller/abr-controller.ts"),n=r(/*! ./controller/audio-stream-controller */"./src/controller/audio-stream-controller.ts"),a=r(/*! ./controller/audio-track-controller */"./src/controller/audio-track-controller.ts"),s=r(/*! ./controller/subtitle-stream-controller */"./src/controller/subtitle-stream-controller.ts"),o=r(/*! ./controller/subtitle-track-controller */"./src/controller/subtitle-track-controller.ts"),l=r(/*! ./controller/buffer-controller */"./src/controller/buffer-controller.ts"),u=r(/*! ./controller/timeline-controller */"./src/controller/timeline-controller.ts"),d=r(/*! ./controller/cap-level-controller */"./src/controller/cap-level-controller.ts"),c=r(/*! ./controller/fps-controller */"./src/controller/fps-controller.ts"),h=r(/*! ./controller/eme-controller */"./src/controller/eme-controller.ts"),f=r(/*! ./controller/cmcd-controller */"./src/controller/cmcd-controller.ts"),g=r(/*! ./utils/xhr-loader */"./src/utils/xhr-loader.ts"),p=r(/*! ./utils/fetch-loader */"./src/utils/fetch-loader.ts"),v=r(/*! ./utils/cues */"./src/utils/cues.ts"),m=r(/*! ./utils/mediakeys-helper */"./src/utils/mediakeys-helper.ts"),y=r(/*! ./utils/logger */"./src/utils/logger.ts");function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach((function(t){_defineProperty(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _defineProperty(e,t,r){return(t=function _toPropertyKey(e){var t=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var E=_objectSpread(_objectSpread({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,startLevel:void 0,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:g.default,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:i.default,bufferController:l.default,capLevelController:d.default,fpsController:c.default,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:m.requestMediaKeySystemAccess,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0},function timelineConfig(){return{cueHandler:v.default,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}}()),{},{subtitleStreamController:s.SubtitleStreamController,subtitleTrackController:o.default,timelineController:u.TimelineController,audioStreamController:n.default,audioTrackController:a.default,emeController:h.default,cmcdController:f.default});function mergeConfig(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');return _extends({},e,t)}function enableStreamingMode(e){var t=e.loader;t!==p.default&&t!==g.default?(y.logger.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1):(0,p.fetchSupported)()&&(e.loader=p.default,e.progressive=!0,e.enableSoftwareAES=!0,y.logger.log("[config]: Progressive streaming enabled, using FetchLoader"))}},"./src/controller/abr-controller.ts":
|
|
5
|
-
/*!******************************************!*\
|
|
6
|
-
!*** ./src/controller/abr-controller.ts ***!
|
|
7
|
-
\******************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../utils/ewma-bandwidth-estimator */"./src/utils/ewma-bandwidth-estimator.ts"),a=r(/*! ../events */"./src/events.ts"),s=r(/*! ../errors */"./src/errors.ts"),o=r(/*! ../types/loader */"./src/types/loader.ts"),l=r(/*! ../utils/logger */"./src/utils/logger.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}const u=function(){function AbrController(e){this.hls=void 0,this.lastLoadedFragLevel=0,this._nextAutoLevel=-1,this.timer=void 0,this.onCheck=this._abandonRulesCheck.bind(this),this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this.hls=e;var t=e.config;this.bwEstimator=new n.default(t.abrEwmaSlowVoD,t.abrEwmaFastVoD,t.abrEwmaDefaultEstimate),this.registerListeners()}var e=AbrController.prototype;return e.registerListeners=function registerListeners(){var e=this.hls;e.on(a.Events.FRAG_LOADING,this.onFragLoading,this),e.on(a.Events.FRAG_LOADED,this.onFragLoaded,this),e.on(a.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.on(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(a.Events.ERROR,this.onError,this)},e.unregisterListeners=function unregisterListeners(){var e=this.hls;e.off(a.Events.FRAG_LOADING,this.onFragLoading,this),e.off(a.Events.FRAG_LOADED,this.onFragLoaded,this),e.off(a.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.off(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(a.Events.ERROR,this.onError,this)},e.destroy=function destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this.onCheck=null,this.fragCurrent=this.partCurrent=null},e.onFragLoading=function onFragLoading(e,t){var r,i=t.frag;i.type===o.PlaylistLevelType.MAIN&&(this.timer||(this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r:null,this.timer=self.setInterval(this.onCheck,100)))},e.onLevelLoaded=function onLevelLoaded(e,t){var r=this.hls.config;t.details.live?this.bwEstimator.update(r.abrEwmaSlowLive,r.abrEwmaFastLive):this.bwEstimator.update(r.abrEwmaSlowVoD,r.abrEwmaFastVoD)},e._abandonRulesCheck=function _abandonRulesCheck(){var e=this.fragCurrent,t=this.partCurrent,r=this.hls,n=r.autoLevelEnabled,s=r.media;if(e&&s){var o=t?t.stats:e.stats,u=t?t.duration:e.duration;if(o.aborted||o.loaded&&o.loaded===o.total||0===e.level)return this.clearTimer(),void(this._nextAutoLevel=-1);if(n&&!s.paused&&s.playbackRate&&s.readyState){var d=r.mainForwardBufferInfo;if(null!==d){var c=performance.now()-o.loading.start,h=Math.abs(s.playbackRate);if(!(c<=500*u/h)){var f=o.loaded&&o.loading.first,g=this.bwEstimator.getEstimate(),p=r.levels,v=r.minAutoLevel,m=p[e.level],y=o.total||Math.max(o.loaded,Math.round(u*m.maxBitrate/8)),E=f?1e3*o.loaded/c:0,T=E?(y-o.loaded)/E:8*y/g,S=d.len/h;if(!(T<=S)){var b,L=Number.POSITIVE_INFINITY;for(b=e.level-1;b>v;b--){var D=p[b].maxBitrate;if((L=E?u*D/(6.4*E):u*D/g)<S)break}L>=T||(l.logger.warn("Fragment "+e.sn+(t?" part "+t.index:"")+" of level "+e.level+" is loading too slowly and will cause an underbuffer; aborting and switching to level "+b+"\n Current BW estimate: "+((0,i.isFiniteNumber)(g)?(g/1024).toFixed(3):"Unknown")+" Kb/s\n Estimated load time for current fragment: "+T.toFixed(3)+" s\n Estimated load time for the next fragment: "+L.toFixed(3)+" s\n Time to underbuffer: "+S.toFixed(3)+" s"),r.nextLoadLevel=b,f&&this.bwEstimator.sample(c,o.loaded),this.clearTimer(),(e.loader||e.keyLoader)&&(this.fragCurrent=this.partCurrent=null,e.abortRequests()),r.trigger(a.Events.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:o}))}}}}}},e.onFragLoaded=function onFragLoaded(e,t){var r=t.frag,n=t.part;if(r.type===o.PlaylistLevelType.MAIN&&(0,i.isFiniteNumber)(r.sn)){var s=n?n.stats:r.stats,l=n?n.duration:r.duration;if(this.clearTimer(),this.lastLoadedFragLevel=r.level,this._nextAutoLevel=-1,this.hls.config.abrMaxWithRealBitrate){var u=this.hls.levels[r.level],d=(u.loaded?u.loaded.bytes:0)+s.loaded,c=(u.loaded?u.loaded.duration:0)+l;u.loaded={bytes:d,duration:c},u.realBitrate=Math.round(8*d/c)}if(r.bitrateTest){var h={stats:s,frag:r,part:n,id:r.type};this.onFragBuffered(a.Events.FRAG_BUFFERED,h)}}},e.onFragBuffered=function onFragBuffered(e,t){var r=t.frag,i=t.part,n=i?i.stats:r.stats;if(!n.aborted&&r.type===o.PlaylistLevelType.MAIN&&"initSegment"!==r.sn){var a=n.parsing.end-n.loading.start;this.bwEstimator.sample(a,n.loaded),n.bwEstimate=this.bwEstimator.getEstimate(),r.bitrateTest?this.bitrateTestDelay=a/1e3:this.bitrateTestDelay=0}},e.onError=function onError(e,t){var r;if((null===(r=t.frag)||void 0===r?void 0:r.type)===o.PlaylistLevelType.MAIN){if(t.type===s.ErrorTypes.KEY_SYSTEM_ERROR)return void this.clearTimer();switch(t.details){case s.ErrorDetails.FRAG_LOAD_ERROR:case s.ErrorDetails.FRAG_LOAD_TIMEOUT:case s.ErrorDetails.KEY_LOAD_ERROR:case s.ErrorDetails.KEY_LOAD_TIMEOUT:this.clearTimer()}}},e.clearTimer=function clearTimer(){self.clearInterval(this.timer),this.timer=void 0},e.getNextABRAutoLevel=function getNextABRAutoLevel(){var e=this.fragCurrent,t=this.partCurrent,r=this.hls,i=r.maxAutoLevel,n=r.config,a=r.minAutoLevel,s=r.media,o=t?t.duration:e?e.duration:0,u=s&&0!==s.playbackRate?Math.abs(s.playbackRate):1,d=this.bwEstimator?this.bwEstimator.getEstimate():n.abrEwmaDefaultEstimate,c=r.mainForwardBufferInfo,h=(c?c.len:0)/u,f=this.findBestLevel(d,a,i,h,n.abrBandWidthFactor,n.abrBandWidthUpFactor);if(f>=0)return f;l.logger.trace((h?"rebuffering expected":"buffer is empty")+", finding optimal quality level");var g=o?Math.min(o,n.maxStarvationDelay):n.maxStarvationDelay,p=n.abrBandWidthFactor,v=n.abrBandWidthUpFactor;if(!h){var m=this.bitrateTestDelay;if(m)g=(o?Math.min(o,n.maxLoadingDelay):n.maxLoadingDelay)-m,l.logger.trace("bitrate test took "+Math.round(1e3*m)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*g)+" ms"),p=v=1}return f=this.findBestLevel(d,a,i,h+g,p,v),Math.max(f,0)},e.findBestLevel=function findBestLevel(e,t,r,n,a,s){for(var o,u=this.fragCurrent,d=this.partCurrent,c=this.lastLoadedFragLevel,h=this.hls.levels,f=h[c],g=!(null==f||null===(o=f.details)||void 0===o||!o.live),p=null==f?void 0:f.codecSet,v=d?d.duration:u?u.duration:0,m=r;m>=t;m--){var y=h[m];if(y&&(!p||y.codecSet===p)){var E=y.details,T=(d?null==E?void 0:E.partTarget:null==E?void 0:E.averagetargetduration)||v,S=void 0;S=m<=c?a*e:s*e;var b=h[m].maxBitrate,L=b*T/S;if(l.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+m+"/"+Math.round(S)+"/"+b+"/"+T+"/"+n+"/"+L),S>b&&(0===L||!(0,i.isFiniteNumber)(L)||g&&!this.bitrateTestDelay||L<n))return m}}return-1},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(AbrController,[{key:"nextAutoLevel",get:function get(){var e=this._nextAutoLevel,t=this.bwEstimator;if(-1!==e&&!t.canEstimate())return e;var r=this.getNextABRAutoLevel();return-1!==e&&this.hls.levels[r].loadError?e:(-1!==e&&(r=Math.min(e,r)),r)},set:function set(e){this._nextAutoLevel=e}}]),AbrController}()},"./src/controller/audio-stream-controller.ts":
|
|
8
|
-
/*!***************************************************!*\
|
|
9
|
-
!*** ./src/controller/audio-stream-controller.ts ***!
|
|
10
|
-
\***************************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>m});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ./base-stream-controller */"./src/controller/base-stream-controller.ts"),a=r(/*! ../events */"./src/events.ts"),s=r(/*! ../utils/buffer-helper */"./src/utils/buffer-helper.ts"),o=r(/*! ./fragment-tracker */"./src/controller/fragment-tracker.ts"),l=r(/*! ../types/level */"./src/types/level.ts"),u=r(/*! ../types/loader */"./src/types/loader.ts"),d=r(/*! ../loader/fragment */"./src/loader/fragment.ts"),c=r(/*! ../demux/chunk-cache */"./src/demux/chunk-cache.ts"),h=r(/*! ../demux/transmuxer-interface */"./src/demux/transmuxer-interface.ts"),f=r(/*! ../types/transmuxer */"./src/types/transmuxer.ts"),g=r(/*! ./fragment-finders */"./src/controller/fragment-finders.ts"),p=r(/*! ../utils/discontinuities */"./src/utils/discontinuities.ts"),v=r(/*! ../errors */"./src/errors.ts");function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}const m=function(e){function AudioStreamController(t,r,i){var n;return(n=e.call(this,t,r,i,"[audio-stream-controller]")||this).videoBuffer=null,n.videoTrackCC=-1,n.waitingVideoCC=-1,n.audioSwitch=!1,n.trackId=-1,n.waitingData=null,n.mainDetails=null,n.bufferFlushed=!1,n.cachedTrackLoadedData=null,n._registerListeners(),n}!function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(AudioStreamController,e);var t=AudioStreamController.prototype;return t.onHandlerDestroying=function onHandlerDestroying(){this._unregisterListeners(),this.mainDetails=null},t._registerListeners=function _registerListeners(){var e=this.hls;e.on(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(a.Events.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),e.on(a.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(a.Events.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(a.Events.ERROR,this.onError,this),e.on(a.Events.BUFFER_RESET,this.onBufferReset,this),e.on(a.Events.BUFFER_CREATED,this.onBufferCreated,this),e.on(a.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(a.Events.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(a.Events.FRAG_BUFFERED,this.onFragBuffered,this)},t._unregisterListeners=function _unregisterListeners(){var e=this.hls;e.off(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(a.Events.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),e.off(a.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(a.Events.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(a.Events.ERROR,this.onError,this),e.off(a.Events.BUFFER_RESET,this.onBufferReset,this),e.off(a.Events.BUFFER_CREATED,this.onBufferCreated,this),e.off(a.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(a.Events.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(a.Events.FRAG_BUFFERED,this.onFragBuffered,this)},t.onInitPtsFound=function onInitPtsFound(e,t){var r=t.frag,i=t.id,a=t.initPTS;if("main"===i){var s=r.cc;this.initPTS[r.cc]=a,this.log("InitPTS for cc: "+s+" found from main: "+a),this.videoTrackCC=s,this.state===n.State.WAITING_INIT_PTS&&this.tick()}},t.startLoad=function startLoad(e){if(!this.levels)return this.startPosition=e,void(this.state=n.State.STOPPED);var t=this.lastCurrentTime;this.stopLoad(),this.setInterval(100),this.fragLoadError=0,t>0&&-1===e?(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t,this.state=n.State.IDLE):(this.loadedmetadata=!1,this.state=n.State.WAITING_TRACK),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()},t.doTick=function doTick(){switch(this.state){case n.State.IDLE:this.doTickIdle();break;case n.State.WAITING_TRACK:var t,r=this.levels,i=this.trackId,a=null==r||null===(t=r[i])||void 0===t?void 0:t.details;if(a){if(this.waitForCdnTuneIn(a))break;this.state=n.State.WAITING_INIT_PTS}break;case n.State.FRAG_LOADING_WAITING_RETRY:var o,l=performance.now(),u=this.retryDate;(!u||l>=u||null!==(o=this.media)&&void 0!==o&&o.seeking)&&(this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded(this.trackId),this.state=n.State.IDLE);break;case n.State.WAITING_INIT_PTS:var d=this.waitingData;if(d){var c=d.frag,h=d.part,f=d.cache,p=d.complete;if(void 0!==this.initPTS[c.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=n.State.FRAG_LOADING;var v={frag:c,part:h,payload:f.flush(),networkDetails:null};this._handleFragmentLoadProgress(v),p&&e.prototype._handleFragmentLoadComplete.call(this,v)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log("Waiting fragment cc ("+c.cc+") cancelled because video is at cc "+this.videoTrackCC),this.clearWaitingFragment();else{var m=this.getLoadPosition(),y=s.BufferHelper.bufferInfo(this.mediaBuffer,m,this.config.maxBufferHole);(0,g.fragmentWithinToleranceTest)(y.end,this.config.maxFragLookUpTolerance,c)<0&&(this.log("Waiting fragment cc ("+c.cc+") @ "+c.start+" cancelled because another fragment at "+y.end+" is needed"),this.clearWaitingFragment())}}else this.state=n.State.IDLE}this.onTickEnd()},t.clearWaitingFragment=function clearWaitingFragment(){var e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=n.State.IDLE)},t.resetLoadingState=function resetLoadingState(){this.clearWaitingFragment(),e.prototype.resetLoadingState.call(this)},t.onTickEnd=function onTickEnd(){var e=this.media;e&&e.readyState&&(this.lastCurrentTime=e.currentTime)},t.doTickIdle=function doTickIdle(){var e=this.hls,t=this.levels,r=this.media,i=this.trackId,s=e.config;if(t&&t[i]&&(r||!this.startFragRequested&&s.startFragPrefetch)){var o=t[i].details;if(!o||o.live&&this.levelLastLoaded!==i||this.waitForCdnTuneIn(o))this.state=n.State.WAITING_TRACK;else{var l=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&l&&(this.bufferFlushed=!1,this.afterBufferFlushed(l,d.ElementaryStreamTypes.AUDIO,u.PlaylistLevelType.AUDIO));var c=this.getFwdBufferInfo(l,u.PlaylistLevelType.AUDIO);if(null!==c){var h=this.audioSwitch;if(!h&&this._streamEnded(c,o))return e.trigger(a.Events.BUFFER_EOS,{type:"audio"}),void(this.state=n.State.ENDED);var f=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,u.PlaylistLevelType.MAIN);if(!(c.len>=this.getMaxBufferLength(null==f?void 0:f.len))||h){var g=o.fragments[0].start,p=c.end;if(h&&r){var v=this.getLoadPosition();p=v,o.PTSKnown&&v<g&&(c.end>g||c.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),r.currentTime=g+.05)}if(!(f&&p>f.end+o.targetduration)&&(f&&f.len||!c.len)){var m=this.getNextFragment(p,o);m?this.loadFragment(m,o,p):this.bufferFlushed=!0}}}}}},t.getMaxBufferLength=function getMaxBufferLength(t){var r=e.prototype.getMaxBufferLength.call(this);return t?Math.max(r,t):r},t.onMediaDetaching=function onMediaDetaching(){this.videoBuffer=null,e.prototype.onMediaDetaching.call(this)},t.onAudioTracksUpdated=function onAudioTracksUpdated(e,t){var r=t.audioTracks;this.resetTransmuxer(),this.levels=r.map((function(e){return new l.Level(e)}))},t.onAudioTrackSwitching=function onAudioTrackSwitching(e,t){var r=!!t.url;this.trackId=t.id;var i=this.fragCurrent;i&&i.abortRequests(),this.fragCurrent=null,this.clearWaitingFragment(),r?this.setInterval(100):this.resetTransmuxer(),r?(this.audioSwitch=!0,this.state=n.State.IDLE):this.state=n.State.STOPPED,this.tick()},t.onManifestLoading=function onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=!1},t.onLevelLoaded=function onLevelLoaded(e,t){this.mainDetails=t.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(a.Events.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)},t.onAudioTrackLoaded=function onAudioTrackLoaded(e,t){var r;if(null!=this.mainDetails){var i=this.levels,a=t.details,s=t.id;if(i){this.log("Track "+s+" loaded ["+a.startSN+","+a.endSN+"],duration:"+a.totalduration);var o=i[s],l=0;if(a.live||null!==(r=o.details)&&void 0!==r&&r.live){var u=this.mainDetails;if(a.fragments[0]||(a.deltaUpdateFailed=!0),a.deltaUpdateFailed||!u)return;!o.details&&a.hasProgramDateTime&&u.hasProgramDateTime?((0,p.alignMediaPlaylistByPDT)(a,u),l=a.fragments[0].start):l=this.alignPlaylists(a,o.details)}o.details=a,this.levelLastLoaded=s,this.startFragRequested||!this.mainDetails&&a.live||this.setStartPosition(o.details,l),this.state!==n.State.WAITING_TRACK||this.waitForCdnTuneIn(a)||(this.state=n.State.IDLE),this.tick()}else this.warn("Audio tracks were reset while loading level "+s)}else this.cachedTrackLoadedData=t},t._handleFragmentLoadProgress=function _handleFragmentLoadProgress(e){var t,r=e.frag,i=e.part,a=e.payload,s=this.config,o=this.trackId,l=this.levels;if(l){var d=l[o];console.assert(d,"Audio track is defined on fragment load progress");var g=d.details;console.assert(g,"Audio track details are defined on fragment load progress");var p=s.defaultAudioCodec||d.audioCodec||"mp4a.40.2",v=this.transmuxer;v||(v=this.transmuxer=new h.default(this.hls,u.PlaylistLevelType.AUDIO,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));var m=this.initPTS[r.cc],y=null===(t=r.initSegment)||void 0===t?void 0:t.data;if(void 0!==m){var E=i?i.index:-1,T=-1!==E,S=new f.ChunkMetadata(r.level,r.sn,r.stats.chunkCount,a.byteLength,E,T);v.push(a,y,p,"",r,i,g.totalduration,!1,S,m)}else{this.log("Unknown video PTS for cc "+r.cc+", waiting for video PTS before demuxing audio frag "+r.sn+" of ["+g.startSN+" ,"+g.endSN+"],track "+o),(this.waitingData=this.waitingData||{frag:r,part:i,cache:new c.default,complete:!1}).cache.push(new Uint8Array(a)),this.waitingVideoCC=this.videoTrackCC,this.state=n.State.WAITING_INIT_PTS}}else this.warn("Audio tracks were reset while fragment load was in progress. Fragment "+r.sn+" of level "+r.level+" will not be buffered")},t._handleFragmentLoadComplete=function _handleFragmentLoadComplete(t){this.waitingData?this.waitingData.complete=!0:e.prototype._handleFragmentLoadComplete.call(this,t)},t.onBufferReset=function onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1},t.onBufferCreated=function onBufferCreated(e,t){var r=t.tracks.audio;r&&(this.mediaBuffer=r.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)},t.onFragBuffered=function onFragBuffered(e,t){var r,i=t.frag,n=t.part;i.type===u.PlaylistLevelType.AUDIO?this.fragContextChanged(i)?this.warn("Fragment "+i.sn+(n?" p: "+n.index:"")+" of level "+i.level+" finished buffering, but was aborted. state: "+this.state+", audioSwitch: "+this.audioSwitch):("initSegment"!==i.sn&&(this.fragPrevious=i,this.audioSwitch&&(this.audioSwitch=!1,this.hls.trigger(a.Events.AUDIO_TRACK_SWITCHED,{id:this.trackId}))),this.fragBufferedComplete(i,n)):this.loadedmetadata||i.type!==u.PlaylistLevelType.MAIN||null!==(r=this.videoBuffer||this.media)&&void 0!==r&&r.buffered.length&&(this.loadedmetadata=!0)},t.onError=function onError(t,r){if(r.type!==v.ErrorTypes.KEY_SYSTEM_ERROR)switch(r.details){case v.ErrorDetails.FRAG_LOAD_ERROR:case v.ErrorDetails.FRAG_LOAD_TIMEOUT:case v.ErrorDetails.FRAG_PARSING_ERROR:case v.ErrorDetails.KEY_LOAD_ERROR:case v.ErrorDetails.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(u.PlaylistLevelType.AUDIO,r);break;case v.ErrorDetails.AUDIO_TRACK_LOAD_ERROR:case v.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:this.state!==n.State.ERROR&&this.state!==n.State.STOPPED&&(this.state=r.fatal?n.State.ERROR:n.State.IDLE,this.warn(r.details+" while loading frag, switching to "+this.state+" state"));break;case v.ErrorDetails.BUFFER_FULL_ERROR:if("audio"===r.parent&&(this.state===n.State.PARSING||this.state===n.State.PARSED)){var i=!0,a=this.getFwdBufferInfo(this.mediaBuffer,u.PlaylistLevelType.AUDIO);a&&a.len>.5&&(i=!this.reduceMaxBufferLength(a.len)),i&&(this.warn("Buffer full error also media.currentTime is not buffered, flush audio buffer"),this.fragCurrent=null,e.prototype.flushMainBuffer.call(this,0,Number.POSITIVE_INFINITY,"audio")),this.resetLoadingState()}}else this.onFragmentOrKeyLoadError(u.PlaylistLevelType.AUDIO,r)},t.onBufferFlushed=function onBufferFlushed(e,t){t.type===d.ElementaryStreamTypes.AUDIO&&(this.bufferFlushed=!0,this.state===n.State.ENDED&&(this.state=n.State.IDLE))},t._handleTransmuxComplete=function _handleTransmuxComplete(e){var t,r="audio",i=this.hls,s=e.remuxResult,o=e.chunkMeta,l=this.getCurrentContext(o);if(!l)return this.warn("The loading context changed while buffering fragment "+o.sn+" of level "+o.level+". This chunk will not be buffered."),void this.resetStartWhenNotLoaded(o.level);var u=l.frag,c=l.part,h=l.level.details,f=s.audio,g=s.text,p=s.id3,v=s.initSegment;if(!this.fragContextChanged(u)&&h){if(this.state=n.State.PARSING,this.audioSwitch&&f&&this.completeAudioSwitch(),null!=v&&v.tracks&&(this._bufferInitSegment(v.tracks,u,o),i.trigger(a.Events.FRAG_PARSING_INIT_SEGMENT,{frag:u,id:r,tracks:v.tracks})),f){var m=f.startPTS,y=f.endPTS,E=f.startDTS,T=f.endDTS;c&&(c.elementaryStreams[d.ElementaryStreamTypes.AUDIO]={startPTS:m,endPTS:y,startDTS:E,endDTS:T}),u.setElementaryStreamInfo(d.ElementaryStreamTypes.AUDIO,m,y,E,T),this.bufferFragmentData(f,u,c,o)}if(null!=p&&null!==(t=p.samples)&&void 0!==t&&t.length){var S=_extends({id:r,frag:u,details:h},p);i.trigger(a.Events.FRAG_PARSING_METADATA,S)}if(g){var b=_extends({id:r,frag:u,details:h},g);i.trigger(a.Events.FRAG_PARSING_USERDATA,b)}}},t._bufferInitSegment=function _bufferInitSegment(e,t,r){if(this.state===n.State.PARSING){e.video&&delete e.video;var i=e.audio;if(i){i.levelCodec=i.codec,i.id="audio",this.log("Init audio buffer, container:"+i.container+", codecs[parsed]=["+i.codec+"]"),this.hls.trigger(a.Events.BUFFER_CODECS,e);var s=i.initSegment;if(null!=s&&s.byteLength){var o={type:"audio",frag:t,part:null,chunkMeta:r,parent:t.type,data:s};this.hls.trigger(a.Events.BUFFER_APPENDING,o)}this.tick()}}},t.loadFragment=function loadFragment(t,r,a){var s=this.fragmentTracker.getState(t);this.fragCurrent=t,(this.audioSwitch||s===o.FragmentState.NOT_LOADED||s===o.FragmentState.PARTIAL)&&("initSegment"===t.sn?this._loadInitSegment(t,r):r.live&&!(0,i.isFiniteNumber)(this.initPTS[t.cc])?(this.log("Waiting for video PTS in continuity counter "+t.cc+" of live stream before loading audio fragment "+t.sn+" of level "+this.trackId),this.state=n.State.WAITING_INIT_PTS):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,r,a)))},t.completeAudioSwitch=function completeAudioSwitch(){var t=this.hls,r=this.media,i=this.trackId;r&&(this.log("Switching audio track : flushing all audio"),e.prototype.flushMainBuffer.call(this,0,Number.POSITIVE_INFINITY,"audio")),this.audioSwitch=!1,t.trigger(a.Events.AUDIO_TRACK_SWITCHED,{id:i})},AudioStreamController}(n.default)},"./src/controller/audio-track-controller.ts":
|
|
11
|
-
/*!**************************************************!*\
|
|
12
|
-
!*** ./src/controller/audio-track-controller.ts ***!
|
|
13
|
-
\**************************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var i=r(/*! ../events */"./src/events.ts"),n=r(/*! ../errors */"./src/errors.ts"),a=r(/*! ./base-playlist-controller */"./src/controller/base-playlist-controller.ts"),s=r(/*! ../types/loader */"./src/types/loader.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}const o=function(e){function AudioTrackController(t){var r;return(r=e.call(this,t,"[audio-track-controller]")||this).tracks=[],r.groupId=null,r.tracksInGroup=[],r.trackId=-1,r.trackName="",r.selectDefaultTrack=!0,r.registerListeners(),r}!function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(AudioTrackController,e);var t=AudioTrackController.prototype;return t.registerListeners=function registerListeners(){var e=this.hls;e.on(i.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(i.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(i.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(i.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(i.Events.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(i.Events.ERROR,this.onError,this)},t.unregisterListeners=function unregisterListeners(){var e=this.hls;e.off(i.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(i.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(i.Events.LEVEL_LOADING,this.onLevelLoading,this),e.off(i.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(i.Events.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(i.Events.ERROR,this.onError,this)},t.destroy=function destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,e.prototype.destroy.call(this)},t.onManifestLoading=function onManifestLoading(){this.tracks=[],this.groupId=null,this.tracksInGroup=[],this.trackId=-1,this.trackName="",this.selectDefaultTrack=!0},t.onManifestParsed=function onManifestParsed(e,t){this.tracks=t.audioTracks||[]},t.onAudioTrackLoaded=function onAudioTrackLoaded(e,t){var r=t.id,i=t.details,n=this.tracksInGroup[r];if(n){var a=n.details;n.details=t.details,this.log("audioTrack "+r+" loaded ["+i.startSN+"-"+i.endSN+"]"),r===this.trackId&&(this.retryCount=0,this.playlistLoaded(r,t,a))}else this.warn("Invalid audio track id "+r)},t.onLevelLoading=function onLevelLoading(e,t){this.switchLevel(t.level)},t.onLevelSwitching=function onLevelSwitching(e,t){this.switchLevel(t.level)},t.switchLevel=function switchLevel(e){var t=this.hls.levels[e];if(null!=t&&t.audioGroupIds){var r=t.audioGroupIds[t.urlId];if(this.groupId!==r){this.groupId=r;var n=this.tracks.filter((function(e){return!r||e.groupId===r}));this.selectDefaultTrack&&!n.some((function(e){return e.default}))&&(this.selectDefaultTrack=!1),this.tracksInGroup=n;var a={audioTracks:n};this.log("Updating audio tracks, "+n.length+' track(s) found in "'+r+'" group-id'),this.hls.trigger(i.Events.AUDIO_TRACKS_UPDATED,a),this.selectInitialTrack()}}},t.onError=function onError(t,r){e.prototype.onError.call(this,t,r),!r.fatal&&r.context&&r.context.type===s.PlaylistContextType.AUDIO_TRACK&&r.context.id===this.trackId&&r.context.groupId===this.groupId&&this.retryLoadingOrFail(r)},t.setAudioTrack=function setAudioTrack(e){var t=this.tracksInGroup;if(e<0||e>=t.length)this.warn("Invalid id passed to audio-track controller");else{this.clearTimer();var r=t[this.trackId];this.log("Now switching to audio-track index "+e);var n=t[e],a=n.id,s=n.groupId,o=void 0===s?"":s,l=n.name,u=n.type,d=n.url;if(this.trackId=e,this.trackName=l,this.selectDefaultTrack=!1,this.hls.trigger(i.Events.AUDIO_TRACK_SWITCHING,{id:a,groupId:o,name:l,type:u,url:d}),!n.details||n.details.live){var c=this.switchParams(n.url,null==r?void 0:r.details);this.loadPlaylist(c)}}},t.selectInitialTrack=function selectInitialTrack(){var e=this.tracksInGroup;console.assert(e.length,"Initial audio track should be selected when tracks are known");var t=this.trackName,r=this.findTrackId(t)||this.findTrackId();-1!==r?this.setAudioTrack(r):(this.warn("No track found for running audio group-ID: "+this.groupId),this.hls.trigger(i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,fatal:!0}))},t.findTrackId=function findTrackId(e){for(var t=this.tracksInGroup,r=0;r<t.length;r++){var i=t[r];if((!this.selectDefaultTrack||i.default)&&(!e||e===i.name))return i.id}return-1},t.loadPlaylist=function loadPlaylist(t){e.prototype.loadPlaylist.call(this);var r=this.tracksInGroup[this.trackId];if(this.shouldLoadTrack(r)){var n=r.id,a=r.groupId,s=r.url;if(t)try{s=t.addDirectives(s)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("loading audio-track playlist for id: "+n),this.clearTimer(),this.hls.trigger(i.Events.AUDIO_TRACK_LOADING,{url:s,id:n,groupId:a,deliveryDirectives:t||null})}},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(AudioTrackController,[{key:"audioTracks",get:function get(){return this.tracksInGroup}},{key:"audioTrack",get:function get(){return this.trackId},set:function set(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}}]),AudioTrackController}(a.default)},"./src/controller/base-playlist-controller.ts":
|
|
14
|
-
/*!****************************************************!*\
|
|
15
|
-
!*** ./src/controller/base-playlist-controller.ts ***!
|
|
16
|
-
\****************************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var i=r(/*! ../types/level */"./src/types/level.ts"),n=r(/*! ./level-helper */"./src/controller/level-helper.ts"),a=r(/*! ../utils/logger */"./src/utils/logger.ts"),s=r(/*! ../errors */"./src/errors.ts"),o=function(){function BasePlaylistController(e,t){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.retryCount=0,this.log=void 0,this.warn=void 0,this.log=a.logger.log.bind(a.logger,t+":"),this.warn=a.logger.warn.bind(a.logger,t+":"),this.hls=e}var e=BasePlaylistController.prototype;return e.destroy=function destroy(){this.clearTimer(),this.hls=this.log=this.warn=null},e.onError=function onError(e,t){!t.fatal||t.type!==s.ErrorTypes.NETWORK_ERROR&&t.type!==s.ErrorTypes.KEY_SYSTEM_ERROR||this.stopLoad()},e.clearTimer=function clearTimer(){clearTimeout(this.timer),this.timer=-1},e.startLoad=function startLoad(){this.canLoad=!0,this.retryCount=0,this.requestScheduled=-1,this.loadPlaylist()},e.stopLoad=function stopLoad(){this.canLoad=!1,this.clearTimer()},e.switchParams=function switchParams(e,t){var r=null==t?void 0:t.renditionReports;if(r)for(var n=0;n<r.length;n++){var s=r[n],o=void 0;try{o=new self.URL(s.URI,t.url).href}catch(e){a.logger.warn("Could not construct new URL for Rendition Report: "+e),o=s.URI||""}if(o===e.slice(-o.length)){var l=parseInt(s["LAST-MSN"])||(null==t?void 0:t.lastPartSn),u=parseInt(s["LAST-PART"])||(null==t?void 0:t.lastPartIndex);if(this.hls.config.lowLatencyMode){var d=Math.min(t.age-t.partTarget,t.targetduration);u>=0&&d>t.partTarget&&(u+=1)}return new i.HlsUrlParameters(l,u>=0?u:void 0,i.HlsSkip.No)}}},e.loadPlaylist=function loadPlaylist(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())},e.shouldLoadTrack=function shouldLoadTrack(e){return this.canLoad&&e&&!!e.url&&(!e.details||e.details.live)},e.playlistLoaded=function playlistLoaded(e,t,r){var i=this,a=t.details,s=t.stats,o=self.performance.now(),l=s.loading.first?Math.max(0,o-s.loading.first):0;if(a.advancedDateTime=Date.now()-l,a.live||null!=r&&r.live){if(a.reloaded(r),r&&this.log("live playlist "+e+" "+(a.advanced?"REFRESHED "+a.lastPartSn+"-"+a.lastPartIndex:"MISSED")),r&&a.fragments.length>0&&(0,n.mergeDetails)(r,a),!this.canLoad||!a.live)return;var u,d=void 0,c=void 0;if(a.canBlockReload&&a.endSN&&a.advanced){var h=this.hls.config.lowLatencyMode,f=a.lastPartSn,g=a.endSN,p=a.lastPartIndex,v=f===g;-1!==p?(d=v?g+1:f,c=v?h?0:p:p+1):d=g+1;var m=a.age,y=m+a.ageHeader,E=Math.min(y-a.partTarget,1.5*a.targetduration);if(E>0){if(r&&E>r.tuneInGoal)this.warn("CDN Tune-in goal increased from: "+r.tuneInGoal+" to: "+E+" with playlist age: "+a.age),E=0;else{var T=Math.floor(E/a.targetduration);if(d+=T,void 0!==c)c+=Math.round(E%a.targetduration/a.partTarget);this.log("CDN Tune-in age: "+a.ageHeader+"s last advanced "+m.toFixed(2)+"s goal: "+E+" skip sn "+T+" to part "+c)}a.tuneInGoal=E}if(u=this.getDeliveryDirectives(a,t.deliveryDirectives,d,c),h||!v)return void this.loadPlaylist(u)}else u=this.getDeliveryDirectives(a,t.deliveryDirectives,d,c);var S=this.hls.mainForwardBufferInfo,b=S?S.end-S.len:0,L=1e3*(a.edge-b),D=(0,n.computeReloadInterval)(a,L);a.updated?o>this.requestScheduled+D&&(this.requestScheduled=s.loading.start):this.requestScheduled=-1,void 0!==d&&a.canBlockReload?this.requestScheduled=s.loading.first+D-(1e3*a.partTarget||1e3):this.requestScheduled=(-1===this.requestScheduled?o:this.requestScheduled)+D;var A=this.requestScheduled-o;A=Math.max(0,A),this.log("reload live playlist "+e+" in "+Math.round(A)+" ms"),this.timer=self.setTimeout((function(){return i.loadPlaylist(u)}),A)}else this.clearTimer()},e.getDeliveryDirectives=function getDeliveryDirectives(e,t,r,n){var a=(0,i.getSkipValue)(e,r);return null!=t&&t.skip&&e.deltaUpdateFailed&&(r=t.msn,n=t.part,a=i.HlsSkip.No),new i.HlsUrlParameters(r,n,a)},e.retryLoadingOrFail=function retryLoadingOrFail(e){var t,r=this,i=this.hls.config,n=this.retryCount<i.levelLoadingMaxRetry;if(n)if(this.requestScheduled=-1,this.retryCount++,e.details.indexOf("LoadTimeOut")>-1&&null!==(t=e.context)&&void 0!==t&&t.deliveryDirectives)this.warn("retry playlist loading #"+this.retryCount+' after "'+e.details+'"'),this.loadPlaylist();else{var a=Math.min(Math.pow(2,this.retryCount)*i.levelLoadingRetryDelay,i.levelLoadingMaxRetryTimeout);this.timer=self.setTimeout((function(){return r.loadPlaylist()}),a),this.warn("retry playlist loading #"+this.retryCount+" in "+a+' ms after "'+e.details+'"')}else this.warn('cannot recover from error "'+e.details+'"'),this.clearTimer(),e.fatal=!0;return n},BasePlaylistController}()},"./src/controller/base-stream-controller.ts":
|
|
17
|
-
/*!**************************************************!*\
|
|
18
|
-
!*** ./src/controller/base-stream-controller.ts ***!
|
|
19
|
-
\**************************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{State:()=>E,default:()=>T});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../task-loop */"./src/task-loop.ts"),a=r(/*! ./fragment-tracker */"./src/controller/fragment-tracker.ts"),s=r(/*! ../utils/buffer-helper */"./src/utils/buffer-helper.ts"),o=r(/*! ../utils/logger */"./src/utils/logger.ts"),l=r(/*! ../events */"./src/events.ts"),u=r(/*! ../errors */"./src/errors.ts"),d=r(/*! ../types/transmuxer */"./src/types/transmuxer.ts"),c=r(/*! ../utils/mp4-tools */"./src/utils/mp4-tools.ts"),h=r(/*! ../utils/discontinuities */"./src/utils/discontinuities.ts"),f=r(/*! ./fragment-finders */"./src/controller/fragment-finders.ts"),g=r(/*! ./level-helper */"./src/controller/level-helper.ts"),p=r(/*! ../loader/fragment-loader */"./src/loader/fragment-loader.ts"),v=r(/*! ../crypt/decrypter */"./src/crypt/decrypter.ts"),m=r(/*! ../utils/time-ranges */"./src/utils/time-ranges.ts"),y=r(/*! ../types/loader */"./src/types/loader.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}var E={STOPPED:"STOPPED",IDLE:"IDLE",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING",FRAG_LOADING_WAITING_RETRY:"FRAG_LOADING_WAITING_RETRY",WAITING_TRACK:"WAITING_TRACK",PARSING:"PARSING",PARSED:"PARSED",ENDED:"ENDED",ERROR:"ERROR",WAITING_INIT_PTS:"WAITING_INIT_PTS",WAITING_LEVEL:"WAITING_LEVEL"},T=function(e){function BaseStreamController(t,r,i,n){var a;return(a=e.call(this)||this).hls=void 0,a.fragPrevious=null,a.fragCurrent=null,a.fragmentTracker=void 0,a.transmuxer=null,a._state=E.STOPPED,a.media=null,a.mediaBuffer=null,a.config=void 0,a.bitrateTest=!1,a.lastCurrentTime=0,a.nextLoadPosition=0,a.startPosition=0,a.loadedmetadata=!1,a.fragLoadError=0,a.retryDate=0,a.levels=null,a.fragmentLoader=void 0,a.keyLoader=void 0,a.levelLastLoaded=null,a.startFragRequested=!1,a.decrypter=void 0,a.initPTS=[],a.onvseeking=null,a.onvended=null,a.logPrefix="",a.log=void 0,a.warn=void 0,a.logPrefix=n,a.log=o.logger.log.bind(o.logger,n+":"),a.warn=o.logger.warn.bind(o.logger,n+":"),a.hls=t,a.fragmentLoader=new p.default(t.config),a.keyLoader=i,a.fragmentTracker=r,a.config=t.config,a.decrypter=new v.default(t.config),t.on(l.Events.LEVEL_SWITCHING,a.onLevelSwitching,function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(a)),a}!function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(BaseStreamController,e);var t=BaseStreamController.prototype;return t.doTick=function doTick(){this.onTickEnd()},t.onTickEnd=function onTickEnd(){},t.startLoad=function startLoad(e){},t.stopLoad=function stopLoad(){this.fragmentLoader.abort(),this.keyLoader.abort();var e=this.fragCurrent;e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=E.STOPPED},t._streamEnded=function _streamEnded(e,t){if(t.live||e.nextStart||!e.end||!this.media)return!1;var r=t.partList;if(null!=r&&r.length){var i=r[r.length-1];return s.BufferHelper.isBuffered(this.media,i.start+i.duration/2)}var n=t.fragments[t.fragments.length-1].type;return this.fragmentTracker.isEndListAppended(n)},t.getLevelDetails=function getLevelDetails(){var e;if(this.levels&&null!==this.levelLastLoaded)return null===(e=this.levels[this.levelLastLoaded])||void 0===e?void 0:e.details},t.onMediaAttached=function onMediaAttached(e,t){var r=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),r.addEventListener("seeking",this.onvseeking),r.addEventListener("ended",this.onvended);var i=this.config;this.levels&&i.autoStartLoad&&this.state===E.STOPPED&&this.startLoad(i.startPosition)},t.onMediaDetaching=function onMediaDetaching(){var e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.keyLoader&&this.keyLoader.detach(),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()},t.onMediaSeeking=function onMediaSeeking(){var e=this.config,t=this.fragCurrent,r=this.media,n=this.mediaBuffer,a=this.state,o=r?r.currentTime:0,l=s.BufferHelper.bufferInfo(n||r,o,e.maxBufferHole);if(this.log("media seeking to "+((0,i.isFiniteNumber)(o)?o.toFixed(3):o)+", state: "+a),this.state===E.ENDED)this.resetLoadingState();else if(t){var u=e.maxFragLookUpTolerance,d=t.start-u,c=t.start+t.duration+u;if(!l.len||c<l.start||d>l.end){var h=o>c;(o<d||h)&&(h&&t.loader&&(this.log("seeking outside of buffer while fragment load in progress, cancel fragment load"),t.abortRequests()),this.resetLoadingState())}}r&&(this.lastCurrentTime=o),this.loadedmetadata||l.len||(this.nextLoadPosition=this.startPosition=o),this.tickImmediate()},t.onMediaEnded=function onMediaEnded(){this.startPosition=this.lastCurrentTime=0},t.onLevelSwitching=function onLevelSwitching(e,t){this.fragLoadError=0},t.onHandlerDestroying=function onHandlerDestroying(){this.stopLoad(),e.prototype.onHandlerDestroying.call(this)},t.onHandlerDestroyed=function onHandlerDestroyed(){this.state=E.STOPPED,this.hls.off(l.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),this.fragmentLoader&&this.fragmentLoader.destroy(),this.keyLoader&&this.keyLoader.destroy(),this.decrypter&&this.decrypter.destroy(),this.hls=this.log=this.warn=this.decrypter=this.keyLoader=this.fragmentLoader=this.fragmentTracker=null,e.prototype.onHandlerDestroyed.call(this)},t.loadFragment=function loadFragment(e,t,r){this._loadFragForPlayback(e,t,r)},t._loadFragForPlayback=function _loadFragForPlayback(e,t,r){var i=this;this._doFragLoad(e,t,r,(function progressCallback(t){if(i.fragContextChanged(e))return i.warn("Fragment "+e.sn+(t.part?" p: "+t.part.index:"")+" of level "+e.level+" was dropped during download."),void i.fragmentTracker.removeFragment(e);e.stats.chunkCount++,i._handleFragmentLoadProgress(t)})).then((function(t){if(t){i.fragLoadError=0;var r=i.state;i.fragContextChanged(e)?(r===E.FRAG_LOADING||!i.fragCurrent&&r===E.PARSING)&&(i.fragmentTracker.removeFragment(e),i.state=E.IDLE):("payload"in t&&(i.log("Loaded fragment "+e.sn+" of level "+e.level),i.hls.trigger(l.Events.FRAG_LOADED,t)),i._handleFragmentLoadComplete(t))}})).catch((function(t){i.state!==E.STOPPED&&i.state!==E.ERROR&&(i.warn(t),i.resetFragmentLoading(e))}))},t.flushMainBuffer=function flushMainBuffer(e,t,r){if(void 0===r&&(r=null),e-t){var i={startOffset:e,endOffset:t,type:r};this.fragLoadError=0,this.hls.trigger(l.Events.BUFFER_FLUSHING,i)}},t._loadInitSegment=function _loadInitSegment(e,t){var r=this;this._doFragLoad(e,t).then((function(t){if(!t||r.fragContextChanged(e)||!r.levels)throw new Error("init load aborted");return t})).then((function(t){var i=r.hls,n=t.payload,a=e.decryptdata;if(n&&n.byteLength>0&&a&&a.key&&a.iv&&"AES-128"===a.method){var s=self.performance.now();return r.decrypter.decrypt(new Uint8Array(n),a.key.buffer,a.iv.buffer).then((function(r){var n=self.performance.now();return i.trigger(l.Events.FRAG_DECRYPTED,{frag:e,payload:r,stats:{tstart:s,tdecrypt:n}}),t.payload=r,t}))}return t})).then((function(t){var i=r.fragCurrent,n=r.hls,a=r.levels;if(!a)throw new Error("init load aborted, missing levels");var s=a[e.level].details;console.assert(s,"Level details are defined when init segment is loaded");var o=e.stats;r.state=E.IDLE,r.fragLoadError=0,e.data=new Uint8Array(t.payload),o.parsing.start=o.buffering.start=self.performance.now(),o.parsing.end=o.buffering.end=self.performance.now(),t.frag===i&&n.trigger(l.Events.FRAG_BUFFERED,{stats:o,frag:i,part:null,id:e.type}),r.tick()})).catch((function(t){r.state!==E.STOPPED&&r.state!==E.ERROR&&(r.warn(t),r.resetFragmentLoading(e))}))},t.fragContextChanged=function fragContextChanged(e){var t=this.fragCurrent;return!e||!t||e.level!==t.level||e.sn!==t.sn||e.urlId!==t.urlId},t.fragBufferedComplete=function fragBufferedComplete(e,t){var r,i,n=this.mediaBuffer?this.mediaBuffer:this.media;this.log("Buffered "+e.type+" sn: "+e.sn+(t?" part: "+t.index:"")+" of "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+e.level+" "+(n?m.default.toString(s.BufferHelper.getBuffered(n)):"(detached)")),this.state=E.IDLE,n&&(!this.loadedmetadata&&e.type==y.PlaylistLevelType.MAIN&&n.buffered.length&&(null===(r=this.fragCurrent)||void 0===r?void 0:r.sn)===(null===(i=this.fragPrevious)||void 0===i?void 0:i.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())},t.seekToStartPos=function seekToStartPos(){},t._handleFragmentLoadComplete=function _handleFragmentLoadComplete(e){var t=this.transmuxer;if(t){var r=e.frag,i=e.part,n=e.partsLoaded,a=!n||0===n.length||n.some((function(e){return!e})),s=new d.ChunkMetadata(r.level,r.sn,r.stats.chunkCount+1,0,i?i.index:-1,!a);t.flush(s)}},t._handleFragmentLoadProgress=function _handleFragmentLoadProgress(e){},t._doFragLoad=function _doFragLoad(e,t,r,n){var a,s=this;if(void 0===r&&(r=null),!this.levels)throw new Error("frag load aborted, missing levels");var o=null;if(!e.encrypted||null!==(a=e.decryptdata)&&void 0!==a&&a.key?!e.encrypted&&t.encryptedFragments.length&&this.keyLoader.loadClear(e,t.encryptedFragments):(this.log("Loading key for "+e.sn+" of ["+t.startSN+"-"+t.endSN+"], "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+e.level),this.state=E.KEY_LOADING,this.fragCurrent=e,o=this.keyLoader.load(e).then((function(e){if(!s.fragContextChanged(e.frag))return s.hls.trigger(l.Events.KEY_LOADED,e),e})),this.hls.trigger(l.Events.KEY_LOADING,{frag:e}),this.throwIfFragContextChanged("KEY_LOADING")),r=Math.max(e.start,r||0),this.config.lowLatencyMode&&t){var u=t.partList;if(u&&n){r>e.end&&t.fragmentHint&&(e=t.fragmentHint);var d=this.getNextPart(u,e,r);if(d>-1){var c=u[d];return this.log("Loading part sn: "+e.sn+" p: "+c.index+" cc: "+e.cc+" of playlist ["+t.startSN+"-"+t.endSN+"] parts [0-"+d+"-"+(u.length-1)+"] "+("[stream-controller]"===this.logPrefix?"level":"track")+": "+e.level+", target: "+parseFloat(r.toFixed(3))),this.nextLoadPosition=c.start+c.duration,this.state=E.FRAG_LOADING,this.hls.trigger(l.Events.FRAG_LOADING,{frag:e,part:u[d],targetBufferTime:r}),this.throwIfFragContextChanged("FRAG_LOADING parts"),o?o.then((function(t){return!t||s.fragContextChanged(t.frag)?null:s.doFragPartsLoad(e,u,d,n)})).catch((function(e){return s.handleFragLoadError(e)})):this.doFragPartsLoad(e,u,d,n).catch((function(e){return s.handleFragLoadError(e)}))}if(!e.url||this.loadedEndOfParts(u,r))return Promise.resolve(null)}}this.log("Loading fragment "+e.sn+" cc: "+e.cc+" "+(t?"of ["+t.startSN+"-"+t.endSN+"] ":"")+("[stream-controller]"===this.logPrefix?"level":"track")+": "+e.level+", target: "+parseFloat(r.toFixed(3))),(0,i.isFiniteNumber)(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=E.FRAG_LOADING,this.hls.trigger(l.Events.FRAG_LOADING,{frag:e,targetBufferTime:r}),this.throwIfFragContextChanged("FRAG_LOADING");var h=this.config.progressive;return h&&o?o.then((function(t){return!t||s.fragContextChanged(null==t?void 0:t.frag)?null:s.fragmentLoader.load(e,n)})).catch((function(e){return s.handleFragLoadError(e)})):Promise.all([this.fragmentLoader.load(e,h?n:void 0),o]).then((function(e){var t=e[0];return!h&&t&&n&&n(t),t})).catch((function(e){return s.handleFragLoadError(e)}))},t.throwIfFragContextChanged=function throwIfFragContextChanged(e){if(null===this.fragCurrent)throw new Error("frag load aborted, context changed in "+e)},t.doFragPartsLoad=function doFragPartsLoad(e,t,r,i){var n=this;return new Promise((function(a,s){var o=[];!function loadPartIndex(r){var u=t[r];n.fragmentLoader.loadPart(e,u,i).then((function(i){o[u.index]=i;var s=i.part;n.hls.trigger(l.Events.FRAG_LOADED,i);var d=t[r+1];if(!d||d.fragment!==e)return a({frag:e,part:s,partsLoaded:o});loadPartIndex(r+1)})).catch(s)}(r)}))},t.handleFragLoadError=function handleFragLoadError(e){if("data"in e){var t=e.data;e.data&&t.details===u.ErrorDetails.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(l.Events.ERROR,t)}else this.hls.trigger(l.Events.ERROR,{type:u.ErrorTypes.OTHER_ERROR,details:u.ErrorDetails.INTERNAL_EXCEPTION,err:e,fatal:!0});return null},t._handleTransmuxerFlush=function _handleTransmuxerFlush(e){var t=this.getCurrentContext(e);if(t&&this.state===E.PARSING){var r=t.frag,i=t.part,n=t.level,a=self.performance.now();r.stats.parsing.end=a,i&&(i.stats.parsing.end=a),this.updateLevelTiming(r,i,n,e.partial)}else this.fragCurrent||this.state===E.STOPPED||this.state===E.ERROR||(this.state=E.IDLE)},t.getCurrentContext=function getCurrentContext(e){var t=this.levels,r=e.level,i=e.sn,n=e.part;if(!t||!t[r])return this.warn("Levels object was unset while buffering fragment "+i+" of level "+r+". The current chunk will not be buffered."),null;var a=t[r],s=n>-1?(0,g.getPartWith)(a,i,n):null,o=s?s.fragment:(0,g.getFragmentWithSN)(a,i,this.fragCurrent);return o?{frag:o,part:s,level:a}:null},t.bufferFragmentData=function bufferFragmentData(e,t,r,i){if(e&&this.state===E.PARSING){var n=e.data1,a=e.data2,s=n;if(n&&a&&(s=(0,c.appendUint8Array)(n,a)),s&&s.length){var o={type:e.type,frag:t,part:r,chunkMeta:i,parent:t.type,data:s};this.hls.trigger(l.Events.BUFFER_APPENDING,o),e.dropped&&e.independent&&!r&&this.flushBufferGap(t)}}},t.flushBufferGap=function flushBufferGap(e){var t=this.media;if(t)if(s.BufferHelper.isBuffered(t,t.currentTime)){var r=t.currentTime,i=s.BufferHelper.bufferInfo(t,r,0),n=e.duration,a=Math.min(2*this.config.maxFragLookUpTolerance,.25*n),o=Math.max(Math.min(e.start-a,i.end-a),r+a);e.start-o>a&&this.flushMainBuffer(o,e.start)}else this.flushMainBuffer(0,e.start)},t.getFwdBufferInfo=function getFwdBufferInfo(e,t){var r=this.config,n=this.getLoadPosition();if(!(0,i.isFiniteNumber)(n))return null;var a=s.BufferHelper.bufferInfo(e,n,r.maxBufferHole);if(0===a.len&&void 0!==a.nextStart){var o=this.fragmentTracker.getBufferedFrag(n,t);if(o&&a.nextStart<o.end)return s.BufferHelper.bufferInfo(e,n,Math.max(a.nextStart,r.maxBufferHole))}return a},t.getMaxBufferLength=function getMaxBufferLength(e){var t,r=this.config;return t=e?Math.max(8*r.maxBufferSize/e,r.maxBufferLength):r.maxBufferLength,Math.min(t,r.maxMaxBufferLength)},t.reduceMaxBufferLength=function reduceMaxBufferLength(e){var t=this.config,r=e||t.maxBufferLength;return t.maxMaxBufferLength>=r&&(t.maxMaxBufferLength/=2,this.warn("Reduce max buffer length to "+t.maxMaxBufferLength+"s"),!0)},t.getNextFragment=function getNextFragment(e,t){var r=t.fragments,i=r.length;if(!i)return null;var n,a=this.config,s=r[0].start;if(t.live){var o=a.initialLiveManifestSize;if(i<o)return this.warn("Not enough fragments to start playback (have: "+i+", need: "+o+")"),null;t.PTSKnown||this.startFragRequested||-1!==this.startPosition||(n=this.getInitialLiveFragment(t,r),this.startPosition=n?this.hls.liveSyncPosition||n.start:e)}else e<=s&&(n=r[0]);if(!n){var l=a.lowLatencyMode?t.partEnd:t.fragmentEnd;n=this.getFragmentAtPosition(e,l,t)}return this.mapToInitFragWhenRequired(n)},t.mapToInitFragWhenRequired=function mapToInitFragWhenRequired(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment},t.getNextPart=function getNextPart(e,t,r){for(var i=-1,n=!1,a=!0,s=0,o=e.length;s<o;s++){var l=e[s];if(a=a&&!l.independent,i>-1&&r<l.start)break;var u=l.loaded;u?i=-1:(n||l.independent||a)&&l.fragment===t&&(i=s),n=u}return i},t.loadedEndOfParts=function loadedEndOfParts(e,t){var r=e[e.length-1];return r&&t>r.start&&r.loaded},t.getInitialLiveFragment=function getInitialLiveFragment(e,t){var r=this.fragPrevious,i=null;if(r){if(e.hasProgramDateTime&&(this.log("Live playlist, switching playlist, load frag with same PDT: "+r.programDateTime),i=(0,f.findFragmentByPDT)(t,r.endProgramDateTime,this.config.maxFragLookUpTolerance)),!i){var n=r.sn+1;if(n>=e.startSN&&n<=e.endSN){var a=t[n-e.startSN];r.cc===a.cc&&(i=a,this.log("Live playlist, switching playlist, load frag with next SN: "+i.sn))}i||(i=(0,f.findFragWithCC)(t,r.cc))&&this.log("Live playlist, switching playlist, load frag with same CC: "+i.sn)}}else{var s=this.hls.liveSyncPosition;null!==s&&(i=this.getFragmentAtPosition(s,this.bitrateTest?e.fragmentEnd:e.edge,e))}return i},t.getFragmentAtPosition=function getFragmentAtPosition(e,t,r){var i,n=this.config,s=this.fragPrevious,o=r.fragments,l=r.endSN,u=r.fragmentHint,d=n.maxFragLookUpTolerance,c=!!(n.lowLatencyMode&&r.partList&&u);if(c&&u&&!this.bitrateTest&&(o=o.concat(u),l=u.sn),e<t){var h=e>t-d?0:d;i=(0,f.findFragmentByPTS)(s,o,e,h)}else i=o[o.length-1];if(i){var g=i.sn-r.startSN;if(this.fragmentTracker.getState(i)===a.FragmentState.OK&&(s=i),s&&i.sn===s.sn&&!c)if(s&&i.level===s.level){var p=o[g+1];i.sn<l&&this.fragmentTracker.getState(p)!==a.FragmentState.OK?(this.log("SN "+i.sn+" just loaded, load next one: "+p.sn),i=p):i=null}}return i},t.synchronizeToLiveEdge=function synchronizeToLiveEdge(e){var t=this.config,r=this.media;if(r){var i=this.hls.liveSyncPosition,n=r.currentTime,a=e.fragments[0].start,s=e.edge,o=n>=a-t.maxFragLookUpTolerance&&n<=s;if(null!==i&&r.duration>i&&(n<i||!o)){var l=void 0!==t.liveMaxLatencyDuration?t.liveMaxLatencyDuration:t.liveMaxLatencyDurationCount*e.targetduration;(!o&&r.readyState<4||n<s-l)&&(this.loadedmetadata||(this.nextLoadPosition=i),r.readyState&&(this.warn("Playback: "+n.toFixed(3)+" is located too far from the end of live sliding playlist: "+s+", reset currentTime to : "+i.toFixed(3)),r.currentTime=i))}}},t.alignPlaylists=function alignPlaylists(e,t){var r=this.levels,n=this.levelLastLoaded,a=this.fragPrevious,s=null!==n?r[n]:null,o=e.fragments.length;if(!o)return this.warn("No fragments in live playlist"),0;var l=e.fragments[0].start,u=!t,d=e.alignedSliding&&(0,i.isFiniteNumber)(l);if(u||!d&&!l){(0,h.alignStream)(a,s,e);var c=e.fragments[0].start;return this.log("Live playlist sliding: "+c.toFixed(2)+" start-sn: "+(t?t.startSN:"na")+"->"+e.startSN+" prev-sn: "+(a?a.sn:"na")+" fragments: "+o),c}return l},t.waitForCdnTuneIn=function waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)},t.setStartPosition=function setStartPosition(e,t){var r=this.startPosition;if(r<t&&(r=-1),-1===r||-1===this.lastCurrentTime){var n=e.startTimeOffset;(0,i.isFiniteNumber)(n)?(r=t+n,n<0&&(r+=e.totalduration),r=Math.min(Math.max(t,r),t+e.totalduration),this.log("Start time offset "+n+" found in playlist, adjust startPosition to "+r),this.startPosition=r):e.live?r=this.hls.liveSyncPosition||t:this.startPosition=r=0,this.lastCurrentTime=r}this.nextLoadPosition=r},t.getLoadPosition=function getLoadPosition(){var e=this.media,t=0;return this.loadedmetadata&&e?t=e.currentTime:this.nextLoadPosition&&(t=this.nextLoadPosition),t},t.handleFragLoadAborted=function handleFragLoadAborted(e,t){this.transmuxer&&"initSegment"!==e.sn&&e.stats.aborted&&(this.warn("Fragment "+e.sn+(t?" part"+t.index:"")+" of level "+e.level+" was aborted"),this.resetFragmentLoading(e))},t.resetFragmentLoading=function resetFragmentLoading(e){this.fragCurrent&&(this.fragContextChanged(e)||this.state===E.FRAG_LOADING_WAITING_RETRY)||(this.state=E.IDLE)},t.onFragmentOrKeyLoadError=function onFragmentOrKeyLoadError(e,t){if(t.fatal)return this.stopLoad(),void(this.state=E.ERROR);var r=this.config;if(t.chunkMeta){var i=this.getCurrentContext(t.chunkMeta);i&&(t.frag=i.frag,t.levelRetry=!0,this.fragLoadError=r.fragLoadingMaxRetry)}var n=t.frag;if(n&&n.type===e){var a=this.fragCurrent;if(console.assert(a&&n.sn===a.sn&&n.level===a.level&&n.urlId===a.urlId,"Frag load error must match current frag to retry"),this.fragLoadError+1<=r.fragLoadingMaxRetry){this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition);var s=Math.min(Math.pow(2,this.fragLoadError)*r.fragLoadingRetryDelay,r.fragLoadingMaxRetryTimeout);this.warn("Fragment "+n.sn+" of "+e+" "+n.level+" failed to load, retrying in "+s+"ms"),this.retryDate=self.performance.now()+s,this.fragLoadError++,this.state=E.FRAG_LOADING_WAITING_RETRY}else t.levelRetry?(e===y.PlaylistLevelType.AUDIO&&(this.fragCurrent=null),this.fragLoadError=0,this.state=E.IDLE):(o.logger.error(t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.hls.stopLoad(),this.state=E.ERROR)}},t.afterBufferFlushed=function afterBufferFlushed(e,t,r){if(e){var i=s.BufferHelper.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,i,r),this.state===E.ENDED&&this.resetLoadingState()}},t.resetLoadingState=function resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=E.IDLE},t.resetStartWhenNotLoaded=function resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;var t=this.levels?this.levels[e].details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}},t.updateLevelTiming=function updateLevelTiming(e,t,r,i){var n=this,a=r.details;console.assert(!!a,"level.details must be defined"),Object.keys(e.elementaryStreams).reduce((function(t,s){var o=e.elementaryStreams[s];if(o){var u=o.endPTS-o.startPTS;if(u<=0)return n.warn("Could not parse fragment "+e.sn+" "+s+" duration reliably ("+u+")"),t||!1;var d=i?0:(0,g.updateFragPTSDTS)(a,e,o.startPTS,o.endPTS,o.startDTS,o.endDTS);return n.hls.trigger(l.Events.LEVEL_PTS_UPDATED,{details:a,level:r,drift:d,type:s,frag:e,start:o.startPTS,end:o.endPTS}),!0}return t}),!1)||(this.warn("Found no media in fragment "+e.sn+" of level "+r.id+" resetting transmuxer to fallback to playlist timing"),this.resetTransmuxer()),this.state=E.PARSED,this.hls.trigger(l.Events.FRAG_PARSED,{frag:e,part:t})},t.resetTransmuxer=function resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(BaseStreamController,[{key:"state",get:function get(){return this._state},set:function set(e){var t=this._state;t!==e&&(this._state=e,this.log(t+"->"+e))}}]),BaseStreamController}(n.default)},"./src/controller/buffer-controller.ts":
|
|
20
|
-
/*!*********************************************!*\
|
|
21
|
-
!*** ./src/controller/buffer-controller.ts ***!
|
|
22
|
-
\*********************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../events */"./src/events.ts"),a=r(/*! ../utils/logger */"./src/utils/logger.ts"),s=r(/*! ../errors */"./src/errors.ts"),o=r(/*! ../utils/buffer-helper */"./src/utils/buffer-helper.ts"),l=r(/*! ../utils/mediasource-helper */"./src/utils/mediasource-helper.ts"),u=r(/*! ../loader/fragment */"./src/loader/fragment.ts"),d=r(/*! ./buffer-operation-queue */"./src/controller/buffer-operation-queue.ts"),c=(0,l.getMediaSource)(),h=/([ha]vc.)(?:\.[^.,]+)+/,f=function(){function BufferController(e){var t=this;this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendError=0,this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this._onMediaSourceOpen=function(){var e=t.hls,r=t.media,i=t.mediaSource;a.logger.log("[buffer-controller]: Media source opened"),r&&(t.updateMediaElementDuration(),e.trigger(n.Events.MEDIA_ATTACHED,{media:r})),i&&i.removeEventListener("sourceopen",t._onMediaSourceOpen),t.checkPendingTracks()},this._onMediaSourceClose=function(){a.logger.log("[buffer-controller]: Media source closed")},this._onMediaSourceEnded=function(){a.logger.log("[buffer-controller]: Media source ended")},this.hls=e,this._initSourceBuffer(),this.registerListeners()}var e=BufferController.prototype;return e.hasSourceTypes=function hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0},e.destroy=function destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null},e.registerListeners=function registerListeners(){var e=this.hls;e.on(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(n.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(n.Events.BUFFER_RESET,this.onBufferReset,this),e.on(n.Events.BUFFER_APPENDING,this.onBufferAppending,this),e.on(n.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.on(n.Events.BUFFER_EOS,this.onBufferEos,this),e.on(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(n.Events.FRAG_PARSED,this.onFragParsed,this),e.on(n.Events.FRAG_CHANGED,this.onFragChanged,this)},e.unregisterListeners=function unregisterListeners(){var e=this.hls;e.off(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(n.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(n.Events.BUFFER_RESET,this.onBufferReset,this),e.off(n.Events.BUFFER_APPENDING,this.onBufferAppending,this),e.off(n.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.off(n.Events.BUFFER_EOS,this.onBufferEos,this),e.off(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(n.Events.FRAG_PARSED,this.onFragParsed,this),e.off(n.Events.FRAG_CHANGED,this.onFragChanged,this)},e._initSourceBuffer=function _initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new d.default(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.lastMpegAudioChunk=null},e.onManifestParsed=function onManifestParsed(e,t){var r=2;(t.audio&&!t.video||!t.altAudio)&&(r=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=r,this.details=null,a.logger.log(this.bufferCodecEventsExpected+" bufferCodec event(s) expected")},e.onMediaAttaching=function onMediaAttaching(e,t){var r=this.media=t.media;if(r&&c){var i=this.mediaSource=new c;i.addEventListener("sourceopen",this._onMediaSourceOpen),i.addEventListener("sourceended",this._onMediaSourceEnded),i.addEventListener("sourceclose",this._onMediaSourceClose),r.src=self.URL.createObjectURL(i),this._objectUrl=r.src}},e.onMediaDetaching=function onMediaDetaching(){var e=this.media,t=this.mediaSource,r=this._objectUrl;if(t){if(a.logger.log("[buffer-controller]: media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){a.logger.warn("[buffer-controller]: onMediaDetaching: "+e.message+" while calling endOfStream")}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),e&&(r&&self.URL.revokeObjectURL(r),e.src===r?(e.removeAttribute("src"),e.load()):a.logger.warn("[buffer-controller]: media.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(n.Events.MEDIA_DETACHED,void 0)},e.onBufferReset=function onBufferReset(){var e=this;this.getSourceBufferTypes().forEach((function(t){var r=e.sourceBuffer[t];try{r&&(e.removeBufferListeners(t),e.mediaSource&&e.mediaSource.removeSourceBuffer(r),e.sourceBuffer[t]=void 0)}catch(e){a.logger.warn("[buffer-controller]: Failed to reset the "+t+" buffer",e)}})),this._initSourceBuffer()},e.onBufferCodecs=function onBufferCodecs(e,t){var r=this,i=this.getSourceBufferTypes().length;Object.keys(t).forEach((function(e){if(i){var n=r.tracks[e];if(n&&"function"==typeof n.buffer.changeType){var s=t[e],o=s.id,l=s.codec,u=s.levelCodec,d=s.container,c=s.metadata,f=(n.levelCodec||n.codec).replace(h,"$1"),g=(u||l).replace(h,"$1");if(f!==g){var p=d+";codecs="+(u||l);r.appendChangeType(e,p),a.logger.log("[buffer-controller]: switching codec "+f+" to "+g),r.tracks[e]={buffer:n.buffer,codec:l,container:d,levelCodec:u,metadata:c,id:o}}}}else r.pendingTracks[e]=t[e]})),i||(this.bufferCodecEventsExpected=Math.max(this.bufferCodecEventsExpected-1,0),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks())},e.appendChangeType=function appendChangeType(e,t){var r=this,i=this.operationQueue,n={execute:function execute(){var n=r.sourceBuffer[e];n&&(a.logger.log("[buffer-controller]: changing "+e+" sourceBuffer type to "+t),n.changeType(t)),i.shiftAndExecuteNext(e)},onStart:function onStart(){},onComplete:function onComplete(){},onError:function onError(t){a.logger.warn("[buffer-controller]: Failed to change "+e+" SourceBuffer type",t)}};i.append(n,e)},e.onBufferAppending=function onBufferAppending(e,t){var r=this,i=this.hls,l=this.operationQueue,u=this.tracks,d=t.data,c=t.type,h=t.frag,f=t.part,g=t.chunkMeta,p=g.buffering[c],v=self.performance.now();p.start=v;var m=h.stats.buffering,y=f?f.stats.buffering:null;0===m.start&&(m.start=v),y&&0===y.start&&(y.start=v);var E=u.audio,T=!1;"audio"===c&&"audio/mpeg"===(null==E?void 0:E.container)&&(T=!this.lastMpegAudioChunk||1===g.id||this.lastMpegAudioChunk.sn!==g.sn,this.lastMpegAudioChunk=g);var S=h.start,b={execute:function execute(){if(p.executeStart=self.performance.now(),T){var e=r.sourceBuffer[c];if(e){var t=S-e.timestampOffset;Math.abs(t)>=.1&&(a.logger.log("[buffer-controller]: Updating audio SourceBuffer timestampOffset to "+S+" (delta: "+t+") sn: "+h.sn+")"),e.timestampOffset=S)}}r.appendExecutor(d,c)},onStart:function onStart(){},onComplete:function onComplete(){var e=self.performance.now();p.executeEnd=p.end=e,0===m.first&&(m.first=e),y&&0===y.first&&(y.first=e);var t=r.sourceBuffer,i={};for(var a in t)i[a]=o.BufferHelper.getBuffered(t[a]);r.appendError=0,r.hls.trigger(n.Events.BUFFER_APPENDED,{type:c,frag:h,part:f,chunkMeta:g,parent:h.type,timeRanges:i})},onError:function onError(e){a.logger.error("[buffer-controller]: Error encountered while trying to append to the "+c+" SourceBuffer",e);var t={type:s.ErrorTypes.MEDIA_ERROR,parent:h.type,details:s.ErrorDetails.BUFFER_APPEND_ERROR,err:e,fatal:!1};e.code===DOMException.QUOTA_EXCEEDED_ERR?t.details=s.ErrorDetails.BUFFER_FULL_ERROR:(r.appendError++,t.details=s.ErrorDetails.BUFFER_APPEND_ERROR,r.appendError>i.config.appendErrorMaxRetry&&(a.logger.error("[buffer-controller]: Failed "+i.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),t.fatal=!0,i.stopLoad())),i.trigger(n.Events.ERROR,t)}};l.append(b,c)},e.onBufferFlushing=function onBufferFlushing(e,t){var r=this,i=this.operationQueue,s=function flushOperation(e){return{execute:r.removeExecutor.bind(r,e,t.startOffset,t.endOffset),onStart:function onStart(){},onComplete:function onComplete(){r.hls.trigger(n.Events.BUFFER_FLUSHED,{type:e})},onError:function onError(t){a.logger.warn("[buffer-controller]: Failed to remove from "+e+" SourceBuffer",t)}}};t.type?i.append(s(t.type),t.type):this.getSourceBufferTypes().forEach((function(e){i.append(s(e),e)}))},e.onFragParsed=function onFragParsed(e,t){var r=this,i=t.frag,s=t.part,o=[],l=s?s.elementaryStreams:i.elementaryStreams;l[u.ElementaryStreamTypes.AUDIOVIDEO]?o.push("audiovideo"):(l[u.ElementaryStreamTypes.AUDIO]&&o.push("audio"),l[u.ElementaryStreamTypes.VIDEO]&&o.push("video"));0===o.length&&a.logger.warn("Fragments must have at least one ElementaryStreamType set. type: "+i.type+" level: "+i.level+" sn: "+i.sn),this.blockBuffers((function onUnblocked(){var e=self.performance.now();i.stats.buffering.end=e,s&&(s.stats.buffering.end=e);var t=s?s.stats:i.stats;r.hls.trigger(n.Events.FRAG_BUFFERED,{frag:i,part:s,stats:t,id:i.type})}),o)},e.onFragChanged=function onFragChanged(e,t){this.flushBackBuffer()},e.onBufferEos=function onBufferEos(e,t){var r=this;this.getSourceBufferTypes().reduce((function(e,i){var n=r.sourceBuffer[i];return!n||t.type&&t.type!==i||(n.ending=!0,n.ended||(n.ended=!0,a.logger.log("[buffer-controller]: "+i+" sourceBuffer now EOS"))),e&&!(n&&!n.ended)}),!0)&&(a.logger.log("[buffer-controller]: Queueing mediaSource.endOfStream()"),this.blockBuffers((function(){r.getSourceBufferTypes().forEach((function(e){var t=r.sourceBuffer[e];t&&(t.ending=!1)}));var e=r.mediaSource;e&&"open"===e.readyState?(a.logger.log("[buffer-controller]: Calling mediaSource.endOfStream()"),e.endOfStream()):e&&a.logger.info("[buffer-controller]: Could not call mediaSource.endOfStream(). mediaSource.readyState: "+e.readyState)})))},e.onLevelUpdated=function onLevelUpdated(e,t){var r=t.details;r.fragments.length&&(this.details=r,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())},e.flushBackBuffer=function flushBackBuffer(){var e=this.hls,t=this.details,r=this.media,s=this.sourceBuffer;if(r&&null!==t){var l=this.getSourceBufferTypes();if(l.length){var u=t.live&&null!==e.config.liveBackBufferLength?e.config.liveBackBufferLength:e.config.backBufferLength;if((0,i.isFiniteNumber)(u)&&!(u<0)){var d=r.currentTime,c=t.levelTargetDuration,h=Math.max(u,c),f=Math.floor(d/c)*c-h;l.forEach((function(r){var i=s[r];if(i){var l=o.BufferHelper.getBuffered(i);if(l.length>0&&f>l.start(0)){if(e.trigger(n.Events.BACK_BUFFER_REACHED,{bufferEnd:f}),t.live)e.trigger(n.Events.LIVE_BACK_BUFFER_REACHED,{bufferEnd:f});else if(i.ended&&l.end(l.length-1)-d<2*c)return void a.logger.info("[buffer-controller]: Cannot flush "+r+" back buffer while SourceBuffer is in ended state");e.trigger(n.Events.BUFFER_FLUSHING,{startOffset:0,endOffset:f,type:r})}}}))}}}},e.updateMediaElementDuration=function updateMediaElementDuration(){if(this.details&&this.media&&this.mediaSource&&"open"===this.mediaSource.readyState){var e=this.details,t=this.hls,r=this.media,n=this.mediaSource,s=e.fragments[0].start+e.totalduration,o=r.duration,l=(0,i.isFiniteNumber)(n.duration)?n.duration:0;e.live&&t.config.liveDurationInfinity?(a.logger.log("[buffer-controller]: Media Source duration is set to Infinity"),n.duration=1/0,this.updateSeekableRange(e)):(s>l&&s>o||!(0,i.isFiniteNumber)(o))&&(a.logger.log("[buffer-controller]: Updating Media Source duration to "+s.toFixed(3)),n.duration=s)}},e.updateSeekableRange=function updateSeekableRange(e){var t=this.mediaSource,r=e.fragments;if(r.length&&e.live&&null!=t&&t.setLiveSeekableRange){var i=Math.max(0,r[0].start),n=Math.max(i,i+e.totalduration);t.setLiveSeekableRange(i,n)}},e.checkPendingTracks=function checkPendingTracks(){var e=this.bufferCodecEventsExpected,t=this.operationQueue,r=this.pendingTracks,i=Object.keys(r).length;if(i&&!e||2===i){this.createSourceBuffers(r),this.pendingTracks={};var a=this.getSourceBufferTypes();if(0===a.length)return void this.hls.trigger(n.Events.ERROR,{type:s.ErrorTypes.MEDIA_ERROR,details:s.ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,reason:"could not create source buffer for media codec(s)"});a.forEach((function(e){t.executeNext(e)}))}},e.createSourceBuffers=function createSourceBuffers(e){var t=this.sourceBuffer,r=this.mediaSource;if(!r)throw Error("createSourceBuffers called when mediaSource was null");var i=0;for(var o in e)if(!t[o]){var l=e[o];if(!l)throw Error("source buffer exists for track "+o+", however track does not");var u=l.levelCodec||l.codec,d=l.container+";codecs="+u;a.logger.log("[buffer-controller]: creating sourceBuffer("+d+")");try{var c=t[o]=r.addSourceBuffer(d),h=o;this.addBufferListener(h,"updatestart",this._onSBUpdateStart),this.addBufferListener(h,"updateend",this._onSBUpdateEnd),this.addBufferListener(h,"error",this._onSBUpdateError),this.tracks[o]={buffer:c,codec:u,container:l.container,levelCodec:l.levelCodec,metadata:l.metadata,id:l.id},i++}catch(e){a.logger.error("[buffer-controller]: error while trying to add sourceBuffer: "+e.message),this.hls.trigger(n.Events.ERROR,{type:s.ErrorTypes.MEDIA_ERROR,details:s.ErrorDetails.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,mimeType:d})}}i&&this.hls.trigger(n.Events.BUFFER_CREATED,{tracks:this.tracks})},e._onSBUpdateStart=function _onSBUpdateStart(e){this.operationQueue.current(e).onStart()},e._onSBUpdateEnd=function _onSBUpdateEnd(e){var t=this.operationQueue;t.current(e).onComplete(),t.shiftAndExecuteNext(e)},e._onSBUpdateError=function _onSBUpdateError(e,t){a.logger.error("[buffer-controller]: "+e+" SourceBuffer error",t),this.hls.trigger(n.Events.ERROR,{type:s.ErrorTypes.MEDIA_ERROR,details:s.ErrorDetails.BUFFER_APPENDING_ERROR,fatal:!1});var r=this.operationQueue.current(e);r&&r.onError(t)},e.removeExecutor=function removeExecutor(e,t,r){var n=this.media,s=this.mediaSource,o=this.operationQueue,l=this.sourceBuffer[e];if(!n||!s||!l)return a.logger.warn("[buffer-controller]: Attempting to remove from the "+e+" SourceBuffer, but it does not exist"),void o.shiftAndExecuteNext(e);var u=(0,i.isFiniteNumber)(n.duration)?n.duration:1/0,d=(0,i.isFiniteNumber)(s.duration)?s.duration:1/0,c=Math.max(0,t),h=Math.min(r,u,d);h>c&&!l.ending?(l.ended=!1,a.logger.log("[buffer-controller]: Removing ["+c+","+h+"] from the "+e+" SourceBuffer"),console.assert(!l.updating,e+" sourceBuffer must not be updating"),l.remove(c,h)):o.shiftAndExecuteNext(e)},e.appendExecutor=function appendExecutor(e,t){var r=this.operationQueue,i=this.sourceBuffer[t];if(!i)return a.logger.warn("[buffer-controller]: Attempting to append to the "+t+" SourceBuffer, but it does not exist"),void r.shiftAndExecuteNext(t);i.ended=!1,console.assert(!i.updating,t+" sourceBuffer must not be updating"),i.appendBuffer(e)},e.blockBuffers=function blockBuffers(e,t){var r=this;if(void 0===t&&(t=this.getSourceBufferTypes()),!t.length)return a.logger.log("[buffer-controller]: Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);var i=this.operationQueue,n=t.map((function(e){return i.appendBlocker(e)}));Promise.all(n).then((function(){e(),t.forEach((function(e){var t=r.sourceBuffer[e];t&&t.updating||i.shiftAndExecuteNext(e)}))}))},e.getSourceBufferTypes=function getSourceBufferTypes(){return Object.keys(this.sourceBuffer)},e.addBufferListener=function addBufferListener(e,t,r){var i=this.sourceBuffer[e];if(i){var n=r.bind(this,e);this.listeners[e].push({event:t,listener:n}),i.addEventListener(t,n)}},e.removeBufferListeners=function removeBufferListeners(e){var t=this.sourceBuffer[e];t&&this.listeners[e].forEach((function(e){t.removeEventListener(e.event,e.listener)}))},BufferController}()},"./src/controller/buffer-operation-queue.ts":
|
|
23
|
-
/*!**************************************************!*\
|
|
24
|
-
!*** ./src/controller/buffer-operation-queue.ts ***!
|
|
25
|
-
\**************************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});var i=r(/*! ../utils/logger */"./src/utils/logger.ts"),n=function(){function BufferOperationQueue(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}var e=BufferOperationQueue.prototype;return e.append=function append(e,t){var r=this.queues[t];r.push(e),1===r.length&&this.buffers[t]&&this.executeNext(t)},e.insertAbort=function insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)},e.appendBlocker=function appendBlocker(e){var t,r=new Promise((function(e){t=e})),i={execute:t,onStart:function onStart(){},onComplete:function onComplete(){},onError:function onError(){}};return this.append(i,e),r},e.executeNext=function executeNext(e){var t=this.buffers,r=this.queues,n=t[e],a=r[e];if(a.length){var s=a[0];try{s.execute()}catch(t){i.logger.warn("[buffer-operation-queue]: Unhandled exception executing the current operation"),s.onError(t),n&&n.updating||(a.shift(),this.executeNext(e))}}},e.shiftAndExecuteNext=function shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)},e.current=function current(e){return this.queues[e][0]},BufferOperationQueue}()},"./src/controller/cap-level-controller.ts":
|
|
26
|
-
/*!************************************************!*\
|
|
27
|
-
!*** ./src/controller/cap-level-controller.ts ***!
|
|
28
|
-
\************************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});var i=r(/*! ../events */"./src/events.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}const n=function(){function CapLevelController(e){this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.hls=void 0,this.streamController=void 0,this.clientRect=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}var e=CapLevelController.prototype;return e.setStreamController=function setStreamController(e){this.streamController=e},e.destroy=function destroy(){this.unregisterListener(),this.hls.config.capLevelToPlayerSize&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null},e.registerListeners=function registerListeners(){var e=this.hls;e.on(i.Events.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(i.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(i.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(i.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.on(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this)},e.unregisterListener=function unregisterListener(){var e=this.hls;e.off(i.Events.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(i.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(i.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(i.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.off(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this)},e.onFpsDropLevelCapping=function onFpsDropLevelCapping(e,t){CapLevelController.isLevelAllowed(t.droppedLevel,this.restrictedLevels)&&this.restrictedLevels.push(t.droppedLevel)},e.onMediaAttaching=function onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null},e.onManifestParsed=function onManifestParsed(e,t){var r=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,r.config.capLevelToPlayerSize&&t.video&&this.startCapping()},e.onBufferCodecs=function onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()},e.onMediaDetaching=function onMediaDetaching(){this.stopCapping()},e.detectPlayerSize=function detectPlayerSize(){if(this.media&&this.mediaHeight>0&&this.mediaWidth>0){var e=this.hls.levels;if(e.length){var t=this.hls;t.autoLevelCapping=this.getMaxLevel(e.length-1),t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}},e.getMaxLevel=function getMaxLevel(e){var t=this,r=this.hls.levels;if(!r.length)return-1;var i=r.filter((function(r,i){return CapLevelController.isLevelAllowed(i,t.restrictedLevels)&&i<=e}));return this.clientRect=null,CapLevelController.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)},e.startCapping=function startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,this.hls.firstLevel=this.getMaxLevel(this.firstLevel),self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())},e.stopCapping=function stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)},e.getDimensions=function getDimensions(){if(this.clientRect)return this.clientRect;var e=this.media,t={width:0,height:0};if(e){var r=e.getBoundingClientRect();t.width=r.width,t.height=r.height,t.width||t.height||(t.width=r.right-r.left||e.width||0,t.height=r.bottom-r.top||e.height||0)}return this.clientRect=t,t},CapLevelController.isLevelAllowed=function isLevelAllowed(e,t){return void 0===t&&(t=[]),-1===t.indexOf(e)},CapLevelController.getMaxLevelByMediaSize=function getMaxLevelByMediaSize(e,t,r){if(!e||!e.length)return-1;for(var i=function atGreatestBandwidth(e,t){return!t||(e.width!==t.width||e.height!==t.height)},n=e.length-1,a=0;a<e.length;a+=1){var s=e[a];if((s.width>=t||s.height>=r)&&i(s,e[a+1])){n=a;break}}return n},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(CapLevelController,[{key:"mediaWidth",get:function get(){return this.getDimensions().width*this.contentScaleFactor}},{key:"mediaHeight",get:function get(){return this.getDimensions().height*this.contentScaleFactor}},{key:"contentScaleFactor",get:function get(){var e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}}]),CapLevelController}()},"./src/controller/cmcd-controller.ts":
|
|
29
|
-
/*!*******************************************!*\
|
|
30
|
-
!*** ./src/controller/cmcd-controller.ts ***!
|
|
31
|
-
\*******************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var i=r(/*! ../events */"./src/events.ts"),n=r(/*! ../types/cmcd */"./src/types/cmcd.ts"),a=r(/*! ../utils/buffer-helper */"./src/utils/buffer-helper.ts"),s=r(/*! ../utils/logger */"./src/utils/logger.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _createForOfIteratorHelperLoose(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function _unsupportedIterableToArray(e,t){if(!e)return;if("string"==typeof e)return _arrayLikeToArray(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _arrayLikeToArray(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var i=0;return function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,i=new Array(t);r<t;r++)i[r]=e[r];return i}function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}var o=function(){function CMCDController(e){var t=this;this.hls=void 0,this.config=void 0,this.media=void 0,this.sid=void 0,this.cid=void 0,this.useHeaders=!1,this.initialized=!1,this.starved=!1,this.buffering=!0,this.audioBuffer=void 0,this.videoBuffer=void 0,this.onWaiting=function(){t.initialized&&(t.starved=!0),t.buffering=!0},this.onPlaying=function(){t.initialized||(t.initialized=!0),t.buffering=!1},this.applyPlaylistData=function(e){try{t.apply(e,{ot:n.CMCDObjectType.MANIFEST,su:!t.initialized})}catch(e){s.logger.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=function(e){try{var r=e.frag,i=t.hls.levels[r.level],a=t.getObjectType(r),o={d:1e3*r.duration,ot:a};a!==n.CMCDObjectType.VIDEO&&a!==n.CMCDObjectType.AUDIO&&a!=n.CMCDObjectType.MUXED||(o.br=i.bitrate/1e3,o.tb=t.getTopBandwidth(a)/1e3,o.bl=t.getBufferLength(a)),t.apply(e,o)}catch(e){s.logger.warn("Could not generate segment CMCD data.",e)}},this.hls=e;var r=this.config=e.config,i=r.cmcd;null!=i&&(r.pLoader=this.createPlaylistLoader(),r.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||CMCDController.uuid(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.registerListeners())}var e=CMCDController.prototype;return e.registerListeners=function registerListeners(){var e=this.hls;e.on(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(i.Events.MEDIA_DETACHED,this.onMediaDetached,this),e.on(i.Events.BUFFER_CREATED,this.onBufferCreated,this)},e.unregisterListeners=function unregisterListeners(){var e=this.hls;e.off(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(i.Events.MEDIA_DETACHED,this.onMediaDetached,this),e.off(i.Events.BUFFER_CREATED,this.onBufferCreated,this),this.onMediaDetached()},e.destroy=function destroy(){this.unregisterListeners(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null},e.onMediaAttached=function onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)},e.onMediaDetached=function onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)},e.onBufferCreated=function onBufferCreated(e,t){var r,i;this.audioBuffer=null===(r=t.tracks.audio)||void 0===r?void 0:r.buffer,this.videoBuffer=null===(i=t.tracks.video)||void 0===i?void 0:i.buffer},e.createData=function createData(){var e;return{v:n.CMCDVersion,sf:n.CMCDStreamingFormat.HLS,sid:this.sid,cid:this.cid,pr:null===(e=this.media)||void 0===e?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}},e.apply=function apply(e,t){void 0===t&&(t={}),_extends(t,this.createData());var r=t.ot===n.CMCDObjectType.INIT||t.ot===n.CMCDObjectType.VIDEO||t.ot===n.CMCDObjectType.MUXED;if(this.starved&&r&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering),this.useHeaders){var i=CMCDController.toHeaders(t);if(!Object.keys(i).length)return;e.headers||(e.headers={}),_extends(e.headers,i)}else{var a=CMCDController.toQuery(t);if(!a)return;e.url=CMCDController.appendQueryToUri(e.url,a)}},e.getObjectType=function getObjectType(e){var t=e.type;return"subtitle"===t?n.CMCDObjectType.TIMED_TEXT:"initSegment"===e.sn?n.CMCDObjectType.INIT:"audio"===t?n.CMCDObjectType.AUDIO:"main"===t?this.hls.audioTracks.length?n.CMCDObjectType.VIDEO:n.CMCDObjectType.MUXED:void 0},e.getTopBandwidth=function getTopBandwidth(e){var t,r=0,i=this.hls;if(e===n.CMCDObjectType.AUDIO)t=i.audioTracks;else{var a=i.maxAutoLevel,s=a>-1?a+1:i.levels.length;t=i.levels.slice(0,s)}for(var o,l=_createForOfIteratorHelperLoose(t);!(o=l()).done;){var u=o.value;u.bitrate>r&&(r=u.bitrate)}return r>0?r:NaN},e.getBufferLength=function getBufferLength(e){var t=this.hls.media,r=e===n.CMCDObjectType.AUDIO?this.audioBuffer:this.videoBuffer;return r&&t?1e3*a.BufferHelper.bufferInfo(r,t.currentTime,this.config.maxBufferHole).len:NaN},e.createPlaylistLoader=function createPlaylistLoader(){var e=this.config.pLoader,t=this.applyPlaylistData,r=e||this.config.loader;return function(){function CmcdPlaylistLoader(e){this.loader=void 0,this.loader=new r(e)}var e=CmcdPlaylistLoader.prototype;return e.destroy=function destroy(){this.loader.destroy()},e.abort=function abort(){this.loader.abort()},e.load=function load(e,r,i){t(e),this.loader.load(e,r,i)},_createClass(CmcdPlaylistLoader,[{key:"stats",get:function get(){return this.loader.stats}},{key:"context",get:function get(){return this.loader.context}}]),CmcdPlaylistLoader}()},e.createFragmentLoader=function createFragmentLoader(){var e=this.config.fLoader,t=this.applyFragmentData,r=e||this.config.loader;return function(){function CmcdFragmentLoader(e){this.loader=void 0,this.loader=new r(e)}var e=CmcdFragmentLoader.prototype;return e.destroy=function destroy(){this.loader.destroy()},e.abort=function abort(){this.loader.abort()},e.load=function load(e,r,i){t(e),this.loader.load(e,r,i)},_createClass(CmcdFragmentLoader,[{key:"stats",get:function get(){return this.loader.stats}},{key:"context",get:function get(){return this.loader.context}}]),CmcdFragmentLoader}()},CMCDController.uuid=function uuid(){var e=URL.createObjectURL(new Blob),uuid=e.toString();return URL.revokeObjectURL(e),uuid.slice(uuid.lastIndexOf("/")+1)},CMCDController.serialize=function serialize(e){for(var t,r=[],i=function isValid(e){return!Number.isNaN(e)&&null!=e&&""!==e&&!1!==e},n=function toRounded(e){return Math.round(e)},a=function toHundred(e){return 100*n(e/100)},s={br:n,d:n,bl:a,dl:a,mtp:a,nor:function toUrlSafe(e){return encodeURIComponent(e)},rtp:a,tb:n},o=_createForOfIteratorHelperLoose(Object.keys(e||{}).sort());!(t=o()).done;){var l=t.value,u=e[l];if(i(u)&&!("v"===l&&1===u||"pr"==l&&1===u)){var d=s[l];d&&(u=d(u));var c=typeof u,h=void 0;h="ot"===l||"sf"===l||"st"===l?l+"="+u:"boolean"===c?l:"number"===c?l+"="+u:l+"="+JSON.stringify(u),r.push(h)}}return r.join(",")},CMCDController.toHeaders=function toHeaders(e){for(var t={},r=["Object","Request","Session","Status"],i=[{},{},{},{}],n={br:0,d:0,ot:0,tb:0,bl:1,dl:1,mtp:1,nor:1,nrr:1,su:1,cid:2,pr:2,sf:2,sid:2,st:2,v:2,bs:3,rtp:3},a=0,s=Object.keys(e);a<s.length;a++){var o=s[a];i[null!=n[o]?n[o]:1][o]=e[o]}for(var l=0;l<i.length;l++){var u=CMCDController.serialize(i[l]);u&&(t["CMCD-"+r[l]]=u)}return t},CMCDController.toQuery=function toQuery(e){return"CMCD="+encodeURIComponent(CMCDController.serialize(e))},CMCDController.appendQueryToUri=function appendQueryToUri(e,t){if(!t)return e;var r=e.includes("?")?"&":"?";return""+e+r+t},CMCDController}()},"./src/controller/eme-controller.ts":
|
|
32
|
-
/*!******************************************!*\
|
|
33
|
-
!*** ./src/controller/eme-controller.ts ***!
|
|
34
|
-
\******************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>v});var i=r(/*! ../events */"./src/events.ts"),n=r(/*! ../errors */"./src/errors.ts"),a=r(/*! ../utils/logger */"./src/utils/logger.ts"),s=r(/*! ../utils/mediakeys-helper */"./src/utils/mediakeys-helper.ts"),o=r(/*! ../utils/keysystem-util */"./src/utils/keysystem-util.ts"),l=r(/*! ../utils/numeric-encoding-utils */"./src/utils/numeric-encoding-utils.ts"),u=r(/*! ../loader/level-key */"./src/loader/level-key.ts"),d=r(/*! ../utils/hex */"./src/utils/hex.ts"),c=r(/*! ../utils/mp4-tools */"./src/utils/mp4-tools.ts"),h=r(/*! eventemitter3 */"./node_modules/eventemitter3/index.js"),f=r.n(h);function _wrapNativeSuper(e){var t="function"==typeof Map?new Map:void 0;return(_wrapNativeSuper=function _wrapNativeSuper(e){if(null===e||!function _isNativeFunction(e){return-1!==Function.toString.call(e).indexOf("[native code]")}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,Wrapper)}function Wrapper(){return _construct(e,arguments,_getPrototypeOf(this).constructor)}return Wrapper.prototype=Object.create(e.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(Wrapper,e)})(e)}function _construct(e,t,r){return(_construct=_isNativeReflectConstruct()?Reflect.construct.bind():function _construct(e,t,r){var i=[null];i.push.apply(i,t);var n=new(Function.bind.apply(e,i));return r&&_setPrototypeOf(n,r.prototype),n}).apply(null,arguments)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var g=function(){function EMEController(e){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=EMEController.CDMCleanupPromise?[EMEController.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=a.logger.debug.bind(a.logger,"[eme]"),this.log=a.logger.log.bind(a.logger,"[eme]"),this.warn=a.logger.warn.bind(a.logger,"[eme]"),this.error=a.logger.error.bind(a.logger,"[eme]"),this.hls=e,this.config=e.config,this.registerListeners()}var e=EMEController.prototype;return e.destroy=function destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null},e.registerListeners=function registerListeners(){this.hls.on(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(i.Events.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(i.Events.MANIFEST_LOADED,this.onManifestLoaded,this)},e.unregisterListeners=function unregisterListeners(){this.hls.off(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(i.Events.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(i.Events.MANIFEST_LOADED,this.onManifestLoaded,this)},e.getLicenseServerUrl=function getLicenseServerUrl(e){var t=this.config,r=t.drmSystems,i=t.widevineLicenseUrl,n=r[e];if(n)return n.licenseUrl;if(e===s.KeySystems.WIDEVINE&&i)return i;throw new Error('no license server URL configured for key-system "'+e+'"')},e.getServerCertificateUrl=function getServerCertificateUrl(e){var t=this.config.drmSystems[e];if(t)return t.serverCertificateUrl;this.log('No Server Certificate in config.drmSystems["'+e+'"]')},e.attemptKeySystemAccess=function attemptKeySystemAccess(e){var t=this,r=this.hls.levels,i=function uniqueCodec(e,t,r){return!!e&&r.indexOf(e)===t},a=r.map((function(e){return e.audioCodec})).filter(i),s=r.map((function(e){return e.videoCodec})).filter(i);return a.length+s.length===0&&s.push("avc1.42e01e"),new Promise((function(r,i){!function attempt(e){var o=e.shift();t.getMediaKeysPromise(o,a,s).then((function(e){return r({keySystem:o,mediaKeys:e})})).catch((function(t){e.length?attempt(e):i(t instanceof p?t:new p({type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))}(e)}))},e.requestMediaKeySystemAccess=function requestMediaKeySystemAccess(e,t){var r=this.config.requestMediaKeySystemAccessFunc;if("function"!=typeof r){var i="Configured requestMediaKeySystemAccess is not a function "+r;return null===s.requestMediaKeySystemAccess&&"http:"===self.location.protocol&&(i="navigator.requestMediaKeySystemAccess is not available over insecure protocol "+location.protocol),Promise.reject(new Error(i))}return r(e,t)},e.getMediaKeysPromise=function getMediaKeysPromise(e,t,r){var i=this,n=(0,s.getSupportedMediaKeySystemConfigurations)(e,t,r,this.config.drmSystemOptions),a=this.keySystemAccessPromises[e],o=null==a?void 0:a.keySystemAccess;if(!o){this.log('Requesting encrypted media "'+e+'" key-system access with config: '+JSON.stringify(n)),o=this.requestMediaKeySystemAccess(e,n);var l=this.keySystemAccessPromises[e]={keySystemAccess:o};return o.catch((function(t){i.log('Failed to obtain access to key-system "'+e+'": '+t)})),o.then((function(t){i.log('Access for key-system "'+t.keySystem+'" obtained');var r=i.fetchServerCertificate(e);return i.log('Create media-keys for "'+e+'"'),l.mediaKeys=t.createMediaKeys().then((function(t){return i.log('Media-keys created for "'+e+'"'),r.then((function(r){return r?i.setMediaKeysServerCertificate(t,e,r):t}))})),l.mediaKeys.catch((function(t){i.error('Failed to create media-keys for "'+e+'"}: '+t)})),l.mediaKeys}))}return o.then((function(){return a.mediaKeys}))},e.createMediaKeySessionContext=function createMediaKeySessionContext(e){var t=e.decryptdata,r=e.keySystem,i=e.mediaKeys;console.assert(!!i,"mediaKeys is defined"),this.log('Creating key-system session "'+r+'" keyId: '+d.default.hexDump(t.keyId||[]));var n=i.createSession(),a={decryptdata:t,keySystem:r,mediaKeys:i,mediaKeysSession:n,keyStatus:"status-pending"};return this.mediaKeySessions.push(a),a},e.renewKeySession=function renewKeySession(e){var t=e.decryptdata;if(t.pssh){var r=this.createMediaKeySessionContext(e),i=this.getKeyIdString(t);this.keyIdToKeySessionPromise[i]=this.generateRequestWithPreferredKeySession(r,"cenc",t.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)},e.getKeyIdString=function getKeyIdString(e){if(!e)throw new Error("Could not read keyId of undefined decryptdata");if(null===e.keyId)throw new Error("keyId is null");return d.default.hexDump(e.keyId)},e.updateKeySession=function updateKeySession(e,t){var r,i=e.mediaKeysSession;return this.log('Updating key-session "'+i.sessionId+'" for keyID '+d.default.hexDump((null===(r=e.decryptdata)||void 0===r?void 0:r.keyId)||[])+"\n } (data length: "+(t?t.byteLength:t)+")"),i.update(t)},e.selectKeySystemFormat=function selectKeySystemFormat(e){var t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log("Selecting key-system from fragment (sn: "+e.sn+" "+e.type+": "+e.level+") key formats "+t.join(", ")),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise},e.getKeyFormatPromise=function getKeyFormatPromise(e){var t=this;return new Promise((function(r,i){var n=(0,s.getKeySystemsForConfig)(t.config),a=e.map(s.keySystemFormatToKeySystemDomain).filter((function(e){return!!e&&-1!==n.indexOf(e)}));return t.getKeySystemSelectionPromise(a).then((function(e){var t=e.keySystem,n=(0,s.keySystemDomainToKeySystemFormat)(t);n?r(n):i(new Error('Unable to find format for key-system "'+t+'"'))})).catch(i)}))},e.loadKey=function loadKey(e){var t=this,r=e.keyInfo.decryptdata,i=this.getKeyIdString(r),n="(keyId: "+i+' format: "'+r.keyFormat+'" method: '+r.method+" uri: "+r.uri+")";this.log("Starting session for key "+n);var a=this.keyIdToKeySessionPromise[i];return a||(a=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(r).then((function(i){var a=i.keySystem,s=i.mediaKeys;return t.throwIfDestroyed(),t.log("Handle encrypted media sn: "+e.frag.sn+" "+e.frag.type+": "+e.frag.level+" using key "+n),t.attemptSetMediaKeys(a,s).then((function(){t.throwIfDestroyed();var e=t.createMediaKeySessionContext({keySystem:a,mediaKeys:s,decryptdata:r});return t.generateRequestWithPreferredKeySession(e,"cenc",r.pssh,"playlist-key")}))}))).catch((function(e){return t.handleError(e)})),a},e.throwIfDestroyed=function throwIfDestroyed(e){if(void 0===e&&(e="Invalid state"),!this.hls)throw new Error("invalid state")},e.handleError=function handleError(e){this.hls&&(this.error(e.message),e instanceof p?this.hls.trigger(i.Events.ERROR,e.data):this.hls.trigger(i.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))},e.getKeySystemForKeyPromise=function getKeySystemForKeyPromise(e){var t=this.getKeyIdString(e),r=this.keyIdToKeySessionPromise[t];if(!r){var i=(0,s.keySystemFormatToKeySystemDomain)(e.keyFormat),n=i?[i]:(0,s.getKeySystemsForConfig)(this.config);return this.attemptKeySystemAccess(n)}return r},e.getKeySystemSelectionPromise=function getKeySystemSelectionPromise(e){if(e.length||(e=(0,s.getKeySystemsForConfig)(this.config)),0===e.length)throw new p({type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},"Missing key-system license configuration options "+JSON.stringify({drmSystems:this.config.drmSystems}));return this.attemptKeySystemAccess(e)},e._onMediaEncrypted=function _onMediaEncrypted(e){var t=this,r=e.initDataType,i=e.initData;if(this.debug('"'+e.type+'" event: init data type: "'+r+'"'),null!==i){var n,a;if("sinf"===r&&this.config.drmSystems[s.KeySystems.FAIRPLAY]){var o=(0,c.bin2str)(new Uint8Array(i));try{var h=(0,l.base64Decode)(JSON.parse(o).sinf),f=(0,c.parseSinf)(new Uint8Array(h));if(!f)return;n=f.subarray(8,24),a=s.KeySystems.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{var g=(0,c.parsePssh)(i);if(null===g)return;0===g.version&&g.systemId===s.KeySystemIds.WIDEVINE&&g.data&&(n=g.data.subarray(8,24)),a=(0,s.keySystemIdToKeySystemDomain)(g.systemId)}if(a&&n){for(var p=d.default.hexDump(n),v=this.keyIdToKeySessionPromise,m=this.mediaKeySessions,y=v[p],E=function _loop(e){var a=m[e],s=a.decryptdata;if(s.pssh||!s.keyId)return"continue";var o=d.default.hexDump(s.keyId);return p===o||-1!==s.uri.replace(/-/g,"").indexOf(p)?(y=v[o],delete v[o],s.pssh=new Uint8Array(i),s.keyId=n,y=v[p]=y.then((function(){return t.generateRequestWithPreferredKeySession(a,r,i,"encrypted-event-key-match")})),"break"):void 0},T=0;T<m.length;T++){var S=E(T);if("continue"!==S&&"break"===S)break}y||(y=v[p]=this.getKeySystemSelectionPromise([a]).then((function(e){var a,o=e.keySystem,l=e.mediaKeys;t.throwIfDestroyed();var d=new u.LevelKey("ISO-23001-7",p,null!=(a=(0,s.keySystemDomainToKeySystemFormat)(o))?a:"");return d.pssh=new Uint8Array(i),d.keyId=n,t.attemptSetMediaKeys(o,l).then((function(){t.throwIfDestroyed();var e=t.createMediaKeySessionContext({decryptdata:d,keySystem:o,mediaKeys:l});return t.generateRequestWithPreferredKeySession(e,r,i,"encrypted-event-no-match")}))}))),y.catch((function(e){return t.handleError(e)}))}}},e._onWaitingForKey=function _onWaitingForKey(e){this.log('"'+e.type+'" event')},e.attemptSetMediaKeys=function attemptSetMediaKeys(e,t){var r=this,i=this.setMediaKeysQueue.slice();this.log('Setting media-keys for "'+e+'"');var n=Promise.all(i).then((function(){if(!r.media)throw new Error("Attempted to set mediaKeys without media element attached");return r.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(n),n.then((function(){r.log('Media-keys set for "'+e+'"'),i.push(n),r.setMediaKeysQueue=r.setMediaKeysQueue.filter((function(e){return-1===i.indexOf(e)}))}))},e.generateRequestWithPreferredKeySession=function generateRequestWithPreferredKeySession(e,t,r,i){var a,l,u=this,d=null===(a=this.config.drmSystems)||void 0===a||null===(l=a[e.keySystem])||void 0===l?void 0:l.generateRequest;if(d)try{var c=d.call(this.hls,t,r,e);if(!c)throw new Error("Invalid response from configured generateRequest filter");t=c.initDataType,r=e.decryptdata.pssh=c.initData?new Uint8Array(c.initData):null}catch(e){var h;if(this.warn(e.message),null!==(h=this.hls)&&void 0!==h&&h.config.debug)throw e}if(null===r)return this.log('Skipping key-session request for "'+i+'" (no initData)'),Promise.resolve(e);var g=this.getKeyIdString(e.decryptdata);this.log('Generating key-session request for "'+i+'": '+g+" (init data type: "+t+" length: "+(r?r.byteLength:null)+")");var v=new(f());e.mediaKeysSession.onmessage=function(t){var r=e.mediaKeysSession;if(r){var i=t.messageType,n=t.message;u.log('"'+i+'" message event for session "'+r.sessionId+'" message size: '+n.byteLength),"license-request"===i||"license-renewal"===i?u.renewLicense(e,n).catch((function(e){u.handleError(e),v.emit("error",e)})):"license-release"===i?e.keySystem===s.KeySystems.FAIRPLAY&&(u.updateKeySession(e,(0,o.strToUtf8array)("acknowledged")),u.removeSession(e)):u.warn('unhandled media key message type "'+i+'"')}else v.emit("error",new Error("invalid state"))},e.mediaKeysSession.onkeystatuseschange=function(t){if(e.mediaKeysSession){u.onKeyStatusChange(e);var r=e.keyStatus;v.emit("keyStatus",r),"expired"===r&&(u.warn(e.keySystem+" expired for key "+g),u.renewKeySession(e))}else v.emit("error",new Error("invalid state"))};var m=new Promise((function(e,t){v.on("error",t),v.on("keyStatus",(function(r){r.startsWith("usable")?e():"output-restricted"===r?t(new p({type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===r?t(new p({type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},'key status changed to "'+r+'"')):"expired"===r?t(new Error("key expired while generating request")):u.warn('unhandled key status change "'+r+'"')}))}));return e.mediaKeysSession.generateRequest(t,r).then((function(){var t;u.log('Request generated for key-session "'+(null===(t=e.mediaKeysSession)||void 0===t?void 0:t.sessionId)+'" keyId: '+g)})).catch((function(e){throw new p({type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},"Error generating key-session request: "+e)})).then((function(){return m})).catch((function(t){throw v.removeAllListeners(),u.removeSession(e),t})).then((function(){return v.removeAllListeners(),e}))},e.onKeyStatusChange=function onKeyStatusChange(e){var t=this;e.mediaKeysSession.keyStatuses.forEach((function(r,i){t.log('key status change "'+r+'" for keyStatuses keyId: '+d.default.hexDump("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))+" session keyId: "+d.default.hexDump(new Uint8Array(e.decryptdata.keyId||[]))+" uri: "+e.decryptdata.uri),e.keyStatus=r}))},e.fetchServerCertificate=function fetchServerCertificate(e){var t=this;return new Promise((function(r,i){var a=t.getServerCertificateUrl(e);if(!a)return r();t.log('Fetching serverCertificate for "'+e+'"');var s=new XMLHttpRequest;s.open("GET",a,!0),s.responseType="arraybuffer",s.onreadystatechange=function(){s.readyState===XMLHttpRequest.DONE&&(200===s.status?r(s.response):i(new p({type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:s},'"'+e+'" certificate request XHR failed ('+a+"). Status: "+s.status+" ("+s.statusText+")")))},s.send()}))},e.setMediaKeysServerCertificate=function setMediaKeysServerCertificate(e,t,r){var i=this;return new Promise((function(a,s){e.setServerCertificate(r).then((function(n){i.log("setServerCertificate "+(n?"success":"not supported by CDM")+" ("+(null==r?void 0:r.byteLength)+') on "'+t+'"'),a(e)})).catch((function(e){s(new p({type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))},e.renewLicense=function renewLicense(e,t){var r=this;return this.requestLicense(e,new Uint8Array(t)).then((function(t){return r.updateKeySession(e,new Uint8Array(t)).catch((function(e){throw new p({type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))}))},e.setupLicenseXHR=function setupLicenseXHR(e,t,r,i){var n=this,a=this.config.licenseXhrSetup;return a?Promise.resolve().then((function(){if(!r.decryptdata)throw new Error("Key removed");return a.call(n.hls,e,t,r,i)})).catch((function(s){if(!r.decryptdata)throw s;return e.open("POST",t,!0),a.call(n.hls,e,t,r,i)})).then((function(r){return e.readyState||e.open("POST",t,!0),{xhr:e,licenseChallenge:r||i}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:i}))},e.requestLicense=function requestLicense(e,t){var r=this;return new Promise((function(i,a){var s=r.getLicenseServerUrl(e.keySystem);r.log("Sending license request to URL: "+s);var o=new XMLHttpRequest;o.responseType="arraybuffer",o.onreadystatechange=function(){if(!r.hls||!e.mediaKeysSession)return a(new Error("invalid state"));if(4===o.readyState)if(200===o.status){r._requestLicenseFailureCount=0;var l=o.response;r.log("License received "+(l instanceof ArrayBuffer?l.byteLength:l));var u=r.config.licenseResponseCallback;if(u)try{l=u.call(r.hls,o,s,e)}catch(e){r.error(e)}i(l)}else if(r._requestLicenseFailureCount++,r._requestLicenseFailureCount>3||o.status>=400&&o.status<500)a(new p({type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:o},"License Request XHR failed ("+s+"). Status: "+o.status+" ("+o.statusText+")"));else{var d=3-r._requestLicenseFailureCount+1;r.warn("Retrying license request, "+d+" attempts left"),r.requestLicense(e,t).then(i,a)}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=o,r.setupLicenseXHR(o,s,e,t).then((function(e){var t=e.xhr,r=e.licenseChallenge;t.send(r)}))}))},e.onMediaAttached=function onMediaAttached(e,t){if(this.config.emeEnabled){var r=t.media;this.media=r,r.addEventListener("encrypted",this.onMediaEncrypted),r.addEventListener("waitingforkey",this.onWaitingForKey)}},e.onMediaDetached=function onMediaDetached(){var e=this,t=this.media,r=this.mediaKeySessions;t&&(t.removeEventListener("encrypted",this.onMediaEncrypted),t.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},u.LevelKey.clearKeyUriToKeyIdMap();var i=r.length;EMEController.CDMCleanupPromise=Promise.all(r.map((function(t){return e.removeSession(t)})).concat(null==t?void 0:t.setMediaKeys(null).catch((function(r){e.log("Could not clear media keys: "+r+". media.src: "+(null==t?void 0:t.src))})))).then((function(){i&&(e.log("finished closing key sessions and clearing media keys"),r.length=0)})).catch((function(r){e.log("Could not close sessions and clear media keys: "+r+". media.src: "+(null==t?void 0:t.src))}))},e.onManifestLoaded=function onManifestLoaded(e,t){var r=t.sessionKeys;if(r&&this.config.emeEnabled&&!this.keyFormatPromise){var i=r.reduce((function(e,t){return-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e}),[]);this.log("Selecting key-system from session-keys "+i.join(", ")),this.keyFormatPromise=this.getKeyFormatPromise(i)}},e.removeSession=function removeSession(e){var t=this,r=e.mediaKeysSession,i=e.licenseXhr;if(r){this.log("Remove licenses and keys and close session "+r.sessionId),r.onmessage=null,r.onkeystatuseschange=null,i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;var n=this.mediaKeySessions.indexOf(e);return n>-1&&this.mediaKeySessions.splice(n,1),r.remove().catch((function(e){t.log("Could not remove session: "+e)})).then((function(){return r.close()})).catch((function(e){t.log("Could not close session: "+e)}))}},EMEController}();g.CDMCleanupPromise=void 0;var p=function(e){function EMEKeyError(t,r){var i;return(i=e.call(this,r)||this).data=void 0,i.data=t,t.err=t.error,i}return function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(EMEKeyError,e),EMEKeyError}(_wrapNativeSuper(Error));const v=g},"./src/controller/fps-controller.ts":
|
|
35
|
-
/*!******************************************!*\
|
|
36
|
-
!*** ./src/controller/fps-controller.ts ***!
|
|
37
|
-
\******************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var i=r(/*! ../events */"./src/events.ts"),n=r(/*! ../utils/logger */"./src/utils/logger.ts");const a=function(){function FPSController(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}var e=FPSController.prototype;return e.setStreamController=function setStreamController(e){this.streamController=e},e.registerListeners=function registerListeners(){this.hls.on(i.Events.MEDIA_ATTACHING,this.onMediaAttaching,this)},e.unregisterListeners=function unregisterListeners(){this.hls.off(i.Events.MEDIA_ATTACHING,this.onMediaAttaching)},e.destroy=function destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null},e.onMediaAttaching=function onMediaAttaching(e,t){var r=this.hls.config;if(r.capLevelOnFPSDrop){var i=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=i,i&&"function"==typeof i.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),r.fpsDroppedMonitoringPeriod)}},e.checkFPS=function checkFPS(e,t,r){var a=performance.now();if(t){if(this.lastTime){var s=a-this.lastTime,o=r-this.lastDroppedFrames,l=t-this.lastDecodedFrames,u=1e3*o/s,d=this.hls;if(d.trigger(i.Events.FPS_DROP,{currentDropped:o,currentDecoded:l,totalDroppedFrames:r}),u>0&&o>d.config.fpsDroppedMonitoringThreshold*l){var c=d.currentLevel;n.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+c),c>0&&(-1===d.autoLevelCapping||d.autoLevelCapping>=c)&&(c-=1,d.trigger(i.Events.FPS_DROP_LEVEL_CAPPING,{level:c,droppedLevel:d.currentLevel}),d.autoLevelCapping=c,this.streamController.nextLevelSwitch())}}this.lastTime=a,this.lastDroppedFrames=r,this.lastDecodedFrames=t}},e.checkFPSInterval=function checkFPSInterval(){var e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){var t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)},FPSController}()},"./src/controller/fragment-finders.ts":
|
|
38
|
-
/*!********************************************!*\
|
|
39
|
-
!*** ./src/controller/fragment-finders.ts ***!
|
|
40
|
-
\********************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{findFragWithCC:()=>findFragWithCC,findFragmentByPDT:()=>findFragmentByPDT,findFragmentByPTS:()=>findFragmentByPTS,fragmentWithinToleranceTest:()=>fragmentWithinToleranceTest,pdtWithinToleranceTest:()=>pdtWithinToleranceTest});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../utils/binary-search */"./src/utils/binary-search.ts");function findFragmentByPDT(e,t,r){if(null===t||!Array.isArray(e)||!e.length||!(0,i.isFiniteNumber)(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;r=r||0;for(var n=0;n<e.length;++n){var a=e[n];if(pdtWithinToleranceTest(t,r,a))return a}return null}function findFragmentByPTS(e,t,r,i){void 0===r&&(r=0),void 0===i&&(i=0);var a=null;if(e?a=t[e.sn-t[0].sn+1]||null:0===r&&0===t[0].start&&(a=t[0]),a&&0===fragmentWithinToleranceTest(r,i,a))return a;var s=n.default.search(t,fragmentWithinToleranceTest.bind(null,r,i));return!s||s===e&&a?a:s}function fragmentWithinToleranceTest(e,t,r){if(void 0===e&&(e=0),void 0===t&&(t=0),r.start<=e&&r.start+r.duration>e)return 0;var i=Math.min(t,r.duration+(r.deltaPTS?r.deltaPTS:0));return r.start+r.duration-i<=e?1:r.start-i>e&&r.start?-1:0}function pdtWithinToleranceTest(e,t,r){var i=1e3*Math.min(t,r.duration+(r.deltaPTS?r.deltaPTS:0));return(r.endProgramDateTime||0)-i>e}function findFragWithCC(e,t){return n.default.search(e,(function(e){return e.cc<t?1:e.cc>t?-1:0}))}},"./src/controller/fragment-tracker.ts":
|
|
41
|
-
/*!********************************************!*\
|
|
42
|
-
!*** ./src/controller/fragment-tracker.ts ***!
|
|
43
|
-
\********************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{FragmentState:()=>i,FragmentTracker:()=>s});var i,n=r(/*! ../events */"./src/events.ts"),a=r(/*! ../types/loader */"./src/types/loader.ts");!function(e){e.NOT_LOADED="NOT_LOADED",e.APPENDING="APPENDING",e.PARTIAL="PARTIAL",e.OK="OK"}(i||(i={}));var s=function(){function FragmentTracker(e){this.activeFragment=null,this.activeParts=null,this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hls=e,this._registerListeners()}var e=FragmentTracker.prototype;return e._registerListeners=function _registerListeners(){var e=this.hls;e.on(n.Events.BUFFER_APPENDED,this.onBufferAppended,this),e.on(n.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.on(n.Events.FRAG_LOADED,this.onFragLoaded,this)},e._unregisterListeners=function _unregisterListeners(){var e=this.hls;e.off(n.Events.BUFFER_APPENDED,this.onBufferAppended,this),e.off(n.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.off(n.Events.FRAG_LOADED,this.onFragLoaded,this)},e.destroy=function destroy(){this._unregisterListeners(),this.fragments=this.endListFragments=this.timeRanges=this.activeFragment=this.activeParts=null},e.getAppendedFrag=function getAppendedFrag(e,t){if(t===a.PlaylistLevelType.MAIN){var r=this.activeFragment,i=this.activeParts;if(!r)return null;if(i)for(var n=i.length;n--;){var s=i[n],o=s?s.end:r.appendedPTS;if(s.start<=e&&void 0!==o&&e<=o)return n>9&&(this.activeParts=i.slice(n-9)),s}else if(r.start<=e&&void 0!==r.appendedPTS&&e<=r.appendedPTS)return r}return this.getBufferedFrag(e,t)},e.getBufferedFrag=function getBufferedFrag(e,t){for(var r=this.fragments,i=Object.keys(r),n=i.length;n--;){var a=r[i[n]];if((null==a?void 0:a.body.type)===t&&a.buffered){var s=a.body;if(s.start<=e&&e<=s.end)return s}}return null},e.detectEvictedFragments=function detectEvictedFragments(e,t,r){var i=this;this.timeRanges&&(this.timeRanges[e]=t),Object.keys(this.fragments).forEach((function(n){var a=i.fragments[n];if(a)if(a.buffered||a.loaded){var s=a.range[e];s&&s.time.some((function(e){var r=!i.isTimeBuffered(e.startPTS,e.endPTS,t);return r&&i.removeFragment(a.body),r}))}else a.body.type===r&&i.removeFragment(a.body)}))},e.detectPartialFragments=function detectPartialFragments(e){var t=this,r=this.timeRanges,i=e.frag,n=e.part;if(r&&"initSegment"!==i.sn){var a=getFragmentKey(i),s=this.fragments[a];s&&(Object.keys(r).forEach((function(e){var a=i.elementaryStreams[e];if(a){var o=r[e],l=null!==n||!0===a.partial;s.range[e]=t.getBufferedTimes(i,n,l,o)}})),s.loaded=null,Object.keys(s.range).length?(s.buffered=!0,s.body.endList&&(this.endListFragments[s.body.type]=s)):this.removeFragment(s.body))}},e.fragBuffered=function fragBuffered(e){var t=getFragmentKey(e),r=this.fragments[t];r&&(r.loaded=null,r.buffered=!0)},e.getBufferedTimes=function getBufferedTimes(e,t,r,i){for(var n={time:[],partial:r},a=t?t.start:e.start,s=t?t.end:e.end,o=e.minEndPTS||s,l=e.maxStartPTS||a,u=0;u<i.length;u++){var d=i.start(u)-this.bufferPadding,c=i.end(u)+this.bufferPadding;if(l>=d&&o<=c){n.time.push({startPTS:Math.max(a,i.start(u)),endPTS:Math.min(s,i.end(u))});break}if(a<c&&s>d)n.partial=!0,n.time.push({startPTS:Math.max(a,i.start(u)),endPTS:Math.min(s,i.end(u))});else if(s<=d)break}return n},e.getPartialFragment=function getPartialFragment(e){var t,r,i,n=null,a=0,s=this.bufferPadding,o=this.fragments;return Object.keys(o).forEach((function(l){var u=o[l];u&&isPartial(u)&&(r=u.body.start-s,i=u.body.end+s,e>=r&&e<=i&&(t=Math.min(e-r,i-e),a<=t&&(n=u.body,a=t)))})),n},e.isEndListAppended=function isEndListAppended(e){var t=this.endListFragments[e];return void 0!==t&&(t.buffered||isPartial(t))},e.getState=function getState(e){var t=getFragmentKey(e),r=this.fragments[t];return r?r.buffered?isPartial(r)?i.PARTIAL:i.OK:i.APPENDING:i.NOT_LOADED},e.isTimeBuffered=function isTimeBuffered(e,t,r){for(var i,n,a=0;a<r.length;a++){if(i=r.start(a)-this.bufferPadding,n=r.end(a)+this.bufferPadding,e>=i&&t<=n)return!0;if(t<=i)return!1}return!1},e.onFragLoaded=function onFragLoaded(e,t){var r=t.frag,i=t.part;if("initSegment"!==r.sn&&!r.bitrateTest&&!i){var n=getFragmentKey(r);this.fragments[n]={body:r,loaded:t,buffered:!1,range:Object.create(null)}}},e.onBufferAppended=function onBufferAppended(e,t){var r=this,i=t.frag,n=t.part,s=t.timeRanges;if(i.type===a.PlaylistLevelType.MAIN)if(this.activeFragment!==i&&(this.activeFragment=i,i.appendedPTS=void 0),n){var o=this.activeParts;o||(this.activeParts=o=[]),o.push(n)}else this.activeParts=null;this.timeRanges=s,Object.keys(s).forEach((function(e){var t=s[e];if(r.detectEvictedFragments(e,t),!n&&i.type===a.PlaylistLevelType.MAIN){var o=i.elementaryStreams[e];if(!o)return;for(var l=0;l<t.length;l++){var u=t.end(l);u<=o.endPTS&&u>o.startPTS?i.appendedPTS=Math.max(u,i.appendedPTS||0):i.appendedPTS=o.endPTS}}}))},e.onFragBuffered=function onFragBuffered(e,t){this.detectPartialFragments(t)},e.hasFragment=function hasFragment(e){var t=getFragmentKey(e);return!!this.fragments[t]},e.removeFragmentsInRange=function removeFragmentsInRange(e,t,r){var i=this;Object.keys(this.fragments).forEach((function(n){var a=i.fragments[n];if(a&&a.buffered){var s=a.body;s.type===r&&s.start<t&&s.end>e&&i.removeFragment(s)}}))},e.removeFragment=function removeFragment(e){var t=getFragmentKey(e);e.stats.loaded=0,e.clearElementaryStreamInfo(),e.appendedPTS=void 0,delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]},e.removeAllFragments=function removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activeFragment=null,this.activeParts=null},FragmentTracker}();function isPartial(e){var t,r;return e.buffered&&((null===(t=e.range.video)||void 0===t?void 0:t.partial)||(null===(r=e.range.audio)||void 0===r?void 0:r.partial))}function getFragmentKey(e){return e.type+"_"+e.level+"_"+e.urlId+"_"+e.sn}},"./src/controller/gap-controller.ts":
|
|
44
|
-
/*!******************************************!*\
|
|
45
|
-
!*** ./src/controller/gap-controller.ts ***!
|
|
46
|
-
\******************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{MAX_START_GAP_JUMP:()=>l,SKIP_BUFFER_HOLE_STEP_SECONDS:()=>u,SKIP_BUFFER_RANGE_START:()=>d,STALL_MINIMUM_DURATION_MS:()=>o,default:()=>c});var i=r(/*! ../utils/buffer-helper */"./src/utils/buffer-helper.ts"),n=r(/*! ../errors */"./src/errors.ts"),a=r(/*! ../events */"./src/events.ts"),s=r(/*! ../utils/logger */"./src/utils/logger.ts"),o=250,l=2,u=.1,d=.05,c=function(){function GapController(e,t,r,i){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=r,this.hls=i}var e=GapController.prototype;return e.destroy=function destroy(){this.media=null,this.hls=this.fragmentTracker=null},e.poll=function poll(e,t){var r=this.config,n=this.media,a=this.stalled;if(null!==n){var u=n.currentTime,d=n.seeking,c=this.seeking&&!d,h=!this.seeking&&d;if(this.seeking=d,u===e){if((h||c)&&(this.stalled=null),!(n.paused&&!d||n.ended||0===n.playbackRate)&&i.BufferHelper.getBuffered(n).length){var f=i.BufferHelper.bufferInfo(n,u,0),g=f.len>0,p=f.nextStart||0;if(g||p){if(d){var v=f.len>l,m=!p||t&&t.start<=u||p-u>l&&!this.fragmentTracker.getPartialFragment(u);if(v||m)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var y,E=Math.max(p,f.start||0)-u,T=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,S=(null==T||null===(y=T.details)||void 0===y?void 0:y.live)?2*T.details.targetduration:l;if(E>0&&E<=S)return void this._trySkipBufferHole(null)}var b=self.performance.now();if(null!==a){var L=b-a;if(d||!(L>=o)||(this._reportStall(f),this.media)){var D=i.BufferHelper.bufferInfo(n,u,r.maxBufferHole);this._tryFixBufferStall(D,L)}}else this.stalled=b}}}else if(this.moved=!0,null!==a){if(this.stallReported){var A=self.performance.now()-a;s.logger.warn("playback not stuck anymore @"+u+", after "+Math.round(A)+"ms"),this.stallReported=!1}this.stalled=null,this.nudgeRetry=0}}},e._tryFixBufferStall=function _tryFixBufferStall(e,t){var r=this.config,i=this.fragmentTracker,n=this.media;if(null!==n){var a=n.currentTime,o=i.getPartialFragment(a);if(o)if(this._trySkipBufferHole(o)||!this.media)return;e.len>r.maxBufferHole&&t>1e3*r.highBufferWatchdogPeriod&&(s.logger.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}},e._reportStall=function _reportStall(e){var t=this.hls,r=this.media;!this.stallReported&&r&&(this.stallReported=!0,s.logger.warn("Playback stalling at @"+r.currentTime+" due to low buffer ("+JSON.stringify(e)+")"),t.trigger(a.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1,buffer:e.len}))},e._trySkipBufferHole=function _trySkipBufferHole(e){var t=this.config,r=this.hls,o=this.media;if(null===o)return 0;for(var l=o.currentTime,c=0,h=i.BufferHelper.getBuffered(o),f=0;f<h.length;f++){var g=h.start(f);if(l+t.maxBufferHole>=c&&l<g){var p=Math.max(g+d,o.currentTime+u);return s.logger.warn("skipping hole, adjusting currentTime from "+l+" to "+p),this.moved=!0,this.stalled=null,o.currentTime=p,e&&r.trigger(a.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_SEEK_OVER_HOLE,fatal:!1,reason:"fragment loaded with buffer holes, seeking from "+l+" to "+p,frag:e}),p}c=h.end(f)}return 0},e._tryNudgeBuffer=function _tryNudgeBuffer(){var e=this.config,t=this.hls,r=this.media,i=this.nudgeRetry;if(null!==r){var o=r.currentTime;if(this.nudgeRetry++,i<e.nudgeMaxRetry){var l=o+(i+1)*e.nudgeOffset;s.logger.warn("Nudging 'currentTime' from "+o+" to "+l),r.currentTime=l,t.trigger(a.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_NUDGE_ON_STALL,fatal:!1})}else s.logger.error("Playhead still not moving while enough data buffered @"+o+" after "+e.nudgeMaxRetry+" nudges"),t.trigger(a.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!0})}},GapController}()},"./src/controller/id3-track-controller.ts":
|
|
47
|
-
/*!************************************************!*\
|
|
48
|
-
!*** ./src/controller/id3-track-controller.ts ***!
|
|
49
|
-
\************************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../events */"./src/events.ts"),a=r(/*! ../utils/texttrack-utils */"./src/utils/texttrack-utils.ts"),s=r(/*! ../demux/id3 */"./src/demux/id3.ts"),o=r(/*! ../loader/date-range */"./src/loader/date-range.ts"),l=r(/*! ../types/demuxer */"./src/types/demuxer.ts");function getCueClass(){return self.WebKitDataCue||self.VTTCue||self.TextTrackCue}var u=function(){var e=getCueClass();try{new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY}();function dateRangeDateToTimelineSeconds(e,t){return e.getTime()/1e3-t}const d=function(){function ID3TrackController(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}var e=ID3TrackController.prototype;return e.destroy=function destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null},e._registerListeners=function _registerListeners(){var e=this.hls;e.on(n.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(n.Events.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this)},e._unregisterListeners=function _unregisterListeners(){var e=this.hls;e.off(n.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(n.Events.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this)},e.onMediaAttached=function onMediaAttached(e,t){this.media=t.media},e.onMediaDetaching=function onMediaDetaching(){this.id3Track&&((0,a.clearCurrentCues)(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})},e.onManifestLoading=function onManifestLoading(){this.dateRangeCuesAppended={}},e.createTrack=function createTrack(e){var t=this.getID3Track(e.textTracks);return t.mode="hidden",t},e.getID3Track=function getID3Track(e){if(this.media){for(var t=0;t<e.length;t++){var r=e[t];if("metadata"===r.kind&&"id3"===r.label)return(0,a.sendAddTrackEvent)(r,this.media),r}return this.media.addTextTrack("metadata","id3")}},e.onFragParsingMetadata=function onFragParsingMetadata(e,t){if(this.media){var r=this.hls.config,i=r.enableEmsgMetadataCues,n=r.enableID3MetadataCues;if(i||n){var a=t.samples;this.id3Track||(this.id3Track=this.createTrack(this.media));for(var o=getCueClass(),d=0;d<a.length;d++){var c=a[d].type;if((c!==l.MetadataSchema.emsg||i)&&n){var h=s.getID3Frames(a[d].data);if(h){var f=a[d].pts,g=f+a[d].duration;g>u&&(g=u),g-f<=0&&(g=f+.25);for(var p=0;p<h.length;p++){var v=h[p];if(!s.isTimeStampFrame(v)){this.updateId3CueEnds(f);var m=new o(f,g,"");m.value=v,c&&(m.type=c),this.id3Track.addCue(m)}}}}}}}},e.updateId3CueEnds=function updateId3CueEnds(e){var t,r=null===(t=this.id3Track)||void 0===t?void 0:t.cues;if(r)for(var i=r.length;i--;){var n=r[i];n.startTime<e&&n.endTime===u&&(n.endTime=e)}},e.onBufferFlushing=function onBufferFlushing(e,t){var r=t.startOffset,i=t.endOffset,n=t.type,s=this.id3Track,o=this.hls;if(o){var u,d=o.config,c=d.enableEmsgMetadataCues,h=d.enableID3MetadataCues;if(s&&(c||h))u="audio"===n?function predicate(e){return e.type===l.MetadataSchema.audioId3&&h}:"video"===n?function predicate(e){return e.type===l.MetadataSchema.emsg&&c}:function predicate(e){return e.type===l.MetadataSchema.audioId3&&h||e.type===l.MetadataSchema.emsg&&c},(0,a.removeCuesInRange)(s,r,i,u)}},e.onLevelUpdated=function onLevelUpdated(e,t){var r=this,n=t.details;if(this.media&&n.hasProgramDateTime&&this.hls.config.enableDateRangeMetadataCues){var a=this.dateRangeCuesAppended,s=this.id3Track,d=n.dateRanges,c=Object.keys(d);if(s)for(var h=Object.keys(a).filter((function(e){return!c.includes(e)})),f=function _loop(e){var t=h[e];Object.keys(a[t].cues).forEach((function(e){s.removeCue(a[t].cues[e])})),delete a[t]},g=h.length;g--;)f(g);var p=n.fragments[n.fragments.length-1];if(0!==c.length&&(0,i.isFiniteNumber)(null==p?void 0:p.programDateTime)){this.id3Track||(this.id3Track=this.createTrack(this.media));for(var v=p.programDateTime/1e3-p.start,m=getCueClass(),y=function _loop2(e){var t=c[e],i=d[t],n=a[t],s=(null==n?void 0:n.cues)||{},h=(null==n?void 0:n.durationKnown)||!1,f=dateRangeDateToTimelineSeconds(i.startDate,v),g=u,p=i.endDate;if(p)g=dateRangeDateToTimelineSeconds(p,v),h=!0;else if(i.endOnNext&&!h){var y=c.reduce((function(e,t){var r=d[t];return r.class===i.class&&r.id!==t&&r.startDate>i.startDate&&e.push(r),e}),[]).sort((function(e,t){return e.startDate.getTime()-t.startDate.getTime()}))[0];y&&(g=dateRangeDateToTimelineSeconds(y.startDate,v),h=!0)}for(var E,T=Object.keys(i.attr),S=0;S<T.length;S++){var b=T[S];if(b!==o.DateRangeAttribute.ID&&b!==o.DateRangeAttribute.CLASS&&b!==o.DateRangeAttribute.START_DATE&&b!==o.DateRangeAttribute.DURATION&&b!==o.DateRangeAttribute.END_DATE&&b!==o.DateRangeAttribute.END_ON_NEXT){var L=s[b];if(L)h&&!n.durationKnown&&(L.endTime=g);else{var D=i.attr[b];L=new m(f,g,""),b!==o.DateRangeAttribute.SCTE35_OUT&&b!==o.DateRangeAttribute.SCTE35_IN||(E=D,D=Uint8Array.from(E.replace(/^0x/,"").replace(/([\da-fA-F]{2}) ?/g,"0x$1 ").replace(/ +$/,"").split(" ")).buffer),L.value={key:b,data:D},L.type=l.MetadataSchema.dateRange,r.id3Track.addCue(L),s[b]=L}}}a[t]={cues:s,dateRange:i,durationKnown:h}},E=0;E<c.length;E++)y(E)}}},ID3TrackController}()},"./src/controller/latency-controller.ts":
|
|
50
|
-
/*!**********************************************!*\
|
|
51
|
-
!*** ./src/controller/latency-controller.ts ***!
|
|
52
|
-
\**********************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var i=r(/*! ../errors */"./src/errors.ts"),n=r(/*! ../events */"./src/events.ts"),a=r(/*! ../utils/logger */"./src/utils/logger.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}var s=function(){function LatencyController(e){var t=this;this.hls=void 0,this.config=void 0,this.media=null,this.levelDetails=null,this.currentTime=0,this.stallCount=0,this._latency=null,this.timeupdateHandler=function(){return t.timeupdate()},this.hls=e,this.config=e.config,this.registerListeners()}var e=LatencyController.prototype;return e.destroy=function destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null},e.registerListeners=function registerListeners(){this.hls.on(n.Events.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(n.Events.ERROR,this.onError,this)},e.unregisterListeners=function unregisterListeners(){this.hls.off(n.Events.MEDIA_ATTACHED,this.onMediaAttached),this.hls.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching),this.hls.off(n.Events.MANIFEST_LOADING,this.onManifestLoading),this.hls.off(n.Events.LEVEL_UPDATED,this.onLevelUpdated),this.hls.off(n.Events.ERROR,this.onError)},e.onMediaAttached=function onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)},e.onMediaDetaching=function onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)},e.onManifestLoading=function onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0},e.onLevelUpdated=function onLevelUpdated(e,t){var r=t.details;this.levelDetails=r,r.advanced&&this.timeupdate(),!r.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)},e.onError=function onError(e,t){t.details===i.ErrorDetails.BUFFER_STALLED_ERROR&&(this.stallCount++,a.logger.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))},e.timeupdate=function timeupdate(){var e=this.media,t=this.levelDetails;if(e&&t){this.currentTime=e.currentTime;var r=this.computeLatency();if(null!==r){this._latency=r;var i=this.config,n=i.lowLatencyMode,a=i.maxLiveSyncPlaybackRate;if(n&&1!==a){var s=this.targetLatency;if(null!==s){var o=r-s,l=o<Math.min(this.maxLatency,s+t.targetduration);if(t.live&&l&&o>.05&&this.forwardBufferLength>1){var u=Math.min(2,Math.max(1,a)),d=Math.round(2/(1+Math.exp(-.75*o-this.edgeStalled))*20)/20;e.playbackRate=Math.min(u,Math.max(1,d))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}}}}},e.estimateLiveEdge=function estimateLiveEdge(){var e=this.levelDetails;return null===e?null:e.edge+e.age},e.computeLatency=function computeLatency(){var e=this.estimateLiveEdge();return null===e?null:e-this.currentTime},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(LatencyController,[{key:"latency",get:function get(){return this._latency||0}},{key:"maxLatency",get:function get(){var e=this.config,t=this.levelDetails;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}},{key:"targetLatency",get:function get(){var e=this.levelDetails;if(null===e)return null;var t=e.holdBack,r=e.partHoldBack,i=e.targetduration,n=this.config,a=n.liveSyncDuration,s=n.liveSyncDurationCount,o=n.lowLatencyMode,l=this.hls.userConfig,u=o&&r||t;(l.liveSyncDuration||l.liveSyncDurationCount||0===u)&&(u=void 0!==a?a:s*i);var d=i;return u+Math.min(1*this.stallCount,d)}},{key:"liveSyncPosition",get:function get(){var e=this.estimateLiveEdge(),t=this.targetLatency,r=this.levelDetails;if(null===e||null===t||null===r)return null;var i=r.edge,n=e-t-this.edgeStalled,a=i-r.totalduration,s=i-(this.config.lowLatencyMode&&r.partTarget||r.targetduration);return Math.min(Math.max(a,n),s)}},{key:"drift",get:function get(){var e=this.levelDetails;return null===e?1:e.drift}},{key:"edgeStalled",get:function get(){var e=this.levelDetails;if(null===e)return 0;var t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}},{key:"forwardBufferLength",get:function get(){var e=this.media,t=this.levelDetails;if(!e||!t)return 0;var r=e.buffered.length;return(r?e.buffered.end(r-1):t.edge)-this.currentTime}}]),LatencyController}()},"./src/controller/level-controller.ts":
|
|
53
|
-
/*!********************************************!*\
|
|
54
|
-
!*** ./src/controller/level-controller.ts ***!
|
|
55
|
-
\********************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var i=r(/*! ../types/level */"./src/types/level.ts"),n=r(/*! ../events */"./src/events.ts"),a=r(/*! ../errors */"./src/errors.ts"),s=r(/*! ../utils/codecs */"./src/utils/codecs.ts"),o=r(/*! ./level-helper */"./src/controller/level-helper.ts"),l=r(/*! ./base-playlist-controller */"./src/controller/base-playlist-controller.ts"),u=r(/*! ../types/loader */"./src/types/loader.ts");function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}var d=/chrome|firefox/.test(navigator.userAgent.toLowerCase()),c=function(e){function LevelController(t){var r;return(r=e.call(this,t,"[level-controller]")||this)._levels=[],r._firstLevel=-1,r._startLevel=void 0,r.currentLevelIndex=-1,r.manualLevelIndex=-1,r.onParsedComplete=void 0,r._registerListeners(),r}!function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(LevelController,e);var t=LevelController.prototype;return t._registerListeners=function _registerListeners(){var e=this.hls;e.on(n.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(n.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(n.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(n.Events.FRAG_LOADED,this.onFragLoaded,this),e.on(n.Events.ERROR,this.onError,this)},t._unregisterListeners=function _unregisterListeners(){var e=this.hls;e.off(n.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(n.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(n.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(n.Events.FRAG_LOADED,this.onFragLoaded,this),e.off(n.Events.ERROR,this.onError,this)},t.destroy=function destroy(){this._unregisterListeners(),this.manualLevelIndex=-1,this._levels.length=0,e.prototype.destroy.call(this)},t.startLoad=function startLoad(){this._levels.forEach((function(e){e.loadError=0})),e.prototype.startLoad.call(this)},t.onManifestLoaded=function onManifestLoaded(e,t){var r,l,u=[],c=[],h=[],f={},g=!1,p=!1,v=!1;if(t.levels.forEach((function(e){var t=e.attrs;g=g||!(!e.width||!e.height),p=p||!!e.videoCodec,v=v||!!e.audioCodec,d&&e.audioCodec&&-1!==e.audioCodec.indexOf("mp4a.40.34")&&(e.audioCodec=void 0);var r=e.bitrate+"-"+e.attrs.RESOLUTION+"-"+e.attrs.CODECS;(l=f[r])?l.url.push(e.url):(l=new i.Level(e),f[r]=l,u.push(l)),t&&(t.AUDIO&&(0,o.addGroupId)(l,"audio",t.AUDIO),t.SUBTITLES&&(0,o.addGroupId)(l,"text",t.SUBTITLES))})),(g||p)&&v&&(u=u.filter((function(e){var t=e.videoCodec,r=e.width,i=e.height;return!!t||!(!r||!i)}))),u=u.filter((function(e){var t=e.audioCodec,r=e.videoCodec;return(!t||(0,s.isCodecSupportedInMp4)(t,"audio"))&&(!r||(0,s.isCodecSupportedInMp4)(r,"video"))})),t.audioTracks&&(c=t.audioTracks.filter((function(e){return!e.audioCodec||(0,s.isCodecSupportedInMp4)(e.audioCodec,"audio")})),(0,o.assignTrackIdsByGroup)(c)),t.subtitles&&(h=t.subtitles,(0,o.assignTrackIdsByGroup)(h)),u.length>0){r=u[0].bitrate,u.sort((function(e,t){return e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"]?(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1:e.bitrate!==t.bitrate?e.bitrate-t.bitrate:e.attrs.SCORE!==t.attrs.SCORE?e.attrs.decimalFloatingPoint("SCORE")-t.attrs.decimalFloatingPoint("SCORE"):g&&e.height!==t.height?e.height-t.height:0})),this._levels=u;for(var m=0;m<u.length;m++)if(u[m].bitrate===r){this._firstLevel=m,this.log("manifest loaded, "+u.length+" level(s) found, first bitrate: "+r);break}var y=v&&!p,E={levels:u,audioTracks:c,subtitleTracks:h,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:v,video:p,altAudio:!y&&c.some((function(e){return!!e.url}))};this.hls.trigger(n.Events.MANIFEST_PARSED,E),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}else this.hls.trigger(n.Events.ERROR,{type:a.ErrorTypes.MEDIA_ERROR,details:a.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,reason:"no level with compatible codecs found in manifest"})},t.onError=function onError(t,r){var n,s;if(e.prototype.onError.call(this,t,r),!r.fatal){var o=r.context,l=this._levels[this.currentLevelIndex];if(o&&(o.type===u.PlaylistContextType.AUDIO_TRACK&&l.audioGroupIds&&o.groupId===l.audioGroupIds[l.urlId]||o.type===u.PlaylistContextType.SUBTITLE_TRACK&&l.textGroupIds&&o.groupId===l.textGroupIds[l.urlId]))this.redundantFailover(this.currentLevelIndex);else{var d,c=!1,h=!0;switch(r.details){case a.ErrorDetails.FRAG_LOAD_ERROR:case a.ErrorDetails.FRAG_LOAD_TIMEOUT:case a.ErrorDetails.KEY_LOAD_ERROR:case a.ErrorDetails.KEY_LOAD_TIMEOUT:if(r.frag){var f=r.frag.type===u.PlaylistLevelType.MAIN?r.frag.level:this.currentLevelIndex,g=this._levels[f];g?(g.fragmentError++,g.fragmentError>this.hls.config.fragLoadingMaxRetry&&(d=f)):d=f}break;case a.ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:var p=l.attrs["HDCP-LEVEL"];p&&(this.hls.maxHdcpLevel=i.HdcpLevels[i.HdcpLevels.indexOf(p)-1],this.warn('Restricting playback to HDCP-LEVEL of "'+this.hls.maxHdcpLevel+'" or lower'));case a.ErrorDetails.FRAG_PARSING_ERROR:case a.ErrorDetails.KEY_SYSTEM_NO_SESSION:d=(null===(n=r.frag)||void 0===n?void 0:n.type)===u.PlaylistLevelType.MAIN?r.frag.level:this.currentLevelIndex,r.levelRetry=!1;break;case a.ErrorDetails.LEVEL_LOAD_ERROR:case a.ErrorDetails.LEVEL_LOAD_TIMEOUT:o&&(o.deliveryDirectives&&(h=!1),d=o.level),c=!0;break;case a.ErrorDetails.REMUX_ALLOC_ERROR:d=null!=(s=r.level)?s:this.currentLevelIndex,c=!0}void 0!==d&&this.recoverLevel(r,d,c,h)}}},t.recoverLevel=function recoverLevel(e,t,r,i){var n=e.details,a=this._levels[t];if(a.loadError++,r){if(!this.retryLoadingOrFail(e))return void(this.currentLevelIndex=-1);e.levelRetry=!0}if(i){var s=a.url.length;if(s>1&&a.loadError<s)e.levelRetry=!0,this.redundantFailover(t);else if(-1===this.manualLevelIndex){for(var o=-1,l=this._levels,u=l.length;u--;){var d=(u+this.currentLevelIndex)%l.length;if(d!==this.currentLevelIndex&&0===l[d].loadError){o=d;break}}o>-1&&this.currentLevelIndex!==o?(this.warn(n+": switch to "+o),e.levelRetry=!0,this.hls.nextAutoLevel=o):!1===e.levelRetry&&(e.fatal=!0)}}},t.redundantFailover=function redundantFailover(e){var t=this._levels[e],r=t.url.length;if(r>1){var i=(t.urlId+1)%r;this.warn("Switching to redundant URL-id "+i),this._levels.forEach((function(e){e.urlId=i})),this.level=e}},t.onFragLoaded=function onFragLoaded(e,t){var r=t.frag;if(void 0!==r&&r.type===u.PlaylistLevelType.MAIN){var i=this._levels[r.level];void 0!==i&&(i.fragmentError=0,i.loadError=0)}},t.onLevelLoaded=function onLevelLoaded(e,t){var r,i,n=t.level,a=t.details,s=this._levels[n];if(!s)return this.warn("Invalid level index "+n),void(null!==(i=t.deliveryDirectives)&&void 0!==i&&i.skip&&(a.deltaUpdateFailed=!0));n===this.currentLevelIndex?(0===s.fragmentError&&(s.loadError=0,this.retryCount=0),this.playlistLoaded(n,t,s.details)):null!==(r=t.deliveryDirectives)&&void 0!==r&&r.skip&&(a.deltaUpdateFailed=!0)},t.onAudioTrackSwitched=function onAudioTrackSwitched(e,t){var r=this.hls.levels[this.currentLevelIndex];if(r&&r.audioGroupIds){for(var i=-1,n=this.hls.audioTracks[t.id].groupId,a=0;a<r.audioGroupIds.length;a++)if(r.audioGroupIds[a]===n){i=a;break}i!==r.urlId&&(r.urlId=i,this.startLoad())}},t.loadPlaylist=function loadPlaylist(t){e.prototype.loadPlaylist.call(this);var r=this.currentLevelIndex,i=this._levels[r];if(this.canLoad&&i&&i.url.length>0){var a=i.urlId,s=i.url[a];if(t)try{s=t.addDirectives(s)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("Attempt loading level index "+r+(t?" at sn "+t.msn+" part "+t.part:"")+" with URL-id "+a+" "+s),this.clearTimer(),this.hls.trigger(n.Events.LEVEL_LOADING,{url:s,level:r,id:a,deliveryDirectives:t||null})}},t.removeLevel=function removeLevel(e,t){var r=function filterLevelAndGroupByIdIndex(e,r){return r!==t},i=this._levels.filter((function(i,n){return n!==e||i.url.length>1&&void 0!==t&&(i.url=i.url.filter(r),i.audioGroupIds&&(i.audioGroupIds=i.audioGroupIds.filter(r)),i.textGroupIds&&(i.textGroupIds=i.textGroupIds.filter(r)),i.urlId=0,!0)})).map((function(e,t){var r=e.details;return null!=r&&r.fragments&&r.fragments.forEach((function(e){e.level=t})),e}));this._levels=i,this.hls.trigger(n.Events.LEVELS_UPDATED,{levels:i})},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(LevelController,[{key:"levels",get:function get(){return 0===this._levels.length?null:this._levels}},{key:"level",get:function get(){return this.currentLevelIndex},set:function set(e){var t,r=this._levels;if(0!==r.length&&(this.currentLevelIndex!==e||null===(t=r[e])||void 0===t||!t.details)){if(e<0||e>=r.length){var i=e<0;if(this.hls.trigger(n.Events.ERROR,{type:a.ErrorTypes.OTHER_ERROR,details:a.ErrorDetails.LEVEL_SWITCH_ERROR,level:e,fatal:i,reason:"invalid level idx"}),i)return;e=Math.min(e,r.length-1)}this.clearTimer();var s=this.currentLevelIndex,o=r[s],l=r[e];this.log("switching to level "+e+" from "+s),this.currentLevelIndex=e;var u=_extends({},l,{level:e,maxBitrate:l.maxBitrate,uri:l.uri,urlId:l.urlId});delete u._urlId,this.hls.trigger(n.Events.LEVEL_SWITCHING,u);var d=l.details;if(!d||d.live){var c=this.switchParams(l.uri,null==o?void 0:o.details);this.loadPlaylist(c)}}}},{key:"manualLevel",get:function get(){return this.manualLevelIndex},set:function set(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}},{key:"firstLevel",get:function get(){return this._firstLevel},set:function set(e){this._firstLevel=e}},{key:"startLevel",get:function get(){if(void 0===this._startLevel){var e=this.hls.config.startLevel;return void 0!==e?e:this._firstLevel}return this._startLevel},set:function set(e){this._startLevel=e}},{key:"nextLoadLevel",get:function get(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function set(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}}]),LevelController}(l.default)},"./src/controller/level-helper.ts":
|
|
56
|
-
/*!****************************************!*\
|
|
57
|
-
!*** ./src/controller/level-helper.ts ***!
|
|
58
|
-
\****************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{addGroupId:()=>addGroupId,addSliding:()=>addSliding,adjustSliding:()=>adjustSliding,assignTrackIdsByGroup:()=>assignTrackIdsByGroup,computeReloadInterval:()=>computeReloadInterval,getFragmentWithSN:()=>getFragmentWithSN,getPartWith:()=>getPartWith,mapFragmentIntersection:()=>mapFragmentIntersection,mapPartIntersection:()=>mapPartIntersection,mergeDetails:()=>mergeDetails,updateFragPTSDTS:()=>updateFragPTSDTS,updatePTS:()=>updatePTS});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../utils/logger */"./src/utils/logger.ts"),a=r(/*! ../loader/date-range */"./src/loader/date-range.ts");function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}function addGroupId(e,t,r){switch(t){case"audio":e.audioGroupIds||(e.audioGroupIds=[]),e.audioGroupIds.push(r);break;case"text":e.textGroupIds||(e.textGroupIds=[]),e.textGroupIds.push(r)}}function assignTrackIdsByGroup(e){var t={};e.forEach((function(e){var r=e.groupId||"";e.id=t[r]=t[r]||0,t[r]++}))}function updatePTS(e,t,r){updateFromToPTS(e[t],e[r])}function updateFromToPTS(e,t){var r=t.startPTS;if((0,i.isFiniteNumber)(r)){var n,a=0;t.sn>e.sn?(a=r-e.start,n=e):(a=e.start-r,n=t),n.duration!==a&&(n.duration=a)}else if(t.sn>e.sn){e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration}else t.start=Math.max(e.start-t.duration,0)}function updateFragPTSDTS(e,t,r,a,s,o){a-r<=0&&(n.logger.warn("Fragment should have a positive duration",t),a=r+t.duration,o=s+t.duration);var l=r,u=a,d=t.startPTS,c=t.endPTS;if((0,i.isFiniteNumber)(d)){var h=Math.abs(d-r);(0,i.isFiniteNumber)(t.deltaPTS)?t.deltaPTS=Math.max(h,t.deltaPTS):t.deltaPTS=h,l=Math.max(r,d),r=Math.min(r,d),s=Math.min(s,t.startDTS),u=Math.min(a,c),a=Math.max(a,c),o=Math.max(o,t.endDTS)}t.duration=a-r;var f=r-t.start;t.start=t.startPTS=r,t.maxStartPTS=l,t.startDTS=s,t.endPTS=a,t.minEndPTS=u,t.endDTS=o;var g,p=t.sn;if(!e||p<e.startSN||p>e.endSN)return 0;var v=p-e.startSN,m=e.fragments;for(m[v]=t,g=v;g>0;g--)updateFromToPTS(m[g],m[g-1]);for(g=v;g<m.length-1;g++)updateFromToPTS(m[g],m[g+1]);return e.fragmentHint&&updateFromToPTS(m[m.length-1],e.fragmentHint),e.PTSKnown=e.alignedSliding=!0,f}function mergeDetails(e,t){for(var r=null,s=e.fragments,o=s.length-1;o>=0;o--){var l=s[o].initSegment;if(l){r=l;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;var u,d=0;(mapFragmentIntersection(e,t,(function(e,n){e.relurl&&(d=e.cc-n.cc),(0,i.isFiniteNumber)(e.startPTS)&&(0,i.isFiniteNumber)(e.endPTS)&&(n.start=n.startPTS=e.startPTS,n.startDTS=e.startDTS,n.appendedPTS=e.appendedPTS,n.maxStartPTS=e.maxStartPTS,n.endPTS=e.endPTS,n.endDTS=e.endDTS,n.minEndPTS=e.minEndPTS,n.duration=e.endPTS-e.startPTS,n.duration&&(u=n),t.PTSKnown=t.alignedSliding=!0),n.elementaryStreams=e.elementaryStreams,n.loader=e.loader,n.stats=e.stats,n.urlId=e.urlId,e.initSegment&&(n.initSegment=e.initSegment,r=e.initSegment)})),r)&&(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((function(e){var t;e.initSegment&&e.initSegment.relurl!==(null===(t=r)||void 0===t?void 0:t.relurl)||(e.initSegment=r)}));if(t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((function(e){return!e})),t.deltaUpdateFailed){n.logger.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(var c=t.skippedSegments;c--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=function mergeDateRanges(e,t,r){var i=_extends({},e);r&&r.forEach((function(e){delete i[e]}));return Object.keys(t).forEach((function(e){var r=new a.DateRange(t[e].attr,i[e]);r.isValid?i[e]=r:n.logger.warn('Ignoring invalid Playlist Delta Update DATERANGE tag: "'+JSON.stringify(t[e].attr)+'"')})),i}(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));var h=t.fragments;if(d){n.logger.warn("discontinuity sliding from playlist, take drift into account");for(var f=0;f<h.length;f++)h[f].cc+=d}t.skippedSegments&&(t.startCC=t.fragments[0].cc),mapPartIntersection(e.partList,t.partList,(function(e,t){t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),u?updateFragPTSDTS(t,u,u.startPTS,u.endPTS,u.startDTS,u.endDTS):adjustSliding(e,t),h.length&&(t.totalduration=t.edge-h[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;var g=t.advancedDateTime;if(t.advanced&&g){var p=t.edge;t.driftStart||(t.driftStartTime=g,t.driftStart=p),t.driftEndTime=g,t.driftEnd=p}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function mapPartIntersection(e,t,r){if(e&&t)for(var i=0,n=0,a=e.length;n<=a;n++){var s=e[n],o=t[n+i];s&&o&&s.index===o.index&&s.fragment.sn===o.fragment.sn?r(s,o):i--}}function mapFragmentIntersection(e,t,r){for(var i=t.skippedSegments,n=Math.max(e.startSN,t.startSN)-t.startSN,a=(e.fragmentHint?1:0)+(i?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,s=t.startSN-e.startSN,o=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,u=n;u<=a;u++){var d=l[s+u],c=o[u];i&&!c&&u<i&&(c=t.fragments[u]=d),d&&c&&r(d,c)}}function adjustSliding(e,t){var r=t.startSN+t.skippedSegments-e.startSN,i=e.fragments;r<0||r>=i.length||addSliding(t,i[r].start)}function addSliding(e,t){if(t){for(var r=e.fragments,i=e.skippedSegments;i<r.length;i++)r[i].start+=t;e.fragmentHint&&(e.fragmentHint.start+=t)}}function computeReloadInterval(e,t){void 0===t&&(t=1/0);var r=1e3*e.targetduration;if(e.updated){var i=e.fragments;if(i.length&&4*r>t){var n=1e3*i[i.length-1].duration;n<r&&(r=n)}}else r/=2;return Math.round(r)}function getFragmentWithSN(e,t,r){if(!e||!e.details)return null;var i=e.details,n=i.fragments[t-i.startSN];return n||((n=i.fragmentHint)&&n.sn===t?n:t<i.startSN&&r&&r.sn===t?r:null)}function getPartWith(e,t,r){if(!e||!e.details)return null;var i=e.details.partList;if(i)for(var n=i.length;n--;){var a=i[n];if(a.index===r&&a.fragment.sn===t)return a}return null}},"./src/controller/stream-controller.ts":
|
|
59
|
-
/*!*********************************************!*\
|
|
60
|
-
!*** ./src/controller/stream-controller.ts ***!
|
|
61
|
-
\*********************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ./base-stream-controller */"./src/controller/base-stream-controller.ts"),a=r(/*! ../is-supported */"./src/is-supported.ts"),s=r(/*! ../events */"./src/events.ts"),o=r(/*! ../utils/buffer-helper */"./src/utils/buffer-helper.ts"),l=r(/*! ./fragment-tracker */"./src/controller/fragment-tracker.ts"),u=r(/*! ../types/loader */"./src/types/loader.ts"),d=r(/*! ../loader/fragment */"./src/loader/fragment.ts"),c=r(/*! ../demux/transmuxer-interface */"./src/demux/transmuxer-interface.ts"),h=r(/*! ../types/transmuxer */"./src/types/transmuxer.ts"),f=r(/*! ./gap-controller */"./src/controller/gap-controller.ts"),g=r(/*! ../errors */"./src/errors.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}var p=function(e){function StreamController(t,r,i){var n;return(n=e.call(this,t,r,i,"[stream-controller]")||this).audioCodecSwap=!1,n.gapController=null,n.level=-1,n._forceStartLoad=!1,n.altAudio=!1,n.audioOnly=!1,n.fragPlaying=null,n.onvplaying=null,n.onvseeked=null,n.fragLastKbps=0,n.couldBacktrack=!1,n.backtrackFragment=null,n.audioCodecSwitch=!1,n.videoBuffer=null,n._registerListeners(),n}!function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(StreamController,e);var t=StreamController.prototype;return t._registerListeners=function _registerListeners(){var e=this.hls;e.on(s.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(s.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(s.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(s.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(s.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(s.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(s.Events.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.on(s.Events.ERROR,this.onError,this),e.on(s.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(s.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(s.Events.BUFFER_CREATED,this.onBufferCreated,this),e.on(s.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(s.Events.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(s.Events.FRAG_BUFFERED,this.onFragBuffered,this)},t._unregisterListeners=function _unregisterListeners(){var e=this.hls;e.off(s.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(s.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(s.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(s.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(s.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(s.Events.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.off(s.Events.ERROR,this.onError,this),e.off(s.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(s.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(s.Events.BUFFER_CREATED,this.onBufferCreated,this),e.off(s.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(s.Events.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(s.Events.FRAG_BUFFERED,this.onFragBuffered,this)},t.onHandlerDestroying=function onHandlerDestroying(){this._unregisterListeners(),this.onMediaDetaching()},t.startLoad=function startLoad(e){if(this.levels){var t=this.lastCurrentTime,r=this.hls;if(this.stopLoad(),this.setInterval(100),this.level=-1,this.fragLoadError=0,!this.startFragRequested){var i=r.startLevel;-1===i&&(r.config.testBandwidth&&this.levels.length>1?(i=0,this.bitrateTest=!0):i=r.nextAutoLevel),this.level=r.nextLoadLevel=i,this.loadedmetadata=!1}t>0&&-1===e&&(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t),this.state=n.State.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=n.State.STOPPED},t.stopLoad=function stopLoad(){this._forceStartLoad=!1,e.prototype.stopLoad.call(this)},t.doTick=function doTick(){switch(this.state){case n.State.IDLE:this.doTickIdle();break;case n.State.WAITING_LEVEL:var e,t=this.levels,r=this.level,i=null==t||null===(e=t[r])||void 0===e?void 0:e.details;if(i&&(!i.live||this.levelLastLoaded===this.level)){if(this.waitForCdnTuneIn(i))break;this.state=n.State.IDLE;break}break;case n.State.FRAG_LOADING_WAITING_RETRY:var a,s=self.performance.now(),o=this.retryDate;(!o||s>=o||null!==(a=this.media)&&void 0!==a&&a.seeking)&&(this.log("retryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded(this.level),this.state=n.State.IDLE)}this.onTickEnd()},t.onTickEnd=function onTickEnd(){e.prototype.onTickEnd.call(this),this.checkBuffer(),this.checkFragmentChanged()},t.doTickIdle=function doTickIdle(){var e=this.hls,t=this.levelLastLoaded,r=this.levels,i=this.media,a=e.config,o=e.nextLoadLevel;if(null!==t&&(i||!this.startFragRequested&&a.startFragPrefetch)&&(!this.altAudio||!this.audioOnly)&&r&&r[o]){var c=r[o],h=this.getMainFwdBufferInfo();if(null!==h){var f=this.getLevelDetails();if(f&&this._streamEnded(h,f)){var g={};return this.altAudio&&(g.type="video"),this.hls.trigger(s.Events.BUFFER_EOS,g),void(this.state=n.State.ENDED)}this.level=e.nextLoadLevel=o;var p=c.details;if(!p||this.state===n.State.WAITING_LEVEL||p.live&&this.levelLastLoaded!==o)return this.level=o,void(this.state=n.State.WAITING_LEVEL);if(!(h.len>=this.getMaxBufferLength(c.maxBitrate))){this.backtrackFragment&&this.backtrackFragment.start>h.end&&(this.backtrackFragment=null);var v=this.backtrackFragment?this.backtrackFragment.start:h.end,m=this.getNextFragment(v,p);if(this.couldBacktrack&&!this.fragPrevious&&m&&"initSegment"!==m.sn&&this.fragmentTracker.getState(m)!==l.FragmentState.OK){var y,E=(null!=(y=this.backtrackFragment)?y:m).sn-p.startSN,T=p.fragments[E-1];T&&m.cc===T.cc&&(m=T,this.fragmentTracker.removeFragment(T))}else this.backtrackFragment&&h.len&&(this.backtrackFragment=null);if(m&&this.fragmentTracker.getState(m)===l.FragmentState.OK&&this.nextLoadPosition>v){var S=this.audioOnly&&!this.altAudio?d.ElementaryStreamTypes.AUDIO:d.ElementaryStreamTypes.VIDEO,b=(S===d.ElementaryStreamTypes.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;b&&this.afterBufferFlushed(b,S,u.PlaylistLevelType.MAIN),m=this.getNextFragment(this.nextLoadPosition,p)}m&&(!m.initSegment||m.initSegment.data||this.bitrateTest||(m=m.initSegment),this.loadFragment(m,p,v))}}}},t.loadFragment=function loadFragment(t,r,i){var n,a=this.fragmentTracker.getState(t);this.fragCurrent=t,a===l.FragmentState.NOT_LOADED?"initSegment"===t.sn?this._loadInitSegment(t,r):this.bitrateTest?(this.log("Fragment "+t.sn+" of level "+t.level+" is being downloaded to test bitrate and will not be buffered"),this._loadBitrateTestFrag(t,r)):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,r,i)):a===l.FragmentState.APPENDING?this.reduceMaxBufferLength(t.duration)&&this.fragmentTracker.removeFragment(t):0===(null===(n=this.media)||void 0===n?void 0:n.buffered.length)&&this.fragmentTracker.removeAllFragments()},t.getAppendedFrag=function getAppendedFrag(e){var t=this.fragmentTracker.getAppendedFrag(e,u.PlaylistLevelType.MAIN);return t&&"fragment"in t?t.fragment:t},t.getBufferedFrag=function getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,u.PlaylistLevelType.MAIN)},t.followingBufferedFrag=function followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null},t.immediateLevelSwitch=function immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},t.nextLevelSwitch=function nextLevelSwitch(){var e=this.levels,t=this.media;if(null!=t&&t.readyState){var r,i=this.getAppendedFrag(t.currentTime);if(i&&i.start>1&&this.flushMainBuffer(0,i.start-1),!t.paused&&e){var n=e[this.hls.nextLoadLevel],a=this.fragLastKbps;r=a&&this.fragCurrent?this.fragCurrent.duration*n.maxBitrate/(1e3*a)+1:0}else r=0;var s=this.getBufferedFrag(t.currentTime+r);if(s){var o=this.followingBufferedFrag(s);if(o){this.abortCurrentFrag();var l=o.maxStartPTS?o.maxStartPTS:o.start,u=o.duration,d=Math.max(s.end,l+Math.min(Math.max(u-this.config.maxFragLookUpTolerance,.5*u),.75*u));this.flushMainBuffer(d,Number.POSITIVE_INFINITY)}}}},t.abortCurrentFrag=function abortCurrentFrag(){var e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&e.abortRequests(),this.state){case n.State.KEY_LOADING:case n.State.FRAG_LOADING:case n.State.FRAG_LOADING_WAITING_RETRY:case n.State.PARSING:case n.State.PARSED:this.state=n.State.IDLE}this.nextLoadPosition=this.getLoadPosition()},t.flushMainBuffer=function flushMainBuffer(t,r){e.prototype.flushMainBuffer.call(this,t,r,this.altAudio?"video":null)},t.onMediaAttached=function onMediaAttached(t,r){e.prototype.onMediaAttached.call(this,t,r);var i=r.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new f.default(this.config,i,this.fragmentTracker,this.hls)},t.onMediaDetaching=function onMediaDetaching(){var t=this.media;t&&this.onvplaying&&this.onvseeked&&(t.removeEventListener("playing",this.onvplaying),t.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),e.prototype.onMediaDetaching.call(this)},t.onMediaPlaying=function onMediaPlaying(){this.tick()},t.onMediaSeeked=function onMediaSeeked(){var e=this.media,t=e?e.currentTime:null;(0,i.isFiniteNumber)(t)&&this.log("Media seeked to "+t.toFixed(3)),this.tick()},t.onManifestLoading=function onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(s.Events.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=0,this.fragPlaying=null,this.backtrackFragment=null},t.onManifestParsed=function onManifestParsed(e,t){var r,i=!1,n=!1;t.levels.forEach((function(e){(r=e.audioCodec)&&(-1!==r.indexOf("mp4a.40.2")&&(i=!0),-1!==r.indexOf("mp4a.40.5")&&(n=!0))})),this.audioCodecSwitch=i&&n&&!(0,a.changeTypeSupported)(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1},t.onLevelLoading=function onLevelLoading(e,t){var r=this.levels;if(r&&this.state===n.State.IDLE){var i=r[t.level];(!i.details||i.details.live&&this.levelLastLoaded!==t.level||this.waitForCdnTuneIn(i.details))&&(this.state=n.State.WAITING_LEVEL)}},t.onLevelLoaded=function onLevelLoaded(e,t){var r,i=this.levels,a=t.level,o=t.details,l=o.totalduration;if(i){this.log("Level "+a+" loaded ["+o.startSN+","+o.endSN+"], cc ["+o.startCC+", "+o.endCC+"] duration:"+l);var u=this.fragCurrent;!u||this.state!==n.State.FRAG_LOADING&&this.state!==n.State.FRAG_LOADING_WAITING_RETRY||u.level!==t.level&&u.loader&&(this.state=n.State.IDLE,this.backtrackFragment=null,u.abortRequests());var d=i[a],c=0;if(o.live||null!==(r=d.details)&&void 0!==r&&r.live){if(o.fragments[0]||(o.deltaUpdateFailed=!0),o.deltaUpdateFailed)return;c=this.alignPlaylists(o,d.details)}if(d.details=o,this.levelLastLoaded=a,this.hls.trigger(s.Events.LEVEL_UPDATED,{details:o,level:a}),this.state===n.State.WAITING_LEVEL){if(this.waitForCdnTuneIn(o))return;this.state=n.State.IDLE}this.startFragRequested?o.live&&this.synchronizeToLiveEdge(o):this.setStartPosition(o,c),this.tick()}else this.warn("Levels were reset while loading level "+a)},t._handleFragmentLoadProgress=function _handleFragmentLoadProgress(e){var t,r=e.frag,i=e.part,n=e.payload,a=this.levels;if(a){var s=a[r.level],o=s.details;if(o){var l=s.videoCodec,d=o.PTSKnown||!o.live,f=null===(t=r.initSegment)||void 0===t?void 0:t.data,g=this._getAudioCodec(s),p=this.transmuxer=this.transmuxer||new c.default(this.hls,u.PlaylistLevelType.MAIN,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),v=i?i.index:-1,m=-1!==v,y=new h.ChunkMetadata(r.level,r.sn,r.stats.chunkCount,n.byteLength,v,m),E=this.initPTS[r.cc];p.push(n,f,g,l,r,i,o.totalduration,d,y,E)}else this.warn("Dropping fragment "+r.sn+" of level "+r.level+" after level details were reset")}else this.warn("Levels were reset while fragment load was in progress. Fragment "+r.sn+" of level "+r.level+" will not be buffered")},t.onAudioTrackSwitching=function onAudioTrackSwitching(e,t){var r=this.altAudio,i=!!t.url,n=t.id;if(!i){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var a=this.fragCurrent;a&&(this.log("Switching to main audio track, cancel main fragment load"),a.abortRequests()),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();var o=this.hls;r&&o.trigger(s.Events.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),o.trigger(s.Events.AUDIO_TRACK_SWITCHED,{id:n})}},t.onAudioTrackSwitched=function onAudioTrackSwitched(e,t){var r=t.id,i=!!this.hls.audioTracks[r].url;if(i){var n=this.videoBuffer;n&&this.mediaBuffer!==n&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=n)}this.altAudio=i,this.tick()},t.onBufferCreated=function onBufferCreated(e,t){var r,i,n=t.tracks,a=!1;for(var s in n){var o=n[s];if("main"===o.id){if(i=s,r=o,"video"===s){var l=n[s];l&&(this.videoBuffer=l.buffer)}}else a=!0}a&&r?(this.log("Alternate track found, use "+i+".buffered to schedule main fragment loading"),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media},t.onFragBuffered=function onFragBuffered(e,t){var r=t.frag,i=t.part;if(!r||r.type===u.PlaylistLevelType.MAIN){if(this.fragContextChanged(r))return this.warn("Fragment "+r.sn+(i?" p: "+i.index:"")+" of level "+r.level+" finished buffering, but was aborted. state: "+this.state),void(this.state===n.State.PARSED&&(this.state=n.State.IDLE));var a=i?i.stats:r.stats;this.fragLastKbps=Math.round(8*a.total/(a.buffering.end-a.loading.first)),"initSegment"!==r.sn&&(this.fragPrevious=r),this.fragBufferedComplete(r,i)}},t.onError=function onError(e,t){if(t.type!==g.ErrorTypes.KEY_SYSTEM_ERROR)switch(t.details){case g.ErrorDetails.FRAG_LOAD_ERROR:case g.ErrorDetails.FRAG_LOAD_TIMEOUT:case g.ErrorDetails.FRAG_PARSING_ERROR:case g.ErrorDetails.KEY_LOAD_ERROR:case g.ErrorDetails.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(u.PlaylistLevelType.MAIN,t);break;case g.ErrorDetails.LEVEL_LOAD_ERROR:case g.ErrorDetails.LEVEL_LOAD_TIMEOUT:this.state!==n.State.ERROR&&(t.fatal?(this.warn(""+t.details),this.state=n.State.ERROR):t.levelRetry||this.state!==n.State.WAITING_LEVEL||(this.state=n.State.IDLE));break;case g.ErrorDetails.BUFFER_FULL_ERROR:if("main"===t.parent&&(this.state===n.State.PARSING||this.state===n.State.PARSED)){var r=!0,i=this.getFwdBufferInfo(this.media,u.PlaylistLevelType.MAIN);i&&i.len>.5&&(r=!this.reduceMaxBufferLength(i.len)),r&&(this.warn("buffer full error also media.currentTime is not buffered, flush main"),this.immediateLevelSwitch()),this.resetLoadingState()}}else this.onFragmentOrKeyLoadError(u.PlaylistLevelType.MAIN,t)},t.checkBuffer=function checkBuffer(){var e=this.media,t=this.gapController;if(e&&t&&e.readyState){if(this.loadedmetadata||!o.BufferHelper.getBuffered(e).length){var r=this.state!==n.State.IDLE?this.fragCurrent:null;t.poll(this.lastCurrentTime,r)}this.lastCurrentTime=e.currentTime}},t.onFragLoadEmergencyAborted=function onFragLoadEmergencyAborted(){this.state=n.State.IDLE,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()},t.onBufferFlushed=function onBufferFlushed(e,t){var r=t.type;if(r!==d.ElementaryStreamTypes.AUDIO||this.audioOnly&&!this.altAudio){var i=(r===d.ElementaryStreamTypes.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(i,r,u.PlaylistLevelType.MAIN)}},t.onLevelsUpdated=function onLevelsUpdated(e,t){this.levels=t.levels},t.swapAudioCodec=function swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap},t.seekToStartPos=function seekToStartPos(){var e=this.media;if(e){var t=e.currentTime,r=this.startPosition;if(r>=0&&t<r){if(e.seeking)return void this.log("could not seek to "+r+", already seeking at "+t);var i=o.BufferHelper.getBuffered(e),n=(i.length?i.start(0):0)-r;n>0&&(n<this.config.maxBufferHole||n<this.config.maxFragLookUpTolerance)&&(this.log("adjusting start position by "+n+" to match buffer start"),r+=n,this.startPosition=r),this.log("seek to target start position "+r+" from current time "+t),e.currentTime=r}}},t._getAudioCodec=function _getAudioCodec(e){var t=this.config.defaultAudioCodec||e.audioCodec;return this.audioCodecSwap&&t&&(this.log("Swapping audio codec"),t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),t},t._loadBitrateTestFrag=function _loadBitrateTestFrag(e,t){var r=this;e.bitrateTest=!0,this._doFragLoad(e,t).then((function(t){var i=r.hls;if(t&&!i.nextLoadLevel&&!r.fragContextChanged(e)){r.fragLoadError=0,r.state=n.State.IDLE,r.startFragRequested=!1,r.bitrateTest=!1;var a=e.stats;a.parsing.start=a.parsing.end=a.buffering.start=a.buffering.end=self.performance.now(),i.trigger(s.Events.FRAG_LOADED,t),e.bitrateTest=!1}}))},t._handleTransmuxComplete=function _handleTransmuxComplete(e){var t,r="main",a=this.hls,o=e.remuxResult,l=e.chunkMeta,u=this.getCurrentContext(l);if(!u)return this.warn("The loading context changed while buffering fragment "+l.sn+" of level "+l.level+". This chunk will not be buffered."),void this.resetStartWhenNotLoaded(l.level);var c=u.frag,h=u.part,f=u.level,g=o.video,p=o.text,v=o.id3,m=o.initSegment,y=f.details,E=this.altAudio?void 0:o.audio;if(!this.fragContextChanged(c)){if(this.state=n.State.PARSING,m){m.tracks&&(this._bufferInitSegment(f,m.tracks,c,l),a.trigger(s.Events.FRAG_PARSING_INIT_SEGMENT,{frag:c,id:r,tracks:m.tracks}));var T=m.initPTS,S=m.timescale;(0,i.isFiniteNumber)(T)&&(this.initPTS[c.cc]=T,a.trigger(s.Events.INIT_PTS_FOUND,{frag:c,id:r,initPTS:T,timescale:S}))}if(g&&!1!==o.independent){if(y){var b=g.startPTS,L=g.endPTS,D=g.startDTS,A=g.endDTS;if(h)h.elementaryStreams[g.type]={startPTS:b,endPTS:L,startDTS:D,endDTS:A};else if(g.firstKeyFrame&&g.independent&&1===l.id&&(this.couldBacktrack=!0),g.dropped&&g.independent){var k=this.getMainFwdBufferInfo();if((k?k.end:this.getLoadPosition())+this.config.maxBufferHole<(g.firstKeyFramePTS?g.firstKeyFramePTS:b)-this.config.maxBufferHole)return void this.backtrack(c);c.setElementaryStreamInfo(g.type,c.start,L,c.start,A,!0)}c.setElementaryStreamInfo(g.type,b,L,D,A),this.backtrackFragment&&(this.backtrackFragment=c),this.bufferFragmentData(g,c,h,l)}}else if(!1===o.independent)return void this.backtrack(c);if(E){var C=E.startPTS,P=E.endPTS,I=E.startDTS,_=E.endDTS;h&&(h.elementaryStreams[d.ElementaryStreamTypes.AUDIO]={startPTS:C,endPTS:P,startDTS:I,endDTS:_}),c.setElementaryStreamInfo(d.ElementaryStreamTypes.AUDIO,C,P,I,_),this.bufferFragmentData(E,c,h,l)}if(y&&null!=v&&null!==(t=v.samples)&&void 0!==t&&t.length){var R={id:r,frag:c,details:y,samples:v.samples};a.trigger(s.Events.FRAG_PARSING_METADATA,R)}if(y&&p){var w={id:r,frag:c,details:y,samples:p.samples};a.trigger(s.Events.FRAG_PARSING_USERDATA,w)}}},t._bufferInitSegment=function _bufferInitSegment(e,t,r,i){var a=this;if(this.state===n.State.PARSING){this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;var o=t.audio,l=t.video,u=t.audiovideo;if(o){var d=e.audioCodec,c=navigator.userAgent.toLowerCase();this.audioCodecSwitch&&(d&&(d=-1!==d.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),1!==o.metadata.channelCount&&-1===c.indexOf("firefox")&&(d="mp4a.40.5")),-1!==c.indexOf("android")&&"audio/mpeg"!==o.container&&(d="mp4a.40.2",this.log("Android: force audio codec to "+d)),e.audioCodec&&e.audioCodec!==d&&this.log('Swapping manifest audio codec "'+e.audioCodec+'" for "'+d+'"'),o.levelCodec=d,o.id="main",this.log("Init audio buffer, container:"+o.container+", codecs[selected/level/parsed]=["+(d||"")+"/"+(e.audioCodec||"")+"/"+o.codec+"]")}l&&(l.levelCodec=e.videoCodec,l.id="main",this.log("Init video buffer, container:"+l.container+", codecs[level/parsed]=["+(e.videoCodec||"")+"/"+l.codec+"]")),u&&this.log("Init audiovideo buffer, container:"+u.container+", codecs[level/parsed]=["+(e.attrs.CODECS||"")+"/"+u.codec+"]"),this.hls.trigger(s.Events.BUFFER_CODECS,t),Object.keys(t).forEach((function(e){var n=t[e].initSegment;null!=n&&n.byteLength&&a.hls.trigger(s.Events.BUFFER_APPENDING,{type:e,data:n,frag:r,part:null,chunkMeta:i,parent:r.type})})),this.tick()}},t.getMainFwdBufferInfo=function getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,u.PlaylistLevelType.MAIN)},t.backtrack=function backtrack(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=n.State.IDLE},t.checkFragmentChanged=function checkFragmentChanged(){var e=this.media,t=null;if(e&&e.readyState>1&&!1===e.seeking){var r=e.currentTime;if(o.BufferHelper.isBuffered(e,r)?t=this.getAppendedFrag(r):o.BufferHelper.isBuffered(e,r+.1)&&(t=this.getAppendedFrag(r+.1)),t){this.backtrackFragment=null;var i=this.fragPlaying,n=t.level;i&&t.sn===i.sn&&i.level===n&&t.urlId===i.urlId||(this.fragPlaying=t,this.hls.trigger(s.Events.FRAG_CHANGED,{frag:t}),i&&i.level===n||this.hls.trigger(s.Events.LEVEL_SWITCHED,{level:n}))}}},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(StreamController,[{key:"nextLevel",get:function get(){var e=this.nextBufferedFrag;return e?e.level:-1}},{key:"currentFrag",get:function get(){var e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}},{key:"currentProgramDateTime",get:function get(){var e=this.media;if(e){var t=e.currentTime,r=this.currentFrag;if(r&&(0,i.isFiniteNumber)(t)&&(0,i.isFiniteNumber)(r.programDateTime)){var n=r.programDateTime+1e3*(t-r.start);return new Date(n)}}return null}},{key:"currentLevel",get:function get(){var e=this.currentFrag;return e?e.level:-1}},{key:"nextBufferedFrag",get:function get(){var e=this.currentFrag;return e?this.followingBufferedFrag(e):null}},{key:"forceStartLoad",get:function get(){return this._forceStartLoad}}]),StreamController}(n.default)},"./src/controller/subtitle-stream-controller.ts":
|
|
62
|
-
/*!******************************************************!*\
|
|
63
|
-
!*** ./src/controller/subtitle-stream-controller.ts ***!
|
|
64
|
-
\******************************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{SubtitleStreamController:()=>h});var i=r(/*! ../events */"./src/events.ts"),n=r(/*! ../utils/buffer-helper */"./src/utils/buffer-helper.ts"),a=r(/*! ./fragment-finders */"./src/controller/fragment-finders.ts"),s=r(/*! ../utils/discontinuities */"./src/utils/discontinuities.ts"),o=r(/*! ./level-helper */"./src/controller/level-helper.ts"),l=r(/*! ./fragment-tracker */"./src/controller/fragment-tracker.ts"),u=r(/*! ./base-stream-controller */"./src/controller/base-stream-controller.ts"),d=r(/*! ../types/loader */"./src/types/loader.ts"),c=r(/*! ../types/level */"./src/types/level.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}var h=function(e){function SubtitleStreamController(t,r,i){var n;return(n=e.call(this,t,r,i,"[subtitle-stream-controller]")||this).levels=[],n.currentTrackId=-1,n.tracksBuffered=[],n.mainDetails=null,n._registerListeners(),n}!function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(SubtitleStreamController,e);var t=SubtitleStreamController.prototype;return t.onHandlerDestroying=function onHandlerDestroying(){this._unregisterListeners(),this.mainDetails=null},t._registerListeners=function _registerListeners(){var e=this.hls;e.on(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(i.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(i.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(i.Events.ERROR,this.onError,this),e.on(i.Events.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(i.Events.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(i.Events.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(i.Events.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(i.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(i.Events.FRAG_BUFFERED,this.onFragBuffered,this)},t._unregisterListeners=function _unregisterListeners(){var e=this.hls;e.off(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(i.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(i.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(i.Events.ERROR,this.onError,this),e.off(i.Events.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(i.Events.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(i.Events.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(i.Events.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(i.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(i.Events.FRAG_BUFFERED,this.onFragBuffered,this)},t.startLoad=function startLoad(e){this.stopLoad(),this.state=u.State.IDLE,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()},t.onManifestLoading=function onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()},t.onLevelLoaded=function onLevelLoaded(e,t){this.mainDetails=t.details},t.onSubtitleFragProcessed=function onSubtitleFragProcessed(e,t){var r=t.frag,i=t.success;if(this.fragPrevious=r,this.state=u.State.IDLE,i){var n=this.tracksBuffered[this.currentTrackId];if(n){for(var a,s=r.start,o=0;o<n.length;o++)if(s>=n[o].start&&s<=n[o].end){a=n[o];break}var l=r.start+r.duration;a?a.end=l:(a={start:s,end:l},n.push(a)),this.fragmentTracker.fragBuffered(r)}}},t.onBufferFlushing=function onBufferFlushing(e,t){var r=t.startOffset,i=t.endOffset;if(0===r&&i!==Number.POSITIVE_INFINITY){var n=this.currentTrackId,a=this.levels;if(!a.length||!a[n]||!a[n].details)return;var s=i-a[n].details.targetduration;if(s<=0)return;t.endOffsetSubtitles=Math.max(0,s),this.tracksBuffered.forEach((function(e){for(var t=0;t<e.length;)if(e[t].end<=s)e.shift();else{if(!(e[t].start<s))break;e[t].start=s,t++}})),this.fragmentTracker.removeFragmentsInRange(r,s,d.PlaylistLevelType.SUBTITLE)}},t.onFragBuffered=function onFragBuffered(e,t){var r;this.loadedmetadata||t.frag.type!==d.PlaylistLevelType.MAIN||null!==(r=this.media)&&void 0!==r&&r.buffered.length&&(this.loadedmetadata=!0)},t.onError=function onError(e,t){var r=t.frag;r&&r.type===d.PlaylistLevelType.SUBTITLE&&(this.fragCurrent&&this.fragCurrent.abortRequests(),this.state=u.State.IDLE)},t.onSubtitleTracksUpdated=function onSubtitleTracksUpdated(e,t){var r=this,i=t.subtitleTracks;this.tracksBuffered=[],this.levels=i.map((function(e){return new c.Level(e)})),this.fragmentTracker.removeAllFragments(),this.fragPrevious=null,this.levels.forEach((function(e){r.tracksBuffered[e.id]=[]})),this.mediaBuffer=null},t.onSubtitleTrackSwitch=function onSubtitleTrackSwitch(e,t){if(this.currentTrackId=t.id,this.levels.length&&-1!==this.currentTrackId){var r=this.levels[this.currentTrackId];null!=r&&r.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,r&&this.setInterval(500)}else this.clearInterval()},t.onSubtitleTrackLoaded=function onSubtitleTrackLoaded(e,t){var r,i=t.details,n=t.id,l=this.currentTrackId,d=this.levels;if(d.length){var c=d[l];if(!(n>=d.length||n!==l)&&c){this.mediaBuffer=this.mediaBufferTimeRanges;var h=0;if(i.live||null!==(r=c.details)&&void 0!==r&&r.live){var f=this.mainDetails;if(i.deltaUpdateFailed||!f)return;var g=f.fragments[0];c.details?0===(h=this.alignPlaylists(i,c.details))&&g&&(h=g.start,(0,o.addSliding)(i,h)):i.hasProgramDateTime&&f.hasProgramDateTime?((0,s.alignMediaPlaylistByPDT)(i,f),h=i.fragments[0].start):g&&(h=g.start,(0,o.addSliding)(i,h))}if(c.details=i,this.levelLastLoaded=n,this.startFragRequested||!this.mainDetails&&i.live||this.setStartPosition(c.details,h),this.tick(),i.live&&!this.fragCurrent&&this.media&&this.state===u.State.IDLE)(0,a.findFragmentByPTS)(null,i.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),c.details=void 0)}}},t._handleFragmentLoadComplete=function _handleFragmentLoadComplete(e){var t=this,r=e.frag,n=e.payload,a=r.decryptdata,s=this.hls;if(!this.fragContextChanged(r)&&n&&n.byteLength>0&&a&&a.key&&a.iv&&"AES-128"===a.method){var o=performance.now();this.decrypter.decrypt(new Uint8Array(n),a.key.buffer,a.iv.buffer).then((function(e){var t=performance.now();s.trigger(i.Events.FRAG_DECRYPTED,{frag:r,payload:e,stats:{tstart:o,tdecrypt:t}})})).catch((function(e){t.warn(e.name+": "+e.message),t.state=u.State.IDLE}))}},t.doTick=function doTick(){if(this.media){if(this.state===u.State.IDLE){var e=this.currentTrackId,t=this.levels;if(!t.length||!t[e]||!t[e].details)return;var r=t[e].details,i=r.targetduration,s=this.config,o=this.getLoadPosition(),c=n.BufferHelper.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],o-i,s.maxBufferHole),h=c.end,f=c.len,g=this.getFwdBufferInfo(this.media,d.PlaylistLevelType.MAIN);if(f>this.getMaxBufferLength(null==g?void 0:g.len)+i)return;console.assert(r,"Subtitle track details are defined on idle subtitle stream controller tick");var p=r.fragments,v=p.length,m=r.edge,y=null,E=this.fragPrevious;if(h<m){var T=s.maxFragLookUpTolerance;!(y=(0,a.findFragmentByPTS)(E,p,Math.max(p[0].start,h),T))&&E&&E.start<p[0].start&&(y=p[0])}else y=p[v-1];if(!y)return;y=this.mapToInitFragWhenRequired(y),this.fragmentTracker.getState(y)===l.FragmentState.NOT_LOADED&&this.loadFragment(y,r,h)}}else this.state=u.State.IDLE},t.getMaxBufferLength=function getMaxBufferLength(t){var r=e.prototype.getMaxBufferLength.call(this);return t?Math.max(r,t):r},t.loadFragment=function loadFragment(t,r,i){this.fragCurrent=t,"initSegment"===t.sn?this._loadInitSegment(t,r):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,r,i))},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(SubtitleStreamController,[{key:"mediaBufferTimeRanges",get:function get(){return new f(this.tracksBuffered[this.currentTrackId]||[])}}]),SubtitleStreamController}(u.default),f=function BufferableInstance(e){this.buffered=void 0;var t=function getRange(t,r,i){if((r>>>=0)>i-1)throw new DOMException("Failed to execute '"+t+"' on 'TimeRanges': The index provided ("+r+") is greater than the maximum bound ("+i+")");return e[r][t]};this.buffered={get length(){return e.length},end:function end(r){return t("end",r,e.length)},start:function start(r){return t("start",r,e.length)}}}},"./src/controller/subtitle-track-controller.ts":
|
|
65
|
-
/*!*****************************************************!*\
|
|
66
|
-
!*** ./src/controller/subtitle-track-controller.ts ***!
|
|
67
|
-
\*****************************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var i=r(/*! ../events */"./src/events.ts"),n=r(/*! ../utils/texttrack-utils */"./src/utils/texttrack-utils.ts"),a=r(/*! ./base-playlist-controller */"./src/controller/base-playlist-controller.ts"),s=r(/*! ../types/loader */"./src/types/loader.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}function filterSubtitleTracks(e){for(var t=[],r=0;r<e.length;r++){var i=e[r];"subtitles"===i.kind&&i.label&&t.push(e[r])}return t}const o=function(e){function SubtitleTrackController(t){var r;return(r=e.call(this,t,"[subtitle-track-controller]")||this).media=null,r.tracks=[],r.groupId=null,r.tracksInGroup=[],r.trackId=-1,r.selectDefaultTrack=!0,r.queuedDefaultTrack=-1,r.trackChangeListener=function(){return r.onTextTracksChanged()},r.asyncPollTrackChange=function(){return r.pollTrackChange(0)},r.useTextTrackPolling=!1,r.subtitlePollingInterval=-1,r._subtitleDisplay=!0,r.registerListeners(),r}!function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(SubtitleTrackController,e);var t=SubtitleTrackController.prototype;return t.destroy=function destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.trackChangeListener=this.asyncPollTrackChange=null,e.prototype.destroy.call(this)},t.registerListeners=function registerListeners(){var e=this.hls;e.on(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(i.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(i.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(i.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(i.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(i.Events.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(i.Events.ERROR,this.onError,this)},t.unregisterListeners=function unregisterListeners(){var e=this.hls;e.off(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(i.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(i.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(i.Events.LEVEL_LOADING,this.onLevelLoading,this),e.off(i.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(i.Events.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(i.Events.ERROR,this.onError,this)},t.onMediaAttached=function onMediaAttached(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))},t.pollTrackChange=function pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.trackChangeListener,e)},t.onMediaDetaching=function onMediaDetaching(){this.media&&(self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId),filterSubtitleTracks(this.media.textTracks).forEach((function(e){(0,n.clearCurrentCues)(e)})),this.subtitleTrack=-1,this.media=null)},t.onManifestLoading=function onManifestLoading(){this.tracks=[],this.groupId=null,this.tracksInGroup=[],this.trackId=-1,this.selectDefaultTrack=!0},t.onManifestParsed=function onManifestParsed(e,t){this.tracks=t.subtitleTracks},t.onSubtitleTrackLoaded=function onSubtitleTrackLoaded(e,t){var r=t.id,i=t.details,n=this.trackId,a=this.tracksInGroup[n];if(a){var s=a.details;a.details=t.details,this.log("subtitle track "+r+" loaded ["+i.startSN+"-"+i.endSN+"]"),r===this.trackId&&(this.retryCount=0,this.playlistLoaded(r,t,s))}else this.warn("Invalid subtitle track id "+r)},t.onLevelLoading=function onLevelLoading(e,t){this.switchLevel(t.level)},t.onLevelSwitching=function onLevelSwitching(e,t){this.switchLevel(t.level)},t.switchLevel=function switchLevel(e){var t=this.hls.levels[e];if(null!=t&&t.textGroupIds){var r=t.textGroupIds[t.urlId];if(this.groupId!==r){var n=this.tracksInGroup?this.tracksInGroup[this.trackId]:void 0,a=this.tracks.filter((function(e){return!r||e.groupId===r}));this.tracksInGroup=a;var s=this.findTrackId(null==n?void 0:n.name)||this.findTrackId();this.groupId=r;var o={subtitleTracks:a};this.log("Updating subtitle tracks, "+a.length+' track(s) found in "'+r+'" group-id'),this.hls.trigger(i.Events.SUBTITLE_TRACKS_UPDATED,o),-1!==s&&this.setSubtitleTrack(s,n)}}},t.findTrackId=function findTrackId(e){for(var t=this.tracksInGroup,r=0;r<t.length;r++){var i=t[r];if((!this.selectDefaultTrack||i.default)&&(!e||e===i.name))return i.id}return-1},t.onError=function onError(t,r){e.prototype.onError.call(this,t,r),!r.fatal&&r.context&&r.context.type===s.PlaylistContextType.SUBTITLE_TRACK&&r.context.id===this.trackId&&r.context.groupId===this.groupId&&this.retryLoadingOrFail(r)},t.loadPlaylist=function loadPlaylist(t){e.prototype.loadPlaylist.call(this);var r=this.tracksInGroup[this.trackId];if(this.shouldLoadTrack(r)){var n=r.id,a=r.groupId,s=r.url;if(t)try{s=t.addDirectives(s)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("Loading subtitle playlist for id "+n),this.hls.trigger(i.Events.SUBTITLE_TRACK_LOADING,{url:s,id:n,groupId:a,deliveryDirectives:t||null})}},t.toggleTrackModes=function toggleTrackModes(e){var t=this,r=this.media,i=this.trackId;if(r){var n=filterSubtitleTracks(r.textTracks),a=n.filter((function(e){return e.groupId===t.groupId}));if(-1===e)[].slice.call(n).forEach((function(e){e.mode="disabled"}));else{var s=a[i];s&&(s.mode="disabled")}var o=a[e];o&&(o.mode=this.subtitleDisplay?"showing":"hidden")}},t.setSubtitleTrack=function setSubtitleTrack(e,t){var r,n=this.tracksInGroup;if(this.media){if(this.trackId!==e&&this.toggleTrackModes(e),!(this.trackId===e&&(-1===e||null!==(r=n[e])&&void 0!==r&&r.details)||e<-1||e>=n.length)){this.clearTimer();var a=n[e];if(this.log("Switching to subtitle track "+e),this.trackId=e,a){var s=a.id,o=a.groupId,l=void 0===o?"":o,u=a.name,d=a.type,c=a.url;this.hls.trigger(i.Events.SUBTITLE_TRACK_SWITCH,{id:s,groupId:l,name:u,type:d,url:c});var h=this.switchParams(a.url,null==t?void 0:t.details);this.loadPlaylist(h)}else this.hls.trigger(i.Events.SUBTITLE_TRACK_SWITCH,{id:e})}}else this.queuedDefaultTrack=e},t.onTextTracksChanged=function onTextTracksChanged(){if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),this.media&&this.hls.config.renderTextTracksNatively){for(var e=-1,t=filterSubtitleTracks(this.media.textTracks),r=0;r<t.length;r++)if("hidden"===t[r].mode)e=r;else if("showing"===t[r].mode){e=r;break}this.subtitleTrack!==e&&(this.subtitleTrack=e)}},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(SubtitleTrackController,[{key:"subtitleDisplay",get:function get(){return this._subtitleDisplay},set:function set(e){this._subtitleDisplay=e,this.trackId>-1&&this.toggleTrackModes(this.trackId)}},{key:"subtitleTracks",get:function get(){return this.tracksInGroup}},{key:"subtitleTrack",get:function get(){return this.trackId},set:function set(e){this.selectDefaultTrack=!1;var t=this.tracksInGroup?this.tracksInGroup[this.trackId]:void 0;this.setSubtitleTrack(e,t)}}]),SubtitleTrackController}(a.default)},"./src/controller/timeline-controller.ts":
|
|
68
|
-
/*!***********************************************!*\
|
|
69
|
-
!*** ./src/controller/timeline-controller.ts ***!
|
|
70
|
-
\***********************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{TimelineController:()=>f});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../events */"./src/events.ts"),a=r(/*! ../utils/cea-608-parser */"./src/utils/cea-608-parser.ts"),s=r(/*! ../utils/output-filter */"./src/utils/output-filter.ts"),o=r(/*! ../utils/webvtt-parser */"./src/utils/webvtt-parser.ts"),l=r(/*! ../utils/texttrack-utils */"./src/utils/texttrack-utils.ts"),u=r(/*! ../utils/imsc1-ttml-parser */"./src/utils/imsc1-ttml-parser.ts"),d=r(/*! ../utils/mp4-tools */"./src/utils/mp4-tools.ts"),c=r(/*! ../types/loader */"./src/types/loader.ts"),h=r(/*! ../utils/logger */"./src/utils/logger.ts"),f=function(){function TimelineController(e){if(this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.timescale=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},this.config.enableCEA708Captions){var t=new s.default(this,"textTrack1"),r=new s.default(this,"textTrack2"),i=new s.default(this,"textTrack3"),o=new s.default(this,"textTrack4");this.cea608Parser1=new a.default(1,t,r),this.cea608Parser2=new a.default(3,i,o)}e.on(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(n.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(n.Events.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(n.Events.FRAG_LOADING,this.onFragLoading,this),e.on(n.Events.FRAG_LOADED,this.onFragLoaded,this),e.on(n.Events.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(n.Events.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(n.Events.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(n.Events.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this)}var e=TimelineController.prototype;return e.destroy=function destroy(){var e=this.hls;e.off(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(n.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(n.Events.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(n.Events.FRAG_LOADING,this.onFragLoading,this),e.off(n.Events.FRAG_LOADED,this.onFragLoaded,this),e.off(n.Events.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(n.Events.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(n.Events.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(n.Events.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.cea608Parser1=this.cea608Parser2=null},e.addCues=function addCues(e,t,r,i,a){for(var s,o,l,u,d=!1,c=a.length;c--;){var h=a[c],f=(s=h[0],o=h[1],l=t,u=r,Math.min(o,u)-Math.max(s,l));if(f>=0&&(h[0]=Math.min(h[0],t),h[1]=Math.max(h[1],r),d=!0,f/(r-t)>.5))return}if(d||a.push([t,r]),this.config.renderTextTracksNatively){var g=this.captionsTracks[e];this.Cues.newCue(g,t,r,i)}else{var p=this.Cues.newCue(null,t,r,i);this.hls.trigger(n.Events.CUES_PARSED,{type:"captions",cues:p,track:e})}},e.onInitPtsFound=function onInitPtsFound(e,t){var r=this,i=t.frag,a=t.id,s=t.initPTS,o=t.timescale,l=this.unparsedVttFrags;"main"===a&&(this.initPTS[i.cc]=s,this.timescale[i.cc]=o),l.length&&(this.unparsedVttFrags=[],l.forEach((function(e){r.onFragLoaded(n.Events.FRAG_LOADED,e)})))},e.getExistingTrack=function getExistingTrack(e){var t=this.media;if(t)for(var r=0;r<t.textTracks.length;r++){var i=t.textTracks[r];if(i[e])return i}return null},e.createCaptionsTrack=function createCaptionsTrack(e){this.config.renderTextTracksNatively?this.createNativeTrack(e):this.createNonNativeTrack(e)},e.createNativeTrack=function createNativeTrack(e){if(!this.captionsTracks[e]){var t=this.captionsProperties,r=this.captionsTracks,i=this.media,n=t[e],a=n.label,s=n.languageCode,o=this.getExistingTrack(e);if(o)r[e]=o,(0,l.clearCurrentCues)(r[e]),(0,l.sendAddTrackEvent)(r[e],i);else{var u=this.createTextTrack("captions",a,s);u&&(u[e]=!0,r[e]=u)}}},e.createNonNativeTrack=function createNonNativeTrack(e){if(!this.nonNativeCaptionsTracks[e]){var t=this.captionsProperties[e];if(t){var r={_id:e,label:t.label,kind:"captions",default:!!t.media&&!!t.media.default,closedCaptions:t.media};this.nonNativeCaptionsTracks[e]=r,this.hls.trigger(n.Events.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:[r]})}}},e.createTextTrack=function createTextTrack(e,t,r){var i=this.media;if(i)return i.addTextTrack(e,t,r)},e.onMediaAttaching=function onMediaAttaching(e,t){this.media=t.media,this._cleanTracks()},e.onMediaDetaching=function onMediaDetaching(){var e=this.captionsTracks;Object.keys(e).forEach((function(t){(0,l.clearCurrentCues)(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}},e.onManifestLoading=function onManifestLoading(){this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=this.unparsedVttFrags||[],this.initPTS=[],this.timescale=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())},e._cleanTracks=function _cleanTracks(){var e=this.media;if(e){var t=e.textTracks;if(t)for(var r=0;r<t.length;r++)(0,l.clearCurrentCues)(t[r])}},e.onSubtitleTracksUpdated=function onSubtitleTracksUpdated(e,t){var r=this;this.textTracks=[];var i=t.subtitleTracks||[],a=i.some((function(e){return e.textCodec===u.IMSC1_CODEC}));if(this.config.enableWebVTT||a&&this.config.enableIMSC1){var s=this.tracks&&i&&this.tracks.length===i.length;if(this.tracks=i||[],this.config.renderTextTracksNatively){var o=this.media?this.media.textTracks:[];this.tracks.forEach((function(e,t){var i;if(t<o.length){for(var n=null,a=0;a<o.length;a++)if(canReuseVttTextTrack(o[a],e)){n=o[a];break}n&&(i=n)}if(i)(0,l.clearCurrentCues)(i);else{var s=r._captionsOrSubtitlesFromCharacteristics(e);(i=r.createTextTrack(s,e.name,e.lang))&&(i.mode="disabled")}i&&(i.groupId=e.groupId,r.textTracks.push(i))}))}else if(!s&&this.tracks&&this.tracks.length){var d=this.tracks.map((function(e){return{label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e}}));this.hls.trigger(n.Events.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:d})}}},e._captionsOrSubtitlesFromCharacteristics=function _captionsOrSubtitlesFromCharacteristics(e){var t;if(null!==(t=e.attrs)&&void 0!==t&&t.CHARACTERISTICS){var r=/transcribes-spoken-dialog/gi.test(e.attrs.CHARACTERISTICS),i=/describes-music-and-sound/gi.test(e.attrs.CHARACTERISTICS);if(r&&i)return"captions"}return"subtitles"},e.onManifestLoaded=function onManifestLoaded(e,t){var r=this;this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((function(e){var t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(t){var i="textTrack"+t[1],n=r.captionsProperties[i];n&&(n.label=e.name,e.lang&&(n.languageCode=e.lang),n.media=e)}}))},e.closedCaptionsForLevel=function closedCaptionsForLevel(e){var t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]},e.onFragLoading=function onFragLoading(e,t){var r=this.cea608Parser1,i=this.cea608Parser2,n=this.lastSn,a=this.lastPartIndex;if(this.enabled&&r&&i&&t.frag.type===c.PlaylistLevelType.MAIN){var s,o,l=t.frag.sn,u=null!=(s=null==t||null===(o=t.part)||void 0===o?void 0:o.index)?s:-1;l===n+1||l===n&&u===a+1||(r.reset(),i.reset()),this.lastSn=l,this.lastPartIndex=u}},e.onFragLoaded=function onFragLoaded(e,t){var r=t.frag,a=t.payload,s=this.initPTS,o=this.unparsedVttFrags;if(r.type===c.PlaylistLevelType.SUBTITLE)if(a.byteLength){if(!(0,i.isFiniteNumber)(s[r.cc]))return o.push(t),void(s.length&&this.hls.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:r,error:new Error("Missing initial subtitle PTS")}));var l=r.decryptdata,d="stats"in t;if(null==l||!l.encrypted||d){var h=this.tracks[r.level],f=this.vttCCs;f[r.cc]||(f[r.cc]={start:r.start,prevCC:this.prevCC,new:!0},this.prevCC=r.cc),h&&h.textCodec===u.IMSC1_CODEC?this._parseIMSC1(r,a):this._parseVTTs(r,a,f)}}else this.hls.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:r,error:new Error("Empty subtitle payload")})},e._parseIMSC1=function _parseIMSC1(e,t){var r=this,i=this.hls;(0,u.parseIMSC1)(t,this.initPTS[e.cc],this.timescale[e.cc],(function(t){r._appendCues(t,e.level),i.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(function(t){h.logger.log("Failed to parse IMSC1: "+t),i.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))},e._parseVTTs=function _parseVTTs(e,t,r){var i,a=this,s=this.hls,l=null!==(i=e.initSegment)&&void 0!==i&&i.data?(0,d.appendUint8Array)(e.initSegment.data,new Uint8Array(t)):t;(0,o.parseWebVTT)(l,this.initPTS[e.cc],this.timescale[e.cc],r,e.cc,e.start,(function(t){a._appendCues(t,e.level),s.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(function(r){a._fallbackToIMSC1(e,t),h.logger.log("Failed to parse VTT cue: "+r),s.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:r})}))},e._fallbackToIMSC1=function _fallbackToIMSC1(e,t){var r=this,i=this.tracks[e.level];i.textCodec||(0,u.parseIMSC1)(t,this.initPTS[e.cc],this.timescale[e.cc],(function(){i.textCodec=u.IMSC1_CODEC,r._parseIMSC1(e,t)}),(function(){i.textCodec="wvtt"}))},e._appendCues=function _appendCues(e,t){var r=this.hls;if(this.config.renderTextTracksNatively){var i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((function(e){return(0,l.addCueToTrack)(i,e)}))}else{var a=this.tracks[t];if(!a)return;var s=a.default?"default":"subtitles"+t;r.trigger(n.Events.CUES_PARSED,{type:"subtitles",cues:e,track:s})}},e.onFragDecrypted=function onFragDecrypted(e,t){var r=t.frag;if(r.type===c.PlaylistLevelType.SUBTITLE){if(!(0,i.isFiniteNumber)(this.initPTS[r.cc]))return void this.unparsedVttFrags.push(t);this.onFragLoaded(n.Events.FRAG_LOADED,t)}},e.onSubtitleTracksCleared=function onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}},e.onFragParsingUserdata=function onFragParsingUserdata(e,t){var r=this.cea608Parser1,i=this.cea608Parser2;if(this.enabled&&r&&i){var n=t.frag,a=t.samples;if(n.type!==c.PlaylistLevelType.MAIN||"NONE"!==this.closedCaptionsForLevel(n))for(var s=0;s<a.length;s++){var o=a[s].bytes;if(o){var l=this.extractCea608Data(o);r.addData(a[s].pts,l[0]),i.addData(a[s].pts,l[1])}}}},e.onBufferFlushing=function onBufferFlushing(e,t){var r=t.startOffset,i=t.endOffset,n=t.endOffsetSubtitles,a=t.type,s=this.media;if(s&&!(s.currentTime<i)){if(!a||"video"===a){var o=this.captionsTracks;Object.keys(o).forEach((function(e){return(0,l.removeCuesInRange)(o[e],r,i)}))}if(this.config.renderTextTracksNatively&&0===r&&void 0!==n){var u=this.textTracks;Object.keys(u).forEach((function(e){return(0,l.removeCuesInRange)(u[e],r,n)}))}}},e.extractCea608Data=function extractCea608Data(e){for(var t=[[],[]],r=31&e[0],i=2,n=0;n<r;n++){var a=e[i++],s=127&e[i++],o=127&e[i++];if(0!==s||0!==o)if(0!=(4&a)){var l=3&a;0!==l&&1!==l||(t[l].push(s),t[l].push(o))}}return t},TimelineController}();function canReuseVttTextTrack(e,t){return e&&e.label===t.name&&!(e.textTrack1||e.textTrack2)}},"./src/crypt/aes-crypto.ts":
|
|
71
|
-
/*!*********************************!*\
|
|
72
|
-
!*** ./src/crypt/aes-crypto.ts ***!
|
|
73
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var i=function(){function AESCrypto(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}return AESCrypto.prototype.decrypt=function decrypt(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)},AESCrypto}()},"./src/crypt/aes-decryptor.ts":
|
|
74
|
-
/*!************************************!*\
|
|
75
|
-
!*** ./src/crypt/aes-decryptor.ts ***!
|
|
76
|
-
\************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n,removePadding:()=>removePadding});var i=r(/*! ../utils/typed-array */"./src/utils/typed-array.ts");function removePadding(e){var t=e.byteLength,r=t&&new DataView(e.buffer).getUint8(t-1);return r?(0,i.sliceUint8)(e,0,t-r):e}var n=function(){function AESDecryptor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}var e=AESDecryptor.prototype;return e.uint8ArrayToUint32Array_=function uint8ArrayToUint32Array_(e){for(var t=new DataView(e),r=new Uint32Array(4),i=0;i<4;i++)r[i]=t.getUint32(4*i);return r},e.initTable=function initTable(){var e=this.sBox,t=this.invSBox,r=this.subMix,i=r[0],n=r[1],a=r[2],s=r[3],o=this.invSubMix,l=o[0],u=o[1],d=o[2],c=o[3],h=new Uint32Array(256),f=0,g=0,p=0;for(p=0;p<256;p++)h[p]=p<128?p<<1:p<<1^283;for(p=0;p<256;p++){var v=g^g<<1^g<<2^g<<3^g<<4;v=v>>>8^255&v^99,e[f]=v,t[v]=f;var m=h[f],y=h[m],E=h[y],T=257*h[v]^16843008*v;i[f]=T<<24|T>>>8,n[f]=T<<16|T>>>16,a[f]=T<<8|T>>>24,s[f]=T,T=16843009*E^65537*y^257*m^16843008*f,l[v]=T<<24|T>>>8,u[v]=T<<16|T>>>16,d[v]=T<<8|T>>>24,c[v]=T,f?(f=m^h[h[h[E^m]]],g^=h[h[g]]):f=g=1}},e.expandKey=function expandKey(e){for(var t=this.uint8ArrayToUint32Array_(e),r=!0,i=0;i<t.length&&r;)r=t[i]===this.key[i],i++;if(!r){this.key=t;var n=this.keySize=t.length;if(4!==n&&6!==n&&8!==n)throw new Error("Invalid aes key size="+n);var a,s,o,l,u=this.ksRows=4*(n+6+1),d=this.keySchedule=new Uint32Array(u),c=this.invKeySchedule=new Uint32Array(u),h=this.sBox,f=this.rcon,g=this.invSubMix,p=g[0],v=g[1],m=g[2],y=g[3];for(a=0;a<u;a++)a<n?o=d[a]=t[a]:(l=o,a%n==0?(l=h[(l=l<<8|l>>>24)>>>24]<<24|h[l>>>16&255]<<16|h[l>>>8&255]<<8|h[255&l],l^=f[a/n|0]<<24):n>6&&a%n==4&&(l=h[l>>>24]<<24|h[l>>>16&255]<<16|h[l>>>8&255]<<8|h[255&l]),d[a]=o=(d[a-n]^l)>>>0);for(s=0;s<u;s++)a=u-s,l=3&s?d[a]:d[a-4],c[s]=s<4||a<=4?l:p[h[l>>>24]]^v[h[l>>>16&255]]^m[h[l>>>8&255]]^y[h[255&l]],c[s]=c[s]>>>0}},e.networkToHostOrderSwap=function networkToHostOrderSwap(e){return e<<24|(65280&e)<<8|(16711680&e)>>8|e>>>24},e.decrypt=function decrypt(e,t,r){for(var i,n,a,s,o,l,u,d,c,h,f,g,p,v,m=this.keySize+6,y=this.invKeySchedule,E=this.invSBox,T=this.invSubMix,S=T[0],b=T[1],L=T[2],D=T[3],A=this.uint8ArrayToUint32Array_(r),k=A[0],C=A[1],P=A[2],I=A[3],_=new Int32Array(e),R=new Int32Array(_.length),w=this.networkToHostOrderSwap;t<_.length;){for(c=w(_[t]),h=w(_[t+1]),f=w(_[t+2]),g=w(_[t+3]),o=c^y[0],l=g^y[1],u=f^y[2],d=h^y[3],p=4,v=1;v<m;v++)i=S[o>>>24]^b[l>>16&255]^L[u>>8&255]^D[255&d]^y[p],n=S[l>>>24]^b[u>>16&255]^L[d>>8&255]^D[255&o]^y[p+1],a=S[u>>>24]^b[d>>16&255]^L[o>>8&255]^D[255&l]^y[p+2],s=S[d>>>24]^b[o>>16&255]^L[l>>8&255]^D[255&u]^y[p+3],o=i,l=n,u=a,d=s,p+=4;i=E[o>>>24]<<24^E[l>>16&255]<<16^E[u>>8&255]<<8^E[255&d]^y[p],n=E[l>>>24]<<24^E[u>>16&255]<<16^E[d>>8&255]<<8^E[255&o]^y[p+1],a=E[u>>>24]<<24^E[d>>16&255]<<16^E[o>>8&255]<<8^E[255&l]^y[p+2],s=E[d>>>24]<<24^E[o>>16&255]<<16^E[l>>8&255]<<8^E[255&u]^y[p+3],R[t]=w(i^k),R[t+1]=w(s^C),R[t+2]=w(a^P),R[t+3]=w(n^I),k=c,C=h,P=f,I=g,t+=4}return R.buffer},AESDecryptor}()},"./src/crypt/decrypter.ts":
|
|
77
|
-
/*!********************************!*\
|
|
78
|
-
!*** ./src/crypt/decrypter.ts ***!
|
|
79
|
-
\********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var i=r(/*! ./aes-crypto */"./src/crypt/aes-crypto.ts"),n=r(/*! ./fast-aes-key */"./src/crypt/fast-aes-key.ts"),a=r(/*! ./aes-decryptor */"./src/crypt/aes-decryptor.ts"),s=r(/*! ../utils/logger */"./src/utils/logger.ts"),o=r(/*! ../utils/mp4-tools */"./src/utils/mp4-tools.ts"),l=r(/*! ../utils/typed-array */"./src/utils/typed-array.ts"),u=function(){function Decrypter(e,t){var r=(void 0===t?{}:t).removePKCS7Padding,i=void 0===r||r;if(this.logEnabled=!0,this.removePKCS7Padding=void 0,this.subtle=null,this.softwareDecrypter=null,this.key=null,this.fastAesKey=null,this.remainderData=null,this.currentIV=null,this.currentResult=null,this.useSoftware=void 0,this.useSoftware=e.enableSoftwareAES,this.removePKCS7Padding=i,i)try{var n=self.crypto;n&&(this.subtle=n.subtle||n.webkitSubtle)}catch(e){}null===this.subtle&&(this.useSoftware=!0)}var e=Decrypter.prototype;return e.destroy=function destroy(){this.subtle=null,this.softwareDecrypter=null,this.key=null,this.fastAesKey=null,this.remainderData=null,this.currentIV=null,this.currentResult=null},e.isSync=function isSync(){return this.useSoftware},e.flush=function flush(){var e=this.currentResult,t=this.remainderData;if(!e||t)return s.logger.error("[softwareDecrypt] "+(t?"overflow bytes: "+t.byteLength:"no result")),this.reset(),null;var r=new Uint8Array(e);return this.reset(),this.removePKCS7Padding?(0,a.removePadding)(r):r},e.reset=function reset(){this.currentResult=null,this.currentIV=null,this.remainderData=null,this.softwareDecrypter&&(this.softwareDecrypter=null)},e.decrypt=function decrypt(e,t,r){var i=this;return this.useSoftware?new Promise((function(n,a){i.softwareDecrypt(new Uint8Array(e),t,r);var s=i.flush();s?n(s.buffer):a(new Error("[softwareDecrypt] Failed to decrypt data"))})):this.webCryptoDecrypt(new Uint8Array(e),t,r)},e.softwareDecrypt=function softwareDecrypt(e,t,r){var i=this.currentIV,n=this.currentResult,s=this.remainderData;this.logOnce("JS AES decrypt"),s&&(e=(0,o.appendUint8Array)(s,e),this.remainderData=null);var u=this.getValidChunk(e);if(!u.length)return null;i&&(r=i);var d=this.softwareDecrypter;d||(d=this.softwareDecrypter=new a.default),d.expandKey(t);var c=n;return this.currentResult=d.decrypt(u.buffer,0,r),this.currentIV=(0,l.sliceUint8)(u,-16).buffer,c||null},e.webCryptoDecrypt=function webCryptoDecrypt(e,t,r){var a=this,o=this.subtle;return this.key===t&&this.fastAesKey||(this.key=t,this.fastAesKey=new n.default(o,t)),this.fastAesKey.expandKey().then((function(t){return o?(a.logOnce("WebCrypto AES decrypt"),new i.default(o,new Uint8Array(r)).decrypt(e.buffer,t)):Promise.reject(new Error("web crypto not initialized"))})).catch((function(i){return s.logger.warn("[decrypter]: WebCrypto Error, disable WebCrypto API, "+i.name+": "+i.message),a.onWebCryptoError(e,t,r)}))},e.onWebCryptoError=function onWebCryptoError(e,t,r){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,r);var i=this.flush();if(i)return i.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")},e.getValidChunk=function getValidChunk(e){var t=e,r=e.length-e.length%16;return r!==e.length&&(t=(0,l.sliceUint8)(e,0,r),this.remainderData=(0,l.sliceUint8)(e,r)),t},e.logOnce=function logOnce(e){this.logEnabled&&(s.logger.log("[decrypter]: "+e),this.logEnabled=!1)},Decrypter}()},"./src/crypt/fast-aes-key.ts":
|
|
80
|
-
/*!***********************************!*\
|
|
81
|
-
!*** ./src/crypt/fast-aes-key.ts ***!
|
|
82
|
-
\***********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var i=function(){function FastAESKey(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}return FastAESKey.prototype.expandKey=function expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])},FastAESKey}()},"./src/demux/aacdemuxer.ts":
|
|
83
|
-
/*!*********************************!*\
|
|
84
|
-
!*** ./src/demux/aacdemuxer.ts ***!
|
|
85
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var i=r(/*! ./base-audio-demuxer */"./src/demux/base-audio-demuxer.ts"),n=r(/*! ./adts */"./src/demux/adts.ts"),a=r(/*! ../utils/logger */"./src/utils/logger.ts"),s=r(/*! ../demux/id3 */"./src/demux/id3.ts");function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}const o=function(e){function AACDemuxer(t,r){var i;return(i=e.call(this)||this).observer=void 0,i.config=void 0,i.observer=t,i.config=r,i}!function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(AACDemuxer,e);var t=AACDemuxer.prototype;return t.resetInitSegment=function resetInitSegment(t,r,i,n){e.prototype.resetInitSegment.call(this,t,r,i,n),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:r,duration:n,inputTimeScale:9e4,dropped:0}},AACDemuxer.probe=function probe(e){if(!e)return!1;for(var t=(s.getID3Data(e,0)||[]).length,r=e.length;t<r;t++)if(n.probe(e,t))return a.logger.log("ADTS sync word found !"),!0;return!1},t.canParse=function canParse(e,t){return n.canParse(e,t)},t.appendFrame=function appendFrame(e,t,r){n.initTrackConfig(e,this.observer,t,r,e.manifestCodec);var i=n.appendFrame(e,t,r,this.basePTS,this.frameIndex);if(i&&0===i.missing)return i},AACDemuxer}(i.default)},"./src/demux/adts.ts":
|
|
86
|
-
/*!***************************!*\
|
|
87
|
-
!*** ./src/demux/adts.ts ***!
|
|
88
|
-
\***************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{appendFrame:()=>appendFrame,canGetFrameLength:()=>canGetFrameLength,canParse:()=>canParse,getAudioConfig:()=>getAudioConfig,getFrameDuration:()=>getFrameDuration,getFullFrameLength:()=>getFullFrameLength,getHeaderLength:()=>getHeaderLength,initTrackConfig:()=>initTrackConfig,isHeader:()=>isHeader,isHeaderPattern:()=>isHeaderPattern,parseFrameHeader:()=>parseFrameHeader,probe:()=>probe});var i=r(/*! ../utils/logger */"./src/utils/logger.ts"),n=r(/*! ../errors */"./src/errors.ts"),a=r(/*! ../events */"./src/events.ts");function getAudioConfig(e,t,r,s){var o,l,u,d,c=navigator.userAgent.toLowerCase(),h=s,f=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];o=1+((192&t[r+2])>>>6);var g=(60&t[r+2])>>>2;if(!(g>f.length-1))return u=(1&t[r+2])<<2,u|=(192&t[r+3])>>>6,i.logger.log("manifest codec:"+s+", ADTS type:"+o+", samplingIndex:"+g),/firefox/i.test(c)?g>=6?(o=5,d=new Array(4),l=g-3):(o=2,d=new Array(2),l=g):-1!==c.indexOf("android")?(o=2,d=new Array(2),l=g):(o=5,d=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&g>=6?l=g-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(g>=6&&1===u||/vivaldi/i.test(c))||!s&&1===u)&&(o=2,d=new Array(2)),l=g)),d[0]=o<<3,d[0]|=(14&g)>>1,d[1]|=(1&g)<<7,d[1]|=u<<3,5===o&&(d[1]|=(14&l)>>1,d[2]=(1&l)<<7,d[2]|=8,d[3]=0),{config:d,samplerate:f[g],channelCount:u,codec:"mp4a.40."+o,manifestCodec:h};e.trigger(a.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+g})}function isHeaderPattern(e,t){return 255===e[t]&&240==(246&e[t+1])}function getHeaderLength(e,t){return 1&e[t+1]?7:9}function getFullFrameLength(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function canGetFrameLength(e,t){return t+5<e.length}function isHeader(e,t){return t+1<e.length&&isHeaderPattern(e,t)}function canParse(e,t){return canGetFrameLength(e,t)&&isHeaderPattern(e,t)&&getFullFrameLength(e,t)<=e.length-t}function probe(e,t){if(isHeader(e,t)){var r=getHeaderLength(e,t);if(t+r>=e.length)return!1;var i=getFullFrameLength(e,t);if(i<=r)return!1;var n=t+i;return n===e.length||isHeader(e,n)}return!1}function initTrackConfig(e,t,r,n,a){if(!e.samplerate){var s=getAudioConfig(t,r,n,a);if(!s)return;e.config=s.config,e.samplerate=s.samplerate,e.channelCount=s.channelCount,e.codec=s.codec,e.manifestCodec=s.manifestCodec,i.logger.log("parsed codec:"+e.codec+", rate:"+s.samplerate+", channels:"+s.channelCount)}}function getFrameDuration(e){return 9216e4/e}function parseFrameHeader(e,t){var r=getHeaderLength(e,t);if(t+r<=e.length){var i=getFullFrameLength(e,t)-r;if(i>0)return{headerLength:r,frameLength:i}}}function appendFrame(e,t,r,i,n){var a,s=i+n*getFrameDuration(e.samplerate),o=parseFrameHeader(t,r);if(o){var l=o.frameLength,u=o.headerLength,d=u+l,c=Math.max(0,r+d-t.length);c?(a=new Uint8Array(d-u)).set(t.subarray(r+u,t.length),0):a=t.subarray(r+u,r+d);var h={unit:a,pts:s};return c||e.samples.push(h),{sample:h,length:d,missing:c}}var f=t.length-r;return(a=new Uint8Array(f)).set(t.subarray(r,t.length),0),{sample:{unit:a,pts:s},length:f,missing:-1}}},"./src/demux/base-audio-demuxer.ts":
|
|
89
|
-
/*!*****************************************!*\
|
|
90
|
-
!*** ./src/demux/base-audio-demuxer.ts ***!
|
|
91
|
-
\*****************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c,initPTSFn:()=>d});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../demux/id3 */"./src/demux/id3.ts"),a=r(/*! ../types/demuxer */"./src/types/demuxer.ts"),s=r(/*! ./dummy-demuxed-track */"./src/demux/dummy-demuxed-track.ts"),o=r(/*! ../utils/mp4-tools */"./src/utils/mp4-tools.ts"),l=r(/*! ../utils/typed-array */"./src/utils/typed-array.ts"),u=function(){function BaseAudioDemuxer(){this._audioTrack=void 0,this._id3Track=void 0,this.frameIndex=0,this.cachedData=null,this.basePTS=null,this.initPTS=null,this.lastPTS=null}var e=BaseAudioDemuxer.prototype;return e.resetInitSegment=function resetInitSegment(e,t,r,i){this._id3Track={type:"id3",id:3,pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0}},e.resetTimeStamp=function resetTimeStamp(e){this.initPTS=e,this.resetContiguity()},e.resetContiguity=function resetContiguity(){this.basePTS=null,this.lastPTS=null,this.frameIndex=0},e.canParse=function canParse(e,t){return!1},e.appendFrame=function appendFrame(e,t,r){},e.demux=function demux(e,t){this.cachedData&&(e=(0,o.appendUint8Array)(this.cachedData,e),this.cachedData=null);var r,u=n.getID3Data(e,0),c=u?u.length:0,h=this._audioTrack,f=this._id3Track,g=u?n.getTimeStamp(u):void 0,p=e.length;for((null===this.basePTS||0===this.frameIndex&&(0,i.isFiniteNumber)(g))&&(this.basePTS=d(g,t,this.initPTS),this.lastPTS=this.basePTS),null===this.lastPTS&&(this.lastPTS=this.basePTS),u&&u.length>0&&f.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:u,type:a.MetadataSchema.audioId3,duration:Number.POSITIVE_INFINITY});c<p;){if(this.canParse(e,c)){var v=this.appendFrame(h,e,c);v?(this.frameIndex++,this.lastPTS=v.sample.pts,r=c+=v.length):c=p}else n.canParse(e,c)?(u=n.getID3Data(e,c),f.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:u,type:a.MetadataSchema.audioId3,duration:Number.POSITIVE_INFINITY}),r=c+=u.length):c++;if(c===p&&r!==p){var m=(0,l.sliceUint8)(e,r);this.cachedData?this.cachedData=(0,o.appendUint8Array)(this.cachedData,m):this.cachedData=m}}return{audioTrack:h,videoTrack:(0,s.dummyTrack)(),id3Track:f,textTrack:(0,s.dummyTrack)()}},e.demuxSampleAes=function demuxSampleAes(e,t,r){return Promise.reject(new Error("["+this+"] This demuxer does not support Sample-AES decryption"))},e.flush=function flush(e){var t=this.cachedData;return t&&(this.cachedData=null,this.demux(t,0)),{audioTrack:this._audioTrack,videoTrack:(0,s.dummyTrack)(),id3Track:this._id3Track,textTrack:(0,s.dummyTrack)()}},e.destroy=function destroy(){},BaseAudioDemuxer}(),d=function initPTSFn(e,t,r){return(0,i.isFiniteNumber)(e)?90*e:9e4*t+(r||0)};const c=u},"./src/demux/chunk-cache.ts":
|
|
92
|
-
/*!**********************************!*\
|
|
93
|
-
!*** ./src/demux/chunk-cache.ts ***!
|
|
94
|
-
\**********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var i=function(){function ChunkCache(){this.chunks=[],this.dataLength=0}var e=ChunkCache.prototype;return e.push=function push(e){this.chunks.push(e),this.dataLength+=e.length},e.flush=function flush(){var e,t=this.chunks,r=this.dataLength;return t.length?(e=1===t.length?t[0]:function concatUint8Arrays(e,t){for(var r=new Uint8Array(t),i=0,n=0;n<e.length;n++){var a=e[n];r.set(a,i),i+=a.length}return r}(t,r),this.reset(),e):new Uint8Array(0)},e.reset=function reset(){this.chunks.length=0,this.dataLength=0},ChunkCache}()},"./src/demux/dummy-demuxed-track.ts":
|
|
95
|
-
/*!******************************************!*\
|
|
96
|
-
!*** ./src/demux/dummy-demuxed-track.ts ***!
|
|
97
|
-
\******************************************/(e,t,r)=>{"use strict";function dummyTrack(e,t){return void 0===e&&(e=""),void 0===t&&(t=9e4),{type:e,id:-1,pid:-1,inputTimeScale:t,sequenceNumber:-1,samples:[],dropped:0}}r.r(t),r.d(t,{dummyTrack:()=>dummyTrack})},"./src/demux/exp-golomb.ts":
|
|
98
|
-
/*!*********************************!*\
|
|
99
|
-
!*** ./src/demux/exp-golomb.ts ***!
|
|
100
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});var i=r(/*! ../utils/logger */"./src/utils/logger.ts");const n=function(){function ExpGolomb(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}var e=ExpGolomb.prototype;return e.loadWord=function loadWord(){var e=this.data,t=this.bytesAvailable,r=e.byteLength-t,i=new Uint8Array(4),n=Math.min(4,t);if(0===n)throw new Error("no bytes available");i.set(e.subarray(r,r+n)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*n,this.bytesAvailable-=n},e.skipBits=function skipBits(e){var t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,e-=(t=e>>3)<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)},e.readBits=function readBits(e){var t=Math.min(this.bitsAvailable,e),r=this.word>>>32-t;if(e>32&&i.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0)this.word<<=t;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return(t=e-t)>0&&this.bitsAvailable?r<<t|this.readBits(t):r},e.skipLZ=function skipLZ(){var e;for(e=0;e<this.bitsAvailable;++e)if(0!=(this.word&2147483648>>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()},e.skipUEG=function skipUEG(){this.skipBits(1+this.skipLZ())},e.skipEG=function skipEG(){this.skipBits(1+this.skipLZ())},e.readUEG=function readUEG(){var e=this.skipLZ();return this.readBits(e+1)-1},e.readEG=function readEG(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)},e.readBoolean=function readBoolean(){return 1===this.readBits(1)},e.readUByte=function readUByte(){return this.readBits(8)},e.readUShort=function readUShort(){return this.readBits(16)},e.readUInt=function readUInt(){return this.readBits(32)},e.skipScalingList=function skipScalingList(e){for(var t=8,r=8,i=0;i<e;i++)0!==r&&(r=(t+this.readEG()+256)%256),t=0===r?t:r},e.readSPS=function readSPS(){var e,t,r,i=0,n=0,a=0,s=0,o=this.readUByte.bind(this),l=this.readBits.bind(this),u=this.readUEG.bind(this),d=this.readBoolean.bind(this),c=this.skipBits.bind(this),h=this.skipEG.bind(this),f=this.skipUEG.bind(this),g=this.skipScalingList.bind(this);o();var p=o();if(l(5),c(3),o(),f(),100===p||110===p||122===p||244===p||44===p||83===p||86===p||118===p||128===p){var v=u();if(3===v&&c(1),f(),f(),c(1),d())for(t=3!==v?8:12,r=0;r<t;r++)d()&&g(r<6?16:64)}f();var m=u();if(0===m)u();else if(1===m)for(c(1),h(),h(),e=u(),r=0;r<e;r++)h();f(),c(1);var y=u(),E=u(),T=l(1);0===T&&c(1),c(1),d()&&(i=u(),n=u(),a=u(),s=u());var S=[1,1];if(d()&&d())switch(o()){case 1:S=[1,1];break;case 2:S=[12,11];break;case 3:S=[10,11];break;case 4:S=[16,11];break;case 5:S=[40,33];break;case 6:S=[24,11];break;case 7:S=[20,11];break;case 8:S=[32,11];break;case 9:S=[80,33];break;case 10:S=[18,11];break;case 11:S=[15,11];break;case 12:S=[64,33];break;case 13:S=[160,99];break;case 14:S=[4,3];break;case 15:S=[3,2];break;case 16:S=[2,1];break;case 255:S=[o()<<8|o(),o()<<8|o()]}return{width:Math.ceil(16*(y+1)-2*i-2*n),height:(2-T)*(E+1)*16-(T?2:4)*(a+s),pixelRatio:S}},e.readSliceType=function readSliceType(){return this.readUByte(),this.readUEG(),this.readUEG()},ExpGolomb}()},"./src/demux/id3.ts":
|
|
101
|
-
/*!**************************!*\
|
|
102
|
-
!*** ./src/demux/id3.ts ***!
|
|
103
|
-
\**************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{canParse:()=>l,decodeFrame:()=>f,getID3Data:()=>s,getID3Frames:()=>h,getTimeStamp:()=>u,isFooter:()=>a,isHeader:()=>n,isTimeStampFrame:()=>d,testables:()=>E,utf8ArrayToStr:()=>y});var i,n=function isHeader(e,t){return t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128},a=function isFooter(e,t){return t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128},s=function getID3Data(e,t){for(var r=t,i=0;n(e,t);){i+=10,i+=o(e,t+6),a(e,t+10)&&(i+=10),t+=i}if(i>0)return e.subarray(r,r+i)},o=function readSize(e,t){var r=0;return r=(127&e[t])<<21,r|=(127&e[t+1])<<14,r|=(127&e[t+2])<<7,r|=127&e[t+3]},l=function canParse(e,t){return n(e,t)&&o(e,t+6)+10<=e.length-t},u=function getTimeStamp(e){for(var t=h(e),r=0;r<t.length;r++){var i=t[r];if(d(i))return m(i)}},d=function isTimeStampFrame(e){return e&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info},c=function getFrameData(e){var t=String.fromCharCode(e[0],e[1],e[2],e[3]),r=o(e,4);return{type:t,size:r,data:e.subarray(10,10+r)}},h=function getID3Frames(e){for(var t=0,r=[];n(e,t);){for(var i=o(e,t+6),s=(t+=10)+i;t+8<s;){var l=c(e.subarray(t)),u=f(l);u&&r.push(u),t+=l.size+10}a(e,t)&&(t+=10)}return r},f=function decodeFrame(e){return"PRIV"===e.type?g(e):"W"===e.type[0]?v(e):p(e)},g=function decodePrivFrame(e){if(!(e.size<2)){var t=y(e.data,!0),r=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:r.buffer}}},p=function decodeTextFrame(e){if(!(e.size<2)){if("TXXX"===e.type){var t=1,r=y(e.data.subarray(t),!0);t+=r.length+1;var i=y(e.data.subarray(t));return{key:e.type,info:r,data:i}}var n=y(e.data.subarray(1));return{key:e.type,data:n}}},v=function decodeURLFrame(e){if("WXXX"===e.type){if(e.size<2)return;var t=1,r=y(e.data.subarray(t),!0);t+=r.length+1;var i=y(e.data.subarray(t));return{key:e.type,info:r,data:i}}var n=y(e.data);return{key:e.type,data:n}},m=function readTimeStamp(e){if(8===e.data.byteLength){var t=new Uint8Array(e.data),r=1&t[3],i=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return i/=45,r&&(i+=47721858.84),Math.round(i)}},y=function utf8ArrayToStr(e,t){void 0===t&&(t=!1);var r=getTextDecoder();if(r){var i=r.decode(e);if(t){var n=i.indexOf("\0");return-1!==n?i.substring(0,n):i}return i.replace(/\0/g,"")}for(var a,s,o,l=e.length,u="",d=0;d<l;){if(0===(a=e[d++])&&t)return u;if(0!==a&&3!==a)switch(a>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:u+=String.fromCharCode(a);break;case 12:case 13:s=e[d++],u+=String.fromCharCode((31&a)<<6|63&s);break;case 14:s=e[d++],o=e[d++],u+=String.fromCharCode((15&a)<<12|(63&s)<<6|(63&o)<<0)}}return u},E={decodeTextFrame:p};function getTextDecoder(){return i||void 0===self.TextDecoder||(i=new self.TextDecoder("utf-8")),i}},"./src/demux/mp3demuxer.ts":
|
|
104
|
-
/*!*********************************!*\
|
|
105
|
-
!*** ./src/demux/mp3demuxer.ts ***!
|
|
106
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var i=r(/*! ./base-audio-demuxer */"./src/demux/base-audio-demuxer.ts"),n=r(/*! ../demux/id3 */"./src/demux/id3.ts"),a=r(/*! ../utils/logger */"./src/utils/logger.ts"),s=r(/*! ./mpegaudio */"./src/demux/mpegaudio.ts");function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}const o=function(e){function MP3Demuxer(){return e.apply(this,arguments)||this}!function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(MP3Demuxer,e);var t=MP3Demuxer.prototype;return t.resetInitSegment=function resetInitSegment(t,r,i,n){e.prototype.resetInitSegment.call(this,t,r,i,n),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:r,duration:n,inputTimeScale:9e4,dropped:0}},MP3Demuxer.probe=function probe(e){if(!e)return!1;for(var t=(n.getID3Data(e,0)||[]).length,r=e.length;t<r;t++)if(s.probe(e,t))return a.logger.log("MPEG Audio sync word found !"),!0;return!1},t.canParse=function canParse(e,t){return s.canParse(e,t)},t.appendFrame=function appendFrame(e,t,r){if(null!==this.basePTS)return s.appendFrame(e,t,r,this.basePTS,this.frameIndex)},MP3Demuxer}(i.default)},"./src/demux/mp4demuxer.ts":
|
|
107
|
-
/*!*********************************!*\
|
|
108
|
-
!*** ./src/demux/mp4demuxer.ts ***!
|
|
109
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../types/demuxer */"./src/types/demuxer.ts"),a=r(/*! ../utils/mp4-tools */"./src/utils/mp4-tools.ts"),s=r(/*! ./dummy-demuxed-track */"./src/demux/dummy-demuxed-track.ts"),o=/\/emsg[-/]ID3/i;const l=function(){function MP4Demuxer(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}var e=MP4Demuxer.prototype;return e.resetTimeStamp=function resetTimeStamp(){},e.resetInitSegment=function resetInitSegment(e,t,r,i){var n=this.videoTrack=(0,s.dummyTrack)("video",1),o=this.audioTrack=(0,s.dummyTrack)("audio",1),l=this.txtTrack=(0,s.dummyTrack)("text",1);if(this.id3Track=(0,s.dummyTrack)("id3",1),this.timeOffset=0,e&&e.byteLength){var u=(0,a.parseInitSegment)(e);if(u.video){var d=u.video,c=d.id,h=d.timescale,f=d.codec;n.id=c,n.timescale=l.timescale=h,n.codec=f}if(u.audio){var g=u.audio,p=g.id,v=g.timescale,m=g.codec;o.id=p,o.timescale=v,o.codec=m}l.id=a.RemuxerTrackIdConfig.text,n.sampleDuration=0,n.duration=o.duration=i}},e.resetContiguity=function resetContiguity(){},MP4Demuxer.probe=function probe(e){return e=e.length>16384?e.subarray(0,16384):e,(0,a.findBox)(e,["moof"]).length>0},e.demux=function demux(e,t){this.timeOffset=t;var r=e,i=this.videoTrack,n=this.txtTrack;if(this.config.progressive){this.remainderData&&(r=(0,a.appendUint8Array)(this.remainderData,e));var s=(0,a.segmentValidRange)(r);this.remainderData=s.remainder,i.samples=s.valid||new Uint8Array}else i.samples=r;var o=this.extractID3Track(i,t);return n.samples=(0,a.parseSamples)(t,i),{videoTrack:i,audioTrack:this.audioTrack,id3Track:o,textTrack:this.txtTrack}},e.flush=function flush(){var e=this.timeOffset,t=this.videoTrack,r=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;var i=this.extractID3Track(t,this.timeOffset);return r.samples=(0,a.parseSamples)(e,t),{videoTrack:t,audioTrack:(0,s.dummyTrack)(),id3Track:i,textTrack:(0,s.dummyTrack)()}},e.extractID3Track=function extractID3Track(e,t){var r=this.id3Track;if(e.samples.length){var s=(0,a.findBox)(e.samples,["emsg"]);s&&s.forEach((function(e){var s=(0,a.parseEmsg)(e);if(o.test(s.schemeIdUri)){var l=(0,i.isFiniteNumber)(s.presentationTime)?s.presentationTime/s.timeScale:t+s.presentationTimeDelta/s.timeScale,u=4294967295===s.eventDuration?Number.POSITIVE_INFINITY:s.eventDuration/s.timeScale;u<=.001&&(u=Number.POSITIVE_INFINITY);var d=s.payload;r.samples.push({data:d,len:d.byteLength,dts:l,pts:l,type:n.MetadataSchema.emsg,duration:u})}}))}return r},e.demuxSampleAes=function demuxSampleAes(e,t,r){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))},e.destroy=function destroy(){},MP4Demuxer}()},"./src/demux/mpegaudio.ts":
|
|
110
|
-
/*!********************************!*\
|
|
111
|
-
!*** ./src/demux/mpegaudio.ts ***!
|
|
112
|
-
\********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{appendFrame:()=>appendFrame,canParse:()=>canParse,isHeader:()=>isHeader,isHeaderPattern:()=>isHeaderPattern,parseHeader:()=>parseHeader,probe:()=>probe});var i=null,n=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],a=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],s=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],o=[0,1,1,4];function appendFrame(e,t,r,i,n){if(!(r+24>t.length)){var a=parseHeader(t,r);if(a&&r+a.frameLength<=t.length){var s=i+n*(9e4*a.samplesPerFrame/a.sampleRate),o={unit:t.subarray(r,r+a.frameLength),pts:s,dts:s};return e.config=[],e.channelCount=a.channelCount,e.samplerate=a.sampleRate,e.samples.push(o),{sample:o,length:a.frameLength,missing:0}}}}function parseHeader(e,t){var r=e[t+1]>>3&3,l=e[t+1]>>1&3,u=e[t+2]>>4&15,d=e[t+2]>>2&3;if(1!==r&&0!==u&&15!==u&&3!==d){var c=e[t+2]>>1&1,h=e[t+3]>>6,f=1e3*n[14*(3===r?3-l:3===l?3:4)+u-1],g=a[3*(3===r?0:2===r?1:2)+d],p=3===h?1:2,v=s[r][l],m=o[l],y=8*v*m,E=Math.floor(v*f/g+c)*m;if(null===i){var T=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);i=T?parseInt(T[1]):0}return!!i&&i<=87&&2===l&&f>=224e3&&0===h&&(e[t+3]=128|e[t+3]),{sampleRate:g,channelCount:p,frameLength:E,samplesPerFrame:y}}}function isHeaderPattern(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function isHeader(e,t){return t+1<e.length&&isHeaderPattern(e,t)}function canParse(e,t){return isHeaderPattern(e,t)&&4<=e.length-t}function probe(e,t){if(t+1<e.length&&isHeaderPattern(e,t)){var r=parseHeader(e,t),i=4;null!=r&&r.frameLength&&(i=r.frameLength);var n=t+i;return n===e.length||isHeader(e,n)}return!1}},"./src/demux/sample-aes.ts":
|
|
113
|
-
/*!*********************************!*\
|
|
114
|
-
!*** ./src/demux/sample-aes.ts ***!
|
|
115
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var i=r(/*! ../crypt/decrypter */"./src/crypt/decrypter.ts"),n=r(/*! ../utils/mp4-tools */"./src/utils/mp4-tools.ts");const a=function(){function SampleAesDecrypter(e,t,r){this.keyData=void 0,this.decrypter=void 0,this.keyData=r,this.decrypter=new i.default(t,{removePKCS7Padding:!1})}var e=SampleAesDecrypter.prototype;return e.decryptBuffer=function decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)},e.decryptAacSample=function decryptAacSample(e,t,r){var i=this,n=e[t].unit;if(!(n.length<=16)){var a=n.subarray(16,n.length-n.length%16),s=a.buffer.slice(a.byteOffset,a.byteOffset+a.length);this.decryptBuffer(s).then((function(a){var s=new Uint8Array(a);n.set(s,16),i.decrypter.isSync()||i.decryptAacSamples(e,t+1,r)}))}},e.decryptAacSamples=function decryptAacSamples(e,t,r){for(;;t++){if(t>=e.length)return void r();if(!(e[t].unit.length<32)&&(this.decryptAacSample(e,t,r),!this.decrypter.isSync()))return}},e.getAvcEncryptedData=function getAvcEncryptedData(e){for(var t=16*Math.floor((e.length-48)/160)+16,r=new Int8Array(t),i=0,n=32;n<e.length-16;n+=160,i+=16)r.set(e.subarray(n,n+16),i);return r},e.getAvcDecryptedUnit=function getAvcDecryptedUnit(e,t){for(var r=new Uint8Array(t),i=0,n=32;n<e.length-16;n+=160,i+=16)e.set(r.subarray(i,i+16),n);return e},e.decryptAvcSample=function decryptAvcSample(e,t,r,i,a){var s=this,o=(0,n.discardEPB)(a.data),l=this.getAvcEncryptedData(o);this.decryptBuffer(l.buffer).then((function(n){a.data=s.getAvcDecryptedUnit(o,n),s.decrypter.isSync()||s.decryptAvcSamples(e,t,r+1,i)}))},e.decryptAvcSamples=function decryptAvcSamples(e,t,r,i){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,r=0){if(t>=e.length)return void i();for(var n=e[t].units;!(r>=n.length);r++){var a=n[r];if(!(a.data.length<=48||1!==a.type&&5!==a.type||(this.decryptAvcSample(e,t,r,i,a),this.decrypter.isSync())))return}}},SampleAesDecrypter}()},"./src/demux/transmuxer-interface.ts":
|
|
116
|
-
/*!*******************************************!*\
|
|
117
|
-
!*** ./src/demux/transmuxer-interface.ts ***!
|
|
118
|
-
\*******************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var i=r(/*! ./webworkify-webpack */"./src/demux/webworkify-webpack.js"),n=r(/*! ../events */"./src/events.ts"),a=r(/*! ../demux/transmuxer */"./src/demux/transmuxer.ts"),s=r(/*! ../utils/logger */"./src/utils/logger.ts"),o=r(/*! ../errors */"./src/errors.ts"),l=r(/*! ../utils/mediasource-helper */"./src/utils/mediasource-helper.ts"),u=r(/*! eventemitter3 */"./node_modules/eventemitter3/index.js"),d=(0,l.getMediaSource)()||{isTypeSupported:function isTypeSupported(){return!1}},c=function(){function TransmuxerInterface(e,t,r,l){var c=this;this.hls=void 0,this.id=void 0,this.observer=void 0,this.frag=null,this.part=null,this.useWorker=void 0,this.worker=void 0,this.onwmsg=void 0,this.transmuxer=null,this.onTransmuxComplete=void 0,this.onFlush=void 0;var h=e.config;this.hls=e,this.id=t,this.useWorker=!!h.enableWorker,this.onTransmuxComplete=r,this.onFlush=l;var f=function forwardMessage(e,t){(t=t||{}).frag=c.frag,t.id=c.id,c.hls.trigger(e,t)};this.observer=new u.EventEmitter,this.observer.on(n.Events.FRAG_DECRYPTED,f),this.observer.on(n.Events.ERROR,f);var g={mp4:d.isTypeSupported("video/mp4"),mpeg:d.isTypeSupported("audio/mpeg"),mp3:d.isTypeSupported('audio/mp4; codecs="mp3"')},p=navigator.vendor;if(this.useWorker&&"undefined"!=typeof Worker){var v;s.logger.log("demuxing in webworker");try{v=this.worker=(0,i.default)(/*! ../demux/transmuxer-worker.ts */"./src/demux/transmuxer-worker.ts"),this.onwmsg=this.onWorkerMessage.bind(this),v.addEventListener("message",this.onwmsg),v.onerror=function(e){c.useWorker=!1,s.logger.warn("Exception in webworker, fallback to inline"),c.hls.trigger(n.Events.ERROR,{type:o.ErrorTypes.OTHER_ERROR,details:o.ErrorDetails.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:new Error(e.message+" ("+e.filename+":"+e.lineno+")")})},v.postMessage({cmd:"init",typeSupported:g,vendor:p,id:t,config:JSON.stringify(h)})}catch(e){s.logger.warn("Error in worker:",e),s.logger.error("Error while initializing DemuxerWorker, fallback to inline"),v&&self.URL.revokeObjectURL(v.objectURL),this.transmuxer=new a.default(this.observer,g,h,p,t),this.worker=null}}else this.transmuxer=new a.default(this.observer,g,h,p,t)}var e=TransmuxerInterface.prototype;return e.destroy=function destroy(){var e=this.worker;if(e)e.removeEventListener("message",this.onwmsg),e.terminate(),this.worker=null,this.onwmsg=void 0;else{var t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}var r=this.observer;r&&r.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null},e.push=function push(e,t,r,i,n,o,l,u,d,c){var h,f,g=this;d.transmuxing.start=self.performance.now();var p=this.transmuxer,v=this.worker,m=o?o.start:n.start,y=n.decryptdata,E=this.frag,T=!(E&&n.cc===E.cc),S=!(E&&d.level===E.level),b=E?d.sn-E.sn:-1,L=this.part?d.part-this.part.index:-1,D=0===b&&d.id>1&&d.id===(null==E?void 0:E.stats.chunkCount),A=!S&&(1===b||0===b&&(1===L||D&&L<=0)),k=self.performance.now();(S||b||0===n.stats.parsing.start)&&(n.stats.parsing.start=k),!o||!L&&A||(o.stats.parsing.start=k);var C=!(E&&(null===(h=n.initSegment)||void 0===h?void 0:h.url)===(null===(f=E.initSegment)||void 0===f?void 0:f.url)),P=new a.TransmuxState(T,A,u,S,m,C);if(!A||T||C){s.logger.log("[transmuxer-interface, "+n.type+"]: Starting new transmux session for sn: "+d.sn+" p: "+d.part+" level: "+d.level+" id: "+d.id+"\n discontinuity: "+T+"\n trackSwitch: "+S+"\n contiguous: "+A+"\n accurateTimeOffset: "+u+"\n timeOffset: "+m+"\n initSegmentChange: "+C);var I=new a.TransmuxConfig(r,i,t,l,c);this.configureTransmuxer(I)}if(this.frag=n,this.part=o,v)v.postMessage({cmd:"demux",data:e,decryptdata:y,chunkMeta:d,state:P},e instanceof ArrayBuffer?[e]:[]);else if(p){var _=p.push(e,y,d,P);(0,a.isPromise)(_)?(p.async=!0,_.then((function(e){g.handleTransmuxComplete(e)})).catch((function(e){g.transmuxerError(e,d,"transmuxer-interface push error")}))):(p.async=!1,this.handleTransmuxComplete(_))}},e.flush=function flush(e){var t=this;e.transmuxing.start=self.performance.now();var r=this.transmuxer,i=this.worker;if(i)i.postMessage({cmd:"flush",chunkMeta:e});else if(r){var n=r.flush(e);(0,a.isPromise)(n)||r.async?((0,a.isPromise)(n)||(n=Promise.resolve(n)),n.then((function(r){t.handleFlushResult(r,e)})).catch((function(r){t.transmuxerError(r,e,"transmuxer-interface flush error")}))):this.handleFlushResult(n,e)}},e.transmuxerError=function transmuxerError(e,t,r){this.hls&&this.hls.trigger(n.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.FRAG_PARSING_ERROR,chunkMeta:t,fatal:!1,error:e,err:e,reason:r})},e.handleFlushResult=function handleFlushResult(e,t){var r=this;e.forEach((function(e){r.handleTransmuxComplete(e)})),this.onFlush(t)},e.onWorkerMessage=function onWorkerMessage(e){var t=e.data,r=this.hls;switch(t.event){case"init":self.URL.revokeObjectURL(this.worker.objectURL);break;case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":s.logger[t.data.logType]&&s.logger[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,r.trigger(t.event,t.data)}},e.configureTransmuxer=function configureTransmuxer(e){var t=this.worker,r=this.transmuxer;t?t.postMessage({cmd:"configure",config:e}):r&&r.configure(e)},e.handleTransmuxComplete=function handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)},TransmuxerInterface}()},"./src/demux/transmuxer-worker.ts":
|
|
119
|
-
/*!****************************************!*\
|
|
120
|
-
!*** ./src/demux/transmuxer-worker.ts ***!
|
|
121
|
-
\****************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>TransmuxerWorker});var i=r(/*! ../demux/transmuxer */"./src/demux/transmuxer.ts"),n=r(/*! ../events */"./src/events.ts"),a=r(/*! ../utils/logger */"./src/utils/logger.ts"),s=r(/*! eventemitter3 */"./node_modules/eventemitter3/index.js"),o=r(/*! ../errors */"./src/errors.ts");function TransmuxerWorker(e){var t=new s.EventEmitter,r=function forwardMessage(t,r){e.postMessage({event:t,data:r})};t.on(n.Events.FRAG_DECRYPTED,r),t.on(n.Events.ERROR,r);e.addEventListener("message",(function(s){var l=s.data;switch(l.cmd){case"init":var u=JSON.parse(l.config);e.transmuxer=new i.default(t,l.typeSupported,u,l.vendor,l.id),(0,a.enableLogs)(u.debug,l.id),function forwardWorkerLogs(){var e=function _loop(e){a.logger[e]=function func(t){r("workerLog",{logType:e,message:t})}};for(var t in a.logger)e(t)}(),r("init",null);break;case"configure":e.transmuxer.configure(l.config);break;case"demux":var d=e.transmuxer.push(l.data,l.decryptdata,l.chunkMeta,l.state);(0,i.isPromise)(d)?(e.transmuxer.async=!0,d.then((function(t){emitTransmuxComplete(e,t)})).catch((function(e){r(n.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.FRAG_PARSING_ERROR,chunkMeta:l.chunkMeta,fatal:!1,error:e,err:e,reason:"transmuxer-worker push error"})}))):(e.transmuxer.async=!1,emitTransmuxComplete(e,d));break;case"flush":var c=l.chunkMeta,h=e.transmuxer.flush(c);(0,i.isPromise)(h)||e.transmuxer.async?((0,i.isPromise)(h)||(h=Promise.resolve(h)),h.then((function(t){handleFlushResult(e,t,c)})).catch((function(e){r(n.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.FRAG_PARSING_ERROR,chunkMeta:l.chunkMeta,fatal:!1,error:e,err:e,reason:"transmuxer-worker flush error"})}))):handleFlushResult(e,h,c)}}))}function emitTransmuxComplete(e,t){if(function isEmptyResult(e){return!(e.audio||e.video||e.text||e.id3||e.initSegment)}(t.remuxResult))return!1;var r=[],i=t.remuxResult,n=i.audio,a=i.video;return n&&addToTransferable(r,n),a&&addToTransferable(r,a),e.postMessage({event:"transmuxComplete",data:t},r),!0}function addToTransferable(e,t){t.data1&&e.push(t.data1.buffer),t.data2&&e.push(t.data2.buffer)}function handleFlushResult(e,t,r){t.reduce((function(t,r){return emitTransmuxComplete(e,r)||t}),!1)||e.postMessage({event:"transmuxComplete",data:t[0]}),e.postMessage({event:"flush",data:r})}},"./src/demux/transmuxer.ts":
|
|
122
|
-
/*!*********************************!*\
|
|
123
|
-
!*** ./src/demux/transmuxer.ts ***!
|
|
124
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{TransmuxConfig:()=>m,TransmuxState:()=>y,default:()=>p,isPromise:()=>isPromise});var i,n=r(/*! ../events */"./src/events.ts"),a=r(/*! ../errors */"./src/errors.ts"),s=r(/*! ../crypt/decrypter */"./src/crypt/decrypter.ts"),o=r(/*! ../demux/aacdemuxer */"./src/demux/aacdemuxer.ts"),l=r(/*! ../demux/mp4demuxer */"./src/demux/mp4demuxer.ts"),u=r(/*! ../demux/tsdemuxer */"./src/demux/tsdemuxer.ts"),d=r(/*! ../demux/mp3demuxer */"./src/demux/mp3demuxer.ts"),c=r(/*! ../remux/mp4-remuxer */"./src/remux/mp4-remuxer.ts"),h=r(/*! ../remux/passthrough-remuxer */"./src/remux/passthrough-remuxer.ts"),f=r(/*! ../utils/logger */"./src/utils/logger.ts");try{i=self.performance.now.bind(self.performance)}catch(e){f.logger.debug("Unable to use Performance API on this environment"),i=self.Date.now}var g=[{demux:l.default,remux:h.default},{demux:u.default,remux:c.default},{demux:o.default,remux:c.default},{demux:d.default,remux:c.default}],p=function(){function Transmuxer(e,t,r,i,n){this.async=!1,this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.vendor=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=e,this.typeSupported=t,this.config=r,this.vendor=i,this.id=n}var e=Transmuxer.prototype;return e.configure=function configure(e){this.transmuxConfig=e,this.decrypter&&this.decrypter.reset()},e.push=function push(e,t,r,n){var a=this,s=r.transmuxing;s.executeStart=i();var o=new Uint8Array(e),l=this.currentTransmuxState,u=this.transmuxConfig;n&&(this.currentTransmuxState=n);var d=n||l,c=d.contiguous,h=d.discontinuity,f=d.trackSwitch,g=d.accurateTimeOffset,p=d.timeOffset,m=d.initSegmentChange,y=u.audioCodec,E=u.videoCodec,T=u.defaultInitPts,S=u.duration,b=u.initSegmentData,L=function getEncryptionType(e,t){var r=null;e.byteLength>0&&null!=t&&null!=t.key&&null!==t.iv&&null!=t.method&&(r=t);return r}(o,t);if(L&&"AES-128"===L.method){var D=this.getDecrypter();if(!D.isSync())return this.decryptionPromise=D.webCryptoDecrypt(o,L.key.buffer,L.iv.buffer).then((function(e){var t=a.push(e,null,r);return a.decryptionPromise=null,t})),this.decryptionPromise;var A=D.softwareDecrypt(o,L.key.buffer,L.iv.buffer);if(!A)return s.executeEnd=i(),v(r);o=new Uint8Array(A)}var k=this.needsProbing(h,f);k&&this.configureTransmuxer(o),(h||f||m||k)&&this.resetInitSegment(b,y,E,S,t),(h||m||k)&&this.resetInitialTimestamp(T),c||this.resetContiguity();var C=this.transmux(o,L,p,g,r),P=this.currentTransmuxState;return P.contiguous=!0,P.discontinuity=!1,P.trackSwitch=!1,s.executeEnd=i(),C},e.flush=function flush(e){var t=this,r=e.transmuxing;r.executeStart=i();var s=this.decrypter,o=this.currentTransmuxState,l=this.decryptionPromise;if(l)return l.then((function(){return t.flush(e)}));var u=[],d=o.timeOffset;if(s){var c=s.flush();c&&u.push(this.push(c,null,e))}var h=this.demuxer,f=this.remuxer;if(!h||!f)return this.observer.emit(n.Events.ERROR,n.Events.ERROR,{type:a.ErrorTypes.MEDIA_ERROR,details:a.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"no demux matching with content found"}),r.executeEnd=i(),[v(e)];var g=h.flush(d);return isPromise(g)?g.then((function(r){return t.flushRemux(u,r,e),u})):(this.flushRemux(u,g,e),u)},e.flushRemux=function flushRemux(e,t,r){var n=t.audioTrack,a=t.videoTrack,s=t.id3Track,o=t.textTrack,l=this.currentTransmuxState,u=l.accurateTimeOffset,d=l.timeOffset;f.logger.log("[transmuxer.ts]: Flushed fragment "+r.sn+(r.part>-1?" p: "+r.part:"")+" of level "+r.level);var c=this.remuxer.remux(n,a,s,o,d,u,!0,this.id);e.push({remuxResult:c,chunkMeta:r}),r.transmuxing.executeEnd=i()},e.resetInitialTimestamp=function resetInitialTimestamp(e){var t=this.demuxer,r=this.remuxer;t&&r&&(t.resetTimeStamp(e),r.resetTimeStamp(e))},e.resetContiguity=function resetContiguity(){var e=this.demuxer,t=this.remuxer;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())},e.resetInitSegment=function resetInitSegment(e,t,r,i,n){var a=this.demuxer,s=this.remuxer;a&&s&&(a.resetInitSegment(e,t,r,i),s.resetInitSegment(e,t,r,n))},e.destroy=function destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)},e.transmux=function transmux(e,t,r,i,n){return t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,r,i,n):this.transmuxUnencrypted(e,r,i,n)},e.transmuxUnencrypted=function transmuxUnencrypted(e,t,r,i){var n=this.demuxer.demux(e,t,!1,!this.config.progressive),a=n.audioTrack,s=n.videoTrack,o=n.id3Track,l=n.textTrack;return{remuxResult:this.remuxer.remux(a,s,o,l,t,r,!1,this.id),chunkMeta:i}},e.transmuxSampleAes=function transmuxSampleAes(e,t,r,i,n){var a=this;return this.demuxer.demuxSampleAes(e,t,r).then((function(e){return{remuxResult:a.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,r,i,!1,a.id),chunkMeta:n}}))},e.configureTransmuxer=function configureTransmuxer(e){for(var t,r=this.config,i=this.observer,n=this.typeSupported,a=this.vendor,s=0,o=g.length;s<o;s++)if(g[s].demux.probe(e)){t=g[s];break}t||(f.logger.warn("Failed to find demuxer by probing frag, treating as mp4 passthrough"),t={demux:l.default,remux:h.default});var u=this.demuxer,d=this.remuxer,c=t.remux,p=t.demux;d&&d instanceof c||(this.remuxer=new c(i,r,n,a)),u&&u instanceof p||(this.demuxer=new p(i,r,n),this.probe=p.probe)},e.needsProbing=function needsProbing(e,t){return!this.demuxer||!this.remuxer||e||t},e.getDecrypter=function getDecrypter(){var e=this.decrypter;return e||(e=this.decrypter=new s.default(this.config)),e},Transmuxer}();var v=function emptyResult(e){return{remuxResult:{},chunkMeta:e}};function isPromise(e){return"then"in e&&e.then instanceof Function}var m=function TransmuxConfig(e,t,r,i,n){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=r,this.duration=i,this.defaultInitPts=n},y=function TransmuxState(e,t,r,i,n,a){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=r,this.trackSwitch=i,this.timeOffset=n,this.initSegmentChange=a}},"./src/demux/tsdemuxer.ts":
|
|
125
|
-
/*!********************************!*\
|
|
126
|
-
!*** ./src/demux/tsdemuxer.ts ***!
|
|
127
|
-
\********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>h});var i=r(/*! ./adts */"./src/demux/adts.ts"),n=r(/*! ./mpegaudio */"./src/demux/mpegaudio.ts"),a=r(/*! ./exp-golomb */"./src/demux/exp-golomb.ts"),s=r(/*! ./sample-aes */"./src/demux/sample-aes.ts"),o=r(/*! ../events */"./src/events.ts"),l=r(/*! ../utils/mp4-tools */"./src/utils/mp4-tools.ts"),u=r(/*! ../utils/logger */"./src/utils/logger.ts"),d=r(/*! ../errors */"./src/errors.ts"),c=r(/*! ../types/demuxer */"./src/types/demuxer.ts");function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}function createAVCSample(e,t,r,i){return{key:e,frame:!1,pts:t,dts:r,units:[],debug:i,length:0}}function parsePAT(e,t){return(31&e[t+10])<<8|e[t+11]}function parsePMT(e,t,r,i){var n={audio:-1,avc:-1,id3:-1,segmentCodec:"aac"},a=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t<a;){var s=(31&e[t+1])<<8|e[t+2];switch(e[t]){case 207:if(!i){u.logger.log("ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream");break}case 15:-1===n.audio&&(n.audio=s);break;case 21:-1===n.id3&&(n.id3=s);break;case 219:if(!i){u.logger.log("H.264 with AES-128-CBC slice encryption found in unencrypted stream");break}case 27:-1===n.avc&&(n.avc=s);break;case 3:case 4:!0!==r.mpeg&&!0!==r.mp3?u.logger.log("MPEG audio found, not supported in this browser"):-1===n.audio&&(n.audio=s,n.segmentCodec="mp3");break;case 36:u.logger.warn("Unsupported HEVC stream type found")}t+=5+((15&e[t+3])<<8|e[t+4])}return n}function parsePES(e){var t,r,i,n,a,s=0,o=e.data;if(!e||0===e.size)return null;for(;o[0].length<19&&o.length>1;){var l=new Uint8Array(o[0].length+o[1].length);l.set(o[0]),l.set(o[1],o[0].length),o[0]=l,o.splice(1,1)}if(1===((t=o[0])[0]<<16)+(t[1]<<8)+t[2]){if((r=(t[4]<<8)+t[5])&&r>e.size-6)return null;var d=t[7];192&d&&(n=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&d?n-(a=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2)>54e5&&(u.logger.warn(Math.round((n-a)/9e4)+"s delta between PTS and DTS, align them"),n=a):a=n);var c=(i=t[8])+9;if(e.size<=c)return null;e.size-=c;for(var h=new Uint8Array(e.size),f=0,g=o.length;f<g;f++){var p=(t=o[f]).byteLength;if(c){if(c>p){c-=p;continue}t=t.subarray(c),p-=c,c=0}h.set(t,s),s+=p}return r&&(r-=i+3),{data:h,pts:n,dts:a,len:r}}return null}function pushAccessUnit(e,t){if(e.units.length&&e.frame){if(void 0===e.pts){var r=t.samples,i=r.length;if(!i)return void t.dropped++;var n=r[i-1];e.pts=n.pts,e.dts=n.dts}t.samples.push(e)}e.debug.length&&u.logger.log(e.pts+"/"+e.dts+":"+e.debug)}const h=function(){function TSDemuxer(e,t,r){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._avcTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.avcSample=null,this.remainderData=null,this.observer=e,this.config=t,this.typeSupported=r}TSDemuxer.probe=function probe(e){var t=TSDemuxer.syncOffset(e);return t>0&&u.logger.warn("MPEG2-TS detected but first sync word found @ offset "+t),-1!==t},TSDemuxer.syncOffset=function syncOffset(e){for(var t=Math.min(940,e.length-376)+1,r=0;r<t;){if(71===e[r]&&71===e[r+188])return r;r++}return-1},TSDemuxer.createTrack=function createTrack(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:l.RemuxerTrackIdConfig[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}};var e=TSDemuxer.prototype;return e.resetInitSegment=function resetInitSegment(e,t,r,i){this.pmtParsed=!1,this._pmtId=-1,this._avcTrack=TSDemuxer.createTrack("video"),this._audioTrack=TSDemuxer.createTrack("audio",i),this._id3Track=TSDemuxer.createTrack("id3"),this._txtTrack=TSDemuxer.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.avcSample=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=r,this._duration=i},e.resetTimeStamp=function resetTimeStamp(){},e.resetContiguity=function resetContiguity(){var e=this._audioTrack,t=this._avcTrack,r=this._id3Track;e&&(e.pesData=null),t&&(t.pesData=null),r&&(r.pesData=null),this.aacOverFlow=null,this.avcSample=null,this.remainderData=null},e.demux=function demux(e,t,r,i){var n;void 0===r&&(r=!1),void 0===i&&(i=!1),r||(this.sampleAes=null);var a=this._avcTrack,s=this._audioTrack,c=this._id3Track,h=this._txtTrack,f=a.pid,g=a.pesData,p=s.pid,v=c.pid,m=s.pesData,y=c.pesData,E=null,T=this.pmtParsed,S=this._pmtId,b=e.length;if(this.remainderData&&(b=(e=(0,l.appendUint8Array)(this.remainderData,e)).length,this.remainderData=null),b<188&&!i)return this.remainderData=e,{audioTrack:s,videoTrack:a,id3Track:c,textTrack:h};var L=Math.max(0,TSDemuxer.syncOffset(e));(b-=(b-L)%188)<e.byteLength&&!i&&(this.remainderData=new Uint8Array(e.buffer,b,e.buffer.byteLength-b));for(var D=0,A=L;A<b;A+=188)if(71===e[A]){var k=!!(64&e[A+1]),C=((31&e[A+1])<<8)+e[A+2],P=void 0;if((48&e[A+3])>>4>1){if((P=A+5+e[A+4])===A+188)continue}else P=A+4;switch(C){case f:k&&(g&&(n=parsePES(g))&&this.parseAVCPES(a,h,n,!1),g={data:[],size:0}),g&&(g.data.push(e.subarray(P,A+188)),g.size+=A+188-P);break;case p:if(k){if(m&&(n=parsePES(m)))switch(s.segmentCodec){case"aac":this.parseAACPES(s,n);break;case"mp3":this.parseMPEGPES(s,n)}m={data:[],size:0}}m&&(m.data.push(e.subarray(P,A+188)),m.size+=A+188-P);break;case v:k&&(y&&(n=parsePES(y))&&this.parseID3PES(c,n),y={data:[],size:0}),y&&(y.data.push(e.subarray(P,A+188)),y.size+=A+188-P);break;case 0:k&&(P+=e[P]+1),S=this._pmtId=parsePAT(e,P);break;case S:k&&(P+=e[P]+1);var I=parsePMT(e,P,this.typeSupported,r);(f=I.avc)>0&&(a.pid=f),(p=I.audio)>0&&(s.pid=p,s.segmentCodec=I.segmentCodec),(v=I.id3)>0&&(c.pid=v),null===E||T||(u.logger.log("unknown PID '"+E+"' in TS found"),E=null,A=L-188),T=this.pmtParsed=!0;break;case 17:case 8191:break;default:E=C}}else D++;D>0&&this.observer.emit(o.Events.ERROR,o.Events.ERROR,{type:d.ErrorTypes.MEDIA_ERROR,details:d.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"Found "+D+" TS packet/s that do not start with 0x47"}),a.pesData=g,s.pesData=m,c.pesData=y;var _={audioTrack:s,videoTrack:a,id3Track:c,textTrack:h};return i&&this.extractRemainingSamples(_),_},e.flush=function flush(){var e,t=this.remainderData;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{videoTrack:this._avcTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e},e.extractRemainingSamples=function extractRemainingSamples(e){var t,r=e.audioTrack,i=e.videoTrack,n=e.id3Track,a=e.textTrack,s=i.pesData,o=r.pesData,l=n.pesData;if(s&&(t=parsePES(s))?(this.parseAVCPES(i,a,t,!0),i.pesData=null):i.pesData=s,o&&(t=parsePES(o))){switch(r.segmentCodec){case"aac":this.parseAACPES(r,t);break;case"mp3":this.parseMPEGPES(r,t)}r.pesData=null}else null!=o&&o.size&&u.logger.log("last AAC PES packet truncated,might overlap between fragments"),r.pesData=o;l&&(t=parsePES(l))?(this.parseID3PES(n,t),n.pesData=null):n.pesData=l},e.demuxSampleAes=function demuxSampleAes(e,t,r){var i=this.demux(e,r,!0,!this.config.progressive),n=this.sampleAes=new s.default(this.observer,this.config,t);return this.decrypt(i,n)},e.decrypt=function decrypt(e,t){return new Promise((function(r){var i=e.audioTrack,n=e.videoTrack;i.samples&&"aac"===i.segmentCodec?t.decryptAacSamples(i.samples,0,(function(){n.samples?t.decryptAvcSamples(n.samples,0,0,(function(){r(e)})):r(e)})):n.samples&&t.decryptAvcSamples(n.samples,0,0,(function(){r(e)}))}))},e.destroy=function destroy(){this._duration=0},e.parseAVCPES=function parseAVCPES(e,t,r,i){var n,s=this,o=this.parseAVCNALu(e,r.data),u=this.avcSample,d=!1;r.data=null,u&&o.length&&!e.audFound&&(pushAccessUnit(u,e),u=this.avcSample=createAVCSample(!1,r.pts,r.dts,"")),o.forEach((function(i){switch(i.type){case 1:n=!0,u||(u=s.avcSample=createAVCSample(!0,r.pts,r.dts,"")),u.frame=!0;var o=i.data;if(d&&o.length>4){var c=new a.default(o).readSliceType();2!==c&&4!==c&&7!==c&&9!==c||(u.key=!0)}break;case 5:n=!0,u||(u=s.avcSample=createAVCSample(!0,r.pts,r.dts,"")),u.key=!0,u.frame=!0;break;case 6:n=!0,(0,l.parseSEIMessageFromNALu)(i.data,1,r.pts,t.samples);break;case 7:if(n=!0,d=!0,!e.sps){var h=new a.default(i.data).readSPS();e.width=h.width,e.height=h.height,e.pixelRatio=h.pixelRatio,e.sps=[i.data],e.duration=s._duration;for(var f=i.data.subarray(1,4),g="avc1.",p=0;p<3;p++){var v=f[p].toString(16);v.length<2&&(v="0"+v),g+=v}e.codec=g}break;case 8:n=!0,e.pps||(e.pps=[i.data]);break;case 9:n=!1,e.audFound=!0,u&&pushAccessUnit(u,e),u=s.avcSample=createAVCSample(!1,r.pts,r.dts,"");break;case 12:n=!0;break;default:n=!1,u&&(u.debug+="unknown NAL "+i.type+" ")}u&&n&&u.units.push(i)})),i&&u&&(pushAccessUnit(u,e),this.avcSample=null)},e.getLastNalUnit=function getLastNalUnit(e){var t,r,i=this.avcSample;if(i&&0!==i.units.length||(i=e[e.length-1]),null!==(t=i)&&void 0!==t&&t.units){var n=i.units;r=n[n.length-1]}return r},e.parseAVCNALu=function parseAVCNALu(e,t){var r,i,n=t.byteLength,a=e.naluState||0,s=a,o=[],l=0,u=-1,d=0;for(-1===a&&(u=0,d=31&t[0],a=0,l=1);l<n;)if(r=t[l++],a)if(1!==a)if(r)if(1===r){if(u>=0){var c={data:t.subarray(u,l-a-1),type:d};o.push(c)}else{var h=this.getLastNalUnit(e.samples);if(h&&(s&&l<=4-s&&h.state&&(h.data=h.data.subarray(0,h.data.byteLength-s)),(i=l-a-1)>0)){var f=new Uint8Array(h.data.byteLength+i);f.set(h.data,0),f.set(t.subarray(0,i),h.data.byteLength),h.data=f,h.state=0}}l<n?(u=l,d=31&t[l],a=0):a=-1}else a=0;else a=3;else a=r?0:2;else a=r?0:1;if(u>=0&&a>=0){var g={data:t.subarray(u,n),type:d,state:a};o.push(g)}if(0===o.length){var p=this.getLastNalUnit(e.samples);if(p){var v=new Uint8Array(p.data.byteLength+t.byteLength);v.set(p.data,0),v.set(t,p.data.byteLength),p.data=v}}return e.naluState=a,o},e.parseAACPES=function parseAACPES(e,t){var r,n,a,s,l,c=0,h=this.aacOverFlow,f=t.data;if(h){this.aacOverFlow=null;var g=h.missing,p=h.sample.unit.byteLength;if(-1===g){var v=new Uint8Array(p+f.byteLength);v.set(h.sample.unit,0),v.set(f,p),f=v}else{var m=p-g;h.sample.unit.set(f.subarray(0,g),m),e.samples.push(h.sample),c=h.missing}}for(r=c,n=f.length;r<n-1&&!i.isHeader(f,r);r++);if(r!==c&&(r<n-1?(a="AAC PES did not start with ADTS header,offset:"+r,s=!1):(a="no ADTS header found in AAC PES",s=!0),u.logger.warn("parsing error:"+a),this.observer.emit(o.Events.ERROR,o.Events.ERROR,{type:d.ErrorTypes.MEDIA_ERROR,details:d.ErrorDetails.FRAG_PARSING_ERROR,fatal:s,reason:a}),s))return;if(i.initTrackConfig(e,this.observer,f,r,this.audioCodec),void 0!==t.pts)l=t.pts;else{if(!h)return void u.logger.warn("[tsdemuxer]: AAC PES unknown PTS");var y=i.getFrameDuration(e.samplerate);l=h.sample.pts+y}for(var E,T=0;r<n;){if(r+=(E=i.appendFrame(e,f,r,l,T)).length,E.missing){this.aacOverFlow=E;break}for(T++;r<n-1&&!i.isHeader(f,r);r++);}},e.parseMPEGPES=function parseMPEGPES(e,t){var r=t.data,i=r.length,a=0,s=0,o=t.pts;if(void 0!==o)for(;s<i;)if(n.isHeader(r,s)){var l=n.appendFrame(e,r,s,o,a);if(!l)break;s+=l.length,a++}else s++;else u.logger.warn("[tsdemuxer]: MPEG PES unknown PTS")},e.parseID3PES=function parseID3PES(e,t){if(void 0!==t.pts){var r=_extends({},t,{type:this._avcTrack?c.MetadataSchema.emsg:c.MetadataSchema.audioId3,duration:Number.POSITIVE_INFINITY});e.samples.push(r)}else u.logger.warn("[tsdemuxer]: ID3 PES unknown PTS")},TSDemuxer}()},"./src/demux/webworkify-webpack.js":
|
|
128
|
-
/*!*****************************************!*\
|
|
129
|
-
!*** ./src/demux/webworkify-webpack.js ***!
|
|
130
|
-
\*****************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>__WEBPACK_DEFAULT_EXPORT__});var i=function webpackBootstrapFunc(){var e=ENTRY_MODULE,t={},r=function __webpack_require__(r){var i=t[r];if(void 0!==i)return i.exports;var n=t[r]={exports:{}};return e[r].call(n.exports,n,n.exports,__webpack_require__),n.exports};r.m=e,r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i=r(ENTRY_MODULE);return i.default||i}.toString().split("ENTRY_MODULE");function quoteRegExp(e){return(e+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function getModuleDependencies(e,t,i){var n={};n[i]=[];var a=t.toString().replace(/^"[^"]+"/,"function"),s=a.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/)||a.match(/^\(\w+,\s*\w+,\s*(\w+)\)\s?\=\s?\>/);if(!s)return n;for(var o,l=s[1],u=new RegExp("(\\\\n|\\W)"+quoteRegExp(l)+"\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)","g");o=u.exec(a);)"dll-reference"!==o[3]&&n[i].push(o[3]);for(u=new RegExp("\\("+quoteRegExp(l)+'\\("(dll-reference\\s([\\.|\\-|\\+|\\w|/|@]+))"\\)\\)\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)',"g");o=u.exec(a);)e[o[2]]||(n[i].push(o[1]),e[o[2]]=r(o[1]).m),n[o[2]]=n[o[2]]||[],n[o[2]].push(o[4]);for(var d,c=Object.keys(n),h=0;h<c.length;h++)for(var f=0;f<n[c[h]].length;f++)d=n[c[h]][f],isNaN(1*d)||(n[c[h]][f]=1*n[c[h]][f]);return n}function hasValuesInQueues(e){return Object.keys(e).reduce((function(t,r){return t||e[r].length>0}),!1)}function getWebpackString(e,t,r,n){var a=e[n].map((function(e){return'"'+e+'": '+t[n][e].toString().replace(/^"[^"]+"/,"function")})).join(",");return i[0]+"{"+a+"}"+i[1]+'"'+r+'"'+i[2]}function __WEBPACK_DEFAULT_EXPORT__(e,t){t=t||{};var i={main:r.m},n=t.all?{main:Object.keys(i.main)}:function getRequiredModules(e,t){for(var r={main:[t]},i={main:[]},n={main:{}};hasValuesInQueues(r);)for(var a=Object.keys(r),s=0;s<a.length;s++){var o=a[s],l=r[o].pop();if(n[o]=n[o]||{},!n[o][l]&&e[o][l]){n[o][l]=!0,i[o]=i[o]||[],i[o].push(l);for(var u=getModuleDependencies(e,e[o][l],o),d=Object.keys(u),c=0;c<d.length;c++)r[d[c]]=r[d[c]]||[],r[d[c]]=r[d[c]].concat(u[d[c]])}}return i}(i,e),a="";Object.keys(n).filter((function(e){return"main"!==e})).forEach((function(e){for(var t=0;n[e][t];)t++;n[e].push(t),i[e][t]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",a=a+"var "+e+" = ("+getWebpackString(n,i,t,modules)+")();\n"})),a=a+"new (("+getWebpackString(n,i,e,"main")+")())(self);";var s=new window.Blob([a],{type:"text/javascript"}),o=(window.URL||window.webkitURL||window.mozURL||window.msURL).createObjectURL(s),l=new window.Worker(o);return l.objectURL=o,l}},"./src/errors.ts":
|
|
131
|
-
/*!***********************!*\
|
|
132
|
-
!*** ./src/errors.ts ***!
|
|
133
|
-
\***********************/(e,t,r)=>{"use strict";var i,n;r.r(t),r.d(t,{ErrorDetails:()=>n,ErrorTypes:()=>i}),function(e){e.NETWORK_ERROR="networkError",e.MEDIA_ERROR="mediaError",e.KEY_SYSTEM_ERROR="keySystemError",e.MUX_ERROR="muxError",e.OTHER_ERROR="otherError"}(i||(i={})),function(e){e.KEY_SYSTEM_NO_KEYS="keySystemNoKeys",e.KEY_SYSTEM_NO_ACCESS="keySystemNoAccess",e.KEY_SYSTEM_NO_SESSION="keySystemNoSession",e.KEY_SYSTEM_NO_CONFIGURED_LICENSE="keySystemNoConfiguredLicense",e.KEY_SYSTEM_LICENSE_REQUEST_FAILED="keySystemLicenseRequestFailed",e.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED="keySystemServerCertificateRequestFailed",e.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED="keySystemServerCertificateUpdateFailed",e.KEY_SYSTEM_SESSION_UPDATE_FAILED="keySystemSessionUpdateFailed",e.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED="keySystemStatusOutputRestricted",e.KEY_SYSTEM_STATUS_INTERNAL_ERROR="keySystemStatusInternalError",e.MANIFEST_LOAD_ERROR="manifestLoadError",e.MANIFEST_LOAD_TIMEOUT="manifestLoadTimeOut",e.MANIFEST_PARSING_ERROR="manifestParsingError",e.MANIFEST_INCOMPATIBLE_CODECS_ERROR="manifestIncompatibleCodecsError",e.LEVEL_EMPTY_ERROR="levelEmptyError",e.LEVEL_LOAD_ERROR="levelLoadError",e.LEVEL_LOAD_TIMEOUT="levelLoadTimeOut",e.LEVEL_SWITCH_ERROR="levelSwitchError",e.AUDIO_TRACK_LOAD_ERROR="audioTrackLoadError",e.AUDIO_TRACK_LOAD_TIMEOUT="audioTrackLoadTimeOut",e.SUBTITLE_LOAD_ERROR="subtitleTrackLoadError",e.SUBTITLE_TRACK_LOAD_TIMEOUT="subtitleTrackLoadTimeOut",e.FRAG_LOAD_ERROR="fragLoadError",e.FRAG_LOAD_TIMEOUT="fragLoadTimeOut",e.FRAG_DECRYPT_ERROR="fragDecryptError",e.FRAG_PARSING_ERROR="fragParsingError",e.REMUX_ALLOC_ERROR="remuxAllocError",e.KEY_LOAD_ERROR="keyLoadError",e.KEY_LOAD_TIMEOUT="keyLoadTimeOut",e.BUFFER_ADD_CODEC_ERROR="bufferAddCodecError",e.BUFFER_INCOMPATIBLE_CODECS_ERROR="bufferIncompatibleCodecsError",e.BUFFER_APPEND_ERROR="bufferAppendError",e.BUFFER_APPENDING_ERROR="bufferAppendingError",e.BUFFER_STALLED_ERROR="bufferStalledError",e.BUFFER_FULL_ERROR="bufferFullError",e.BUFFER_SEEK_OVER_HOLE="bufferSeekOverHole",e.BUFFER_NUDGE_ON_STALL="bufferNudgeOnStall",e.INTERNAL_EXCEPTION="internalException",e.INTERNAL_ABORTED="aborted",e.UNKNOWN="unknown"}(n||(n={}))},"./src/events.ts":
|
|
134
|
-
/*!***********************!*\
|
|
135
|
-
!*** ./src/events.ts ***!
|
|
136
|
-
\***********************/(e,t,r)=>{"use strict";var i;r.r(t),r.d(t,{Events:()=>i}),function(e){e.MEDIA_ATTACHING="hlsMediaAttaching",e.MEDIA_ATTACHED="hlsMediaAttached",e.MEDIA_DETACHING="hlsMediaDetaching",e.MEDIA_DETACHED="hlsMediaDetached",e.BUFFER_RESET="hlsBufferReset",e.BUFFER_CODECS="hlsBufferCodecs",e.BUFFER_CREATED="hlsBufferCreated",e.BUFFER_APPENDING="hlsBufferAppending",e.BUFFER_APPENDED="hlsBufferAppended",e.BUFFER_EOS="hlsBufferEos",e.BUFFER_FLUSHING="hlsBufferFlushing",e.BUFFER_FLUSHED="hlsBufferFlushed",e.MANIFEST_LOADING="hlsManifestLoading",e.MANIFEST_LOADED="hlsManifestLoaded",e.MANIFEST_PARSED="hlsManifestParsed",e.LEVEL_SWITCHING="hlsLevelSwitching",e.LEVEL_SWITCHED="hlsLevelSwitched",e.LEVEL_LOADING="hlsLevelLoading",e.LEVEL_LOADED="hlsLevelLoaded",e.LEVEL_UPDATED="hlsLevelUpdated",e.LEVEL_PTS_UPDATED="hlsLevelPtsUpdated",e.LEVELS_UPDATED="hlsLevelsUpdated",e.AUDIO_TRACKS_UPDATED="hlsAudioTracksUpdated",e.AUDIO_TRACK_SWITCHING="hlsAudioTrackSwitching",e.AUDIO_TRACK_SWITCHED="hlsAudioTrackSwitched",e.AUDIO_TRACK_LOADING="hlsAudioTrackLoading",e.AUDIO_TRACK_LOADED="hlsAudioTrackLoaded",e.SUBTITLE_TRACKS_UPDATED="hlsSubtitleTracksUpdated",e.SUBTITLE_TRACKS_CLEARED="hlsSubtitleTracksCleared",e.SUBTITLE_TRACK_SWITCH="hlsSubtitleTrackSwitch",e.SUBTITLE_TRACK_LOADING="hlsSubtitleTrackLoading",e.SUBTITLE_TRACK_LOADED="hlsSubtitleTrackLoaded",e.SUBTITLE_FRAG_PROCESSED="hlsSubtitleFragProcessed",e.CUES_PARSED="hlsCuesParsed",e.NON_NATIVE_TEXT_TRACKS_FOUND="hlsNonNativeTextTracksFound",e.INIT_PTS_FOUND="hlsInitPtsFound",e.FRAG_LOADING="hlsFragLoading",e.FRAG_LOAD_EMERGENCY_ABORTED="hlsFragLoadEmergencyAborted",e.FRAG_LOADED="hlsFragLoaded",e.FRAG_DECRYPTED="hlsFragDecrypted",e.FRAG_PARSING_INIT_SEGMENT="hlsFragParsingInitSegment",e.FRAG_PARSING_USERDATA="hlsFragParsingUserdata",e.FRAG_PARSING_METADATA="hlsFragParsingMetadata",e.FRAG_PARSED="hlsFragParsed",e.FRAG_BUFFERED="hlsFragBuffered",e.FRAG_CHANGED="hlsFragChanged",e.FPS_DROP="hlsFpsDrop",e.FPS_DROP_LEVEL_CAPPING="hlsFpsDropLevelCapping",e.ERROR="hlsError",e.DESTROYING="hlsDestroying",e.KEY_LOADING="hlsKeyLoading",e.KEY_LOADED="hlsKeyLoaded",e.LIVE_BACK_BUFFER_REACHED="hlsLiveBackBufferReached",e.BACK_BUFFER_REACHED="hlsBackBufferReached"}(i||(i={}))},"./src/hls.ts":
|
|
137
|
-
/*!********************!*\
|
|
138
|
-
!*** ./src/hls.ts ***!
|
|
139
|
-
\********************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>y});var i=r(/*! url-toolkit */"./node_modules/url-toolkit/src/url-toolkit.js"),n=r(/*! ./loader/playlist-loader */"./src/loader/playlist-loader.ts"),a=r(/*! ./controller/id3-track-controller */"./src/controller/id3-track-controller.ts"),s=r(/*! ./controller/latency-controller */"./src/controller/latency-controller.ts"),o=r(/*! ./controller/level-controller */"./src/controller/level-controller.ts"),l=r(/*! ./controller/fragment-tracker */"./src/controller/fragment-tracker.ts"),u=r(/*! ./loader/key-loader */"./src/loader/key-loader.ts"),d=r(/*! ./controller/stream-controller */"./src/controller/stream-controller.ts"),c=r(/*! ./is-supported */"./src/is-supported.ts"),h=r(/*! ./utils/logger */"./src/utils/logger.ts"),f=r(/*! ./config */"./src/config.ts"),g=r(/*! eventemitter3 */"./node_modules/eventemitter3/index.js"),p=r(/*! ./events */"./src/events.ts"),v=r(/*! ./errors */"./src/errors.ts"),m=r(/*! ./types/level */"./src/types/level.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}var y=function(){function Hls(e){void 0===e&&(e={}),this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new g.EventEmitter,this._autoLevelCapping=void 0,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null;var t=this.config=(0,f.mergeConfig)(Hls.DefaultConfig,e);this.userConfig=e,(0,h.enableLogs)(t.debug,"Hls instance"),this._autoLevelCapping=-1,t.progressive&&(0,f.enableStreamingMode)(t);var r=t.abrController,i=t.bufferController,c=t.capLevelController,p=t.fpsController,v=this.abrController=new r(this),m=this.bufferController=new i(this),y=this.capLevelController=new c(this),E=new p(this),T=new n.default(this),S=new a.default(this),b=this.levelController=new o.default(this),L=new l.FragmentTracker(this),D=new u.default(this.config),A=this.streamController=new d.default(this,L,D);y.setStreamController(A),E.setStreamController(A);var k=[T,b,A];this.networkControllers=k;var C=[v,m,y,E,S,L];this.audioTrackController=this.createController(t.audioTrackController,k);var P=t.audioStreamController;P&&k.push(new P(this,L,D)),this.subtitleTrackController=this.createController(t.subtitleTrackController,k);var I=t.subtitleStreamController;I&&k.push(new I(this,L,D)),this.createController(t.timelineController,C),D.emeController=this.emeController=this.createController(t.emeController,C),this.cmcdController=this.createController(t.cmcdController,C),this.latencyController=this.createController(s.default,C),this.coreComponents=C}Hls.isSupported=function isSupported(){return(0,c.isSupported)()};var e=Hls.prototype;return e.createController=function createController(e,t){if(e){var r=new e(this);return t&&t.push(r),r}return null},e.on=function on(e,t,r){void 0===r&&(r=this),this._emitter.on(e,t,r)},e.once=function once(e,t,r){void 0===r&&(r=this),this._emitter.once(e,t,r)},e.removeAllListeners=function removeAllListeners(e){this._emitter.removeAllListeners(e)},e.off=function off(e,t,r,i){void 0===r&&(r=this),this._emitter.off(e,t,r,i)},e.listeners=function listeners(e){return this._emitter.listeners(e)},e.emit=function emit(e,t,r){return this._emitter.emit(e,t,r)},e.trigger=function trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){h.logger.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),this.trigger(p.Events.ERROR,{type:v.ErrorTypes.OTHER_ERROR,details:v.ErrorDetails.INTERNAL_EXCEPTION,fatal:!1,event:e,error:t})}return!1},e.listenerCount=function listenerCount(e){return this._emitter.listenerCount(e)},e.destroy=function destroy(){h.logger.log("destroy"),this.trigger(p.Events.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((function(e){return e.destroy()})),this.networkControllers.length=0,this.coreComponents.forEach((function(e){return e.destroy()})),this.coreComponents.length=0},e.attachMedia=function attachMedia(e){h.logger.log("attachMedia"),this._media=e,this.trigger(p.Events.MEDIA_ATTACHING,{media:e})},e.detachMedia=function detachMedia(){h.logger.log("detachMedia"),this.trigger(p.Events.MEDIA_DETACHING,void 0),this._media=null},e.loadSource=function loadSource(e){this.stopLoad();var t=this.media,r=this.url,n=this.url=i.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});h.logger.log("loadSource:"+n),t&&r&&r!==n&&this.bufferController.hasSourceTypes()&&(this.detachMedia(),this.attachMedia(t)),this.trigger(p.Events.MANIFEST_LOADING,{url:e})},e.startLoad=function startLoad(e){void 0===e&&(e=-1),h.logger.log("startLoad("+e+")"),this.networkControllers.forEach((function(t){t.startLoad(e)}))},e.stopLoad=function stopLoad(){h.logger.log("stopLoad"),this.networkControllers.forEach((function(e){e.stopLoad()}))},e.swapAudioCodec=function swapAudioCodec(){h.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()},e.recoverMediaError=function recoverMediaError(){h.logger.log("recoverMediaError");var e=this._media;this.detachMedia(),e&&this.attachMedia(e)},e.removeLevel=function removeLevel(e,t){void 0===t&&(t=0),this.levelController.removeLevel(e,t)},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(Hls,[{key:"levels",get:function get(){var e=this.levelController.levels;return e||[]}},{key:"currentLevel",get:function get(){return this.streamController.currentLevel},set:function set(e){h.logger.log("set currentLevel:"+e),this.loadLevel=e,this.abrController.clearTimer(),this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function get(){return this.streamController.nextLevel},set:function set(e){h.logger.log("set nextLevel:"+e),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function get(){return this.levelController.level},set:function set(e){h.logger.log("set loadLevel:"+e),this.levelController.manualLevel=e}},{key:"nextLoadLevel",get:function get(){return this.levelController.nextLoadLevel},set:function set(e){this.levelController.nextLoadLevel=e}},{key:"firstLevel",get:function get(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function set(e){h.logger.log("set firstLevel:"+e),this.levelController.firstLevel=e}},{key:"startLevel",get:function get(){return this.levelController.startLevel},set:function set(e){h.logger.log("set startLevel:"+e),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}},{key:"capLevelToPlayerSize",get:function get(){return this.config.capLevelToPlayerSize},set:function set(e){var t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}},{key:"autoLevelCapping",get:function get(){return this._autoLevelCapping},set:function set(e){this._autoLevelCapping!==e&&(h.logger.log("set autoLevelCapping:"+e),this._autoLevelCapping=e)}},{key:"bandwidthEstimate",get:function get(){var e=this.abrController.bwEstimator;return e?e.getEstimate():NaN}},{key:"maxHdcpLevel",get:function get(){return this._maxHdcpLevel},set:function set(e){m.HdcpLevels.indexOf(e)>-1&&(this._maxHdcpLevel=e)}},{key:"autoLevelEnabled",get:function get(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function get(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function get(){var e=this.levels,t=this.config.minAutoBitrate;if(!e)return 0;for(var r=e.length,i=0;i<r;i++)if(e[i].maxBitrate>=t)return i;return 0}},{key:"maxAutoLevel",get:function get(){var e,t=this.levels,r=this.autoLevelCapping,i=this.maxHdcpLevel;if(e=-1===r&&t&&t.length?t.length-1:r,i)for(var n=e;n--;){var a=t[n].attrs["HDCP-LEVEL"];if(a&&a<=i)return n}return e}},{key:"nextAutoLevel",get:function get(){return Math.min(Math.max(this.abrController.nextAutoLevel,this.minAutoLevel),this.maxAutoLevel)},set:function set(e){this.abrController.nextAutoLevel=Math.max(this.minAutoLevel,e)}},{key:"playingDate",get:function get(){return this.streamController.currentProgramDateTime}},{key:"mainForwardBufferInfo",get:function get(){return this.streamController.getMainFwdBufferInfo()}},{key:"audioTracks",get:function get(){var e=this.audioTrackController;return e?e.audioTracks:[]}},{key:"audioTrack",get:function get(){var e=this.audioTrackController;return e?e.audioTrack:-1},set:function set(e){var t=this.audioTrackController;t&&(t.audioTrack=e)}},{key:"subtitleTracks",get:function get(){var e=this.subtitleTrackController;return e?e.subtitleTracks:[]}},{key:"subtitleTrack",get:function get(){var e=this.subtitleTrackController;return e?e.subtitleTrack:-1},set:function set(e){var t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}},{key:"media",get:function get(){return this._media}},{key:"subtitleDisplay",get:function get(){var e=this.subtitleTrackController;return!!e&&e.subtitleDisplay},set:function set(e){var t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}},{key:"lowLatencyMode",get:function get(){return this.config.lowLatencyMode},set:function set(e){this.config.lowLatencyMode=e}},{key:"liveSyncPosition",get:function get(){return this.latencyController.liveSyncPosition}},{key:"latency",get:function get(){return this.latencyController.latency}},{key:"maxLatency",get:function get(){return this.latencyController.maxLatency}},{key:"targetLatency",get:function get(){return this.latencyController.targetLatency}},{key:"drift",get:function get(){return this.latencyController.drift}},{key:"forceStartLoad",get:function get(){return this.streamController.forceStartLoad}}],[{key:"version",get:function get(){return"1.3.1"}},{key:"Events",get:function get(){return p.Events}},{key:"ErrorTypes",get:function get(){return v.ErrorTypes}},{key:"ErrorDetails",get:function get(){return v.ErrorDetails}},{key:"DefaultConfig",get:function get(){return Hls.defaultConfig?Hls.defaultConfig:f.hlsDefaultConfig},set:function set(e){Hls.defaultConfig=e}}]),Hls}();y.defaultConfig=void 0},"./src/is-supported.ts":
|
|
140
|
-
/*!*****************************!*\
|
|
141
|
-
!*** ./src/is-supported.ts ***!
|
|
142
|
-
\*****************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{changeTypeSupported:()=>changeTypeSupported,isSupported:()=>isSupported});var i=r(/*! ./utils/mediasource-helper */"./src/utils/mediasource-helper.ts");function getSourceBuffer(){return self.SourceBuffer||self.WebKitSourceBuffer}function isSupported(){var e=(0,i.getMediaSource)();if(!e)return!1;var t=getSourceBuffer(),r=e&&"function"==typeof e.isTypeSupported&&e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),n=!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove;return!!r&&!!n}function changeTypeSupported(){var e,t=getSourceBuffer();return"function"==typeof(null==t||null===(e=t.prototype)||void 0===e?void 0:e.changeType)}},"./src/loader/date-range.ts":
|
|
143
|
-
/*!**********************************!*\
|
|
144
|
-
!*** ./src/loader/date-range.ts ***!
|
|
145
|
-
\**********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{DateRange:()=>o,DateRangeAttribute:()=>i});var i,n=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),a=r(/*! ../utils/attr-list */"./src/utils/attr-list.ts"),s=r(/*! ../utils/logger */"./src/utils/logger.ts");function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}!function(e){e.ID="ID",e.CLASS="CLASS",e.START_DATE="START-DATE",e.DURATION="DURATION",e.END_DATE="END-DATE",e.END_ON_NEXT="END-ON-NEXT",e.PLANNED_DURATION="PLANNED-DURATION",e.SCTE35_OUT="SCTE35-OUT",e.SCTE35_IN="SCTE35-IN"}(i||(i={}));var o=function(){function DateRange(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){var r=t.attr;for(var o in r)if(Object.prototype.hasOwnProperty.call(e,o)&&e[o]!==r[o]){s.logger.warn('DATERANGE tag attribute: "'+o+'" does not match for tags with ID: "'+e.ID+'"'),this._badValueForSameId=o;break}e=_extends(new a.AttrList({}),r,e)}if(this.attr=e,this._startDate=new Date(e[i.START_DATE]),i.END_DATE in this.attr){var l=new Date(this.attr[i.END_DATE]);(0,n.isFiniteNumber)(l.getTime())&&(this._endDate=l)}}return function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(DateRange,[{key:"id",get:function get(){return this.attr.ID}},{key:"class",get:function get(){return this.attr.CLASS}},{key:"startDate",get:function get(){return this._startDate}},{key:"endDate",get:function get(){if(this._endDate)return this._endDate;var e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}},{key:"duration",get:function get(){if(i.DURATION in this.attr){var e=this.attr.decimalFloatingPoint(i.DURATION);if((0,n.isFiniteNumber)(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}},{key:"plannedDuration",get:function get(){return i.PLANNED_DURATION in this.attr?this.attr.decimalFloatingPoint(i.PLANNED_DURATION):null}},{key:"endOnNext",get:function get(){return this.attr.bool(i.END_ON_NEXT)}},{key:"isValid",get:function get(){return!!this.id&&!this._badValueForSameId&&(0,n.isFiniteNumber)(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}]),DateRange}()},"./src/loader/fragment-loader.ts":
|
|
146
|
-
/*!***************************************!*\
|
|
147
|
-
!*** ./src/loader/fragment-loader.ts ***!
|
|
148
|
-
\***************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{LoadError:()=>o,default:()=>s});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../errors */"./src/errors.ts");function _wrapNativeSuper(e){var t="function"==typeof Map?new Map:void 0;return(_wrapNativeSuper=function _wrapNativeSuper(e){if(null===e||!function _isNativeFunction(e){return-1!==Function.toString.call(e).indexOf("[native code]")}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,Wrapper)}function Wrapper(){return _construct(e,arguments,_getPrototypeOf(this).constructor)}return Wrapper.prototype=Object.create(e.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(Wrapper,e)})(e)}function _construct(e,t,r){return(_construct=_isNativeReflectConstruct()?Reflect.construct.bind():function _construct(e,t,r){var i=[null];i.push.apply(i,t);var n=new(Function.bind.apply(e,i));return r&&_setPrototypeOf(n,r.prototype),n}).apply(null,arguments)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var a=Math.pow(2,17),s=function(){function FragmentLoader(e){this.config=void 0,this.loader=null,this.partLoadTimeout=-1,this.config=e}var e=FragmentLoader.prototype;return e.destroy=function destroy(){this.loader&&(this.loader.destroy(),this.loader=null)},e.abort=function abort(){this.loader&&this.loader.abort()},e.load=function load(e,t){var r=this,i=e.url;if(!i)return Promise.reject(new o({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,networkDetails:null},"Fragment does not have a "+(i?"part list":"url")));this.abort();var s=this.config,l=s.fLoader,u=s.loader;return new Promise((function(i,d){r.loader&&r.loader.destroy();var c=r.loader=e.loader=l?new l(s):new u(s),h=createLoaderContext(e),f={timeout:s.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:s.fragLoadingMaxRetryTimeout,highWaterMark:"initSegment"===e.sn?1/0:a};e.stats=c.stats,c.load(h,f,{onSuccess:function onSuccess(t,n,a,s){r.resetLoader(e,c);var o=t.data;a.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(o.slice(0,16)),o=o.slice(16)),i({frag:e,part:null,payload:o,networkDetails:s})},onError:function onError(t,i,a){r.resetLoader(e,c),d(new o({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:t,networkDetails:a}))},onAbort:function onAbort(t,i,a){r.resetLoader(e,c),d(new o({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.INTERNAL_ABORTED,fatal:!1,frag:e,networkDetails:a}))},onTimeout:function onTimeout(t,i,a){r.resetLoader(e,c),d(new o({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,networkDetails:a}))},onProgress:function onProgress(r,i,n,a){t&&t({frag:e,part:null,payload:n,networkDetails:a})}})}))},e.loadPart=function loadPart(e,t,r){var i=this;this.abort();var s=this.config,l=s.fLoader,u=s.loader;return new Promise((function(d,c){i.loader&&i.loader.destroy();var h=i.loader=e.loader=l?new l(s):new u(s),f=createLoaderContext(e,t),g={timeout:s.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:s.fragLoadingMaxRetryTimeout,highWaterMark:a};t.stats=h.stats,h.load(f,g,{onSuccess:function onSuccess(n,a,s,o){i.resetLoader(e,h),i.updateStatsFromPart(e,t);var l={frag:e,part:t,payload:n.data,networkDetails:o};r(l),d(l)},onError:function onError(r,a,s){i.resetLoader(e,h),c(new o({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:r,networkDetails:s}))},onAbort:function onAbort(r,a,s){e.stats.aborted=t.stats.aborted,i.resetLoader(e,h),c(new o({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,networkDetails:s}))},onTimeout:function onTimeout(r,a,s){i.resetLoader(e,h),c(new o({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,networkDetails:s}))}})}))},e.updateStatsFromPart=function updateStatsFromPart(e,t){var r=e.stats,i=t.stats,n=i.total;if(r.loaded+=i.loaded,n){var a=Math.round(e.duration/t.duration),s=Math.min(Math.round(r.loaded/n),a),o=(a-s)*Math.round(r.loaded/s);r.total=r.loaded+o}else r.total=Math.max(r.loaded,r.total);var l=r.loading,u=i.loading;l.start?l.first+=u.first-u.start:(l.start=u.start,l.first=u.first),l.end=u.end},e.resetLoader=function resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()},FragmentLoader}();function createLoaderContext(e,t){void 0===t&&(t=null);var r=t||e,n={frag:e,part:t,responseType:"arraybuffer",url:r.url,headers:{},rangeStart:0,rangeEnd:0},a=r.byteRangeStartOffset,s=r.byteRangeEndOffset;if((0,i.isFiniteNumber)(a)&&(0,i.isFiniteNumber)(s)){var o,l=a,u=s;if("initSegment"===e.sn&&"AES-128"===(null===(o=e.decryptdata)||void 0===o?void 0:o.method)){var d=s-a;d%16&&(u=s+(16-d%16)),0!==a&&(n.resetIV=!0,l=a-16)}n.rangeStart=l,n.rangeEnd=u}return n}var o=function(e){function LoadError(t){for(var r,i=arguments.length,n=new Array(i>1?i-1:0),a=1;a<i;a++)n[a-1]=arguments[a];return(r=e.call.apply(e,[this].concat(n))||this).data=void 0,r.data=t,r}return function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(LoadError,e),LoadError}(_wrapNativeSuper(Error))},"./src/loader/fragment.ts":
|
|
149
|
-
/*!********************************!*\
|
|
150
|
-
!*** ./src/loader/fragment.ts ***!
|
|
151
|
-
\********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{BaseSegment:()=>o,ElementaryStreamTypes:()=>i,Fragment:()=>l,Part:()=>u});var i,n=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),a=r(/*! url-toolkit */"./node_modules/url-toolkit/src/url-toolkit.js"),s=r(/*! ./load-stats */"./src/loader/load-stats.ts");function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}!function(e){e.AUDIO="audio",e.VIDEO="video",e.AUDIOVIDEO="audiovideo"}(i||(i={}));var o=function(){function BaseSegment(e){var t;this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams=((t={})[i.AUDIO]=null,t[i.VIDEO]=null,t[i.AUDIOVIDEO]=null,t),this.baseurl=e}return BaseSegment.prototype.setByteRange=function setByteRange(e,t){var r=e.split("@",2),i=[];1===r.length?i[0]=t?t.byteRangeEndOffset:0:i[0]=parseInt(r[1]),i[1]=parseInt(r[0])+i[0],this._byteRange=i},_createClass(BaseSegment,[{key:"byteRange",get:function get(){return this._byteRange?this._byteRange:[]}},{key:"byteRangeStartOffset",get:function get(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function get(){return this.byteRange[1]}},{key:"url",get:function get(){return!this._url&&this.baseurl&&this.relurl&&(this._url=(0,a.buildAbsoluteURL)(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""},set:function set(e){this._url=e}}]),BaseSegment}(),l=function(e){function Fragment(t,r){var i;return(i=e.call(this,r)||this)._decryptdata=null,i.rawProgramDateTime=null,i.programDateTime=null,i.tagList=[],i.duration=0,i.sn=0,i.levelkeys=void 0,i.type=void 0,i.loader=null,i.keyLoader=null,i.level=-1,i.cc=0,i.startPTS=void 0,i.endPTS=void 0,i.appendedPTS=void 0,i.startDTS=void 0,i.endDTS=void 0,i.start=0,i.deltaPTS=void 0,i.maxStartPTS=void 0,i.minEndPTS=void 0,i.stats=new s.LoadStats,i.urlId=0,i.data=void 0,i.bitrateTest=!1,i.title=null,i.initSegment=null,i.endList=void 0,i.type=t,i}_inheritsLoose(Fragment,e);var t=Fragment.prototype;return t.setKeyFormat=function setKeyFormat(e){if(this.levelkeys){var t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}},t.abortRequests=function abortRequests(){var e,t;null===(e=this.loader)||void 0===e||e.abort(),null===(t=this.keyLoader)||void 0===t||t.abort()},t.setElementaryStreamInfo=function setElementaryStreamInfo(e,t,r,i,n,a){void 0===a&&(a=!1);var s=this.elementaryStreams,o=s[e];o?(o.startPTS=Math.min(o.startPTS,t),o.endPTS=Math.max(o.endPTS,r),o.startDTS=Math.min(o.startDTS,i),o.endDTS=Math.max(o.endDTS,n)):s[e]={startPTS:t,endPTS:r,startDTS:i,endDTS:n,partial:a}},t.clearElementaryStreamInfo=function clearElementaryStreamInfo(){var e=this.elementaryStreams;e[i.AUDIO]=null,e[i.VIDEO]=null,e[i.AUDIOVIDEO]=null},_createClass(Fragment,[{key:"decryptdata",get:function get(){if(!this.levelkeys&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){var e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{var t=Object.keys(this.levelkeys);if(1===t.length)return this._decryptdata=this.levelkeys[t[0]].getDecryptData(this.sn)}}return this._decryptdata}},{key:"end",get:function get(){return this.start+this.duration}},{key:"endProgramDateTime",get:function get(){if(null===this.programDateTime)return null;if(!(0,n.isFiniteNumber)(this.programDateTime))return null;var e=(0,n.isFiniteNumber)(this.duration)?this.duration:0;return this.programDateTime+1e3*e}},{key:"encrypted",get:function get(){var e;if(null!==(e=this._decryptdata)&&void 0!==e&&e.encrypted)return!0;if(this.levelkeys){var t=Object.keys(this.levelkeys),r=t.length;if(r>1||1===r&&this.levelkeys[t[0]].encrypted)return!0}return!1}}]),Fragment}(o),u=function(e){function Part(t,r,i,n,a){var o;(o=e.call(this,i)||this).fragOffset=0,o.duration=0,o.gap=!1,o.independent=!1,o.relurl=void 0,o.fragment=void 0,o.index=void 0,o.stats=new s.LoadStats,o.duration=t.decimalFloatingPoint("DURATION"),o.gap=t.bool("GAP"),o.independent=t.bool("INDEPENDENT"),o.relurl=t.enumeratedString("URI"),o.fragment=r,o.index=n;var l=t.enumeratedString("BYTERANGE");return l&&o.setByteRange(l,a),a&&(o.fragOffset=a.fragOffset+a.duration),o}return _inheritsLoose(Part,e),_createClass(Part,[{key:"start",get:function get(){return this.fragment.start+this.fragOffset}},{key:"end",get:function get(){return this.start+this.duration}},{key:"loaded",get:function get(){var e=this.elementaryStreams;return!!(e.audio||e.video||e.audiovideo)}}]),Part}(o)},"./src/loader/key-loader.ts":
|
|
152
|
-
/*!**********************************!*\
|
|
153
|
-
!*** ./src/loader/key-loader.ts ***!
|
|
154
|
-
\**********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var i=r(/*! ../errors */"./src/errors.ts"),n=r(/*! ./fragment-loader */"./src/loader/fragment-loader.ts"),a=function(){function KeyLoader(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}var e=KeyLoader.prototype;return e.abort=function abort(){for(var e in this.keyUriToKeyInfo){var t=this.keyUriToKeyInfo[e].loader;t&&t.abort()}},e.detach=function detach(){for(var e in this.keyUriToKeyInfo){var t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}},e.destroy=function destroy(){for(var e in this.detach(),this.keyUriToKeyInfo){var t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}},e.createKeyLoadError=function createKeyLoadError(e,t,r,a){return void 0===t&&(t=i.ErrorDetails.KEY_LOAD_ERROR),new n.LoadError({type:i.ErrorTypes.NETWORK_ERROR,details:t,fatal:!1,frag:e,networkDetails:r})},e.loadClear=function loadClear(e,t){var r=this;if(this.emeController&&this.config.emeEnabled)for(var i=e.sn,n=e.cc,a=function _loop(e){var a=t[e];if(n<=a.cc&&("initSegment"===i||i<a.sn))return r.emeController.selectKeySystemFormat(a).then((function(e){a.setKeyFormat(e)})),"break"},s=0;s<t.length;s++){if("break"===a(s))break}},e.load=function load(e){var t=this;return!e.decryptdata&&e.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(e).then((function(r){return t.loadInternal(e,r)})):this.loadInternal(e)},e.loadInternal=function loadInternal(e,t){var r,n;t&&e.setKeyFormat(t);var a=e.decryptdata;if(!a){var s=t?"Expected frag.decryptdata to be defined after setting format "+t:"Missing decryption data on fragment in onKeyLoading";return Promise.reject(this.createKeyLoadError(e,i.ErrorDetails.KEY_LOAD_ERROR,null,s))}var o=a.uri;if(!o)return Promise.reject(this.createKeyLoadError(e,i.ErrorDetails.KEY_LOAD_ERROR,null,'Invalid key URI: "'+o+'"'));var l,u=this.keyUriToKeyInfo[o];if(null!==(r=u)&&void 0!==r&&r.decryptdata.key)return a.key=u.decryptdata.key,Promise.resolve({frag:e,keyInfo:u});if(null!==(n=u)&&void 0!==n&&n.keyLoadPromise)switch(null===(l=u.mediaKeySessionContext)||void 0===l?void 0:l.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return u.keyLoadPromise}switch(u=this.keyUriToKeyInfo[o]={decryptdata:a,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},a.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===a.keyFormat?this.loadKeyHTTP(u,e):this.loadKeyEME(u,e);case"AES-128":return this.loadKeyHTTP(u,e);default:return Promise.reject(this.createKeyLoadError(e,i.ErrorDetails.KEY_LOAD_ERROR,null,'Key supplied with unsupported METHOD: "'+a.method+'"'))}},e.loadKeyEME=function loadKeyEME(e,t){var r={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){var i=this.emeController.loadKey(r);if(i)return(e.keyLoadPromise=i.then((function(t){return e.mediaKeySessionContext=t,r}))).catch((function(t){throw e.keyLoadPromise=null,t}))}return Promise.resolve(r)},e.loadKeyHTTP=function loadKeyHTTP(e,t){var r=this,n=this.config,a=new(0,n.loader)(n);return t.keyLoader=e.loader=a,e.keyLoadPromise=new Promise((function(s,o){var l={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},u={timeout:n.fragLoadingTimeOut,maxRetry:0,retryDelay:n.fragLoadingRetryDelay,maxRetryDelay:n.fragLoadingMaxRetryTimeout,highWaterMark:0},d={onSuccess:function onSuccess(e,t,n,a){var l=n.frag,u=n.keyInfo,d=n.url;if(!l.decryptdata||u!==r.keyUriToKeyInfo[d])return o(r.createKeyLoadError(l,i.ErrorDetails.KEY_LOAD_ERROR,a,"after key load, decryptdata unset or changed"));u.decryptdata.key=l.decryptdata.key=new Uint8Array(e.data),l.keyLoader=null,u.loader=null,s({frag:l,keyInfo:u})},onError:function onError(e,n,a){r.resetLoader(n),o(r.createKeyLoadError(t,i.ErrorDetails.KEY_LOAD_ERROR,a))},onTimeout:function onTimeout(e,n,a){r.resetLoader(n),o(r.createKeyLoadError(t,i.ErrorDetails.KEY_LOAD_TIMEOUT,a))},onAbort:function onAbort(e,n,a){r.resetLoader(n),o(r.createKeyLoadError(t,i.ErrorDetails.INTERNAL_ABORTED,a))}};a.load(l,u,d)}))},e.resetLoader=function resetLoader(e){var t=e.frag,r=e.keyInfo,i=e.url,n=r.loader;t.keyLoader===n&&(t.keyLoader=null,r.loader=null),delete this.keyUriToKeyInfo[i],n&&n.destroy()},KeyLoader}()},"./src/loader/level-details.ts":
|
|
155
|
-
/*!*************************************!*\
|
|
156
|
-
!*** ./src/loader/level-details.ts ***!
|
|
157
|
-
\*************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{LevelDetails:()=>n});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts");function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}var n=function(){function LevelDetails(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=e}return LevelDetails.prototype.reloaded=function reloaded(e){if(!e)return this.advanced=!0,void(this.updated=!0);var t=this.lastPartSn-e.lastPartSn,r=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!r||!!t,this.advanced=this.endSN>e.endSN||t>0||0===t&&r>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay},function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(LevelDetails,[{key:"hasProgramDateTime",get:function get(){return!!this.fragments.length&&(0,i.isFiniteNumber)(this.fragments[this.fragments.length-1].programDateTime)}},{key:"levelTargetDuration",get:function get(){return this.averagetargetduration||this.targetduration||10}},{key:"drift",get:function get(){var e=this.driftEndTime-this.driftStartTime;return e>0?1e3*(this.driftEnd-this.driftStart)/e:1}},{key:"edge",get:function get(){return this.partEnd||this.fragmentEnd}},{key:"partEnd",get:function get(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}},{key:"fragmentEnd",get:function get(){var e;return null!==(e=this.fragments)&&void 0!==e&&e.length?this.fragments[this.fragments.length-1].end:0}},{key:"age",get:function get(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}},{key:"lastPartIndex",get:function get(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].index:-1}},{key:"lastPartSn",get:function get(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}]),LevelDetails}()},"./src/loader/level-key.ts":
|
|
158
|
-
/*!*********************************!*\
|
|
159
|
-
!*** ./src/loader/level-key.ts ***!
|
|
160
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{LevelKey:()=>u});var i=r(/*! ../utils/keysystem-util */"./src/utils/keysystem-util.ts"),n=r(/*! ../utils/mediakeys-helper */"./src/utils/mediakeys-helper.ts"),a=r(/*! ../utils/mp4-tools */"./src/utils/mp4-tools.ts"),s=r(/*! ../utils/logger */"./src/utils/logger.ts"),o=r(/*! ../utils/numeric-encoding-utils */"./src/utils/numeric-encoding-utils.ts"),l={},u=function(){function LevelKey(e,t,r,i,n){void 0===i&&(i=[1]),void 0===n&&(n=null),this.uri=void 0,this.method=void 0,this.keyFormat=void 0,this.keyFormatVersions=void 0,this.encrypted=void 0,this.isCommonEncryption=void 0,this.iv=null,this.key=null,this.keyId=null,this.pssh=null,this.method=e,this.uri=t,this.keyFormat=r,this.keyFormatVersions=i,this.iv=n,this.encrypted=!!e&&"NONE"!==e,this.isCommonEncryption=this.encrypted&&"AES-128"!==e}LevelKey.clearKeyUriToKeyIdMap=function clearKeyUriToKeyIdMap(){l={}};var e=LevelKey.prototype;return e.isSupported=function isSupported(){if(this.method){if("AES-128"===this.method||"NONE"===this.method)return!0;switch(this.keyFormat){case"identity":return"SAMPLE-AES"===this.method;case n.KeySystemFormats.FAIRPLAY:case n.KeySystemFormats.WIDEVINE:case n.KeySystemFormats.PLAYREADY:case n.KeySystemFormats.CLEARKEY:return-1!==["ISO-23001-7","SAMPLE-AES","SAMPLE-AES-CENC","SAMPLE-AES-CTR"].indexOf(this.method)}}return!1},e.getDecryptData=function getDecryptData(e){if(!this.encrypted||!this.uri)return null;if("AES-128"===this.method&&this.uri&&!this.iv){"number"!=typeof e&&("AES-128"!==this.method||this.iv||s.logger.warn('missing IV for initialization segment with method="'+this.method+'" - compliance issue'),e=0);var t=function createInitializationVector(e){for(var t=new Uint8Array(16),r=12;r<16;r++)t[r]=e>>8*(15-r)&255;return t}(e);return new LevelKey(this.method,this.uri,"identity",this.keyFormatVersions,t)}var r=(0,i.convertDataUriToArrayBytes)(this.uri);if(r)switch(this.keyFormat){case n.KeySystemFormats.WIDEVINE:this.pssh=r,r.length>=22&&(this.keyId=r.subarray(r.length-22,r.length-6));break;case n.KeySystemFormats.PLAYREADY:var u=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=(0,a.mp4pssh)(u,null,r);var d=new Uint16Array(r.buffer,r.byteOffset,r.byteLength/2),c=String.fromCharCode.apply(null,Array.from(d)),h=c.substring(c.indexOf("<"),c.length),f=(new DOMParser).parseFromString(h,"text/xml").getElementsByTagName("KID")[0];if(f){var g=f.childNodes[0]?f.childNodes[0].nodeValue:f.getAttribute("VALUE");if(g){var p=(0,o.base64Decode)(g).subarray(0,16);(0,i.changeEndianness)(p),this.keyId=p}}break;default:var v=r.subarray(0,16);if(16!==v.length){var m=new Uint8Array(16);m.set(v,16-v.length),v=m}this.keyId=v}if(!this.keyId||16!==this.keyId.byteLength){var y=l[this.uri];if(!y){var E=Object.keys(l).length%Number.MAX_SAFE_INTEGER;y=new Uint8Array(16),new DataView(y.buffer,12,4).setUint32(0,E),l[this.uri]=y}this.keyId=y}return this},LevelKey}()},"./src/loader/load-stats.ts":
|
|
161
|
-
/*!**********************************!*\
|
|
162
|
-
!*** ./src/loader/load-stats.ts ***!
|
|
163
|
-
\**********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{LoadStats:()=>i});var i=function LoadStats(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}},"./src/loader/m3u8-parser.ts":
|
|
164
|
-
/*!***********************************!*\
|
|
165
|
-
!*** ./src/loader/m3u8-parser.ts ***!
|
|
166
|
-
\***********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>v});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! url-toolkit */"./node_modules/url-toolkit/src/url-toolkit.js"),a=r(/*! ./date-range */"./src/loader/date-range.ts"),s=r(/*! ./fragment */"./src/loader/fragment.ts"),o=r(/*! ./level-details */"./src/loader/level-details.ts"),l=r(/*! ./level-key */"./src/loader/level-key.ts"),u=r(/*! ../utils/attr-list */"./src/utils/attr-list.ts"),d=r(/*! ../utils/logger */"./src/utils/logger.ts"),c=r(/*! ../utils/codecs */"./src/utils/codecs.ts");function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}var h=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-SESSION-DATA:([^\r\n]*)[\r\n]+|#EXT-X-SESSION-KEY:([^\n\r]*)[\r\n]+/g,f=/#EXT-X-MEDIA:(.*)/g,g=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[\S ]*)/.source,/#EXT-X-BYTERANGE:*(.+)/.source,/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/#.*/.source].join("|"),"g"),p=new RegExp([/#(EXTM3U)/.source,/#EXT-X-(DATERANGE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source,/#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source,/#EXT-X-(DISCONTINUITY|ENDLIST|GAP)/.source,/(#)([^:]*):(.*)/.source,/(#)(.*)(?:.*)\r?\n?/.source].join("|")),v=function(){function M3U8Parser(){}return M3U8Parser.findGroup=function findGroup(e,t){for(var r=0;r<e.length;r++){var i=e[r];if(i.id===t)return i}},M3U8Parser.convertAVC1ToAVCOTI=function convertAVC1ToAVCOTI(e){var t=e.split(".");if(t.length>2){var r=t.shift()+".";return r+=parseInt(t.shift()).toString(16),r+=("000"+parseInt(t.shift()).toString(16)).slice(-4)}return e},M3U8Parser.resolve=function resolve(e,t){return(0,n.buildAbsoluteURL)(t,e,{alwaysNormalize:!0})},M3U8Parser.parseMasterPlaylist=function parseMasterPlaylist(e,t){var r,i=[],n=[],a={},s=[],o=!1;for(h.lastIndex=0;null!=(r=h.exec(e));)if(r[1]){var l,c=new u.AttrList(r[1]),f={attrs:c,bitrate:c.decimalInteger("AVERAGE-BANDWIDTH")||c.decimalInteger("BANDWIDTH"),name:c.NAME,url:M3U8Parser.resolve(r[2],t)},g=c.decimalResolution("RESOLUTION");g&&(f.width=g.width,f.height=g.height),setCodecs((c.CODECS||"").split(/[ ,]+/).filter((function(e){return e})),f),f.videoCodec&&-1!==f.videoCodec.indexOf("avc1")&&(f.videoCodec=M3U8Parser.convertAVC1ToAVCOTI(f.videoCodec)),null!==(l=f.unknownCodecs)&&void 0!==l&&l.length||n.push(f),i.push(f)}else if(r[3]){var p=new u.AttrList(r[3]);p["DATA-ID"]&&(o=!0,a[p["DATA-ID"]]=p)}else if(r[4]){var v=r[4],m=parseKey(v,t);m.encrypted&&m.isSupported()?s.push(m):d.logger.warn('[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: "'+v+'"')}return{levels:n.length>0&&n.length<i.length?n:i,sessionData:o?a:null,sessionKeys:s.length?s:null}},M3U8Parser.parseMasterPlaylistMedia=function parseMasterPlaylistMedia(e,t,r,i){var n;void 0===i&&(i=[]);var a=[],s=0;for(f.lastIndex=0;null!==(n=f.exec(e));){var o=new u.AttrList(n[1]);if(o.TYPE===r){var l={attrs:o,bitrate:0,id:s++,groupId:o["GROUP-ID"],instreamId:o["INSTREAM-ID"],name:o.NAME||o.LANGUAGE||"",type:r,default:o.bool("DEFAULT"),autoselect:o.bool("AUTOSELECT"),forced:o.bool("FORCED"),lang:o.LANGUAGE,url:o.URI?M3U8Parser.resolve(o.URI,t):""};if(i.length){var d=M3U8Parser.findGroup(i,l.groupId)||i[0];assignCodec(l,d,"audioCodec"),assignCodec(l,d,"textCodec")}a.push(l)}}return a},M3U8Parser.parseLevelPlaylist=function parseLevelPlaylist(e,t,r,n,l){var c,h,f,v=new o.LevelDetails(t),m=v.fragments,y=null,E=0,T=0,S=0,b=0,L=null,D=new s.Fragment(n,t),A=-1,k=!1;for(g.lastIndex=0,v.m3u8=e;null!==(c=g.exec(e));){k&&(k=!1,(D=new s.Fragment(n,t)).start=S,D.sn=E,D.cc=b,D.level=r,y&&(D.initSegment=y,D.rawProgramDateTime=y.rawProgramDateTime,y.rawProgramDateTime=null));var C=c[1];if(C){D.duration=parseFloat(C);var P=(" "+c[2]).slice(1);D.title=P||null,D.tagList.push(P?["INF",C,P]:["INF",C])}else if(c[3]){if((0,i.isFiniteNumber)(D.duration)){if(D.start=S,f){D.levelkeys=f;var I=v.encryptedFragments;!D.levelkeys||!Object.keys(D.levelkeys).some((function(e){return D.levelkeys[e].isCommonEncryption}))||I.length&&I[I.length-1].levelkeys===f||I.push(D)}D.sn=E,D.level=r,D.cc=b,D.urlId=l,m.push(D),D.relurl=(" "+c[3]).slice(1),assignProgramDateTime(D,L),L=D,S+=D.duration,E++,T=0,k=!0}}else if(c[4]){var _=(" "+c[4]).slice(1);L?D.setByteRange(_,L):D.setByteRange(_)}else if(c[5])D.rawProgramDateTime=(" "+c[5]).slice(1),D.tagList.push(["PROGRAM-DATE-TIME",D.rawProgramDateTime]),-1===A&&(A=m.length);else{if(!(c=c[0].match(p))){d.logger.warn("No matches on slow regex match for level playlist!");continue}for(h=1;h<c.length&&void 0===c[h];h++);var R=(" "+c[h]).slice(1),w=(" "+c[h+1]).slice(1),x=c[h+2]?(" "+c[h+2]).slice(1):"";switch(R){case"PLAYLIST-TYPE":v.type=w.toUpperCase();break;case"MEDIA-SEQUENCE":E=v.startSN=parseInt(w);break;case"SKIP":var F=new u.AttrList(w),O=F.decimalInteger("SKIPPED-SEGMENTS");if((0,i.isFiniteNumber)(O)){v.skippedSegments=O;for(var M=O;M--;)m.unshift(null);E+=O}var N=F.enumeratedString("RECENTLY-REMOVED-DATERANGES");N&&(v.recentlyRemovedDateranges=N.split("\t"));break;case"TARGETDURATION":v.targetduration=parseFloat(w);break;case"VERSION":v.version=parseInt(w);break;case"EXTM3U":break;case"ENDLIST":v.live=!1;break;case"#":(w||x)&&D.tagList.push(x?[w,x]:[w]);break;case"DISCONTINUITY":b++,D.tagList.push(["DIS"]);break;case"GAP":D.tagList.push([R]);break;case"BITRATE":D.tagList.push([R,w]);break;case"DATERANGE":var U=new u.AttrList(w),B=new a.DateRange(U,v.dateRanges[U.ID]);B.isValid||v.skippedSegments?v.dateRanges[B.id]=B:d.logger.warn('Ignoring invalid DATERANGE tag: "'+w+'"'),D.tagList.push(["EXT-X-DATERANGE",w]);break;case"DISCONTINUITY-SEQUENCE":b=parseInt(w);break;case"KEY":var K=parseKey(w,t);if(K.isSupported()){if("NONE"===K.method){f=void 0;break}f||(f={}),f[K.keyFormat]&&(f=_extends({},f)),f[K.keyFormat]=K}else d.logger.warn('[Keys] Ignoring invalid EXT-X-KEY tag: "'+w+'"');break;case"START":var G=new u.AttrList(w).decimalFloatingPoint("TIME-OFFSET");(0,i.isFiniteNumber)(G)&&(v.startTimeOffset=G);break;case"MAP":var H=new u.AttrList(w);if(D.duration){var j=new s.Fragment(n,t);setInitSegment(j,H,r,f),y=j,D.initSegment=y,y.rawProgramDateTime&&!D.rawProgramDateTime&&(D.rawProgramDateTime=y.rawProgramDateTime)}else setInitSegment(D,H,r,f),y=D,k=!0;break;case"SERVER-CONTROL":var V=new u.AttrList(w);v.canBlockReload=V.bool("CAN-BLOCK-RELOAD"),v.canSkipUntil=V.optionalFloat("CAN-SKIP-UNTIL",0),v.canSkipDateRanges=v.canSkipUntil>0&&V.bool("CAN-SKIP-DATERANGES"),v.partHoldBack=V.optionalFloat("PART-HOLD-BACK",0),v.holdBack=V.optionalFloat("HOLD-BACK",0);break;case"PART-INF":var W=new u.AttrList(w);v.partTarget=W.decimalFloatingPoint("PART-TARGET");break;case"PART":var Y=v.partList;Y||(Y=v.partList=[]);var q=T>0?Y[Y.length-1]:void 0,X=T++,z=new s.Part(new u.AttrList(w),D,t,X,q);Y.push(z),D.duration+=z.duration;break;case"PRELOAD-HINT":var Q=new u.AttrList(w);v.preloadHint=Q;break;case"RENDITION-REPORT":var $=new u.AttrList(w);v.renditionReports=v.renditionReports||[],v.renditionReports.push($);break;default:d.logger.warn("line parsed but not handled: "+c)}}}L&&!L.relurl?(m.pop(),S-=L.duration,v.partList&&(v.fragmentHint=L)):v.partList&&(assignProgramDateTime(D,L),D.cc=b,v.fragmentHint=D);var J=m.length,Z=m[0],ee=m[J-1];if((S+=v.skippedSegments*v.targetduration)>0&&J&&ee){v.averagetargetduration=S/J;var te=ee.sn;v.endSN="initSegment"!==te?te:0,v.live||(ee.endList=!0),Z&&(v.startCC=Z.cc)}else v.endSN=0,v.startCC=0;return v.fragmentHint&&(S+=v.fragmentHint.duration),v.totalduration=S,v.endCC=b,A>0&&function backfillProgramDateTimes(e,t){for(var r=e[t],i=t;i--;){var n=e[i];if(!n)return;n.programDateTime=r.programDateTime-1e3*n.duration,r=n}}(m,A),v},M3U8Parser}();function parseKey(e,t){var r,i,n=new u.AttrList(e),a=null!=(r=n.enumeratedString("METHOD"))?r:"",s=n.URI,o=n.hexadecimalInteger("IV"),c=n.enumeratedString("KEYFORMATVERSIONS"),h=null!=(i=n.enumeratedString("KEYFORMAT"))?i:"identity";s&&n.IV&&!o&&d.logger.error("Invalid IV: "+n.IV);var f=s?v.resolve(s,t):"",g=(c||"1").split("/").map(Number).filter(Number.isFinite);return new l.LevelKey(a,f,h,g,o)}function setCodecs(e,t){["video","audio","text"].forEach((function(r){var i=e.filter((function(e){return(0,c.isCodecType)(e,r)}));if(i.length){var n=i.filter((function(e){return 0===e.lastIndexOf("avc1",0)||0===e.lastIndexOf("mp4a",0)}));t[r+"Codec"]=n.length>0?n[0]:i[0],e=e.filter((function(e){return-1===i.indexOf(e)}))}})),t.unknownCodecs=e}function assignCodec(e,t,r){var i=t[r];i&&(e[r]=i)}function assignProgramDateTime(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),(0,i.isFiniteNumber)(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function setInitSegment(e,t,r,i){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=r,e.sn="initSegment",i&&(e.levelkeys=i),e.initSegment=null}},"./src/loader/playlist-loader.ts":
|
|
167
|
-
/*!***************************************!*\
|
|
168
|
-
!*** ./src/loader/playlist-loader.ts ***!
|
|
169
|
-
\***************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../events */"./src/events.ts"),a=r(/*! ../errors */"./src/errors.ts"),s=r(/*! ../utils/logger */"./src/utils/logger.ts"),o=r(/*! ./m3u8-parser */"./src/loader/m3u8-parser.ts"),l=r(/*! ../types/loader */"./src/types/loader.ts"),u=r(/*! ../utils/attr-list */"./src/utils/attr-list.ts");function getResponseUrl(e,t){var r=e.url;return void 0!==r&&0!==r.indexOf("data:")||(r=t.url),r}const d=function(){function PlaylistLoader(e){this.hls=void 0,this.loaders=Object.create(null),this.hls=e,this.registerListeners()}var e=PlaylistLoader.prototype;return e.startLoad=function startLoad(e){},e.stopLoad=function stopLoad(){this.destroyInternalLoaders()},e.registerListeners=function registerListeners(){var e=this.hls;e.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(n.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(n.Events.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(n.Events.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},e.unregisterListeners=function unregisterListeners(){var e=this.hls;e.off(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(n.Events.LEVEL_LOADING,this.onLevelLoading,this),e.off(n.Events.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(n.Events.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},e.createInternalLoader=function createInternalLoader(e){var t=this.hls.config,r=t.pLoader,i=t.loader,n=new(r||i)(t);return e.loader=n,this.loaders[e.type]=n,n},e.getInternalLoader=function getInternalLoader(e){return this.loaders[e.type]},e.resetInternalLoader=function resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]},e.destroyInternalLoaders=function destroyInternalLoaders(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}},e.destroy=function destroy(){this.unregisterListeners(),this.destroyInternalLoaders()},e.onManifestLoading=function onManifestLoading(e,t){var r=t.url;this.load({id:null,groupId:null,level:0,responseType:"text",type:l.PlaylistContextType.MANIFEST,url:r,deliveryDirectives:null})},e.onLevelLoading=function onLevelLoading(e,t){var r=t.id,i=t.level,n=t.url,a=t.deliveryDirectives;this.load({id:r,groupId:null,level:i,responseType:"text",type:l.PlaylistContextType.LEVEL,url:n,deliveryDirectives:a})},e.onAudioTrackLoading=function onAudioTrackLoading(e,t){var r=t.id,i=t.groupId,n=t.url,a=t.deliveryDirectives;this.load({id:r,groupId:i,level:null,responseType:"text",type:l.PlaylistContextType.AUDIO_TRACK,url:n,deliveryDirectives:a})},e.onSubtitleTrackLoading=function onSubtitleTrackLoading(e,t){var r=t.id,i=t.groupId,n=t.url,a=t.deliveryDirectives;this.load({id:r,groupId:i,level:null,responseType:"text",type:l.PlaylistContextType.SUBTITLE_TRACK,url:n,deliveryDirectives:a})},e.load=function load(e){var t,r,i,n,a,o,u=this.hls.config,d=this.getInternalLoader(e);if(d){var c=d.context;if(c&&c.url===e.url)return void s.logger.trace("[playlist-loader]: playlist request ongoing");s.logger.log("[playlist-loader]: aborting previous loader for type: "+e.type),d.abort()}switch(e.type){case l.PlaylistContextType.MANIFEST:r=u.manifestLoadingMaxRetry,i=u.manifestLoadingTimeOut,n=u.manifestLoadingRetryDelay,a=u.manifestLoadingMaxRetryTimeout;break;case l.PlaylistContextType.LEVEL:case l.PlaylistContextType.AUDIO_TRACK:case l.PlaylistContextType.SUBTITLE_TRACK:r=0,i=u.levelLoadingTimeOut;break;default:r=u.levelLoadingMaxRetry,i=u.levelLoadingTimeOut,n=u.levelLoadingRetryDelay,a=u.levelLoadingMaxRetryTimeout}if((d=this.createInternalLoader(e),null!==(t=e.deliveryDirectives)&&void 0!==t&&t.part)&&(e.type===l.PlaylistContextType.LEVEL&&null!==e.level?o=this.hls.levels[e.level].details:e.type===l.PlaylistContextType.AUDIO_TRACK&&null!==e.id?o=this.hls.audioTracks[e.id].details:e.type===l.PlaylistContextType.SUBTITLE_TRACK&&null!==e.id&&(o=this.hls.subtitleTracks[e.id].details),o)){var h=o.partTarget,f=o.targetduration;h&&f&&(i=Math.min(1e3*Math.max(3*h,.8*f),i))}var g={timeout:i,maxRetry:r,retryDelay:n,maxRetryDelay:a,highWaterMark:0},p={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)};d.load(e,g,p)},e.loadsuccess=function loadsuccess(e,t,r,i){void 0===i&&(i=null),this.resetInternalLoader(r.type);var n=e.data;0===n.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),n.indexOf("#EXTINF:")>0||n.indexOf("#EXT-X-TARGETDURATION:")>0?this.handleTrackOrLevelPlaylist(e,t,r,i):this.handleMasterPlaylist(e,t,r,i)):this.handleManifestParsingError(e,r,"no EXTM3U delimiter",i)},e.loaderror=function loaderror(e,t,r){void 0===r&&(r=null),this.handleNetworkError(t,r,!1,e)},e.loadtimeout=function loadtimeout(e,t,r){void 0===r&&(r=null),this.handleNetworkError(t,r,!0)},e.handleMasterPlaylist=function handleMasterPlaylist(e,t,r,i){var a=this.hls,l=e.data,d=getResponseUrl(e,r),c=o.default.parseMasterPlaylist(l,d),h=c.levels,f=c.sessionData,g=c.sessionKeys;if(h.length){var p=h.map((function(e){return{id:e.attrs.AUDIO,audioCodec:e.audioCodec}})),v=h.map((function(e){return{id:e.attrs.SUBTITLES,textCodec:e.textCodec}})),m=o.default.parseMasterPlaylistMedia(l,d,"AUDIO",p),y=o.default.parseMasterPlaylistMedia(l,d,"SUBTITLES",v),E=o.default.parseMasterPlaylistMedia(l,d,"CLOSED-CAPTIONS");if(m.length)m.some((function(e){return!e.url}))||!h[0].audioCodec||h[0].attrs.AUDIO||(s.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),m.unshift({type:"main",name:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new u.AttrList({}),bitrate:0,url:""}));a.trigger(n.Events.MANIFEST_LOADED,{levels:h,audioTracks:m,subtitles:y,captions:E,url:d,stats:t,networkDetails:i,sessionData:f,sessionKeys:g})}else this.handleManifestParsingError(e,r,"no level found in manifest",i)},e.handleTrackOrLevelPlaylist=function handleTrackOrLevelPlaylist(e,t,r,s){var d=this.hls,c=r.id,h=r.level,f=r.type,g=getResponseUrl(e,r),p=(0,i.isFiniteNumber)(c)?c:0,v=(0,i.isFiniteNumber)(h)?h:p,m=function mapContextToLevelType(e){switch(e.type){case l.PlaylistContextType.AUDIO_TRACK:return l.PlaylistLevelType.AUDIO;case l.PlaylistContextType.SUBTITLE_TRACK:return l.PlaylistLevelType.SUBTITLE;default:return l.PlaylistLevelType.MAIN}}(r),y=o.default.parseLevelPlaylist(e.data,g,v,m,p);if(y.fragments.length){if(f===l.PlaylistContextType.MANIFEST){var E={attrs:new u.AttrList({}),bitrate:0,details:y,name:"",url:g};d.trigger(n.Events.MANIFEST_LOADED,{levels:[E],audioTracks:[],url:g,stats:t,networkDetails:s,sessionData:null,sessionKeys:null})}t.parsing.end=performance.now(),r.levelDetails=y,this.handlePlaylistLoaded(e,t,r,s)}else d.trigger(n.Events.ERROR,{type:a.ErrorTypes.NETWORK_ERROR,details:a.ErrorDetails.LEVEL_EMPTY_ERROR,fatal:!1,url:g,reason:"no fragments found in level",level:"number"==typeof r.level?r.level:void 0})},e.handleManifestParsingError=function handleManifestParsingError(e,t,r,i){this.hls.trigger(n.Events.ERROR,{type:a.ErrorTypes.NETWORK_ERROR,details:a.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:t.type===l.PlaylistContextType.MANIFEST,url:e.url,reason:r,response:e,context:t,networkDetails:i})},e.handleNetworkError=function handleNetworkError(e,t,r,i){void 0===r&&(r=!1),s.logger.warn("[playlist-loader]: A network "+(r?"timeout":"error")+" occurred while loading "+e.type+" level: "+e.level+" id: "+e.id+' group-id: "'+e.groupId+'"');var o=a.ErrorDetails.UNKNOWN,u=!1,d=this.getInternalLoader(e);switch(e.type){case l.PlaylistContextType.MANIFEST:o=r?a.ErrorDetails.MANIFEST_LOAD_TIMEOUT:a.ErrorDetails.MANIFEST_LOAD_ERROR,u=!0;break;case l.PlaylistContextType.LEVEL:o=r?a.ErrorDetails.LEVEL_LOAD_TIMEOUT:a.ErrorDetails.LEVEL_LOAD_ERROR,u=!1;break;case l.PlaylistContextType.AUDIO_TRACK:o=r?a.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:a.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,u=!1;break;case l.PlaylistContextType.SUBTITLE_TRACK:o=r?a.ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:a.ErrorDetails.SUBTITLE_LOAD_ERROR,u=!1}d&&this.resetInternalLoader(e.type);var c={type:a.ErrorTypes.NETWORK_ERROR,details:o,fatal:u,url:e.url,loader:d,context:e,networkDetails:t};i&&(c.response=i),this.hls.trigger(n.Events.ERROR,c)},e.handlePlaylistLoaded=function handlePlaylistLoaded(e,t,r,i){var a=r.type,s=r.level,o=r.id,u=r.groupId,d=r.loader,c=r.levelDetails,h=r.deliveryDirectives;if(null!=c&&c.targetduration){if(d)switch(c.live&&(d.getCacheAge&&(c.ageHeader=d.getCacheAge()||0),d.getCacheAge&&!isNaN(c.ageHeader)||(c.ageHeader=0)),a){case l.PlaylistContextType.MANIFEST:case l.PlaylistContextType.LEVEL:this.hls.trigger(n.Events.LEVEL_LOADED,{details:c,level:s||0,id:o||0,stats:t,networkDetails:i,deliveryDirectives:h});break;case l.PlaylistContextType.AUDIO_TRACK:this.hls.trigger(n.Events.AUDIO_TRACK_LOADED,{details:c,id:o||0,groupId:u||"",stats:t,networkDetails:i,deliveryDirectives:h});break;case l.PlaylistContextType.SUBTITLE_TRACK:this.hls.trigger(n.Events.SUBTITLE_TRACK_LOADED,{details:c,id:o||0,groupId:u||"",stats:t,networkDetails:i,deliveryDirectives:h})}}else this.handleManifestParsingError(e,r,"invalid target duration",i)},PlaylistLoader}()},"./src/polyfills/number.ts":
|
|
170
|
-
/*!*********************************!*\
|
|
171
|
-
!*** ./src/polyfills/number.ts ***!
|
|
172
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{MAX_SAFE_INTEGER:()=>n,isFiniteNumber:()=>i});var i=Number.isFinite||function(e){return"number"==typeof e&&isFinite(e)},n=Number.MAX_SAFE_INTEGER||9007199254740991},"./src/remux/aac-helper.ts":
|
|
173
|
-
/*!*********************************!*\
|
|
174
|
-
!*** ./src/remux/aac-helper.ts ***!
|
|
175
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});const i=function(){function AAC(){}return AAC.getSilentFrame=function getSilentFrame(e,t){switch(e){case"mp4a.40.2":if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]);break;default:if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}},AAC}()},"./src/remux/mp4-generator.ts":
|
|
176
|
-
/*!************************************!*\
|
|
177
|
-
!*** ./src/remux/mp4-generator.ts ***!
|
|
178
|
-
\************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var i=Math.pow(2,32)-1,n=function(){function MP4(){}return MP4.init=function init(){var e;for(e in MP4.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},MP4.types)MP4.types.hasOwnProperty(e)&&(MP4.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);var t=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),r=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);MP4.HDLR_TYPES={video:t,audio:r};var i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),n=new Uint8Array([0,0,0,0,0,0,0,0]);MP4.STTS=MP4.STSC=MP4.STCO=n,MP4.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),MP4.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),MP4.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),MP4.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);var a=new Uint8Array([105,115,111,109]),s=new Uint8Array([97,118,99,49]),o=new Uint8Array([0,0,0,1]);MP4.FTYP=MP4.box(MP4.types.ftyp,a,o,a,s),MP4.DINF=MP4.box(MP4.types.dinf,MP4.box(MP4.types.dref,i))},MP4.box=function box(e){for(var t=8,r=arguments.length,i=new Array(r>1?r-1:0),n=1;n<r;n++)i[n-1]=arguments[n];for(var a=i.length,s=a;a--;)t+=i[a].byteLength;var o=new Uint8Array(t);for(o[0]=t>>24&255,o[1]=t>>16&255,o[2]=t>>8&255,o[3]=255&t,o.set(e,4),a=0,t=8;a<s;a++)o.set(i[a],t),t+=i[a].byteLength;return o},MP4.hdlr=function hdlr(e){return MP4.box(MP4.types.hdlr,MP4.HDLR_TYPES[e])},MP4.mdat=function mdat(e){return MP4.box(MP4.types.mdat,e)},MP4.mdhd=function mdhd(e,t){t*=e;var r=Math.floor(t/(i+1)),n=Math.floor(t%(i+1));return MP4.box(MP4.types.mdhd,new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,r>>24,r>>16&255,r>>8&255,255&r,n>>24,n>>16&255,n>>8&255,255&n,85,196,0,0]))},MP4.mdia=function mdia(e){return MP4.box(MP4.types.mdia,MP4.mdhd(e.timescale,e.duration),MP4.hdlr(e.type),MP4.minf(e))},MP4.mfhd=function mfhd(e){return MP4.box(MP4.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))},MP4.minf=function minf(e){return"audio"===e.type?MP4.box(MP4.types.minf,MP4.box(MP4.types.smhd,MP4.SMHD),MP4.DINF,MP4.stbl(e)):MP4.box(MP4.types.minf,MP4.box(MP4.types.vmhd,MP4.VMHD),MP4.DINF,MP4.stbl(e))},MP4.moof=function moof(e,t,r){return MP4.box(MP4.types.moof,MP4.mfhd(e),MP4.traf(r,t))},MP4.moov=function moov(e){for(var t=e.length,r=[];t--;)r[t]=MP4.trak(e[t]);return MP4.box.apply(null,[MP4.types.moov,MP4.mvhd(e[0].timescale,e[0].duration)].concat(r).concat(MP4.mvex(e)))},MP4.mvex=function mvex(e){for(var t=e.length,r=[];t--;)r[t]=MP4.trex(e[t]);return MP4.box.apply(null,[MP4.types.mvex].concat(r))},MP4.mvhd=function mvhd(e,t){t*=e;var r=Math.floor(t/(i+1)),n=Math.floor(t%(i+1)),a=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,r>>24,r>>16&255,r>>8&255,255&r,n>>24,n>>16&255,n>>8&255,255&n,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return MP4.box(MP4.types.mvhd,a)},MP4.sdtp=function sdtp(e){var t,r,i=e.samples||[],n=new Uint8Array(4+i.length);for(t=0;t<i.length;t++)r=i[t].flags,n[t+4]=r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy;return MP4.box(MP4.types.sdtp,n)},MP4.stbl=function stbl(e){return MP4.box(MP4.types.stbl,MP4.stsd(e),MP4.box(MP4.types.stts,MP4.STTS),MP4.box(MP4.types.stsc,MP4.STSC),MP4.box(MP4.types.stsz,MP4.STSZ),MP4.box(MP4.types.stco,MP4.STCO))},MP4.avc1=function avc1(e){var t,r,i,n=[],a=[];for(t=0;t<e.sps.length;t++)i=(r=e.sps[t]).byteLength,n.push(i>>>8&255),n.push(255&i),n=n.concat(Array.prototype.slice.call(r));for(t=0;t<e.pps.length;t++)i=(r=e.pps[t]).byteLength,a.push(i>>>8&255),a.push(255&i),a=a.concat(Array.prototype.slice.call(r));var s=MP4.box(MP4.types.avcC,new Uint8Array([1,n[3],n[4],n[5],255,224|e.sps.length].concat(n).concat([e.pps.length]).concat(a))),o=e.width,l=e.height,u=e.pixelRatio[0],d=e.pixelRatio[1];return MP4.box(MP4.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,o>>8&255,255&o,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),s,MP4.box(MP4.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),MP4.box(MP4.types.pasp,new Uint8Array([u>>24,u>>16&255,u>>8&255,255&u,d>>24,d>>16&255,d>>8&255,255&d])))},MP4.esds=function esds(e){var t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))},MP4.mp4a=function mp4a(e){var t=e.samplerate;return MP4.box(MP4.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,t>>8&255,255&t,0,0]),MP4.box(MP4.types.esds,MP4.esds(e)))},MP4.mp3=function mp3(e){var t=e.samplerate;return MP4.box(MP4.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,t>>8&255,255&t,0,0]))},MP4.stsd=function stsd(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?MP4.box(MP4.types.stsd,MP4.STSD,MP4.mp3(e)):MP4.box(MP4.types.stsd,MP4.STSD,MP4.mp4a(e)):MP4.box(MP4.types.stsd,MP4.STSD,MP4.avc1(e))},MP4.tkhd=function tkhd(e){var t=e.id,r=e.duration*e.timescale,n=e.width,a=e.height,s=Math.floor(r/(i+1)),o=Math.floor(r%(i+1));return MP4.box(MP4.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s,o>>24,o>>16&255,o>>8&255,255&o,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>8&255,255&n,0,0,a>>8&255,255&a,0,0]))},MP4.traf=function traf(e,t){var r=MP4.sdtp(e),n=e.id,a=Math.floor(t/(i+1)),s=Math.floor(t%(i+1));return MP4.box(MP4.types.traf,MP4.box(MP4.types.tfhd,new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n])),MP4.box(MP4.types.tfdt,new Uint8Array([1,0,0,0,a>>24,a>>16&255,a>>8&255,255&a,s>>24,s>>16&255,s>>8&255,255&s])),MP4.trun(e,r.length+16+20+8+16+8+8),r)},MP4.trak=function trak(e){return e.duration=e.duration||4294967295,MP4.box(MP4.types.trak,MP4.tkhd(e),MP4.mdia(e))},MP4.trex=function trex(e){var t=e.id;return MP4.box(MP4.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},MP4.trun=function trun(e,t){var r,i,n,a,s,o,l=e.samples||[],u=l.length,d=12+16*u,c=new Uint8Array(d);for(t+=8+d,c.set(["video"===e.type?1:0,0,15,1,u>>>24&255,u>>>16&255,u>>>8&255,255&u,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0),r=0;r<u;r++)n=(i=l[r]).duration,a=i.size,s=i.flags,o=i.cts,c.set([n>>>24&255,n>>>16&255,n>>>8&255,255&n,a>>>24&255,a>>>16&255,a>>>8&255,255&a,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.paddingValue<<1|s.isNonSync,61440&s.degradPrio,15&s.degradPrio,o>>>24&255,o>>>16&255,o>>>8&255,255&o],12+16*r);return MP4.box(MP4.types.trun,c)},MP4.initSegment=function initSegment(e){MP4.types||MP4.init();var t=MP4.moov(e),r=new Uint8Array(MP4.FTYP.byteLength+t.byteLength);return r.set(MP4.FTYP),r.set(t,MP4.FTYP.byteLength),r},MP4}();n.types=void 0,n.HDLR_TYPES=void 0,n.STTS=void 0,n.STSC=void 0,n.STCO=void 0,n.STSZ=void 0,n.VMHD=void 0,n.SMHD=void 0,n.STSD=void 0,n.FTYP=void 0,n.DINF=void 0;const a=n},"./src/remux/mp4-remuxer.ts":
|
|
179
|
-
/*!**********************************!*\
|
|
180
|
-
!*** ./src/remux/mp4-remuxer.ts ***!
|
|
181
|
-
\**********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f,flushTextTrackMetadataCueSamples:()=>flushTextTrackMetadataCueSamples,flushTextTrackUserdataCueSamples:()=>flushTextTrackUserdataCueSamples,normalizePts:()=>normalizePts});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ./aac-helper */"./src/remux/aac-helper.ts"),a=r(/*! ./mp4-generator */"./src/remux/mp4-generator.ts"),s=r(/*! ../events */"./src/events.ts"),o=r(/*! ../errors */"./src/errors.ts"),l=r(/*! ../utils/logger */"./src/utils/logger.ts"),u=r(/*! ../types/loader */"./src/types/loader.ts"),d=r(/*! ../utils/timescale-conversion */"./src/utils/timescale-conversion.ts");function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}var c=null,h=null,f=function(){function MP4Remuxer(e,t,r,i){if(void 0===i&&(i=""),this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=void 0,this._initDTS=void 0,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.observer=e,this.config=t,this.typeSupported=r,this.ISGenerated=!1,null===c){var n=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);c=n?parseInt(n[1]):0}if(null===h){var a=navigator.userAgent.match(/Safari\/(\d+)/i);h=a?parseInt(a[1]):0}}var e=MP4Remuxer.prototype;return e.destroy=function destroy(){},e.resetTimeStamp=function resetTimeStamp(e){l.logger.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e},e.resetNextTimestamp=function resetNextTimestamp(){l.logger.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1},e.resetInitSegment=function resetInitSegment(){l.logger.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1},e.getVideoStartPts=function getVideoStartPts(e){var t=!1,r=e.reduce((function(e,r){var i=r.pts-e;return i<-4294967296?(t=!0,normalizePts(e,r.pts)):i>0?e:r.pts}),e[0].pts);return t&&l.logger.debug("PTS rollover detected"),r},e.remux=function remux(e,t,r,i,n,a,s,o){var d,c,h,f,g,p,v=n,m=n,y=e.pid>-1,E=t.pid>-1,T=t.samples.length,S=e.samples.length>0,b=s&&T>0||T>1;if((!y||S)&&(!E||b)||this.ISGenerated||s){this.ISGenerated||(h=this.generateIS(e,t,n));var L,D=this.isVideoContiguous,A=-1;if(b&&(A=function findKeyframeIndex(e){for(var t=0;t<e.length;t++)if(e[t].key)return t;return-1}(t.samples),!D&&this.config.forceKeyFrameOnDiscontinuity))if(p=!0,A>0){l.logger.warn("[mp4-remuxer]: Dropped "+A+" out of "+T+" video samples due to a missing keyframe");var k=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(A),t.dropped+=A,L=m+=(t.samples[0].pts-k)/t.inputTimeScale}else-1===A&&(l.logger.warn("[mp4-remuxer]: No keyframe found out of "+T+" video samples"),p=!1);if(this.ISGenerated){if(S&&b){var C=this.getVideoStartPts(t.samples),P=(normalizePts(e.samples[0].pts,C)-C)/t.inputTimeScale;v+=Math.max(0,P),m+=Math.max(0,-P)}if(S){if(e.samplerate||(l.logger.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(e,t,n)),c=this.remuxAudio(e,v,this.isAudioContiguous,a,E||b||o===u.PlaylistLevelType.AUDIO?m:void 0),b){var I=c?c.endPTS-c.startPTS:0;t.inputTimeScale||(l.logger.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(e,t,n)),d=this.remuxVideo(t,m,D,I)}}else b&&(d=this.remuxVideo(t,m,D,0));d&&(d.firstKeyFrame=A,d.independent=-1!==A,d.firstKeyFramePTS=L)}}return this.ISGenerated&&(r.samples.length&&(g=flushTextTrackMetadataCueSamples(r,n,this._initPTS,this._initDTS)),i.samples.length&&(f=flushTextTrackUserdataCueSamples(i,n,this._initPTS))),{audio:c,video:d,initSegment:h,independent:p,text:f,id3:g}},e.generateIS=function generateIS(e,t,r){var n,s,o,l=e.samples,u=t.samples,d=this.typeSupported,c={},h=!(0,i.isFiniteNumber)(this._initPTS),f="audio/mp4";if(h&&(n=s=1/0),e.config&&l.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":d.mpeg?(f="audio/mpeg",e.codec=""):d.mp3&&(e.codec="mp3")}c.audio={id:"audio",container:f,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&d.mpeg?new Uint8Array(0):a.default.initSegment([e]),metadata:{channelCount:e.channelCount}},h&&(o=e.inputTimeScale,n=s=l[0].pts-Math.round(o*r))}if(t.sps&&t.pps&&u.length&&(t.timescale=t.inputTimeScale,c.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:a.default.initSegment([t]),metadata:{width:t.width,height:t.height}},h)){o=t.inputTimeScale;var g=this.getVideoStartPts(u),p=Math.round(o*r);s=Math.min(s,normalizePts(u[0].dts,g)-p),n=Math.min(n,g-p)}if(Object.keys(c).length)return this.ISGenerated=!0,h&&(this._initPTS=n,this._initDTS=s),{tracks:c,initPTS:n,timescale:o}},e.remuxVideo=function remuxVideo(e,t,r,i){var n,u,f=e.inputTimeScale,p=e.samples,v=[],m=p.length,y=this._initPTS,E=this.nextAvcDts,T=8,S=this.videoSampleDuration,b=Number.POSITIVE_INFINITY,L=Number.NEGATIVE_INFINITY,D=!1;r&&null!==E||(E=t*f-(p[0].pts-normalizePts(p[0].dts,p[0].pts)));for(var A=0;A<m;A++){var k=p[A];k.pts=normalizePts(k.pts-y,E),k.dts=normalizePts(k.dts-y,E),k.dts<p[A>0?A-1:A].dts&&(D=!0)}D&&p.sort((function(e,t){var r=e.dts-t.dts,i=e.pts-t.pts;return r||i})),n=p[0].dts;var C=(u=p[p.length-1].dts)-n,P=C?Math.round(C/(m-1)):S||e.inputTimeScale/30;if(r){var I=n-E,_=I>P,R=I<-1;if((_||R)&&(_?l.logger.warn("AVC: "+(0,d.toMsFromMpegTsClock)(I,!0)+" ms ("+I+"dts) hole between fragments detected, filling it"):l.logger.warn("AVC: "+(0,d.toMsFromMpegTsClock)(-I,!0)+" ms ("+I+"dts) overlapping between fragments detected"),!R||E>p[0].pts)){n=E;var w=p[0].pts-I;p[0].dts=n,p[0].pts=w,l.logger.log("Video: First PTS/DTS adjusted: "+(0,d.toMsFromMpegTsClock)(w,!0)+"/"+(0,d.toMsFromMpegTsClock)(n,!0)+", delta: "+(0,d.toMsFromMpegTsClock)(I,!0)+" ms")}}n=Math.max(0,n);for(var x=0,F=0,O=0;O<m;O++){for(var M=p[O],N=M.units,U=N.length,B=0,K=0;K<U;K++)B+=N[K].data.length;F+=B,x+=U,M.length=B,M.dts=Math.max(M.dts,n),b=Math.min(M.pts,b),L=Math.max(M.pts,L)}u=p[m-1].dts;var G,H=F+4*x+8;try{G=new Uint8Array(H)}catch(e){return void this.observer.emit(s.Events.ERROR,s.Events.ERROR,{type:o.ErrorTypes.MUX_ERROR,details:o.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:H,reason:"fail allocating video mdat "+H})}var j=new DataView(G.buffer);j.setUint32(0,H),G.set(a.default.types.mdat,4);for(var V=!1,W=Number.POSITIVE_INFINITY,Y=Number.POSITIVE_INFINITY,q=Number.NEGATIVE_INFINITY,X=Number.NEGATIVE_INFINITY,z=0;z<m;z++){for(var Q=p[z],$=Q.units,J=0,Z=0,ee=$.length;Z<ee;Z++){var te=$[Z],re=te.data,ie=te.data.byteLength;j.setUint32(T,ie),T+=4,G.set(re,T),T+=ie,J+=4+ie}var ne=void 0;if(z<m-1)S=p[z+1].dts-Q.dts,ne=p[z+1].pts-Q.pts;else{var ae=this.config,se=z>0?Q.dts-p[z-1].dts:P;if(ne=z>0?Q.pts-p[z-1].pts:P,ae.stretchShortVideoTrack&&null!==this.nextAudioPts){var oe=Math.floor(ae.maxBufferHole*f),le=(i?b+i*f:this.nextAudioPts)-Q.pts;le>oe?((S=le-se)<0?S=se:V=!0,l.logger.log("[mp4-remuxer]: It is approximately "+le/90+" ms to the next segment; using duration "+S/90+" ms for the last video frame.")):S=se}else S=se}var ue=Math.round(Q.pts-Q.dts);W=Math.min(W,S),q=Math.max(q,S),Y=Math.min(Y,ne),X=Math.max(X,ne),v.push(new g(Q.key,S,J,ue))}if(v.length)if(c){if(c<70){var de=v[0].flags;de.dependsOn=2,de.isNonSync=0}}else if(h&&X-Y<q-W&&P/q<.025&&0===v[0].cts){l.logger.warn("Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.");for(var ce=n,he=0,fe=v.length;he<fe;he++){var ge=ce+v[he].duration,pe=ce+v[he].cts;if(he<fe-1){var ve=ge+v[he+1].cts;v[he].duration=ve-pe}else v[he].duration=he?v[he-1].duration:P;v[he].cts=0,ce=ge}}console.assert(null!==S,"mp4SampleDuration must be computed"),S=V||!S?P:S,this.nextAvcDts=E=u+S,this.videoSampleDuration=S,this.isVideoContiguous=!0;var me={data1:a.default.moof(e.sequenceNumber++,n,_extends({},e,{samples:v})),data2:G,startPTS:b/f,endPTS:(L+S)/f,startDTS:n/f,endDTS:E/f,type:"video",hasAudio:!1,hasVideo:!0,nb:v.length,dropped:e.dropped};return e.samples=[],e.dropped=0,console.assert(G.length,"MDAT length must not be zero"),me},e.remuxAudio=function remuxAudio(e,t,r,i,u){var d=e.inputTimeScale,c=d/(e.samplerate?e.samplerate:d),h="aac"===e.segmentCodec?1024:1152,f=h*c,p=this._initPTS,v="mp3"===e.segmentCodec&&this.typeSupported.mpeg,m=[],y=void 0!==u,E=e.samples,T=v?0:8,S=this.nextAudioPts||-1,b=t*d;if(this.isAudioContiguous=r=r||E.length&&S>0&&(i&&Math.abs(b-S)<9e3||Math.abs(normalizePts(E[0].pts-p,b)-S)<20*f),E.forEach((function(e){e.pts=normalizePts(e.pts-p,b)})),!r||S<0){if(!(E=E.filter((function(e){return e.pts>=0}))).length)return;S=0===u?0:i&&!y?Math.max(0,b):E[0].pts}if("aac"===e.segmentCodec)for(var L=this.config.maxAudioFramesDrift,D=0,A=S;D<E.length;D++){var k=E[D],C=k.pts,P=C-A,I=Math.abs(1e3*P/d);if(P<=-L*f&&y)0===D&&(l.logger.warn("Audio frame @ "+(C/d).toFixed(3)+"s overlaps nextAudioPts by "+Math.round(1e3*P/d)+" ms."),this.nextAudioPts=S=A=C);else if(P>=L*f&&I<1e4&&y){var _=Math.round(P/f);(A=C-_*f)<0&&(_--,A+=f),0===D&&(this.nextAudioPts=S=A),l.logger.warn("[mp4-remuxer]: Injecting "+_+" audio frame @ "+(A/d).toFixed(3)+"s due to "+Math.round(1e3*P/d)+" ms gap.");for(var R=0;R<_;R++){var w=Math.max(A,0),x=n.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);x||(l.logger.log("[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead."),x=k.unit.subarray()),E.splice(D,0,{unit:x,pts:w}),A+=f,D++}}k.pts=A,A+=f}for(var F,O=null,M=null,N=0,U=E.length;U--;)N+=E[U].unit.byteLength;for(var B=0,K=E.length;B<K;B++){var G=E[B],H=G.unit,j=G.pts;if(null!==M){m[B-1].duration=Math.round((j-M)/c)}else{if(r&&"aac"===e.segmentCodec&&(j=S),O=j,!(N>0))return;N+=T;try{F=new Uint8Array(N)}catch(e){return void this.observer.emit(s.Events.ERROR,s.Events.ERROR,{type:o.ErrorTypes.MUX_ERROR,details:o.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:N,reason:"fail allocating audio mdat "+N})}v||(new DataView(F.buffer).setUint32(0,N),F.set(a.default.types.mdat,4))}F.set(H,T);var V=H.byteLength;T+=V,m.push(new g(!0,h,V,0)),M=j}var W=m.length;if(W){var Y=m[m.length-1];this.nextAudioPts=S=M+c*Y.duration;var q=v?new Uint8Array(0):a.default.moof(e.sequenceNumber++,O/c,_extends({},e,{samples:m}));e.samples=[];var X=O/d,z=S/d,Q={data1:q,data2:F,startPTS:X,endPTS:z,startDTS:X,endDTS:z,type:"audio",hasAudio:!0,hasVideo:!1,nb:W};return this.isAudioContiguous=!0,console.assert(F.length,"MDAT length must not be zero"),Q}},e.remuxEmptyAudio=function remuxEmptyAudio(e,t,r,i){var a=e.inputTimeScale,s=a/(e.samplerate?e.samplerate:a),o=this.nextAudioPts,u=(null!==o?o:i.startDTS*a)+this._initDTS,d=i.endDTS*a+this._initDTS,c=1024*s,h=Math.ceil((d-u)/c),f=n.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(l.logger.warn("[mp4-remuxer]: remux empty Audio"),f){for(var g=[],p=0;p<h;p++){var v=u+p*c;g.push({unit:f,pts:v,dts:v})}return e.samples=g,this.remuxAudio(e,t,r,!1)}l.logger.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec")},MP4Remuxer}();function normalizePts(e,t){var r;if(null===t)return e;for(r=t<e?-8589934592:8589934592;Math.abs(e-t)>4294967296;)e+=r;return e}function flushTextTrackMetadataCueSamples(e,t,r,i){var n=e.samples.length;if(n){for(var a=e.inputTimeScale,s=0;s<n;s++){var o=e.samples[s];o.pts=normalizePts(o.pts-r,t*a)/a,o.dts=normalizePts(o.dts-i,t*a)/a}var l=e.samples;return e.samples=[],{samples:l}}}function flushTextTrackUserdataCueSamples(e,t,r){var i=e.samples.length;if(i){for(var n=e.inputTimeScale,a=0;a<i;a++){var s=e.samples[a];s.pts=normalizePts(s.pts-r,t*n)/n}e.samples.sort((function(e,t){return e.pts-t.pts}));var o=e.samples;return e.samples=[],{samples:o}}}var g=function Mp4Sample(e,t,r,i){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=r,this.cts=i,this.flags=new p(e)},p=function Mp4SampleFlags(e){this.isLeading=0,this.isDependedOn=0,this.hasRedundancy=0,this.degradPrio=0,this.dependsOn=1,this.isNonSync=1,this.dependsOn=e?2:1,this.isNonSync=e?0:1}},"./src/remux/passthrough-remuxer.ts":
|
|
182
|
-
/*!******************************************!*\
|
|
183
|
-
!*** ./src/remux/passthrough-remuxer.ts ***!
|
|
184
|
-
\******************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ./mp4-remuxer */"./src/remux/mp4-remuxer.ts"),a=r(/*! ../utils/mp4-tools */"./src/utils/mp4-tools.ts"),s=r(/*! ../loader/fragment */"./src/loader/fragment.ts"),o=r(/*! ../utils/logger */"./src/utils/logger.ts");function getParsedTrackCodec(e,t){var r=null==e?void 0:e.codec;return r&&r.length>4?r:"hvc1"===r||"hev1"===r?"hvc1.1.c.L120.90":"av01"===r?"av01.0.04M.08":"avc1"===r||t===s.ElementaryStreamTypes.VIDEO?"avc1.42e01e":"mp4a.40.5"}const l=function(){function PassThroughRemuxer(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=void 0,this.initTracks=void 0,this.lastEndTime=null}var e=PassThroughRemuxer.prototype;return e.destroy=function destroy(){},e.resetTimeStamp=function resetTimeStamp(e){this.initPTS=e,this.lastEndTime=null},e.resetNextTimestamp=function resetNextTimestamp(){this.lastEndTime=null},e.resetInitSegment=function resetInitSegment(e,t,r,i){this.audioCodec=t,this.videoCodec=r,this.generateInitSegment((0,a.patchEncyptionData)(e,i)),this.emitInitSegment=!0},e.generateInitSegment=function generateInitSegment(e){var t=this.audioCodec,r=this.videoCodec;if(!e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);var i=this.initData=(0,a.parseInitSegment)(e);t||(t=getParsedTrackCodec(i.audio,s.ElementaryStreamTypes.AUDIO)),r||(r=getParsedTrackCodec(i.video,s.ElementaryStreamTypes.VIDEO));var n={};i.audio&&i.video?n.audiovideo={container:"video/mp4",codec:t+","+r,initSegment:e,id:"main"}:i.audio?n.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:i.video?n.video={container:"video/mp4",codec:r,initSegment:e,id:"main"}:o.logger.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=n},e.remux=function remux(e,t,r,s,l){var u,d=this.initPTS,c=this.lastEndTime,h={audio:void 0,video:void 0,text:s,id3:r,initSegment:void 0};(0,i.isFiniteNumber)(c)||(c=this.lastEndTime=l||0);var f=t.samples;if(!f||!f.length)return h;var g={initPTS:void 0,timescale:1},p=this.initData;if(p&&p.length||(this.generateInitSegment(f),p=this.initData),!p||!p.length)return o.logger.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),h;this.emitInitSegment&&(g.tracks=this.initTracks,this.emitInitSegment=!1);var v=(0,a.getStartDTS)(p,f);(0,i.isFiniteNumber)(d)||(this.initPTS=g.initPTS=d=v-l);var m=(0,a.getDuration)(f,p),y=e?v-d:c,E=y+m;(0,a.offsetStartDTS)(p,f,d),m>0?this.lastEndTime=E:(o.logger.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());var T=!!p.audio,S=!!p.video,b="";T&&(b+="audio"),S&&(b+="video");var L={data1:f,startPTS:y,startDTS:y,endPTS:E,endDTS:E,type:b,hasAudio:T,hasVideo:S,nb:1,dropped:0};h.audio="audio"===L.type?L:void 0,h.video="audio"!==L.type?L:void 0,h.initSegment=g;var D=null!=(u=this.initPTS)?u:0;return h.id3=(0,n.flushTextTrackMetadataCueSamples)(r,l,D,D),s.samples.length&&(h.text=(0,n.flushTextTrackUserdataCueSamples)(s,l,D)),h},PassThroughRemuxer}()},"./src/task-loop.ts":
|
|
185
|
-
/*!**************************!*\
|
|
186
|
-
!*** ./src/task-loop.ts ***!
|
|
187
|
-
\**************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var i=function(){function TaskLoop(){this._boundTick=void 0,this._tickTimer=null,this._tickInterval=null,this._tickCallCount=0,this._boundTick=this.tick.bind(this)}var e=TaskLoop.prototype;return e.destroy=function destroy(){this.onHandlerDestroying(),this.onHandlerDestroyed()},e.onHandlerDestroying=function onHandlerDestroying(){this.clearNextTick(),this.clearInterval()},e.onHandlerDestroyed=function onHandlerDestroyed(){},e.hasInterval=function hasInterval(){return!!this._tickInterval},e.hasNextTick=function hasNextTick(){return!!this._tickTimer},e.setInterval=function setInterval(e){return!this._tickInterval&&(this._tickInterval=self.setInterval(this._boundTick,e),!0)},e.clearInterval=function clearInterval(){return!!this._tickInterval&&(self.clearInterval(this._tickInterval),this._tickInterval=null,!0)},e.clearNextTick=function clearNextTick(){return!!this._tickTimer&&(self.clearTimeout(this._tickTimer),this._tickTimer=null,!0)},e.tick=function tick(){this._tickCallCount++,1===this._tickCallCount&&(this.doTick(),this._tickCallCount>1&&this.tickImmediate(),this._tickCallCount=0)},e.tickImmediate=function tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)},e.doTick=function doTick(){},TaskLoop}()},"./src/types/cmcd.ts":
|
|
188
|
-
/*!***************************!*\
|
|
189
|
-
!*** ./src/types/cmcd.ts ***!
|
|
190
|
-
\***************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{CMCDObjectType:()=>i,CMCDStreamType:()=>a,CMCDStreamingFormat:()=>n,CMCDVersion:()=>s});var i,n,a,s=1;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(i||(i={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(n||(n={})),function(e){e.VOD="v",e.LIVE="l"}(a||(a={}))},"./src/types/demuxer.ts":
|
|
191
|
-
/*!******************************!*\
|
|
192
|
-
!*** ./src/types/demuxer.ts ***!
|
|
193
|
-
\******************************/(e,t,r)=>{"use strict";var i;r.r(t),r.d(t,{MetadataSchema:()=>i}),function(e){e.audioId3="org.id3",e.dateRange="com.apple.quicktime.HLS",e.emsg="https://aomedia.org/emsg/ID3"}(i||(i={}))},"./src/types/level.ts":
|
|
194
|
-
/*!****************************!*\
|
|
195
|
-
!*** ./src/types/level.ts ***!
|
|
196
|
-
\****************************/(e,t,r)=>{"use strict";function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(n=i.key,a=void 0,"symbol"==typeof(a=function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(n,"string"))?a:String(a)),i)}var n,a}r.r(t),r.d(t,{HdcpLevels:()=>n,HlsSkip:()=>i,HlsUrlParameters:()=>a,Level:()=>s,getSkipValue:()=>getSkipValue});var i,n=["NONE","TYPE-0","TYPE-1","TYPE-2",null];function getSkipValue(e,t){var r=e.canSkipUntil,n=e.canSkipDateRanges,a=e.endSN;return r&&(void 0!==t?t-a:0)<r?n?i.v2:i.Yes:i.No}!function(e){e.No="",e.Yes="YES",e.v2="v2"}(i||(i={}));var a=function(){function HlsUrlParameters(e,t,r){this.msn=void 0,this.part=void 0,this.skip=void 0,this.msn=e,this.part=t,this.skip=r}return HlsUrlParameters.prototype.addDirectives=function addDirectives(e){var t=new self.URL(e);return void 0!==this.msn&&t.searchParams.set("_HLS_msn",this.msn.toString()),void 0!==this.part&&t.searchParams.set("_HLS_part",this.part.toString()),this.skip&&t.searchParams.set("_HLS_skip",this.skip),t.href},HlsUrlParameters}(),s=function(){function Level(e){this.attrs=void 0,this.audioCodec=void 0,this.bitrate=void 0,this.codecSet=void 0,this.height=void 0,this.id=void 0,this.name=void 0,this.videoCodec=void 0,this.width=void 0,this.unknownCodecs=void 0,this.audioGroupIds=void 0,this.details=void 0,this.fragmentError=0,this.loadError=0,this.loaded=void 0,this.realBitrate=0,this.textGroupIds=void 0,this.url=void 0,this._urlId=0,this.url=[e.url],this.attrs=e.attrs,this.bitrate=e.bitrate,e.details&&(this.details=e.details),this.id=e.id||0,this.name=e.name,this.width=e.width||0,this.height=e.height||0,this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.unknownCodecs=e.unknownCodecs,this.codecSet=[e.videoCodec,e.audioCodec].filter((function(e){return e})).join(",").replace(/\.[^.,]+/g,"")}return function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(Level,[{key:"maxBitrate",get:function get(){return Math.max(this.realBitrate,this.bitrate)}},{key:"uri",get:function get(){return this.url[this._urlId]||""}},{key:"urlId",get:function get(){return this._urlId},set:function set(e){var t=e%this.url.length;this._urlId!==t&&(this.details=void 0,this._urlId=t)}}]),Level}()},"./src/types/loader.ts":
|
|
197
|
-
/*!*****************************!*\
|
|
198
|
-
!*** ./src/types/loader.ts ***!
|
|
199
|
-
\*****************************/(e,t,r)=>{"use strict";var i,n;r.r(t),r.d(t,{PlaylistContextType:()=>i,PlaylistLevelType:()=>n}),function(e){e.MANIFEST="manifest",e.LEVEL="level",e.AUDIO_TRACK="audioTrack",e.SUBTITLE_TRACK="subtitleTrack"}(i||(i={})),function(e){e.MAIN="main",e.AUDIO="audio",e.SUBTITLE="subtitle"}(n||(n={}))},"./src/types/transmuxer.ts":
|
|
200
|
-
/*!*********************************!*\
|
|
201
|
-
!*** ./src/types/transmuxer.ts ***!
|
|
202
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{ChunkMetadata:()=>i});var i=function ChunkMetadata(e,t,r,i,n,a){void 0===i&&(i=0),void 0===n&&(n=-1),void 0===a&&(a=!1),this.level=void 0,this.sn=void 0,this.part=void 0,this.id=void 0,this.size=void 0,this.partial=void 0,this.transmuxing={start:0,executeStart:0,executeEnd:0,end:0},this.buffering={audio:{start:0,executeStart:0,executeEnd:0,end:0},video:{start:0,executeStart:0,executeEnd:0,end:0},audiovideo:{start:0,executeStart:0,executeEnd:0,end:0}},this.level=e,this.sn=t,this.id=r,this.size=i,this.part=n,this.partial=a}},"./src/utils/attr-list.ts":
|
|
203
|
-
/*!********************************!*\
|
|
204
|
-
!*** ./src/utils/attr-list.ts ***!
|
|
205
|
-
\********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{AttrList:()=>a});var i=/^(\d+)x(\d+)$/,n=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,a=function(){function AttrList(e){for(var t in"string"==typeof e&&(e=AttrList.parseAttrList(e)),e)e.hasOwnProperty(t)&&(this[t]=e[t])}var e=AttrList.prototype;return e.decimalInteger=function decimalInteger(e){var t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t},e.hexadecimalInteger=function hexadecimalInteger(e){if(this[e]){var t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;for(var r=new Uint8Array(t.length/2),i=0;i<t.length/2;i++)r[i]=parseInt(t.slice(2*i,2*i+2),16);return r}return null},e.hexadecimalIntegerAsNumber=function hexadecimalIntegerAsNumber(e){var t=parseInt(this[e],16);return t>Number.MAX_SAFE_INTEGER?1/0:t},e.decimalFloatingPoint=function decimalFloatingPoint(e){return parseFloat(this[e])},e.optionalFloat=function optionalFloat(e,t){var r=this[e];return r?parseFloat(r):t},e.enumeratedString=function enumeratedString(e){return this[e]},e.bool=function bool(e){return"YES"===this[e]},e.decimalResolution=function decimalResolution(e){var t=i.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}},AttrList.parseAttrList=function parseAttrList(e){var t,r={};for(n.lastIndex=0;null!==(t=n.exec(e));){var i=t[2];0===i.indexOf('"')&&i.lastIndexOf('"')===i.length-1&&(i=i.slice(1,-1)),r[t[1]]=i}return r},AttrList}()},"./src/utils/binary-search.ts":
|
|
206
|
-
/*!************************************!*\
|
|
207
|
-
!*** ./src/utils/binary-search.ts ***!
|
|
208
|
-
\************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});const i={search:function search(e,t){for(var r=0,i=e.length-1,n=null,a=null;r<=i;){var s=t(a=e[n=(r+i)/2|0]);if(s>0)r=n+1;else{if(!(s<0))return a;i=n-1}}return null}}},"./src/utils/buffer-helper.ts":
|
|
209
|
-
/*!************************************!*\
|
|
210
|
-
!*** ./src/utils/buffer-helper.ts ***!
|
|
211
|
-
\************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{BufferHelper:()=>a});var i=r(/*! ./logger */"./src/utils/logger.ts"),n={length:0,start:function start(){return 0},end:function end(){return 0}},a=function(){function BufferHelper(){}return BufferHelper.isBuffered=function isBuffered(e,t){try{if(e)for(var r=BufferHelper.getBuffered(e),i=0;i<r.length;i++)if(t>=r.start(i)&&t<=r.end(i))return!0}catch(e){}return!1},BufferHelper.bufferInfo=function bufferInfo(e,t,r){try{if(e){var i,n=BufferHelper.getBuffered(e),a=[];for(i=0;i<n.length;i++)a.push({start:n.start(i),end:n.end(i)});return this.bufferedInfo(a,t,r)}}catch(e){}return{len:0,start:t,end:t,nextStart:void 0}},BufferHelper.bufferedInfo=function bufferedInfo(e,t,r){t=Math.max(0,t),e.sort((function(e,t){var r=e.start-t.start;return r||t.end-e.end}));var i=[];if(r)for(var n=0;n<e.length;n++){var a=i.length;if(a){var s=i[a-1].end;e[n].start-s<r?e[n].end>s&&(i[a-1].end=e[n].end):i.push(e[n])}else i.push(e[n])}else i=e;for(var o,l=0,u=t,d=t,c=0;c<i.length;c++){var h=i[c].start,f=i[c].end;if(t+r>=h&&t<f)u=h,l=(d=f)-t;else if(t+r<h){o=h;break}}return{len:l,start:u||0,end:d||0,nextStart:o}},BufferHelper.getBuffered=function getBuffered(e){try{return e.buffered}catch(e){return i.logger.log("failed to get media.buffered",e),n}},BufferHelper}()},"./src/utils/cea-608-parser.ts":
|
|
212
|
-
/*!*************************************!*\
|
|
213
|
-
!*** ./src/utils/cea-608-parser.ts ***!
|
|
214
|
-
\*************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{CaptionScreen:()=>m,Row:()=>v,default:()=>E});var i,n=r(/*! ../utils/logger */"./src/utils/logger.ts"),a={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},s=function getCharForByte(e){var t=e;return a.hasOwnProperty(e)&&(t=a[e]),String.fromCharCode(t)},o={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},l={17:2,18:4,21:6,22:8,23:10,19:13,20:15},u={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},d={25:2,26:4,29:6,30:8,31:10,27:13,28:15},c=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];!function(e){e[e.ERROR=0]="ERROR",e[e.TEXT=1]="TEXT",e[e.WARNING=2]="WARNING",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e[e.DATA=3]="DATA"}(i||(i={}));var h=function(){function CaptionsLogger(){this.time=null,this.verboseLevel=i.ERROR}return CaptionsLogger.prototype.log=function log(e,t){if(this.verboseLevel>=e){var r="function"==typeof t?t():t;n.logger.log(this.time+" ["+e+"] "+r)}},CaptionsLogger}(),f=function numArrayToHexArray(e){for(var t=[],r=0;r<e.length;r++)t.push(e[r].toString(16));return t},g=function(){function PenState(e,t,r,i,n){this.foreground=void 0,this.underline=void 0,this.italics=void 0,this.background=void 0,this.flash=void 0,this.foreground=e||"white",this.underline=t||!1,this.italics=r||!1,this.background=i||"black",this.flash=n||!1}var e=PenState.prototype;return e.reset=function reset(){this.foreground="white",this.underline=!1,this.italics=!1,this.background="black",this.flash=!1},e.setStyles=function setStyles(e){for(var t=["foreground","underline","italics","background","flash"],r=0;r<t.length;r++){var i=t[r];e.hasOwnProperty(i)&&(this[i]=e[i])}},e.isDefault=function isDefault(){return"white"===this.foreground&&!this.underline&&!this.italics&&"black"===this.background&&!this.flash},e.equals=function equals(e){return this.foreground===e.foreground&&this.underline===e.underline&&this.italics===e.italics&&this.background===e.background&&this.flash===e.flash},e.copy=function copy(e){this.foreground=e.foreground,this.underline=e.underline,this.italics=e.italics,this.background=e.background,this.flash=e.flash},e.toString=function toString(){return"color="+this.foreground+", underline="+this.underline+", italics="+this.italics+", background="+this.background+", flash="+this.flash},PenState}(),p=function(){function StyledUnicodeChar(e,t,r,i,n,a){this.uchar=void 0,this.penState=void 0,this.uchar=e||" ",this.penState=new g(t,r,i,n,a)}var e=StyledUnicodeChar.prototype;return e.reset=function reset(){this.uchar=" ",this.penState.reset()},e.setChar=function setChar(e,t){this.uchar=e,this.penState.copy(t)},e.setPenState=function setPenState(e){this.penState.copy(e)},e.equals=function equals(e){return this.uchar===e.uchar&&this.penState.equals(e.penState)},e.copy=function copy(e){this.uchar=e.uchar,this.penState.copy(e.penState)},e.isEmpty=function isEmpty(){return" "===this.uchar&&this.penState.isDefault()},StyledUnicodeChar}(),v=function(){function Row(e){this.chars=void 0,this.pos=void 0,this.currPenState=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chars=[];for(var t=0;t<100;t++)this.chars.push(new p);this.logger=e,this.pos=0,this.currPenState=new g}var e=Row.prototype;return e.equals=function equals(e){for(var t=!0,r=0;r<100;r++)if(!this.chars[r].equals(e.chars[r])){t=!1;break}return t},e.copy=function copy(e){for(var t=0;t<100;t++)this.chars[t].copy(e.chars[t])},e.isEmpty=function isEmpty(){for(var e=!0,t=0;t<100;t++)if(!this.chars[t].isEmpty()){e=!1;break}return e},e.setCursor=function setCursor(e){this.pos!==e&&(this.pos=e),this.pos<0?(this.logger.log(i.DEBUG,"Negative cursor position "+this.pos),this.pos=0):this.pos>100&&(this.logger.log(i.DEBUG,"Too large cursor position "+this.pos),this.pos=100)},e.moveCursor=function moveCursor(e){var t=this.pos+e;if(e>1)for(var r=this.pos+1;r<t+1;r++)this.chars[r].setPenState(this.currPenState);this.setCursor(t)},e.backSpace=function backSpace(){this.moveCursor(-1),this.chars[this.pos].setChar(" ",this.currPenState)},e.insertChar=function insertChar(e){var t=this;e>=144&&this.backSpace();var r=s(e);this.pos>=100?this.logger.log(i.ERROR,(function(){return"Cannot insert "+e.toString(16)+" ("+r+") at position "+t.pos+". Skipping it!"})):(this.chars[this.pos].setChar(r,this.currPenState),this.moveCursor(1))},e.clearFromPos=function clearFromPos(e){var t;for(t=e;t<100;t++)this.chars[t].reset()},e.clear=function clear(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()},e.clearToEndOfRow=function clearToEndOfRow(){this.clearFromPos(this.pos)},e.getTextString=function getTextString(){for(var e=[],t=!0,r=0;r<100;r++){var i=this.chars[r].uchar;" "!==i&&(t=!1),e.push(i)}return t?"":e.join("")},e.setPenStyles=function setPenStyles(e){this.currPenState.setStyles(e),this.chars[this.pos].setPenState(this.currPenState)},Row}(),m=function(){function CaptionScreen(e){this.rows=void 0,this.currRow=void 0,this.nrRollUpRows=void 0,this.lastOutputScreen=void 0,this.logger=void 0,this.rows=[];for(var t=0;t<15;t++)this.rows.push(new v(e));this.logger=e,this.currRow=14,this.nrRollUpRows=null,this.lastOutputScreen=null,this.reset()}var e=CaptionScreen.prototype;return e.reset=function reset(){for(var e=0;e<15;e++)this.rows[e].clear();this.currRow=14},e.equals=function equals(e){for(var t=!0,r=0;r<15;r++)if(!this.rows[r].equals(e.rows[r])){t=!1;break}return t},e.copy=function copy(e){for(var t=0;t<15;t++)this.rows[t].copy(e.rows[t])},e.isEmpty=function isEmpty(){for(var e=!0,t=0;t<15;t++)if(!this.rows[t].isEmpty()){e=!1;break}return e},e.backSpace=function backSpace(){this.rows[this.currRow].backSpace()},e.clearToEndOfRow=function clearToEndOfRow(){this.rows[this.currRow].clearToEndOfRow()},e.insertChar=function insertChar(e){this.rows[this.currRow].insertChar(e)},e.setPen=function setPen(e){this.rows[this.currRow].setPenStyles(e)},e.moveCursor=function moveCursor(e){this.rows[this.currRow].moveCursor(e)},e.setCursor=function setCursor(e){this.logger.log(i.INFO,"setCursor: "+e),this.rows[this.currRow].setCursor(e)},e.setPAC=function setPAC(e){this.logger.log(i.INFO,(function(){return"pacData = "+JSON.stringify(e)}));var t=e.row-1;if(this.nrRollUpRows&&t<this.nrRollUpRows-1&&(t=this.nrRollUpRows-1),this.nrRollUpRows&&this.currRow!==t){for(var r=0;r<15;r++)this.rows[r].clear();var n=this.currRow+1-this.nrRollUpRows,a=this.lastOutputScreen;if(a){var s=a.rows[n].cueStartTime,o=this.logger.time;if(s&&null!==o&&s<o)for(var l=0;l<this.nrRollUpRows;l++)this.rows[t-this.nrRollUpRows+l+1].copy(a.rows[n+l])}}this.currRow=t;var u=this.rows[this.currRow];if(null!==e.indent){var d=e.indent,c=Math.max(d-1,0);u.setCursor(e.indent),e.color=u.chars[c].penState.foreground}var h={foreground:e.color,underline:e.underline,italics:e.italics,background:"black",flash:!1};this.setPen(h)},e.setBkgData=function setBkgData(e){this.logger.log(i.INFO,(function(){return"bkgData = "+JSON.stringify(e)})),this.backSpace(),this.setPen(e),this.insertChar(32)},e.setRollUpRows=function setRollUpRows(e){this.nrRollUpRows=e},e.rollUp=function rollUp(){var e=this;if(null!==this.nrRollUpRows){this.logger.log(i.TEXT,(function(){return e.getDisplayText()}));var t=this.currRow+1-this.nrRollUpRows,r=this.rows.splice(t,1)[0];r.clear(),this.rows.splice(this.currRow,0,r),this.logger.log(i.INFO,"Rolling up")}else this.logger.log(i.DEBUG,"roll_up but nrRollUpRows not set yet")},e.getDisplayText=function getDisplayText(e){e=e||!1;for(var t=[],r="",i=-1,n=0;n<15;n++){var a=this.rows[n].getTextString();a&&(i=n+1,e?t.push("Row "+i+": '"+a+"'"):t.push(a.trim()))}return t.length>0&&(r=e?"["+t.join(" | ")+"]":t.join("\n")),r},e.getTextAndFormat=function getTextAndFormat(){return this.rows},CaptionScreen}(),y=function(){function Cea608Channel(e,t,r){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new m(r),this.nonDisplayedMemory=new m(r),this.lastOutputScreen=new m(r),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=r}var e=Cea608Channel.prototype;return e.reset=function reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null},e.getHandler=function getHandler(){return this.outputFilter},e.setHandler=function setHandler(e){this.outputFilter=e},e.setPAC=function setPAC(e){this.writeScreen.setPAC(e)},e.setBkgData=function setBkgData(e){this.writeScreen.setBkgData(e)},e.setMode=function setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(i.INFO,(function(){return"MODE="+e})),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)},e.insertChars=function insertChars(e){for(var t=this,r=0;r<e.length;r++)this.writeScreen.insertChar(e[r]);var n=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";this.logger.log(i.INFO,(function(){return n+": "+t.writeScreen.getDisplayText(!0)})),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(i.TEXT,(function(){return"DISPLAYED: "+t.displayedMemory.getDisplayText(!0)})),this.outputDataUpdate())},e.ccRCL=function ccRCL(){this.logger.log(i.INFO,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")},e.ccBS=function ccBS(){this.logger.log(i.INFO,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())},e.ccAOF=function ccAOF(){},e.ccAON=function ccAON(){},e.ccDER=function ccDER(){this.logger.log(i.INFO,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()},e.ccRU=function ccRU(e){this.logger.log(i.INFO,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)},e.ccFON=function ccFON(){this.logger.log(i.INFO,"FON - Flash On"),this.writeScreen.setPen({flash:!0})},e.ccRDC=function ccRDC(){this.logger.log(i.INFO,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")},e.ccTR=function ccTR(){this.logger.log(i.INFO,"TR"),this.setMode("MODE_TEXT")},e.ccRTD=function ccRTD(){this.logger.log(i.INFO,"RTD"),this.setMode("MODE_TEXT")},e.ccEDM=function ccEDM(){this.logger.log(i.INFO,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)},e.ccCR=function ccCR(){this.logger.log(i.INFO,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)},e.ccENM=function ccENM(){this.logger.log(i.INFO,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()},e.ccEOC=function ccEOC(){var e=this;if(this.logger.log(i.INFO,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){var t=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=t,this.writeScreen=this.nonDisplayedMemory,this.logger.log(i.TEXT,(function(){return"DISP: "+e.displayedMemory.getDisplayText()}))}this.outputDataUpdate(!0)},e.ccTO=function ccTO(e){this.logger.log(i.INFO,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)},e.ccMIDROW=function ccMIDROW(e){var t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{var r=Math.floor(e/2)-16;t.foreground=["white","green","blue","cyan","red","yellow","magenta"][r]}this.logger.log(i.INFO,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)},e.outputDataUpdate=function outputDataUpdate(e){void 0===e&&(e=!1);var t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t):this.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))},e.cueSplitAtTime=function cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))},Cea608Channel}();function setLastCmd(e,t,r){r.a=e,r.b=t}function hasCmdRepeated(e,t,r){return r.a===e&&r.b===t}const E=function(){function Cea608Parser(e,t,r){this.channels=void 0,this.currentChannel=0,this.cmdHistory=void 0,this.logger=void 0;var i=new h;this.channels=[null,new y(e,t,i),new y(e+1,r,i)],this.cmdHistory={a:null,b:null},this.logger=i}var e=Cea608Parser.prototype;return e.getHandler=function getHandler(e){return this.channels[e].getHandler()},e.setHandler=function setHandler(e,t){this.channels[e].setHandler(t)},e.addData=function addData(e,t){var r,n,a,s=!1;this.logger.time=e;for(var o=0;o<t.length;o+=2)if(n=127&t[o],a=127&t[o+1],0!==n||0!==a){if(this.logger.log(i.DATA,"["+f([t[o],t[o+1]])+"] -> ("+f([n,a])+")"),(r=this.parseCmd(n,a))||(r=this.parseMidrow(n,a)),r||(r=this.parsePAC(n,a)),r||(r=this.parseBackgroundAttributes(n,a)),!r&&(s=this.parseChars(n,a))){var l=this.currentChannel;if(l&&l>0)this.channels[l].insertChars(s);else this.logger.log(i.WARNING,"No channel found yet. TEXT-MODE?")}r||s||this.logger.log(i.WARNING,"Couldn't parse cleaned data "+f([n,a])+" orig: "+f([t[o],t[o+1]]))}},e.parseCmd=function parseCmd(e,t){var r=this.cmdHistory;if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;if(hasCmdRepeated(e,t,r))return setLastCmd(null,null,r),this.logger.log(i.DEBUG,"Repeated command ("+f([e,t])+") is dropped"),!0;var n=20===e||21===e||23===e?1:2,a=this.channels[n];return 20===e||21===e||28===e||29===e?32===t?a.ccRCL():33===t?a.ccBS():34===t?a.ccAOF():35===t?a.ccAON():36===t?a.ccDER():37===t?a.ccRU(2):38===t?a.ccRU(3):39===t?a.ccRU(4):40===t?a.ccFON():41===t?a.ccRDC():42===t?a.ccTR():43===t?a.ccRTD():44===t?a.ccEDM():45===t?a.ccCR():46===t?a.ccENM():47===t&&a.ccEOC():a.ccTO(t-32),setLastCmd(e,t,r),this.currentChannel=n,!0},e.parseMidrow=function parseMidrow(e,t){var r=0;if((17===e||25===e)&&t>=32&&t<=47){if((r=17===e?1:2)!==this.currentChannel)return this.logger.log(i.ERROR,"Mismatch channel in midrow parsing"),!1;var n=this.channels[r];return!!n&&(n.ccMIDROW(t),this.logger.log(i.DEBUG,"MIDROW ("+f([e,t])+")"),!0)}return!1},e.parsePAC=function parsePAC(e,t){var r,i=this.cmdHistory;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;if(hasCmdRepeated(e,t,i))return setLastCmd(null,null,i),!0;var n=e<=23?1:2;r=t>=64&&t<=95?1===n?o[e]:u[e]:1===n?l[e]:d[e];var a=this.channels[n];return!!a&&(a.setPAC(this.interpretPAC(r,t)),setLastCmd(e,t,i),this.currentChannel=n,!0)},e.interpretPAC=function interpretPAC(e,t){var r,i={color:null,italics:!1,indent:null,underline:!1,row:e};return r=t>95?t-96:t-64,i.underline=1==(1&r),r<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(r/2)]:r<=15?(i.italics=!0,i.color="white"):i.indent=4*Math.floor((r-16)/2),i},e.parseChars=function parseChars(e,t){var r,n,a=null,o=null;(e>=25?(r=2,o=e-8):(r=1,o=e),o>=17&&o<=19)?(n=17===o?t+80:18===o?t+112:t+144,this.logger.log(i.INFO,"Special char '"+s(n)+"' in channel "+r),a=[n]):e>=32&&e<=127&&(a=0===t?[e]:[e,t]);if(a){var l=f(a);this.logger.log(i.DEBUG,"Char codes = "+l.join(",")),setLastCmd(e,t,this.cmdHistory)}return a},e.parseBackgroundAttributes=function parseBackgroundAttributes(e,t){var r;if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;var i={};16===e||24===e?(r=Math.floor((t-32)/2),i.background=c[r],t%2==1&&(i.background=i.background+"_semi")):45===t?i.background="transparent":(i.foreground="black",47===t&&(i.underline=!0));var n=e<=23?1:2;return this.channels[n].setBkgData(i),setLastCmd(e,t,this.cmdHistory),!0},e.reset=function reset(){for(var e=0;e<Object.keys(this.channels).length;e++){var t=this.channels[e];t&&t.reset()}this.cmdHistory={a:null,b:null}},e.cueSplitAtTime=function cueSplitAtTime(e){for(var t=0;t<this.channels.length;t++){var r=this.channels[t];r&&r.cueSplitAtTime(e)}},Cea608Parser}()},"./src/utils/codecs.ts":
|
|
215
|
-
/*!*****************************!*\
|
|
216
|
-
!*** ./src/utils/codecs.ts ***!
|
|
217
|
-
\*****************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{isCodecSupportedInMp4:()=>isCodecSupportedInMp4,isCodecType:()=>isCodecType});var i={audio:{a3ds:!0,"ac-3":!0,"ac-4":!0,alac:!0,alaw:!0,dra1:!0,"dts+":!0,"dts-":!0,dtsc:!0,dtse:!0,dtsh:!0,"ec-3":!0,enca:!0,g719:!0,g726:!0,m4ae:!0,mha1:!0,mha2:!0,mhm1:!0,mhm2:!0,mlpa:!0,mp4a:!0,"raw ":!0,Opus:!0,opus:!0,samr:!0,sawb:!0,sawp:!0,sevc:!0,sqcp:!0,ssmv:!0,twos:!0,ulaw:!0},video:{avc1:!0,avc2:!0,avc3:!0,avc4:!0,avcp:!0,av01:!0,drac:!0,dva1:!0,dvav:!0,dvh1:!0,dvhe:!0,encv:!0,hev1:!0,hvc1:!0,mjp2:!0,mp4v:!0,mvc1:!0,mvc2:!0,mvc3:!0,mvc4:!0,resv:!0,rv60:!0,s263:!0,svc1:!0,svc2:!0,"vc-1":!0,vp08:!0,vp09:!0},text:{stpp:!0,wvtt:!0}};function isCodecType(e,t){var r=i[t];return!!r&&!0===r[e.slice(0,4)]}function isCodecSupportedInMp4(e,t){return MediaSource.isTypeSupported((t||"video")+'/mp4;codecs="'+e+'"')}},"./src/utils/cues.ts":
|
|
218
|
-
/*!***************************!*\
|
|
219
|
-
!*** ./src/utils/cues.ts ***!
|
|
220
|
-
\***************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var i=r(/*! ./vttparser */"./src/utils/vttparser.ts"),n=r(/*! ./webvtt-parser */"./src/utils/webvtt-parser.ts"),a=r(/*! ./texttrack-utils */"./src/utils/texttrack-utils.ts"),s=/\s/;const o={newCue:function newCue(e,t,r,o){for(var l,u,d,c,h,f=[],g=self.VTTCue||self.TextTrackCue,p=0;p<o.rows.length;p++)if(d=!0,c=0,h="",!(l=o.rows[p]).isEmpty()){for(var v=0;v<l.chars.length;v++)s.test(l.chars[v].uchar)&&d?c++:(h+=l.chars[v].uchar,d=!1);l.cueStartTime=t,t===r&&(r+=1e-4),c>=16?c--:c++;var m=(0,i.fixLineBreaks)(h.trim()),y=(0,n.generateCueId)(t,r,m);e&&e.cues&&e.cues.getCueById(y)||((u=new g(t,r,m)).id=y,u.line=p+1,u.align="left",u.position=10+Math.min(80,10*Math.floor(8*c/32)),f.push(u))}return e&&f.length&&(f.sort((function(e,t){return"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line})),f.forEach((function(t){return(0,a.addCueToTrack)(e,t)}))),f}}},"./src/utils/discontinuities.ts":
|
|
221
|
-
/*!**************************************!*\
|
|
222
|
-
!*** ./src/utils/discontinuities.ts ***!
|
|
223
|
-
\**************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{adjustSlidingStart:()=>adjustSlidingStart,alignMediaPlaylistByPDT:()=>alignMediaPlaylistByPDT,alignPDT:()=>alignPDT,alignStream:()=>alignStream,findDiscontinuousReferenceFrag:()=>findDiscontinuousReferenceFrag,findFirstFragWithCC:()=>findFirstFragWithCC,shouldAlignOnDiscontinuities:()=>shouldAlignOnDiscontinuities});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ./logger */"./src/utils/logger.ts"),a=r(/*! ../controller/level-helper */"./src/controller/level-helper.ts");function findFirstFragWithCC(e,t){for(var r=null,i=0,n=e.length;i<n;i++){var a=e[i];if(a&&a.cc===t){r=a;break}}return r}function shouldAlignOnDiscontinuities(e,t,r){return!(!t.details||!(r.endCC>r.startCC||e&&e.cc<r.startCC))}function findDiscontinuousReferenceFrag(e,t,r){void 0===r&&(r=0);var i=e.fragments,a=t.fragments;if(a.length&&i.length){var s=findFirstFragWithCC(i,a[0].cc);if(s&&(!s||s.startPTS))return s;n.logger.log("No frag in previous level to align on")}else n.logger.log("No fragments to align")}function adjustFragmentStart(e,t){if(e){var r=e.start+t;e.start=e.startPTS=r,e.endPTS=r+e.duration}}function adjustSlidingStart(e,t){for(var r=t.fragments,i=0,n=r.length;i<n;i++)adjustFragmentStart(r[i],e);t.fragmentHint&&adjustFragmentStart(t.fragmentHint,e),t.alignedSliding=!0}function alignStream(e,t,r){t&&(!function alignDiscontinuities(e,t,r){if(shouldAlignOnDiscontinuities(e,r,t)){var a=findDiscontinuousReferenceFrag(r.details,t);a&&(0,i.isFiniteNumber)(a.start)&&(n.logger.log("Adjusting PTS using last level due to CC increase within current level "+t.url),adjustSlidingStart(a.start,t))}}(e,r,t),!r.alignedSliding&&t.details&&alignPDT(r,t.details),r.alignedSliding||!t.details||r.skippedSegments||(0,a.adjustSliding)(t.details,r))}function alignPDT(e,t){if(t.fragments.length&&e.hasProgramDateTime&&t.hasProgramDateTime){var r=t.fragments[0].programDateTime,a=e.fragments[0].programDateTime,s=(a-r)/1e3+t.fragments[0].start;s&&(0,i.isFiniteNumber)(s)&&(n.logger.log("Adjusting PTS using programDateTime delta "+(a-r)+"ms, sliding:"+s.toFixed(3)+" "+e.url+" "),adjustSlidingStart(s,e))}}function alignMediaPlaylistByPDT(e,t){if(e.hasProgramDateTime&&t.hasProgramDateTime){var r=e.fragments,i=t.fragments;if(r.length&&i.length){var n=i[Math.round(i.length/2)-1],a=findFirstFragWithCC(r,n.cc)||r[Math.round(r.length/2)-1],s=n.programDateTime,o=a.programDateTime;if(null!==s&&null!==o)adjustSlidingStart((o-s)/1e3-(a.start-n.start),e)}}}},"./src/utils/ewma-bandwidth-estimator.ts":
|
|
224
|
-
/*!***********************************************!*\
|
|
225
|
-
!*** ./src/utils/ewma-bandwidth-estimator.ts ***!
|
|
226
|
-
\***********************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});var i=r(/*! ../utils/ewma */"./src/utils/ewma.ts");const n=function(){function EwmaBandWidthEstimator(e,t,r){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultEstimate_=r,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new i.default(e),this.fast_=new i.default(t)}var e=EwmaBandWidthEstimator.prototype;return e.update=function update(e,t){var r=this.slow_,n=this.fast_;this.slow_.halfLife!==e&&(this.slow_=new i.default(e,r.getEstimate(),r.getTotalWeight())),this.fast_.halfLife!==t&&(this.fast_=new i.default(t,n.getEstimate(),n.getTotalWeight()))},e.sample=function sample(e,t){var r=(e=Math.max(e,this.minDelayMs_))/1e3,i=8*t/r;this.fast_.sample(r,i),this.slow_.sample(r,i)},e.canEstimate=function canEstimate(){var e=this.fast_;return e&&e.getTotalWeight()>=this.minWeight_},e.getEstimate=function getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},e.destroy=function destroy(){},EwmaBandWidthEstimator}()},"./src/utils/ewma.ts":
|
|
227
|
-
/*!***************************!*\
|
|
228
|
-
!*** ./src/utils/ewma.ts ***!
|
|
229
|
-
\***************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});const i=function(){function EWMA(e,t,r){void 0===t&&(t=0),void 0===r&&(r=0),this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=r}var e=EWMA.prototype;return e.sample=function sample(e,t){var r=Math.pow(this.alpha_,e);this.estimate_=t*(1-r)+r*this.estimate_,this.totalWeight_+=e},e.getTotalWeight=function getTotalWeight(){return this.totalWeight_},e.getEstimate=function getEstimate(){if(this.alpha_){var e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_},EWMA}()},"./src/utils/fetch-loader.ts":
|
|
230
|
-
/*!***********************************!*\
|
|
231
|
-
!*** ./src/utils/fetch-loader.ts ***!
|
|
232
|
-
\***********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l,fetchSupported:()=>fetchSupported});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ../loader/load-stats */"./src/loader/load-stats.ts"),a=r(/*! ../demux/chunk-cache */"./src/demux/chunk-cache.ts");function _wrapNativeSuper(e){var t="function"==typeof Map?new Map:void 0;return(_wrapNativeSuper=function _wrapNativeSuper(e){if(null===e||!function _isNativeFunction(e){return-1!==Function.toString.call(e).indexOf("[native code]")}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,Wrapper)}function Wrapper(){return _construct(e,arguments,_getPrototypeOf(this).constructor)}return Wrapper.prototype=Object.create(e.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(Wrapper,e)})(e)}function _construct(e,t,r){return(_construct=_isNativeReflectConstruct()?Reflect.construct.bind():function _construct(e,t,r){var i=[null];i.push.apply(i,t);var n=new(Function.bind.apply(e,i));return r&&_setPrototypeOf(n,r.prototype),n}).apply(null,arguments)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e})(e,t)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}function fetchSupported(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1}var s=function(){function FetchLoader(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=void 0,this.response=void 0,this.controller=void 0,this.context=void 0,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||getRequest,this.controller=new self.AbortController,this.stats=new n.LoadStats}var e=FetchLoader.prototype;return e.destroy=function destroy(){this.loader=this.callbacks=null,this.abortInternal()},e.abortInternal=function abortInternal(){var e=this.response;e&&e.ok||(this.stats.aborted=!0,this.controller.abort())},e.abort=function abort(){var e;this.abortInternal(),null!==(e=this.callbacks)&&void 0!==e&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)},e.load=function load(e,t,r){var n=this,a=this.stats;if(a.loading.start)throw new Error("Loader can only be used once.");a.loading.start=self.performance.now();var s=function getRequestParameters(e,t){var r={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(_extends({},e.headers))};e.rangeEnd&&r.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return r}(e,this.controller.signal),l=r.onProgress,u="arraybuffer"===e.responseType,d=u?"byteLength":"length";this.context=e,this.config=t,this.callbacks=r,this.request=this.fetchSetup(e,s),self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout((function(){n.abortInternal(),r.onTimeout(a,e,n.response)}),t.timeout),self.fetch(this.request).then((function(r){if(n.response=n.loader=r,!r.ok){var s=r.status,d=r.statusText;throw new o(d||"fetch, bad network response",s,r)}return a.loading.first=Math.max(self.performance.now(),a.loading.start),a.total=parseInt(r.headers.get("Content-Length")||"0"),l&&(0,i.isFiniteNumber)(t.highWaterMark)?n.loadProgressively(r,a,e,t.highWaterMark,l):u?r.arrayBuffer():r.text()})).then((function(s){var o=n.response;self.clearTimeout(n.requestTimeout),a.loading.end=Math.max(self.performance.now(),a.loading.first);var u=s[d];u&&(a.loaded=a.total=u);var c={url:o.url,data:s};l&&!(0,i.isFiniteNumber)(t.highWaterMark)&&l(a,e,s,o),r.onSuccess(c,a,e,o)})).catch((function(t){if(self.clearTimeout(n.requestTimeout),!a.aborted){var i=t&&t.code||0,s=t?t.message:null;r.onError({code:i,text:s},e,t?t.details:null)}}))},e.getCacheAge=function getCacheAge(){var e=null;if(this.response){var t=this.response.headers.get("age");e=t?parseFloat(t):null}return e},e.loadProgressively=function loadProgressively(e,t,r,i,n){void 0===i&&(i=0);var s=new a.default,o=e.body.getReader();return function pump(){return o.read().then((function(a){if(a.done)return s.dataLength&&n(t,r,s.flush(),e),Promise.resolve(new ArrayBuffer(0));var o=a.value,l=o.length;return t.loaded+=l,l<i||s.dataLength?(s.push(o),s.dataLength>=i&&n(t,r,s.flush(),e)):n(t,r,o,e),pump()})).catch((function(){return Promise.reject()}))}()},FetchLoader}();function getRequest(e,t){return new self.Request(e.url,t)}var o=function(e){function FetchError(t,r,i){var n;return(n=e.call(this,t)||this).code=void 0,n.details=void 0,n.code=r,n.details=i,n}return function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}(FetchError,e),FetchError}(_wrapNativeSuper(Error));const l=s},"./src/utils/hex.ts":
|
|
233
|
-
/*!**************************!*\
|
|
234
|
-
!*** ./src/utils/hex.ts ***!
|
|
235
|
-
\**************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});const i={hexDump:function hexDump(e){for(var t="",r=0;r<e.length;r++){var i=e[r].toString(16);i.length<2&&(i="0"+i),t+=i}return t}}},"./src/utils/imsc1-ttml-parser.ts":
|
|
236
|
-
/*!****************************************!*\
|
|
237
|
-
!*** ./src/utils/imsc1-ttml-parser.ts ***!
|
|
238
|
-
\****************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{IMSC1_CODEC:()=>u,parseIMSC1:()=>parseIMSC1});var i=r(/*! ./mp4-tools */"./src/utils/mp4-tools.ts"),n=r(/*! ./vttparser */"./src/utils/vttparser.ts"),a=r(/*! ./vttcue */"./src/utils/vttcue.ts"),s=r(/*! ../demux/id3 */"./src/demux/id3.ts"),o=r(/*! ./timescale-conversion */"./src/utils/timescale-conversion.ts"),l=r(/*! ./webvtt-parser */"./src/utils/webvtt-parser.ts");function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}var u="stpp.ttml.im1t",d=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,c=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,h={left:"start",center:"center",right:"end",start:"start",end:"end"};function parseIMSC1(e,t,r,n,u){var d=(0,i.findBox)(new Uint8Array(e),["mdat"]);if(0!==d.length){var c=d.map((function(e){return(0,s.utf8ArrayToStr)(e)})),f=(0,o.toTimescaleFromScale)(t,1,r);try{c.forEach((function(e){return n(function parseTTML(e,t){var r=(new DOMParser).parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!r)throw new Error("Invalid ttml");var i={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(i).reduce((function(e,t){return e[t]=r.getAttribute("ttp:"+t)||i[t],e}),{}),s="preserve"!==r.getAttribute("xml:space"),o=collectionToDictionary(getElementCollection(r,"styling","style")),u=collectionToDictionary(getElementCollection(r,"layout","region")),d=getElementCollection(r,"body","[begin]");return[].map.call(d,(function(e){var r=function getTextContent(e,t){return[].slice.call(e.childNodes).reduce((function(e,r,i){var n;return"br"===r.nodeName&&i?e+"\n":null!==(n=r.childNodes)&&void 0!==n&&n.length?getTextContent(r,t):t?e+r.textContent.trim().replace(/\s+/g," "):e+r.textContent}),"")}(e,s);if(!r||!e.hasAttribute("begin"))return null;var i=parseTtmlTime(e.getAttribute("begin"),n),d=parseTtmlTime(e.getAttribute("dur"),n),c=parseTtmlTime(e.getAttribute("end"),n);if(null===i)throw timestampParsingError(e);if(null===c){if(null===d)throw timestampParsingError(e);c=i+d}var f=new a.default(i-t,c-t,r);f.id=(0,l.generateCueId)(f.startTime,f.endTime,f.text);var g=function getTtmlStyles(e,t,r){var i="http://www.w3.org/ns/ttml#styling",n=null,a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&r.hasOwnProperty(a)&&(n=r[a]);return["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"].reduce((function(r,a){var s=getAttributeNS(t,i,a)||getAttributeNS(e,i,a)||getAttributeNS(n,i,a);return s&&(r[a]=s),r}),{})}(u[e.getAttribute("region")],o[e.getAttribute("style")],o),p=g.textAlign;if(p){var v=h[p];v&&(f.lineAlign=v),f.align=p}return _extends(f,g),f})).filter((function(e){return null!==e}))}(e,f))}))}catch(e){u(e)}}else u(new Error("Could not parse IMSC1 mdat"))}function getElementCollection(e,t,r){var i=e.getElementsByTagName(t)[0];return i?[].slice.call(i.querySelectorAll(r)):[]}function collectionToDictionary(e){return e.reduce((function(e,t){var r=t.getAttribute("xml:id");return r&&(e[r]=t),e}),{})}function getAttributeNS(e,t,r){return e&&e.hasAttributeNS(t,r)?e.getAttributeNS(t,r):null}function timestampParsingError(e){return new Error("Could not parse ttml timestamp "+e)}function parseTtmlTime(e,t){if(!e)return null;var r=(0,n.parseTimeStamp)(e);return null===r&&(d.test(e)?r=function parseHoursMinutesSecondsFrames(e,t){var r=d.exec(e),i=(0|r[4])+(0|r[5])/t.subFrameRate;return 3600*(0|r[1])+60*(0|r[2])+(0|r[3])+i/t.frameRate}(e,t):c.test(e)&&(r=function parseTimeUnits(e,t){var r=c.exec(e),i=Number(r[1]);switch(r[2]){case"h":return 3600*i;case"m":return 60*i;case"ms":return 1e3*i;case"f":return i/t.frameRate;case"t":return i/t.tickRate}return i}(e,t))),r}},"./src/utils/keysystem-util.ts":
|
|
239
|
-
/*!*************************************!*\
|
|
240
|
-
!*** ./src/utils/keysystem-util.ts ***!
|
|
241
|
-
\*************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{changeEndianness:()=>changeEndianness,convertDataUriToArrayBytes:()=>convertDataUriToArrayBytes,strToUtf8array:()=>strToUtf8array});var i=r(/*! ./numeric-encoding-utils */"./src/utils/numeric-encoding-utils.ts");function changeEndianness(e){var t=function swap(e,t,r){var i=e[t];e[t]=e[r],e[r]=i};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}function convertDataUriToArrayBytes(e){var t=e.split(":"),r=null;if("data"===t[0]&&2===t.length){var n=t[1].split(";"),a=n[n.length-1].split(",");if(2===a.length){var s="base64"===a[0],o=a[1];s?(n.splice(-1,1),r=(0,i.base64Decode)(o)):r=function getKeyIdBytes(e){var t=strToUtf8array(e).subarray(0,16),r=new Uint8Array(16);return r.set(t,16-t.length),r}(o)}}return r}function strToUtf8array(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(function(e){return e.charCodeAt(0)}))}},"./src/utils/logger.ts":
|
|
242
|
-
/*!*****************************!*\
|
|
243
|
-
!*** ./src/utils/logger.ts ***!
|
|
244
|
-
\*****************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{enableLogs:()=>enableLogs,logger:()=>s});var i=function noop(){},n={trace:i,debug:i,log:i,warn:i,info:i,error:i},a=n;function consolePrintFn(e){var t=self.console[e];return t?t.bind(self.console,"["+e+"] >"):i}function enableLogs(e,t){if(self.console&&!0===e||"object"==typeof e){!function exportLoggerFunctions(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];r.forEach((function(t){a[t]=e[t]?e[t].bind(e):consolePrintFn(t)}))}(e,"debug","log","info","warn","error");try{a.log('Debug logs enabled for "'+t+'"')}catch(e){a=n}}else a=n}var s=n},"./src/utils/mediakeys-helper.ts":
|
|
245
|
-
/*!***************************************!*\
|
|
246
|
-
!*** ./src/utils/mediakeys-helper.ts ***!
|
|
247
|
-
\***************************************/(e,t,r)=>{"use strict";var i,n,a;function keySystemFormatToKeySystemDomain(e){switch(e){case n.FAIRPLAY:return i.FAIRPLAY;case n.PLAYREADY:return i.PLAYREADY;case n.WIDEVINE:return i.WIDEVINE;case n.CLEARKEY:return i.CLEARKEY}}function keySystemIdToKeySystemDomain(e){if(e===a.WIDEVINE)return i.WIDEVINE}function keySystemDomainToKeySystemFormat(e){switch(e){case i.FAIRPLAY:return n.FAIRPLAY;case i.PLAYREADY:return n.PLAYREADY;case i.WIDEVINE:return n.WIDEVINE;case i.CLEARKEY:return n.CLEARKEY}}function getKeySystemsForConfig(e){var t=e.drmSystems,r=e.widevineLicenseUrl,n=t?[i.FAIRPLAY,i.WIDEVINE,i.PLAYREADY,i.CLEARKEY].filter((function(e){return!!t[e]})):[];return!n[i.WIDEVINE]&&r&&n.push(i.WIDEVINE),n}r.r(t),r.d(t,{KeySystemFormats:()=>n,KeySystemIds:()=>a,KeySystems:()=>i,getKeySystemsForConfig:()=>getKeySystemsForConfig,getSupportedMediaKeySystemConfigurations:()=>getSupportedMediaKeySystemConfigurations,keySystemDomainToKeySystemFormat:()=>keySystemDomainToKeySystemFormat,keySystemFormatToKeySystemDomain:()=>keySystemFormatToKeySystemDomain,keySystemIdToKeySystemDomain:()=>keySystemIdToKeySystemDomain,requestMediaKeySystemAccess:()=>s}),function(e){e.CLEARKEY="org.w3.clearkey",e.FAIRPLAY="com.apple.fps",e.PLAYREADY="com.microsoft.playready",e.WIDEVINE="com.widevine.alpha"}(i||(i={})),function(e){e.CLEARKEY="org.w3.clearkey",e.FAIRPLAY="com.apple.streamingkeydelivery",e.PLAYREADY="com.microsoft.playready",e.WIDEVINE="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"}(n||(n={})),function(e){e.WIDEVINE="edef8ba979d64acea3c827dcd51d21ed"}(a||(a={}));var s="undefined"!=typeof self&&self.navigator&&self.navigator.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;function getSupportedMediaKeySystemConfigurations(e,t,r,n){var a;switch(e){case i.FAIRPLAY:a=["cenc","sinf"];break;case i.WIDEVINE:case i.PLAYREADY:a=["cenc"];break;case i.CLEARKEY:a=["cenc","keyids"];break;default:throw new Error("Unknown key-system: "+e)}return function createMediaKeySystemConfigurations(e,t,r,i){return[{initDataTypes:e,persistentState:i.persistentState||"not-allowed",distinctiveIdentifier:i.distinctiveIdentifier||"not-allowed",sessionTypes:i.sessionTypes||[i.sessionType||"temporary"],audioCapabilities:t.map((function(e){return{contentType:'audio/mp4; codecs="'+e+'"',robustness:i.audioRobustness||"",encryptionScheme:i.audioEncryptionScheme||null}})),videoCapabilities:r.map((function(e){return{contentType:'video/mp4; codecs="'+e+'"',robustness:i.videoRobustness||"",encryptionScheme:i.videoEncryptionScheme||null}}))}]}(a,t,r,n)}},"./src/utils/mediasource-helper.ts":
|
|
248
|
-
/*!*****************************************!*\
|
|
249
|
-
!*** ./src/utils/mediasource-helper.ts ***!
|
|
250
|
-
\*****************************************/(e,t,r)=>{"use strict";function getMediaSource(){return self.MediaSource||self.WebKitMediaSource}r.r(t),r.d(t,{getMediaSource:()=>getMediaSource})},"./src/utils/mp4-tools.ts":
|
|
251
|
-
/*!********************************!*\
|
|
252
|
-
!*** ./src/utils/mp4-tools.ts ***!
|
|
253
|
-
\********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{RemuxerTrackIdConfig:()=>d,appendUint8Array:()=>appendUint8Array,bin2str:()=>bin2str,computeRawDurationFromSamples:()=>computeRawDurationFromSamples,discardEPB:()=>discardEPB,findBox:()=>findBox,getDuration:()=>getDuration,getStartDTS:()=>getStartDTS,mp4Box:()=>mp4Box,mp4pssh:()=>mp4pssh,offsetStartDTS:()=>offsetStartDTS,parseEmsg:()=>parseEmsg,parseInitSegment:()=>parseInitSegment,parsePssh:()=>parsePssh,parseSEIMessageFromNALu:()=>parseSEIMessageFromNALu,parseSamples:()=>parseSamples,parseSegmentIndex:()=>parseSegmentIndex,parseSinf:()=>parseSinf,patchEncyptionData:()=>patchEncyptionData,readSint32:()=>readSint32,readUint16:()=>readUint16,readUint32:()=>readUint32,segmentValidRange:()=>segmentValidRange,writeUint32:()=>writeUint32});var i=r(/*! ../loader/fragment */"./src/loader/fragment.ts"),n=r(/*! ./typed-array */"./src/utils/typed-array.ts"),a=r(/*! ../demux/id3 */"./src/demux/id3.ts"),s=r(/*! ../utils/logger */"./src/utils/logger.ts"),o=r(/*! ./hex */"./src/utils/hex.ts"),l=Math.pow(2,32)-1,u=[].push,d={video:1,audio:2,id3:3,text:4};function bin2str(e){return String.fromCharCode.apply(null,e)}function readUint16(e,t){var r=e[t]<<8|e[t+1];return r<0?65536+r:r}function readUint32(e,t){var r=readSint32(e,t);return r<0?4294967296+r:r}function readSint32(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}function writeUint32(e,t,r){e[t]=r>>24,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r}function findBox(e,t){var r=[];if(!t.length)return r;for(var i=e.byteLength,n=0;n<i;){var a=readUint32(e,n),s=a>1?n+a:i;if(bin2str(e.subarray(n+4,n+8))===t[0])if(1===t.length)r.push(e.subarray(n+8,s));else{var o=findBox(e.subarray(n+8,s),t.slice(1));o.length&&u.apply(r,o)}n=s}return r}function parseSegmentIndex(e){var t=[],r=e[0],i=8,n=readUint32(e,i);i+=4;i+=0===r?8:16,i+=2;var a=e.length+0,s=readUint16(e,i);i+=2;for(var o=0;o<s;o++){var l=i,u=readUint32(e,l);l+=4;var d=2147483647&u;if(1===(2147483648&u)>>>31)return console.warn("SIDX has hierarchical references (not supported)"),null;var c=readUint32(e,l);l+=4,t.push({referenceSize:d,subsegmentDuration:c,info:{duration:c/n,start:a,end:a+d-1}}),a+=d,i=l+=4}return{earliestPresentationTime:0,timescale:n,version:r,referencesCount:s,references:t}}function parseInitSegment(e){for(var t=[],r=findBox(e,["moov","trak"]),n=0;n<r.length;n++){var a=r[n],s=findBox(a,["tkhd"])[0];if(s){var o=s[0],l=0===o?12:20,u=readUint32(s,l),d=findBox(a,["mdia","mdhd"])[0];if(d){var c=readUint32(d,l=0===(o=d[0])?12:20),h=findBox(a,["mdia","hdlr"])[0];if(h){var f=bin2str(h.subarray(8,12)),g={soun:i.ElementaryStreamTypes.AUDIO,vide:i.ElementaryStreamTypes.VIDEO}[f];if(g){var p=findBox(a,["mdia","minf","stbl","stsd"])[0],v=void 0;p&&(v=bin2str(p.subarray(12,16))),t[u]={timescale:c,type:g},t[g]={timescale:c,id:u,codec:v}}}}}}return findBox(e,["moov","mvex","trex"]).forEach((function(e){var r=readUint32(e,4),i=t[r];i&&(i.default={duration:readUint32(e,12),flags:readUint32(e,20)})})),t}function patchEncyptionData(e,t){if(!e||!t)return e;var r=t.keyId;r&&t.isCommonEncryption&&findBox(e,["moov","trak"]).forEach((function(e){var t=findBox(e,["mdia","minf","stbl","stsd"])[0].subarray(8),i=findBox(t,["enca"]),n=i.length>0;n||(i=findBox(t,["encv"])),i.forEach((function(e){findBox(n?e.subarray(28):e.subarray(78),["sinf"]).forEach((function(e){var t=parseSinf(e);if(t){var i=t.subarray(8,24);i.some((function(e){return 0!==e}))||(s.logger.log("[eme] Patching keyId in 'enc"+(n?"a":"v")+">sinf>>tenc' box: "+o.default.hexDump(i)+" -> "+o.default.hexDump(r)),t.set(r,8))}}))}))}));return e}function parseSinf(e){var t=findBox(e,["schm"])[0];if(t){var r=bin2str(t.subarray(4,8));if("cbcs"===r||"cenc"===r)return findBox(e,["schi","tenc"])[0]}return s.logger.error("[eme] missing 'schm' box"),null}function getStartDTS(e,t){return findBox(t,["moof","traf"]).reduce((function(t,r){var i=findBox(r,["tfdt"])[0],n=i[0],a=findBox(r,["tfhd"]).reduce((function(t,r){var a=readUint32(r,4),s=e[a];if(s){var o=readUint32(i,4);1===n&&(o*=Math.pow(2,32),o+=readUint32(i,8));var l=o/(s.timescale||9e4);if(isFinite(l)&&(null===t||l<t))return l}return t}),null);return null!==a&&isFinite(a)&&(null===t||a<t)?a:t}),null)||0}function getDuration(e,t){for(var r=0,n=0,a=0,s=findBox(e,["moof","traf"]),o=0;o<s.length;o++){var l=s[o],u=findBox(l,["tfhd"])[0],d=t[readUint32(u,4)];if(d){var c=d.default,h=readUint32(u,0)|(null==c?void 0:c.flags),f=null==c?void 0:c.duration;8&h&&(f=readUint32(u,2&h?12:8));for(var g=d.timescale||9e4,p=findBox(l,["trun"]),v=0;v<p.length;v++){if(!(r=computeRawDurationFromSamples(p[v]))&&f)r=f*readUint32(p[v],4);d.type===i.ElementaryStreamTypes.VIDEO?n+=r/g:d.type===i.ElementaryStreamTypes.AUDIO&&(a+=r/g)}}}if(0===n&&0===a){for(var m=0,y=findBox(e,["sidx"]),E=0;E<y.length;E++){var T=parseSegmentIndex(y[E]);null!=T&&T.references&&(m+=T.references.reduce((function(e,t){return e+t.info.duration||0}),0))}return m}return n||a}function computeRawDurationFromSamples(e){var t=readUint32(e,0),r=8;1&t&&(r+=4),4&t&&(r+=4);for(var i=0,n=readUint32(e,4),a=0;a<n;a++){if(256&t)i+=readUint32(e,r),r+=4;512&t&&(r+=4),1024&t&&(r+=4),2048&t&&(r+=4)}return i}function offsetStartDTS(e,t,r){findBox(t,["moof","traf"]).forEach((function(t){findBox(t,["tfhd"]).forEach((function(i){var n=readUint32(i,4),a=e[n];if(a){var s=a.timescale||9e4;findBox(t,["tfdt"]).forEach((function(e){var t=e[0],i=readUint32(e,4);if(0===t)i-=r*s,writeUint32(e,4,i=Math.max(i,0));else{i*=Math.pow(2,32),i+=readUint32(e,8),i-=r*s,i=Math.max(i,0);var n=Math.floor(i/(l+1)),a=Math.floor(i%(l+1));writeUint32(e,4,n),writeUint32(e,8,a)}}))}}))}))}function segmentValidRange(e){var t={valid:null,remainder:null},r=findBox(e,["moof"]);if(!r)return t;if(r.length<2)return t.remainder=e,t;var i=r[r.length-1];return t.valid=(0,n.sliceUint8)(e,0,i.byteOffset-8),t.remainder=(0,n.sliceUint8)(e,i.byteOffset-8),t}function appendUint8Array(e,t){var r=new Uint8Array(e.length+t.length);return r.set(e),r.set(t,e.length),r}function parseSamples(e,t){var r=[],n=t.samples,a=t.timescale,s=t.id,o=!1;return findBox(n,["moof"]).map((function(l){var u=l.byteOffset-8;findBox(l,["traf"]).map((function(l){var d=findBox(l,["tfdt"]).map((function(e){var t=e[0],r=readUint32(e,4);return 1===t&&(r*=Math.pow(2,32),r+=readUint32(e,8)),r/a}))[0];return void 0!==d&&(e=d),findBox(l,["tfhd"]).map((function(d){var c=readUint32(d,4),h=16777215&readUint32(d,0),f=0,g=0!=(16&h),p=0,v=0!=(32&h),m=8;c===s&&(0!=(1&h)&&(m+=8),0!=(2&h)&&(m+=4),0!=(8&h)&&(f=readUint32(d,m),m+=4),g&&(p=readUint32(d,m),m+=4),v&&(m+=4),"video"===t.type&&(o=function isHEVC(e){if(!e)return!1;var t=e.indexOf("."),r=t<0?e:e.substring(0,t);return"hvc1"===r||"hev1"===r||"dvh1"===r||"dvhe"===r}(t.codec)),findBox(l,["trun"]).map((function(s){var l=s[0],d=16777215&readUint32(s,0),c=0!=(1&d),h=0,g=0!=(4&d),v=0!=(256&d),m=0,y=0!=(512&d),E=0,T=0!=(1024&d),S=0!=(2048&d),b=0,L=readUint32(s,4),D=8;c&&(h=readUint32(s,D),D+=4),g&&(D+=4);for(var A=h+u,k=0;k<L;k++){if(v?(m=readUint32(s,D),D+=4):m=f,y?(E=readUint32(s,D),D+=4):E=p,T&&(D+=4),S&&(b=0===l?readUint32(s,D):readSint32(s,D),D+=4),t.type===i.ElementaryStreamTypes.VIDEO)for(var C=0;C<E;){var P=readUint32(n,A);if(isSEIMessage(o,n[A+=4]))parseSEIMessageFromNALu(n.subarray(A,A+P),o?2:1,e+b/a,r);A+=P,C+=P+4}e+=m/a}})))}))}))})),r}function isSEIMessage(e,t){if(e){var r=t>>1&63;return 39===r||40===r}return 6===(31&t)}function parseSEIMessageFromNALu(e,t,r,i){var n=discardEPB(e),s=0;s+=t;for(var o=0,l=0,u=!1,d=0;s<n.length;){o=0;do{if(s>=n.length)break;o+=d=n[s++]}while(255===d);l=0;do{if(s>=n.length)break;l+=d=n[s++]}while(255===d);var c=n.length-s;if(!u&&4===o&&s<n.length){if(u=!0,181===n[s++]){var h=readUint16(n,s);if(s+=2,49===h){var f=readUint32(n,s);if(s+=4,1195456820===f){var g=n[s++];if(3===g){var p=n[s++],v=64&p,m=v?2+3*(31&p):0,y=new Uint8Array(m);if(v){y[0]=p;for(var E=1;E<m;E++)y[E]=n[s++]}i.push({type:g,payloadType:o,pts:r,bytes:y})}}}}}else if(5===o&&l<c){if(u=!0,l>16){for(var T=[],S=0;S<16;S++){var b=n[s++].toString(16);T.push(1==b.length?"0"+b:b),3!==S&&5!==S&&7!==S&&9!==S||T.push("-")}for(var L=l-16,D=new Uint8Array(L),A=0;A<L;A++)D[A]=n[s++];i.push({payloadType:o,pts:r,uuid:T.join(""),userData:(0,a.utf8ArrayToStr)(D),userDataBytes:D})}}else if(l<c)s+=l;else if(l>c)break}}function discardEPB(e){for(var t=e.byteLength,r=[],i=1;i<t-2;)0===e[i]&&0===e[i+1]&&3===e[i+2]?(r.push(i+2),i+=2):i++;if(0===r.length)return e;var n=t-r.length,a=new Uint8Array(n),s=0;for(i=0;i<n;s++,i++)s===r[0]&&(s++,r.shift()),a[i]=e[s];return a}function parseEmsg(e){var t=e[0],r="",i="",n=0,a=0,s=0,o=0,l=0,u=0;if(0===t){for(;"\0"!==bin2str(e.subarray(u,u+1));)r+=bin2str(e.subarray(u,u+1)),u+=1;for(r+=bin2str(e.subarray(u,u+1)),u+=1;"\0"!==bin2str(e.subarray(u,u+1));)i+=bin2str(e.subarray(u,u+1)),u+=1;i+=bin2str(e.subarray(u,u+1)),u+=1,n=readUint32(e,12),a=readUint32(e,16),o=readUint32(e,20),l=readUint32(e,24),u=28}else if(1===t){n=readUint32(e,u+=4);var d=readUint32(e,u+=4),c=readUint32(e,u+=4);for(u+=4,s=Math.pow(2,32)*d+c,Number.isSafeInteger(s)||(s=Number.MAX_SAFE_INTEGER,console.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),o=readUint32(e,u),l=readUint32(e,u+=4),u+=4;"\0"!==bin2str(e.subarray(u,u+1));)r+=bin2str(e.subarray(u,u+1)),u+=1;for(r+=bin2str(e.subarray(u,u+1)),u+=1;"\0"!==bin2str(e.subarray(u,u+1));)i+=bin2str(e.subarray(u,u+1)),u+=1;i+=bin2str(e.subarray(u,u+1)),u+=1}return{schemeIdUri:r,value:i,timeScale:n,presentationTime:s,presentationTimeDelta:a,eventDuration:o,id:l,payload:e.subarray(u,e.byteLength)}}function mp4Box(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];for(var n=r.length,a=8,s=n;s--;)a+=r[s].byteLength;var o=new Uint8Array(a);for(o[0]=a>>24&255,o[1]=a>>16&255,o[2]=a>>8&255,o[3]=255&a,o.set(e,4),s=0,a=8;s<n;s++)o.set(r[s],a),a+=r[s].byteLength;return o}function mp4pssh(e,t,r){if(16!==e.byteLength)throw new RangeError("Invalid system id");var i,n,a;if(t){i=1,n=new Uint8Array(16*t.length);for(var s=0;s<t.length;s++){var o=t[s];if(16!==o.byteLength)throw new RangeError("Invalid key");n.set(o,16*s)}}else i=0,n=new Uint8Array;i>0?(a=new Uint8Array(4),t.length>0&&new DataView(a.buffer).setUint32(0,t.length,!1)):a=new Uint8Array;var l=new Uint8Array(4);return r&&r.byteLength>0&&new DataView(l.buffer).setUint32(0,r.byteLength,!1),mp4Box([112,115,115,104],new Uint8Array([i,0,0,0]),e,a,n,l,r||new Uint8Array)}function parsePssh(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;var t={version:0,systemId:"",kids:null,data:null},r=new DataView(e),i=r.getUint32(0);if(e.byteLength!==i&&i>44)return null;if(1886614376!==r.getUint32(4))return null;if(t.version=r.getUint32(8)>>>24,t.version>1)return null;t.systemId=o.default.hexDump(new Uint8Array(e,12,16));var n=r.getUint32(28);if(0===t.version){if(i-32<n)return null;t.data=new Uint8Array(e,32,n)}else if(1===t.version){t.kids=[];for(var a=0;a<n;a++)t.kids.push(new Uint8Array(e,32+16*a,16))}return t}},"./src/utils/numeric-encoding-utils.ts":
|
|
254
|
-
/*!*********************************************!*\
|
|
255
|
-
!*** ./src/utils/numeric-encoding-utils.ts ***!
|
|
256
|
-
\*********************************************/(e,t,r)=>{"use strict";function base64ToBase64Url(e){return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function strToBase64Encode(e){return btoa(e)}function base64DecodeToStr(e){return atob(e)}function base64Encode(e){return btoa(String.fromCharCode.apply(String,e))}function base64UrlEncode(e){return base64ToBase64Url(base64Encode(e))}function base64Decode(e){return Uint8Array.from(atob(e),(function(e){return e.charCodeAt(0)}))}r.r(t),r.d(t,{base64Decode:()=>base64Decode,base64DecodeToStr:()=>base64DecodeToStr,base64Encode:()=>base64Encode,base64ToBase64Url:()=>base64ToBase64Url,base64UrlEncode:()=>base64UrlEncode,strToBase64Encode:()=>strToBase64Encode})},"./src/utils/output-filter.ts":
|
|
257
|
-
/*!************************************!*\
|
|
258
|
-
!*** ./src/utils/output-filter.ts ***!
|
|
259
|
-
\************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var i=function(){function OutputFilter(e,t){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=e,this.trackName=t}var e=OutputFilter.prototype;return e.dispatchCue=function dispatchCue(){null!==this.startTime&&(this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null)},e.newCue=function newCue(e,t,r){(null===this.startTime||this.startTime>e)&&(this.startTime=e),this.endTime=t,this.screen=r,this.timelineController.createCaptionsTrack(this.trackName)},e.reset=function reset(){this.cueRanges=[],this.startTime=null},OutputFilter}()},"./src/utils/texttrack-utils.ts":
|
|
260
|
-
/*!**************************************!*\
|
|
261
|
-
!*** ./src/utils/texttrack-utils.ts ***!
|
|
262
|
-
\**************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{addCueToTrack:()=>addCueToTrack,clearCurrentCues:()=>clearCurrentCues,getCuesInRange:()=>getCuesInRange,removeCuesInRange:()=>removeCuesInRange,sendAddTrackEvent:()=>sendAddTrackEvent});var i=r(/*! ./logger */"./src/utils/logger.ts");function sendAddTrackEvent(e,t){var r;try{r=new Event("addtrack")}catch(e){(r=document.createEvent("Event")).initEvent("addtrack",!1,!1)}r.track=e,t.dispatchEvent(r)}function addCueToTrack(e,t){var r=e.mode;if("disabled"===r&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error("addCue is failed for: "+t)}catch(r){i.logger.debug("[texttrack-utils]: "+r);var n=new self.TextTrackCue(t.startTime,t.endTime,t.text);n.id=t.id,e.addCue(n)}"disabled"===r&&(e.mode=r)}function clearCurrentCues(e){var t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(var r=e.cues.length;r--;)e.removeCue(e.cues[r]);"disabled"===t&&(e.mode=t)}function removeCuesInRange(e,t,r,i){var n=e.mode;if("disabled"===n&&(e.mode="hidden"),e.cues&&e.cues.length>0)for(var a=getCuesInRange(e.cues,t,r),s=0;s<a.length;s++)i&&!i(a[s])||e.removeCue(a[s]);"disabled"===n&&(e.mode=n)}function getCuesInRange(e,t,r){var i=[],n=function getFirstCueIndexAfterTime(e,t){if(t<e[0].startTime)return 0;var r=e.length-1;if(t>e[r].endTime)return-1;for(var i=0,n=r;i<=n;){var a=Math.floor((n+i)/2);if(t<e[a].startTime)n=a-1;else{if(!(t>e[a].startTime&&i<r))return a;i=a+1}}return e[i].startTime-t<t-e[n].startTime?i:n}(e,t);if(n>-1)for(var a=n,s=e.length;a<s;a++){var o=e[a];if(o.startTime>=t&&o.endTime<=r)i.push(o);else if(o.startTime>r)return i}return i}},"./src/utils/time-ranges.ts":
|
|
263
|
-
/*!**********************************!*\
|
|
264
|
-
!*** ./src/utils/time-ranges.ts ***!
|
|
265
|
-
\**********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});const i={toString:function toString(e){for(var t="",r=e.length,i=0;i<r;i++)t+="["+e.start(i).toFixed(3)+","+e.end(i).toFixed(3)+"]";return t}}},"./src/utils/timescale-conversion.ts":
|
|
266
|
-
/*!*******************************************!*\
|
|
267
|
-
!*** ./src/utils/timescale-conversion.ts ***!
|
|
268
|
-
\*******************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{toMpegTsClockFromTimescale:()=>toMpegTsClockFromTimescale,toMsFromMpegTsClock:()=>toMsFromMpegTsClock,toTimescaleFromBase:()=>toTimescaleFromBase,toTimescaleFromScale:()=>toTimescaleFromScale});function toTimescaleFromBase(e,t,r,i){void 0===r&&(r=1),void 0===i&&(i=!1);var n=e*t*r;return i?Math.round(n):n}function toTimescaleFromScale(e,t,r,i){return void 0===r&&(r=1),void 0===i&&(i=!1),toTimescaleFromBase(e,t,1/r,i)}function toMsFromMpegTsClock(e,t){return void 0===t&&(t=!1),toTimescaleFromBase(e,1e3,1/9e4,t)}function toMpegTsClockFromTimescale(e,t){return void 0===t&&(t=1),toTimescaleFromBase(e,9e4,1/t)}},"./src/utils/typed-array.ts":
|
|
269
|
-
/*!**********************************!*\
|
|
270
|
-
!*** ./src/utils/typed-array.ts ***!
|
|
271
|
-
\**********************************/(e,t,r)=>{"use strict";function sliceUint8(e,t,r){return Uint8Array.prototype.slice?e.slice(t,r):new Uint8Array(Array.prototype.slice.call(e,t,r))}r.r(t),r.d(t,{sliceUint8:()=>sliceUint8})},"./src/utils/vttcue.ts":
|
|
272
|
-
/*!*****************************!*\
|
|
273
|
-
!*** ./src/utils/vttcue.ts ***!
|
|
274
|
-
\*****************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});const i=function(){if("undefined"!=typeof self&&self.VTTCue)return self.VTTCue;var e=["","lr","rl"],t=["start","middle","end","left","right"];function isAllowedValue(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;var r=t.toLowerCase();return!!~e.indexOf(r)&&r}function findAlignSetting(e){return isAllowedValue(t,e)}function extend(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];for(var n=1;n<arguments.length;n++){var a=arguments[n];for(var s in a)e[s]=a[s]}return e}function VTTCue(t,r,i){var n=this,a={enumerable:!0};n.hasBeenReset=!1;var s="",o=!1,l=t,u=r,d=i,c=null,h="",f=!0,g="auto",p="start",v=50,m="middle",y=50,E="middle";Object.defineProperty(n,"id",extend({},a,{get:function get(){return s},set:function set(e){s=""+e}})),Object.defineProperty(n,"pauseOnExit",extend({},a,{get:function get(){return o},set:function set(e){o=!!e}})),Object.defineProperty(n,"startTime",extend({},a,{get:function get(){return l},set:function set(e){if("number"!=typeof e)throw new TypeError("Start time must be set to a number.");l=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"endTime",extend({},a,{get:function get(){return u},set:function set(e){if("number"!=typeof e)throw new TypeError("End time must be set to a number.");u=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"text",extend({},a,{get:function get(){return d},set:function set(e){d=""+e,this.hasBeenReset=!0}})),Object.defineProperty(n,"region",extend({},a,{get:function get(){return c},set:function set(e){c=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"vertical",extend({},a,{get:function get(){return h},set:function set(t){var r=function findDirectionSetting(t){return isAllowedValue(e,t)}(t);if(!1===r)throw new SyntaxError("An invalid or illegal string was specified.");h=r,this.hasBeenReset=!0}})),Object.defineProperty(n,"snapToLines",extend({},a,{get:function get(){return f},set:function set(e){f=!!e,this.hasBeenReset=!0}})),Object.defineProperty(n,"line",extend({},a,{get:function get(){return g},set:function set(e){if("number"!=typeof e&&"auto"!==e)throw new SyntaxError("An invalid number or illegal string was specified.");g=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"lineAlign",extend({},a,{get:function get(){return p},set:function set(e){var t=findAlignSetting(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");p=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"position",extend({},a,{get:function get(){return v},set:function set(e){if(e<0||e>100)throw new Error("Position must be between 0 and 100.");v=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"positionAlign",extend({},a,{get:function get(){return m},set:function set(e){var t=findAlignSetting(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");m=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"size",extend({},a,{get:function get(){return y},set:function set(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");y=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"align",extend({},a,{get:function get(){return E},set:function set(e){var t=findAlignSetting(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");E=t,this.hasBeenReset=!0}})),n.displayState=void 0}return VTTCue.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},VTTCue}()},"./src/utils/vttparser.ts":
|
|
275
|
-
/*!********************************!*\
|
|
276
|
-
!*** ./src/utils/vttparser.ts ***!
|
|
277
|
-
\********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{VTTParser:()=>l,fixLineBreaks:()=>fixLineBreaks,parseTimeStamp:()=>parseTimeStamp});var i=r(/*! ./vttcue */"./src/utils/vttcue.ts"),n=function(){function StringDecoder(){}return StringDecoder.prototype.decode=function decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))},StringDecoder}();function parseTimeStamp(e){function computeSeconds(e,t,r,i){return 3600*(0|e)+60*(0|t)+(0|r)+parseFloat(i||0)}var t=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return t?parseFloat(t[2])>59?computeSeconds(t[2],t[3],0,t[4]):computeSeconds(t[1],t[2],t[3],t[4]):null}var a=function(){function Settings(){this.values=Object.create(null)}var e=Settings.prototype;return e.set=function set(e,t){this.get(e)||""===t||(this.values[e]=t)},e.get=function get(e,t,r){return r?this.has(e)?this.values[e]:t[r]:this.has(e)?this.values[e]:t},e.has=function has(e){return e in this.values},e.alt=function alt(e,t,r){for(var i=0;i<r.length;++i)if(t===r[i]){this.set(e,t);break}},e.integer=function integer(e,t){/^-?\d+$/.test(t)&&this.set(e,parseInt(t,10))},e.percent=function percent(e,t){if(/^([\d]{1,3})(\.[\d]*)?%$/.test(t)){var percent=parseFloat(t);if(percent>=0&&percent<=100)return this.set(e,percent),!0}return!1},Settings}();function parseOptions(e,t,r,i){var n=i?e.split(i):[e];for(var a in n)if("string"==typeof n[a]){var s=n[a].split(r);if(2===s.length)t(s[0],s[1])}}var s=new i.default(0,0,""),o="middle"===s.align?"middle":"center";function parseCue(e,t,r){var i=e;function consumeTimeStamp(){var t=parseTimeStamp(e);if(null===t)throw new Error("Malformed timestamp: "+i);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function skipWhitespace(){e=e.replace(/^\s+/,"")}if(skipWhitespace(),t.startTime=consumeTimeStamp(),skipWhitespace(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+i);e=e.slice(3),skipWhitespace(),t.endTime=consumeTimeStamp(),skipWhitespace(),function consumeCueSettings(e,t){var i=new a;parseOptions(e,(function(e,t){var n;switch(e){case"region":for(var a=r.length-1;a>=0;a--)if(r[a].id===t){i.set(e,r[a].region);break}break;case"vertical":i.alt(e,t,["rl","lr"]);break;case"line":n=t.split(","),i.integer(e,n[0]),i.percent(e,n[0])&&i.set("snapToLines",!1),i.alt(e,n[0],["auto"]),2===n.length&&i.alt("lineAlign",n[1],["start",o,"end"]);break;case"position":n=t.split(","),i.percent(e,n[0]),2===n.length&&i.alt("positionAlign",n[1],["start",o,"end","line-left","line-right","auto"]);break;case"size":i.percent(e,t);break;case"align":i.alt(e,t,["start",o,"end","left","right"])}}),/:/,/\s/),t.region=i.get("region",null),t.vertical=i.get("vertical","");var n=i.get("line","auto");"auto"===n&&-1===s.line&&(n=-1),t.line=n,t.lineAlign=i.get("lineAlign","start"),t.snapToLines=i.get("snapToLines",!0),t.size=i.get("size",100),t.align=i.get("align",o);var l=i.get("position","auto");"auto"===l&&50===s.position&&(l="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=l}(e,t)}function fixLineBreaks(e){return e.replace(/<br(?: \/)?>/gi,"\n")}var l=function(){function VTTParser(){this.state="INITIAL",this.buffer="",this.decoder=new n,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}var e=VTTParser.prototype;return e.parse=function parse(e){var t=this;function collectNextLine(){var e=t.buffer,r=0;for(e=fixLineBreaks(e);r<e.length&&"\r"!==e[r]&&"\n"!==e[r];)++r;var i=e.slice(0,r);return"\r"===e[r]&&++r,"\n"===e[r]&&++r,t.buffer=e.slice(r),i}e&&(t.buffer+=t.decoder.decode(e,{stream:!0}));try{var r="";if("INITIAL"===t.state){if(!/\r\n|\n/.test(t.buffer))return this;var n=(r=collectNextLine()).match(/^()?WEBVTT([ \t].*)?$/);if(!n||!n[0])throw new Error("Malformed WebVTT signature.");t.state="HEADER"}for(var a=!1;t.buffer;){if(!/\r\n|\n/.test(t.buffer))return this;switch(a?a=!1:r=collectNextLine(),t.state){case"HEADER":/:/.test(r)?parseOptions(r,(function(e,t){}),/:/):r||(t.state="ID");continue;case"NOTE":r||(t.state="ID");continue;case"ID":if(/^NOTE($|[ \t])/.test(r)){t.state="NOTE";break}if(!r)continue;if(t.cue=new i.default(0,0,""),t.state="CUE",-1===r.indexOf("--\x3e")){t.cue.id=r;continue}case"CUE":if(!t.cue){t.state="BADCUE";continue}try{parseCue(r,t.cue,t.regionList)}catch(e){t.cue=null,t.state="BADCUE";continue}t.state="CUETEXT";continue;case"CUETEXT":var s=-1!==r.indexOf("--\x3e");if(!r||s&&(a=!0)){t.oncue&&t.cue&&t.oncue(t.cue),t.cue=null,t.state="ID";continue}if(null===t.cue)continue;t.cue.text&&(t.cue.text+="\n"),t.cue.text+=r;continue;case"BADCUE":r||(t.state="ID")}}}catch(e){"CUETEXT"===t.state&&t.cue&&t.oncue&&t.oncue(t.cue),t.cue=null,t.state="INITIAL"===t.state?"BADWEBVTT":"BADCUE"}return this},e.flush=function flush(){try{if((this.cue||"HEADER"===this.state)&&(this.buffer+="\n\n",this.parse()),"INITIAL"===this.state||"BADWEBVTT"===this.state)throw new Error("Malformed WebVTT signature.")}catch(e){this.onparsingerror&&this.onparsingerror(e)}return this.onflush&&this.onflush(),this},VTTParser}()},"./src/utils/webvtt-parser.ts":
|
|
278
|
-
/*!************************************!*\
|
|
279
|
-
!*** ./src/utils/webvtt-parser.ts ***!
|
|
280
|
-
\************************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{generateCueId:()=>generateCueId,parseWebVTT:()=>parseWebVTT});var i=r(/*! ./src/polyfills/number */"./src/polyfills/number.ts"),n=r(/*! ./vttparser */"./src/utils/vttparser.ts"),a=r(/*! ../demux/id3 */"./src/demux/id3.ts"),s=r(/*! ./timescale-conversion */"./src/utils/timescale-conversion.ts"),o=r(/*! ../remux/mp4-remuxer */"./src/remux/mp4-remuxer.ts"),l=/\r\n|\n\r|\n|\r/g,u=function startsWith(e,t,r){return void 0===r&&(r=0),e.slice(r,r+t.length)===t},d=function hash(e){for(var hash=5381,t=e.length;t;)hash=33*hash^e.charCodeAt(--t);return(hash>>>0).toString()};function generateCueId(e,t,r){return d(e.toString())+d(t.toString())+d(r)}function parseWebVTT(e,t,r,d,c,h,f,g){var p,v=new n.VTTParser,m=(0,a.utf8ArrayToStr)(new Uint8Array(e)).trim().replace(l,"\n").split("\n"),y=[],E=(0,s.toMpegTsClockFromTimescale)(t,r),T="00:00.000",S=0,b=0,L=!0;v.oncue=function(e){var t=d[c],r=d.ccOffset,i=(S-E)/9e4;null!=t&&t.new&&(void 0!==b?r=d.ccOffset=t.start:function calculateOffset(e,t,r){var i=e[t],n=e[i.prevCC];if(!n||!n.new&&i.new)return e.ccOffset=e.presentationOffset=i.start,void(i.new=!1);for(;null!==(a=n)&&void 0!==a&&a.new;){var a;e.ccOffset+=i.start-n.start,i.new=!1,n=e[(i=n).prevCC]}e.presentationOffset=r}(d,c,i)),i&&(r=i-d.presentationOffset);var n=e.endTime-e.startTime,a=(0,o.normalizePts)(9e4*(e.startTime+r-b),9e4*h)/9e4;e.startTime=Math.max(a,0),e.endTime=Math.max(a+n,0);var s=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(s)),e.id||(e.id=generateCueId(e.startTime,e.endTime,s)),e.endTime>0&&y.push(e)},v.onparsingerror=function(e){p=e},v.onflush=function(){p?g(p):f(y)},m.forEach((function(e){if(L){if(u(e,"X-TIMESTAMP-MAP=")){L=!1,e.slice(16).split(",").forEach((function(e){u(e,"LOCAL:")?T=e.slice(6):u(e,"MPEGTS:")&&(S=parseInt(e.slice(7)))}));try{b=function cueString2millis(e){var t=parseInt(e.slice(-3)),r=parseInt(e.slice(-6,-4)),n=parseInt(e.slice(-9,-7)),a=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!((0,i.isFiniteNumber)(t)&&(0,i.isFiniteNumber)(r)&&(0,i.isFiniteNumber)(n)&&(0,i.isFiniteNumber)(a)))throw Error("Malformed X-TIMESTAMP-MAP: Local:"+e);return t+=1e3*r,t+=6e4*n,t+=36e5*a}(T)/1e3}catch(e){p=e}return}""===e&&(L=!1)}v.parse(e+"\n")})),v.flush()}},"./src/utils/xhr-loader.ts":
|
|
281
|
-
/*!*********************************!*\
|
|
282
|
-
!*** ./src/utils/xhr-loader.ts ***!
|
|
283
|
-
\*********************************/(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var i=r(/*! ../utils/logger */"./src/utils/logger.ts"),n=r(/*! ../loader/load-stats */"./src/loader/load-stats.ts"),a=/^age:\s*[\d.]+\s*$/m;const s=function(){function XhrLoader(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=void 0,this.loader=null,this.stats=void 0,this.xhrSetup=e?e.xhrSetup:null,this.stats=new n.LoadStats,this.retryDelay=0}var e=XhrLoader.prototype;return e.destroy=function destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null},e.abortInternal=function abortInternal(){var e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))},e.abort=function abort(){var e;this.abortInternal(),null!==(e=this.callbacks)&&void 0!==e&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)},e.load=function load(e,t,r){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=r,this.retryDelay=t.retryDelay,this.loadInternal()},e.loadInternal=function loadInternal(){var e=this.config,t=this.context;if(e){var r=this.loader=new self.XMLHttpRequest,i=this.stats;i.loading.first=0,i.loaded=0;var n=this.xhrSetup;try{if(n)try{n(r,t.url)}catch(e){r.open("GET",t.url,!0),n(r,t.url)}r.readyState||r.open("GET",t.url,!0);var a=this.context.headers;if(a)for(var s in a)r.setRequestHeader(s,a[s])}catch(e){return void this.callbacks.onError({code:r.status,text:e.message},t,r)}t.rangeEnd&&r.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),r.onreadystatechange=this.readystatechange.bind(this),r.onprogress=this.loadprogress.bind(this),r.responseType=t.responseType,self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),e.timeout),r.send()}},e.readystatechange=function readystatechange(){var e=this.context,t=this.loader,r=this.stats;if(e&&t){var n=t.readyState,a=this.config;if(!r.aborted&&n>=2)if(self.clearTimeout(this.requestTimeout),0===r.loading.first&&(r.loading.first=Math.max(self.performance.now(),r.loading.start)),4===n){t.onreadystatechange=null,t.onprogress=null;var s=t.status,o="arraybuffer"===t.responseType;if(s>=200&&s<300&&(o&&t.response||null!==t.responseText)){var l,u;if(r.loading.end=Math.max(self.performance.now(),r.loading.first),u=o?(l=t.response).byteLength:(l=t.responseText).length,r.loaded=r.total=u,!this.callbacks)return;var d=this.callbacks.onProgress;if(d&&d(r,e,l,t),!this.callbacks)return;var c={url:t.responseURL,data:l};this.callbacks.onSuccess(c,r,e,t)}else r.retry>=a.maxRetry||s>=400&&s<499?(i.logger.error(s+" while loading "+e.url),this.callbacks.onError({code:s,text:t.statusText},e,t)):(i.logger.warn(s+" while loading "+e.url+", retrying in "+this.retryDelay+"..."),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,a.maxRetryDelay),r.retry++)}else self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),a.timeout)}},e.loadtimeout=function loadtimeout(){i.logger.warn("timeout while loading "+this.context.url);var e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))},e.loadprogress=function loadprogress(e){var t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)},e.getCacheAge=function getCacheAge(){var e=null;if(this.loader&&a.test(this.loader.getAllResponseHeaders())){var t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e},XhrLoader}()},"./node_modules/eventemitter3/index.js":
|
|
284
|
-
/*!*********************************************!*\
|
|
285
|
-
!*** ./node_modules/eventemitter3/index.js ***!
|
|
286
|
-
\*********************************************/e=>{"use strict";var t=Object.prototype.hasOwnProperty,r="~";function Events(){}function EE(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function addListener(e,t,i,n,a){if("function"!=typeof i)throw new TypeError("The listener must be a function");var s=new EE(i,n||e,a),o=r?r+t:t;return e._events[o]?e._events[o].fn?e._events[o]=[e._events[o],s]:e._events[o].push(s):(e._events[o]=s,e._eventsCount++),e}function clearEvent(e,t){0==--e._eventsCount?e._events=new Events:delete e._events[t]}function EventEmitter(){this._events=new Events,this._eventsCount=0}Object.create&&(Events.prototype=Object.create(null),(new Events).__proto__||(r=!1)),EventEmitter.prototype.eventNames=function eventNames(){var e,i,n=[];if(0===this._eventsCount)return n;for(i in e=this._events)t.call(e,i)&&n.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},EventEmitter.prototype.listeners=function listeners(e){var t=r?r+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,a=i.length,s=new Array(a);n<a;n++)s[n]=i[n].fn;return s},EventEmitter.prototype.listenerCount=function listenerCount(e){var t=r?r+e:e,i=this._events[t];return i?i.fn?1:i.length:0},EventEmitter.prototype.emit=function emit(e,t,i,n,a,s){var o=r?r+e:e;if(!this._events[o])return!1;var l,u,d=this._events[o],c=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),c){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,i),!0;case 4:return d.fn.call(d.context,t,i,n),!0;case 5:return d.fn.call(d.context,t,i,n,a),!0;case 6:return d.fn.call(d.context,t,i,n,a,s),!0}for(u=1,l=new Array(c-1);u<c;u++)l[u-1]=arguments[u];d.fn.apply(d.context,l)}else{var h,f=d.length;for(u=0;u<f;u++)switch(d[u].once&&this.removeListener(e,d[u].fn,void 0,!0),c){case 1:d[u].fn.call(d[u].context);break;case 2:d[u].fn.call(d[u].context,t);break;case 3:d[u].fn.call(d[u].context,t,i);break;case 4:d[u].fn.call(d[u].context,t,i,n);break;default:if(!l)for(h=1,l=new Array(c-1);h<c;h++)l[h-1]=arguments[h];d[u].fn.apply(d[u].context,l)}}return!0},EventEmitter.prototype.on=function on(e,t,r){return addListener(this,e,t,r,!1)},EventEmitter.prototype.once=function once(e,t,r){return addListener(this,e,t,r,!0)},EventEmitter.prototype.removeListener=function removeListener(e,t,i,n){var a=r?r+e:e;if(!this._events[a])return this;if(!t)return clearEvent(this,a),this;var s=this._events[a];if(s.fn)s.fn!==t||n&&!s.once||i&&s.context!==i||clearEvent(this,a);else{for(var o=0,l=[],u=s.length;o<u;o++)(s[o].fn!==t||n&&!s[o].once||i&&s[o].context!==i)&&l.push(s[o]);l.length?this._events[a]=1===l.length?l[0]:l:clearEvent(this,a)}return this},EventEmitter.prototype.removeAllListeners=function removeAllListeners(e){var t;return e?(t=r?r+e:e,this._events[t]&&clearEvent(this,t)):(this._events=new Events,this._eventsCount=0),this},EventEmitter.prototype.off=EventEmitter.prototype.removeListener,EventEmitter.prototype.addListener=EventEmitter.prototype.on,EventEmitter.prefixed=r,EventEmitter.EventEmitter=EventEmitter,e.exports=EventEmitter},"./node_modules/url-toolkit/src/url-toolkit.js":
|
|
287
|
-
/*!*****************************************************!*\
|
|
288
|
-
!*** ./node_modules/url-toolkit/src/url-toolkit.js ***!
|
|
289
|
-
\*****************************************************/function(e){var t,r,i,n,a;t=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,r=/^(?=([^\/?#]*))\1([^]*)$/,i=/(?:\/|^)\.(?=\/)/g,n=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,a={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var n=a.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");return n.path=a.normalizePath(n.path),a.buildURLFromParts(n)}var s=a.parseURL(t);if(!s)throw new Error("Error trying to parse relative URL.");if(s.scheme)return i.alwaysNormalize?(s.path=a.normalizePath(s.path),a.buildURLFromParts(s)):t;var o=a.parseURL(e);if(!o)throw new Error("Error trying to parse base URL.");if(!o.netLoc&&o.path&&"/"!==o.path[0]){var l=r.exec(o.path);o.netLoc=l[1],o.path=l[2]}o.netLoc&&!o.path&&(o.path="/");var u={scheme:o.scheme,netLoc:s.netLoc,path:null,params:s.params,query:s.query,fragment:s.fragment};if(!s.netLoc&&(u.netLoc=o.netLoc,"/"!==s.path[0]))if(s.path){var d=o.path,c=d.substring(0,d.lastIndexOf("/")+1)+s.path;u.path=a.normalizePath(c)}else u.path=o.path,s.params||(u.params=o.params,s.query||(u.query=o.query));return null===u.path&&(u.path=i.alwaysNormalize?a.normalizePath(s.path):s.path),a.buildURLFromParts(u)},parseURL:function(e){var r=t.exec(e);return r?{scheme:r[1]||"",netLoc:r[2]||"",path:r[3]||"",params:r[4]||"",query:r[5]||"",fragment:r[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(i,"");e.length!==(e=e.replace(n,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=a}},t={};function __webpack_require__(r){var i=t[r];if(void 0!==i)return i.exports;var n=t[r]={exports:{}};return e[r].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.m=e,__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r=__webpack_require__("./src/hls.ts");return r=r.default})())}}]);
|