!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("xgplayer")):"function"==typeof define&&define.amd?define(["xgplayer"],t):(e=e||self).HlsPlayer=t(e.Player)}(this,(function(e){"use strict";e=e&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e;var t={VISIBILITY_CHANGE:"VISIBILITY_CHANGE"},i={SEEK:"SEEK"},r={LADER_START:"LOADER_START",LOADER_DATALOADED:"LOADER_DATALOADED",LOADER_COMPLETE:"LOADER_COMPLETE",LOADER_RESPONSE_HEADERS:"LOADER_RESPONSE_HEADERS",LOADER_ERROR:"LOADER_ERROR",LOADER_RETRY:"LOADER_RETRY",LOADER_TTFB:"LOADER_TTFB"},n={DEMUX_START:"DEMUX_START",DEMUX_COMPLETE:"DEMUX_COMPLETE",DEMUX_ERROR:"DEMUX_ERROR",METADATA_PARSED:"METADATA_PARSED",SEI_PARSED:"SEI_PARSED",VIDEO_METADATA_CHANGE:"VIDEO_METADATA_CHANGE",AUDIO_METADATA_CHANGE:"AUDIO_METADATA_CHANGE",MEDIA_INFO:"MEDIA_INFO",ISKEYFRAME:"ISKEYFRAME"},s={REMUX_METADATA:"REMUX_METADATA",REMUX_MEDIA:"REMUX_MEDIA",MEDIA_SEGMENT:"MEDIA_SEGMENT",REMUX_ERROR:"REMUX_ERROR",INIT_SEGMENT:"INIT_SEGMENT",DETECT_CHANGE_STREAM:"DETECT_CHANGE_STREAM",DETECT_CHANGE_STREAM_DISCONTINUE:"DETECT_CHANGE_STREAM_DISCONTINUE",DETECT_AUDIO_GAP:"DETECT_AUDIO_GAP",DETECT_LARGE_GAP:"DETECT_LARGE_GAP",DETECT_AUDIO_OVERLAP:"DETECT_AUDIO_OVERLAP",RANDOM_ACCESS_POINT:"RANDOM_ACCESS_POINT",DETECT_FRAG_ID_DISCONTINUE:"DETECT_FRAG_ID_DISCONTINUE"},a={SOURCE_UPDATE_END:"SOURCE_UPDATE_END",MSE_ERROR:"MSE_ERROR",MSE_WRONG_TRACK_ADD:"MSE_WRONG_TRACK_ADD"},o={RETRY_TIME_EXCEEDED:"RETRY_TIME_EXCEEDED"},u=Object.assign({},r,n,s,a,o,i,t),l=[],h=[];for(var c in u)u.hasOwnProperty(c)&&l.push(u[c]);for(var d in u)u.hasOwnProperty(d)&&h.push(u[d]);var f={ALLEVENTS:u,HLS_EVENTS:o,REMUX_EVENTS:s,DEMUX_EVENTS:n,MSE_EVENTS:a,LOADER_EVENTS:r,FlvAllowedEvents:l,HlsAllowedEvents:h,CRYPTO_EVENTS:{START_DECRYPTOO:"START_DECRYPTO",DECRYPTED:"DECRYPTED"},PLAYER_EVENTS:i,BROWSER_EVENTS:t},p=function(){function e(e,t){for(var i=0;ithis._lastget.time&&(this._lastget={duration:this._ts[e].duration,time:this._ts[e].start,downloaded:!1,downloading:!1,url:e,id:this._ts[e].id}),delete this._list[this._ts[e].start],delete this._ts[e],this.fragLength-=1)}},{key:"_calcAvgFrgmentDuration",value:function(e){if(!e.frags)return e.targetduration;var t=e.frags.length;return Math.floor(e.duration/t/1e3)}},{key:"pushM3U8",value:function(e,t){if(!e)throw new Error("No m3u8 data received.");if(this.version=e.version,this.targetduration=e.targetduration,this._avgSegmentDuration=Math.min(this.targetduration,this._calcAvgFrgmentDuration(e)),e.encrypt&&!this.encrypt&&(this.encrypt=e.encrypt),this.end=e.end||!1,e.sequence||(e.sequence=0),!(e.sequence>this.sequence))throw new Error("Old m3u8 file received, "+e.sequence);var i=e.frags.length;this.logger&&this.logger.log("PLAYLIST","new playlist ["+e.sequence+", "+(e.sequence+i-1)+"]"),this.sequence=e.sequence;for(var r=[],n=0;n=this.duration)){t=t.sort((function(e,t){return parseFloat(e)-parseFloat(t)}));for(var r=0;r=parseInt(t[r]);r++){var n=this._list[t[r]];i={url:n,downloaded:this._ts[n].downloaded,downloading:this._ts[n].downloading,time:parseInt(t[r]),duration:parseInt(this._ts[n].duration),id:this._ts[n].id,cc:this._ts[n].cc,isLast:this._ts[n].isLast},this.autoclear&&this._lastget&&(delete this._ts[this._lastget.url],delete this._list[this._lastget.time]),this._lastget=i}return i&&this.downloadedUrls.push(i.url),i}}},{key:"getLastDownloadedTs",value:function(){for(var e=Object.keys(this._list).sort((function(e,t){return Number(e)-Number(t)})),t=void 0,i=0;i0&&e.readByte(this.dataview,r)}},{key:"readUint8",value:function(){return e.readByte(this.dataview,1)}},{key:"readUint16",value:function(){return e.readByte(this.dataview,2)}},{key:"readUint24",value:function(){return e.readByte(this.dataview,3)}},{key:"readUint32",value:function(){return e.readByte(this.dataview,4)}},{key:"readUint64",value:function(){return e.readByte(this.dataview,8)}},{key:"readInt8",value:function(){return e.readByte(this.dataview,1,!0)}},{key:"readInt16",value:function(){return e.readByte(this.dataview,2,!0)}},{key:"readInt32",value:function(){return e.readByte(this.dataview,4,!0)}},{key:"writeUint32",value:function(e){return new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e])}},{key:"length",get:function(){return this.buffer.byteLength}},{key:"position",set:function(e){this.dataview.position=e},get:function(){return this.dataview.position}}],[{key:"readByte",value:function(e,t,i){var r=void 0;switch(t){case 1:r=i?e.getInt8(e.position):e.getUint8(e.position);break;case 2:r=i?e.getInt16(e.position):e.getUint16(e.position);break;case 3:if(i)throw new Error("not supported for readByte 3");r=e.getUint8(e.position)<<16,r|=e.getUint8(e.position+1)<<8,r|=e.getUint8(e.position+2);break;case 4:r=i?e.getInt32(e.position):e.getUint32(e.position);break;case 8:if(i)throw new Error("not supported for readBody 8");r=e.getUint32(e.position)<<32,r|=e.getUint32(e.position+4);break;default:r=""}return e.position+=t,r}}]),e}(),T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},S=function(){function e(e,t){for(var i=0;i0&&e>0;){if(this.offset+e2&&void 0!==arguments[2]?arguments[2]:[];Q(this,e),this._emitter=new z,this._emitter.off||(this._emitter.off=this._emitter.removeListener),this.mediaInfo=new V,this._instanceMap={},this._clsMap={},this._inited=!1,this.allowedEvents=r,this._configs=i,this._player=t,this._hooks={}}return Z(e,[{key:"getInstance",value:function(e){var t=this._instanceMap[e];return t||null}},{key:"initInstance",value:function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),r=1;r1?i-1:0),o=1;o2?i-2:0),a=2;a1)return;for(var o=0,u=Object.keys(e).length;o0)return this.emit(ne.MSE_WRONG_TRACK_ADD,l);this.emit(ne.MSE_ERROR,this.TAG,new Error(e.message))}}}Object.keys(this.sourceBuffers).length===this.sourceBufferLen&&this.doAppend()}}}}},{key:"doAppend",value:function(){if(this.mediaSource&&"closed"!==this.mediaSource.readyState){this._doCleanupSourceBuffer();var e=this._context.getInstance("PRE_SOURCE_BUFFER");if(e&&!(Object.keys(this.sourceBuffers).length1&&void 0!==arguments[1]?arguments[1]:0;try{for(var i=0;it&&r.remove(t,e)}}catch(e){}}},{key:"_doCleanupSourceBuffer",value:function(){for(var e=this.container.currentTime,t={video:[],audio:[]},i=0;i=180){a=!0;var h=e-180;t[r].push({start:u,end:h})}}else l=180&&(a=!0,t[r].push({start:u,end:l}))}a&&!n.updating&&this._doRemoveRanges(t)}}},{key:"_doRemoveRanges",value:function(e){for(var t in e)if(this.sourceBuffers[t]&&!this.sourceBuffers[t].updating)for(var i=this.sourceBuffers[t],r=e[t];r.length&&!i.updating;){var n=r.shift();try{n&&n.end>n.start&&i.remove(n.start,n.end)}catch(e){}}}},{key:"cleanBuffers",value:function(){for(var t=this,i=[],r=function(r){var n=t.sourceBuffers[Object.keys(t.sourceBuffers)[r]],s=void 0;s=n.updating?new Promise((function(t){n.addEventListener("updateend",(function i(){var r=3;setTimeout((function i(){n.updating?r>0?(setTimeout(i,200),r--):t():(e.clearBuffer(n),n.addEventListener("updateend",(function(){t()})))}),200),n.removeEventListener("updateend",i)}))})):new Promise((function(t){e.clearBuffer(n),n.addEventListener("updateend",(function(){t()}))})),i.push(s)},n=0;n0?(setTimeout(i,200),r--):t():(e.clearBuffer(n),n.addEventListener("updateend",(function(){t()})))}),200),n.removeEventListener("updateend",i)}))})):new Promise((function(t){e.clearBuffer(n),n.addEventListener("updateend",(function(){t()}))})),i.push(s)},n=0;n=500?this.currentKBps:0}}]),e}(),ue="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le="function"==typeof Symbol&&"symbol"===ue(Symbol.iterator)?function(e){return void 0===e?"undefined":ue(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":void 0===e?"undefined":ue(e)},he=function(){function e(e,t){for(var i=0;i4&&void 0!==arguments[4]?arguments[4]:0,a=arguments[5];if(!this._destroyed)return this.loading=!0,this.fetch(this.url,t,a).then((function(o){if(!n._destroyed&&n.emit(ce.LOADER_RESPONSE_HEADERS,n.TAG,o.headers),o.ok)return n.status=o.status,Promise.resolve().then((function(){n._onFetchResponse(o)})),Promise.resolve(o);i-- >0?n._retryTimer=setTimeout((function(){return n.emit(ce.LOADER_RETRY,n.TAG,{response:o,reason:"response not ok",retryTime:r-i}),n.internalLoad(e,t,i,r,s,a)}),s):(n.loading=!1,n.emit(ce.LOADER_ERROR,n.TAG,{code:o.status||21,message:o.status+" ("+o.statusText+")"}))})).catch((function(o){if(n._destroyed)n.loading=!1;else if(i-- >0)n._retryTimer=setTimeout((function(){return n.emit(ce.LOADER_RETRY,n.TAG,{error:o,reason:"fetch error",retryTime:r-i}),n.internalLoad(e,t,i,r,s,a)}),s);else{if(n.loading=!1,o&&"AbortError"===o.name)return;n.emit(ce.LOADER_ERROR,n.TAG,Object.assign({code:21},o))}}))}},{key:"load",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.retryCount,n=i.retryDelay,s=i.loadTimeout;r=void 0===r?3:r,this.url=e,this._canceled=!1;var a=this.getParams(t);return this.internalLoad(e,a,r,r,n,s)}},{key:"_onFetchResponse",value:function(e){var t=this,i=this,r=this._context.getInstance(this.buffer);this._loaderTaskNo++;var n=this._loaderTaskNo;if(!0===e.ok)switch(this.readtype){case 2:e.json().then((function(e){i.loading=!1,i._canceled||i._destroyed||(r?(r.push(e),i.emit(ce.LOADER_COMPLETE,r)):i.emit(ce.LOADER_COMPLETE,e))}));break;case 1:e.text().then((function(e){i.loading=!1,i._canceled||i._destroyed||(r?(r.push(e),i.emit(ce.LOADER_COMPLETE,r)):i.emit(ce.LOADER_COMPLETE,e))}));break;case 3:e.arrayBuffer().then((function(e){i.loading=!1,i._canceled||i._destroyed||(r?(r.push(new Uint8Array(e)),t._speed.addBytes(e.byteLength),i.emit(ce.LOADER_COMPLETE,r)):i.emit(ce.LOADER_COMPLETE,e))})).catch((function(){}));break;case 0:default:return this._onReader(e.body.getReader(),n)}}},{key:"_onReader",value:function(e,t){var i=this,r=this._context.getInstance(this.buffer);if(!r&&this._reader||this._destroyed)try{this._reader.cancel()}catch(e){}this._reader=e,!1!==this.loading&&(this._noDataTimer=setTimeout((function(){!1!==i.loading&&i.emit(ce.LOADER_COMPLETE)}),3e3),this._reader&&this._reader.read().then((function(n){if(clearTimeout(i._noDataTimer),!i._canceled&&!i._destroyed)return n.done?(i.loading=!1,i.status=0,void Promise.resolve().then((function(){i.emit(ce.LOADER_COMPLETE,r)}))):(r.push(n.value),i._speed.addBytes(n.value.byteLength),Promise.resolve().then((function(){i.emit(ce.LOADER_DATALOADED,r)})),i._onReader(e,t));if(i._reader)try{i._reader.cancel()}catch(e){}})).catch((function(e){clearTimeout(i._noDataTimer),i.loading=!1,e&&"AbortError"===e.name||i.emit(ce.LOADER_ERROR,i.TAG,e)})))}},{key:"getParams",value:function(e){var t=Object.assign({},e),i=new Headers,r={method:"GET",headers:i,mode:"cors",cache:"default"};if("object"===le(this.configs.headers)){var n=this.configs.headers;for(var s in n)n.hasOwnProperty(s)&&i.append(s,n[s])}if("object"===le(t.headers)){var a=t.headers;for(var o in a)a.hasOwnProperty(o)&&i.append(o,a[o])}return!1===t.cors&&(r.mode="same-origin"),t.withCredentials&&(r.credentials="include"),r}},{key:"cancel",value:function(){if(this._reader){try{this._reader.cancel()}catch(e){}this._reader=null,this.loading=!1}clearTimeout(this._noDataTimer),this._canceled=!0,this.abortController&&this.abortController.abort()}},{key:"destroy",value:function(){this._destroyed=!0,clearTimeout(this._retryTimer),clearTimeout(this._noDataTimer),this.cancel(),this._speed.reset()}},{key:"currentSpeed",get:function(){return this._speed.lastSamplingKBps}}],[{key:"isSupported",value:function(){return!!window.fetch}},{key:"type",get:function(){return"loader"}}]),e}(),fe=function(){function e(e,t){for(var i=0;i=1?(this.retrytimes--,this._onError(_e.LOADER_ERROR,e,t,!1)):this.retrytimes<=1&&(this._player.emit("error",{code:t.code,errorType:"network",ex:"["+e+"]: "+t.message,errd:{}}),this._onError(_e.LOADER_ERROR,e,t,!0),this.emit(ge.RETRY_TIME_EXCEEDED),this.mse.endOfStream())}},{key:"_onDemuxError",value:function(e,t,i){void 0===i&&(i=!0),this._player.emit("error",{code:t.code,errorType:"network",ex:"["+e+"]: "+(t?t.message:""),errd:{}}),this._onError(_e.LOADER_ERROR,e,t,i)}},{key:"_onRemuxError",value:function(e,t,i){void 0===i&&(i=!0),this._player.emit("error",{errorType:"parse",ex:"["+e+"]: "+t.message,errd:{}}),this._onError(ve.REMUX_ERROR,e,t,i)}},{key:"_handleMseError",value:function(e,t,i){void 0===i&&(i=!1),this._player.emit("error",{errorType:"format",ex:"["+e+"]: "+t.message,errd:{}}),this._onError(be.MSE_ERROR,e,t,i)}},{key:"_handleSEIParsed",value:function(e){this._player.emit("SEI_PARSED",e)}},{key:"_onLoadComplete",value:function(e){if("M3U8_BUFFER"===e.TAG){var t=void 0;try{this.m3u8Text=e.shift();var i=Te.exec(this.m3u8Text);i&&i[2]?this.load(i[2]):t=this._player.hlsOps.M3U8Parser.parse(this.m3u8Text,this.url)}catch(e){this._onError("M3U8_PARSER_ERROR","M3U8_PARSER",e,!1)}if(!t)return void(this.retrytimes>0?(this.retrytimes--,this._preload()):(this.emit(ge.RETRY_TIME_EXCEEDED),this.mse.endOfStream()));try{this._playlist.pushM3U8(t,!0)}catch(e){this._onError("M3U8_PARSER_ERROR","PLAYLIST",e,!1)}if(this._playlist.encrypt&&this._playlist.encrypt.uri&&!this._playlist.encrypt.key){var r=this._player.hlsOps.XgBuffer;this._context.registry("DECRYPT_BUFFER",r)(),this._context.registry("KEY_BUFFER",r)(),this._tsloader.buffer="DECRYPT_BUFFER",this._keyLoader=this._context.registry("KEY_LOADER",de)({buffer:"KEY_BUFFER",readtype:3});var n=this._player.config.retry||{},s=n.count,a=n.delay;this.emitTo("KEY_LOADER",_e.LADER_START,this._playlist.encrypt.uri,{},s,a)}else this._m3u8Loaded(t)}else"TS_BUFFER"===e.TAG?(this.retrytimes=this.configs.retrytimes||3,this._playlist.downloaded(this._tsloader.url,!0),this.emit(me.DEMUX_START)):"DECRYPT_BUFFER"===e.TAG?(this.retrytimes=this.configs.retrytimes||3,this._playlist.downloaded(this._tsloader.url,!0),this.emitTo("CRYPTO",Ee.START_DECRYPT)):"KEY_BUFFER"===e.TAG&&(this.retrytimes=this.configs.retrytimes||3,this._playlist.encrypt.key=e.shift(),this._crypto=this._context.registry("CRYPTO",ie)({key:this._playlist.encrypt.key,iv:this._playlist.encrypt.ivb,method:this._playlist.encrypt.method,inputbuffer:"DECRYPT_BUFFER",outputbuffer:"TS_BUFFER"}),this._crypto.on(Ee.DECRYPTED,this._onDcripted.bind(this)))}},{key:"_handleFetchRetry",value:function(e,t){this._player.emit("retry",Object.assign({tag:e},t))}},{key:"_onDcripted",value:function(){this.emit(me.DEMUX_START)}},{key:"_m3u8Loaded",value:function(e){this.preloadTime||(this.preloadTime=this._playlist.targetduration?this._playlist.targetduration:5),this._playlist.fragLength>0&&this._playlist.sequence0?(this.retrytimes--,this._preload()):(this.emit(ge.RETRY_TIME_EXCEEDED),this.mse.endOfStream())}},{key:"_checkStatus",value:function(){if(!(this.retrytimes<1&&Date.now()-this._lastCheck<4e3))if(this.retrytimes<1&&clearInterval(this._timmer),this._lastCheck=(new Date).getTime(),this.container.buffered.length<1)this._preload();else{var e=this.container.currentTime,t=this.container.buffered.start(this.container.buffered.length-1);this.container.readyState<=2&&(ei-this.preloadTime&&this._preload()}}},{key:"_preload",value:function(){if(!this._tsloader.loading&&!this._m3u8loader.loading){var e=this._playlist.getTs(),t=this._player.config.retry||{},i=t.count,r=t.delay;if(!e||e.downloaded||e.downloading){var n=this.preloadTime?this.preloadTime:0,s=(new Date).getTime();(!e||e.downloaded)&&(s-this._m3u8lasttime)/1e3>n&&(this._m3u8lasttime=s,this.emitTo("M3U8_LOADER",_e.LADER_START,this.url,{},i,r))}else this._playlist.downloading(e.url,!0),this.emitTo("TS_LOADER",_e.LADER_START,e.url,{},i,r)}}},{key:"load",value:function(e){this.url=e,this._preload()}},{key:"destroy",value:function(){clearInterval(this._timmer),this.off(_e.LOADER_COMPLETE,this._onLoadComplete),this.off(ve.INIT_SEGMENT,this.mse.addSourceBuffers),this.off(ve.MEDIA_SEGMENT,this.mse.doAppend),this.off(me.METADATA_PARSED,this._onMetadataParsed),this.off(me.DEMUX_COMPLETE,this._onDemuxComplete),this.mse=null,this.m3u8Text=null}}]),e}(),ke=function(){function e(e,t){for(var i=0;i>>5}},{key:"parseFrameHeader",value:function(t,i,r,n,s){var a,o=void 0,u=t.length;if(a=e.getHeaderLength(t,i),o=e.getFullFrameLength(t,i),(o-=a)>0&&i+a+o<=u)return{headerLength:a,frameLength:o,stamp:r+n*s}}},{key:"appendFrame",value:function(t,i,r,n,s){var a=e.getFrameDuration(t),o=e.parseFrameHeader(i,r,n,s,a);if(o){var u=o.stamp,l=o.headerLength,h=o.frameLength;return{sample:{unit:i.subarray(r+l,r+l+h),pts:u,dts:u},length:h+l}}}}]),e}(),we=function(){function e(e,t){for(var i=0;i>>32-t;if(e>32)throw new Error("Cannot read more than 32 bits at a time");return this._currentWordBitsLeft-=t,this._currentWordBitsLeft>0?this._currentWord<<=t:this._totalBytes-this._bufferIndex>0&&this._fillCurrentWord(),(t=e-t)>0&&this._currentWordBitsLeft?i<>>e))return this._currentWord<<=e,this._currentWordBitsLeft-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}},{key:"readUEG",value:function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1}},{key:"readSEG",value:function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}},{key:"readSliceType",value:function(){return this.readByte(),this.readUEG(),this.readUEG()}}]),e}(),Le=function(){function e(e,t){for(var i=0;i=2&&3===t[s]&&0===t[s-1]&&0===t[s-2]||(r[n]=t[s],n++);return new Uint8Array(r.buffer,0,n)}},{key:"parseSPS",value:function(t){var i=e._ebsp2rbsp(t),r=new Oe(i);r.readByte();var n=r.readByte();r.readByte();var s=r.readByte();r.readUEG();var a=e.getProfileString(n),o=e.getLevelString(s),u=1,l=420,h=8;if((100===n||110===n||122===n||244===n||44===n||83===n||86===n||118===n||128===n||138===n||144===n)&&(3===(u=r.readUEG())&&r.readBits(1),u<=3&&(l=[0,420,422,444][u]),h=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool()))for(var c=3!==u?8:12,d=0;d0&&O<16?(S=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][O-1],k=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][O-1]):255===O&&(S=r.readByte()<<8|r.readByte(),k=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){var L=r.readBits(32),x=r.readBits(32);D=r.readBool(),A=(R=x)/(w=2*L)}}var U=1;1===S&&1===k||(U=S/k);var M=0,C=0;0===u?(M=1,C=2-m):(M=3===u?1:2,C=(1===u?2:1)*(2-m));var B=16*(_+1),P=16*(v+1)*(2-m);B-=(g+E)*M,P-=(b+T)*C;var I=Math.ceil(B*U);return r.destroy(),r=null,{profile_string:a,level_string:o,bit_depth:h,chroma_format:l,chroma_format_string:e.getChromaFormatString(l),frame_rate:{fixed:D,fps:A,fps_den:w,fps_num:R},par_ratio:{width:S,height:k},codec_size:{width:B,height:P},present_size:{width:I,height:P}}}},{key:"_skipScalingList",value:function(e,t){for(var i=8,r=8,n=0;n=1?Me.EBSP2SODB(Me.EBSP2RBSP(e.slice(1))):null}},{key:"parse",value:function(t){var i=e._resolveNalu(t),r=e.switchPayloadType(i),n=r.payloadType,s=r.offset,a=i.slice(s);switch(n){case 5:return e.user_data_unregistered(a);default:return{code:n,content:a}}}},{key:"switchPayloadType",value:function(e){for(var t=new DataView(e.buffer),i=0,r=0;255===t.getUint8(r);)r++,i+=255;return{payloadType:i+=t.getUint8(r++),offset:r}}},{key:"getPayloadLength",value:function(e){for(var t=new DataView(e.buffer),i=0,r=0;255===t.getUint8(r);)r++,i+=255;return{payloadLength:i+=t.getUint8(r++),offset:r}}},{key:"user_data_unregistered",value:function(t){var i=e.getPayloadLength(t),r=i.payloadLength,n=i.offset;if(r<16)return{uuid:"",content:null};var s=t.slice(n);return{code:5,uuid:Be(s.slice(0,16)),content:Be(s.slice(16,r))}}}]),e}(),Ie=function(){function e(e,t){for(var i=0;i=r))break;var n=t.buffer.slice(t.position,t.position+4);t.skip(4);var s=new Uint8Array(t.buffer.slice(t.position,t.position+r));t.skip(r);var a={header:n,body:s};e.analyseNal(a),a.type<=9&&0!==a.type&&i.push(a)}return i}},{key:"analyseNal",value:function(e){var t=31&e.body[0];switch(e.type=t,t){case 1:e.ndr=!0;break;case 5:e.idr=!0;break;case 6:try{e.sei=Pe.parse(e.body)}catch(e){}break;case 7:e.sps=xe.parseSPS(e.body);break;case 8:e.pps=!0}}},{key:"getHeaderPositionAnnexB",value:function(e){for(var t=e.position,i=0,r=e.length;3!==i&&4!==i&&t>>8&255,255&e.byteLength]),r),r+=2,i.set(e,r),i[r+=e.byteLength]=1,r++,i.set(new Uint8Array([t.byteLength>>>8&255,255&t.byteLength]),r),r+=2,i.set(t,r),i}}]),e}(),Ge=function(){function e(e,t){for(var i=0;i>>32-t;if(e>32)throw new Error("Cannot read more than 32 bits at a time");return this._currentWordBitsLeft-=t,this._currentWordBitsLeft>0?this._currentWord<<=t:this._totalBytes-this._bufferIndex>0&&this._fillCurrentWord(),(t=e-t)>0&&this._currentWordBitsLeft?i<>>e))return this._currentWord<<=e,this._currentWordBitsLeft-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}},{key:"readUEG",value:function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1}},{key:"readSEG",value:function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}},{key:"readSliceType",value:function(){return this.readByte(),this.readUEG(),this.readUEG()}}]),e}(),je=function(){function e(e,t){for(var i=0;i=2&&3===t[s]&&0===t[s-1]&&0===t[s-2]||(r[n]=t[s],n++);return new Uint8Array(r.buffer,0,n)}},{key:"parseSPS",value:function(t){var i,r,n,s,a,o,u=e._ebsp2rbsp(t),l=new Ne(u),h=0,c=0,d=0,f=0,p=0,y=0,_=0,v=0,m=0;return l.readByte(),l.readByte(),l.readBits(4),i=l.readBits(3),l.readBits(1),o=e._readProfileTierLevel(l,i),l.readUEG(),3===(r=l.readUEG())&&(h=l.readBits(1)),c=l.readUEG(),d=l.readUEG(),1===(n=l.readBits(1))&&(f=l.readUEG(),p=l.readUEG(),y=l.readUEG(),_=l.readUEG()),s=l.readUEG(),a=l.readUEG(),1===n&&(c-=(v=1!==r&&2!==r||0!==h?1:2)*p+v*f,d-=(m=1===r&&0===h?2:1)*_+m*y),l.destroy(),l=null,{width:c,height:d,general_profile_space:o.general_profile_space,general_tier_flag:o.general_tier_flag,general_profile_idc:o.general_profile_idc,general_level_idc:o.general_level_idc,chromaFormatIdc:r,bitDepthLumaMinus8:s,bitDepthChromaMinus8:a}}},{key:"_readProfileTierLevel",value:function(e,t){var i,r,n,s;i=e.readBits(2)||0,r=e.readBits(1)||0,n=e.readBits(5)||0,e.readBits(16),e.readBits(16),e.readBits(1),e.readBits(1),e.readBits(1),e.readBits(1),e.readBits(16),e.readBits(16),e.readBits(12),s=e.readBits(8)||0;for(var a=[],o=[],u=0;u0&&e.readBits(2*(8-t));for(var l=0;l=1?Xe.EBSP2SODB(Xe.EBSP2RBSP(e.slice(1))):null}},{key:"parse",value:function(t){var i=e._resolveNalu(t),r=e.switchPayloadType(i),n=r.payloadType,s=r.offset,a=i.slice(s);switch(n){case 5:return e.user_data_unregistered(a);default:return{code:n,content:a}}}},{key:"switchPayloadType",value:function(e){for(var t=new DataView(e.buffer),i=0,r=0;255===t.getUint8(r);)r++,i+=255;return{payloadType:i+=t.getUint8(r++),offset:r}}},{key:"getPayloadLength",value:function(e){for(var t=new DataView(e.buffer),i=0,r=0;255===t.getUint8(r);)r++,i+=255;return{payloadLength:i+=t.getUint8(r++),offset:r}}},{key:"user_data_unregistered",value:function(t){var i=e.getPayloadLength(t),r=i.payloadLength,n=i.offset;if(r<16)return{uuid:"",content:null};var s=t.slice(n);return{code:5,uuid:We(s.slice(0,16)),content:We(s.slice(16,r))}}}]),e}(),Ke=function(){function e(e,t){for(var i=0;i=r))break;var n=t.buffer.slice(t.position,t.position+4);t.skip(4);var s=new Uint8Array(t.buffer.slice(t.position,t.position+r));t.skip(r);var a={header:n,body:s};try{e.analyseNal(a)}catch(e){continue}a.type<=40&&i.push(a)}return i}},{key:"analyseNal",value:function(e){var t=e.body[0]>>>1&63;switch(e.type=t,t){case 0:e.slice_trail_n=!0;break;case 1:e.slice_trail_r=!0,e.key=!0;break;case 2:e.slice_tsa_n=!0;break;case 3:e.slice_tsa_r=!0,e.key=!0;break;case 4:e.slice_stsa_n=!0;break;case 5:e.slice_stsa_r=!0,e.key=!0;break;case 6:e.slice_radl_n=!0;break;case 7:e.slice_radl_r=!0,e.key=!0;break;case 8:e.slice_rasl_n=!0;break;case 9:e.slice_rasl_r=!0,e.key=!0;break;case 16:e.slice_bla_w_lp=!0;break;case 17:e.slice_bla_w_radl=!0;break;case 18:e.slice_bla_n_lp=!0;break;case 19:e.slice_idl_w_radl=!0,e.key=!0;break;case 20:e.slice_idr_n_lp=!0,e.key=!0;break;case 21:e.slice_cra_nut=!0,e.key=!0;break;case 32:e.vps=!0;break;case 33:e.sps=Ve.parseSPS(e.body);break;case 34:e.pps=!0;break;case 35:break;case 36:e.aud=!0;break;case 37:e.eob=!0;break;case 38:e.fd=!0;break;case 39:try{e.sei=ze.parse(e.body.slice(1))}catch(e){}break;case 40:e.sei=ze.parse(e.body.slice(1))}}},{key:"getHeaderPositionAnnexB",value:function(e){for(var t=e.position,i=0,r=e.length;3!==i&&4!==i&&t2*s.refSampleDuration&&c<10*s.refSampleDuration){for(var d=Math.floor(c/s.refSampleDuration),f=0;f2*s.refSampleDuration&&!this._videoLargeGap&&(this._videoLargeGap=-1*c,e.doFixLargeGap(n,-1*c))}for(var y=n.length,_=1;_1e4&&(v.dts=m.dts+s.refSampleDuration,v.pts=m.pts+s.refSampleDuration)}var E=n.pop();if(n.length&&(n[n.length-1].duration=E.dts-n[n.length-1].dts),y<4){var b=n[n.length-1],T=(b=b||E).options&&b.options.duration,S=s.refSampleDuration;if(T&&S&&T/S>5)for(var k=b.pts,A=b.dts,D=0;D<3;D++){A+=S,k+=S;var R=Object.assign({},b,{dts:A,pts:k});2===D&&(R.duration=T),n.push(R)}E=null}if(this.videoLastSample){var w=this.videoLastSample;w.duration=l.dts-w.dts,n.unshift(this.videoLastSample)}this.videoLastSample=E,n[n.length-1]&&(this.lastVideoDts=n[n.length-1].dts),this.videoTrack.samples=n}}},{key:"_appendSampleForLastSegment",value:function(e){e&&this.videoLastSample&&this.videoTrack.samples.push(this.videoLastSample)}},{key:"doFixAudio",value:function(t,i){var r=this,n=this.audioTrack,s=n.samples,a=n.meta;if(s&&s.length){this.fixAudioRefSampleDuration(a);for(var o=0,u=s.length;oa.refSampleDuration&&v<10*a.refSampleDuration){var m=Math.floor((f.dts-_)/a.refSampleDuration);pe.warn(this.TAG,"fill "+m+" frames for av align");for(var g=0;g=d&&b<1e4&&c){for(var k=Math.ceil(b/d),A=0;Athis.nextAudioDts?D:this.nextAudioDts,pts:D>this.nextAudioDts?D:this.nextAudioDts,datasize:c.byteLength,filtered:0,data:c};this.filledAudioSamples.push({dts:R.dts,size:R.data.byteLength}),this.audioTrack.samples.unshift(R),p=R}this.emit(Je.DETECT_AUDIO_GAP,b,k)}else S0?(p.dts=this.nextAudioDts,p.pts=this.nextAudioDts):b<0&&S=10*d){var U=Math.round(x/d);if(U>1e3)break;pe.warn(this.TAG,"inject "+U+" audio frame for "+x+" ms gap, index="+O);for(var M=0;M=1&&(e.duration+=1,r.audioUnsyncTime-=1)}));var P=s[s.length-1];this.lastAudioDts=P.dts;var I=P.duration;this.lastAudioSamplesLen=h,this.nextAudioDts=this.lastAudioDts+(I||d),this.lastAudioOriginDts=P.originDts,this.audioTrack.samples=e.sortAudioSamples(s)}}},{key:"fixChangeStreamVideo",value:function(e){pe.log(this.TAG,"fixChangeStreamVideo(), changeIdx=",e);var t=this.videoTrack.samples,i=0===e?this.lastVideoDts?this.lastVideoDts:this.getStreamChangeStart(t[0]):t[e-1].dts,r=t[e].dts,n=Math.abs(i-r)<=1e4;if(this.emit(Je.DETECT_CHANGE_STREAM,"video",r),n)return t[e].options?t[e].options.isContinue=!0:t[e].options={isContinue:!0},!1;this.emit(Je.DETECT_CHANGE_STREAM_DISCONTINUE,"video",{prevDts:i,curDts:r});var s=t.slice(0,e),a=t.slice(e),o=t[e],u=void 0;return this._videoLargeGap=0,this.videoLastSample=null,this.lastVideoDts=null,u=o.options&&void 0!==o.options.start?o.options.start:i-this.videoDtsBase,this.videoTrack.samples=t.slice(0,e),this.doFixVideo(!1),this.videoTrack.samples=t.slice(e),this.doFixVideo(!1,u),this.videoTrack.samples=s.concat(a),!0}},{key:"fixChangeStreamAudio",value:function(e){pe.log(this.TAG,"fixChangeStreamAudio(), changeIdx=",e);var t=this.audioTrack.samples,i=0===e?this.lastAudioDts:t[e-1].dts,r=t[e].dts,n=Math.abs(i-r)<=1e4;if(this.emit(Je.DETECT_CHANGE_STREAM,"audio",r),n)return t[e].options?t[e].options.isContinue=!0:t[e].options={isContinue:!0},!1;this.emit(Je.DETECT_CHANGE_STREAM_DISCONTINUE,"audio",{prevDts:i,curDts:r}),this._audioLargeGap=0;var s=this.nextAudioDts;this.nextAudioDts=null;var a=t.slice(0,e),o=t.slice(e),u=t[e],l=void 0;return u.options&&void 0!==u.options.start?l=u.options.start:(l=s,u.options.isContinue=!0),this.audioTrack.samples=a,this.doFixAudio(!1),this.audioTrack.samples=o,this.doFixAudio(!1,l),this.audioTrack.samples=a.concat(o),!0}},{key:"getFirstSample",value:function(){var t=this.videoTrack.samples,i=this.audioTrack.samples,r=!1,n=!1;return!this._firstVideoSample&&t.length&&(this._firstVideoSample=e.findFirstVideoSample(t),this.removeInvalidSamples(),r=!0),!this._firstAudioSample&&i.length&&(this._firstAudioSample=e.findFirstAudioSample(i),this.removeInvalidSamples(),n=!0),{isFirstVideoSamples:r,isFirstAudioSamples:n}}},{key:"fixVideoRefSampleDuration",value:function(t,i){if(t){var r=this.allVideoSamplesCount,n=this._firstVideoSample.dts,s=this.filledVideoSamples.length;if(e.isRefSampleDurationValid(t.refSampleDuration)){if(t.refSampleDuration&&i.length>=5){var a=(i[i.length-1].dts-i[0].dts)/(i.length-1);if(a>0&&a<1e3){var o=Math.floor(Math.abs(t.refSampleDuration-a)<=5?t.refSampleDuration:a);e.isRefSampleDurationValid(o)&&(t.refSampleDuration=o)}}}else if(i.length>=1){var u=i[i.length-1].dts,l=Math.floor((u-n)/(r+s-1));e.isRefSampleDurationValid(l)&&(t.refSampleDuration=l)}e.isRefSampleDurationValid(t.refSampleDuration)||(t.refSampleDuration=66)}}},{key:"fixAudioRefSampleDuration",value:function(e){e&&(e.refSampleDuration=1024*e.timescale/e.sampleRate)}},{key:"recordSamplesCount",value:function(){var e=this.audioTrack,t=this.videoTrack;this.allAudioSamplesCount+=e.samples.length,this.allVideoSamplesCount+=t.samples.length}},{key:"removeInvalidSamples",value:function(){var e=this.audioTrack.samples[0],t=this.videoTrack.samples[0];e&&(this.audioTrack.samples=this.audioTrack.samples.filter((function(t,i){return t===e||t.dts>=e.dts}))),t&&(this.videoTrack.samples=this.videoTrack.samples.filter((function(e,i){return e===t||e.dts>=t.dts})))}},{key:"getStreamChangeStart",value:function(e){return e.options&&e.options.start?e.options.start-this.dtsBase:1/0}},{key:"tracks",get:function(){return this._context.getInstance("TRACKS")}},{key:"audioTrack",get:function(){return this.tracks&&this.tracks.audioTrack?this.tracks.audioTrack:{samples:[],meta:{}}}},{key:"videoTrack",get:function(){return this.tracks&&this.tracks.videoTrack?this.tracks.videoTrack:{samples:[],meta:{}}}},{key:"dtsBase",get:function(){var e=this._context.getInstance("MP4_REMUXER");return e?e._dtsBase:0}},{key:"audioDtsBase",get:function(){var e=this._context.getInstance("MP4_REMUXER");return e&&null!==e._audioDtsBase?e._audioDtsBase:this.dtsBase}},{key:"videoDtsBase",get:function(){var e=this._context.getInstance("MP4_REMUXER");return e&&null!==e._videoDtsBase?e._videoDtsBase:this.dtsBase}}],[{key:"sortAudioSamples",value:function(e){return 1===e.length?e:[].concat(Qe(e)).sort((function(e,t){return e.dts-t.dts}))}},{key:"isRefSampleDurationValid",value:function(e){return e&&e>0&&!Number.isNaN(e)}},{key:"findFirstAudioSample",value:function(t){return t&&0!==t.length?e.sortAudioSamples(t)[0]:null}},{key:"findFirstVideoSample",value:function(e){if(!e.length)return null;for(var t=[].concat(Qe(e)).sort((function(e,t){return e.dts-t.dts})),i=0,r=t.length;i=1e3||t-e>=1e3}}},{key:"detectAudioLargeGap",value:function(e,t){if(null!==e)return e-t>=1e3||t-e>=1e3}},{key:"doFixLargeGap",value:function(e,t){for(var i=0,r=e.length;i=1&&71!==i.array[0][i.offset];)i.shift(1);if(!(i.length<188)){var a=i.shift(188),o=new b(a.buffer),u={};t.read(o,u,n);var l=s[u.header.pid];u.pes?(u.pes.codec=u.header.codec,u.pes.streamType=u.header.streamType,s[u.header.pid]||(s[u.header.pid]=[]),s[u.header.pid].push(u.pes),u.pes.ES.buffer=[u.pes.ES.buffer]):l&&l[l.length-1].ES.buffer.push(u.payload.stream)}}for(var h=Object.assign({},e),c=Object.assign({},e),d=r&&this._hasVideoMeta&&!this._hasAudioMeta,f=r&&this._hasAudioMeta&&!this._hasVideoMeta,p=0;p=9)){var b=E.body.byteLength;E.idr&&(m=!0),E.sei||(_.set(new Uint8Array([b>>>24&255,b>>>16&255,b>>>8&255,255&b]),v),v+=4,_.set(E.body,v),v+=b)}}var T=parseInt(e.dts/90),S=parseInt(e.pts/90);h.length&&h.forEach((function(e){e.dts=T,r.emit(t.EVENTS.SEI_PARSED,e)}));var k=new G({dts:T,pts:S,cts:S-T,originDts:e.dts,purePts:e.purePts,isKeyframe:m,data:_,nals:n,options:i,firstInGop:m,gopId:m?++this.gopId:this.gopId});this.emit(t.EVENTS.VIDEO_SAMPLE_PARSED,k)}},{key:"pushVideoSampleHEVC",value:function(e,i){var r=this,n=at.getNalunits(e.ES.buffer);n=n.filter((function(e){return e.body&&e.body.length}));var s=new B;s.streamType=36;for(var a=0,o=!1,u=!1,l=!1,h=[],c=!1,d=!1,f=!1,p=!1,y=0;y40)){if(T.vps){if(c)continue;c=!0}else if(T.sps){if(d)continue;d=!0}else if(T.pps){if(f)continue;f=!0}else if(T.key);else if(0===T.type);else if(35===T.type)continue;var S=T.body.byteLength;T.key&&(E=!0),m.set(new Uint8Array([S>>>24&255,S>>>16&255,S>>>8&255,255&S]),g),g+=4,m.set(T.body,g),g+=S}}var k=parseInt(e.dts/90),A=parseInt(e.pts/90);h&&h.forEach((function(e){e.dts=k,r.emit(t.EVENTS.SEI_PARSED,e)}));var D=new G({dts:k,pts:A,cts:A-k,originDts:e.dts,purePts:e.purePts,isKeyframe:E,data:m,nals:n,options:i,firstInGop:p,gopId:p?++this.gopId:this.gopId});this.emit(t.EVENTS.VIDEO_SAMPLE_PARSED,D)}},{key:"destroy",value:function(){this.removeAllListeners(),this.configs={},this.demuxing=!1,this.pat=[],this.pmt=[],this._hasVideoMeta=!1,this._hasAudioMeta=!1}}],[{key:"compareArray",value:function(e,t,i){var r=0,n=0;if("Uint8Array"===i?(r=e.byteLength,n=t.byteLength):"Array"===i&&(r=e.length,n=t.length),r!==n)return!1;for(var s=0;s0){var c=u[0].streamType;t.Media(e,i,c)}else i.unknownPIDs=!0}}}},{key:"readHeader",value:function(e,t){var i={};i.sync=e.readUint8();var r=e.readUint16();i.error=r>>>15,i.payload=r>>>14&1,i.priority=r>>>13&1,i.pid=8191&r,r=e.readUint8(),i.scrambling=r>>6&3,i.adaptation=r>>4&3,i.continuity=15&r,i.packet=0===i.pid?"PAT":"MEDIA",t.header=i}},{key:"PAT",value:function(e,t,i){var r={},n=e.readUint8();e.skip(n),n=e.readUint8(),r.tabelID=n,n=e.readUint16(),r.error=n>>>7,r.zero=n>>>6&1,r.sectionLength=4095&n,r.streamID=e.readUint16(),r.current=1&e.readUint8(),r.sectionNumber=e.readUint8(),r.lastSectionNumber=e.readUint8();for(var s=(r.sectionLength-9)/4,a=[],o=0;o0&&(i.pat=i.pat.concat(a)),r.list=a,r.program=e.readUint16(),r.pid=8191&e.readUint16(),t.payload=r}},{key:"PMT",value:function(e,t,i){t.header.packet="PMT";var r=e.position;r+=e.getUint8(r);var n=(r+=1)+3+((15&e.getUint8(r+1))<<8|e.getUint8(r+2))-4;r+=12+((15&e.getUint8(r+10))<<8|e.getUint8(r+11));for(var s=[];r0)){var u=e.readUint8();n.discontinue=u>>>7,n.access=u>>>6&1,n.priority=u>>>5&1,n.PCR=u>>>4&1,n.OPCR=u>>>3&1,n.splicePoint=u>>>2&1,n.transportPrivate=u>>>1&1,n.adaptationField=1&u;var l=e.position;if(1===n.PCR&&(n.programClockBase=e.readUint32()<<1,u=e.readUint16(),n.programClockBase|=u>>>15,n.programClockExtension=511&u),1===n.OPCR&&(n.originProgramClockBase=e.readUint32()<<1,u=e.readUint16(),n.originProgramClockBase+=u>>>15,n.originProgramClockExtension=511&u),1===n.splicePoint&&(n.spliceCountdown=e.readUint8()),1===n.transportPrivate)for(var h=e.readUint8(),c=[],d=0;d>>6&1,v=p>>>5&1;1===p>>>7&&(p=e.readUint16(),n.ltwValid=p>>>15,n.ltwOffset=61439&p),1===_&&(p=e.readUint24(),n.piecewiseRate=4194303&p),1===v&&(p=e.readInt8(),n.spliceType=p>>>4,n.dtsNextAU1=p>>>1&7,n.marker1=1&p,p=e.readUint16(),n.dtsNextAU2=p>>>1,n.marker2=1&p,p=e.readUint16(),n.dtsNextAU3=p),e.skip(f-1-(e.position-y))}var m=n.adaptationLength-1-(e.position-l);e.skip(m)}n.stream=new b(e.buffer.slice(e.position)),t.payload=n}},{key:"PES",value:function(e){var i={},r=e.payload.stream;if(1!==r.readUint24())i.ES={},i.ES.buffer=r;else{var n=r.readUint8();n>=224&&n<=239&&(i.type="video"),n>=192&&n<=223&&(i.type="audio");var s=r.readUint16();if(i.packetLength=s,"video"!==i.type&&"audio"!==i.type)throw new Error("format is not supported");var a=r.readUint8();if(2!==a>>>6)throw new Error("error when parse pes header");a=r.readUint8(),i.ptsDTSFlag=a>>>6,i.escrFlag=a>>>5&1,i.esRateFlag=a>>>4&1,i.dsmFlag=a>>>3&1,i.additionalFlag=a>>>2&1,i.crcFlag=a>>>1&1,i.extensionFlag=1&a,i.pesHeaderLength=r.readUint8();var o=i.pesHeaderLength,u=[];u.push(r.readUint8()),u.push(r.readUint8()),u.push(r.readUint8()),u.push(r.readUint8()),u.push(r.readUint8());var l=536870912*(14&u[0])+4194304*(255&u[1])+16384*(254&u[2])+128*(255&u[3])+(254&u[4])/2;if(i.purePts=l,r.dataview.position-=5,u=[],a=r.readUint8(),u.push(a>>>1&7),a=r.readUint16(),u.push(a>>>1),a=r.readUint16(),u.push(a>>>1),i.pts=u[0]<<30|u[1]<<15|u[2],o-=5,"video"===i.type&&(i.dts=i.pts),3===i.ptsDTSFlag){var h=[];a=r.readUint8(),h.push(a>>>1&7),a=r.readUint16(),h.push(a>>>1),a=r.readUint16(),h.push(a>>>1),i.dts=h[0]<<30|h[1]<<15|h[2],o-=5}if(1===i.escrFlag){var c=[],d=[];a=r.readUint8(),c.push(a>>>3&7),c.push(3&a),a=r.readUint16(),c.push(a>>>13),c.push(3&a),a=r.readUint16(),c.push(a>>>13),d.push(3&a),a=r.readUint8(),d.push(a>>>1),i.escr=300*(c[0]<<30|c[1]<<28|c[2]<<15|c[3]<<13|c[4])+(d[0]<<7|d[1]),o-=6}if(1===i.esRateFlag&&(a=r.readUint24(),i.esRate=a>>>1&4194303,o-=3),1===i.dsmFlag)throw new Error("not support DSM_trick_mode");if(1===i.additionalFlag&&(a=r.readUint8(),i.additionalCopyInfo=127&a,o-=1),1===i.crcFlag&&(i.pesCRC=r.readUint16(),o-=2),1===i.extensionFlag)throw new Error("not support extension");o>0&&r.skip(o),i.dts>i.pts&&(i.dts=i.pts),i.ES=t.ES(r,i.type,e.header.streamType)}return i}},{key:"ES",value:function(e,i,r){var n={};if("video"===i)n.buffer=e;else{if("audio"!==i)throw new Error("ES "+i+" is not supported");15!==r&&17!==r||(n=t.parseADTSHeader(e)),n.buffer=e}return n}},{key:"parseADTSHeader",value:function(e){var i={},r=e.readUint16();if(r>>>4!=4095)throw new Error("aac ES parse Error");return i.id=0==(r>>>3&1)?"MPEG-4":"MPEG-2",i.layer=r>>>1&3,i.absent=1&r,r=e.readUint16(),i.audioObjectType=1+(r>>>14&3),i.profile=i.audioObjectType-1,i.frequencyIndex=r>>>10&15,i.frequence=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350][i.frequencyIndex],i.channel=r>>>6&7,i.frameLength=(3&r)<<11|e.readUint16()>>>5,t.getAudioConfig(i),e.skip(1),i.buffer=e,i}},{key:"TSDT",value:function(e,t,i){t.payload={}}},{key:"CAT",value:function(e,t,i){var r={};r.tableID=e.readUint8();var n=e.readUint16();r.sectionIndicator=n>>>7,r.sectionLength=4095&n,e.skip(2),n=e.readUint8(),r.version=n>>>3,r.currentNextIndicator=1&n,r.sectionNumber=e.readUint8(),r.lastSectionNumber=e.readUint8();this.sectionLength;r.crc32=e.readUint32(),t.payload=r}},{key:"getAudioConfig",value:function(e){var t=navigator.userAgent.toLowerCase(),i=void 0,r=void 0;e.originAudioObjectType=e.audioObjectType,/firefox/i.test(t)?e.frequencyIndex>=8?(e.audioObjectType=5,i=new Array(4),r=e.frequencyIndex-3):(e.audioObjectType=2,i=new Array(2),r=e.frequencyIndex):-1!==t.indexOf("android")?(e.audioObjectType=2,i=new Array(2),r=e.frequencyIndex):(e.audioObjectType=5,i=new Array(4),e.frequencyIndex>=6?r=e.frequencyIndex-3:(1===e.channel&&(e.audioObjectType=2,i=new Array(2)),r=e.frequencyIndex)),i[0]=e.audioObjectType<<3,i[0]|=(14&e.frequencyIndex)>>1,i[1]=(1&e.frequencyIndex)<<7,i[1]|=e.channel<<3,5===e.audioObjectType&&(i[1]|=(14&r)>>1,i[2]=(1&r)<<7,i[2]|=8,i[3]=0),e.audioConfig=i}}]),t}(et),lt=function(){function e(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:"",r={duration:0};if(t&&t.split){var n=t.split(/\r|\n/),s=(n=n.filter((function(e){return e}))).shift();if(!s.match("#EXTM3U"))throw new Error('Invalid m3u8 file: not "#EXTM3U"');s=n.shift();for(var a=!1,o=0;s;){var u=s.match(/#(.[A-Z|-]*):(.*)/),l=s.match(/#(.[A-Z|-]*)/);if(l&&u&&u.length>2)switch(u[1]){case"EXT-X-VERSION":r.version=parseInt(u[2]);break;case"EXT-X-MEDIA-SEQUENCE":r.sequence=parseInt(u[2]);break;case"EXT-X-TARGETDURATION":r.targetduration=parseFloat(u[2]);break;case"EXTINF":o=e.parseFrag(u,n,r,i,a,o),a=!1;break;case"EXT-X-KEY":e.parseDecrypt(u[2],r)}if(l&&l.length>1)switch(l[1]){case"EXT-X-DISCONTINUITY":a=!0;break;case"EXT-X-ENDLIST":var h=r.frags[r.frags.length-1];h.isLast=!0,r.end=!0}s=n[o++]}return r}}},{key:"parseFrag",value:function(e,t,i,r,n,s){i.frags||(i.frags=[]);var a=new X({start:i.duration,duration:parseInt(1e3*parseFloat(e[2]))});if(a.duration<200)return s;i.duration+=a.duration;var o=t[s++];if((o.match(/#(.*):(.*)/)||o.match(/^#/))&&(o=t[s++]),a.url=function(e,t){if(!t||!e||ft.test(e))return e;var i=pt.exec(t);return i?"/"===e[0]?i[1]+e:i[1]+i[2]+e:e}(o,r),a.discontinue=n,i.frags.length){var u=i.frags[i.frags.length-1];a.id=u.id+1,a.cc=n?u.cc+1:u.cc}else a.id=i.sequence||1,a.cc=0;return i.frags.push(a),s}},{key:"parseDecrypt",value:function(e,t){t.encrypt={};var i=e.split(",");for(var r in i){var n=i[r];if(n.match(/METHOD=(.*)/)&&(t.encrypt.method=n.match(/METHOD=(.*)/)[1]),n.match(/URI="(.*)"/)&&(t.encrypt.uri=n.match(/URI="(.*)"/)[1]),n.match(/IV=0x(.*)/)){var s=n.match(/IV=0x(.*)/)[1],a=Math.ceil(s.length/2);t.encrypt.ivb=new Uint8Array(a);for(var o=a-1;o>=0;o--){var u=parseInt(s.substr(2*o,2),16);t.encrypt.ivb[o]=u}t.encrypt.iv=s}}}},{key:"isHTTPS",value:function(e){return/^https:\/\//i.test(e)}}]),e}(),_t=W((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){for(var t=0,i=arguments.length,r=Array(i>1?i-1:0),n=1;n>24,e>>16&255,e>>8&255,255&e])}},{key:"readAsInt",value:function(e){var t="";return e.forEach((function(e){t+=e.toString(16).padStart(2,"0")})),parseInt(t,16)}}]),e}(),Et=function(){function e(e,t){for(var i=0;i2?n-2:0),a=2;a>16&255,t>>8&255,255&t])}},{key:"ftyp",value:function(){return e.initBox(24,"ftyp",new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]))}},{key:"ftypHEVC",value:function(){return e.initBox(24,"ftyp",new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,100,97,115,104]))}},{key:"moov",value:function(t){var i=t.type,r=t.meta,n=8,s=e.mvhd(r.duration,r.timescale),a=void 0;a="video"===i?e.videoTrak(r):e.audioTrak(r);var o=e.mvex(r.duration,r.timescale||1e3,r.id);return[s,a,o].forEach((function(e){n+=e.byteLength})),e.initBox(n,"moov",s,a,o)}},{key:"mvhd",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,t>>>24&255,t>>>16&255,t>>>8&255,255&t,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 e.initBox(8+r.length,"mvhd",new Uint8Array(r))}},{key:"videoTrak",value:function(t){var i=8,r=e.tkhd({id:1,duration:t.duration,timescale:t.timescale||1e3,width:t.presentWidth,height:t.presentHeight,type:"video"}),n=e.mdia({type:"video",timescale:t.timescale||1e3,duration:t.duration,avcc:t.avcc,parRatio:t.parRatio,width:t.presentWidth,height:t.presentHeight,streamType:t.streamType});return[r,n].forEach((function(e){i+=e.byteLength})),e.initBox(i,"trak",r,n)}},{key:"audioTrak",value:function(t){var i=8,r=e.tkhd({id:2,duration:t.duration,timescale:t.timescale||1e3,width:0,height:0,type:"audio"}),n=e.mdia({type:"audio",timescale:t.timescale||1e3,duration:t.duration,channelCount:t.channelCount,samplerate:t.sampleRate,config:t.config});return[r,n].forEach((function(e){i+=e.byteLength})),e.initBox(i,"trak",r,n)}},{key:"tkhd",value:function(t){var i=t.id,r=t.duration,n=t.width,s=t.height,a=new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,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,s>>>8&255,255&s,0,0]);return e.initBox(8+a.byteLength,"tkhd",a)}},{key:"edts",value:function(t){var i=new gt,r=t.duration,n=t.mediaTime;return i.write(e.size(36),e.type("edts")),i.write(e.size(28),e.type("elst")),i.write(new Uint8Array([0,0,0,1,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,0,0,0,1])),i.buffer}},{key:"mdia",value:function(t){var i=8,r=e.mdhd(t.timescale,t.duration),n=e.hdlr(t.type),s=e.minf(t);return[r,n,s].forEach((function(e){i+=e.byteLength})),e.initBox(i,"mdia",r,n,s)}},{key:"mdhd",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3,i=arguments[1],r=new Uint8Array([0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]);return e.initBox(12+r.byteLength,"mdhd",e.extension(0,0),r)}},{key:"hdlr",value:function(t){var i=[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];return"audio"===t&&(i.splice.apply(i,[8,4].concat([115,111,117,110])),i.splice.apply(i,[24,13].concat([83,111,117,110,100,72,97,110,100,108,101,114,0]))),e.initBox(8+i.length,"hdlr",new Uint8Array(i))}},{key:"minf",value:function(t){var i=8,r="video"===t.type?e.vmhd():e.smhd(),n=e.dinf(),s=e.stbl(t);return[r,n,s].forEach((function(e){i+=e.byteLength})),e.initBox(i,"minf",r,n,s)}},{key:"vmhd",value:function(){return e.initBox(20,"vmhd",new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]))}},{key:"smhd",value:function(){return e.initBox(16,"smhd",new Uint8Array([0,0,0,0,0,0,0,0]))}},{key:"dinf",value:function(){var t=new gt;return t.write(e.size(36),e.type("dinf"),e.size(28),e.type("dref"),new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1])),t.buffer}},{key:"stbl",value:function(t){var i=8,r=e.stsd(t),n=e.stts(),s=e.stsc(),a=e.stsz(),o=e.stco();return[r,n,s,a,o].forEach((function(e){i+=e.byteLength})),e.initBox(i,"stbl",r,n,s,a,o)}},{key:"stsd",value:function(t){var i=void 0;return i="audio"===t.type?e.mp4a(t):36===t.streamType?e.hvc1(t):e.avc1(t),e.initBox(16+i.byteLength,"stsd",e.extension(0,0),new Uint8Array([0,0,0,1]),i)}},{key:"mp4a",value:function(t){var i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,t.samplerate>>8&255,255&t.samplerate,0,0]),r=e.esds(t.config);return e.initBox(8+i.byteLength+r.byteLength,"mp4a",i,r)}},{key:"esds",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[43,146,8,0],i=t.length,r=new gt,n=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return r.write(e.size(8+n.byteLength),e.type("esds"),n),r.buffer}},{key:"avc1",value:function(t){var i=new gt,r=t.width,n=t.height,s=t.parRatio.width,a=t.parRatio.height,o=t.avcc,u=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,r>>8&255,255&r,n>>8&255,255&n,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]),l=new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192]),h=new Uint8Array([s>>24,s>>16&255,s>>8&255,255&s,a>>24,a>>16&255,a>>8&255,255&a]);return i.write(e.size(40+u.byteLength+o.byteLength+l.byteLength),e.type("avc1"),u,e.size(8+o.byteLength),e.type("avcC"),o,e.size(20),e.type("btrt"),l,e.size(16),e.type("pasp"),h),i.buffer}},{key:"hvc1",value:function(t){var i=new gt,r=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,t.width>>8&255,255&t.width,t.height>>8&255,255&t.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255,0,0,0,122,104,118,99,67,1,1,96,0,0,0,144,0,0,0,0,0,93,240,0,252,253,248,248,0,0,15,3,160,0,1,0,24,64,1,12,1,255,255,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,153,152,9,161,0,1,0,45,66,1,1,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,160,2,128,128,45,22,89,153,164,147,43,154,128,128,128,130,0,0,3,0,2,0,0,3,0,50,16,162,0,1,0,7,68,1,193,114,180,98,64]);return i.write(e.size(8+r.byteLength+10),e.type("hvc1"),r,e.size(10),e.type("fiel"),new Uint8Array([1,0])),i.buffer}},{key:"stts",value:function(){var t=new Uint8Array([0,0,0,0,0,0,0,0]);return e.initBox(16,"stts",t)}},{key:"stsc",value:function(){var t=new Uint8Array([0,0,0,0,0,0,0,0]);return e.initBox(16,"stsc",t)}},{key:"stco",value:function(){var t=new Uint8Array([0,0,0,0,0,0,0,0]);return e.initBox(16,"stco",t)}},{key:"stsz",value:function(){var t=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]);return e.initBox(20,"stsz",t)}},{key:"mvex",value:function(t){var i=arguments[2],r=new gt,n=gt.writeUint32(t);return r.write(e.size(56),e.type("mvex"),e.size(16),e.type("mehd"),e.extension(0,0),n,e.trex(i)),r.buffer}},{key:"trex",value:function(t){var i=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]);return e.initBox(8+i.byteLength,"trex",i)}},{key:"moof",value:function(t){var i=8,r=e.mfhd(),n=e.traf(t);return[r,n].forEach((function(e){i+=e.byteLength})),e.initBox(i,"moof",r,n)}},{key:"mfhd",value:function(){var t=gt.writeUint32(e.sequence);return e.sequence+=1,e.initBox(16,"mfhd",e.extension(0,0),t)}},{key:"traf",value:function(t){var i=8,r=e.tfhd(t.id),n=e.tfdt(t.time),s=e.sdtp(t),a=e.trun(t,s.byteLength);return[r,n,a,s].forEach((function(e){i+=e.byteLength})),e.initBox(i,"traf",r,n,a,s)}},{key:"tfhd",value:function(t){var i=gt.writeUint32(t);return e.initBox(16,"tfhd",e.extension(0,0),i)}},{key:"tfdt",value:function(t){return e.initBox(16,"tfdt",e.extension(0,0),gt.writeUint32(t))}},{key:"trun",value:function(t,i){var r=new gt,n=gt.writeUint32(t.samples.length),s=gt.writeUint32(92+16*t.samples.length+i);return r.write(e.size(20+16*t.samples.length),e.type("trun"),new Uint8Array([0,0,15,1]),n,s),t.samples.forEach((function(e){var t=e.flags;r.write(new Uint8Array([e.duration>>>24&255,e.duration>>>16&255,e.duration>>>8&255,255&e.duration,e.size>>>24&255,e.size>>>16&255,e.size>>>8&255,255&e.size,t.isLeading<<2|t.dependsOn,t.isDependedOn<<6|t.hasRedundancy<<4|t.isNonSync,0,0,e.cts>>>24&255,e.cts>>>16&255,e.cts>>>8&255,255&e.cts]))})),r.buffer}},{key:"sdtp",value:function(t){var i=new gt;return i.write(e.size(12+t.samples.length),e.type("sdtp"),e.extension(0,0)),t.samples.forEach((function(e){var t=e.flags,r=t.isLeading<<6|t.dependsOn<<4|t.isDependedOn<<2|t.hasRedundancy;i.write(new Uint8Array([r]))})),i.buffer}},{key:"mdat",value:function(t){var i=new gt,r=8;t.samples.forEach((function(e){r+=e.size})),i.write(e.size(r),e.type("mdat"));var n=new Uint8Array(r),s=0;return n.set(i.buffer,s),s+=8,t.samples.forEach((function(e){e.buffer.forEach((function(e){n.set(e,s),s+=e.byteLength}))})),n}}]),e}();bt.type=function(e){return new Uint8Array([e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)])},bt.sequence=1;var Tt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},St=function(){function e(e,t){for(var i=0;i0;){var h=n.shift(),c=h.isKeyframe,d=h.options;if(!this.isFirstVideo&&d&&d.meta){a=this.remuxInitSegment("video",d.meta),d.meta=null,n.unshift(h),d.isContinue||(this._videoDtsBase=0);break}var f=Math.max(0,h.dts-this.videoDtsBase);-1===s&&(s=f);var p=void 0,y=void 0;void 0!==h.pts&&(p=(y=h.pts-this._dtsBase)-f),void 0!==h.cts&&(y=h.cts+f,p=h.cts);var _={buffer:[],size:0},v=0;if(h.duration)v=h.duration;else if(n.length>=1){v=n[0].dts-this.videoDtsBase-f}else v=o.length>=1?o[o.length-1].duration:this._videoMeta.refSampleDuration;this.videoAllDuration+=v,pe.long&&pe.log(this.TAG,"video dts "+f,"pts "+y,"cts: "+p,c,"originDts "+h.originDts,"duration "+v),v>=0&&(u.samples.push(_),_.buffer.push(h.data),_.size+=h.data.byteLength,o.push({dts:f,cts:p,pts:y,data:h.data,size:h.data.byteLength,isKeyframe:c,duration:v,flags:{isLeading:0,dependsOn:c?2:1,isDependedOn:c?1:0,hasRedundancy:0,isNonSync:c?0:1},originDts:f,type:"video"}),this.mp4Durations[y]=v,this.mp4Durations.keys.push(y)),c&&this.emit(t.EVENTS.RANDOM_ACCESS_POINT,y)}if(this.mp4Durations.keys.length>1e4){var m=this.mp4Durations;this.mp4Durations={},this.mp4Durations.keys=m.keys.slice(-100),this.mp4Durations.keys.forEach((function(e){i.mp4Durations[e]=m[e]}))}o.length&&pe.log(this.TAG,"remux to mp4 video:",[s/1e3,o[o.length-1].dts/1e3]);var g=new gt;if(o.length&&r.meta){var E=bt.moof({id:r.meta.id,time:s,samples:o}),b=bt.mdat(u);g.write(E,b),this.segmentRemuxed("video",g,o[o.length-1].pts-o[0].pts)}if(a&&(this.segmentRemuxed("video",a),n.length))return r.samples=n,this.remuxVideo(r);this.isFirstVideo=!1,this.emit(t.EVENTS.TRACK_REMUXED,"video",g),r.samples=[],r.length=0}}}},{key:"remuxAudio",value:function(e){var i=(e||{}).samples,r=-1,n=[],s=null,a={samples:[]};if(i&&i.length){for(var o=1e4,u=!1;i.length&&o-- >0;){var l=i.shift(),h=l.data,c=l.options;if(!this.isFirstAudio&&c&&c.meta){s=this.remuxInitSegment("audio",c.meta),c.meta=null,i.unshift(l),c.isContinue||(this._audioDtsBase=0);break}var d=Math.max(0,l.dts-this.audioDtsBase),f=l.originDts;u||(r=d,u=!0);var p=0;if(l.duration)p=l.duration;else if(this._audioMeta.refSampleDurationFixed)p=this._audioMeta.refSampleDurationFixed;else if(i.length>=1){p=i[0].dts-this.audioDtsBase-d}else p=n.length>=1?n[n.length-1].duration:this._audioMeta.refSampleDuration;this.audioAllDuration+=p;var y={dts:d,pts:d,cts:0,size:h.byteLength,duration:l.duration?l.duration:p,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,isNonSync:0},isKeyframe:!0,originDts:f,type:"audio"},_={buffer:[],size:0};p>=0&&(_.buffer.push(h),_.size+=h.byteLength,a.samples.push(_),n.push(y))}var v=new gt;if(n.length&&e.meta){pe.log(this.TAG,"remux to mp4 audio:",[r/1e3,n[n.length-1].dts/1e3]);var m=bt.moof({id:e.meta.id,time:r,samples:n}),g=bt.mdat(a);v.write(m,g),this.segmentRemuxed("audio",v,n[n.length-1].dts-n[0].dts)}if(s&&(this.segmentRemuxed("audio",s),i.length))return e.samples=i,this.remuxAudio(e);this.isFirstAudio=!1,this.emit(t.EVENTS.TRACK_REMUXED,"audio",v),e.samples=[],e.length=0}}},{key:"segmentRemuxed",value:function(e,i,r){this.emit(t.EVENTS.MEDIA_SEGMENT,e,i,r)}},{key:"videoDtsBase",get:function(){return null!==this._videoDtsBase?this._videoDtsBase:this._dtsBase},set:function(e){this._videoDtsBase=e}},{key:"audioDtsBase",get:function(){return null!==this._audioDtsBase?this._audioDtsBase:this._dtsBase}}],[{key:"EVENTS",get:function(){return{MEDIA_SEGMENT:"MEDIA_SEGMENT",INIT_SEGMENT:"INIT_SEGMENT",RANDOM_ACCESS_POINT:"RANDOM_ACCESS_POINT",TRACK_REMUXED:"TRACK_REMUXED"}}}]),t}(et),At=function(){function e(e,t){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:0;Dt(this,e),this.TAG="Mp4Remuxer",this._curTime=t,this.remuxer||this.initRemuxer()}return At(e,[{key:"init",value:function(){this.on(Rt.REMUX_MEDIA,this.remux.bind(this)),this.on(Rt.REMUX_METADATA,this.onMetaDataReady.bind(this)),this.on(Rt.DETECT_CHANGE_STREAM,this.resetDtsBase.bind(this)),this.on(Rt.DETECT_FRAG_ID_DISCONTINUE,this.seek.bind(this)),this.on(wt.SEEK,this.seek.bind(this))}},{key:"initRemuxer",value:function(){this.remuxer=new kt({audioMeta:null,videoMeta:null,curTime:this._curTime}),this.remuxer.on(kt.EVENTS.MEDIA_SEGMENT,this.writeToSource.bind(this)),this.remuxer.on(kt.EVENTS.TRACK_REMUXED,this.onTrackRemuxed.bind(this))}},{key:"remux",value:function(){this.remuxer._videoMeta||(this.remuxer._videoMeta=this.videoMeta,this.remuxer._audioMeta=this.audioMeta);var e=this._context.getInstance("TRACKS"),t=e.audioTrack,i=e.videoTrack;return this.remuxer.remux(t,i)}},{key:"resetDtsBase",value:function(){this.remuxer&&this.remuxer.resetDtsBase()}},{key:"seek",value:function(e){this.remuxer&&this.remuxer.seek(e)}},{key:"onMetaDataReady",value:function(e){this.remuxer||this.initRemuxer();var t=void 0;"audio"===e?t=this._context.getInstance("TRACKS").audioTrack:t=this._context.getInstance("TRACKS").videoTrack;var i=this._context.getInstance("PRE_SOURCE_BUFFER"),r=i.getSource(e);r||(r=i.createSource(e)),r.mimetype=t.meta.codec,r.init=this.remuxer.remuxInitSegment(e,t.meta),this.emit(Rt.INIT_SEGMENT,e)}},{key:"onTrackRemuxed",value:function(e){this.emit(Rt.MEDIA_SEGMENT,e)}},{key:"writeToSource",value:function(e,t,i){var r=this._context.getInstance("PRE_SOURCE_BUFFER"),n=r.getSource(e);n||(n=r.createSource(e)),n.data.push(t),i&&(n.bufferDuration=i+(n.bufferDuration||0))}},{key:"destroy",value:function(){this.remuxer&&this.remuxer.destroy(),this.remuxer=null}},{key:"videoMeta",get:function(){return this._context.getInstance("TRACKS").videoTrack.meta}},{key:"audioMeta",get:function(){return this._context.getInstance("TRACKS").audioTrack.meta}}]),e}(),Lt={Mse:se,Tracks:R,RemuxedBufferManager:g,XgBuffer:x,FetchLoader:de,Compatibility:$e,Mp4Remuxer:Ot,Crypto:ie,M3U8Parser:yt,TsDemuxer:ct,Playlist:y},xt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ut=function(){function e(e,t){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:this.config.url;e&&!this.started&&(this._context||(this._context=new $(this,this.hlsOps,Ct)),this.hlsOps||(this.hlsOps={},this.hlsOps=Object.assign(this.hlsOps,Lt),Pt.deepCopy(this.hlsOps,this.config),this._played=!1),this.__core__=this._context.registry("HLS_LIVE_CONTROLLER",Se)({player:this,container:this.video,preloadTime:this.config.preloadTime}),this._context.init(),this.url=e,this.__core__.load(e),this._initEvents(),this.started=!0)}},{key:"play",value:function(){var e=this;if(this._played)return this.src=this.config.url,void this.once("canplay",(function(){e.video.play()}));this._played=!0,Mt(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"play",this).call(this)}},{key:"destroy",value:function(){var e=this;this._context&&this._context.destroy();var t=new Promise((function(t){e.__core__&&e.__core__.mse?e.__core__.mse.destroy().then((function(){setTimeout((function(){t()}),50)})):setTimeout((function(){t()}),50)}));return Mt(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"destroy",this).call(this),t}},{key:"src",set:function(e){var t=this;this.onWaiting=this.onWaiting.bind(this),this.__core__.mse.destroy().then((function(){t._context.destroy(),t._context=null,t.started=!1,t.video.currentTime=0,t.start(e)}))}}],[{key:"isSupported",value:function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}},{key:"install",value:function(t,i){return e.install(t,i)}}]),i}(e);It.install=e.install.bind(e);var Ft=function(){function e(e,t){for(var i=0;i1?(this.retrytimes--,this._onError(jt.LOADER_ERROR,e,t,!1)):this.retrytimes<=1&&(this._onError(jt.LOADER_ERROR,e,t,!0),this.emit(Ht.RETRY_TIME_EXCEEDED),this._player.video&&this._player.video.handleEnded())}},{key:"_onDemuxError",value:function(e,t,i){void 0===i&&(i=!0),this._onError(jt.LOADER_ERROR,e,t,i)}},{key:"_handleSEIParsed",value:function(e){this._player.emit("SEI_PARSED",e)}},{key:"_onLoadComplete",value:function(e){if("M3U8_BUFFER"===e.TAG){var t=void 0;try{this.m3u8Text=e.shift();var i=Yt.exec(this.m3u8Text);i&&i[2]?this.load(i[2]):t=this._player.hlsOps.M3U8Parser.parse(this.m3u8Text,this.url)}catch(e){this._onError("M3U8_PARSER_ERROR","M3U8_PARSER",e,!1)}if(!t)return void(this.retrytimes>0?(this.retrytimes--,this._preload()):(this.emit(Ht.RETRY_TIME_EXCEEDED),this._player.video&&this._player.video.handleEnded()));try{this._playlist.pushM3U8(t,!0)}catch(e){this._onError("M3U8_PARSER_ERROR","PLAYLIST",e,!1)}if(this._playlist.encrypt&&this._playlist.encrypt.uri&&!this._playlist.encrypt.key){var r=this._player.hlsOps,n=r.XgBuffer,s=r.FetchLoader;this._context.registry("DECRYPT_BUFFER",n)(),this._context.registry("KEY_BUFFER",n)(),this._tsloader.buffer="DECRYPT_BUFFER",this._keyLoader=this._context.registry("KEY_LOADER",s)({buffer:"KEY_BUFFER",readtype:3}),this.emitTo("KEY_LOADER",jt.LADER_START,this._playlist.encrypt.uri)}else this._m3u8Loaded(t)}else if("TS_BUFFER"===e.TAG)this.retrytimes=this.configs.retrytimes||3,this._playlist.downloaded(this._tsloader.url,!0),this.emit(Vt.DEMUX_START);else if("DECRYPT_BUFFER"===e.TAG)this.retrytimes=this.configs.retrytimes||3,this._playlist.downloaded(this._tsloader.url,!0),this.emitTo("CRYPTO",Xt.START_DECRYPT);else if("KEY_BUFFER"===e.TAG){var a=this._player.hlsOps.Crypto;this.retrytimes=this.configs.retrytimes||3,this._playlist.encrypt.key=e.shift(),this._crypto=this._context.registry("CRYPTO",a)({key:this._playlist.encrypt.key,iv:this._playlist.encrypt.ivb,method:this._playlist.encrypt.method,inputbuffer:"DECRYPT_BUFFER",outputbuffer:"TS_BUFFER"}),this._crypto.on(Xt.DECRYPTED,this._onDcripted.bind(this))}}},{key:"_onDcripted",value:function(){this.emit(Vt.DEMUX_START)}},{key:"_m3u8Loaded",value:function(e){this.preloadTime||(this.preloadTime=this._playlist.targetduration?this._playlist.targetduration:5),this._playlist.fragLength>0&&this._playlist.sequence0?(this.retrytimes--,this._preload()):(this.emit(Ht.RETRY_TIME_EXCEEDED),this._player.video&&this._player.video.handleEnded())}},{key:"_checkStatus",value:function(){if(!(this.retrytimes<1&&(new Date).getTime()-this._lastCheck<1e4))if(this._lastCheck=(new Date).getTime(),this.container.buffered.length<1)this._preload();else{var e=this.container.currentTime;this.container.readyState<=2&&this._preload(),e>this.container.buffered.end(this.container.buffered.length-1)-this.preloadTime&&this._preload()}}},{key:"_preload",value:function(){if(!this._tsloader.loading&&!this._m3u8loader.loading){var e=this._playlist.getTs();if(!e||e.downloaded||e.downloading){var t=this.preloadTime?this.preloadTime:0,i=(new Date).getTime();(!e||e.downloaded)&&(i-this._m3u8lasttime)/1e3>t&&(this._m3u8lasttime=i,this.emitTo("M3U8_LOADER",jt.LADER_START,this.url))}else this._playlist.downloading(e.url,!0),this.emitTo("TS_LOADER",jt.LADER_START,e.url)}}},{key:"_isHEVC",value:function(e){return e&&"hev1.1.6.L93.B0"===e.codec}},{key:"load",value:function(e){this.url=e,this._preload()}},{key:"destroy",value:function(){clearInterval(this._timmer),this.off(jt.LOADER_COMPLETE,this._onLoadComplete),this.off(Vt.METADATA_PARSED,this._onMetadataParsed),this.off(Vt.DEMUX_COMPLETE,this._onDemuxComplete),this.m3u8Text=null}}]),e}(),zt={Tracks:R,XgBuffer:x,FetchLoader:de,Crypto:ie,M3U8Parser:yt,TsDemuxer:ct,Playlist:y},Kt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},qt=function e(t,i,r){null===t&&(t=Function.prototype);var n=Object.getOwnPropertyDescriptor(t,i);if(void 0===n){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,i,r)}if("value"in n)return n.value;var a=n.get;return void 0!==a?a.call(r):void 0},Zt=function(){function e(e,t){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:this.hlsOps.url;e&&!this.started&&(this.playerInited||this.initPlayer(),this._context||(this._context=new $(Qt)),this.__core__=this._context.registry("HLS_LIVE_CONTROLLER",Wt)({player:this,container:this.video,preloadTime:this.config.preloadTime}),this._context.init(),this.url=e,this.__core__.load(e),qt(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"start",this).call(this,e),this._initEvents(),this.started=!0,this.addLiveFlag())}},{key:"play",value:function(){this.started&&(this._context.destroy(),this._context=new $(Qt),this.__core__=this._context.registry("HLS_LIVE_CONTROLLER",Wt)({player:this,container:this.video,preloadTime:this.config.preloadTime}),this._context.init(),this._initEvents(),this.__core__.load(this.url)),qt(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"play",this).call(this)}},{key:"addLiveFlag",value:function(){if(e.util.addClass(this.root,"xgplayer-is-live"),!e.util.findDom(this.root,"xg-live")){var t=e.util.createDom("xg-live","正在直播",{},"xgplayer-live");this.controls.appendChild(t)}}},{key:"destroy",value:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return new Promise((function(r){qt(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"destroy",e).call(e);var n=e.video,s=e.root;qt(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"destroy",e).call(e,t),n&&n.remove?n.remove():s&&s.removeChild(n),n&&n.destroy(),setTimeout((function(){r()}),50)}))}},{key:"src",set:function(e){this.onWaiting=this.onWaiting.bind(this),this._context.destroy(),this._context=null,this.started=!1,this.video.currentTime=0,this.start(e)}}],[{key:"install",value:function(t,i){return e.install(t,i)}}]),i}(e);Jt.install=e.install.bind(e);var $t=function(){function e(e,t){for(var i=0;i0&&(this.retrytimes--,this.emitTo("M3U8_LOADER",ii.LADER_START,this.url))}}else if("TS_BUFFER"===e.TAG)this._playlist.downloaded(this._tsloader.url,!0),this._demuxer.demux(Object.assign({url:this._tsloader.url},this._playlist._ts[this._tsloader.url]),!0),this._preload(this.mse.container.currentTime);else if("DECRYPT_BUFFER"===e.TAG)this.retrytimes=this.configs.retrytimes||3,this._playlist.downloaded(this._tsloader.url,!0),this.emitTo("CRYPTO",si.START_DECRYPT,Object.assign({url:this._tsloader.url},this._playlist._ts[this._tsloader.url]));else if("KEY_BUFFER"===e.TAG){this.retrytimes=this.configs.retrytimes||3,this._playlist.encrypt.key=e.shift(),this._crypto=this._context.registry("CRYPTO",ie)({key:this._playlist.encrypt.key,iv:this._playlist.encrypt.ivb,method:this._playlist.encrypt.method,inputbuffer:"DECRYPT_BUFFER",outputbuffer:"TS_BUFFER"}),this._crypto.on(si.DECRYPTED,this._onDcripted.bind(this));var r=this._playlist.getTs();r?(this._playlist.downloading(r.url,!0),this.emitTo("TS_LOADER",ii.LADER_START,r.url)):this.retrytimes>0&&(this.retrytimes--,this.emitTo("M3U8_LOADER",ii.LADER_START,this.url))}}},{key:"_onDcripted",value:function(){this.emit(ni.DEMUX_START)}},{key:"seek",value:function(e){for(var t=this._player.video,i=0;i=t.buffered.start(i)&&e0&&(a+=10,(s=this._playlist.getTs(a))&&!(s.time>o)););!s||s.downloading||s.downloaded||(this._logDownSegment(s),this._playlist.downloading(s.url,!0),this.emitTo("TS_LOADER",ii.LADER_START,s.url))}}}},{key:"cleanBuffer",value:function(){var e=this,t=this._player.currentTime,i=this._player.video,r=i.buffered;if(r&&r.length){var n=[0,0],s=i.currentTime;if(r)for(var a=0,o=r.length;a10||r.length>1)&&(this.mse.remove(Math.max(Math.min(t-10,l-10),.1),0),this.bufferClearTimer=setTimeout((function(){e.bufferClearTimer=null}),5e3))}}},{key:"destory",value:function(){this.configs={},this.url="",this.sequence=0,this._playlist=null,this.retrytimes=3,this.container=void 0,this.preloadTime=5,this._lastSeekTime=0,this.m3u8Text=null,this.mse=null,this.off(ii.LOADER_COMPLETE,this._onLoaderCompete),this.off(ii.LOADER_ERROR,this._onLoadError),this.off(ri.INIT_SEGMENT,this._onInitSegment),this.off(ri.MEDIA_SEGMENT,this._onMediaSegment),this.off(ni.METADATA_PARSED,this._onMetadataParsed),this.off(ni.DEMUX_COMPLETE,this._onDemuxComplete),this.off("TIME_UPDATE",this._onTimeUpdate),this.off("WAITING",this._onWaiting)}},{key:"_logDownSegment",value:function(e){e&&(pe.groupEnd(),pe.group(this.TAG,"load "+e.id+": ["+e.time/1e3+" , "+(e.time+e.duration)/1e3+"], downloading: "+e.downloading+" , donwloaded: "+e.downloaded))}}]),e}(),ui="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},li=function(){function e(e,t){for(var i=0;it?(i=u,e.apply(void 0,a)):(r&&window.clearTimeout(r),r=setTimeout((function(){e.apply(void 0,a)}),t))}},fi=f.HlsAllowedEvents,pi=f.REMUX_EVENTS,yi=f.HLS_EVENTS,_i=f.MSE_EVENTS,vi=function(t){function i(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":ui(t))&&"function"!=typeof t?e:t}(this,(i.__proto__||Object.getPrototypeOf(i)).call(this,t));return r.hlsOps={},r.util=e.util,r.util.deepCopy(r.hlsOps,t),r._handleSetCurrentTime=di(r._handleSetCurrentTime.bind(r),200),r.onWaiting=r.onWaiting.bind(r),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":ui(t)));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(i,t),li(i,[{key:"_handleSetCurrentTime",value:function(e){(e=parseFloat(e))!==this.currentTime&&(hi(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"currentTime",e,this),this._context&&this.__core__.seek(e))}},{key:"play",value:function(){var e=this;return this.video.play().catch((function(t){t&&20===t.code&&e.once("canplay",(function(){e.video.play()}))}))}},{key:"replay",value:function(){var e=this;this.__core__.mse.cleanBuffers().then((function(){e.__core__.replay(),ci(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"replay",e).call(e)}))}},{key:"_initEvents",value:function(){var t=this;this.__core__.once(pi.INIT_SEGMENT,(function(){var e=t.__core__.mse;ci(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"start",t).call(t,e.url)})),this.__core__.once(yi.RETRY_TIME_EXCEEDED,(function(){t.emit("error",new e.Errors("network",t.config.url))})),this.__core__.on(_i.SOURCE_UPDATE_END,(function(){t._onSourceUpdateEnd()})),this.once("canplay",(function(){t.config.autoplay&&t.play()}))}},{key:"initHlsBackupEvents",value:function(e,t){var r=this;e.once(pi.INIT_SEGMENT,(function(){if(!r.video.src){console.log("挂载 src blob");var t=e.mse;ci(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"start",r).call(r,t.url)}})),e.once(f.REMUX_EVENTS.MEDIA_SEGMENT,(function(){r.__core__=e,r.__core__.mse.cleanBuffers().then((function(){r.__core__.mse.resetContext(t),r.__core__.mse.doAppend(),r._context=t}))})),e.once(f.LOADER_EVENTS.LOADER_ERROR,(function(){t.destroy()}))}},{key:"_onSourceUpdateEnd",value:function(){if(1===this.video.readyState||2===this.video.readyState){var e=this.detectBufferGap(),t=e.gap,i=e.start,r=e.method;t&&("ceil"===r&&this.currentTimeMath[r](i))&&(this.currentTime=Math[r](i))}}},{key:"start",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.config.url;e&&!this.started&&(this._context||(this._context=new $(this,this.hlsOps,fi)),this.__core__=this._context.registry("HLS_VOD_CONTROLLER",oi)({player:this,container:this.video,preloadTime:this.config.preloadTime}),this._context.init(),this.__core__.load(e),this._initEvents(),this.started=!0)}},{key:"switchURL",value:function(e){this.config.url=e;var t=new $(this,this.hlsOps,fi),i=t.registry("HLS_VOD_CONTROLLER",oi)({player:this,container:this.video,mse:this.__core__.mse,preloadTime:this.config.preloadTime});this.newContext=t,this.newHls=i,t.init(),this._context.destroy(),this.initHlsBackupEvents(i,t),this.__core__.mse.cleanBuffers().then((function(){i.load(e)}))}},{key:"destroy",value:function(){var e=this;return new Promise((function(t){e.__core__&&e.__core__.mse?(e.__core__.mse.destroy().then((function(){e._context&&e._context.destroy(),ci(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"destroy",e).call(e),t()})),setTimeout((function(){t()}),100)):(ci(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"destroy",e).call(e),setTimeout((function(){t()}),50))}))}},{key:"detectBufferGap",value:function(){for(var e=this.video,t={gap:!1,start:-1},i=0===this.currentTime,r=0;r=.5)&&!i)break;var a=n-this.currentTime,o=this.currentTime-s;if(a>.01&&(a<=2||i)){t={gap:!0,start:n,method:"ceil"};break}t=o>.1&&(o<=2||i)?{gap:!0,start:s,method:"floor"}:{gap:!1,start:-1}}return t}},{key:"currentTime",get:function(){return ci(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"currentTime",this)},set:function(e){this._handleSetCurrentTime(e)}},{key:"src",get:function(){return this.currentSrc},set:function(e){var t=this;this.onWaiting=this.onWaiting.bind(this),this.__core__.mse.destroy().then((function(){t._context.destroy(),t._context=null,t.video.src="",t.video.load(),t.started=!1,t.video.currentTime=0,t.paused?t.play():(t.pause(),t.once("canplay",(function(){t.play()}))),t.start(e)}))}},{key:"context",get:function(){return this._context}}],[{key:"isSupported",value:function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}},{key:"install",value:function(t,i){return e.install(t,i)}}]),i}(e),mi=function(){function e(e,t){for(var i=0;i