xgplayer-mp4 3.0.0-alpha.32 → 3.0.0-alpha.34
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/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/mp4Plugin.js +5 -1
- package/es/version.js +1 -1
- package/package.json +1 -1
package/dist/index.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var __defProp=Object.defineProperty,__defNormalProp=(e,t,i)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,__publicField=(e,t,i)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,i),i);!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("xgplayer")):"function"==typeof define&&define.amd?define(["exports","xgplayer"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Mp4Plugin={},e.Player)}(this,(function(e,t){"use strict";var i={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function s(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function n(e,t,s,n,a){if("function"!=typeof s)throw new TypeError("The listener must be a function");var o=new r(s,n||e,a),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function o(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),o.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(i?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=i?i+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,n=s.length,a=new Array(n);r<n;r++)a[r]=s[r].fn;return a},o.prototype.listenerCount=function(e){var t=i?i+e:e,s=this._events[t];return s?s.fn?1:s.length:0},o.prototype.emit=function(e,t,s,r,n,a){var o=i?i+e:e;if(!this._events[o])return!1;var l,h,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,s),!0;case 4:return d.fn.call(d.context,t,s,r),!0;case 5:return d.fn.call(d.context,t,s,r,n),!0;case 6:return d.fn.call(d.context,t,s,r,n,a),!0}for(h=1,l=new Array(c-1);h<c;h++)l[h-1]=arguments[h];d.fn.apply(d.context,l)}else{var u,f=d.length;for(h=0;h<f;h++)switch(d[h].once&&this.removeListener(e,d[h].fn,void 0,!0),c){case 1:d[h].fn.call(d[h].context);break;case 2:d[h].fn.call(d[h].context,t);break;case 3:d[h].fn.call(d[h].context,t,s);break;case 4:d[h].fn.call(d[h].context,t,s,r);break;default:if(!l)for(u=1,l=new Array(c-1);u<c;u++)l[u-1]=arguments[u];d[h].fn.apply(d[h].context,l)}}return!0},o.prototype.on=function(e,t,i){return n(this,e,t,i,!1)},o.prototype.once=function(e,t,i){return n(this,e,t,i,!0)},o.prototype.removeListener=function(e,t,s,r){var n=i?i+e:e;if(!this._events[n])return this;if(!t)return a(this,n),this;var o=this._events[n];if(o.fn)o.fn!==t||r&&!o.once||s&&o.context!==s||a(this,n);else{for(var l=0,h=[],d=o.length;l<d;l++)(o[l].fn!==t||r&&!o[l].once||s&&o[l].context!==s)&&h.push(o[l]);h.length?this._events[n]=1===h.length?h[0]:h:a(this,n)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=i?i+e:e,this._events[t]&&a(this,t)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=i,o.EventEmitter=o,e.exports=o}(i);var s,r=i.exports,n={};Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){for(var t=0,i=arguments.length,s=Array(i>1?i-1:0),r=1;r<i;r++)s[r-1]=arguments[r];var n=!0,a=!1,o=void 0;try{for(var l,h=s[Symbol.iterator]();!(n=(l=h.next()).done);n=!0){var d=l.value;t+=d.length}}catch(v){a=!0,o=v}finally{try{!n&&h.return&&h.return()}finally{if(a)throw o}}var c=new e(t),u=0,f=!0,p=!1,m=void 0;try{for(var g,_=s[Symbol.iterator]();!(f=(g=_.next()).done);f=!0){var y=g.value;c.set(y,u),u+=y.length}}catch(v){p=!0,m=v}finally{try{!f&&_.return&&_.return()}finally{if(p)throw m}}return c};var a=((s=n)&&s.__esModule?s:{default:s}).default;const o="video",l="audio",h="metadata",d="avc",c="hevc",u="aac",f="g7110a",p="g7110m";class m{constructor(){__publicField(this,"id",1),__publicField(this,"type",o),__publicField(this,"codecType",d),__publicField(this,"pid",-1),__publicField(this,"hvcC"),__publicField(this,"codec",""),__publicField(this,"timescale",0),__publicField(this,"formatTimescale",0),__publicField(this,"sequenceNumber",0),__publicField(this,"baseMediaDecodeTime",0),__publicField(this,"baseDts",0),__publicField(this,"duration",0),__publicField(this,"warnings",[]),__publicField(this,"samples",[]),__publicField(this,"pps",[]),__publicField(this,"sps",[]),__publicField(this,"vps",[]),__publicField(this,"fpsNum",0),__publicField(this,"fpsDen",0),__publicField(this,"sarRatio",[]),__publicField(this,"width",0),__publicField(this,"height",0),__publicField(this,"nalUnitSize",4),__publicField(this,"present",!1),__publicField(this,"isVideoEncryption",!1),__publicField(this,"isAudioEncryption",!1),__publicField(this,"isVideo",!0),__publicField(this,"kid",null),__publicField(this,"pssh",null),__publicField(this,"ext")}reset(){this.sequenceNumber=this.width=this.height=this.fpsDen=this.fpsNum=this.duration=this.baseMediaDecodeTime=this.timescale=0,this.codec="",this.present=!1,this.pid=-1,this.pps=[],this.sps=[],this.vps=[],this.sarRatio=[],this.samples=[],this.warnings=[],this.hvcC=null}get firstDts(){return this.samples.length?this.samples[0].dts:null}get firstPts(){return this.samples.length?this.samples[0].pts:null}get samplesDuration(){if(this.samples.length>0){const e=this.samples[0],t=this.samples[this.samples.length-1];return t.dts-e.dts+t.duration}return 0}exist(){return!!(this.pps.length&&this.sps.length&&this.codec)}hasSample(){return!!this.samples.length}get isEncryption(){return this.isVideoEncryption}}class g{constructor(){__publicField(this,"id",2),__publicField(this,"type",l),__publicField(this,"codecType",u),__publicField(this,"pid",-1),__publicField(this,"codec",""),__publicField(this,"sequenceNumber",0),__publicField(this,"sampleDuration",0),__publicField(this,"timescale",0),__publicField(this,"formatTimescale",0),__publicField(this,"baseMediaDecodeTime",0),__publicField(this,"duration",0),__publicField(this,"warnings",[]),__publicField(this,"samples",[]),__publicField(this,"baseDts",0),__publicField(this,"sampleSize",16),__publicField(this,"sampleRate",0),__publicField(this,"channelCount",0),__publicField(this,"objectType",0),__publicField(this,"sampleRateIndex",0),__publicField(this,"config",[]),__publicField(this,"present",!1),__publicField(this,"isVideoEncryption",!1),__publicField(this,"isAudioEncryption",!1),__publicField(this,"kid",null),__publicField(this,"ext")}reset(){this.sequenceNumber=0,this.timescale=0,this.sampleDuration=0,this.sampleRate=0,this.channelCount=0,this.baseMediaDecodeTime=0,this.present=!1,this.pid=-1,this.codec="",this.samples=[],this.config=[],this.warnings=[]}exist(){return!!(this.sampleRate&&this.channelCount&&this.codec&&this.codecType===u)}hasSample(){return!!this.samples.length}get isEncryption(){return this.isAudioEncryption}get firstDts(){return this.samples.length?this.samples[0].dts:null}get firstPts(){return this.samples.length?this.samples[0].pts:null}get samplesDuration(){if(this.samples.length>0){const e=this.samples[0],t=this.samples[this.samples.length-1];return t.dts-e.dts+t.duration}return 0}}class _{constructor(e,t,i){__publicField(this,"flag",{}),__publicField(this,"keyframe",!1),__publicField(this,"gopId",0),__publicField(this,"duration",0),__publicField(this,"size",0),__publicField(this,"units",[]),__publicField(this,"chromaFormat",420),this.originPts=this.pts=e,this.originDts=this.dts=t,i&&(this.units=i)}get cts(){return this.pts-this.dts}setToKeyframe(){this.keyframe=!0,this.flag.dependsOn=2,this.flag.isNonSyncSample=0}}class y{constructor(e,t,i,s){__publicField(this,"duration",1024),__publicField(this,"flag",{dependsOn:2,isNonSyncSample:0}),__publicField(this,"keyframe",!0),this.originPts=this.pts=this.dts=e,this.data=t,this.size=t.byteLength,this.sampleOffset=s,i&&(this.duration=i)}}class v{constructor(){__publicField(this,"id",3),__publicField(this,"type",h),__publicField(this,"timescale",0),__publicField(this,"flvScriptSamples",[]),__publicField(this,"seiSamples",[])}exist(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length||!this.timescale)}reset(){this.timescale=0,this.flvScriptSamples=[],this.seiSamples=[]}hasSample(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length)}}const b="undefined"!=typeof window,T=b&&navigator.userAgent.toLocaleLowerCase();b&&/^((?!chrome|android).)*safari/.test(T);const S=b&&T.includes("firefox"),x=b&&T.includes("android");function E(...e){e=e.filter(Boolean);const t=new Uint8Array(e.reduce(((e,t)=>e+t.byteLength),0));let i=0;return e.forEach((e=>{t.set(e,i),i+=e.byteLength})),t}const w=Math.pow(2,32);function k(e,t=0){return(e[t]<<8)+(e[t+1]||0)}function R(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function M(e,t=0){return R(e,t)*w+R(e,t+4)}function L(e){if(!Array.isArray(e)){const t=[];let i="";for(let s=0;s<e.length;s++)s%2&&(i=e[s-1]+e[s],t.push(parseInt(i,16)),i="");return t}return e.map((e=>parseInt(e,16)))}const I=class{static getRateIndexByRate(e){return I.FREQ.indexOf(e)}static parseADTS(e,t){const i=e.length;let s=0;for(;s+2<i&&(255!==e[s]||240!=(246&e[s+1]));)s++;if(s>=i)return;const r=s,n=[],a=(60&e[s+2])>>>2,o=I.FREQ[a];if(!o)throw new Error(`Invalid sampling index: ${a}`);const l=1+((192&e[s+2])>>>6),h=(1&e[s+2])<<2|(192&e[s+3])>>>6,{config:d,codec:c}=I._getConfig(a,h,l);let u,f,p=0;const m=I.getFrameDuration(o);for(;s+7<i;)if(255===e[s]&&240==(246&e[s+1])){if(f=(3&e[s+3])<<11|e[s+4]<<3|(224&e[s+5])>>5,i-s<f)break;u=2*(1&~e[s+1]),n.push({pts:t+p*m,data:e.subarray(s+7+u,s+f)}),p++,s+=f}else s++;return{skip:r,remaining:s>=i?void 0:e.subarray(s),frames:n,samplingFrequencyIndex:a,sampleRate:o,objectType:l,channelCount:h,codec:c,config:d,originCodec:`mp4a.40.${l}`}}static parseAudioSpecificConfig(e){if(!e.length)return;const t=e[0]>>>3,i=(7&e[0])<<1|e[1]>>>7,s=(120&e[1])>>>3,r=I.FREQ[i];if(!r)return;const{config:n,codec:a}=I._getConfig(i,s,t);return{samplingFrequencyIndex:i,sampleRate:r,objectType:t,channelCount:s,config:n,codec:a,originCodec:`mp4a.40.${t}`}}static getFrameDuration(e,t=9e4){return 1024*t/e}static _getConfig(e,t,i){const s=[];let r,n;return S?e>=6?(r=5,n=e-3):(r=2,n=e):x?(r=2,n=e):(r=2===i||5===i?i:5,n=e,e>=6?n=e-3:1===t&&(r=2,n=e)),s[0]=r<<3,s[0]|=(14&e)>>1,s[1]=(1&e)<<7,s[1]|=t<<3,5===r&&(s[1]|=(14&n)>>1,s[2]=(1&n)<<7,s[2]|=8,s[3]=0),{config:s,codec:`mp4a.40.${r}`}}static getSilentFrame(e,t){if("mp4a.40.2"===e){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])}else{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])}}};let C=I;__publicField(C,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);class P{static findBox(e,t,i=0){const s=[];if(!e)return s;let r=0,n="",a=0;for(;e.length>7;){if(r=R(e),n=String.fromCharCode.apply(null,e.subarray(4,8)),a=8,1===r?(r=M(e,8),a+=8):r||(r=e.length),!t[0]||n===t[0]){const o=e.subarray(0,r);if(!(t.length<2))return P.findBox(o.subarray(a),t.slice(1),i+a);s.push({start:i,size:r,headerSize:a,type:n,data:o})}i+=r,e=e.subarray(r)}return s}static tfhd(e){return D(e,!0,((e,t)=>{e.trackId=R(t);let i=4;const s=1&e.flags,r=2&e.flags,n=8&e.flags,a=16&e.flags,o=32&e.flags;s&&(i+=4,e.baseDataOffset=R(t,i),i+=4),r&&(e.sampleDescriptionIndex=R(t,i),i+=4),n&&(e.defaultSampleDuration=R(t,i),i+=4),a&&(e.defaultSampleSize=R(t,i),i+=4),o&&(e.defaultSampleFlags=R(t,i))}))}static sidx(e){return D(e,!0,((e,t)=>{let i=0;e.reference_ID=R(t,i),i+=4,e.timescale=R(t,i),i+=4,0===e.version?(e.earliest_presentation_time=R(t,i),i+=4,e.first_offset=R(t,i),i+=4):(e.earliest_presentation_time=M(t,i),i+=8,e.first_offset=M(t,i),i+=8),i+=2,e.references=[];const s=k(t,i);i+=2;for(let r=0;r<s;r++){const s={};e.references.push(s);let r=R(t,i);i+=4,s.reference_type=r>>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=R(t,i),i+=4,r=R(t,i),i+=4,s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}}))}static moov(e){return D(e,!1,((e,t,i)=>{e.mvhd=P.mvhd(P.findBox(t,["mvhd"],i)[0]),e.trak=P.findBox(t,["trak"],i).map((e=>P.trak(e))),e.pssh=P.pssh(P.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return D(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=R(t,16),e.duration=M(t,20),i+=28):(e.timescale=R(t,8),e.duration=R(t,12),i+=16),e.nextTrackId=R(t,i+76)}))}static trak(e){return D(e,!1,((e,t,i)=>{e.tkhd=P.tkhd(P.findBox(t,["tkhd"],i)[0]),e.mdia=P.mdia(P.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return D(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=R(t,16),e.duration=M(t,24),i+=32):(e.trackId=R(t,8),e.duration=R(t,16),i+=20),e.width=R(t,i+52),e.height=R(t,i+56)}))}static mdia(e){return D(e,!1,((e,t,i)=>{e.mdhd=P.mdhd(P.findBox(t,["mdhd"],i)[0]),e.hdlr=P.hdlr(P.findBox(t,["hdlr"],i)[0]),e.minf=P.minf(P.findBox(t,["minf"],i)[0])}))}static mdhd(e){return D(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=R(t,16),e.duration=M(t,20),i+=28):(e.timescale=R(t,8),e.duration=R(t,12),i+=16);const s=k(t,i);e.language=String.fromCharCode(96+(s>>10&31),96+(s>>5&31),96+(31&s))}))}static hdlr(e){return D(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return D(e,!1,((e,t,i)=>{e.vmhd=P.vmhd(P.findBox(t,["vmhd"],i)[0]),e.smhd=P.smhd(P.findBox(t,["smhd"],i)[0]),e.stbl=P.stbl(P.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return D(e,!0,((e,t)=>{e.graphicsmode=k(t),e.opcolor=[k(t,2),k(t,4),k(t,6)]}))}static smhd(e){return D(e,!0,((e,t)=>{e.balance=k(t)}))}static stbl(e){return D(e,!1,((e,t,i)=>{var s,r,n;e.stsd=P.stsd(P.findBox(t,["stsd"],i)[0]),e.stts=P.stts(P.findBox(t,["stts"],i)[0]),e.ctts=P.ctts(P.findBox(t,["ctts"],i)[0]),e.stsc=P.stsc(P.findBox(t,["stsc"],i)[0]),e.stsz=P.stsz(P.findBox(t,["stsz"],i)[0]),e.stco=P.stco(P.findBox(t,["stco"],i)[0]),e.stco||(e.co64=P.co64(P.findBox(t,["co64"],i)[0]),e.stco=e.co64);const a=null==(n=null==(r=null==(s=e.stsd.entries[0])?void 0:s.sinf)?void 0:r.schi)?void 0:n.tenc.default_IV_size;e.stss=P.stss(P.findBox(t,["stss"],i)[0]),e.senc=P.senc(P.findBox(t,["senc"],i)[0],a)}))}static senc(e,t=8){return D(e,!0,((e,i)=>{let s=0;const r=R(i,s);s+=4,e.samples=[];for(let n=0;n<r;n++){const r={InitializationVector:[]};for(let e=0;e<t;e++)r.InitializationVector[e]=i[s+e];if(s+=t,2&e.flags){r.subsamples=[];const e=k(i,s);s+=2;for(let t=0;t<e;t++){const e={};e.BytesOfClearData=k(i,s),s+=2,e.BytesOfProtectedData=R(i,s),s+=4,r.subsamples.push(e)}}e.samples.push(r)}}))}static pssh(e){return D(e,!0,((e,t)=>{const i=[],s=[];let r=0;for(let a=0;a<16;a++)s.push(A(t[r+a]));if(r+=16,e.version>0){const e=R(t,r);r+=4;for(let s=0;s<(""+e).length;s++)for(let e=0;e<16;e++){const e=t[r];r+=1,i.push(A(e))}}const n=R(t,r);e.data_size=n,r+=4,e.kid=i,e.system_id=s,e.buffer=t}))}static stsd(e){return D(e,!0,((e,t,i)=>{e.entryCount=R(t),e.entries=P.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return P.avc1(e);case"hvc1":case"hev1":return P.hvc1(e);case"mp4a":return P.mp4a(e);case"alaw":case"ulaw":return P.alaw(e);case"enca":return D(e,!1,((e,t,i)=>{e.channelCount=k(t,16),e.samplesize=k(t,18),e.sampleRate=R(t,24)/65536,t=t.subarray(28),e.sinf=P.sinf(P.findBox(t,["sinf"],i)[0]),e.esds=P.esds(P.findBox(t,["esds"],i)[0])}));case"encv":return D(e,!1,((e,t,i)=>{e.width=k(t,24),e.height=k(t,26),e.horizresolution=R(t,28),e.vertresolution=R(t,32),t=t.subarray(78),e.sinf=P.sinf(P.findBox(t,["sinf"],i)[0]),e.avcC=P.avcC(P.findBox(t,["avcC"],i)[0]),e.hvcC=P.hvcC(P.findBox(t,["hvcC"],i)[0]),e.pasp=P.pasp(P.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return D(e,!1,((e,t)=>{let i=6;e.default_IsEncrypted=t[i],i+=1,e.default_IV_size=t[i],i+=1,e.default_KID=[];for(let s=0;s<16;s++)e.default_KID.push(A(t[i])),i+=1}))}static schi(e){return D(e,!1,((e,t,i)=>{e.tenc=P.tenc(P.findBox(t,["tenc"],i)[0])}))}static sinf(e){return D(e,!1,((e,t,i)=>{e.schi=P.schi(P.findBox(t,["schi"],i)[0]),e.frma=P.frma(P.findBox(t,["frma"],i)[0])}))}static frma(e){return D(e,!1,((e,t)=>{e.data_format="";for(let i=0;i<4;i++)e.data_format+=String.fromCharCode(t[i])}))}static avc1(e){return D(e,!1,((e,t,i)=>{const s=F(e,t),r=t.subarray(s);i+=s,e.avcC=P.avcC(P.findBox(r,["avcC"],i)[0]),e.pasp=P.pasp(P.findBox(r,["pasp"],i)[0])}))}static avcC(e){return D(e,!1,((t,i)=>{t.data=e.data,t.configurationVersion=i[0],t.AVCProfileIndication=i[1],t.profileCompatibility=i[2],t.AVCLevelIndication=i[3],t.codec=function(e){let t,i="avc1.";for(let s=0;s<3;s++)t=e[s].toString(16),t.length<2&&(t=`0${t}`),i+=t;return i}([i[1],i[2],i[3]]),t.lengthSizeMinusOne=3&i[4],t.spsLength=31&i[5],t.sps=[];let s=6;for(let e=0;e<t.spsLength;e++){const e=k(i,s);s+=2,t.sps.push(i.subarray(s,s+e)),s+=e}t.ppsLength=i[s],s+=1,t.pps=[];for(let e=0;e<t.ppsLength;e++){const e=k(i,s);s+=2,t.pps.push(i.subarray(s,s+=e)),s+=e}}))}static hvc1(e){return D(e,!1,((e,t,i)=>{const s=F(e,t),r=t.subarray(s);i+=s,e.hvcC=P.hvcC(P.findBox(r,["hvcC"],i)[0]),e.pasp=P.pasp(P.findBox(r,["pasp"],i)[0])}))}static hvcC(e){return D(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const s=i[1];t.generalProfileSpace=s>>6,t.generalTierFlag=(32&s)>>5,t.generalProfileIdc=31&s,t.generalProfileCompatibility=R(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=k(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let r=23,n=0,a=0,o=0;for(let e=0;e<t.numOfArrays;e++){n=63&i[r],a=k(i,r+1),r+=3;const e=[];for(let t=0;t<a;t++)o=k(i,r),r+=2,e.push(i.subarray(r,r+o)),r+=o;32===n?t.vps.push(...e):33===n?t.sps.push(...e):34===n&&t.pps.push(...e)}}))}static pasp(e){return D(e,!1,((e,t)=>{e.hSpacing=R(t),e.vSpacing=R(t,4)}))}static mp4a(e){return D(e,!1,((e,t,i)=>{const s=O(e,t);e.esds=P.esds(P.findBox(t.subarray(s),["esds"],i+s)[0])}))}static esds(e){return D(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,s=0,r=0,n=0;for(;t.length;){for(i=0,n=t[i],s=t[i+1],i+=2;128&s;)r=(127&s)<<7,s=t[i],i+=1;if(r+=127&s,3===n)t=t.subarray(i+3);else{if(4!==n){if(5===n){const s=e.config=t.subarray(i,i+r);let n=(248&s[0])>>3;return 31===n&&s.length>=2&&(n=32+((7&s[0])<<3)+((224&s[1])>>5)),e.objectType=n,e.codec+=n.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[i].toString(16)+".").padStart(3,"0"),t=t.subarray(i+13)}}}))}static alaw(e){return D(e,!1,((e,t)=>{O(e,t)}))}static stts(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;for(let n=0;n<i;n++)s.push({count:R(t,r),delta:R(t,r+4)}),r+=8;e.entryCount=i,e.entries=s}))}static ctts(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;if(1===e.version)for(let n=0;n<i;n++)s.push({count:R(t,r),offset:R(t,r+4)}),r+=8;else for(let n=0;n<i;n++)s.push({count:R(t,r),offset:-(1+~R(t,r+4))}),r+=8;e.entryCount=i,e.entries=s}))}static stsc(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;for(let n=0;n<i;n++)s.push({firstChunk:R(t,r),samplesPerChunk:R(t,r+4),sampleDescriptionIndex:R(t,r+8)}),r+=12;e.entryCount=i,e.entries=s}))}static stsz(e){return D(e,!0,((e,t)=>{const i=R(t),s=R(t,4),r=[];if(!i){let e=8;for(let i=0;i<s;i++)r.push(R(t,e)),e+=4}e.sampleSize=i,e.sampleCount=s,e.entrySizes=r}))}static stco(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;for(let n=0;n<i;n++)s.push(R(t,r)),r+=4;e.entryCount=i,e.entries=s}))}static co64(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;for(let n=0;n<i;n++)s.push(M(t,r)),r+=8;e.entryCount=i,e.entries=s}))}static stss(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;for(let n=0;n<i;n++)s.push(R(t,r)),r+=4;e.entryCount=i,e.entries=s}))}static moof(e){return D(e,!1,((e,t,i)=>{e.mfhd=P.mfhd(P.findBox(t,["mfhd"],i)[0]),e.traf=P.findBox(t,["traf"],i).map((e=>P.traf(e)))}))}static mfhd(e){return D(e,!0,((e,t)=>{e.sequenceNumber=R(t)}))}static traf(e){return D(e,!1,((e,t,i)=>{e.tfhd=P.tfhd(P.findBox(t,["tfhd"],i)[0]),e.tfdt=P.tfdt(P.findBox(t,["tfdt"],i)[0]),e.trun=P.trun(P.findBox(t,["trun"],i)[0])}))}static trun(e){return D(e,!0,((e,t)=>{const{version:i,flags:s}=e,r=t.length,n=e.sampleCount=R(t);let a=4;if(r>a&&1&s&&(e.dataOffset=-(1+~R(t,a)),a+=4),r>a&&4&s&&(e.firstSampleFlags=R(t,a),a+=4),e.samples=[],r>a){let r;for(let o=0;o<n;o++)r={},256&s&&(r.duration=R(t,a),a+=4),512&s&&(r.size=R(t,a),a+=4),1024&s&&(r.flags=R(t,a),a+=4),2048&s&&(r.cts=i?-(1+~R(t,a+4)):R(t,a),a+=4),e.samples.push(r)}}))}static tfdt(e){return D(e,!0,((e,t)=>{1===e.version?e.baseMediaDecodeTime=M(t):e.baseMediaDecodeTime=R(t)}))}static probe(e){return!!P.findBox(e,["ftyp"])}static parseSampleFlags(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}static moovToTrack(e,t,i){var s,r,n,a,o,l,h,d,u,m,g,_,y,v,b,T,S,x,E,w,k,R,M,L,I,P,B,F,O,D,A,U,N,z,j,H;const V=e.trak;if(!V||!V.length)return;const q=V.find((e=>{var t,i;return"vide"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)})),K=V.find((e=>{var t,i;return"soun"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)}));if(q&&t){const i=t,f=null==(s=q.tkhd)?void 0:s.trackId;null!=f&&(i.id=q.tkhd.trackId),i.tkhdDuration=q.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=q.mdia.mdhd.timescale,i.duration=q.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const p=q.mdia.minf.stbl.stsd.entries[0];if(i.width=p.width,i.height=p.height,p.pasp&&(i.sarRatio=[p.pasp.hSpacing,p.pasp.vSpacing]),p.hvcC)i.codecType=c,i.codec=p.hvcC.codec,i.vps=p.hvcC.vps,i.sps=p.hvcC.sps,i.pps=p.hvcC.pps,i.hvcC=p.hvcC.data;else{if(!p.avcC)throw new Error("unknown video stsd entry");i.codec=p.avcC.codec,i.sps=p.avcC.sps,i.pps=p.avcC.pps}i.present=!0,i.ext={},i.ext.stss=null==(a=null==(n=null==(r=q.mdia)?void 0:r.minf)?void 0:n.stbl)?void 0:a.stss,i.ext.ctts=null==(h=null==(l=null==(o=q.mdia)?void 0:o.minf)?void 0:l.stbl)?void 0:h.ctts,p&&"encv"===p.type&&(i.isVideoEncryption=!0,p.default_KID=null==(u=null==(d=p.sinf)?void 0:d.schi)?void 0:u.tenc.default_KID,p.default_IsEncrypted=null==(g=null==(m=p.sinf)?void 0:m.schi)?void 0:g.tenc.default_IsEncrypted,p.default_IV_size=null==(y=null==(_=p.sinf)?void 0:_.schi)?void 0:y.tenc.default_IV_size,i.videoSenc=q.mdia.minf.stbl.senc&&q.mdia.minf.stbl.senc.samples,p.data_format=null==(b=null==(v=p.sinf)?void 0:v.frma)?void 0:b.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=p)}if(K&&i){const t=i,s=null==(T=K.tkhd)?void 0:T.trackId;null!=s&&(t.id=K.tkhd.trackId),t.tkhdDuration=K.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=K.mdia.mdhd.timescale,t.duration=K.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const r=K.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=r.sampleSize,t.sampleRate=r.sampleRate,t.channelCount=r.channelCount,t.present=!0,r.type){case"alaw":t.codecType=t.codec=f,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=p,t.sampleRate=8e3;break;default:t.sampleDuration=C.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=C.getRateIndexByRate(t.sampleRate),t.objectType=(null==(S=r.esds)?void 0:S.objectType)||2,r.esds&&(t.config=Array.from(r.esds.config)),t.codec=(null==(x=r.esds)?void 0:x.codec)||"mp4a.40.2"}t.sampleDuration=C.getFrameDuration(t.sampleRate,t.timescale),t.objectType=(null==(E=r.esds)?void 0:E.objectType)||2,r.esds&&(r.esds.config?t.config=Array.from(r.esds.config):console.warn("esds config is null")),t.codec=(null==(w=r.esds)?void 0:w.codec)||"mp4a.40.2",t.sampleRateIndex=C.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=null==(M=null==(R=null==(k=K.mdia)?void 0:k.minf)?void 0:R.stbl)?void 0:M.stss,t.ext.ctts=null==(P=null==(I=null==(L=K.mdia)?void 0:L.minf)?void 0:I.stbl)?void 0:P.ctts,t.present=!0,r&&"enca"===r.type&&(t.isAudioEncryption=!0,r.data_format=null==(F=null==(B=r.sinf)?void 0:B.frma)?void 0:F.data_format,r.default_KID=null==(D=null==(O=r.sinf)?void 0:O.schi)?void 0:D.tenc.default_KID,r.default_IsEncrypted=null==(U=null==(A=r.sinf)?void 0:A.schi)?void 0:U.tenc.default_IsEncrypted,r.default_IV_size=null==(z=null==(N=r.sinf)?void 0:N.schi)?void 0:z.tenc.default_IV_size,t.audioSenc=K.mdia.minf.stbl.senc&&K.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=r)}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),(null==t?void 0:t.encv)||(null==i?void 0:i.enca)){const e=null==(j=null==t?void 0:t.encv)?void 0:j.default_KID,s=null==(H=null==i?void 0:i.enca)?void 0:H.default_KID,r=e||s?(e||s).join(""):null;t&&(t.kid=r),i&&(i.kid=r)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){var s;const r=null==(s=null==t?void 0:t.samples)?void 0:s.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const s={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((({tfhd:e,tfdt:r,trun:n})=>{if(!e||!n)return;r&&(t&&t.id===e.trackId&&(t.baseMediaDecodeTime=r.baseMediaDecodeTime),i&&i.id===e.trackId&&(i.baseMediaDecodeTime=r.baseMediaDecodeTime));const a=e.defaultSampleSize||0,o=e.defaultSampleDuration||P.evaluateDefaultDuration(t,i,n.samples.length||n.sampleCount);let l=n.dataOffset||0,h=0,d=-1;if(!n.samples.length&&n.sampleCount){s[e.trackId]=[];for(let t=0;t<n.sampleCount;t++)s[e.trackId].push({offset:l,dts:h,duration:o,size:a}),h+=o,l+=a}else s[e.trackId]=n.samples.map(((e,t)=>((e={offset:l,dts:h,pts:h+(e.cts||0),duration:e.duration||o,size:e.size||a,gopId:d,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(d++,e.gopId=d),h+=e.duration,l+=e.size,e)))})),s}static moovToSamples(e){var t,i,s,r,n;const a=e.trak;if(!a||!a.length)return;const o=a.find((e=>{var t,i;return"vide"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)})),l=a.find((e=>{var t,i;return"soun"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)}));if(!o&&!l)return;let h,d;if(o){const e=null==(i=null==(t=o.mdia)?void 0:t.minf)?void 0:i.stbl;if(!e)return;const{stts:s,stsc:r,stsz:n,stco:a,stss:l,ctts:d}=e;if(!(s&&r&&n&&a&&l))return;h=B(s,r,n,a,d,l)}if(l){const e=null==(r=null==(s=l.mdia)?void 0:s.minf)?void 0:r.stbl;if(!e)return;const t=null==(n=l.mdia.mdhd)?void 0:n.timescale,{stts:i,stsc:a,stsz:o,stco:h}=e;if(!(t&&i&&a&&o&&h))return;d=B(i,a,o,h)}return{videoSamples:h,audioSamples:d}}}function B(e,t,i,s,r,n){const a=[],o=null==r?void 0:r.entries,l=t.entries,h=s.entries,d=i.entrySizes,c=null==n?void 0:n.entries;let u,f,p;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),o&&(f=[],o.forEach((({count:e,offset:t})=>{for(let i=0;i<e;i++)f.push(t)})));let m=-1,g=0,_=0,y=0,v=0,b=0,T=l[0].samplesPerChunk,S=l[1]?l[1].firstChunk-1:1/0;return e.entries.forEach((({count:e,delta:t})=>{for(let s=0;s<e;s++)p={dts:g,duration:t,size:d[_]||i.sampleSize,offset:h[y]+b,index:_},c&&(p.keyframe=u[_],p.keyframe&&m++,p.gopId=m),f&&_<f.length&&(p.pts=p.dts+f[_]),a.push(p),g+=t,_++,_<T?b+=p.size:(y++,b=0,y>=S&&(v++,S=l[v+1]?l[v+1].firstChunk-1:1/0),T+=l[v].samplesPerChunk)})),a}function F(e,t){return e.dataReferenceIndex=k(t,6),e.width=k(t,24),e.height=k(t,26),e.horizresolution=R(t,28),e.vertresolution=R(t,32),e.frameCount=k(t,40),e.depth=k(t,74),78}function O(e,t){return e.dataReferenceIndex=k(t,6),e.channelCount=k(t,16),e.sampleSize=k(t,18),e.sampleRate=R(t,24)/65536,28}function D(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const s={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(s.version=e.data[e.headerSize],s.flags=function(e,t=0){return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),s.headerSize+=4),i(s,e.data.subarray(s.headerSize),s.start+s.headerSize),s}const A=function(...e){const t=[];return e.forEach((e=>{t.push(function(e,t,i){const s=String(i),r=t>>0;let n=Math.ceil(r/s.length);const a=[],o=String(e);for(;n--;)a.push(s);return a.join("").substring(0,r-o.length)+o}(Number(e).toString(16),2,0))})),t[0]};class U{constructor(){this.buffer=new Uint8Array(0)}write(...e){const t=this;e.forEach((e=>{e?t.buffer=function(e,...t){let i=0;t.forEach((function(e){i+=e.length}));const s=new e(i);let r=0;return t.forEach((function(e){s.set(e,r),r+=e.length})),s}(Uint8Array,t.buffer,e):window.console.warn(e)}))}static writeUint16(e){return new Uint8Array([e>>8&255,255&e])}static writeUint32(e){return new Uint8Array([e>>24,e>>16&255,e>>8&255,255&e])}}const N=class{static box(e,...t){const i=8+(t=t.filter(Boolean)).reduce(((e,t)=>e+t.byteLength),0),s=new Uint8Array(i);s[0]=i>>24&255,s[1]=i>>16&255,s[2]=i>>8&255,s[3]=255&i,s.set(e,4);let r=8;return t.forEach((e=>{s.set(e,r),r+=e.byteLength})),s}static ftyp(e){return e.find((e=>e.type===o&&e.codecType===c))?N.FTYPHEV1:N.FTYPAVC1}static initSegment(e){return E(N.ftyp(e),N.moov(e))}static pssh(e){const t=new Uint8Array([1,0,0,0].concat([16,119,239,236,192,178,77,2,172,227,60,30,82,226,251,75],[0,0,0,1],L(e.kid),[0,0,0,0]));return N.box(N.types.pssh,t)}static moov(e){if(e[0].useEME&&(e[0].encv||e[0].enca)){e[0].pssh||(e[0].pssh={kid:e[0].kid});const t=this.pssh(e[0].pssh);return N.box(N.types.moov,N.mvhd(e[0].mvhdDurtion||e[0].duration,e[0].mvhdTimecale||e[0].timescale),N.mvex(e),...e.map((e=>N.trak(e))),t)}return N.box(N.types.moov,N.mvhd(e[0].mvhdDurtion||e[0].duration,e[0].mvhdTimecale||e[0].timescale),...e.map((e=>N.trak(e))),N.mvex(e))}static mvhd(e,t=9e4){return N.box(N.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,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]))}static trak(e){return N.box(N.types.trak,N.tkhd(e.id,e.tkhdDuration||0,e.width,e.height),N.mdia(e))}static tkhd(e,t,i=0,s=0){return N.box(N.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,e>>24&255,e>>16&255,e>>8&255,255&e,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,0,0,0,0,0,0,0,0,1,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,i>>8&255,255&i,0,0,s>>8&255,255&s,0,0]))}static mdia(e){return N.box(N.types.mdia,N.mdhd(e.duration,e.timescale),N.hdlr(e.type),N.minf(e))}static mdhd(e,t=9e4){return N.box(N.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,85,196,0,0]))}static hdlr(e){return N.box(N.types.hdlr,N.HDLR_TYPES[e])}static minf(e){return N.box(N.types.minf,e.type===o?N.VMHD:N.SMHD,N.DINF,N.stbl(e))}static stbl(e){const t=[];e&&e.ext&&e.ext.stss&&t.push(N.stss(e.ext.stss.entries));return N.box(N.types.stbl,N.stsd(e),N.STTS,t[0],N.STSC,N.STSZ,N.STCO)}static stsd(e){let t;t="audio"===e.type?e.useEME&&e.enca?N.enca(e):N.mp4a(e):e.useEME&&e.encv?N.encv(e):N.avc1hev1(e);return N.box(N.types.stsd,new Uint8Array([0,0,0,0,0,0,0,1]),t)}static enca(e){const t=e.enca.channelCount,i=e.enca.sampleRate,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>8&255,255&i,0,0]),r=N.esds(e.config),n=N.sinf(e.enca);return N.box(N.types.enca,s,r,n)}static encv(e){const t=e.sps.length>0?e.sps[0]:[],i=e.pps.length>0?e.pps[0]:[],s=e.width,r=e.height,n=e.sarRatio[0],a=e.sarRatio[1],o=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,s>>8&255,255&s,r>>8&255,255&r,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([1,t[1],t[2],t[3],255,225,t.length>>>8&255,255&t.length].concat(...t).concat([1,i.length>>>8&255,255&i.length]).concat(...i)),h=new Uint8Array([0,0,88,57,0,15,200,192,0,4,86,72]),d=N.sinf(e.encv),c=new Uint8Array([n>>24,n>>16&255,n>>8&255,255&n,a>>24,a>>16&255,a>>8&255,255&a]);return N.box(N.types.encv,o,N.box(N.types.avcC,l),N.box(N.types.btrt,h),d,N.box(N.types.pasp,c))}static schi(e){const t=new Uint8Array([]),i=N.tenc(e);return N.box(N.types.schi,t,i)}static tenc(e){const t=new Uint8Array([0,0,0,0,0,0,255&e.default_IsEncrypted,255&e.default_IV_size].concat(L(e.default_KID)));return N.box(N.types.tenc,t)}static sinf(e){const t=new Uint8Array([]),i=new Uint8Array([e.data_format.charCodeAt(0),e.data_format.charCodeAt(1),e.data_format.charCodeAt(2),e.data_format.charCodeAt(3)]),s=new Uint8Array([0,0,0,0,99,101,110,99,0,1,0,0]),r=N.schi(e);return N.box(N.types.sinf,t,N.box(N.types.frma,i),N.box(N.types.schm,s),r)}static avc1hev1(e){const t=e.codecType===c,i=t?N.types.hvc1:N.types.avc1,s=t?N.hvcC(e):N.avcC(e),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,e.width>>8&255,255&e.width,e.height>>8&255,255&e.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,17,17]),s];return t?r.push(N.box(N.types.fiel,new Uint8Array([1,0]))):e.sarRatio&&e.sarRatio.length>1&&r.push(N.pasp(e.sarRatio)),N.box(i,...r)}static avcC(e){const t=[],i=[];let s;return e.sps.forEach((e=>{s=e.byteLength,t.push(s>>>8&255),t.push(255&s),t.push(...e)})),e.pps.forEach((e=>{s=e.byteLength,i.push(s>>>8&255),i.push(255&s),i.push(...e)})),N.box(N.types.avcC,new Uint8Array([1,t[3],t[4],t[5],255,224|e.sps.length].concat(...t).concat([e.pps.length]).concat(...i)))}static hvcC(e){const t=e.hvcC;if(t instanceof ArrayBuffer||t instanceof Uint8Array)return t;const{vps:i,sps:s,pps:r}=e;let n;if(t){const e=t.generalProfileCompatibilityFlags,a=t.generalConstraintIndicatorFlags,o=(i.length&&1)+(s.length&&1)+(r.length&&1);n=[1,t.generalProfileSpace<<6|t.generalTierFlag<<5|t.generalProfileIdc,e>>>24,e>>>16,e>>>8,e,a[0],a[1],a[2],a[3],a[4],a[5],t.generalLevelIdc,240,0,252,252|t.chromaFormatIdc,248|t.bitDepthLumaMinus8,248|t.bitDepthChromaMinus8,0,0,t.numTemporalLayers<<3|t.temporalIdNested<<2|3,o];const l=e=>{n.push(e.length>>8,e.length),n.push(...e)};i.length&&(n.push(160,0,i.length),i.forEach(l)),s.length&&(n.push(161,0,s.length),s.forEach(l)),r.length&&(n.push(162,0,r.length),r.forEach(l))}else n=[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 N.box(N.types.hvcC,new Uint8Array(n))}static pasp([e,t]){return N.box(N.types.pasp,new Uint8Array([e>>24,e>>16&255,e>>8&255,255&e,t>>24,t>>16&255,t>>8&255,255&t]))}static mp4a(e){return N.box(N.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,e.sampleRate>>8&255,255&e.sampleRate,0,0]),e.config.length?N.esds(e.config):void 0)}static esds(e){const t=e.length;return N.box(N.types.esds,new Uint8Array([0,0,0,0,3,23+t,0,0,0,4,15+t,64,21,0,6,0,0,0,218,192,0,0,218,192,5].concat([t]).concat(e).concat([6,1,2])))}static mvex(e){return N.box(N.types.mvex,...e.map((e=>N.trex(e.id))))}static trex(e){return N.box(N.types.trex,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trex1(e){return N.box(N.types.trex,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e,0,0,0,1,0,0,2,0,0,0,0,0,0,1,0,0]))}static trex2(e){return N.box(N.types.trex,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e,0,0,0,1,0,0,4,0,0,0,0,0,2,0,0,0]))}static moof(e){return N.box(N.types.moof,N.mfhd(e[0].samples?e[0].samples[0].gopId:0),...e.map((e=>N.traf(e))))}static mfhd(e){return N.box(N.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static traf(e){const t=N.tfhd(e.id),i=N.tfdt(e,e.baseMediaDecodeTime);let s,r=0;if(e.isVideo&&e.videoSenc&&(s=e.videoSenc,s.forEach((function(e){r+=8,e.subsamples&&e.subsamples.length&&(r+=2,r+=6*e.subsamples.length)}))),e.videoSencLength=r,e.useEME&&(e.isVideoEncryption||e.isAudioEncryption)){if(e.isVideoEncryption){if(e.isVideo){const s=N.saiz(e),r=N.saio(e),n=N.trun1(e),a=N.senc(e);return N.box(N.types.traf,t,i,s,r,n,a)}if(e.isAudioEncryption){const s=N.sbgp(),r=N.saiz(e),n=N.saio(e),a=N.senc(e),o=N.trun1(e);return N.box(N.types.traf,t,i,s,r,n,a,o)}{const s=N.sbgp(),r=N.trun1(e);return N.box(N.types.traf,t,i,s,r)}}if(e.isVideo){const s=N.trun1(e);return N.box(N.types.traf,t,i,s)}{const s=N.sbgp(),r=N.saiz(e),n=N.saio(e),a=N.senc(e),o=N.trun1(e);return N.box(N.types.traf,t,i,s,r,n,a,o)}}{const s=N.sdtp(e),r=76;return N.box(N.types.traf,t,i,s,N.trun(e.samples,s.byteLength+r))}}static sdtp(e){const t=new U;return e.samples.forEach((i=>{t.write(new Uint8Array(e.isVideo?[i.keyframe?32:16]:[16]))})),N.box(N.types.sdtp,this.extension(0,0),t.buffer)}static trun1(e){const t=new U,i=U.writeUint32(e.samples.length);let s=null;if(e.isVideo){const t=e.videoSencLength;s=U.writeUint32(16*e.samples.length+t+149),!e.isVideoEncryption&&e.isAudioEncryption&&(s=U.writeUint32(16*e.samples.length+92))}else{let t=12*e.samples.length+124;e.isAudioEncryption&&(t=12*e.samples.length+8*e.audioSenc.length+177),s=U.writeUint32(t)}return e.samples.forEach((i=>{t.write(U.writeUint32(i.duration)),t.write(U.writeUint32(i.size)),t.write(U.writeUint32(i.keyframe?33554432:65536)),e.isVideo&&t.write(U.writeUint32(i.cts?i.cts:0))})),N.box(N.types.trun,this.extension(0,e.flags),i,s,t.buffer)}static senc(e){const t=new U,i=e.samples.length,s=e.isVideo?16:8,r=e.isVideo?2:0;let n=[],a=0;return e.isVideo?(n=e.videoSenc,a=e.videoSencLength):n=e.audioSenc,a=a||s*i,t.write(U.writeUint32(16+a),N.types.senc,this.extension(0,r)),t.write(U.writeUint32(i)),n.forEach((e=>{for(let i=0;i<e.InitializationVector.length;i++)t.write(new Uint8Array([e.InitializationVector[i]]));e.subsamples&&e.subsamples.length&&(t.write(U.writeUint16(e.subsamples.length)),e.subsamples.forEach((e=>{t.write(U.writeUint16(e.BytesOfClearData)),t.write(U.writeUint32(e.BytesOfProtectedData))})))})),t.buffer}static saio(e){let t=12*e.samples.length+141;!e.isVideo&&e.isAudioEncryption&&(t=149);const i=new Uint8Array([1,0,0,0,0,0,0,1,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t]);return N.box(N.types.saio,i)}static saiz(e){const t=e.samples.length,i=new Uint8Array([0,0,0,0,16,t>>24&255,t>>16&255,t>>8&255,255&t]);return N.box(N.types.saiz,i)}static sbgp(){const e=new Uint8Array([114,111,108,108,0,0,0,1,0,0,1,25,0,0,0,1]);return N.box(N.types.sbgp,this.extension(0,0),e)}static extension(e,t){return new Uint8Array([e,t>>16&255,t>>8&255,255&t])}static tfhd(e){return N.box(N.types.tfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static tfdt(e,t){const i=Math.floor(t/4294967296),s=Math.floor(t%4294967296);return e.useEME&&(e.isVideoEncryption||e.isAudioEncryption)?N.box(N.types.tfdt,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])):N.box(N.types.tfdt,new Uint8Array([1,0,0,0,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s]))}static trun(e,t){const i=e.length,s=12+16*i;t+=8+s;const r=new Uint8Array(s);r.set([0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);for(let n=0;n<i;n++){const{duration:t,size:i,flag:s={},cts:a=0}=e[n];r.set([t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,s.isLeading<<2|(null===s.dependsOn||void 0===s.dependsOn?1:s.dependsOn),s.isDependedOn<<6|s.hasRedundancy<<4|s.paddingValue<<1|(null===s.isNonSyncSample||void 0===s.isNonSyncSample?1:s.isNonSyncSample),61440&s.degradationPriority,15&s.degradationPriority,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12+16*n)}return N.box(N.types.trun,r)}static moovMP4(e){return N.box(N.types.moov,N.mvhd(e[0].duration,e[0].timescale),...e.map((e=>N.trackMP4(e))))}static trackMP4(e){return N.box(N.types.trak,N.tkhd(e.id,e.duration,e.width,e.height),N.mdiaMP4(e))}static mdiaMP4(e){return N.box(N.types.mdia,N.mdhd(e.duration,e.timescale),N.hdlr(e.type),N.minfMP4(e))}static minfMP4(e){return N.box(N.types.minf,e.type===o?N.VMHD:N.SMHD,N.DINF,N.stblMP4(e))}static stblMP4(e){const{ext:t}=e,i=[N.stsd(e),N.stts(t.stts),N.stsc(t.stsc),N.stsz(t.stsz),N.stco(t.stco)];return t.stss.length&&i.push(N.stss(t.stss)),t.ctts.length&&i.push(N.ctts(t.ctts)),N.box(N.types.stbl,...i)}static stts(e){const t=e.length,i=new Uint8Array(8*t);let s=0;return e.forEach((({value:e,count:t})=>{i.set([t>>24,t>>16&255,t>>8&255,255&t,e>>24,e>>16&255,e>>8&255,255&e],s),s+=8})),N.box(N.types.stts,E(new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static stsc(e){const t=e.length,i=new Uint8Array(12*t);let s=0;return e.forEach((({firstChunk:e,samplesPerChunk:t,sampleDescIndex:r})=>{i.set([e>>24,e>>16&255,e>>8&255,255&e,t>>24,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r],s),s+=12})),N.box(N.types.stsc,E(new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static stsz(e){const t=e.length,i=new Uint8Array(4*t);let s=0;return e.forEach((e=>{i.set([e>>24,e>>16&255,e>>8&255,255&e],s),s+=4})),N.box(N.types.stsz,E(new Uint8Array([0,0,0,0,0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static stco(e){const t=e.length,i=new Uint8Array(4*t);let s=0;return e.forEach((e=>{i.set([e>>24,e>>16&255,e>>8&255,255&e],s),s+=4})),N.box(N.types.stco,E(new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static stss(e){const t=e.length,i=new Uint8Array(4*t);let s=0;return e.forEach((e=>{i.set([e>>24,e>>16&255,e>>8&255,255&e],s),s+=4})),N.box(N.types.stss,E(new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static ctts(e){const t=e.length,i=new Uint8Array(8*t);let s=0;return e.forEach((({value:e,count:t})=>{i.set([t>>24,t>>16&255,t>>8&255,255&t,e>>24,e>>16&255,e>>8&255,255&e],s),s+=8})),N.box(N.types.ctts,E(new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static styp(){return N.box(N.types.styp,new Uint8Array([109,115,100,104,0,0,0,0,109,115,100,104,109,115,105,120]))}static sidx(e){const t=e.timescale,i=e.samples[0].duration,s=i*e.samples.length,r=e.samples[0].sampleOffset*i;let n=8;e.samples.forEach((e=>{n+=e.size}));let a=0;if(e.isVideo){let t,i=0;e.videoSenc&&(t=e.videoSenc),e.isVideo&&t.forEach((e=>{i+=8,e.subsamples&&e.subsamples.length&&(i+=2,i+=6*e.subsamples.length)})),e.videoSencLength=i,a=n+141+16*e.samples.length+i,e.useEME&&e.isAudioEncryption&&!e.isVideoEncryption&&(a=n+16*e.samples.length+84)}else a=n+116+12*e.samples.length,e.useEME&&e.isAudioEncryption&&(a=n+169+12*e.samples.length+8*e.audioSenc.length);const o=new Uint8Array([0,0,0,0,0,0,0,255&e.id,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,0,0,0,1,0,a>>16&255,a>>8&255,255&a,s>>24&255,s>>16&255,s>>8&255,255&s,144,0,0,0]);return N.box(N.types.sidx,o)}static mdat(e){return N.box(N.types.mdat,e)}};let z=N;__publicField(z,"types",["avc1","avcC","hvc1","hvcC","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","pasp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trex","tkhd","vmhd","smhd","ctts","stss","styp","pssh","sidx","sbgp","saiz","saio","senc","trun","encv","enca","sinf","btrt","frma","tenc","schm","schi","mehd","fiel","sdtp"].reduce(((e,t)=>(e[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)],e)),Object.create(null))),__publicField(z,"HDLR_TYPES",{video: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]),audio: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])}),__publicField(z,"FTYPAVC1",N.box(N.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]))),__publicField(z,"FTYPHEV1",N.box(N.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,104,101,118,49]))),__publicField(z,"DINF",N.box(N.types.dinf,N.box(N.types.dref,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1])))),__publicField(z,"VMHD",N.box(N.types.vmhd,new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]))),__publicField(z,"SMHD",N.box(N.types.smhd,new Uint8Array([0,0,0,0,0,0,0,0]))),__publicField(z,"StblTable",new Uint8Array([0,0,0,0,0,0,0,0])),__publicField(z,"STTS",N.box(N.types.stts,N.StblTable)),__publicField(z,"STSC",N.box(N.types.stsc,N.StblTable)),__publicField(z,"STSZ",N.box(N.types.stsz,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]))),__publicField(z,"STCO",N.box(N.types.stco,N.StblTable));const j=class{constructor(e,t){this.name=e||"",this._prefix=`[${this.name}]`,j.disabled=t}debug(...e){j.disabled||console.debug(this._prefix,...e)}log(...e){j.disabled||console.log(this._prefix,...e)}warn(...e){j.disabled||console.warn(this._prefix,...e)}error(...e){j.disabled||console.error(this._prefix,...e)}table(...e){j.disabled||(console.group(this._prefix),console.table(...e),console.groupEnd())}static enable(){j.disabled=!1}static disable(){j.disabled=!0}};let H=j;__publicField(H,"disabled",!0);class V{constructor(e,t,i){this.videoTrack=e,this.audioTrack=t;const s=/Chrome\/([^.]+)/.exec(navigator.userAgent);this.forceFirstIDR=s&&Number(s[1])<50,this.log=new H("FMP4Remuxer",!i||!i.openLog||!i.openLog)}remux(e=!1,t={}){const i=this.videoTrack,s=this.audioTrack,r=i.exist(),n=s.exist();let a,o,l;const h=[];let d,c;return e&&(t&&t.initMerge?(r&&h.push(this.videoTrack),n&&h.push(this.audioTrack),l=z.initSegment(h)):(r&&(a=z.initSegment([this.videoTrack])),n&&(o=z.initSegment([this.audioTrack])))),r&&i.hasSample()&&(d=this._remuxVideo()),n&&s.hasSample()&&(c=this._remuxAudio()),i.samples=[],s.samples=[],{initSegment:l,videoInitSegment:a,audioInitSegment:o,videoSegment:d,audioSegment:c}}_remuxVideo(){const e=this.videoTrack;this.forceFirstIDR&&(e.samples[0].flag={dependsOn:2,isNonSyncSample:0});const t=e.samples;let i=0;t.forEach((e=>{i+=e.units.reduce(((e,t)=>e+t.byteLength),0),i+=4*e.units.length}));const s=new Uint8Array(i),r=new DataView(s.buffer);for(let a,o=0,l=t.length,h=0;o<l;o++){a=t[o];let e=0;a.units.forEach((t=>{r.setUint32(h,t.byteLength),h+=4,s.set(t,h),h+=t.byteLength,e+=4+t.byteLength})),a.size=e}const n=z.mdat(s);return E(z.moof([e]),n)}_remuxAudio(){const e=this.audioTrack,t=new Uint8Array(e.samples.reduce(((e,t)=>e+t.size),0));e.samples.reduce(((e,i)=>(t.set(i.data,e),e+i.size)),0);const i=z.mdat(t);return E(z.moof([e]),i)}reset(){this.videoTrack.reset(),this.audioTrack.reset()}}class q{constructor(e,t,i,s){__publicField(this,"_videoSamples",[]),__publicField(this,"_audioSamples",[]),__publicField(this,"_lastRemainBuffer",[]),__publicField(this,"_lastRemainBufferStartPos",0),this.videoTrack=new m,this.audioTrack=new g,this.metadataTrack=i||new v,this.log=new H("MP4Demuxer",!s||!s.openLog||!s.openLog),e&&e.forEach((e=>{this._videoSamples.push(...e.frames)})),t&&t.forEach((e=>{this._audioSamples.push(...e.frames)}))}parseSamples(e){if(!e)throw new Error("moov is required");if(this.videoTrack.codec||this.audioTrack.codec||(P.moovToTrack(e,this.videoTrack,this.audioTrack),this.videoSenc=this.videoTrack.videoSenc,this.audioSenc=this.audioTrack.audioSenc),!this._audioSamples.length&&!this._videoSamples.length){const t=P.moovToSamples(e);if(!t)throw new Error("cannot parse samples from moov box");this._videoSamples=t.videoSamples||[],this._audioSamples=t.audioSamples||[]}}demux(e,t,i,s,r){this.parseSamples(r);const n=this.videoTrack,a=this.audioTrack;let o,l,h;if(n.samples=[],a.samples=[],i){let s,r=0;for(let a=i[0],d=i[1];a<=d;a++){if(o=this._videoSamples[a],!o)throw new Error(`cannot found video frame #${a}`);h=o.offset-t,l=e.subarray(h,h+o.size),s=new _(o.pts||o.dts,o.dts),s.duration=o.duration,s.gopId=o.gopId,o.keyframe&&s.setToKeyframe();let i=0;const d=l.length-1;for(;i<d;)r=R(l,i),i+=4,s.units.push(l.subarray(i,i+r)),i+=r;n.samples.push(s)}n.baseMediaDecodeTime=n.samples[0].dts}if(s){for(let i=s[0],r=s[1];i<=r;i++){if(o=this._audioSamples[i],!o)throw new Error(`cannot found video frame #${i}`);h=o.offset-t,l=e.subarray(h,h+o.size),a.samples.push(new y(o.dts,l,o.duration))}a.baseMediaDecodeTime=a.samples[0].dts}return{videoTrack:n,audioTrack:a,metadataTrack:this.metadataTrack}}demuxPart(e,t,i,s,r,n,a,o){if(this.parseSamples(r),this.videoTrack.useEME=n,this.audioTrack.useEME=n,this._lastRemainBuffer&&this._lastRemainBuffer.byteLength>0&&t>this._lastRemainBufferStartPos&&t<=this._lastRemainBufferStartPos+this._lastRemainBuffer.byteLength){let i=0;for(;i<20;)try{const i=this._lastRemainBuffer.subarray(0,t-this._lastRemainBufferStartPos),s=new Uint8Array(e.byteLength+i.byteLength);s.set(i,0),s.set(new Uint8Array(e),i.byteLength),e=s,t-=i.byteLength,this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0;break}catch(g){if(!(i<20))throw new Error("new Uint8Array error:,"+g.errorMessage);i++}}const l=this.videoTrack,h=this.audioTrack;let d,c,u;l.samples=[],h.samples=[],l.videoSenc=null,h.audioSenc=null;let f=0,p=0;if(this._videoSamples.length>0&&i.length>0){let s;const r=e.byteLength+t;for(let n=i[0];n<=i[1];n++){if(d=this._videoSamples[n],!d)throw new Error(`cannot found video frame #${n}`);d.offset>=t&&d.offset+d.size<=r&&(u=d.offset-t,f=u+d.size,c=e.subarray(u,f),s=new _(d.pts||d.dts,d.dts),s.duration=d.duration,s.gopId=d.gopId,s.sampleOffset=d.index,d.keyframe&&s.setToKeyframe(),s.data=c,s.size=d.size,l.samples.push(s))}l.samples.length>0&&(l.gopId=l.samples[0].gopId,l.baseMediaDecodeTime=l.samples[0].dts,l.startPts=l.samples[0].pts/l.timescale,l.endPts=l.samples[l.samples.length-1].pts/l.timescale,this.videoSenc&&(l.videoSenc=this.videoSenc.slice(l.samples[0].sampleOffset,l.samples[0].sampleOffset+l.samples.length),l.kidValue=a))}if(this._audioSamples.length>0&&s.length>0){for(let i=s[0];i<=s[1];i++){if(d=this._audioSamples[i],!d)throw new Error(`cannot found video frame #${i}`);d.offset>=t&&d.offset+d.size<=e.byteLength+t&&(u=d.offset-t,p=u+d.size,c=e.subarray(u,p),h.samples.push(new y(d.dts,c,d.duration,d.index)))}h.samples.length>0&&(h.gopId=h.samples[0].gopId||l.gopId,h.baseMediaDecodeTime=h.samples[0].dts,h.startPts=h.samples[0].pts/h.timescale,h.endPts=h.samples[h.samples.length-1].pts/h.timescale,this.audioSenc&&(h.audioSenc=this.audioSenc.slice(h.samples[0].sampleOffset,h.samples[0].sampleOffset+h.samples.length),h.kidValue=a))}this.decoderData(l,h,o);let m=0;for(let _=0;_<l.samples.length;_++){let e=0;const t=l.samples[_].data,i=t.length-1;for(;e<i;)m=R(t,e),e+=4,l.samples[_].units.push(t.subarray(e,e+m)),e+=m}return this._lastRemainBuffer=e.subarray(Math.max(f,p)),this._lastRemainBuffer.byteLength>0?this._lastRemainBufferStartPos=t+e.byteLength-this._lastRemainBuffer.byteLength:this._lastRemainBufferStartPos=0,{videoTrack:l,audioTrack:h,metadataTrack:this.metadataTrack}}reset(){this._videoSamples=[],this._audioSamples=[],this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0,this.videoTrack.reset(),this.audioTrack.reset(),this.metadataTrack.reset()}decoderData(e,t,i){!e.useEME&&t.useEME}static probe(e){return P.probe(e)}}class K{static create(...e){return new this(...e)}mixIn(e){return Object.assign(this,e)}clone(){const e=new this.constructor;return Object.assign(e,this),e}}class W extends K{constructor(e=[],t=4*e.length){super();let i=e;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),(i instanceof Int8Array||i instanceof Uint8ClampedArray||i instanceof Int16Array||i instanceof Uint16Array||i instanceof Int32Array||i instanceof Uint32Array||i instanceof Float32Array||i instanceof Float64Array)&&(i=new Uint8Array(i.buffer,i.byteOffset,i.byteLength)),i instanceof Uint8Array){const e=i.byteLength,t=[];for(let s=0;s<e;s+=1)t[s>>>2]|=i[s]<<24-s%4*8;this.words=t,this.sigBytes=e}else this.words=e,this.sigBytes=t}static random(e){const t=[],i=e=>{let t=e,i=987654321;const s=4294967295;return()=>{i=36969*(65535&i)+(i>>16)&s,t=18e3*(65535&t)+(t>>16)&s;let e=(i<<16)+t&s;return e/=4294967296,e+=.5,e*(Math.random()>.5?1:-1)}};for(let s,r=0;r<e;r+=4){const e=i(4294967296*(s||Math.random()));s=987654071*e(),t.push(4294967296*e()|0)}return new W(t,e)}toString(e=Y){return e.stringify(this)}concat(e){const t=this.words,i=e.words,s=this.sigBytes,r=e.sigBytes;if(this.clamp(),s%4)for(let n=0;n<r;n+=1){const e=i[n>>>2]>>>24-n%4*8&255;t[s+n>>>2]|=e<<24-(s+n)%4*8}else for(let n=0;n<r;n+=4)t[s+n>>>2]=i[n>>>2];return this.sigBytes+=r,this}clamp(){const{words:e,sigBytes:t}=this;e[t>>>2]&=4294967295<<32-t%4*8,e.length=Math.ceil(t/4)}clone(){const e=super.clone.call(this);return e.words=this.words.slice(0),e}}const Y={stringify(e){const{words:t,sigBytes:i}=e,s=[];for(let r=0;r<i;r+=1){const e=t[r>>>2]>>>24-r%4*8&255;s.push((e>>>4).toString(16)),s.push((15&e).toString(16))}return s.join("")},parse(e){const t=e.length,i=[];for(let s=0;s<t;s+=2)i[s>>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new W(i,t/2)}},$={stringify(e){const{words:t,sigBytes:i}=e,s=[];for(let r=0;r<i;r+=1){const e=t[r>>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(e))}return s.join("")},parse(e){const t=e.length,i=[];for(let s=0;s<t;s+=1)i[s>>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new W(i,t)}},J={stringify(e){try{return decodeURIComponent(escape($.stringify(e)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:e=>$.parse(unescape(encodeURIComponent(e)))};class X extends K{constructor(){super(),this._minBufferSize=0}reset(){this._data=new W,this._nDataBytes=0}_append(e){let t=e;"string"==typeof t&&(t=J.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_process(e){let t;const{_data:i,blockSize:s}=this,r=i.words,n=i.sigBytes;let a=n/(4*s);a=e?Math.ceil(a):Math.max((0|a)-this._minBufferSize,0);const o=a*s,l=Math.min(4*o,n);if(o){for(let e=0;e<o;e+=s)this._doProcessBlock(r,e);t=r.splice(0,o),i.sigBytes-=l}return new W(t,l)}clone(){const e=super.clone.call(this);return e._data=this._data.clone(),e}}class G extends X{constructor(e){super(),this.blockSize=16,this.cfg=Object.assign(new K,e),this.reset()}static _createHelper(e){return(t,i)=>new e(i).finalize(t)}static _createHmacHelper(e){return(t,i)=>new Q(e,i).finalize(t)}reset(){super.reset.call(this),this._doReset()}update(e){return this._append(e),this._process(),this}finalize(e){e&&this._append(e);return this._doFinalize()}}class Q extends K{constructor(e,t){super();const i=new e;this._hasher=i;let s=t;"string"==typeof s&&(s=J.parse(s));const r=i.blockSize,n=4*r;s.sigBytes>n&&(s=i.finalize(t)),s.clamp();const a=s.clone();this._oKey=a;const o=s.clone();this._iKey=o;const l=a.words,h=o.words;for(let d=0;d<r;d+=1)l[d]^=1549556828,h[d]^=909522486;a.sigBytes=n,o.sigBytes=n,this.reset()}reset(){const e=this._hasher;e.reset(),e.update(this._iKey)}update(e){return this._hasher.update(e),this}finalize(e){const t=this._hasher,i=t.finalize(e);t.reset();return t.finalize(this._oKey.clone().concat(i))}}const Z={stringify(e){const{words:t,sigBytes:i}=e,s=this._map;e.clamp();const r=[];for(let a=0;a<i;a+=3){const e=(t[a>>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255;for(let t=0;t<4&&a+.75*t<i;t+=1)r.push(s.charAt(e>>>6*(3-t)&63))}const n=s.charAt(64);if(n)for(;r.length%4;)r.push(n);return r.join("")},parse(e){let t=e.length;const i=this._map;let s=this._reverseMap;if(!s){this._reverseMap=[],s=this._reverseMap;for(let e=0;e<i.length;e+=1)s[i.charCodeAt(e)]=e}const r=i.charAt(64);if(r){const i=e.indexOf(r);-1!==i&&(t=i)}return((e,t,i)=>{const s=[];let r=0;for(let n=0;n<t;n+=1)if(n%4){const t=i[e.charCodeAt(n-1)]<<n%4*2|i[e.charCodeAt(n)]>>>6-n%4*2;s[r>>>2]|=t<<24-r%4*8,r+=1}return W.create(s,r)})(e,t,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},ee=[];for(let si=0;si<64;si+=1)ee[si]=4294967296*Math.abs(Math.sin(si+1))|0;const te=(e,t,i,s,r,n,a)=>{const o=e+(t&i|~t&s)+r+a;return(o<<n|o>>>32-n)+t},ie=(e,t,i,s,r,n,a)=>{const o=e+(t&s|i&~s)+r+a;return(o<<n|o>>>32-n)+t},se=(e,t,i,s,r,n,a)=>{const o=e+(t^i^s)+r+a;return(o<<n|o>>>32-n)+t},re=(e,t,i,s,r,n,a)=>{const o=e+(i^(t|~s))+r+a;return(o<<n|o>>>32-n)+t};class ne extends G{_doReset(){this._hash=new W([1732584193,4023233417,2562383102,271733878])}_doProcessBlock(e,t){const i=e;for(let E=0;E<16;E+=1){const s=t+E,r=e[s];i[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}const s=this._hash.words,r=i[t+0],n=i[t+1],a=i[t+2],o=i[t+3],l=i[t+4],h=i[t+5],d=i[t+6],c=i[t+7],u=i[t+8],f=i[t+9],p=i[t+10],m=i[t+11],g=i[t+12],_=i[t+13],y=i[t+14],v=i[t+15];let b=s[0],T=s[1],S=s[2],x=s[3];b=te(b,T,S,x,r,7,ee[0]),x=te(x,b,T,S,n,12,ee[1]),S=te(S,x,b,T,a,17,ee[2]),T=te(T,S,x,b,o,22,ee[3]),b=te(b,T,S,x,l,7,ee[4]),x=te(x,b,T,S,h,12,ee[5]),S=te(S,x,b,T,d,17,ee[6]),T=te(T,S,x,b,c,22,ee[7]),b=te(b,T,S,x,u,7,ee[8]),x=te(x,b,T,S,f,12,ee[9]),S=te(S,x,b,T,p,17,ee[10]),T=te(T,S,x,b,m,22,ee[11]),b=te(b,T,S,x,g,7,ee[12]),x=te(x,b,T,S,_,12,ee[13]),S=te(S,x,b,T,y,17,ee[14]),T=te(T,S,x,b,v,22,ee[15]),b=ie(b,T,S,x,n,5,ee[16]),x=ie(x,b,T,S,d,9,ee[17]),S=ie(S,x,b,T,m,14,ee[18]),T=ie(T,S,x,b,r,20,ee[19]),b=ie(b,T,S,x,h,5,ee[20]),x=ie(x,b,T,S,p,9,ee[21]),S=ie(S,x,b,T,v,14,ee[22]),T=ie(T,S,x,b,l,20,ee[23]),b=ie(b,T,S,x,f,5,ee[24]),x=ie(x,b,T,S,y,9,ee[25]),S=ie(S,x,b,T,o,14,ee[26]),T=ie(T,S,x,b,u,20,ee[27]),b=ie(b,T,S,x,_,5,ee[28]),x=ie(x,b,T,S,a,9,ee[29]),S=ie(S,x,b,T,c,14,ee[30]),T=ie(T,S,x,b,g,20,ee[31]),b=se(b,T,S,x,h,4,ee[32]),x=se(x,b,T,S,u,11,ee[33]),S=se(S,x,b,T,m,16,ee[34]),T=se(T,S,x,b,y,23,ee[35]),b=se(b,T,S,x,n,4,ee[36]),x=se(x,b,T,S,l,11,ee[37]),S=se(S,x,b,T,c,16,ee[38]),T=se(T,S,x,b,p,23,ee[39]),b=se(b,T,S,x,_,4,ee[40]),x=se(x,b,T,S,r,11,ee[41]),S=se(S,x,b,T,o,16,ee[42]),T=se(T,S,x,b,d,23,ee[43]),b=se(b,T,S,x,f,4,ee[44]),x=se(x,b,T,S,g,11,ee[45]),S=se(S,x,b,T,v,16,ee[46]),T=se(T,S,x,b,a,23,ee[47]),b=re(b,T,S,x,r,6,ee[48]),x=re(x,b,T,S,c,10,ee[49]),S=re(S,x,b,T,y,15,ee[50]),T=re(T,S,x,b,h,21,ee[51]),b=re(b,T,S,x,g,6,ee[52]),x=re(x,b,T,S,o,10,ee[53]),S=re(S,x,b,T,p,15,ee[54]),T=re(T,S,x,b,n,21,ee[55]),b=re(b,T,S,x,u,6,ee[56]),x=re(x,b,T,S,v,10,ee[57]),S=re(S,x,b,T,d,15,ee[58]),T=re(T,S,x,b,_,21,ee[59]),b=re(b,T,S,x,l,6,ee[60]),x=re(x,b,T,S,m,10,ee[61]),S=re(S,x,b,T,a,15,ee[62]),T=re(T,S,x,b,f,21,ee[63]),s[0]=s[0]+b|0,s[1]=s[1]+T|0,s[2]=s[2]+S|0,s[3]=s[3]+x|0}_doFinalize(){const e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;t[s>>>5]|=128<<24-s%32;const r=Math.floor(i/4294967296),n=i;t[15+(s+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t[14+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process();const a=this._hash,o=a.words;for(let l=0;l<4;l+=1){const e=o[l];o[l]=16711935&(e<<8|e>>>24)|4278255360&(e<<24|e>>>8)}return a}clone(){const e=super.clone.call(this);return e._hash=this._hash.clone(),e}}class ae extends K{constructor(e){super(),this.cfg=Object.assign(new K,{keySize:4,hasher:ne,iterations:1},e)}compute(e,t){let i;const{cfg:s}=this,r=s.hasher.create(),n=W.create(),a=n.words,{keySize:o,iterations:l}=s;for(;a.length<o;){i&&r.update(i),i=r.update(e).finalize(t),r.reset();for(let e=1;e<l;e+=1)i=r.finalize(i),r.reset();n.concat(i)}return n.sigBytes=4*o,n}}class oe extends X{constructor(e,t,i){super(),this.cfg=Object.assign(new K,i),this._xformMode=e,this._key=t,this.reset()}static createEncryptor(e,t){return this.create(this._ENC_XFORM_MODE,e,t)}static createDecryptor(e,t){return this.create(this._DEC_XFORM_MODE,e,t)}static _createHelper(e){const t=e=>"string"==typeof e?_e:me;return{encrypt:(i,s,r)=>t(s).encrypt(e,i,s,r),decrypt:(i,s,r)=>t(s).decrypt(e,i,s,r)}}reset(){super.reset.call(this),this._doReset()}process(e){return this._append(e),this._process()}finalize(e){e&&this._append(e);return this._doFinalize()}}oe._ENC_XFORM_MODE=1,oe._DEC_XFORM_MODE=2,oe.keySize=4,oe.ivSize=4;class le extends K{constructor(e,t){super(),this._cipher=e,this._iv=t}static createEncryptor(e,t){return this.Encryptor.create(e,t)}static createDecryptor(e,t){return this.Decryptor.create(e,t)}}function he(e,t,i){const s=e;let r;const n=this._iv;n?(r=n,this._iv=void 0):r=this._prevBlock;for(let a=0;a<i;a+=1)s[t+a]^=r[a]}class de extends le{}de.Encryptor=class extends de{processBlock(e,t){const i=this._cipher,{blockSize:s}=i;he.call(this,e,t,s),i.encryptBlock(e,t),this._prevBlock=e.slice(t,t+s)}},de.Decryptor=class extends de{processBlock(e,t){const i=this._cipher,{blockSize:s}=i,r=e.slice(t,t+s);i.decryptBlock(e,t),he.call(this,e,t,s),this._prevBlock=r}};const ce={pad(e,t){const i=4*t,s=i-e.sigBytes%i,r=s<<24|s<<16|s<<8|s,n=[];for(let o=0;o<s;o+=4)n.push(r);const a=W.create(n,s);e.concat(a)},unpad(e){const t=e,i=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=i}};class ue extends oe{constructor(e,t,i){super(e,t,Object.assign({mode:de,padding:ce},i)),this.blockSize=4}reset(){let e;super.reset.call(this);const{cfg:t}=this,{iv:i,mode:s}=t;this._xformMode===this.constructor._ENC_XFORM_MODE?e=s.createEncryptor:(e=s.createDecryptor,this._minBufferSize=1),this._mode=e.call(s,this,i&&i.words),this._mode.__creator=e}_doProcessBlock(e,t){this._mode.processBlock(e,t)}_doFinalize(){let e;const{padding:t}=this.cfg;return this._xformMode===this.constructor._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e}}class fe extends K{constructor(e){super(),this.mixIn(e)}toString(e){return(e||this.formatter).stringify(this)}}const pe={stringify(e){let t;const{ciphertext:i,salt:s}=e;return t=s?W.create([1398893684,1701076831]).concat(s).concat(i):i,t.toString(Z)},parse(e){let t;const i=Z.parse(e),s=i.words;return 1398893684===s[0]&&1701076831===s[1]&&(t=W.create(s.slice(2,4)),s.splice(0,4),i.sigBytes-=16),fe.create({ciphertext:i,salt:t})}};class me extends K{static encrypt(e,t,i,s){const r=Object.assign(new K,this.cfg,s),n=e.createEncryptor(i,r),a=n.finalize(t),o=n.cfg;return fe.create({ciphertext:a,key:i,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:n.blockSize,formatter:r.format})}static decrypt(e,t,i,s){let r=t;const n=Object.assign(new K,this.cfg,s);r=this._parse(r,n.format);return e.createDecryptor(i,n).finalize(r.ciphertext)}static _parse(e,t){return"string"==typeof e?t.parse(e,this):e}}me.cfg=Object.assign(new K,{format:pe});const ge={execute(e,t,i,s){let r=s;r||(r=W.random(8));const n=ae.create({keySize:t+i}).compute(e,r),a=W.create(n.words.slice(t),4*i);return n.sigBytes=4*t,fe.create({key:n,iv:a,salt:r})}};class _e extends me{static encrypt(e,t,i,s){const r=Object.assign(new K,this.cfg,s),n=r.kdf.execute(i,e.keySize,e.ivSize);r.iv=n.iv;const a=me.encrypt.call(this,e,t,n.key,r);return a.mixIn(n),a}static decrypt(e,t,i,s){let r=t;const n=Object.assign(new K,this.cfg,s);r=this._parse(r,n.format);const a=n.kdf.execute(i,e.keySize,e.ivSize,r.salt);n.iv=a.iv;return me.decrypt.call(this,e,r,a.key,n)}}_e.cfg=Object.assign(me.cfg,{kdf:ge});const ye=[],ve=[],be=[],Te=[],Se=[],xe=[],Ee=[],we=[],ke=[],Re=[],Me=[];for(let si=0;si<256;si+=1)Me[si]=si<128?si<<1:si<<1^283;let Le=0,Ie=0;for(let si=0;si<256;si+=1){let e=Ie^Ie<<1^Ie<<2^Ie<<3^Ie<<4;e=e>>>8^255&e^99,ye[Le]=e,ve[e]=Le;const t=Me[Le],i=Me[t],s=Me[i];let r=257*Me[e]^16843008*e;be[Le]=r<<24|r>>>8,Te[Le]=r<<16|r>>>16,Se[Le]=r<<8|r>>>24,xe[Le]=r,r=16843009*s^65537*i^257*t^16843008*Le,Ee[e]=r<<24|r>>>8,we[e]=r<<16|r>>>16,ke[e]=r<<8|r>>>24,Re[e]=r,Le?(Le=t^Me[Me[Me[s^t]]],Ie^=Me[Me[Ie]]):(Ie=1,Le=Ie)}const Ce=[0,1,2,4,8,16,32,64,128,27,54];(class extends ue{_doReset(){let e;if(this._nRounds&&this._keyPriorReset===this._key)return;this._keyPriorReset=this._key;const t=this._keyPriorReset,i=t.words,s=t.sigBytes/4;this._nRounds=s+6;const r=4*(this._nRounds+1);this._keySchedule=[];const n=this._keySchedule;for(let o=0;o<r;o+=1)o<s?n[o]=i[o]:(e=n[o-1],o%s?s>6&&o%s==4&&(e=ye[e>>>24]<<24|ye[e>>>16&255]<<16|ye[e>>>8&255]<<8|ye[255&e]):(e=e<<8|e>>>24,e=ye[e>>>24]<<24|ye[e>>>16&255]<<16|ye[e>>>8&255]<<8|ye[255&e],e^=Ce[o/s|0]<<24),n[o]=n[o-s]^e);this._invKeySchedule=[];const a=this._invKeySchedule;for(let o=0;o<r;o+=1){const t=r-o;e=o%4?n[t]:n[t-4],a[o]=o<4||t<=4?e:Ee[ye[e>>>24]]^we[ye[e>>>16&255]]^ke[ye[e>>>8&255]]^Re[ye[255&e]]}}encryptBlock(e,t){this._doCryptBlock(e,t,this._keySchedule,be,Te,Se,xe,ye)}decryptBlock(e,t){const i=e;let s=i[t+1];i[t+1]=i[t+3],i[t+3]=s,this._doCryptBlock(i,t,this._invKeySchedule,Ee,we,ke,Re,ve),s=i[t+1],i[t+1]=i[t+3],i[t+3]=s}_doCryptBlock(e,t,i,s,r,n,a,o){const l=e,h=this._nRounds;let d=l[t]^i[0],c=l[t+1]^i[1],u=l[t+2]^i[2],f=l[t+3]^i[3],p=4;for(let v=1;v<h;v+=1){const e=s[d>>>24]^r[c>>>16&255]^n[u>>>8&255]^a[255&f]^i[p];p+=1;const t=s[c>>>24]^r[u>>>16&255]^n[f>>>8&255]^a[255&d]^i[p];p+=1;const o=s[u>>>24]^r[f>>>16&255]^n[d>>>8&255]^a[255&c]^i[p];p+=1;const l=s[f>>>24]^r[d>>>16&255]^n[c>>>8&255]^a[255&u]^i[p];p+=1,d=e,c=t,u=o,f=l}const m=(o[d>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&f])^i[p];p+=1;const g=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[f>>>8&255]<<8|o[255&d])^i[p];p+=1;const _=(o[u>>>24]<<24|o[f>>>16&255]<<16|o[d>>>8&255]<<8|o[255&c])^i[p];p+=1;const y=(o[f>>>24]<<24|o[d>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^i[p];p+=1,l[t]=m,l[t+1]=g,l[t+2]=_,l[t+3]=y}}).keySize=8;class Pe extends le{}Pe.Encryptor=class extends Pe{processBlock(e,t){const i=e,s=this._cipher,{blockSize:r}=s,n=this._iv;let a=this._counter;n&&(this._counter=n.slice(0),a=this._counter,this._iv=void 0);const o=a.slice(0);s.encryptBlock(o,0),a[r-1]=a[r-1]+1|0;for(let l=0;l<r;l+=1)i[t+l]^=o[l]}},Pe.Decryptor=Pe.Encryptor;var Be="3.0.0-alpha.32";class Fe{static start(e){return e&&e.length?1===e.length&&e.end(0)-e.start(0)<1e-6||1===e.length&&e.start(0)<0?0:e.start(0):0}static end(e){return e&&e.length?1===e.length&&e.end(0)-e.start(0)<1e-6?0:e.end(e.length-1):0}static get(e){if(e)try{return e.buffered}catch(t){}}static buffers(e,t){if(!e||!e.length)return[];const i=[];for(let s=0,r=e.length;s<r;s++){const r=i.length;if(r&&t){const n=i[r-1],a=n[1];if(e.start(s)-a<=t){const t=e.end(s);t>a&&(n[1]=t)}else i.push([e.start(s),e.end(s)])}else i.push([e.start(s),e.end(s)])}return i}static totalLength(e){return e&&e.length?e.reduce(((e,t)=>e+(t[1]-t[0])),0):0}static info(e,t=0,i=0){if(!e||!e.length)return{start:0,end:0,buffers:[]};let s=0,r=0,n=0,a=0,o=0,l=0,h=0;const d=Fe.buffers(e,i);for(let c=0,u=d.length;c<u;c++){const e=d[c];if(t+i>=e[0]&&t<=e[1])s=e[0],r=e[1],n=c;else{if(t+i<e[0]){a=e[0],o=e[1];break}t+i>e[1]&&(l=e[0],h=e[1])}}return{start:s,end:r,index:n,buffers:d,nextStart:a,nextEnd:o,prevStart:l,prevEnd:h,currentTime:t,behind:t-s,remaining:r?r-t:0,length:Fe.totalLength&&Fe.totalLength(d)}}}const Oe="undefined"!=typeof window,De={MANIFEST:"manifest",NETWORK:"network",NETWORK_TIMEOUT:"network_timeout",NETWORK_FORBIDDEN:"network_forbidden",NETWORK_NOTFOUND:"network_notfound",NETWROK_RANGE_NOT_SATISFIABLE:"network_range_not_satisfiable",DEMUX:"demux",REMUX:"remux",MEDIA:"media",DRM:"drm",OTHER:"other",RUNTIME:"runtime",SUB_TYPES:{FLV:"FLV",HLS:"HLS",MP4:"MP4",FMP4:"FMP4",MSE_ADD_SB:"MSE_ADD_SB",MSE_APPEND_BUFFER:"MSE_APPEND_BUFFER",MSE_OTHER:"MSE_OTHER",MSE_FULL:"MSE_FULL",OPTION:"OPTION",DASH:"DASH",LICENSE:"LICENSE",CUSTOM_LICENSE:"CUSTOM_LICENSE",MSE_HIJACK:"MSE_HIJACK",EME_HIJACK:"EME_HIJACK",SIDX:"SIDX",NO_CANPLAY_ERROR:"NO_CANPLAY_ERROR",BUFFERBREAK_ERROR:"BUFFERBREAK_ERROR",WAITING_TIMEOUT_ERROR:"WAITING_TIMEOUT_ERROR",MEDIA_ERR_ABORTED:"MEDIA_ERR_ABORTED",MEDIA_ERR_NETWORK:"MEDIA_ERR_NETWORK",MEDIA_ERR_DECODE:"MEDIA_ERR_DECODE",MEDIA_ERR_SRC_NOT_SUPPORTED:"MEDIA_ERR_SRC_NOT_SUPPORTED",MEDIA_ERR_CODEC_NOT_SUPPORTED:"MEDIA_ERR_CODEC_NOT_SUPPORTED",MEDIA_ERR_URL_EMPTY:"MEDIA_ERR_URL_EMPTY"}},Ae={[De.MANIFEST]:{HLS:1100,DASH:1200},[De.NETWORK]:2100,[De.NETWORK_TIMEOUT]:2101,[De.NETWORK_FORBIDDEN]:2103,[De.NETWORK_NOTFOUND]:2104,[De.NETWROK_RANGE_NOT_SATISFIABLE]:2116,[De.DEMUX]:{FLV:3100,HLS:3200,MP4:3300,FMP4:3400,SIDX:3410},[De.REMUX]:{FMP4:4100,MP4:4200},[De.MEDIA]:{MEDIA_ERR_ABORTED:5101,MEDIA_ERR_NETWORK:5102,MEDIA_ERR_DECODE:5103,MEDIA_ERR_SRC_NOT_SUPPORTED:5104,MEDIA_ERR_CODEC_NOT_SUPPORTED:5105,MEDIA_ERR_URL_EMPTY:5106,MSE_ADD_SB:5200,MSE_APPEND_BUFFER:5201,MSE_OTHER:5202,MSE_FULL:5203,MSE_HIJACK:5204,EME_HIJACK:5301},[De.DRM]:{LICENSE:7100,CUSTOM_LICENSE:7200},[De.OTHER]:8e3,[De.RUNTIME]:{NO_CANPLAY_ERROR:9001,BUFFERBREAK_ERROR:9002,WAITING_TIMEOUT_ERROR:9003}};class Ue extends Error{constructor(e,t,i,s,r){super(r||(null==i?void 0:i.message)),this.errorType=e===De.NETWORK_TIMEOUT?De.NETWORK:e,this.originError=i,this.ext=s,this.errorCode=Ae[e][t]||Ae[e],this.errorMessage=this.message,this.errorCode||(this.errorType=De.OTHER,this.errorCode=Ae[this.errorType])}static create(e,t,i,s,r){return e instanceof Ue?e:(e instanceof Error&&(i=e,e=""),e||(e=De.OTHER),new Ue(e,t,i,s,r))}static network(e){var t;return new Ue((null==e?void 0:e.isTimeout)?De.NETWORK_TIMEOUT:De.NETWORK,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==(t=null==e?void 0:e.response)?void 0:t.status})}}const Ne=1,ze=2,je=3,He=4,Ve=["Boolean","Number","String","Undefined","Null","Date","Object"],qe=class{constructor(e,t){this.name=e||"",this._prefix=`[${this.name}]`,this.logCacheLevel=(null==t?void 0:t.logCacheLevel)||3,this.logMaxSize=(null==t?void 0:t.logMaxSize)||204800,this.logSize=0,this.logTextArray=[]}debug(...e){this.logCache(Ne,...e),qe.disabled||console.debug(this._prefix,We(),...e)}log(...e){this.logCache(ze,...e),qe.disabled||console.log(this._prefix,We(),...e)}warn(...e){this.logCache(je,...e),qe.disabled||console.warn(this._prefix,We(),...e)}error(...e){this.logCache(He,...e),qe.disabled||console.error(this._prefix,We(),...e)}logCache(e,...t){if(e<this.logCacheLevel)return;let i="";try{const e=t.map((e=>$e(e)));i=this._prefix+We()+JSON.stringify(e)}catch(s){return}if(e>=this.logCacheLevel&&(this.logSize+=i.length,this.logTextArray.push(i)),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}getLogCache(){const e=this.logTextArray.join("\n");return this.reset(),e}reset(){this.logTextArray=[],this.logSize=0}table(...e){qe.disabled||(console.group(this._prefix),console.table(...e),console.groupEnd())}static enable(){qe.disabled=!1}static disable(){qe.disabled=!0}setLogLevel(e){this.logCacheLevel=e}};let Ke=qe;function We(){return(new Date).toLocaleString()}function Ye(e){if("object"!=typeof e)return e;const t=Object.prototype.toString.call(e).slice(8,-1);switch(t){case"Array":case"Uint8Array":case"ArrayBuffer":return t+"["+e.length+"]";case"Object":return"{}";default:return t}}function $e(e,t,i){i||(i=1),t||(t=2);const s={};if(!e||"object"!=typeof e)return e;const r=Object.prototype.toString.call(e).slice(8,-1);if(!Ve.includes(r))return r;if(!(i>t)){for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i===t?s[r]=Ye(e[r]):"object"==typeof e[r]?s[r]=$e(e[r],t,i+1):s[r]=e[r]);return s}}function Je(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.used=!1,i.resolve=(...t)=>(i.used=!0,e(...t)),i.reject=(...e)=>(i.used=!0,t(...e)),i}function Xe(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}}__publicField(Ke,"disabled",!0);const Ge={stringify(e){try{return JSON.stringify(e)}catch(t){return""}},parse(e){try{return JSON.parse(e)}catch(t){return}}};function Qe(e=!0){try{return Oe?e&&"undefined"!=typeof ManagedMediaSource?ManagedMediaSource:window.MediaSource:null}catch(t){}}function Ze(e){return/ManagedMediaSource/gi.test(Object.prototype.toString.call(e))}const et="appendBuffer",tt="removeBuffer",it="updateDuration",st=class{constructor(e,t){__publicField(this,"media",null),__publicField(this,"mediaSource",null),__publicField(this,"_openPromise",Je()),__publicField(this,"_queue",Object.create(null)),__publicField(this,"_sourceBuffer",Object.create(null)),__publicField(this,"_mseFullFlag",{}),__publicField(this,"_st",0),__publicField(this,"_opst",0),__publicField(this,"_logger",null),__publicField(this,"_config",null),__publicField(this,"_url",null),__publicField(this,"_onStartStreaming",(()=>{this._logger.debug("startstreaming")})),__publicField(this,"_onEndStreaming",(()=>{this._logger.debug("endstreaming")})),__publicField(this,"_onSBUpdateEnd",(e=>{var t;const i=this._queue[e];if(i){const s=i[0];if((null==s?void 0:s.opName)!==it&&i.shift(),s){const i=Xe()-this._opst;this._logger.debug(`UpdateEnd(${e}/${s.opName})`,Ge.stringify(function(e){const t=[];if(e instanceof TimeRanges)for(let i=0;i<e.length;i++)t.push({start:e.start(i),end:e.end(i)});return t}(null==(t=this._sourceBuffer[e])?void 0:t.buffered)),i,s.context),s.promise.resolve({name:s.opName,context:s.context,costtime:i}),this._startQueue(e)}}})),__publicField(this,"_onSBUpdateError",((e,t)=>{const i=this._queue[e];if(i){const s=i[0];s&&(this._logger.error("UpdateError",e,s.opName,s.context),s.promise.reject(new Ue(De.MEDIA,De.SUB_TYPES.MSE_APPEND_BUFFER,t)))}})),this._config=Object.assign(st.getDefaultConfig(),t),e&&this.bindMedia(e),this._logger=new Ke("MSE"),this._config.openLog&&Ke.enable()}static isSupported(e='video/mp4; codecs="avc1.42E01E,mp4a.40.2"'){const t=Qe();if(!t)return!1;try{return t.isTypeSupported(e)}catch(i){return this._logger.error(e,i),!1}}static isMMSOnly(){return"undefined"!=typeof ManagedMediaSource&&"undefined"==typeof MediaSource}static getDefaultConfig(){return{openLog:!1,preferMMS:!1}}get isOpened(){var e;return"open"===(null==(e=this.mediaSource)?void 0:e.readyState)}get hasOpTasks(){let e=!1;return Object.keys(this._queue).forEach((t=>{const i=this._queue[t];Array.isArray(i)&&(e||(e=i.length>0))})),e}get url(){return this._url}get duration(){var e;return(null==(e=this.mediaSource)?void 0:e.duration)||-1}get isEnded(){return!!this.mediaSource&&"ended"===this.mediaSource.readyState}get streaming(){return!Ze(this.mediaSource)||this.mediaSource.streaming}isFull(e){return e?this._mseFullFlag[e]:this._mseFullFlag[st.VIDEO]}updateDuration(e){const t=this.mediaSource&&this.mediaSource.duration>e;if(this.mediaSource&&this.mediaSource.duration>e){let t=0;if(Object.keys(this._sourceBuffer).forEach((e=>{try{t=Math.max(this.bufferEnd(e)||0,t)}catch(i){}})),e<t)return Promise.resolve()}return this._enqueueBlockingOp((()=>{this.isEnded?this._logger.debug("setDuration but ended"):this.mediaSource&&(this.mediaSource.duration=e,this._logger.debug("setDuration",e))}),it,{isReduceDuration:t})}open(){if(this._openPromise.used&&!this.isOpened&&this.mediaSource){const e=this.mediaSource,t=()=>{const i=Xe()-this._st;this._logger.debug("sourceopen",i),e.removeEventListener("sourceopen",t),this._openPromise.resolve({costtime:i})};e.addEventListener("sourceopen",t),this._openPromise=Je()}return this._openPromise}async bindMedia(e){(this.mediaSource||this.media)&&await this.unbindMedia();const t=Qe(this._config.preferMMS);if(!e||!t)throw new Error("Param media or MediaSource does not exist");this.media=e;const i=this.mediaSource=new t,s=Ze(i);this._st=Xe();const r=()=>{const t=Xe()-this._st;this._logger.debug("sourceopen"),i.removeEventListener("sourceopen",r),URL.revokeObjectURL(e.src),this._openPromise.resolve({costtime:t})};return i.addEventListener("sourceopen",r),s&&(i.addEventListener("startstreaming",this._onStartStreaming),i.addEventListener("endstreaming",this._onEndStreaming)),this._url=URL.createObjectURL(i),e.src=this._url,e.disableRemotePlayback=s,this._openPromise}async unbindMedia(){this._openPromise.used||this._openPromise.resolve();const e=this.mediaSource;if(e){Object.keys(this._queue).forEach((e=>{const t=this._queue[e];t&&t.forEach((e=>{var t,i;return null==(i=null==(t=e.promise)?void 0:t.resolve)?void 0:i.call(t)}))}));const i=!!this.media&&this.media.readyState>=1,s="open"===e.readyState;if(i&&s)try{e.endOfStream()}catch(t){}Object.keys(this._sourceBuffer).forEach((i=>{try{e.removeSourceBuffer(this._sourceBuffer[i])}catch(t){}})),Ze(e)&&(e.removeEventListener("startstreaming",this._onStartStreaming),e.removeEventListener("endstreaming",this._onEndStreaming))}if(this.media){this.media.disableRemotePlayback=!1,this.media.removeAttribute("src");try{this.media.load()}catch(t){}this.media=null}this.mediaSource=null,this._openPromise=Je(),this._queue=Object.create(null),this._sourceBuffer=Object.create(null)}createSource(e,t){if(this._sourceBuffer[e]||!this.mediaSource)return;let i;try{i=this._sourceBuffer[e]=this.mediaSource.addSourceBuffer(t)}catch(s){throw new Ue(De.MEDIA,De.SUB_TYPES.MSE_ADD_SB,s)}i.mimeType=t,i.addEventListener("updateend",this._onSBUpdateEnd.bind(this,e)),i.addEventListener("error",this._onSBUpdateError.bind(this,e))}changeType(e,t){const i=this._sourceBuffer[e];return this.mediaSource&&i&&i.mimeType!==t?"function"!=typeof i.changeType?Promise.reject():this._enqueueOp(e,(()=>{i.changeType(t),i.mimeType=t,this._onSBUpdateEnd(e)}),"changeType",{mimeType:t}):Promise.resolve()}createOrChangeSource(e,t){return this.createSource(e,t),this.changeType(e,t)}append(e,t,i){return t&&t.byteLength&&this._sourceBuffer[e]?this._enqueueOp(e,(()=>{var s;this.mediaSource&&!this.media.error&&(this._logger.debug("MSE APPEND START",i),this._opst=Xe(),null==(s=this._sourceBuffer[e])||s.appendBuffer(t))}),et,i):Promise.resolve()}remove(e,t,i,s){let r=!1;return this._mseFullFlag[e]&&(r=!0),this._enqueueOp(e,(()=>{if(!this.mediaSource||this.media.error)return;const r=this._sourceBuffer[e];t>=i||!r?this._onSBUpdateEnd(e):(this._opst=Xe(),this._logger.debug("MSE REMOVE START",e,t,i,s),r.remove(t,i))}),tt,s,r)}clearBuffer(e,t){let i;return Object.keys(this._sourceBuffer).forEach((s=>{i=this.remove(s,e,t)})),i||Promise.resolve()}clearAllBuffer(){let e;return Object.keys(this._sourceBuffer).forEach((t=>{const i=this._sourceBuffer[t];e=this.remove(t,0,Fe.end(Fe.get(i)))})),e}clearOpQueues(e,t){this._logger.debug("MSE clearOpQueue START");const i=this._queue[e];if(t&&i)return void(this._queue[e]=[]);if(!i||!i[e]||i.length<5)return;const s=[];i.forEach((e=>{e.context&&e.context.isinit&&s.push(e)})),this._queue[e]=i.slice(0,2),s.length>0&&this._queue[e].push(...s)}endOfStream(e){return this.mediaSource&&"open"===this.mediaSource.readyState?this._enqueueBlockingOp((()=>{const t=this.mediaSource;t&&"open"===t.readyState&&(this._logger.debug("MSE endOfStream START"),e?t.endOfStream(e):t.endOfStream())}),"endOfStream"):Promise.resolve()}setLiveSeekableRange(e,t){const i=this.mediaSource;e<0||t<e||!(null==i?void 0:i.setLiveSeekableRange)||"open"!==i.readyState||i.setLiveSeekableRange(e,t)}getSourceBuffer(e){return this._sourceBuffer[e]}buffered(e){return Fe.get(this._sourceBuffer[e])}bufferStart(e){return Fe.start(this.buffered(e))}bufferEnd(e){return Fe.end(this.buffered(e))}_enqueueOp(e,t,i,s,r){if(!this.mediaSource)return Promise.resolve();const n=this._queue[e]=this._queue[e]||[],a={exec:t,promise:Je(),opName:i,context:s};return r?(n.splice(0,0,a),this._mseFullFlag[e]=!1,this._startQueue(e)):n.push(a),this.isOpened||this.isEnded?1===n.length&&this._startQueue(e):this._openPromise.then((()=>{1===n.length&&this._startQueue(e)})),a.promise}async _enqueueBlockingOp(e,t,i){if(!this.mediaSource)return Promise.resolve();const s=Object.keys(this._sourceBuffer);if(!s.length)return e();const r=[];return s.forEach((e=>{const s=this._queue[e],n=Je();r.push(n),s.push({exec:()=>{n.resolve()},promise:n,opName:t,context:i}),1===s.length&&this._startQueue(e)})),Promise.all(r).then((()=>{try{return e()}finally{s.forEach((e=>{const t=this._queue[e],i=this._sourceBuffer[e];null==t||t.shift(),i&&i.updating||this._startQueue(e)}))}}))}_startQueue(e){const t=this._queue[e];if(t){const s=t[0];if(s&&!this._mseFullFlag[e])try{s.exec()}catch(i){i&&i.message&&i.message.indexOf("SourceBuffer is full")>=0?(this._mseFullFlag[e]=!0,this._logger.error("[MSE error], context,",s.context," ,name,",s.opName,",err,SourceBuffer is full"),s.promise.reject(new Ue(De.MEDIA,De.SUB_TYPES.MSE_FULL,i))):(this._logger.error(i),s.promise.reject(new Ue(De.MEDIA,De.SUB_TYPES.MSE_OTHER,i)),t.shift(),this._startQueue(e))}}}setTimeoffset(e,t,i){return this._enqueueOp(e,(()=>{t<0&&(t+=.001),this._sourceBuffer[e].timestampOffset=t,this._onSBUpdateEnd(e)}),"setTimeoffset",i)}abort(e,t){return this.isOpened?this._enqueueOp(e,(()=>{this._sourceBuffer[e].abort(),this._onSBUpdateEnd(e)}),"abort",t):Promise.resolve()}};let rt=st;__publicField(rt,"VIDEO","video"),__publicField(rt,"AUDIO","audio");const nt="fetch",at="xhr",ot="arraybuffer",lt="text",ht="json";class dt extends Error{constructor(e,t,i,s){super(s),__publicField(this,"retryCount",0),__publicField(this,"isTimeout",!1),__publicField(this,"loaderType",nt),__publicField(this,"startTime",0),__publicField(this,"endTime",0),__publicField(this,"options",{}),this.url=e,this.request=t,this.response=i}}const ct=Object.prototype.toString;function ut(e){if("[object Object]"!==ct.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function ft(e){if(!e||null===e[0]||void 0===e[0]||0===e[0]&&(null===e[1]||void 0===e[1]))return;let t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}function pt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function mt(e,t){if(!e)return;if(!t)return e;let i;const s=Object.keys(t).map((e=>{if(i=t[e],null!=i)return Array.isArray(i)?e+="[]":i=[i],i.map((t=>{var i;return i=t,"[object Date]"===ct.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${pt(e)}=${pt(t)}`})).join("&")})).filter(Boolean).join("&");if(s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}function gt(e,t,i,s,r,n,a,o,l,h,d){r=null!=r?parseFloat(r):null,s=parseInt(s||"0",10),Number.isNaN(s)&&(s=0);return{data:e,done:t,options:{range:l,vid:h,index:o,contentLength:s,age:r,startTime:n,firstByteTime:a,endTime:Date.now(),priOptions:d},response:i}}function _t(e,t){return Math.round(8*e*1e3/t/1024)}const yt="real_time_speed",vt=2097152;class bt extends r{constructor(){super(),__publicField(this,"_abortController",null),__publicField(this,"_timeoutTimer",null),__publicField(this,"_reader",null),__publicField(this,"_response",null),__publicField(this,"_aborted",!1),__publicField(this,"_index",-1),__publicField(this,"_range",null),__publicField(this,"_receivedLength",0),__publicField(this,"_running",!1),__publicField(this,"_logger",null),__publicField(this,"_vid",""),__publicField(this,"_onProcessMinLen",0),__publicField(this,"_onCancel",null),__publicField(this,"_priOptions",null)}load({url:e,vid:t,timeout:i,responseType:s,onProgress:r,index:n,onTimeout:a,onCancel:o,range:l,transformResponse:h,request:d,params:c,logger:u,method:f,headers:p,body:m,mode:g,credentials:_,cache:y,redirect:v,referrer:b,referrerPolicy:T,onProcessMinLen:S,priOptions:x}){var E;this._logger=u,this._aborted=!1,this._onProcessMinLen=S,this._onCancel=o,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=n,this._range=l||[0,0],this._vid=t||e,this._priOptions=x||{};const w={method:f,headers:p,body:m,mode:g,credentials:_,cache:y,redirect:v,referrer:b,referrerPolicy:T,signal:null==(E=this._abortController)?void 0:E.signal};let k=!1;clearTimeout(this._timeoutTimer),e=mt(e,c);const R=ft(l);R&&(p=d?d.headers:w.headers=w.headers||(Headers?new Headers:{}),Headers&&p instanceof Headers?p.append("Range",R):p.Range=R),i&&(this._timeoutTimer=setTimeout((()=>{if(k=!0,this.cancel(),a){const t=new dt(e,w,null,"timeout");t.isTimeout=!0,a(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),i));const M=Date.now();return this._logger.debug("[fetch load start], index,",n,",range,",l),new Promise(((t,i)=>{fetch(d||e,d?void 0:w).then((async a=>{if(clearTimeout(this._timeoutTimer),this._response=a,this._aborted||!this._running)return;if(h&&(a=h(a,e)||a),!a.ok)throw new dt(e,w,a,"bad network response");const o=Date.now();let d;if(s===lt)d=await a.text(),this._running=!1;else if(s===ht)d=await a.json(),this._running=!1;else{if(r)return this.resolve=t,this.reject=i,void this._loadChunk(a,r,M,o);{d=await a.arrayBuffer(),d=new Uint8Array(d),this._running=!1;const e=Date.now()-M,t=_t(d.byteLength,e);this.emit(yt,{speed:t,len:d.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}this._logger.debug("[fetch load end], index,",n,",range,",l),t(gt(d,!0,a,a.headers.get("Content-Length"),a.headers.get("age"),M,o,n,l,this._vid,this._priOptions))})).catch((t=>{clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!k||((t=t instanceof dt?t:new dt(e,w,null,null==t?void 0:t.message)).startTime=M,t.endTime=Date.now(),t.isTimeout=k,t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},i(t))}))}))}async cancel(){if(!this._aborted){if(this._aborted=!0,this._running=!1,this._response){try{this._reader&&await this._reader.cancel()}catch(e){}this._response=this._reader=null}if(this._abortController){try{this._abortController.abort()}catch(e){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}_loadChunk(e,t,i,s){if(!e.body||!e.body.getReader){this._running=!1;const t=new dt(e.url,"",e,"onProgress of bad response.body.getReader");return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(t)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(vt),this._writeIdx=0);const r=this._reader=e.body.getReader();let n,a,o;const l=async()=>{var h;a=Date.now();try{n=await r.read(),o=Date.now()}catch(p){return o=Date.now(),void(this._aborted||(this._running=!1,p.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this.reject(p)))}const d=(null==(h=this._range)?void 0:h.length)>0?this._range[0]:0,c=d+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[c,c],vid:this._vid,index:this._index,startTime:a,endTime:o,st:i,firstByteTime:s,priOptions:this._priOptions},e);const u=n.value?n.value.byteLength:0;let f;if(this._receivedLength+=u,this._logger.debug("【fetchLoader,onProgress call】,task,",this._range,", start,",c,", end,",d+this._receivedLength,", done,",n.done),this._onProcessMinLen>0){if(this._writeIdx+u>=this._onProcessMinLen||n.done)f=new Uint8Array(this._writeIdx+u),f.set(this._cache.slice(0,this._writeIdx),0),u>0&&f.set(n.value,this._writeIdx),this._writeIdx=0,this._logger.debug("【fetchLoader,onProgress enough】,done,",n.done,",len,",f.byteLength,", writeIdx,",this._writeIdx);else if(u>0&&this._writeIdx+u<vt)this._cache.set(n.value,this._writeIdx),this._writeIdx+=u,this._logger.debug("【fetchLoader,onProgress cache】,len,",u,", writeIdx,",this._writeIdx);else if(u>0){const e=new Uint8Array(this._writeIdx+u+2048);this._logger.debug("【fetchLoader,onProgress extra start】,size,",this._writeIdx+u+2048,", datalen,",u,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),u>0&&e.set(n.value,this._writeIdx),this._writeIdx+=u,delete this._cache,this._cache=e,this._logger.debug("【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",this._writeIdx)}}else f=n.value;if((f&&f.byteLength>0||n.done)&&t(f,n.done,{range:[this._range[0]+this._receivedLength-(f?f.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:a,endTime:o,st:i,firstByteTime:s,priOptions:this._priOptions},e),n.done){const t=Date.now()-i,r=_t(this._receivedLength,t);this.emit(yt,{speed:r,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this._logger.debug("[fetchLoader onProgress end],task,",this._range,",done,",n.done),this.resolve(gt(n,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,s,this._index,this._range,this._vid,this._priOptions))}else l()};l()}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}static isSupported(){return!("undefined"==typeof fetch)}}class Tt extends r{constructor(){super(),__publicField(this,"_xhr",null),__publicField(this,"_aborted",!1),__publicField(this,"_timeoutTimer",null),__publicField(this,"_range",null),__publicField(this,"_receivedLength",0),__publicField(this,"_url",null),__publicField(this,"_onProgress",null),__publicField(this,"_index",-1),__publicField(this,"_headers",null),__publicField(this,"_currentChunkSizeKB",384),__publicField(this,"_timeout",null),__publicField(this,"_xhr",null),__publicField(this,"_withCredentials",null),__publicField(this,"_startTime",-1),__publicField(this,"_loadCompleteResolve",null),__publicField(this,"_loadCompleteReject",null),__publicField(this,"_runing",!1),__publicField(this,"_logger",!1),__publicField(this,"_vid",""),__publicField(this,"_responseType"),__publicField(this,"_credentials"),__publicField(this,"_method"),__publicField(this,"_transformResponse"),__publicField(this,"_firstRtt"),__publicField(this,"_onCancel",null),__publicField(this,"_priOptions",null)}load(e){clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=mt(e.url,e.params);const t=Date.now();return new Promise(((e,t)=>{this._loadCompleteResolve=e,this._loadCompleteReject=t,this._startLoad()})).catch((e=>{if(clearTimeout(this._timeoutTimer),this._runing=!1,!this._aborted)throw(e=e instanceof dt?e:new dt(this._url,this._request)).startTime=t,e.endTime=Date.now(),e.options={index:this._index,vid:this._vid,priOptions:this._priOptions},e}))}_startLoad(){let e=null;if(this._responseType===ot&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let s=this._range[1];t<this._range[1]-i&&(s=i+t),e=[i,s],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}_internalOpen(e){try{this._startTime=Date.now();const t=this._xhr=new XMLHttpRequest;t.open(this._method||"GET",this._url,!0),t.responseType=this._responseType,this._timeout&&(t.timeout=this._timeout),t.withCredentials=this._withCredentials,t.onload=this._onLoad.bind(this),t.onreadystatechange=this._onReadyStatechange.bind(this),t.onerror=e=>{var t,i,s;this._running=!1;const r=new dt(this._url,this._request,null==(t=null==e?void 0:e.currentTarget)?void 0:t.response,"xhr.onerror.status:"+(null==(i=null==e?void 0:e.currentTarget)?void 0:i.status)+",statusText,"+(null==(s=null==e?void 0:e.currentTarget)?void 0:s.statusText));r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)},t.ontimeout=e=>{this.cancel();const t=new dt(this._url,this._request,{status:408},"timeout");this._onTimeout&&(t.isTimeout=!0,this._onTimeout(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})),t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)};const i=this._headers||{},s=ft(e);s&&(i.Range=s),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),t.send(this._body)}catch(t){t.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}}_onReadyStatechange(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}_onLoad(e){var t,i;const s=e.target.status;if(s<200||s>299){const t=new dt(this._url,null,{...e.target.response,status:s},"bad response,status:"+s);return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}let r,n=null,a=!1;const o=(null==(t=this._range)?void 0:t.length)>0?this._range[0]:0;if(this._responseType===ot){const t=new Uint8Array(e.target.response);if(r=o+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,i=_t(this._receivedLength,e);this.emit(yt,{speed:i,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[r,o+this._receivedLength],priOptions:this._priOptions})}n=t,a=!((null==(i=this._range)?void 0:i.length)>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",r,"end ",o+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",a)}else a=!0,n=e.target.response;let l={ok:s>=200&&s<300,status:s,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(l=this._transformResponse(l,this._url)||l),this._onProgress&&this._onProgress(n,a,{index:this._index,vid:this._vid,range:[r,o+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},l),a?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(gt(this._onProgress?null:n,a,l,l.headers["content-length"],l.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}cancel(){if(!this._aborted)return this._aborted=!0,this._runing=!1,super.removeAllListeners(),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}static isSupported(){return"undefined"!=typeof XMLHttpRequest}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}_getHeaders(e){const t=e.getAllResponseHeaders().trim().split("\r\n"),i={};for(const s of t){const e=s.split(": ");i[e[0].toLowerCase()]=e.slice(1).join(": ")}return i}}class St{constructor(e,t){this.promise=Je(),this.alive=!!t.onProgress,!t.logger&&(t.logger=new Ke("Loader")),this._loaderType=e,this._loader=e===nt&&"undefined"!=typeof fetch?new bt:new Tt,this._config=t,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=t.retryCheckFunc,this._logger=t.logger}exec(){const{retry:e,retryDelay:t,onRetryError:i,transformError:s,...r}=this._config,n=async()=>{try{const e=await this._loader.load(r);this.promise.resolve(e)}catch(a){if(this._loader.running=!1,this._logger.debug("[task request catch err]",a),this._canceled)return;a.loaderType=this._loaderType,a.retryCount=this._retryCount;let o=a;s&&(o=s(o)||o),i&&this._retryCount>0&&i(o,this._retryCount,{index:r.index,vid:r.vid,range:r.range,priOptions:r.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(a)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this._logger.debug("[task request setTimeout],retry",this._retryCount,",retry range,",r.range),void(this._retryTimer=setTimeout(n,t));this.promise.reject(o)}};return n(),this.promise}async cancel(){return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,this._loader.cancel()}get running(){return this._loader&&this._loader.running}get loader(){return this._loader}}function xt(...e){if((e=e.filter(Boolean)).length<2)return e[0];const t=new Uint8Array(e.reduce(((e,t)=>e+t.byteLength),0));let i=0;return e.forEach((e=>{t.set(e,i),i+=e.byteLength})),t}class Et extends r{constructor(e){super(e),__publicField(this,"type",nt),__publicField(this,"_queue",[]),__publicField(this,"_alive",[]),__publicField(this,"_currentTask",null),__publicField(this,"_finnalUrl",""),__publicField(this,"_config"),this._config=function(e){return{loaderType:nt,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:lt,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0,...e}}(e),this._config.loaderType!==at&&bt.isSupported()||(this.type=at),this.log=e.logger}isFetch(){return this.type===nt}static isFetchSupport(){return bt.isSupported()}load(e,t={}){"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,(t=Object.assign({},this._config,t)).params&&(t.params=Object.assign({},t.params)),t.headers&&ut(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&ut(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t),t.logger=this.log;const i=new St(this.type,t);return i.loader.on(yt,(e=>{this.emit(yt,e)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}async cancel(){const e=this._queue.map((e=>e.cancel())).concat(this._alive.map((e=>e.cancel())));this._currentTask&&e.push(this._currentTask.cancel()),this._queue=[],this._alive=[],await Promise.all(e),await function(e=0){return new Promise((t=>setTimeout(t,e)))}()}_processTask(){if(this._currentTask=this._queue.shift(),!this._currentTask)return;this._currentTask.alive&&this._alive.push(this._currentTask);const e=this._currentTask.exec().catch((e=>{}));e&&"function"==typeof e.finally&&e.finally((()=>{var e,t;(null==(e=this._currentTask)?void 0:e.alive)&&(null==(t=this._alive)?void 0:t.length)>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const wt={416:Ae[De.NETWROK_RANGE_NOT_SATISFIABLE],403:Ae[De.NETWORK_FORBIDDEN],404:Ae[De.NETWORK_NOTFOUND],timeout:Ae[De.NETWORK_TIMEOUT],"4xx":`${Ae[De.NETWORK]}4XX`,"5xx":`${Ae[De.NETWORK]}5XX`,networkError:Ae[De.NETWORK],contentError:`${Ae[De.NETWORK]}contentError`,mse:Ae[De.MEDIA][De.SUB_TYPES.MSE_OTHER],mseOpen:Ae[De.MEDIA][De.SUB_TYPES.MSE_ADD_SB],mseAppend:Ae[De.MEDIA][De.SUB_TYPES.MSE_APPEND_BUFFER],mse_hijack:Ae[De.MEDIA][De.SUB_TYPES.MSE_HIJACK],eme_hijack:Ae[De.MEDIA][De.SUB_TYPES.EME_HIJACK],metaError:Ae[De.DEMUX][De.SUB_TYPES.MP4],muxError:Ae[De.REMUX][De.SUB_TYPES.FMP4],other:Ae[De.OTHER],waitTimeout:Ae[De.RUNTIME][De.SUB_TYPES.BUFFERBREAK_ERROR],waitTimeoutWithHidden:Ae[De.RUNTIME][De.SUB_TYPES.WAITING_TIMEOUT_ERROR],drm:Ae[De.DRM][De.SUB_TYPES.LICENSE]},kt=De;class Rt{constructor(e,t,i){let s=0,r=0;i&&i.range&&i.range.length>1&&(s=i.range[0],r=i.range[1]);const n=function(e){return wt[e]||e}(t);return{errorCode:n,errorType:e,errorMessage:(null==i?void 0:i.httpText)||(null==i?void 0:i.message),url:null==i?void 0:i.url,httpCode:t,version:Be,rangeStart:s,rangeEnd:r,ext:i,mediaError:{code:n,message:(null==i?void 0:i.httpText)||(null==i?void 0:i.message)}}}}class Mt{constructor(e,t,i){return{errorCode:t,errorType:e,version:Be,errorMessage:i.msg,ext:i,mediaError:{code:t,message:i.msg}}}}const Lt={};Lt.nowTime=function(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}},Lt.concatData=function(e,t){const i=[];let s=0;e&&i.push(e),t&&i.push(t),i.every((e=>(e&&(s+=e.byteLength),!0)));const r=new Uint8Array(s);let n=0;return i.every((e=>(e&&(r.set(e,n),n+=e.byteLength),!0))),r};const It="content-range";function Ct(e){try{e&&e.src&&(e.removeAttribute("src"),e.load())}catch(t){}}function Pt(e,t){const i=e.media||e.video;e._detachSourceEvents(i),t instanceof Array?e._attachSourceEvents(i,t):t?i.src=t:i.removeAttribute("src")}class Bt{constructor(e,t){this.type="file",this.message=e,this.data=t}}class Ft{constructor(){__publicField(this,"_data",Object.create(null))}set(e,t){this._data[e]=t}get(e){return this._data[e]}clear(){this._data=Object.create(null)}}function Ot(e,t){var i,s,r,n,a,o;const l=e.trak;if(!l||!l.length)return;const h=l.find((e=>{var t,i;return"vide"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)})),d=l.find((e=>{var t,i;return"soun"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)}));if(!h&&!d)return;let c,u=[],f=[];if(h){const e=null==(s=null==(i=h.mdia)?void 0:i.minf)?void 0:s.stbl;if(!e)return;const n=null==(r=h.mdia.mdhd)?void 0:r.timescale,{stts:a,stsc:o,stsz:l,stco:d,stss:f,ctts:p}=e;if(!(n&&a&&o&&l&&d&&f))return;u=Dt(t,n,a,o,l,d,f,p),c=u.map((e=>e.duration))}if(d){const e=null==(a=null==(n=d.mdia)?void 0:n.minf)?void 0:a.stbl;if(!e)return;const i=null==(o=d.mdia.mdhd)?void 0:o.timescale,{stts:s,stsc:r,stsz:l,stco:h}=e;if(!(i&&s&&r&&l&&h))return;f=Dt(t,i,s,r,l,h,null,null,c)}return{videoSegments:u,audioSegments:f}}function Dt(e,t,i,s,r,n,a,o,l){const h=[],d=[],c=[],u=s.entries,f=n.entries,p=r.entrySizes,m=null==a?void 0:a.entries,g=null==o?void 0:o.entries;let _,y,v,b;g&&(_=[],g.forEach((({count:e,offset:t})=>{for(let i=0;i<e;i++)_.push(t)}))),m&&(y={},m.forEach((e=>{y[e-1]=!0})));let T=0,S=0,x=0,E=0,w=0,k=u[0].samplesPerChunk,R=u[1]?u[1].firstChunk-1:1/0,M=0,L=-1;i.entries.forEach((({count:e,delta:t})=>{b=t;for(let i=0;i<e;i++)v={dts:M,startTime:T,duration:b,size:p[S]||r.sampleSize,offset:f[x]+w,index:S},m&&(v.keyframe=y[S],v.keyframe?(L++,d.push([v]),c.push(v.duration)):(d[d.length-1].push(v),c[d.length-1]+=v.duration),v.gopId=L),_&&S<_.length&&(v.pts=M+_[S]),0===S&&(v.pts=0),h.push(v),T+=b,M+=t,S++,S<k?w+=v.size:(x++,w=0,x>=R&&(E++,R=u[E+1]?u[E+1].firstChunk-1:1/0),k+=u[E].samplesPerChunk)}));const I=h.length;if(!I||a&&!h[0].keyframe)return;const C=[];let P,B=[],F=0,O=0;const D=e=>{var i;P=B[B.length-1],C.push({index:C.length,startTime:(null==(i=C[C.length-1])?void 0:i.endTime)||B[0].startTime/t,endTime:(P.startTime+P.duration)/t,duration:e,range:[B[0].offset,P.offset+P.size],frames:B}),F=0,B=[]};if(a){const i=e*t;for(let e=0,s=d.length;e<s;e++)F+=c[e],B.push(...d[e]),e+1<s?(0===e||F>i)&&D(F/t):D(F/t)}else{let i=(l=l||[])[0]||e;for(let s=0;s<I;s++){B.push(h[s]),F+=h[s].duration;const r=F/t;(s+1>=I||r+O>=i)&&(O+=r-i,D(r),i=l[C.length]||e)}}return C}function At(e){var t,i,s,r,n,a,o,l,h,d,c,u,f,p,m,g;let _="",y="",v=0,b=0,T=0,S=0,x=0,E=0,w=0;e.mvhd&&(x=e.mvhd.duration/e.mvhd.timescale);const k=e.trak;if(k){const R=k.find((e=>{var t,i;return"vide"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)})),M=k.find((e=>{var t,i;return"soun"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)}));let L,I=null;return R&&(I=null==(s=null==(i=null==(t=R.mdia)?void 0:t.minf)?void 0:i.stbl)?void 0:s.stsd.entries[0],I&&(v=I.width,b=I.height,E=null==(n=null==(r=R.mdia)?void 0:r.mdhd)?void 0:n.timescale,_=null==(a=I.avcC||I.hvcC)?void 0:a.codec,"encv"===I.type&&(L=null==(l=null==(o=I.sinf)?void 0:o.schi)?void 0:l.tenc.default_KID))),M&&(I=null==(c=null==(d=null==(h=M.mdia)?void 0:h.minf)?void 0:d.stbl)?void 0:c.stsd.entries[0],I&&(T=I.channelCount,S=I.sampleRate,y=null==(u=I.esds)?void 0:u.codec,w=null==(p=null==(f=M.mdia)?void 0:f.mdhd)?void 0:p.timescale,"enca"===I.type&&(L=L||(null==(g=null==(m=I.sinf)?void 0:m.schi)?void 0:g.tenc.default_KID)))),{kid:L?L.join(""):null,videoCodec:_,audioCodec:y,width:v,height:b,videoTimescale:E,audioChannelCount:T,audioSampleRate:S,duration:x,audioTimescale:w,moov:e}}}function Ut(e){return"number"==typeof e&&!Number.isNaN(e)}class Nt extends r{constructor(e){var t;super(),__publicField(this,"vid",""),__publicField(this,"url",""),__publicField(this,"meta",{}),__publicField(this,"downloadInfo",[]),__publicField(this,"videoSegments",[]),__publicField(this,"audioSegments",[]),__publicField(this,"cache",null),__publicField(this,"_currentSegmentIndex",-1),__publicField(this,"_currentLoadingSegmentIndex",-1),__publicField(this,"buffer"),__publicField(this,"_error"),__publicField(this,"_transformError",(e=>e)),this._config=(t=e,{vid:"",moovEnd:8e4,segmentDuration:2,maxDownloadInfoSize:30,responseType:"arraybuffer",cache:null,...t});const{vid:i,cache:s,...r}=this._config;this.cache=s||new Ft,this.vid=i||r.url,this.url=r.url,r.transformError=this._transformError,this.logger=new Ke("MP4Loader_"+this.vid),e.openLog&&Ke.enable(),r.logger=this.logger,this._loader=new Et(r),this._loader.on(yt,(e=>{this.emit(yt,e)}))}get isMetaLoaded(){return this.videoSegments.length||this.audioSegments.length}setCurrentSegment(e){Ut(e)&&(this._currentSegmentIndex=e)}isLastSegment(e){var t,i;if(Ut(e)){return e>=((null==(t=this.videoSegments[this.videoSegments.length-1])?void 0:t.index)||(null==(i=this.audioSegments[this.audioSegments.length-1])?void 0:i.index)||0)}return!1}isSegmentLoading(e){return e===this._currentLoadingSegmentIndex}async changeUrl(e,t=e,i,s){await this.reset(s),e&&(this.url=e),t&&(this.vid=t),i&&(this._config.moovEnd=i)}async getOrLoadMeta(e){return this.isMetaLoaded||await this.loadMeta(e),this.meta}async loadMetaProcess(e,[t,i],s,r){this._error=!1,this.logger.debug("[loadMetaProcess start], range,",[t,i]);await this.loadData([t,i||this._config.moovEnd],e,{onProgress:async(n,a,o,l)=>{if(this.meta&&(null==o?void 0:o.range)&&o.range.length>0&&o.range[1]>=i&&(a=!0,this.logger.debug("[loadMetaProcess],data done,setstate true,[",t,i,"]")),a&&(null==o?void 0:o.range)&&o.range.length>0&&o.range[1]<i&&(a=!1,this.logger.debug("[loadMetaProcess],data not done,setstate false,[",t,i,"]")),this.logger.debug("[loadMetaProcess],task,[",t,i,"], range,",o.range,",dataLen,",n?n.byteLength:void 0,", state,",a,",err,",this._error),!this._error&&n&&n.byteLength>0&&s(n,a,o,null,l),!this.meta.moov&&!this._error&&n&&n.byteLength>0){this.buffer=xt(this.buffer,n);let t=P.findBox(this.buffer,["moov"])[0];if(!t){const i=P.findBox(this.buffer,["mdat"])[0];if(a){if(!i)return this._error=!0,void s(null,a,o,{err:"cannot find moov or mdat box"},l);{const s=i.start+i.size,n=await this.loadData([s,""],e,r);n&&(t=P.findBox(n.data,["moov"])[0])}}}if(t&&a&&t.size>t.data.length&&(this.logger.debug("[loadMetaProcess],moov not all, range,",o.range[1],",dataLen,",this.buffer.byteLength,", state,",a),await this.loadMetaProcess(e,[o.range[1],t.start+t.size-1],s)),t&&t.size<=t.data.length&&!this.meta.moov){const e=P.moov(t);if(!e)return this._error=!0,void s(null,a,o,{err:"cannot parse moov box"},l);const i=Ot(e,this._config.segmentDuration);if(!i)return this._error=!0,void s(null,a,o,{err:"cannot parse segments"},l);this.meta=At(e);const{videoSegments:r,audioSegments:n}=i;this.videoSegments=r,this.audioSegments=n,this.logger.debug("[loadMetaProcess] moov ok"),s(void 0,a,{meta:{meta:this.meta,videoSegments:r,audioSegments:n}},null,l)}}},...r})}async loadMeta(e,t,i){const s=[];this.logger.debug("[loadMeta start]");let r=await this.loadData([0,t||this._config.moovEnd],e,i);if(!r)return;s.push(r);let n=P.findBox(r.data,["moov"])[0];if(!n){const t=P.findBox(r.data,["mdat"])[0];if(!t)throw new Bt("cannot find moov or mdat box",r.data);const a=t.start+t.size;if(r=await this.loadData([a],e,i),!r)return;if(s.push(r),n=P.findBox(r.data,["moov"],a)[0],!n)throw new Bt("cannot find moov box",r.data)}if(n.size>n.data.length){if(r=await this.loadData([r.data.length,n.start+n.size-1],e,i),!r)return;s.push(r),n.data=xt(n.data,r.data)}const a=P.moov(n);if(!a)throw new Bt("cannot parse moov box",n.data);const o=Ot(a,this._config.segmentDuration);if(!o)throw new Bt("cannot parse segments",n.data);this.meta=At(a);const{videoSegments:l,audioSegments:h}=o;return this.videoSegments=l,this.audioSegments=h,this.logger.debug("[load moov end!!!!!]"),{meta:this.meta,videoSegments:l,audioSegments:h,responses:s}}loadCacheMeta(e,t){const{moov:i}=e,s=Ot(i,this._config.segmentDuration),{videoSegments:r,audioSegments:n}=s;this.videoSegments=r,this.audioSegments=n,this._currentSegmentIndex=t,this.meta=e}getSegmentByTime(e){let t,i;return this.videoSegments.length?(t=this.videoSegments.find((t=>t.startTime<=e&&t.endTime>e)),t&&(i=this.audioSegments[t.index])):i=this.audioSegments.find((t=>t.startTime<=e&&t.endTime>e)),{video:t,audio:i}}async loadSegmentByTime(e,t,i=!0,s={}){this.isMetaLoaded||await this.loadMeta(t);const{video:r,audio:n}=this.getSegmentByTime(e);return this._loadSegment(r,n,t,i,s)}async loadNextSegment(e,t=!0,i={}){this.isMetaLoaded||await this.loadMeta();const s=this.videoSegments[this._currentSegmentIndex+1],r=this.audioSegments[this._currentSegmentIndex+1];return this._loadSegment(s,r,e,t,i)}async preload(e){if(this.isMetaLoaded||await this.loadMeta(!0),!e||e<0)return;const{video:t,audio:i}=this.getSegmentByTime(e),s=Math.max((null==t?void 0:t.index)||0,(null==i?void 0:i.index)||0);if(!s)return;const r=this.videoSegments.slice(0,s),n=this.audioSegments.slice(0,s),a=async e=>{e>s||(await this._loadSegment(r[e],n[e],!0,!1),await a(e+1))};await a(0)}cancel(){return this._loader.cancel()}async reset(e=!1){e||(this.logger.debug("[MP4loader reset func call loader.cancel]"),await this._loader.cancel()),this.vid=this.url="",this.meta={},this.downloadInfo=[],this.videoSegments=[],this.audioSegments=[],this._currentSegmentIndex=-1,this._currentLoadingSegmentIndex=-1}async destroy(){await this.reset(),this.cache.clear()}async _loadSegment(e,t,i,s,r){if(!e&&!t)return;const n=(null==e?void 0:e.index)||(null==t?void 0:t.index)||0;let a;this._currentLoadingSegmentIndex=n;try{a=await this.loadData([Math.min((null==e?void 0:e.range[0])||1/0,(null==t?void 0:t.range[0])||1/0),Math.max((null==e?void 0:e.range[1])||0,(null==t?void 0:t.range[1])||0)],i,r)}finally{this._currentLoadingSegmentIndex=-1}return a?(s&&(this._currentSegmentIndex=n),a.video=e,a.audio=t,a):void 0}async loadData(e,t,i){const s=this._getCacheKey(e),r=await this.cache.get(s);let n;if(r)n={data:r,state:!0,options:{fromCache:!0,range:e,vid:this.vid}};else{const t=i&&i.url?i.url:this.url;n=await this._loader.load(t,{range:e,vid:this.vid,...i})}if(n)return r||(n.data&&this.downloadInfo.push({startTime:n.startTime,endTime:n.endTime,size:n.data.byteLength,range:e}),this.downloadInfo&&this.downloadInfo.length>this._config.maxDownloadInfoSize&&(this.downloadInfo=this.downloadInfo.slice(-this._config.maxDownloadInfoSize))),n}_getCacheKey(e){return(this.vid||this.url)+":"+e}}const zt=function(){try{return"undefined"!=typeof localStorage&&"setItem"in window.localStorage&&!!window.localStorage.setItem}catch(e){return!1}}()&&!function(){const e="_localstorage_support_test";try{return window.localStorage.setItem(e,!0),window.localStorage.removeItem(e),!1}catch(t){return!0}}(),jt=Ht();function Ht(){if(zt)try{return!!window.localStorage.getItem("playerlog")}catch(e){return!1}return!1}function Vt(e,...t){jt&&console.log&&console.log("[logger]",Lt.nowTime(),e,...t)}!function(){if(zt)try{return!!window.localStorage.getItem("playertestlog")}catch(e){return!1}}();const qt="error",Kt="metaReady",Wt="moov_request_Progress",Yt="update_load_fragmentIdx";class $t extends r{constructor(e,t){super(),__publicField(this,"onprogressDataArrive",(async(e,t,i)=>{if(e&&e.byteLength>0){const s=this.timeRange[i.index].range;s&&i.range[1]>=s[1]&&!t&&(t=!0),this.log("[mp4.loadFragment onprogressDataArrive ] receive data, >>> index,",i.index,",range,",JSON.stringify(i.range),", dataLen,",e.byteLength),this._mux(e,i.range[0],i.index,t)}t&&(this.timeRange[i.index].downloaded=!0,this.bufferLoadedPos=-1,this.log("[FragLoadDowned],fragmentIdx,",i.index,",rangeEnd,",i.range[1]))})),this.url=e,this.options=$t.getDefaultConfig(),Object.keys(t).map((e=>{void 0!==t[e]&&null!==t[e]&&(this.options[e]=t[e])})),this.timeRange=[],this.CHUNK_SIZE=this.options.chunkSize,this.bufferLoaded=new Uint8Array(0),this.bufferLoadedPos=0,this.meta=null,this.videoTrak=null,this.audioTrak=null,this.canDownload=!0,this._loadSuccessCallBack=null,this._isPending=!1,this._metaLoading=!1,this.MP4Loader=new Nt({segmentDuration:this.options.segmentDuration,url:e,vid:t.vid,retry:this.options.retryCount,retryDelay:this.options.retryDelay,timeout:this.options.timeout,...t.reqOptions,openLog:Ht()}),this.MP4Demuxer=null,this.FMP4Remuxer=null,this._needInitSegment=!0,this._switchBitRate=!1,this.enableWorker=this.options.enableWorker,this.enableWorker||(this.MP4Demuxer=null,this.FMP4Remuxer=null),this.seekTime=-1,this.changeBitRateTime=-1}static getDefaultConfig(){return{segmentDuration:5,onProcessMinLen:1024,chunkSize:8e5,retryCount:3,retryDelay:1e3,timeout:3e3,enableWorker:!1,playerId:"",vid:"",ext:{}}}async changeBitRate(e){this.url=e.url,await this.MP4Loader.changeUrl(this.url,this.options.vid+Date.now(),this.CHUNK_SIZE),this._switchBitRate=!0,this.log("[switchBitrate] changeUrl, bitRate,",this.url)}log(e,...t){const{options:i}=this;Vt(i&&i.vid?`[MP4] ${i.vid} ${e}`:`[MP4] ${e}`,...t)}async errorHandler(e,t,i={}){const{response:s,message:r}=e,n=this.options?this.options.vid:"";let a=null;this._isPending=!0,s?(a=new Rt("network",s.status,{httpText:s.httpText,message:r,url:s.url}),this.emit(qt,a)):(console.error(`[MP4] [${n}] errorHandler,`,e),a=e,this.emit(qt,a))}async init(){this.url&&await this.MP4Loader.changeUrl(this.url,this.options.vid+Date.now(),this.CHUNK_SIZE),await this.getMetaInfo()}getTimeRange(){const e=[];let t=null;for(let i=0;this.videoTrak&&i<this.videoTrak.length;i++)t={startTime:this.videoTrak[i].startTime,endTime:this.videoTrak[i].endTime,downloaded:!1,isLoading:!1},e.push(t);if(this.audioTrak&&this.audioTrak.length>e.length)for(let i=e.length;i<this.audioTrak.length;i++)t={startTime:Math.max(this.audioTrak[i].startTime,t?t.endTime:0),endTime:Math.max(this.audioTrak[i].endTime,t?t.endTime:0),downloaded:!1,isLoading:!1},e.push(t);return e}async getMetaInfo(e=!0){try{this._metaLoading=!0,this.log("getMetaInfo start"),this.bufferLoaded=new Uint8Array(0);let t=0;const i=async(i,s,r,n,o)=>{const l=o?Number(function(e){const t=It;if(e&&e.get&&e.get(t)){const i=e.get(t).split("/");if(2===(null==i?void 0:i.length))return i[1]}return null}(o.headers)):0,h=o?Number(function(e){const t="Content-Length";return e&&e.get&&e.get(t)?e.get(t):null}(o.headers)):0;if(this.log("getMetaInfo onProgressHandle, dataLen,",i?i.byteLength:-1,", state,",s,",range,",JSON.stringify(r.range)),console.log("getMetaInfo onProgressHandle, dataLen,",s,",state","range",JSON.stringify(r.range),h,l),n)return void this.emit(qt,n);if(i&&r.range[0]===t&&(this.bufferLoaded=a(Uint8Array,this.bufferLoaded,new Uint8Array(i)),t+=i.byteLength),r.meta&&!this.meta){const t=r.meta;this.videoTrak=t.videoSegments,this.audioTrak=t.audioSegments,this.timeRange=this.getTimeRange(),this.meta={...t.meta,ext:{videoTrak:this.videoTrak,audioTrak:this.audioTrak}},t.bufferLoaded=this.bufferLoaded,this.log("meta reach"),e&&this.emit(Kt,this.meta)}this.meta&&s&&(this.log("[getMetaInfo req end]"),this._metaLoading=!1),this.meta&&(i||s)&&(this.log("emit moov_req_progress"),this.emit(Wt));const d=(null==r?void 0:r.range)||[];l>0&&!this.meta&&d&&d.length>1&&d[1]>=l&&(this.log("getMetaInfo_error_nometa"),this.emit(qt,{message:"getMetaInfo_error_nometa"}))};await this.MP4Loader.loadMetaProcess(this.MP4Loader.cache,[0,this.CHUNK_SIZE],i)}catch(t){console.error("[MP4] trigger errorHandler getMetaInfo",null==t?void 0:t.message),this.loadError(t,"getMetaInfo")}}getFragmentIdx(e){let t,i;if(this.videoTrak.length){if(t=this.videoTrak.find((t=>t.startTime<=e&&t.endTime>e)),i=this.audioTrak.find((t=>t.startTime<=e&&t.endTime>e)),t&&i)return Math.min(t.index,i.index);if(t||i)return t?t.index:i.index;{let e=Number.MAX_VALUE;return this.videoTrak&&this.videoTrak.length>0&&(e=this.videoTrak.length-1),this.audioTrak&&this.audioTrak.length>0&&(e=Math.min(this.audioTrak.length-1,e)),e}}return i=this.audioTrak.find((t=>t.startTime<=e&&t.endTime>e)),i?i.index:0}async _checkHasMeta(){this.log(" loadMeta start"),this._metaLoading=!0;try{const e=await this.MP4Loader.loadMeta(this.MP4Loader.cache,Math.round(this.CHUNK_SIZE/2));return this._metaLoading=!1,this.videoTrak=e.videoSegments,this.audioTrak=e.audioSegments,this.meta={...e.meta,ext:{videoTrak:this.videoTrak,audioTrak:this.audioTrak}},this.timeRange=this.getTimeRange(),this.bufferLoaded=new Uint8Array(0),e.bufferLoaded=this.bufferLoaded,!0}catch(e){return console.error(e),this._metaLoading=!1,this.emit(qt,e),console.error(e),!1}}resetFragmentLoadState(e){for(let t=0;t<this.timeRange.length;t++)t<e?(this.timeRange[t].downloaded=!0,this.timeRange[t].isLoading=!0):(this.timeRange[t].downloaded=!1,this.timeRange[t].isLoading=!1)}getFragRange(e){let t=null;this.videoTrak&&(t=e<this.videoTrak.length?this.videoTrak[e]:this.videoTrak[this.videoTrak.length-1]);let i=null;this.audioTrak&&(i=e<this.audioTrak.length?this.audioTrak[e]:this.audioTrak[this.audioTrak.length-1]);let s=0,r=0;this.videoTrak&&e>=this.videoTrak.length-1&&(s=-1),this.audioTrak&&e>=this.audioTrak.length-1&&(r=-1);const n=[Math.min((null==t?void 0:t.range[0])||1/0,(null==i?void 0:i.range[0])||1/0),Math.max((null==t?void 0:t.range[1])+s||0,(null==i?void 0:i.range[1])+r||0)];return e<this.timeRange.length&&(this.timeRange[e].range=n),n}async load(e,t){if(this._loadSuccessCallBack=t,this._switchBitRate&&!this._metaLoading){this.log("[switchBitrate], switch bitRate start load, time,",e>=this.videoTrak.length?this.audioTrak[e].startTime:this.videoTrak[e].startTime,", fragIndex,",e);const t=await this._checkHasMeta();this.changeBitRateTime>0&&(this.timeRange[e].startTime<=this.changeBitRateTime&&this.changeBitRateTime<this.timeRange[e].endTime?this.log("[switchBitrate], not need update load fragIndex",e,",stTime,",this.changeBitRateTime):(e=this.getFragmentIdx(this.changeBitRateTime),this.log("[switchBitrate], need update load fragIndex",e,",stTime,",this.changeBitRateTime,",newBitrateTimeRange,",this.timeRange[e].startTime,"-",this.timeRange[e].endTime),this.emit(Yt,e)),this.seekTime=this.changeBitRateTime,this.changeBitRateTime=-1),this.resetFragmentLoadState(e),this.log("[switchBitrate], reset timerange state,",e),this._needInitSegment=!0,this.resetTansmuxer(),t&&(this._switchBitRate=!1)}if(this._switchBitRate&&this._metaLoading)return;const i=this.getFragRange(e);if(this.log("loadFragment,",e,",range,",JSON.stringify(i)),this.seekTime>0){const t=this.getSubRange(e,this.seekTime,i);this.loadFragment(e,t),this.seekTime=-1}else this.loadFragment(e,i)}getSubRange(e,t,i){var s,r;let n=i[0],a=i[0];if(this.log(">>>>>getSubRange time,",t,JSON.stringify(i)),(null==(s=this.videoTrak)?void 0:s.length)>0){const i=e<this.videoTrak.length?this.videoTrak[e]:this.videoTrak[this.videoTrak.length-1],s=i.frames.filter(Jt),r=this.meta.videoTimescale;this.log(">>>>>getSubRange video, startTime,",i.startTime,",endTime,",i.endTime);const a=s.find(((e,a)=>{const o=e.startTime/r,l=a+1<s.length?s[a+1].startTime/r:i.endTime+.8;if(t>=o&&t<l)return this.log(">>>>>getSubRange video end, startTime,",o,",endTime,",l,",startRange,",n,", keyFrameIndex,",e.index),e}));n=(null==a?void 0:a.offset)||n}let o=1;if((null==(r=this.audioTrak)?void 0:r.length)>0){const s=e<this.audioTrak.length?this.audioTrak[e]:this.audioTrak[this.audioTrak.length-1],r=s.frames,n=this.meta.audioTimescale;o=Math.floor((t*n-r[0].startTime)/s.frames[0].duration),o=Math.min(r.length-1,o);let l=o>0?r[o-1].startTime/n:r[0].startTime/n;for(;o>=0;){if(o>0&&l>t){o-=1,l=r[o].startTime/n;continue}const e=(r[o].startTime+r[o].duration)/n;if(l<=t&&t<e&&i[0]<r[o].offset){a=r[o].offset,this.log(">>>>>getSubRange audio end, startTime,",l,",endTime,",e,",startRange,",a,", index,",o);break}l=e,o++}}const l=[Math.min(a,n),i[1]];return this.log(">>>>>getSubRange finalRange ",JSON.stringify(l),",oldRange,",JSON.stringify(i)),l}_mux(e,t,i,s){const r=this.getSamplesRange(i,"video"),n=this.getSamplesRange(i,"audio"),a=[t,t+e.byteLength];try{this.MP4Demuxer||(this.MP4Demuxer=new q(this.videoTrak,this.audioTrak,null,{openLog:Ht()}));const o=this.MP4Demuxer.demuxPart(e,t,r,n,this.meta.moov,this.useEME,this.kidValue);let l;this.FMP4Remuxer||this.checkCodecH265()&&!this.options.supportHevc||(this.FMP4Remuxer=new V(this.MP4Demuxer.videoTrack,this.MP4Demuxer.audioTrack,{openLog:Ht()})),this.log("[mux], videoTimeRange,",o.videoTrack?[o.videoTrack.startPts,o.videoTrack.endPts]:null,",audioTimeRange,",o.audioTrack?[o.audioTrack.startPts,o.audioTrack.endPts]:null);const h=Math.min(o.videoTrack.startPts,o.audioTrack.startPts),d=[h,Math.max(o.videoTrack.endPts,o.audioTrack.endPts)];if(this.FMP4Remuxer){const e=this.FMP4Remuxer.remux(this._needInitSegment,{initMerge:!0,range:a});e.initSegment&&(this._needInitSegment=!1);l={buffer:Lt.concatData(e.audioSegment,e.videoSegment),range:a,state:s,context:{range:a,fragIndex:i,timeRange:d},initSeg:e.initSegment}}else l={videoTrack:o.videoTrack,audioTrack:o.audioTrack,buffer:null,range:a,state:s,context:{range:a,fragIndex:i,timeRange:d}};this._loadSuccessCallBack&&this._loadSuccessCallBack(l)}catch(o){console.error("mux err:",o);const s=new Mt(kt.remux,wt.muxError,{msg:JSON.stringify(o)});this.errorHandler(s,"mux",{fragIndex:i,range:[t,t+e.byteLength]})}}getSamplesRange(e,t){const i=[];switch(t){case"video":if(this.videoTrak&&e<this.videoTrak.length){const t=this.videoTrak[e].frames;i.push(t[0].index),i.push(t[t.length-1].index)}break;case"audio":if(this.audioTrak&&e<this.audioTrak.length){const t=this.audioTrak[e].frames;i.push(t[0].index),i.push(t[t.length-1].index)}break;default:console.warn("[getSamplesRange] type ",t," is invalid")}return i}async loadFragment(e,t){if(!(this._isPending||t.length>0&&0===t[0]&&0===t[1]||this.timeRange[e].isLoading))if(this.log("[MP4.loadFragment] ,fragIndex,",e,",range ",t,",len ,",t[1]-t[0],", bufferLoaded_Len,",this.bufferLoaded.byteLength),t.length>=2&&t[1]&&t[1]>0&&t[1]<=this.bufferLoaded.byteLength){this.timeRange[e].isLoading=!0;const i=Math.max(t[0],this.bufferLoadedPos),s=new Uint8Array(this.bufferLoaded.slice(i,t[1]));this.log("[mp4.loadFragment] has all data: ",i,t[1]),this.timeRange[e].downloaded=!0,this.bufferLoadedPos=-1,this._mux(s,i,e,!0)}else if(t.length>=2&&t[0]&&t[0]<=this.bufferLoaded.byteLength){if(!this.timeRange[e].isLoading){const i=Math.max(t[0],this.bufferLoadedPos),s=new Uint8Array(this.bufferLoaded.slice(i,t[1]));if(s.byteLength>0)return this.bufferLoadedPos=i+s.byteLength,this.log("[mp4.loadFragment] has part data: ",i,i+s.byteLength),void this._mux(s,i,e,t[1]<=this.bufferLoadedPos);this._metaLoading||this.timeRange[e].isLoading||(this.log("[mp4.loadFragment] ready to load part data >>> ",this.bufferLoaded.byteLength,t[1]),this.timeRange[e].isLoading=!0,await this.startLoad([this.bufferLoaded.byteLength,t[1]],e))}}else this._metaLoading&&!(t[0]>=this.CHUNK_SIZE)||this.timeRange[e].isLoading||(this.timeRange[e].isLoading=!0,this.log("[mp4.loadFragment],ready to load all data ,segmentIdx, ",e,",range >>> ",JSON.stringify(t)),await this.startLoad(t,e))}async startLoad(e,t){try{await this.MP4Loader.loadData(e,this.MP4Loader.cache,{index:t,onProgress:this.onprogressDataArrive,onProcessMinLen:this.options.onProcessMinLen,url:this.url})}catch(i){console.error("[MP4] trigger errorHandler startLoad",e,t,null==i?void 0:i.message),this.timeRange[t].isLoading=!1,this.loadError(i,"startLoad",{range:e,fragIndex:t})}}loadError(e,t,i){var s;!e.response&&(e.response={}),e.isTimeout?e.response.status="timeout":(null==(s=null==e?void 0:e.response)?void 0:s.status)||(e.response.status="networkError"),this.errorHandler(e,t,i)}async cancelLoading(){await this.MP4Loader&&this.MP4Loader.cancel()}async update(e){this.url=e,this.MP4Loader&&this.MP4Loader.changeUrl(e),this.MP4Loader&&this.MP4Loader.changeUrl(e)}restart(){this._isPending=!1,this.meta||this.init()}checkCodecH265(){return this.meta&&(this.meta.videoCodec.indexOf("hvc1")>-1||this.meta.videoCodec.indexOf("hev1")>-1)}destroy(){this.hasDestroyed||(this.resetTansmuxer(),this._isPending=!1,this._metaLoading=!1,this.bufferLoadedPos=0,this.bufferLoaded=new Uint8Array(0),this.MP4Loader&&(this.MP4Loader.cancel(),this.MP4Loader.destroy()),this.hasDestroyed=!0)}resetTansmuxer(){this.MP4Demuxer&&this.MP4Demuxer.reset(),this.MP4Demuxer=null,this.FMP4Remuxer&&this.FMP4Remuxer.reset(),this.FMP4Remuxer=null}}function Jt(e){if(e.keyframe)return e}class Xt{constructor(e){this.onTick_=e,this.cancelPending_=null}tickAfter(e,t=null){this.stop();let i=!0,s=null;this.cancelPending_=()=>{window.clearTimeout(s),i=!1};return s=window.setTimeout((()=>{i&&(this.onTick_(),t&&t())}),1e3*e),this}tickEvery(e){this.tickAfter(e,(()=>{this.tickEvery(e)}))}stop(){this.cancelPending_&&(this.cancelPending_(),this.cancelPending_=null)}}class Gt{constructor(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.resolve=function(t){e(t),i.state="fulfilled"},i.reject=function(e){t(e),i.state="rejected",i.isBreak="DESTROYED"===e},i.state="pending",i}resolve(e){}reject(e){}}let Qt=null,Zt=null,ei=null,ti=null;class ii extends t.BasePlugin{constructor(e){super(e),__publicField(this,"_onMp4DataCallBack",(()=>{this._isMseInit&&this._onTimeUpdate()})),__publicField(this,"_onMp4MetaReady",(e=>{const{config:i}=this,s=this.mp4.checkCodecH265();try{if(s&&!this.config.supportHevc){const e="browser not support HEVC",s=new t.Errors(this.player,{errorType:"runtime",errorTypeCode:kt.runtime,errorCode:wt.h265Error,errorMessage:e,vid:i.vid,mediaError:{code:wt.h265Error,message:e}});this._errorHandler(s)}else this._initMse(e),this._initPromise.resolve()}catch(r){console.error(r);const e=new t.Errors(this.player,{errorType:"runtime",errorTypeCode:kt.runtime,errorCode:wt.mse,errorMessage:null==r?void 0:r.message,vid:i.vid,mediaError:{code:wt.other1,message:null==r?void 0:r.message}});return void this._errorHandler(e)}this._loadData()})),__publicField(this,"_onMp4Error",(e=>{const{vid:t}=this.playerConfig;console.error("[Index] _onMp4Error",t,e),this._errorHandler(e)})),__publicField(this,"_loadDataSuccess",(e=>{if(!this.isDestroy&&this.mse){this.log("[loadFragment] _loadDataSuccess ",JSON.stringify(e.context.range),",dataLen,",e.buffer?e.buffer.byteLength:0,e.state);try{e.initSeg&&(this._appendInitSeg(e.initSeg),(!e.buffer||e.buffer.byteLength<1)&&(this.log("no data, must load data"),this._onTimeUpdate()));const{buffer:t,state:i,context:s}=e;if(this.mse&&i&&(!t||t.byteLength<=0)&&s.fragIndex===this.mp4.timeRange.length-1){const e=this.player.buffered;e&&e.length>0&&(this.bufferEndTime=e.end(e.length-1)),this._isEnded(),this.log("loaded ended !!!==>>>",JSON.stringify(s.range),", fragIndex,",s.fragIndex,", bufferEndTime,",this.bufferEndTime,",meta_duration,",this.mp4.meta.duration)}if(this.mse&&i&&s.fragIndex===this.mp4.timeRange.length-1&&(!t||t.byteLength<=0)){const e=this.player.buffered;e&&e.length>0&&(this.bufferEndTime=e.end(e.length-1)),this._isEnded(),this.log("load ended !!!==>>>",this.playerConfig.vid,JSON.stringify(s.range),", fragIndex,",s.fragIndex,", bufferEndTime,",this.bufferEndTime,",meta_duration,",this.mp4.meta.duration)}t&&this.mse&&t&&t.byteLength>0&&this._appendBuffer(rt.VIDEO,t,s,i)}catch(i){console.error("appendBuffer error: ",i),this.log("appendBuffer error",i);const e=new t.Errors(this.player,{errorType:"runtime",errorTypeCode:kt.runtime,errorCode:wt.mse,vid:this.player.config.vid,errorMessage:i.message,mediaError:{code:wt.mse,message:i.message}});this._errorHandler(e)}(null==e?void 0:e.state)&&this._onTimeUpdate()}})),__publicField(this,"_onWaiting",(()=>{const{player:e,config:t}=this;clearTimeout(this._waitInBufferTimer),this._waitInBufferTimer=null;const i=e.currentTime,s=e.bufferedPoint;s.end>0&&s.end-e.currentTime>=2&&this._waitAdjustTimeCnt<t.waitJampBufferMaxCnt&&(this._waitInBufferTimer=setTimeout((()=>{this._waitAdjustTimeCnt++,e.currentTime=e.currentTime+.5,this.log("[waitInBufferTimeout], waitAdjustTimeCnt,",this._waitAdjustTimeCnt,",curtime,",i,Lt.nowTime())}),t.waitingInBufferTimeOut))})),__publicField(this,"_onSeeking",(async()=>{const{player:e,mp4:t}=this,i=e.currentTime;if(this.log("[seekTime], curTime,",i,",buffer,",e.buffered2.bufferedList),!t||!t.meta)return;this.endofstream=!1,t.bufferLoadedPos=-1,t._metaLoading=!1;const s=e.bufferedPoint;let r=!1,n=0;if(s.end>0){if(r=!0,t.meta.duration-s.end<.5)return this._startProgress(),void this.log("[seeking in buffered range], buffer end,",s.end,", duration,",t.meta.duration);if(n=t.getFragmentIdx(s.end),this._curLoadSegmentIdx===n)return this._startProgress(),void this.log("[seeking in buffered range], seek fragIndex is current load segmentIdx",n);t.seekTime=s.end,n<0&&(n=this._curLoadSegmentIdx),this.log("[seeking in buffered range], seekTime ",i,",bufferRange,",s.start,"-",s.end,", fragIndex,",n)}if(!r){t.seekTime=i,n=t.getFragmentIdx(i),n<0&&(n=this._curLoadSegmentIdx),this.log("[seekTime out buffer range], curTime,",i,", Idx,",n);const{mse:s}=this;if(s&&s.isFull()){const t=e.buffered2.bufferedList,i=t[t.length-1];s.clearOpQueues(rt.VIDEO),this._checkRemoveSourceBuffer([i.start,i.end],e.currentTime,!0,!0)}}await t.cancelLoading(),t.resetFragmentLoadState(n),this._curLoadSegmentIdx=n,this._onTimeUpdate(),this._startProgress(),this._isEnded()})),__publicField(this,"changeDefineCanPlay",((e,i,s,r)=>{const{player:n}=this;if(n.ended)return void(n.currentTime=0);this.log("[oldChangeDefinition],this._changeDefState,",this._changeDefState),n.currentTime=this._changeDefState?this._changeDefState.currentTime:e;(this._changeDefState?this._changeDefState.paused:i)?n.pause():n.play(),this._changeDefState=null,n.emit(t.Events.AFTER_DEFINITION_CHANGE,{from:s,to:r})})),__publicField(this,"changeDefinition",(async(e,i)=>{const{player:s,config:r,mp4:n}=this;i||(i=s.curDefinition),this._MSEError=!1;const{definitionList:a}=s;let o=null;for(let t=0;t<a.length;t++){const i=a[t].definition;if(i===e.definition||i===Number(e.definition)){o=a[t];break}}if(!o)return void console.error("there is no definition for ",e);if(r.witchBitRateWay)return void this.oldChangeDefinition(o,i);if(this.useVideoLoad)return void ei.call(this.player,o,i);s.emit(t.Events.DEFINITION_CHANGE,{from:i,to:o});const l=s.currentTime;let h=n.getFragmentIdx(l);h<0&&(h=this._curLoadSegmentIdx),this.log("switchBitrate:point,fragIndex,",h,",startTime,",n.timeRange[h].startTime,",currentTime,",s.currentTime),n&&(this.mp4.changeBitRateTime=l,await n.cancelLoading(),n._metaLoading&&(n._metaLoading=!1)),this._removeBuffeEndTime=n.timeRange[h].startTime,this._isChangeDefinition=!0;const d=s.getBufferedRange(s.buffered);d[1]>0&&d[1]-s.currentTime>5&&(this.mse.clearOpQueues(rt.VIDEO),this.mse.remove(rt.VIDEO,s.currentTime+5,d[1])),this.log("switchBitrate: resetFragmentLoadState,",h),n.resetFragmentLoadState(h),this._curLoadSegmentIdx=h,this._handlerUrl(o.url),s.config.url=o.url;const c={...o,url:this.config._mainURL};await this.mp4.changeBitRate(c),this._onTimeUpdate(),s.emit("RESOLUTION_UPDATE",c)})),__publicField(this,"_replayHook",(()=>{var e;return null==(e=this.player)||e.play(),!1})),__publicField(this,"_retryHook",(()=>(this.beforePlayerInit(),!1))),__publicField(this,"_errorMiddleware",((e,t)=>{const{error:i}=e||{},{video:s}=this.player||{};i&&i.message&&i.message.indexOf("CHUNK_DEMUXER_ERROR_APPEND_FAILED")>-1||s&&!this.useVideoLoad&&function(e){return e.media&&(e=e.media),!!(e&&e instanceof HTMLMediaElement)&&(/^blob/.test(e.currentSrc)||/^blob/.test(e.src))}(s)?this._errorHandler(i):t(e.eventName,null==e?void 0:e.error)})),this.compatibleConfig(this.playerConfig),this.mp4=null,this.mse=null,this._waitAdjustTimeCnt=0,this._lastCheckTime=Lt.nowTime(),this._removeBuffeEndTime=0,this._pendingPromises=[]}static get pluginName(){return"mp4Plugin"}static get defaultConfig(){return{maxBufferLength:40,minBufferLength:5,disableBufferBreakCheck:!1,waitingTimeOut:15e3,waitingInBufferTimeOut:5e3,waitJampBufferMaxCnt:3,tickInSeconds:.1,reqOptions:null,closeDowngrade:!1}}static get version(){return"3.0.0-alpha.32"}compatibleConfig(e){const t=Object.keys(e);let i=null;for(let n=0;n<t.length;n++){const s=t[n].toLowerCase();if("mp4player"===s||"m4aplayer"===s){i=e[t[n]];break}}i&&(this.config={...this.config,...i});let{reqOptions:s,headers:r}=this.config;!r||s&&s.headers||(this.config.reqOptions={...s,headers:r})}afterCreate(){window.__mp4player=this;try{t.BasePlugin.defineGetterOrSetter(this.player,{__url:{get:()=>{try{return this.mse?this.mse.url:this.config.url}catch(e){return console.error(e),null}}}})}catch(e){console.error(e)}this._proxyPlayer()}attachEvents(){this.off(t.Events.SEEKING,this._onSeeking),this.on(t.Events.SEEKING,this._onSeeking),this.on(t.Events.WAITING,this._onWaiting),this.off(t.Events.URL_CHANGE,this.switchURL),this.on(t.Events.URL_CHANGE,this.switchURL)}detachEvents(){this.off(t.Events.SEEKING,this._onSeeking),this.off(t.Events.WAITING,this._onWaiting),this.off(t.Events.URL_CHANGE,this.switchURL)}_proxyPlayer(){"function"==typeof this.player.playNext&&(Qt=this.player.playNext),this.player.playNext=(...e)=>{this.playNext(...e)},Zt=this.player._startInit,ti=this.player.switchURL,ei=this.player.changeDefinition,this.player._startInit=this._playerStartInit.bind(this),this.player.switchURL=this.switchURL.bind(this),this.player.changeDefinition=this.changeDefinition.bind(this),this.player.useHooks("replay",this._replayHook),this.player.useHooks("retry",this._retryHook),this.player.setEventsMiddleware({error:this._errorMiddleware})}_playerStartInit(e){var i;const{config:s,playerConfig:r}=this;void 0===s.supportHevc&&(null==(i=t.Sniffer)?void 0:i.isHevcSupported)&&t.Sniffer.isHevcSupported()&&(s.supportHevc=!0),this._handlerUrl(r.url);const n=this.initMp4();this._initPromise=n,this._addPendingPromise(this._initPromise),this.mse&&"String"===t.Util.typeOf(e)&&/^blob/.test(e)&&e!==this.mse.url&&(e=r.url),n.then((()=>{this.mse&&(e=this.mse.url),this.attachEvents(),this._startProgress()})).catch((i=>{console.error(i);const s=!!this._initPromise&&this._initPromise.isBreak;if(this.isDestroy||s)return;let r=i;r.errorCode||(r=new t.Errors(this.player,{errorType:kt.RUNTIME,errorCode:(null==i?void 0:i.errorCode)||wt.other,vid:this.playerConfig.vid,errorMessage:(null==i?void 0:i.errorMessage)||(null==i?void 0:i.message),mediaError:{code:(null==i?void 0:i.httpCode)||wt.other,message:(null==i?void 0:i.errorMessage)||(null==i?void 0:i.message),errorType:null==i?void 0:i.errorType}}),r.url=e),this.useVideoLoad=!0,this.player.vtype="MP4_1",this.player.emit("playCatch",this.player.vtype,r)})).finally((()=>{if(!this._initPromise)return;const{isBreak:t}=this._initPromise;t||(this._initPromise&&this._removePendingPromise(this._initPromise),this._initPromise=null,!this.isDestroy&&!t&&Zt.call(this.player,e))}))}initMp4(){const{player:e,config:t}=this;e.config.vid||(e.config.vid=Date.now());const i=new Gt;this.mp4&&(this.mp4.off(Kt,this._onMp4MetaReady),this.mp4.off(qt,this._onMp4Error),this.mp4.off(Wt,this._onMp4DataCallBack),this.mp4.destroy(),this.mp4=null);const s=t._mainURL;return this.mp4=new $t(s,{...this.config,vid:e.config.vid}),this.mp4.on(Kt,this._onMp4MetaReady),this.mp4.on(qt,this._onMp4Error),this.mp4.on(Wt,this._onMp4DataCallBack),this.mp4.on(Yt,(e=>{this._curLoadSegmentIdx=e,this.log("[update curLoadSegmentIdx]",e)})),this.mp4.init(),i}_handlerUrl(e){const{config:i,playerConfig:s}=this;let r;const n=[];if("String"===t.Util.typeOf(e))r=e,s.backupURL&&n.push(s.backupURL);else if("Array"===t.Util.typeOf(e)&&e.length>0&&(r=e[0].src,e.length>1))for(let t=1;t<e.length;t++)n.push(e[t].src);if(!r&&0===n.length)return!1;i._mainURL=r,i._backupURL=n}setConfig(e){this.config=Object.assign(this.config,e)}playNext(e){const{player:t}=this;this._defInited=!1,t.resetState(),t._currentTime=0,t._duration=0,t.isPlaying=!1,this._MSEError=!1,t.pause(),this._reset(),t.setConfig(e),this.log("[Index] playNext",e),t.play(),this.emit("playnext")}checkDegrade(e){const{closeDowngrade:t}=this.config;return!t||"networkError"===e.httpCode}_errorHandler(e){var t,i;const{player:s,config:r,playerConfig:n}=this;if(!s||this.useVideoLoad)return;const{_backupURL:a}=r;if(a&&a.length>0){const e=a[0];return this.mp4.update(e),this.mp4.restart(),void a.splice(0,1)}!e.url&&(null==(t=this.mp4)?void 0:t.url)&&(e.url=this.mp4.url);const o=s.paused;console.error("final error !!!!, ",r.vid,e,null==(i=this.player.video)?void 0:i.error),this.player.vtype="MP4_2",this.player.emit("playCatch",this.player.vtype,e);if(this.checkDegrade(e)){this._initPromise&&this._removeAndRejectInitPromise(e),this._reset();const t=this.mp4?this.mp4.url:n.url;this._startDegradedPlayback(e,o,t)}else{this.player.pause(),this._reset();const{currentTime:t}=s;this.destroyMSE(),s.currentTime=t,this.emit("error",e)}}_startDegradedPlayback(e,t,i){const{player:s,playerConfig:r}=this;this.useVideoLoad=!0,this.destroyMSE(),this._currentTime=s._currentTime,this.__onmetadataHandle=()=>{this._currentTime&&(s.currentTime=this._currentTime),t?this.player.pause():this.player.play();(s.media||s.video).removeEventListener("loadedmetadata",this.__onmetadataHandle),this.__onmetadataHandle=null};const n=s.media||s.video;n.addEventListener("loadedmetadata",this.__onmetadataHandle),Ct(n),r.url=i,Pt(s,i)}_addPendingPromise(e){this._pendingPromises.push(e)}_removePendingPromise(e){const t=this._pendingPromises.indexOf(e);t>-1&&this._pendingPromises.splice(t,1)}_cancelPendingPromises(){this._pendingPromises.length>0&&this._pendingPromises.forEach((e=>{e.reject("DESTROYED")})),this._pendingPromises=[]}_removeAndRejectInitPromise(e){this._initPromise&&(this._removePendingPromise(this._initPromise),this._initPromise.reject(e))}async _initMse(e){this.mse&&(await this.mse.unbindMedia(),this.mse=null);const t=this.mp4&&this.mp4.checkCodecH265(),i=!!e.videoCodec,s=!!e.audioCodec;let r;r=i&&s?t?'video/mp4; codecs="hev1.1.6.L93.B0, mp4a.40.5"':'video/mp4; codecs="avc1.64001E, mp4a.40.5"':i?t?'video/mp4; codecs="hev1.1.6.L93.B0"':'video/mp4; codecs="avc1.64001E"':'video/mp4; codecs="mp4a.40.5"';const n={[rt.VIDEO]:{mimeType:"video/mp4",codec:r}};this.mse=new rt;this.mse.bindMedia(this.player.video).then((()=>{const e=Object.keys(n);try{for(let t=0;t<e.length;t++){const i=e[t];this.mse.createSource(i,n[i].codec)}}catch(t){console.error("MSE error: ",t),this._errorHandler(t)}this._isMseInit=!0,this._onTimeUpdate()}))}async destroyMSE(){var e;await(null==(e=this.mse)?void 0:e.unbindMedia()),this.mse=null}_onTimeUpdate(){const{mse:e,mp4:t,player:i,config:s}=this;if(!t)return;const r=t.timeRange,n=i.getBufferedRange(i.buffered2);if(e&&t&&t.canDownload){Lt.nowTime()-this._lastCheckTime>1e3&&(this._lastCheckTime=Lt.nowTime(),this._loadStuckCheck(),this._checkRemoveSourceBuffer(n,i.currentTime));const e=i.paused?i.currentTime+s.minBufferLength:i.currentTime+s.maxBufferLength;n[1]-e<0&&r.every(((e,t)=>!!e.downloaded||(!this._isChangeDefinition&&e.endTime-e.startTime>1&&this._isInBuffer(e)?(e.downloaded=!0,e.isLoading=!0,this.log(`onTimeUpdate, ${t} download segment, has buffer`,e.startTime,e.endTime),!0):void(e.startTime-i.currentTime<s.maxBufferLength&&(this._curLoadSegmentIdx=t,this.log("[onTimeUpdate],load index==>>>, ",t,",IdxTimeRange, ",e.startTime,"-",e.endTime,",buffEnd, ",n[1],",playCurTime,",i.currentTime,", bufferLen,",n[1]-i.currentTime,",bufferRangeList,",this.player.buffered2?this.player.buffered2.bufferedList:null),this._loadData()))))),this._isEnded()}this.checkRemoveOldBitrateBuffer()}checkRemoveOldBitrateBuffer(){const{mse:e,player:t}=this;e&&this._removeBuffeEndTime>0&&t.currentTime>this._removeBuffeEndTime+1&&(this.log("remove old bitrate buffer",this._removeBuffeEndTime),e.remove(rt.VIDEO,0,this._removeBuffeEndTime-1),this._removeBuffeEndTime=0)}_isInBuffer(e,t=0){let i=!1;const s=this.player.video.buffered;for(let r=0;r<s.length;r++){const n=s.start(r)-t,a=s.end(r)+t;if(n<=e.startTime&&e.endTime<=a){i=!0;break}}return i}async _loadData(){if(this.mp4&&this._isMseInit)try{await this.mp4.load(this._curLoadSegmentIdx,this._loadDataSuccess)}catch(e){console.error("[Index] _loadData error",this.playerConfig.vid,e),this._errorHandler(e)}else this.log("loadData, player.mp4 null",this._isMseInit)}_appendInitSeg(e){this.mp4&&this.mse&&this.mse.append(rt.VIDEO,e,{vid:this.playerConfig.vid,range:null,dataLen:e.byteLength,isinit:!0}).then((e=>{this.log("appendInitSeg end ==>>>",e.context?e.context:null,", costTime,",e.costtime)}))}_appendBuffer(e,t,i={},s){const{mse:r,config:n}=this;r.append(e,t,{vid:n.vid,fragIndex:i.fragIndex,range:i.range,dataLen:t.byteLength,state:s}).then((e=>{if(e&&(this.log("player appendBuffer end ==>>>",e.context?e.context:null,", costTime,",e.costtime,", opt,",e.name,",bufferRange,",this.player.getBufferedRange()),this.mse&&i.state&&i.fragIndex===this.mp4.timeRange.length-1)){const e=this.player.buffered;e&&e.length>0&&(this.bufferEndTime=e.end(e.length-1)),this._isEnded(),this.log("loaded ended !!!==>>>",i.range,", fragIndex,",i.fragIndex,", bufferEndTime,",this.bufferEndTime,",meta_duration,",this.mp4.meta.duration)}})).catch((e=>{if(console.log("[MSE error]",e),e&&(null==r?void 0:r.isFull())){const e=this.player.getBufferedRange(this.player.buffered2);this._checkRemoveSourceBuffer(e,this.player.currentTime,!0)}}))}_checkRemoveSourceBuffer(e,t,i){const{mse:s,mp4:r,player:n}=this;if(s&&r&&n&&(i&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),e||(e=n.getBufferedRange(n.buffered2)),t||(t=n.currentTime),!(!i&&Lt.nowTime()-this._checkRemoveBufferLastTime<=this.config.removeBufferLen||this.endofstream)&&(this._checkRemoveBufferLastTime=Lt.nowTime(),e&&e[0]>=0&&(t-e[0]>this.config.removeBufferLen||s.isFull())))){const i=e[1],n=r.getFragmentIdx(i);if(n>=0&&r.timeRange[n].startTime<t){const t=Math.floor(Math.min(r.timeRange[n].startTime,e[1]));e[0]<t?(this.log("[checkremoveSourceBuffer], remove range==>>>",e[0],t),s.remove(rt.VIDEO,e[0],t)):s.isFull()&&!this._removeBufferTimer&&(this._removeBufferTimer=setTimeout((()=>{this._checkRemoveSourceBuffer(null,null,!0)}),1e4))}}}_isEnded(){const{player:e,mp4:t}=this,i=e.bufferedPoint,s=i?i.end:0;return!this.endofstream&&this.mse&&t.meta.duration-e.currentTime<.5&&(this.log("[check player isEnded],deal mse.endOfStream, currentTime,",e.currentTime,", bufferend,",s,", duration,",t.meta.duration),this.endofstream=!0,this.mse.endOfStream()),!!(t&&t.meta&&t.meta.duration-e.currentTime<.5)&&(this._stopProgress(),this.log("[check player isEnded],stopProgress and endOfStream,currentTime, ",e.currentTime,", bufferend,",s,", duration,",t.meta.duration),this.mse&&this.mse.endOfStream(),!0)}switchURL(e){if(this.useVideoLoad){const{player:t}=this,{currentTime:i}=t;Pt(t,e),t.once("canplay",(()=>{t.currentTime=i})),t.play()}else this.changeDefinition(e)}oldChangeDefinition(e,t){const{config:i,player:s}=this;this.log("[oldChangeDefinition],currentTime,",s.currentTime,",from,",t,",to,",e);const{currentTime:r,paused:n}=s;this._changeDefState||(this._changeDefState={currentTime:r,paused:n},this.log("[oldChangeDefinition],currentTime,",s.currentTime,",pause,",n)),s.config.url=e.url,i.focusUserDefinition=!0,s.currentTime=0,s.pause(),this._reset(),this._isMseInit=!1,this._changeDefineCanPlay&&s.off("canplay",this._changeDefineCanPlay),this._changeDefineCanPlay=()=>{this.changeDefineCanPlay(r,n,t,e),this._changeDefineCanPlay=null},s.once("canplay",this._changeDefineCanPlay),this.player.video.load(),this.initMp4()}_loadStuckCheck(){const{config:e,player:i,playerConfig:s}=this;e.disableBufferBreakCheck||(i.currentTime-(this._lastCurrentTime||0)>.1||i.paused?1!==this._bufferBreakFlag&&2!==this._bufferBreakFlag||(this.log("视频没有卡死,重置卡死标记"),this._bufferBreakFlag=0,clearTimeout(this._bufferBreakTimer),this._bufferBreakFlag=null):this._bufferBreakFlag||(this._bufferBreakFlag=1,this.log(`卡死计时开始! 持续${e.waitingTimeOut}毫秒则确认卡死`),this._bufferBreakTimer=setTimeout((()=>{this.isDestroy||(1===this._bufferBreakFlag&&(this._bufferBreakFlag=2,this.log("确认卡死!!!"),this._errorHandler(new t.Errors(this.player,{errorType:"runtime",errorTypeCode:kt.runtime,errorCode:wt.waitTimeout,errorMessage:"wait_timeout",vid:s.vid}))),this._bufferBreakTimer=null)}),e.waitingTimeOut)),this._lastCurrentTime=i.currentTime)}get isDestroy(){return!this.player}_stopProgress(){this._hasStartProgress=!1,this._requestTimer&&(this._requestTimer.stop(),this._requestTimer=null),this._bufferBreakTimer&&(clearTimeout(this._bufferBreakTimer),this._bufferBreakTimer=null,this._bufferBreakFlag=void 0)}_startProgress(){this._hasStartProgress||(this._stopProgress(),this._requestTimer=new Xt((()=>{this._requestTimer&&this._onTimeUpdate()})),this._requestTimer.tickEvery(this.config.tickInSeconds),this._hasStartProgress=!0)}log(e,...t){const{playerConfig:i}=this;Vt(i&&i.vid?`[Index]${i.vid} ${e}`:`[Index] ${e}`,...t)}_reset(){this._isMseInit=!1,this.endofstream=!1,this._curLoadSegmentIdx=0,this._removeBuffeEndTime=0,this._isChangeDefinition=!1,this._stopProgress(),this.mp4&&(this.mp4.off(Kt,this._onMp4MetaReady),this.mp4.off(qt,this._onMp4Error),this.mp4.off(Wt,this._onMp4DataCallBack),this.mp4.destroy(),this.mp4=null),this.mse&&(this.mse.unbindMedia(),this.mse=null),Ct(this.player.video)}destroy(){const{player:e}=this;e.removeHooks("replay",this._replayHook),e.removeHooks("retry",this._retryHook),e.removeEventsMiddleware({error:this._errorMiddleware}),this.detachEvents(),this._reset(),this.player.playNext=Qt,this.player._startInit=Zt,this.player.changeDefinition=ei,this.player.switchURL=ti,this._bufferBreakTimer&&clearInterval(this._bufferBreakTimer),this._removeBufferTimer&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),this._waitInBufferTimer&&(clearTimeout(this._waitInBufferTimer),this._waitInBufferTimer=null)}}e.M4aPlayer=ii,e.default=ii,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
1
|
+
var __defProp=Object.defineProperty,__defNormalProp=(e,t,i)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,__publicField=(e,t,i)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,i),i);!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("xgplayer")):"function"==typeof define&&define.amd?define(["exports","xgplayer"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Mp4Plugin={},e.Player)}(this,(function(e,t){"use strict";var i={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function s(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function n(e,t,s,n,a){if("function"!=typeof s)throw new TypeError("The listener must be a function");var o=new r(s,n||e,a),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function o(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),o.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(i?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},o.prototype.listeners=function(e){var t=i?i+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,n=s.length,a=new Array(n);r<n;r++)a[r]=s[r].fn;return a},o.prototype.listenerCount=function(e){var t=i?i+e:e,s=this._events[t];return s?s.fn?1:s.length:0},o.prototype.emit=function(e,t,s,r,n,a){var o=i?i+e:e;if(!this._events[o])return!1;var l,h,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,s),!0;case 4:return d.fn.call(d.context,t,s,r),!0;case 5:return d.fn.call(d.context,t,s,r,n),!0;case 6:return d.fn.call(d.context,t,s,r,n,a),!0}for(h=1,l=new Array(c-1);h<c;h++)l[h-1]=arguments[h];d.fn.apply(d.context,l)}else{var u,f=d.length;for(h=0;h<f;h++)switch(d[h].once&&this.removeListener(e,d[h].fn,void 0,!0),c){case 1:d[h].fn.call(d[h].context);break;case 2:d[h].fn.call(d[h].context,t);break;case 3:d[h].fn.call(d[h].context,t,s);break;case 4:d[h].fn.call(d[h].context,t,s,r);break;default:if(!l)for(u=1,l=new Array(c-1);u<c;u++)l[u-1]=arguments[u];d[h].fn.apply(d[h].context,l)}}return!0},o.prototype.on=function(e,t,i){return n(this,e,t,i,!1)},o.prototype.once=function(e,t,i){return n(this,e,t,i,!0)},o.prototype.removeListener=function(e,t,s,r){var n=i?i+e:e;if(!this._events[n])return this;if(!t)return a(this,n),this;var o=this._events[n];if(o.fn)o.fn!==t||r&&!o.once||s&&o.context!==s||a(this,n);else{for(var l=0,h=[],d=o.length;l<d;l++)(o[l].fn!==t||r&&!o[l].once||s&&o[l].context!==s)&&h.push(o[l]);h.length?this._events[n]=1===h.length?h[0]:h:a(this,n)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=i?i+e:e,this._events[t]&&a(this,t)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=i,o.EventEmitter=o,e.exports=o}(i);var s,r=i.exports,n={};Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){for(var t=0,i=arguments.length,s=Array(i>1?i-1:0),r=1;r<i;r++)s[r-1]=arguments[r];var n=!0,a=!1,o=void 0;try{for(var l,h=s[Symbol.iterator]();!(n=(l=h.next()).done);n=!0){var d=l.value;t+=d.length}}catch(v){a=!0,o=v}finally{try{!n&&h.return&&h.return()}finally{if(a)throw o}}var c=new e(t),u=0,f=!0,p=!1,m=void 0;try{for(var g,_=s[Symbol.iterator]();!(f=(g=_.next()).done);f=!0){var y=g.value;c.set(y,u),u+=y.length}}catch(v){p=!0,m=v}finally{try{!f&&_.return&&_.return()}finally{if(p)throw m}}return c};var a=((s=n)&&s.__esModule?s:{default:s}).default;const o="video",l="audio",h="metadata",d="avc",c="hevc",u="aac",f="g7110a",p="g7110m";class m{constructor(){__publicField(this,"id",1),__publicField(this,"type",o),__publicField(this,"codecType",d),__publicField(this,"pid",-1),__publicField(this,"hvcC"),__publicField(this,"codec",""),__publicField(this,"timescale",0),__publicField(this,"formatTimescale",0),__publicField(this,"sequenceNumber",0),__publicField(this,"baseMediaDecodeTime",0),__publicField(this,"baseDts",0),__publicField(this,"duration",0),__publicField(this,"warnings",[]),__publicField(this,"samples",[]),__publicField(this,"pps",[]),__publicField(this,"sps",[]),__publicField(this,"vps",[]),__publicField(this,"fpsNum",0),__publicField(this,"fpsDen",0),__publicField(this,"sarRatio",[]),__publicField(this,"width",0),__publicField(this,"height",0),__publicField(this,"nalUnitSize",4),__publicField(this,"present",!1),__publicField(this,"isVideoEncryption",!1),__publicField(this,"isAudioEncryption",!1),__publicField(this,"isVideo",!0),__publicField(this,"kid",null),__publicField(this,"pssh",null),__publicField(this,"ext")}reset(){this.sequenceNumber=this.width=this.height=this.fpsDen=this.fpsNum=this.duration=this.baseMediaDecodeTime=this.timescale=0,this.codec="",this.present=!1,this.pid=-1,this.pps=[],this.sps=[],this.vps=[],this.sarRatio=[],this.samples=[],this.warnings=[],this.hvcC=null}get firstDts(){return this.samples.length?this.samples[0].dts:null}get firstPts(){return this.samples.length?this.samples[0].pts:null}get samplesDuration(){if(this.samples.length>0){const e=this.samples[0],t=this.samples[this.samples.length-1];return t.dts-e.dts+t.duration}return 0}exist(){return!!(this.pps.length&&this.sps.length&&this.codec)}hasSample(){return!!this.samples.length}get isEncryption(){return this.isVideoEncryption}}class g{constructor(){__publicField(this,"id",2),__publicField(this,"type",l),__publicField(this,"codecType",u),__publicField(this,"pid",-1),__publicField(this,"codec",""),__publicField(this,"sequenceNumber",0),__publicField(this,"sampleDuration",0),__publicField(this,"timescale",0),__publicField(this,"formatTimescale",0),__publicField(this,"baseMediaDecodeTime",0),__publicField(this,"duration",0),__publicField(this,"warnings",[]),__publicField(this,"samples",[]),__publicField(this,"baseDts",0),__publicField(this,"sampleSize",16),__publicField(this,"sampleRate",0),__publicField(this,"channelCount",0),__publicField(this,"objectType",0),__publicField(this,"sampleRateIndex",0),__publicField(this,"config",[]),__publicField(this,"present",!1),__publicField(this,"isVideoEncryption",!1),__publicField(this,"isAudioEncryption",!1),__publicField(this,"kid",null),__publicField(this,"ext")}reset(){this.sequenceNumber=0,this.timescale=0,this.sampleDuration=0,this.sampleRate=0,this.channelCount=0,this.baseMediaDecodeTime=0,this.present=!1,this.pid=-1,this.codec="",this.samples=[],this.config=[],this.warnings=[]}exist(){return!!(this.sampleRate&&this.channelCount&&this.codec&&this.codecType===u)}hasSample(){return!!this.samples.length}get isEncryption(){return this.isAudioEncryption}get firstDts(){return this.samples.length?this.samples[0].dts:null}get firstPts(){return this.samples.length?this.samples[0].pts:null}get samplesDuration(){if(this.samples.length>0){const e=this.samples[0],t=this.samples[this.samples.length-1];return t.dts-e.dts+t.duration}return 0}}class _{constructor(e,t,i){__publicField(this,"flag",{}),__publicField(this,"keyframe",!1),__publicField(this,"gopId",0),__publicField(this,"duration",0),__publicField(this,"size",0),__publicField(this,"units",[]),__publicField(this,"chromaFormat",420),this.originPts=this.pts=e,this.originDts=this.dts=t,i&&(this.units=i)}get cts(){return this.pts-this.dts}setToKeyframe(){this.keyframe=!0,this.flag.dependsOn=2,this.flag.isNonSyncSample=0}}class y{constructor(e,t,i,s){__publicField(this,"duration",1024),__publicField(this,"flag",{dependsOn:2,isNonSyncSample:0}),__publicField(this,"keyframe",!0),this.originPts=this.pts=this.dts=e,this.data=t,this.size=t.byteLength,this.sampleOffset=s,i&&(this.duration=i)}}class v{constructor(){__publicField(this,"id",3),__publicField(this,"type",h),__publicField(this,"timescale",0),__publicField(this,"flvScriptSamples",[]),__publicField(this,"seiSamples",[])}exist(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length||!this.timescale)}reset(){this.timescale=0,this.flvScriptSamples=[],this.seiSamples=[]}hasSample(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length)}}const b="undefined"!=typeof window,T=b&&navigator.userAgent.toLocaleLowerCase();b&&/^((?!chrome|android).)*safari/.test(T);const S=b&&T.includes("firefox"),x=b&&T.includes("android");function E(...e){e=e.filter(Boolean);const t=new Uint8Array(e.reduce(((e,t)=>e+t.byteLength),0));let i=0;return e.forEach((e=>{t.set(e,i),i+=e.byteLength})),t}const w=Math.pow(2,32);function k(e,t=0){return(e[t]<<8)+(e[t+1]||0)}function R(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function M(e,t=0){return R(e,t)*w+R(e,t+4)}function L(e){if(!Array.isArray(e)){const t=[];let i="";for(let s=0;s<e.length;s++)s%2&&(i=e[s-1]+e[s],t.push(parseInt(i,16)),i="");return t}return e.map((e=>parseInt(e,16)))}const I=class{static getRateIndexByRate(e){return I.FREQ.indexOf(e)}static parseADTS(e,t){const i=e.length;let s=0;for(;s+2<i&&(255!==e[s]||240!=(246&e[s+1]));)s++;if(s>=i)return;const r=s,n=[],a=(60&e[s+2])>>>2,o=I.FREQ[a];if(!o)throw new Error(`Invalid sampling index: ${a}`);const l=1+((192&e[s+2])>>>6),h=(1&e[s+2])<<2|(192&e[s+3])>>>6,{config:d,codec:c}=I._getConfig(a,h,l);let u,f,p=0;const m=I.getFrameDuration(o);for(;s+7<i;)if(255===e[s]&&240==(246&e[s+1])){if(f=(3&e[s+3])<<11|e[s+4]<<3|(224&e[s+5])>>5,i-s<f)break;u=2*(1&~e[s+1]),n.push({pts:t+p*m,data:e.subarray(s+7+u,s+f)}),p++,s+=f}else s++;return{skip:r,remaining:s>=i?void 0:e.subarray(s),frames:n,samplingFrequencyIndex:a,sampleRate:o,objectType:l,channelCount:h,codec:c,config:d,originCodec:`mp4a.40.${l}`}}static parseAudioSpecificConfig(e){if(!e.length)return;const t=e[0]>>>3,i=(7&e[0])<<1|e[1]>>>7,s=(120&e[1])>>>3,r=I.FREQ[i];if(!r)return;const{config:n,codec:a}=I._getConfig(i,s,t);return{samplingFrequencyIndex:i,sampleRate:r,objectType:t,channelCount:s,config:n,codec:a,originCodec:`mp4a.40.${t}`}}static getFrameDuration(e,t=9e4){return 1024*t/e}static _getConfig(e,t,i){const s=[];let r,n;return S?e>=6?(r=5,n=e-3):(r=2,n=e):x?(r=2,n=e):(r=2===i||5===i?i:5,n=e,e>=6?n=e-3:1===t&&(r=2,n=e)),s[0]=r<<3,s[0]|=(14&e)>>1,s[1]=(1&e)<<7,s[1]|=t<<3,5===r&&(s[1]|=(14&n)>>1,s[2]=(1&n)<<7,s[2]|=8,s[3]=0),{config:s,codec:`mp4a.40.${r}`}}static getSilentFrame(e,t){if("mp4a.40.2"===e){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])}else{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])}}};let C=I;__publicField(C,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);class P{static findBox(e,t,i=0){const s=[];if(!e)return s;let r=0,n="",a=0;for(;e.length>7;){if(r=R(e),n=String.fromCharCode.apply(null,e.subarray(4,8)),a=8,1===r?(r=M(e,8),a+=8):r||(r=e.length),!t[0]||n===t[0]){const o=e.subarray(0,r);if(!(t.length<2))return P.findBox(o.subarray(a),t.slice(1),i+a);s.push({start:i,size:r,headerSize:a,type:n,data:o})}i+=r,e=e.subarray(r)}return s}static tfhd(e){return D(e,!0,((e,t)=>{e.trackId=R(t);let i=4;const s=1&e.flags,r=2&e.flags,n=8&e.flags,a=16&e.flags,o=32&e.flags;s&&(i+=4,e.baseDataOffset=R(t,i),i+=4),r&&(e.sampleDescriptionIndex=R(t,i),i+=4),n&&(e.defaultSampleDuration=R(t,i),i+=4),a&&(e.defaultSampleSize=R(t,i),i+=4),o&&(e.defaultSampleFlags=R(t,i))}))}static sidx(e){return D(e,!0,((e,t)=>{let i=0;e.reference_ID=R(t,i),i+=4,e.timescale=R(t,i),i+=4,0===e.version?(e.earliest_presentation_time=R(t,i),i+=4,e.first_offset=R(t,i),i+=4):(e.earliest_presentation_time=M(t,i),i+=8,e.first_offset=M(t,i),i+=8),i+=2,e.references=[];const s=k(t,i);i+=2;for(let r=0;r<s;r++){const s={};e.references.push(s);let r=R(t,i);i+=4,s.reference_type=r>>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=R(t,i),i+=4,r=R(t,i),i+=4,s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}}))}static moov(e){return D(e,!1,((e,t,i)=>{e.mvhd=P.mvhd(P.findBox(t,["mvhd"],i)[0]),e.trak=P.findBox(t,["trak"],i).map((e=>P.trak(e))),e.pssh=P.pssh(P.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return D(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=R(t,16),e.duration=M(t,20),i+=28):(e.timescale=R(t,8),e.duration=R(t,12),i+=16),e.nextTrackId=R(t,i+76)}))}static trak(e){return D(e,!1,((e,t,i)=>{e.tkhd=P.tkhd(P.findBox(t,["tkhd"],i)[0]),e.mdia=P.mdia(P.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return D(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=R(t,16),e.duration=M(t,24),i+=32):(e.trackId=R(t,8),e.duration=R(t,16),i+=20),e.width=R(t,i+52),e.height=R(t,i+56)}))}static mdia(e){return D(e,!1,((e,t,i)=>{e.mdhd=P.mdhd(P.findBox(t,["mdhd"],i)[0]),e.hdlr=P.hdlr(P.findBox(t,["hdlr"],i)[0]),e.minf=P.minf(P.findBox(t,["minf"],i)[0])}))}static mdhd(e){return D(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=R(t,16),e.duration=M(t,20),i+=28):(e.timescale=R(t,8),e.duration=R(t,12),i+=16);const s=k(t,i);e.language=String.fromCharCode(96+(s>>10&31),96+(s>>5&31),96+(31&s))}))}static hdlr(e){return D(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return D(e,!1,((e,t,i)=>{e.vmhd=P.vmhd(P.findBox(t,["vmhd"],i)[0]),e.smhd=P.smhd(P.findBox(t,["smhd"],i)[0]),e.stbl=P.stbl(P.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return D(e,!0,((e,t)=>{e.graphicsmode=k(t),e.opcolor=[k(t,2),k(t,4),k(t,6)]}))}static smhd(e){return D(e,!0,((e,t)=>{e.balance=k(t)}))}static stbl(e){return D(e,!1,((e,t,i)=>{var s,r,n;e.stsd=P.stsd(P.findBox(t,["stsd"],i)[0]),e.stts=P.stts(P.findBox(t,["stts"],i)[0]),e.ctts=P.ctts(P.findBox(t,["ctts"],i)[0]),e.stsc=P.stsc(P.findBox(t,["stsc"],i)[0]),e.stsz=P.stsz(P.findBox(t,["stsz"],i)[0]),e.stco=P.stco(P.findBox(t,["stco"],i)[0]),e.stco||(e.co64=P.co64(P.findBox(t,["co64"],i)[0]),e.stco=e.co64);const a=null==(n=null==(r=null==(s=e.stsd.entries[0])?void 0:s.sinf)?void 0:r.schi)?void 0:n.tenc.default_IV_size;e.stss=P.stss(P.findBox(t,["stss"],i)[0]),e.senc=P.senc(P.findBox(t,["senc"],i)[0],a)}))}static senc(e,t=8){return D(e,!0,((e,i)=>{let s=0;const r=R(i,s);s+=4,e.samples=[];for(let n=0;n<r;n++){const r={InitializationVector:[]};for(let e=0;e<t;e++)r.InitializationVector[e]=i[s+e];if(s+=t,2&e.flags){r.subsamples=[];const e=k(i,s);s+=2;for(let t=0;t<e;t++){const e={};e.BytesOfClearData=k(i,s),s+=2,e.BytesOfProtectedData=R(i,s),s+=4,r.subsamples.push(e)}}e.samples.push(r)}}))}static pssh(e){return D(e,!0,((e,t)=>{const i=[],s=[];let r=0;for(let a=0;a<16;a++)s.push(A(t[r+a]));if(r+=16,e.version>0){const e=R(t,r);r+=4;for(let s=0;s<(""+e).length;s++)for(let e=0;e<16;e++){const e=t[r];r+=1,i.push(A(e))}}const n=R(t,r);e.data_size=n,r+=4,e.kid=i,e.system_id=s,e.buffer=t}))}static stsd(e){return D(e,!0,((e,t,i)=>{e.entryCount=R(t),e.entries=P.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return P.avc1(e);case"hvc1":case"hev1":return P.hvc1(e);case"mp4a":return P.mp4a(e);case"alaw":case"ulaw":return P.alaw(e);case"enca":return D(e,!1,((e,t,i)=>{e.channelCount=k(t,16),e.samplesize=k(t,18),e.sampleRate=R(t,24)/65536,t=t.subarray(28),e.sinf=P.sinf(P.findBox(t,["sinf"],i)[0]),e.esds=P.esds(P.findBox(t,["esds"],i)[0])}));case"encv":return D(e,!1,((e,t,i)=>{e.width=k(t,24),e.height=k(t,26),e.horizresolution=R(t,28),e.vertresolution=R(t,32),t=t.subarray(78),e.sinf=P.sinf(P.findBox(t,["sinf"],i)[0]),e.avcC=P.avcC(P.findBox(t,["avcC"],i)[0]),e.hvcC=P.hvcC(P.findBox(t,["hvcC"],i)[0]),e.pasp=P.pasp(P.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return D(e,!1,((e,t)=>{let i=6;e.default_IsEncrypted=t[i],i+=1,e.default_IV_size=t[i],i+=1,e.default_KID=[];for(let s=0;s<16;s++)e.default_KID.push(A(t[i])),i+=1}))}static schi(e){return D(e,!1,((e,t,i)=>{e.tenc=P.tenc(P.findBox(t,["tenc"],i)[0])}))}static sinf(e){return D(e,!1,((e,t,i)=>{e.schi=P.schi(P.findBox(t,["schi"],i)[0]),e.frma=P.frma(P.findBox(t,["frma"],i)[0])}))}static frma(e){return D(e,!1,((e,t)=>{e.data_format="";for(let i=0;i<4;i++)e.data_format+=String.fromCharCode(t[i])}))}static avc1(e){return D(e,!1,((e,t,i)=>{const s=F(e,t),r=t.subarray(s);i+=s,e.avcC=P.avcC(P.findBox(r,["avcC"],i)[0]),e.pasp=P.pasp(P.findBox(r,["pasp"],i)[0])}))}static avcC(e){return D(e,!1,((t,i)=>{t.data=e.data,t.configurationVersion=i[0],t.AVCProfileIndication=i[1],t.profileCompatibility=i[2],t.AVCLevelIndication=i[3],t.codec=function(e){let t,i="avc1.";for(let s=0;s<3;s++)t=e[s].toString(16),t.length<2&&(t=`0${t}`),i+=t;return i}([i[1],i[2],i[3]]),t.lengthSizeMinusOne=3&i[4],t.spsLength=31&i[5],t.sps=[];let s=6;for(let e=0;e<t.spsLength;e++){const e=k(i,s);s+=2,t.sps.push(i.subarray(s,s+e)),s+=e}t.ppsLength=i[s],s+=1,t.pps=[];for(let e=0;e<t.ppsLength;e++){const e=k(i,s);s+=2,t.pps.push(i.subarray(s,s+=e)),s+=e}}))}static hvc1(e){return D(e,!1,((e,t,i)=>{const s=F(e,t),r=t.subarray(s);i+=s,e.hvcC=P.hvcC(P.findBox(r,["hvcC"],i)[0]),e.pasp=P.pasp(P.findBox(r,["pasp"],i)[0])}))}static hvcC(e){return D(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const s=i[1];t.generalProfileSpace=s>>6,t.generalTierFlag=(32&s)>>5,t.generalProfileIdc=31&s,t.generalProfileCompatibility=R(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=k(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let r=23,n=0,a=0,o=0;for(let e=0;e<t.numOfArrays;e++){n=63&i[r],a=k(i,r+1),r+=3;const e=[];for(let t=0;t<a;t++)o=k(i,r),r+=2,e.push(i.subarray(r,r+o)),r+=o;32===n?t.vps.push(...e):33===n?t.sps.push(...e):34===n&&t.pps.push(...e)}}))}static pasp(e){return D(e,!1,((e,t)=>{e.hSpacing=R(t),e.vSpacing=R(t,4)}))}static mp4a(e){return D(e,!1,((e,t,i)=>{const s=O(e,t);e.esds=P.esds(P.findBox(t.subarray(s),["esds"],i+s)[0])}))}static esds(e){return D(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,s=0,r=0,n=0;for(;t.length;){for(i=0,n=t[i],s=t[i+1],i+=2;128&s;)r=(127&s)<<7,s=t[i],i+=1;if(r+=127&s,3===n)t=t.subarray(i+3);else{if(4!==n){if(5===n){const s=e.config=t.subarray(i,i+r);let n=(248&s[0])>>3;return 31===n&&s.length>=2&&(n=32+((7&s[0])<<3)+((224&s[1])>>5)),e.objectType=n,e.codec+=n.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[i].toString(16)+".").padStart(3,"0"),t=t.subarray(i+13)}}}))}static alaw(e){return D(e,!1,((e,t)=>{O(e,t)}))}static stts(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;for(let n=0;n<i;n++)s.push({count:R(t,r),delta:R(t,r+4)}),r+=8;e.entryCount=i,e.entries=s}))}static ctts(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;if(1===e.version)for(let n=0;n<i;n++)s.push({count:R(t,r),offset:R(t,r+4)}),r+=8;else for(let n=0;n<i;n++)s.push({count:R(t,r),offset:-(1+~R(t,r+4))}),r+=8;e.entryCount=i,e.entries=s}))}static stsc(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;for(let n=0;n<i;n++)s.push({firstChunk:R(t,r),samplesPerChunk:R(t,r+4),sampleDescriptionIndex:R(t,r+8)}),r+=12;e.entryCount=i,e.entries=s}))}static stsz(e){return D(e,!0,((e,t)=>{const i=R(t),s=R(t,4),r=[];if(!i){let e=8;for(let i=0;i<s;i++)r.push(R(t,e)),e+=4}e.sampleSize=i,e.sampleCount=s,e.entrySizes=r}))}static stco(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;for(let n=0;n<i;n++)s.push(R(t,r)),r+=4;e.entryCount=i,e.entries=s}))}static co64(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;for(let n=0;n<i;n++)s.push(M(t,r)),r+=8;e.entryCount=i,e.entries=s}))}static stss(e){return D(e,!0,((e,t)=>{const i=R(t),s=[];let r=4;for(let n=0;n<i;n++)s.push(R(t,r)),r+=4;e.entryCount=i,e.entries=s}))}static moof(e){return D(e,!1,((e,t,i)=>{e.mfhd=P.mfhd(P.findBox(t,["mfhd"],i)[0]),e.traf=P.findBox(t,["traf"],i).map((e=>P.traf(e)))}))}static mfhd(e){return D(e,!0,((e,t)=>{e.sequenceNumber=R(t)}))}static traf(e){return D(e,!1,((e,t,i)=>{e.tfhd=P.tfhd(P.findBox(t,["tfhd"],i)[0]),e.tfdt=P.tfdt(P.findBox(t,["tfdt"],i)[0]),e.trun=P.trun(P.findBox(t,["trun"],i)[0])}))}static trun(e){return D(e,!0,((e,t)=>{const{version:i,flags:s}=e,r=t.length,n=e.sampleCount=R(t);let a=4;if(r>a&&1&s&&(e.dataOffset=-(1+~R(t,a)),a+=4),r>a&&4&s&&(e.firstSampleFlags=R(t,a),a+=4),e.samples=[],r>a){let r;for(let o=0;o<n;o++)r={},256&s&&(r.duration=R(t,a),a+=4),512&s&&(r.size=R(t,a),a+=4),1024&s&&(r.flags=R(t,a),a+=4),2048&s&&(r.cts=i?-(1+~R(t,a+4)):R(t,a),a+=4),e.samples.push(r)}}))}static tfdt(e){return D(e,!0,((e,t)=>{1===e.version?e.baseMediaDecodeTime=M(t):e.baseMediaDecodeTime=R(t)}))}static probe(e){return!!P.findBox(e,["ftyp"])}static parseSampleFlags(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}static moovToTrack(e,t,i){var s,r,n,a,o,l,h,d,u,m,g,_,y,v,b,T,S,x,E,w,k,R,M,L,I,P,B,F,O,D,A,U,N,z,j,H;const V=e.trak;if(!V||!V.length)return;const q=V.find((e=>{var t,i;return"vide"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)})),K=V.find((e=>{var t,i;return"soun"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)}));if(q&&t){const i=t,f=null==(s=q.tkhd)?void 0:s.trackId;null!=f&&(i.id=q.tkhd.trackId),i.tkhdDuration=q.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=q.mdia.mdhd.timescale,i.duration=q.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const p=q.mdia.minf.stbl.stsd.entries[0];if(i.width=p.width,i.height=p.height,p.pasp&&(i.sarRatio=[p.pasp.hSpacing,p.pasp.vSpacing]),p.hvcC)i.codecType=c,i.codec=p.hvcC.codec,i.vps=p.hvcC.vps,i.sps=p.hvcC.sps,i.pps=p.hvcC.pps,i.hvcC=p.hvcC.data;else{if(!p.avcC)throw new Error("unknown video stsd entry");i.codec=p.avcC.codec,i.sps=p.avcC.sps,i.pps=p.avcC.pps}i.present=!0,i.ext={},i.ext.stss=null==(a=null==(n=null==(r=q.mdia)?void 0:r.minf)?void 0:n.stbl)?void 0:a.stss,i.ext.ctts=null==(h=null==(l=null==(o=q.mdia)?void 0:o.minf)?void 0:l.stbl)?void 0:h.ctts,p&&"encv"===p.type&&(i.isVideoEncryption=!0,p.default_KID=null==(u=null==(d=p.sinf)?void 0:d.schi)?void 0:u.tenc.default_KID,p.default_IsEncrypted=null==(g=null==(m=p.sinf)?void 0:m.schi)?void 0:g.tenc.default_IsEncrypted,p.default_IV_size=null==(y=null==(_=p.sinf)?void 0:_.schi)?void 0:y.tenc.default_IV_size,i.videoSenc=q.mdia.minf.stbl.senc&&q.mdia.minf.stbl.senc.samples,p.data_format=null==(b=null==(v=p.sinf)?void 0:v.frma)?void 0:b.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=p)}if(K&&i){const t=i,s=null==(T=K.tkhd)?void 0:T.trackId;null!=s&&(t.id=K.tkhd.trackId),t.tkhdDuration=K.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=K.mdia.mdhd.timescale,t.duration=K.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const r=K.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=r.sampleSize,t.sampleRate=r.sampleRate,t.channelCount=r.channelCount,t.present=!0,r.type){case"alaw":t.codecType=t.codec=f,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=p,t.sampleRate=8e3;break;default:t.sampleDuration=C.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=C.getRateIndexByRate(t.sampleRate),t.objectType=(null==(S=r.esds)?void 0:S.objectType)||2,r.esds&&(t.config=Array.from(r.esds.config)),t.codec=(null==(x=r.esds)?void 0:x.codec)||"mp4a.40.2"}t.sampleDuration=C.getFrameDuration(t.sampleRate,t.timescale),t.objectType=(null==(E=r.esds)?void 0:E.objectType)||2,r.esds&&(r.esds.config?t.config=Array.from(r.esds.config):console.warn("esds config is null")),t.codec=(null==(w=r.esds)?void 0:w.codec)||"mp4a.40.2",t.sampleRateIndex=C.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=null==(M=null==(R=null==(k=K.mdia)?void 0:k.minf)?void 0:R.stbl)?void 0:M.stss,t.ext.ctts=null==(P=null==(I=null==(L=K.mdia)?void 0:L.minf)?void 0:I.stbl)?void 0:P.ctts,t.present=!0,r&&"enca"===r.type&&(t.isAudioEncryption=!0,r.data_format=null==(F=null==(B=r.sinf)?void 0:B.frma)?void 0:F.data_format,r.default_KID=null==(D=null==(O=r.sinf)?void 0:O.schi)?void 0:D.tenc.default_KID,r.default_IsEncrypted=null==(U=null==(A=r.sinf)?void 0:A.schi)?void 0:U.tenc.default_IsEncrypted,r.default_IV_size=null==(z=null==(N=r.sinf)?void 0:N.schi)?void 0:z.tenc.default_IV_size,t.audioSenc=K.mdia.minf.stbl.senc&&K.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=r)}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),(null==t?void 0:t.encv)||(null==i?void 0:i.enca)){const e=null==(j=null==t?void 0:t.encv)?void 0:j.default_KID,s=null==(H=null==i?void 0:i.enca)?void 0:H.default_KID,r=e||s?(e||s).join(""):null;t&&(t.kid=r),i&&(i.kid=r)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){var s;const r=null==(s=null==t?void 0:t.samples)?void 0:s.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const s={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((({tfhd:e,tfdt:r,trun:n})=>{if(!e||!n)return;r&&(t&&t.id===e.trackId&&(t.baseMediaDecodeTime=r.baseMediaDecodeTime),i&&i.id===e.trackId&&(i.baseMediaDecodeTime=r.baseMediaDecodeTime));const a=e.defaultSampleSize||0,o=e.defaultSampleDuration||P.evaluateDefaultDuration(t,i,n.samples.length||n.sampleCount);let l=n.dataOffset||0,h=0,d=-1;if(!n.samples.length&&n.sampleCount){s[e.trackId]=[];for(let t=0;t<n.sampleCount;t++)s[e.trackId].push({offset:l,dts:h,duration:o,size:a}),h+=o,l+=a}else s[e.trackId]=n.samples.map(((e,t)=>((e={offset:l,dts:h,pts:h+(e.cts||0),duration:e.duration||o,size:e.size||a,gopId:d,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(d++,e.gopId=d),h+=e.duration,l+=e.size,e)))})),s}static moovToSamples(e){var t,i,s,r,n;const a=e.trak;if(!a||!a.length)return;const o=a.find((e=>{var t,i;return"vide"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)})),l=a.find((e=>{var t,i;return"soun"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)}));if(!o&&!l)return;let h,d;if(o){const e=null==(i=null==(t=o.mdia)?void 0:t.minf)?void 0:i.stbl;if(!e)return;const{stts:s,stsc:r,stsz:n,stco:a,stss:l,ctts:d}=e;if(!(s&&r&&n&&a&&l))return;h=B(s,r,n,a,d,l)}if(l){const e=null==(r=null==(s=l.mdia)?void 0:s.minf)?void 0:r.stbl;if(!e)return;const t=null==(n=l.mdia.mdhd)?void 0:n.timescale,{stts:i,stsc:a,stsz:o,stco:h}=e;if(!(t&&i&&a&&o&&h))return;d=B(i,a,o,h)}return{videoSamples:h,audioSamples:d}}}function B(e,t,i,s,r,n){const a=[],o=null==r?void 0:r.entries,l=t.entries,h=s.entries,d=i.entrySizes,c=null==n?void 0:n.entries;let u,f,p;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),o&&(f=[],o.forEach((({count:e,offset:t})=>{for(let i=0;i<e;i++)f.push(t)})));let m=-1,g=0,_=0,y=0,v=0,b=0,T=l[0].samplesPerChunk,S=l[1]?l[1].firstChunk-1:1/0;return e.entries.forEach((({count:e,delta:t})=>{for(let s=0;s<e;s++)p={dts:g,duration:t,size:d[_]||i.sampleSize,offset:h[y]+b,index:_},c&&(p.keyframe=u[_],p.keyframe&&m++,p.gopId=m),f&&_<f.length&&(p.pts=p.dts+f[_]),a.push(p),g+=t,_++,_<T?b+=p.size:(y++,b=0,y>=S&&(v++,S=l[v+1]?l[v+1].firstChunk-1:1/0),T+=l[v].samplesPerChunk)})),a}function F(e,t){return e.dataReferenceIndex=k(t,6),e.width=k(t,24),e.height=k(t,26),e.horizresolution=R(t,28),e.vertresolution=R(t,32),e.frameCount=k(t,40),e.depth=k(t,74),78}function O(e,t){return e.dataReferenceIndex=k(t,6),e.channelCount=k(t,16),e.sampleSize=k(t,18),e.sampleRate=R(t,24)/65536,28}function D(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const s={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(s.version=e.data[e.headerSize],s.flags=function(e,t=0){return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),s.headerSize+=4),i(s,e.data.subarray(s.headerSize),s.start+s.headerSize),s}const A=function(...e){const t=[];return e.forEach((e=>{t.push(function(e,t,i){const s=String(i),r=t>>0;let n=Math.ceil(r/s.length);const a=[],o=String(e);for(;n--;)a.push(s);return a.join("").substring(0,r-o.length)+o}(Number(e).toString(16),2,0))})),t[0]};class U{constructor(){this.buffer=new Uint8Array(0)}write(...e){const t=this;e.forEach((e=>{e?t.buffer=function(e,...t){let i=0;t.forEach((function(e){i+=e.length}));const s=new e(i);let r=0;return t.forEach((function(e){s.set(e,r),r+=e.length})),s}(Uint8Array,t.buffer,e):window.console.warn(e)}))}static writeUint16(e){return new Uint8Array([e>>8&255,255&e])}static writeUint32(e){return new Uint8Array([e>>24,e>>16&255,e>>8&255,255&e])}}const N=class{static box(e,...t){const i=8+(t=t.filter(Boolean)).reduce(((e,t)=>e+t.byteLength),0),s=new Uint8Array(i);s[0]=i>>24&255,s[1]=i>>16&255,s[2]=i>>8&255,s[3]=255&i,s.set(e,4);let r=8;return t.forEach((e=>{s.set(e,r),r+=e.byteLength})),s}static ftyp(e){return e.find((e=>e.type===o&&e.codecType===c))?N.FTYPHEV1:N.FTYPAVC1}static initSegment(e){return E(N.ftyp(e),N.moov(e))}static pssh(e){const t=new Uint8Array([1,0,0,0].concat([16,119,239,236,192,178,77,2,172,227,60,30,82,226,251,75],[0,0,0,1],L(e.kid),[0,0,0,0]));return N.box(N.types.pssh,t)}static moov(e){if(e[0].useEME&&(e[0].encv||e[0].enca)){e[0].pssh||(e[0].pssh={kid:e[0].kid});const t=this.pssh(e[0].pssh);return N.box(N.types.moov,N.mvhd(e[0].mvhdDurtion||e[0].duration,e[0].mvhdTimecale||e[0].timescale),N.mvex(e),...e.map((e=>N.trak(e))),t)}return N.box(N.types.moov,N.mvhd(e[0].mvhdDurtion||e[0].duration,e[0].mvhdTimecale||e[0].timescale),...e.map((e=>N.trak(e))),N.mvex(e))}static mvhd(e,t=9e4){return N.box(N.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,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]))}static trak(e){return N.box(N.types.trak,N.tkhd(e.id,e.tkhdDuration||0,e.width,e.height),N.mdia(e))}static tkhd(e,t,i=0,s=0){return N.box(N.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,e>>24&255,e>>16&255,e>>8&255,255&e,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,0,0,0,0,0,0,0,0,1,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,i>>8&255,255&i,0,0,s>>8&255,255&s,0,0]))}static mdia(e){return N.box(N.types.mdia,N.mdhd(e.duration,e.timescale),N.hdlr(e.type),N.minf(e))}static mdhd(e,t=9e4){return N.box(N.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,85,196,0,0]))}static hdlr(e){return N.box(N.types.hdlr,N.HDLR_TYPES[e])}static minf(e){return N.box(N.types.minf,e.type===o?N.VMHD:N.SMHD,N.DINF,N.stbl(e))}static stbl(e){const t=[];e&&e.ext&&e.ext.stss&&t.push(N.stss(e.ext.stss.entries));return N.box(N.types.stbl,N.stsd(e),N.STTS,t[0],N.STSC,N.STSZ,N.STCO)}static stsd(e){let t;t="audio"===e.type?e.useEME&&e.enca?N.enca(e):N.mp4a(e):e.useEME&&e.encv?N.encv(e):N.avc1hev1(e);return N.box(N.types.stsd,new Uint8Array([0,0,0,0,0,0,0,1]),t)}static enca(e){const t=e.enca.channelCount,i=e.enca.sampleRate,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>8&255,255&i,0,0]),r=N.esds(e.config),n=N.sinf(e.enca);return N.box(N.types.enca,s,r,n)}static encv(e){const t=e.sps.length>0?e.sps[0]:[],i=e.pps.length>0?e.pps[0]:[],s=e.width,r=e.height,n=e.sarRatio[0],a=e.sarRatio[1],o=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,s>>8&255,255&s,r>>8&255,255&r,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([1,t[1],t[2],t[3],255,225,t.length>>>8&255,255&t.length].concat(...t).concat([1,i.length>>>8&255,255&i.length]).concat(...i)),h=new Uint8Array([0,0,88,57,0,15,200,192,0,4,86,72]),d=N.sinf(e.encv),c=new Uint8Array([n>>24,n>>16&255,n>>8&255,255&n,a>>24,a>>16&255,a>>8&255,255&a]);return N.box(N.types.encv,o,N.box(N.types.avcC,l),N.box(N.types.btrt,h),d,N.box(N.types.pasp,c))}static schi(e){const t=new Uint8Array([]),i=N.tenc(e);return N.box(N.types.schi,t,i)}static tenc(e){const t=new Uint8Array([0,0,0,0,0,0,255&e.default_IsEncrypted,255&e.default_IV_size].concat(L(e.default_KID)));return N.box(N.types.tenc,t)}static sinf(e){const t=new Uint8Array([]),i=new Uint8Array([e.data_format.charCodeAt(0),e.data_format.charCodeAt(1),e.data_format.charCodeAt(2),e.data_format.charCodeAt(3)]),s=new Uint8Array([0,0,0,0,99,101,110,99,0,1,0,0]),r=N.schi(e);return N.box(N.types.sinf,t,N.box(N.types.frma,i),N.box(N.types.schm,s),r)}static avc1hev1(e){const t=e.codecType===c,i=t?N.types.hvc1:N.types.avc1,s=t?N.hvcC(e):N.avcC(e),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,e.width>>8&255,255&e.width,e.height>>8&255,255&e.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,17,17]),s];return t?r.push(N.box(N.types.fiel,new Uint8Array([1,0]))):e.sarRatio&&e.sarRatio.length>1&&r.push(N.pasp(e.sarRatio)),N.box(i,...r)}static avcC(e){const t=[],i=[];let s;return e.sps.forEach((e=>{s=e.byteLength,t.push(s>>>8&255),t.push(255&s),t.push(...e)})),e.pps.forEach((e=>{s=e.byteLength,i.push(s>>>8&255),i.push(255&s),i.push(...e)})),N.box(N.types.avcC,new Uint8Array([1,t[3],t[4],t[5],255,224|e.sps.length].concat(...t).concat([e.pps.length]).concat(...i)))}static hvcC(e){const t=e.hvcC;if(t instanceof ArrayBuffer||t instanceof Uint8Array)return t;const{vps:i,sps:s,pps:r}=e;let n;if(t){const e=t.generalProfileCompatibilityFlags,a=t.generalConstraintIndicatorFlags,o=(i.length&&1)+(s.length&&1)+(r.length&&1);n=[1,t.generalProfileSpace<<6|t.generalTierFlag<<5|t.generalProfileIdc,e>>>24,e>>>16,e>>>8,e,a[0],a[1],a[2],a[3],a[4],a[5],t.generalLevelIdc,240,0,252,252|t.chromaFormatIdc,248|t.bitDepthLumaMinus8,248|t.bitDepthChromaMinus8,0,0,t.numTemporalLayers<<3|t.temporalIdNested<<2|3,o];const l=e=>{n.push(e.length>>8,e.length),n.push(...e)};i.length&&(n.push(160,0,i.length),i.forEach(l)),s.length&&(n.push(161,0,s.length),s.forEach(l)),r.length&&(n.push(162,0,r.length),r.forEach(l))}else n=[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 N.box(N.types.hvcC,new Uint8Array(n))}static pasp([e,t]){return N.box(N.types.pasp,new Uint8Array([e>>24,e>>16&255,e>>8&255,255&e,t>>24,t>>16&255,t>>8&255,255&t]))}static mp4a(e){return N.box(N.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,e.sampleRate>>8&255,255&e.sampleRate,0,0]),e.config.length?N.esds(e.config):void 0)}static esds(e){const t=e.length;return N.box(N.types.esds,new Uint8Array([0,0,0,0,3,23+t,0,0,0,4,15+t,64,21,0,6,0,0,0,218,192,0,0,218,192,5].concat([t]).concat(e).concat([6,1,2])))}static mvex(e){return N.box(N.types.mvex,...e.map((e=>N.trex(e.id))))}static trex(e){return N.box(N.types.trex,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trex1(e){return N.box(N.types.trex,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e,0,0,0,1,0,0,2,0,0,0,0,0,0,1,0,0]))}static trex2(e){return N.box(N.types.trex,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e,0,0,0,1,0,0,4,0,0,0,0,0,2,0,0,0]))}static moof(e){return N.box(N.types.moof,N.mfhd(e[0].samples?e[0].samples[0].gopId:0),...e.map((e=>N.traf(e))))}static mfhd(e){return N.box(N.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static traf(e){const t=N.tfhd(e.id),i=N.tfdt(e,e.baseMediaDecodeTime);let s,r=0;if(e.isVideo&&e.videoSenc&&(s=e.videoSenc,s.forEach((function(e){r+=8,e.subsamples&&e.subsamples.length&&(r+=2,r+=6*e.subsamples.length)}))),e.videoSencLength=r,e.useEME&&(e.isVideoEncryption||e.isAudioEncryption)){if(e.isVideoEncryption){if(e.isVideo){const s=N.saiz(e),r=N.saio(e),n=N.trun1(e),a=N.senc(e);return N.box(N.types.traf,t,i,s,r,n,a)}if(e.isAudioEncryption){const s=N.sbgp(),r=N.saiz(e),n=N.saio(e),a=N.senc(e),o=N.trun1(e);return N.box(N.types.traf,t,i,s,r,n,a,o)}{const s=N.sbgp(),r=N.trun1(e);return N.box(N.types.traf,t,i,s,r)}}if(e.isVideo){const s=N.trun1(e);return N.box(N.types.traf,t,i,s)}{const s=N.sbgp(),r=N.saiz(e),n=N.saio(e),a=N.senc(e),o=N.trun1(e);return N.box(N.types.traf,t,i,s,r,n,a,o)}}{const s=N.sdtp(e),r=76;return N.box(N.types.traf,t,i,s,N.trun(e.samples,s.byteLength+r))}}static sdtp(e){const t=new U;return e.samples.forEach((i=>{t.write(new Uint8Array(e.isVideo?[i.keyframe?32:16]:[16]))})),N.box(N.types.sdtp,this.extension(0,0),t.buffer)}static trun1(e){const t=new U,i=U.writeUint32(e.samples.length);let s=null;if(e.isVideo){const t=e.videoSencLength;s=U.writeUint32(16*e.samples.length+t+149),!e.isVideoEncryption&&e.isAudioEncryption&&(s=U.writeUint32(16*e.samples.length+92))}else{let t=12*e.samples.length+124;e.isAudioEncryption&&(t=12*e.samples.length+8*e.audioSenc.length+177),s=U.writeUint32(t)}return e.samples.forEach((i=>{t.write(U.writeUint32(i.duration)),t.write(U.writeUint32(i.size)),t.write(U.writeUint32(i.keyframe?33554432:65536)),e.isVideo&&t.write(U.writeUint32(i.cts?i.cts:0))})),N.box(N.types.trun,this.extension(0,e.flags),i,s,t.buffer)}static senc(e){const t=new U,i=e.samples.length,s=e.isVideo?16:8,r=e.isVideo?2:0;let n=[],a=0;return e.isVideo?(n=e.videoSenc,a=e.videoSencLength):n=e.audioSenc,a=a||s*i,t.write(U.writeUint32(16+a),N.types.senc,this.extension(0,r)),t.write(U.writeUint32(i)),n.forEach((e=>{for(let i=0;i<e.InitializationVector.length;i++)t.write(new Uint8Array([e.InitializationVector[i]]));e.subsamples&&e.subsamples.length&&(t.write(U.writeUint16(e.subsamples.length)),e.subsamples.forEach((e=>{t.write(U.writeUint16(e.BytesOfClearData)),t.write(U.writeUint32(e.BytesOfProtectedData))})))})),t.buffer}static saio(e){let t=12*e.samples.length+141;!e.isVideo&&e.isAudioEncryption&&(t=149);const i=new Uint8Array([1,0,0,0,0,0,0,1,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t]);return N.box(N.types.saio,i)}static saiz(e){const t=e.samples.length,i=new Uint8Array([0,0,0,0,16,t>>24&255,t>>16&255,t>>8&255,255&t]);return N.box(N.types.saiz,i)}static sbgp(){const e=new Uint8Array([114,111,108,108,0,0,0,1,0,0,1,25,0,0,0,1]);return N.box(N.types.sbgp,this.extension(0,0),e)}static extension(e,t){return new Uint8Array([e,t>>16&255,t>>8&255,255&t])}static tfhd(e){return N.box(N.types.tfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static tfdt(e,t){const i=Math.floor(t/4294967296),s=Math.floor(t%4294967296);return e.useEME&&(e.isVideoEncryption||e.isAudioEncryption)?N.box(N.types.tfdt,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])):N.box(N.types.tfdt,new Uint8Array([1,0,0,0,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s]))}static trun(e,t){const i=e.length,s=12+16*i;t+=8+s;const r=new Uint8Array(s);r.set([0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);for(let n=0;n<i;n++){const{duration:t,size:i,flag:s={},cts:a=0}=e[n];r.set([t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,s.isLeading<<2|(null===s.dependsOn||void 0===s.dependsOn?1:s.dependsOn),s.isDependedOn<<6|s.hasRedundancy<<4|s.paddingValue<<1|(null===s.isNonSyncSample||void 0===s.isNonSyncSample?1:s.isNonSyncSample),61440&s.degradationPriority,15&s.degradationPriority,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12+16*n)}return N.box(N.types.trun,r)}static moovMP4(e){return N.box(N.types.moov,N.mvhd(e[0].duration,e[0].timescale),...e.map((e=>N.trackMP4(e))))}static trackMP4(e){return N.box(N.types.trak,N.tkhd(e.id,e.duration,e.width,e.height),N.mdiaMP4(e))}static mdiaMP4(e){return N.box(N.types.mdia,N.mdhd(e.duration,e.timescale),N.hdlr(e.type),N.minfMP4(e))}static minfMP4(e){return N.box(N.types.minf,e.type===o?N.VMHD:N.SMHD,N.DINF,N.stblMP4(e))}static stblMP4(e){const{ext:t}=e,i=[N.stsd(e),N.stts(t.stts),N.stsc(t.stsc),N.stsz(t.stsz),N.stco(t.stco)];return t.stss.length&&i.push(N.stss(t.stss)),t.ctts.length&&i.push(N.ctts(t.ctts)),N.box(N.types.stbl,...i)}static stts(e){const t=e.length,i=new Uint8Array(8*t);let s=0;return e.forEach((({value:e,count:t})=>{i.set([t>>24,t>>16&255,t>>8&255,255&t,e>>24,e>>16&255,e>>8&255,255&e],s),s+=8})),N.box(N.types.stts,E(new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static stsc(e){const t=e.length,i=new Uint8Array(12*t);let s=0;return e.forEach((({firstChunk:e,samplesPerChunk:t,sampleDescIndex:r})=>{i.set([e>>24,e>>16&255,e>>8&255,255&e,t>>24,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r],s),s+=12})),N.box(N.types.stsc,E(new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static stsz(e){const t=e.length,i=new Uint8Array(4*t);let s=0;return e.forEach((e=>{i.set([e>>24,e>>16&255,e>>8&255,255&e],s),s+=4})),N.box(N.types.stsz,E(new Uint8Array([0,0,0,0,0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static stco(e){const t=e.length,i=new Uint8Array(4*t);let s=0;return e.forEach((e=>{i.set([e>>24,e>>16&255,e>>8&255,255&e],s),s+=4})),N.box(N.types.stco,E(new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static stss(e){const t=e.length,i=new Uint8Array(4*t);let s=0;return e.forEach((e=>{i.set([e>>24,e>>16&255,e>>8&255,255&e],s),s+=4})),N.box(N.types.stss,E(new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static ctts(e){const t=e.length,i=new Uint8Array(8*t);let s=0;return e.forEach((({value:e,count:t})=>{i.set([t>>24,t>>16&255,t>>8&255,255&t,e>>24,e>>16&255,e>>8&255,255&e],s),s+=8})),N.box(N.types.ctts,E(new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]),i))}static styp(){return N.box(N.types.styp,new Uint8Array([109,115,100,104,0,0,0,0,109,115,100,104,109,115,105,120]))}static sidx(e){const t=e.timescale,i=e.samples[0].duration,s=i*e.samples.length,r=e.samples[0].sampleOffset*i;let n=8;e.samples.forEach((e=>{n+=e.size}));let a=0;if(e.isVideo){let t,i=0;e.videoSenc&&(t=e.videoSenc),e.isVideo&&t.forEach((e=>{i+=8,e.subsamples&&e.subsamples.length&&(i+=2,i+=6*e.subsamples.length)})),e.videoSencLength=i,a=n+141+16*e.samples.length+i,e.useEME&&e.isAudioEncryption&&!e.isVideoEncryption&&(a=n+16*e.samples.length+84)}else a=n+116+12*e.samples.length,e.useEME&&e.isAudioEncryption&&(a=n+169+12*e.samples.length+8*e.audioSenc.length);const o=new Uint8Array([0,0,0,0,0,0,0,255&e.id,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,0,0,0,1,0,a>>16&255,a>>8&255,255&a,s>>24&255,s>>16&255,s>>8&255,255&s,144,0,0,0]);return N.box(N.types.sidx,o)}static mdat(e){return N.box(N.types.mdat,e)}};let z=N;__publicField(z,"types",["avc1","avcC","hvc1","hvcC","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","pasp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trex","tkhd","vmhd","smhd","ctts","stss","styp","pssh","sidx","sbgp","saiz","saio","senc","trun","encv","enca","sinf","btrt","frma","tenc","schm","schi","mehd","fiel","sdtp"].reduce(((e,t)=>(e[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)],e)),Object.create(null))),__publicField(z,"HDLR_TYPES",{video: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]),audio: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])}),__publicField(z,"FTYPAVC1",N.box(N.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]))),__publicField(z,"FTYPHEV1",N.box(N.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,104,101,118,49]))),__publicField(z,"DINF",N.box(N.types.dinf,N.box(N.types.dref,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1])))),__publicField(z,"VMHD",N.box(N.types.vmhd,new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]))),__publicField(z,"SMHD",N.box(N.types.smhd,new Uint8Array([0,0,0,0,0,0,0,0]))),__publicField(z,"StblTable",new Uint8Array([0,0,0,0,0,0,0,0])),__publicField(z,"STTS",N.box(N.types.stts,N.StblTable)),__publicField(z,"STSC",N.box(N.types.stsc,N.StblTable)),__publicField(z,"STSZ",N.box(N.types.stsz,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]))),__publicField(z,"STCO",N.box(N.types.stco,N.StblTable));const j=class{constructor(e,t){this.name=e||"",this._prefix=`[${this.name}]`,j.disabled=t}debug(...e){j.disabled||console.debug(this._prefix,...e)}log(...e){j.disabled||console.log(this._prefix,...e)}warn(...e){j.disabled||console.warn(this._prefix,...e)}error(...e){j.disabled||console.error(this._prefix,...e)}table(...e){j.disabled||(console.group(this._prefix),console.table(...e),console.groupEnd())}static enable(){j.disabled=!1}static disable(){j.disabled=!0}};let H=j;__publicField(H,"disabled",!0);class V{constructor(e,t,i){this.videoTrack=e,this.audioTrack=t;const s=/Chrome\/([^.]+)/.exec(navigator.userAgent);this.forceFirstIDR=s&&Number(s[1])<50,this.log=new H("FMP4Remuxer",!i||!i.openLog||!i.openLog)}remux(e=!1,t={}){const i=this.videoTrack,s=this.audioTrack,r=i.exist(),n=s.exist();let a,o,l;const h=[];let d,c;return e&&(t&&t.initMerge?(r&&h.push(this.videoTrack),n&&h.push(this.audioTrack),l=z.initSegment(h)):(r&&(a=z.initSegment([this.videoTrack])),n&&(o=z.initSegment([this.audioTrack])))),r&&i.hasSample()&&(d=this._remuxVideo()),n&&s.hasSample()&&(c=this._remuxAudio()),i.samples=[],s.samples=[],{initSegment:l,videoInitSegment:a,audioInitSegment:o,videoSegment:d,audioSegment:c}}_remuxVideo(){const e=this.videoTrack;this.forceFirstIDR&&(e.samples[0].flag={dependsOn:2,isNonSyncSample:0});const t=e.samples;let i=0;t.forEach((e=>{i+=e.units.reduce(((e,t)=>e+t.byteLength),0),i+=4*e.units.length}));const s=new Uint8Array(i),r=new DataView(s.buffer);for(let a,o=0,l=t.length,h=0;o<l;o++){a=t[o];let e=0;a.units.forEach((t=>{r.setUint32(h,t.byteLength),h+=4,s.set(t,h),h+=t.byteLength,e+=4+t.byteLength})),a.size=e}const n=z.mdat(s);return E(z.moof([e]),n)}_remuxAudio(){const e=this.audioTrack,t=new Uint8Array(e.samples.reduce(((e,t)=>e+t.size),0));e.samples.reduce(((e,i)=>(t.set(i.data,e),e+i.size)),0);const i=z.mdat(t);return E(z.moof([e]),i)}reset(){this.videoTrack.reset(),this.audioTrack.reset()}}class q{constructor(e,t,i,s){__publicField(this,"_videoSamples",[]),__publicField(this,"_audioSamples",[]),__publicField(this,"_lastRemainBuffer",[]),__publicField(this,"_lastRemainBufferStartPos",0),this.videoTrack=new m,this.audioTrack=new g,this.metadataTrack=i||new v,this.log=new H("MP4Demuxer",!s||!s.openLog||!s.openLog),e&&e.forEach((e=>{this._videoSamples.push(...e.frames)})),t&&t.forEach((e=>{this._audioSamples.push(...e.frames)}))}parseSamples(e){if(!e)throw new Error("moov is required");if(this.videoTrack.codec||this.audioTrack.codec||(P.moovToTrack(e,this.videoTrack,this.audioTrack),this.videoSenc=this.videoTrack.videoSenc,this.audioSenc=this.audioTrack.audioSenc),!this._audioSamples.length&&!this._videoSamples.length){const t=P.moovToSamples(e);if(!t)throw new Error("cannot parse samples from moov box");this._videoSamples=t.videoSamples||[],this._audioSamples=t.audioSamples||[]}}demux(e,t,i,s,r){this.parseSamples(r);const n=this.videoTrack,a=this.audioTrack;let o,l,h;if(n.samples=[],a.samples=[],i){let s,r=0;for(let a=i[0],d=i[1];a<=d;a++){if(o=this._videoSamples[a],!o)throw new Error(`cannot found video frame #${a}`);h=o.offset-t,l=e.subarray(h,h+o.size),s=new _(o.pts||o.dts,o.dts),s.duration=o.duration,s.gopId=o.gopId,o.keyframe&&s.setToKeyframe();let i=0;const d=l.length-1;for(;i<d;)r=R(l,i),i+=4,s.units.push(l.subarray(i,i+r)),i+=r;n.samples.push(s)}n.baseMediaDecodeTime=n.samples[0].dts}if(s){for(let i=s[0],r=s[1];i<=r;i++){if(o=this._audioSamples[i],!o)throw new Error(`cannot found video frame #${i}`);h=o.offset-t,l=e.subarray(h,h+o.size),a.samples.push(new y(o.dts,l,o.duration))}a.baseMediaDecodeTime=a.samples[0].dts}return{videoTrack:n,audioTrack:a,metadataTrack:this.metadataTrack}}demuxPart(e,t,i,s,r,n,a,o){if(this.parseSamples(r),this.videoTrack.useEME=n,this.audioTrack.useEME=n,this._lastRemainBuffer&&this._lastRemainBuffer.byteLength>0&&t>this._lastRemainBufferStartPos&&t<=this._lastRemainBufferStartPos+this._lastRemainBuffer.byteLength){let i=0;for(;i<20;)try{const i=this._lastRemainBuffer.subarray(0,t-this._lastRemainBufferStartPos),s=new Uint8Array(e.byteLength+i.byteLength);s.set(i,0),s.set(new Uint8Array(e),i.byteLength),e=s,t-=i.byteLength,this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0;break}catch(g){if(!(i<20))throw new Error("new Uint8Array error:,"+g.errorMessage);i++}}const l=this.videoTrack,h=this.audioTrack;let d,c,u;l.samples=[],h.samples=[],l.videoSenc=null,h.audioSenc=null;let f=0,p=0;if(this._videoSamples.length>0&&i.length>0){let s;const r=e.byteLength+t;for(let n=i[0];n<=i[1];n++){if(d=this._videoSamples[n],!d)throw new Error(`cannot found video frame #${n}`);d.offset>=t&&d.offset+d.size<=r&&(u=d.offset-t,f=u+d.size,c=e.subarray(u,f),s=new _(d.pts||d.dts,d.dts),s.duration=d.duration,s.gopId=d.gopId,s.sampleOffset=d.index,d.keyframe&&s.setToKeyframe(),s.data=c,s.size=d.size,l.samples.push(s))}l.samples.length>0&&(l.gopId=l.samples[0].gopId,l.baseMediaDecodeTime=l.samples[0].dts,l.startPts=l.samples[0].pts/l.timescale,l.endPts=l.samples[l.samples.length-1].pts/l.timescale,this.videoSenc&&(l.videoSenc=this.videoSenc.slice(l.samples[0].sampleOffset,l.samples[0].sampleOffset+l.samples.length),l.kidValue=a))}if(this._audioSamples.length>0&&s.length>0){for(let i=s[0];i<=s[1];i++){if(d=this._audioSamples[i],!d)throw new Error(`cannot found video frame #${i}`);d.offset>=t&&d.offset+d.size<=e.byteLength+t&&(u=d.offset-t,p=u+d.size,c=e.subarray(u,p),h.samples.push(new y(d.dts,c,d.duration,d.index)))}h.samples.length>0&&(h.gopId=h.samples[0].gopId||l.gopId,h.baseMediaDecodeTime=h.samples[0].dts,h.startPts=h.samples[0].pts/h.timescale,h.endPts=h.samples[h.samples.length-1].pts/h.timescale,this.audioSenc&&(h.audioSenc=this.audioSenc.slice(h.samples[0].sampleOffset,h.samples[0].sampleOffset+h.samples.length),h.kidValue=a))}this.decoderData(l,h,o);let m=0;for(let _=0;_<l.samples.length;_++){let e=0;const t=l.samples[_].data,i=t.length-1;for(;e<i;)m=R(t,e),e+=4,l.samples[_].units.push(t.subarray(e,e+m)),e+=m}return this._lastRemainBuffer=e.subarray(Math.max(f,p)),this._lastRemainBuffer.byteLength>0?this._lastRemainBufferStartPos=t+e.byteLength-this._lastRemainBuffer.byteLength:this._lastRemainBufferStartPos=0,{videoTrack:l,audioTrack:h,metadataTrack:this.metadataTrack}}reset(){this._videoSamples=[],this._audioSamples=[],this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0,this.videoTrack.reset(),this.audioTrack.reset(),this.metadataTrack.reset()}decoderData(e,t,i){!e.useEME&&t.useEME}static probe(e){return P.probe(e)}}class K{static create(...e){return new this(...e)}mixIn(e){return Object.assign(this,e)}clone(){const e=new this.constructor;return Object.assign(e,this),e}}class W extends K{constructor(e=[],t=4*e.length){super();let i=e;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),(i instanceof Int8Array||i instanceof Uint8ClampedArray||i instanceof Int16Array||i instanceof Uint16Array||i instanceof Int32Array||i instanceof Uint32Array||i instanceof Float32Array||i instanceof Float64Array)&&(i=new Uint8Array(i.buffer,i.byteOffset,i.byteLength)),i instanceof Uint8Array){const e=i.byteLength,t=[];for(let s=0;s<e;s+=1)t[s>>>2]|=i[s]<<24-s%4*8;this.words=t,this.sigBytes=e}else this.words=e,this.sigBytes=t}static random(e){const t=[],i=e=>{let t=e,i=987654321;const s=4294967295;return()=>{i=36969*(65535&i)+(i>>16)&s,t=18e3*(65535&t)+(t>>16)&s;let e=(i<<16)+t&s;return e/=4294967296,e+=.5,e*(Math.random()>.5?1:-1)}};for(let s,r=0;r<e;r+=4){const e=i(4294967296*(s||Math.random()));s=987654071*e(),t.push(4294967296*e()|0)}return new W(t,e)}toString(e=Y){return e.stringify(this)}concat(e){const t=this.words,i=e.words,s=this.sigBytes,r=e.sigBytes;if(this.clamp(),s%4)for(let n=0;n<r;n+=1){const e=i[n>>>2]>>>24-n%4*8&255;t[s+n>>>2]|=e<<24-(s+n)%4*8}else for(let n=0;n<r;n+=4)t[s+n>>>2]=i[n>>>2];return this.sigBytes+=r,this}clamp(){const{words:e,sigBytes:t}=this;e[t>>>2]&=4294967295<<32-t%4*8,e.length=Math.ceil(t/4)}clone(){const e=super.clone.call(this);return e.words=this.words.slice(0),e}}const Y={stringify(e){const{words:t,sigBytes:i}=e,s=[];for(let r=0;r<i;r+=1){const e=t[r>>>2]>>>24-r%4*8&255;s.push((e>>>4).toString(16)),s.push((15&e).toString(16))}return s.join("")},parse(e){const t=e.length,i=[];for(let s=0;s<t;s+=2)i[s>>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new W(i,t/2)}},$={stringify(e){const{words:t,sigBytes:i}=e,s=[];for(let r=0;r<i;r+=1){const e=t[r>>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(e))}return s.join("")},parse(e){const t=e.length,i=[];for(let s=0;s<t;s+=1)i[s>>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new W(i,t)}},J={stringify(e){try{return decodeURIComponent(escape($.stringify(e)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:e=>$.parse(unescape(encodeURIComponent(e)))};class X extends K{constructor(){super(),this._minBufferSize=0}reset(){this._data=new W,this._nDataBytes=0}_append(e){let t=e;"string"==typeof t&&(t=J.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_process(e){let t;const{_data:i,blockSize:s}=this,r=i.words,n=i.sigBytes;let a=n/(4*s);a=e?Math.ceil(a):Math.max((0|a)-this._minBufferSize,0);const o=a*s,l=Math.min(4*o,n);if(o){for(let e=0;e<o;e+=s)this._doProcessBlock(r,e);t=r.splice(0,o),i.sigBytes-=l}return new W(t,l)}clone(){const e=super.clone.call(this);return e._data=this._data.clone(),e}}class G extends X{constructor(e){super(),this.blockSize=16,this.cfg=Object.assign(new K,e),this.reset()}static _createHelper(e){return(t,i)=>new e(i).finalize(t)}static _createHmacHelper(e){return(t,i)=>new Q(e,i).finalize(t)}reset(){super.reset.call(this),this._doReset()}update(e){return this._append(e),this._process(),this}finalize(e){e&&this._append(e);return this._doFinalize()}}class Q extends K{constructor(e,t){super();const i=new e;this._hasher=i;let s=t;"string"==typeof s&&(s=J.parse(s));const r=i.blockSize,n=4*r;s.sigBytes>n&&(s=i.finalize(t)),s.clamp();const a=s.clone();this._oKey=a;const o=s.clone();this._iKey=o;const l=a.words,h=o.words;for(let d=0;d<r;d+=1)l[d]^=1549556828,h[d]^=909522486;a.sigBytes=n,o.sigBytes=n,this.reset()}reset(){const e=this._hasher;e.reset(),e.update(this._iKey)}update(e){return this._hasher.update(e),this}finalize(e){const t=this._hasher,i=t.finalize(e);t.reset();return t.finalize(this._oKey.clone().concat(i))}}const Z={stringify(e){const{words:t,sigBytes:i}=e,s=this._map;e.clamp();const r=[];for(let a=0;a<i;a+=3){const e=(t[a>>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255;for(let t=0;t<4&&a+.75*t<i;t+=1)r.push(s.charAt(e>>>6*(3-t)&63))}const n=s.charAt(64);if(n)for(;r.length%4;)r.push(n);return r.join("")},parse(e){let t=e.length;const i=this._map;let s=this._reverseMap;if(!s){this._reverseMap=[],s=this._reverseMap;for(let e=0;e<i.length;e+=1)s[i.charCodeAt(e)]=e}const r=i.charAt(64);if(r){const i=e.indexOf(r);-1!==i&&(t=i)}return((e,t,i)=>{const s=[];let r=0;for(let n=0;n<t;n+=1)if(n%4){const t=i[e.charCodeAt(n-1)]<<n%4*2|i[e.charCodeAt(n)]>>>6-n%4*2;s[r>>>2]|=t<<24-r%4*8,r+=1}return W.create(s,r)})(e,t,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},ee=[];for(let si=0;si<64;si+=1)ee[si]=4294967296*Math.abs(Math.sin(si+1))|0;const te=(e,t,i,s,r,n,a)=>{const o=e+(t&i|~t&s)+r+a;return(o<<n|o>>>32-n)+t},ie=(e,t,i,s,r,n,a)=>{const o=e+(t&s|i&~s)+r+a;return(o<<n|o>>>32-n)+t},se=(e,t,i,s,r,n,a)=>{const o=e+(t^i^s)+r+a;return(o<<n|o>>>32-n)+t},re=(e,t,i,s,r,n,a)=>{const o=e+(i^(t|~s))+r+a;return(o<<n|o>>>32-n)+t};class ne extends G{_doReset(){this._hash=new W([1732584193,4023233417,2562383102,271733878])}_doProcessBlock(e,t){const i=e;for(let E=0;E<16;E+=1){const s=t+E,r=e[s];i[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}const s=this._hash.words,r=i[t+0],n=i[t+1],a=i[t+2],o=i[t+3],l=i[t+4],h=i[t+5],d=i[t+6],c=i[t+7],u=i[t+8],f=i[t+9],p=i[t+10],m=i[t+11],g=i[t+12],_=i[t+13],y=i[t+14],v=i[t+15];let b=s[0],T=s[1],S=s[2],x=s[3];b=te(b,T,S,x,r,7,ee[0]),x=te(x,b,T,S,n,12,ee[1]),S=te(S,x,b,T,a,17,ee[2]),T=te(T,S,x,b,o,22,ee[3]),b=te(b,T,S,x,l,7,ee[4]),x=te(x,b,T,S,h,12,ee[5]),S=te(S,x,b,T,d,17,ee[6]),T=te(T,S,x,b,c,22,ee[7]),b=te(b,T,S,x,u,7,ee[8]),x=te(x,b,T,S,f,12,ee[9]),S=te(S,x,b,T,p,17,ee[10]),T=te(T,S,x,b,m,22,ee[11]),b=te(b,T,S,x,g,7,ee[12]),x=te(x,b,T,S,_,12,ee[13]),S=te(S,x,b,T,y,17,ee[14]),T=te(T,S,x,b,v,22,ee[15]),b=ie(b,T,S,x,n,5,ee[16]),x=ie(x,b,T,S,d,9,ee[17]),S=ie(S,x,b,T,m,14,ee[18]),T=ie(T,S,x,b,r,20,ee[19]),b=ie(b,T,S,x,h,5,ee[20]),x=ie(x,b,T,S,p,9,ee[21]),S=ie(S,x,b,T,v,14,ee[22]),T=ie(T,S,x,b,l,20,ee[23]),b=ie(b,T,S,x,f,5,ee[24]),x=ie(x,b,T,S,y,9,ee[25]),S=ie(S,x,b,T,o,14,ee[26]),T=ie(T,S,x,b,u,20,ee[27]),b=ie(b,T,S,x,_,5,ee[28]),x=ie(x,b,T,S,a,9,ee[29]),S=ie(S,x,b,T,c,14,ee[30]),T=ie(T,S,x,b,g,20,ee[31]),b=se(b,T,S,x,h,4,ee[32]),x=se(x,b,T,S,u,11,ee[33]),S=se(S,x,b,T,m,16,ee[34]),T=se(T,S,x,b,y,23,ee[35]),b=se(b,T,S,x,n,4,ee[36]),x=se(x,b,T,S,l,11,ee[37]),S=se(S,x,b,T,c,16,ee[38]),T=se(T,S,x,b,p,23,ee[39]),b=se(b,T,S,x,_,4,ee[40]),x=se(x,b,T,S,r,11,ee[41]),S=se(S,x,b,T,o,16,ee[42]),T=se(T,S,x,b,d,23,ee[43]),b=se(b,T,S,x,f,4,ee[44]),x=se(x,b,T,S,g,11,ee[45]),S=se(S,x,b,T,v,16,ee[46]),T=se(T,S,x,b,a,23,ee[47]),b=re(b,T,S,x,r,6,ee[48]),x=re(x,b,T,S,c,10,ee[49]),S=re(S,x,b,T,y,15,ee[50]),T=re(T,S,x,b,h,21,ee[51]),b=re(b,T,S,x,g,6,ee[52]),x=re(x,b,T,S,o,10,ee[53]),S=re(S,x,b,T,p,15,ee[54]),T=re(T,S,x,b,n,21,ee[55]),b=re(b,T,S,x,u,6,ee[56]),x=re(x,b,T,S,v,10,ee[57]),S=re(S,x,b,T,d,15,ee[58]),T=re(T,S,x,b,_,21,ee[59]),b=re(b,T,S,x,l,6,ee[60]),x=re(x,b,T,S,m,10,ee[61]),S=re(S,x,b,T,a,15,ee[62]),T=re(T,S,x,b,f,21,ee[63]),s[0]=s[0]+b|0,s[1]=s[1]+T|0,s[2]=s[2]+S|0,s[3]=s[3]+x|0}_doFinalize(){const e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;t[s>>>5]|=128<<24-s%32;const r=Math.floor(i/4294967296),n=i;t[15+(s+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t[14+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process();const a=this._hash,o=a.words;for(let l=0;l<4;l+=1){const e=o[l];o[l]=16711935&(e<<8|e>>>24)|4278255360&(e<<24|e>>>8)}return a}clone(){const e=super.clone.call(this);return e._hash=this._hash.clone(),e}}class ae extends K{constructor(e){super(),this.cfg=Object.assign(new K,{keySize:4,hasher:ne,iterations:1},e)}compute(e,t){let i;const{cfg:s}=this,r=s.hasher.create(),n=W.create(),a=n.words,{keySize:o,iterations:l}=s;for(;a.length<o;){i&&r.update(i),i=r.update(e).finalize(t),r.reset();for(let e=1;e<l;e+=1)i=r.finalize(i),r.reset();n.concat(i)}return n.sigBytes=4*o,n}}class oe extends X{constructor(e,t,i){super(),this.cfg=Object.assign(new K,i),this._xformMode=e,this._key=t,this.reset()}static createEncryptor(e,t){return this.create(this._ENC_XFORM_MODE,e,t)}static createDecryptor(e,t){return this.create(this._DEC_XFORM_MODE,e,t)}static _createHelper(e){const t=e=>"string"==typeof e?_e:me;return{encrypt:(i,s,r)=>t(s).encrypt(e,i,s,r),decrypt:(i,s,r)=>t(s).decrypt(e,i,s,r)}}reset(){super.reset.call(this),this._doReset()}process(e){return this._append(e),this._process()}finalize(e){e&&this._append(e);return this._doFinalize()}}oe._ENC_XFORM_MODE=1,oe._DEC_XFORM_MODE=2,oe.keySize=4,oe.ivSize=4;class le extends K{constructor(e,t){super(),this._cipher=e,this._iv=t}static createEncryptor(e,t){return this.Encryptor.create(e,t)}static createDecryptor(e,t){return this.Decryptor.create(e,t)}}function he(e,t,i){const s=e;let r;const n=this._iv;n?(r=n,this._iv=void 0):r=this._prevBlock;for(let a=0;a<i;a+=1)s[t+a]^=r[a]}class de extends le{}de.Encryptor=class extends de{processBlock(e,t){const i=this._cipher,{blockSize:s}=i;he.call(this,e,t,s),i.encryptBlock(e,t),this._prevBlock=e.slice(t,t+s)}},de.Decryptor=class extends de{processBlock(e,t){const i=this._cipher,{blockSize:s}=i,r=e.slice(t,t+s);i.decryptBlock(e,t),he.call(this,e,t,s),this._prevBlock=r}};const ce={pad(e,t){const i=4*t,s=i-e.sigBytes%i,r=s<<24|s<<16|s<<8|s,n=[];for(let o=0;o<s;o+=4)n.push(r);const a=W.create(n,s);e.concat(a)},unpad(e){const t=e,i=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=i}};class ue extends oe{constructor(e,t,i){super(e,t,Object.assign({mode:de,padding:ce},i)),this.blockSize=4}reset(){let e;super.reset.call(this);const{cfg:t}=this,{iv:i,mode:s}=t;this._xformMode===this.constructor._ENC_XFORM_MODE?e=s.createEncryptor:(e=s.createDecryptor,this._minBufferSize=1),this._mode=e.call(s,this,i&&i.words),this._mode.__creator=e}_doProcessBlock(e,t){this._mode.processBlock(e,t)}_doFinalize(){let e;const{padding:t}=this.cfg;return this._xformMode===this.constructor._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e}}class fe extends K{constructor(e){super(),this.mixIn(e)}toString(e){return(e||this.formatter).stringify(this)}}const pe={stringify(e){let t;const{ciphertext:i,salt:s}=e;return t=s?W.create([1398893684,1701076831]).concat(s).concat(i):i,t.toString(Z)},parse(e){let t;const i=Z.parse(e),s=i.words;return 1398893684===s[0]&&1701076831===s[1]&&(t=W.create(s.slice(2,4)),s.splice(0,4),i.sigBytes-=16),fe.create({ciphertext:i,salt:t})}};class me extends K{static encrypt(e,t,i,s){const r=Object.assign(new K,this.cfg,s),n=e.createEncryptor(i,r),a=n.finalize(t),o=n.cfg;return fe.create({ciphertext:a,key:i,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:n.blockSize,formatter:r.format})}static decrypt(e,t,i,s){let r=t;const n=Object.assign(new K,this.cfg,s);r=this._parse(r,n.format);return e.createDecryptor(i,n).finalize(r.ciphertext)}static _parse(e,t){return"string"==typeof e?t.parse(e,this):e}}me.cfg=Object.assign(new K,{format:pe});const ge={execute(e,t,i,s){let r=s;r||(r=W.random(8));const n=ae.create({keySize:t+i}).compute(e,r),a=W.create(n.words.slice(t),4*i);return n.sigBytes=4*t,fe.create({key:n,iv:a,salt:r})}};class _e extends me{static encrypt(e,t,i,s){const r=Object.assign(new K,this.cfg,s),n=r.kdf.execute(i,e.keySize,e.ivSize);r.iv=n.iv;const a=me.encrypt.call(this,e,t,n.key,r);return a.mixIn(n),a}static decrypt(e,t,i,s){let r=t;const n=Object.assign(new K,this.cfg,s);r=this._parse(r,n.format);const a=n.kdf.execute(i,e.keySize,e.ivSize,r.salt);n.iv=a.iv;return me.decrypt.call(this,e,r,a.key,n)}}_e.cfg=Object.assign(me.cfg,{kdf:ge});const ye=[],ve=[],be=[],Te=[],Se=[],xe=[],Ee=[],we=[],ke=[],Re=[],Me=[];for(let si=0;si<256;si+=1)Me[si]=si<128?si<<1:si<<1^283;let Le=0,Ie=0;for(let si=0;si<256;si+=1){let e=Ie^Ie<<1^Ie<<2^Ie<<3^Ie<<4;e=e>>>8^255&e^99,ye[Le]=e,ve[e]=Le;const t=Me[Le],i=Me[t],s=Me[i];let r=257*Me[e]^16843008*e;be[Le]=r<<24|r>>>8,Te[Le]=r<<16|r>>>16,Se[Le]=r<<8|r>>>24,xe[Le]=r,r=16843009*s^65537*i^257*t^16843008*Le,Ee[e]=r<<24|r>>>8,we[e]=r<<16|r>>>16,ke[e]=r<<8|r>>>24,Re[e]=r,Le?(Le=t^Me[Me[Me[s^t]]],Ie^=Me[Me[Ie]]):(Ie=1,Le=Ie)}const Ce=[0,1,2,4,8,16,32,64,128,27,54];(class extends ue{_doReset(){let e;if(this._nRounds&&this._keyPriorReset===this._key)return;this._keyPriorReset=this._key;const t=this._keyPriorReset,i=t.words,s=t.sigBytes/4;this._nRounds=s+6;const r=4*(this._nRounds+1);this._keySchedule=[];const n=this._keySchedule;for(let o=0;o<r;o+=1)o<s?n[o]=i[o]:(e=n[o-1],o%s?s>6&&o%s==4&&(e=ye[e>>>24]<<24|ye[e>>>16&255]<<16|ye[e>>>8&255]<<8|ye[255&e]):(e=e<<8|e>>>24,e=ye[e>>>24]<<24|ye[e>>>16&255]<<16|ye[e>>>8&255]<<8|ye[255&e],e^=Ce[o/s|0]<<24),n[o]=n[o-s]^e);this._invKeySchedule=[];const a=this._invKeySchedule;for(let o=0;o<r;o+=1){const t=r-o;e=o%4?n[t]:n[t-4],a[o]=o<4||t<=4?e:Ee[ye[e>>>24]]^we[ye[e>>>16&255]]^ke[ye[e>>>8&255]]^Re[ye[255&e]]}}encryptBlock(e,t){this._doCryptBlock(e,t,this._keySchedule,be,Te,Se,xe,ye)}decryptBlock(e,t){const i=e;let s=i[t+1];i[t+1]=i[t+3],i[t+3]=s,this._doCryptBlock(i,t,this._invKeySchedule,Ee,we,ke,Re,ve),s=i[t+1],i[t+1]=i[t+3],i[t+3]=s}_doCryptBlock(e,t,i,s,r,n,a,o){const l=e,h=this._nRounds;let d=l[t]^i[0],c=l[t+1]^i[1],u=l[t+2]^i[2],f=l[t+3]^i[3],p=4;for(let v=1;v<h;v+=1){const e=s[d>>>24]^r[c>>>16&255]^n[u>>>8&255]^a[255&f]^i[p];p+=1;const t=s[c>>>24]^r[u>>>16&255]^n[f>>>8&255]^a[255&d]^i[p];p+=1;const o=s[u>>>24]^r[f>>>16&255]^n[d>>>8&255]^a[255&c]^i[p];p+=1;const l=s[f>>>24]^r[d>>>16&255]^n[c>>>8&255]^a[255&u]^i[p];p+=1,d=e,c=t,u=o,f=l}const m=(o[d>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&f])^i[p];p+=1;const g=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[f>>>8&255]<<8|o[255&d])^i[p];p+=1;const _=(o[u>>>24]<<24|o[f>>>16&255]<<16|o[d>>>8&255]<<8|o[255&c])^i[p];p+=1;const y=(o[f>>>24]<<24|o[d>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^i[p];p+=1,l[t]=m,l[t+1]=g,l[t+2]=_,l[t+3]=y}}).keySize=8;class Pe extends le{}Pe.Encryptor=class extends Pe{processBlock(e,t){const i=e,s=this._cipher,{blockSize:r}=s,n=this._iv;let a=this._counter;n&&(this._counter=n.slice(0),a=this._counter,this._iv=void 0);const o=a.slice(0);s.encryptBlock(o,0),a[r-1]=a[r-1]+1|0;for(let l=0;l<r;l+=1)i[t+l]^=o[l]}},Pe.Decryptor=Pe.Encryptor;var Be="3.0.0-alpha.34";class Fe{static start(e){return e&&e.length?1===e.length&&e.end(0)-e.start(0)<1e-6||1===e.length&&e.start(0)<0?0:e.start(0):0}static end(e){return e&&e.length?1===e.length&&e.end(0)-e.start(0)<1e-6?0:e.end(e.length-1):0}static get(e){if(e)try{return e.buffered}catch(t){}}static buffers(e,t){if(!e||!e.length)return[];const i=[];for(let s=0,r=e.length;s<r;s++){const r=i.length;if(r&&t){const n=i[r-1],a=n[1];if(e.start(s)-a<=t){const t=e.end(s);t>a&&(n[1]=t)}else i.push([e.start(s),e.end(s)])}else i.push([e.start(s),e.end(s)])}return i}static totalLength(e){return e&&e.length?e.reduce(((e,t)=>e+(t[1]-t[0])),0):0}static info(e,t=0,i=0){if(!e||!e.length)return{start:0,end:0,buffers:[]};let s=0,r=0,n=0,a=0,o=0,l=0,h=0;const d=Fe.buffers(e,i);for(let c=0,u=d.length;c<u;c++){const e=d[c];if(t+i>=e[0]&&t<=e[1])s=e[0],r=e[1],n=c;else{if(t+i<e[0]){a=e[0],o=e[1];break}t+i>e[1]&&(l=e[0],h=e[1])}}return{start:s,end:r,index:n,buffers:d,nextStart:a,nextEnd:o,prevStart:l,prevEnd:h,currentTime:t,behind:t-s,remaining:r?r-t:0,length:Fe.totalLength&&Fe.totalLength(d)}}}const Oe="undefined"!=typeof window,De={MANIFEST:"manifest",NETWORK:"network",NETWORK_TIMEOUT:"network_timeout",NETWORK_FORBIDDEN:"network_forbidden",NETWORK_NOTFOUND:"network_notfound",NETWROK_RANGE_NOT_SATISFIABLE:"network_range_not_satisfiable",DEMUX:"demux",REMUX:"remux",MEDIA:"media",DRM:"drm",OTHER:"other",RUNTIME:"runtime",SUB_TYPES:{FLV:"FLV",HLS:"HLS",MP4:"MP4",FMP4:"FMP4",MSE_ADD_SB:"MSE_ADD_SB",MSE_APPEND_BUFFER:"MSE_APPEND_BUFFER",MSE_OTHER:"MSE_OTHER",MSE_FULL:"MSE_FULL",OPTION:"OPTION",DASH:"DASH",LICENSE:"LICENSE",CUSTOM_LICENSE:"CUSTOM_LICENSE",MSE_HIJACK:"MSE_HIJACK",EME_HIJACK:"EME_HIJACK",SIDX:"SIDX",NO_CANPLAY_ERROR:"NO_CANPLAY_ERROR",BUFFERBREAK_ERROR:"BUFFERBREAK_ERROR",WAITING_TIMEOUT_ERROR:"WAITING_TIMEOUT_ERROR",MEDIA_ERR_ABORTED:"MEDIA_ERR_ABORTED",MEDIA_ERR_NETWORK:"MEDIA_ERR_NETWORK",MEDIA_ERR_DECODE:"MEDIA_ERR_DECODE",MEDIA_ERR_SRC_NOT_SUPPORTED:"MEDIA_ERR_SRC_NOT_SUPPORTED",MEDIA_ERR_CODEC_NOT_SUPPORTED:"MEDIA_ERR_CODEC_NOT_SUPPORTED",MEDIA_ERR_URL_EMPTY:"MEDIA_ERR_URL_EMPTY"}},Ae={[De.MANIFEST]:{HLS:1100,DASH:1200},[De.NETWORK]:2100,[De.NETWORK_TIMEOUT]:2101,[De.NETWORK_FORBIDDEN]:2103,[De.NETWORK_NOTFOUND]:2104,[De.NETWROK_RANGE_NOT_SATISFIABLE]:2116,[De.DEMUX]:{FLV:3100,HLS:3200,MP4:3300,FMP4:3400,SIDX:3410},[De.REMUX]:{FMP4:4100,MP4:4200},[De.MEDIA]:{MEDIA_ERR_ABORTED:5101,MEDIA_ERR_NETWORK:5102,MEDIA_ERR_DECODE:5103,MEDIA_ERR_SRC_NOT_SUPPORTED:5104,MEDIA_ERR_CODEC_NOT_SUPPORTED:5105,MEDIA_ERR_URL_EMPTY:5106,MSE_ADD_SB:5200,MSE_APPEND_BUFFER:5201,MSE_OTHER:5202,MSE_FULL:5203,MSE_HIJACK:5204,EME_HIJACK:5301},[De.DRM]:{LICENSE:7100,CUSTOM_LICENSE:7200},[De.OTHER]:8e3,[De.RUNTIME]:{NO_CANPLAY_ERROR:9001,BUFFERBREAK_ERROR:9002,WAITING_TIMEOUT_ERROR:9003}};class Ue extends Error{constructor(e,t,i,s,r){super(r||(null==i?void 0:i.message)),this.errorType=e===De.NETWORK_TIMEOUT?De.NETWORK:e,this.originError=i,this.ext=s,this.errorCode=Ae[e][t]||Ae[e],this.errorMessage=this.message,this.errorCode||(this.errorType=De.OTHER,this.errorCode=Ae[this.errorType])}static create(e,t,i,s,r){return e instanceof Ue?e:(e instanceof Error&&(i=e,e=""),e||(e=De.OTHER),new Ue(e,t,i,s,r))}static network(e){var t;return new Ue((null==e?void 0:e.isTimeout)?De.NETWORK_TIMEOUT:De.NETWORK,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==(t=null==e?void 0:e.response)?void 0:t.status})}}const Ne=1,ze=2,je=3,He=4,Ve=["Boolean","Number","String","Undefined","Null","Date","Object"],qe=class{constructor(e,t){this.name=e||"",this._prefix=`[${this.name}]`,this.logCacheLevel=(null==t?void 0:t.logCacheLevel)||3,this.logMaxSize=(null==t?void 0:t.logMaxSize)||204800,this.logSize=0,this.logTextArray=[]}debug(...e){this.logCache(Ne,...e),qe.disabled||console.debug(this._prefix,We(),...e)}log(...e){this.logCache(ze,...e),qe.disabled||console.log(this._prefix,We(),...e)}warn(...e){this.logCache(je,...e),qe.disabled||console.warn(this._prefix,We(),...e)}error(...e){this.logCache(He,...e),qe.disabled||console.error(this._prefix,We(),...e)}logCache(e,...t){if(e<this.logCacheLevel)return;let i="";try{const e=t.map((e=>$e(e)));i=this._prefix+We()+JSON.stringify(e)}catch(s){return}if(e>=this.logCacheLevel&&(this.logSize+=i.length,this.logTextArray.push(i)),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}getLogCache(){const e=this.logTextArray.join("\n");return this.reset(),e}reset(){this.logTextArray=[],this.logSize=0}table(...e){qe.disabled||(console.group(this._prefix),console.table(...e),console.groupEnd())}static enable(){qe.disabled=!1}static disable(){qe.disabled=!0}setLogLevel(e){this.logCacheLevel=e}};let Ke=qe;function We(){return(new Date).toLocaleString()}function Ye(e){if("object"!=typeof e)return e;const t=Object.prototype.toString.call(e).slice(8,-1);switch(t){case"Array":case"Uint8Array":case"ArrayBuffer":return t+"["+e.length+"]";case"Object":return"{}";default:return t}}function $e(e,t,i){i||(i=1),t||(t=2);const s={};if(!e||"object"!=typeof e)return e;const r=Object.prototype.toString.call(e).slice(8,-1);if(!Ve.includes(r))return r;if(!(i>t)){for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i===t?s[r]=Ye(e[r]):"object"==typeof e[r]?s[r]=$e(e[r],t,i+1):s[r]=e[r]);return s}}function Je(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.used=!1,i.resolve=(...t)=>(i.used=!0,e(...t)),i.reject=(...e)=>(i.used=!0,t(...e)),i}function Xe(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}}__publicField(Ke,"disabled",!0);const Ge={stringify(e){try{return JSON.stringify(e)}catch(t){return""}},parse(e){try{return JSON.parse(e)}catch(t){return}}};function Qe(e=!0){try{return Oe?e&&"undefined"!=typeof ManagedMediaSource?ManagedMediaSource:window.MediaSource:null}catch(t){}}function Ze(e){return/ManagedMediaSource/gi.test(Object.prototype.toString.call(e))}const et="appendBuffer",tt="removeBuffer",it="updateDuration",st=class{constructor(e,t){__publicField(this,"media",null),__publicField(this,"mediaSource",null),__publicField(this,"_openPromise",Je()),__publicField(this,"_queue",Object.create(null)),__publicField(this,"_sourceBuffer",Object.create(null)),__publicField(this,"_mseFullFlag",{}),__publicField(this,"_st",0),__publicField(this,"_opst",0),__publicField(this,"_logger",null),__publicField(this,"_config",null),__publicField(this,"_url",null),__publicField(this,"_onStartStreaming",(()=>{this._logger.debug("startstreaming")})),__publicField(this,"_onEndStreaming",(()=>{this._logger.debug("endstreaming")})),__publicField(this,"_onSBUpdateEnd",(e=>{var t;const i=this._queue[e];if(i){const s=i[0];if((null==s?void 0:s.opName)!==it&&i.shift(),s){const i=Xe()-this._opst;this._logger.debug(`UpdateEnd(${e}/${s.opName})`,Ge.stringify(function(e){const t=[];if(e instanceof TimeRanges)for(let i=0;i<e.length;i++)t.push({start:e.start(i),end:e.end(i)});return t}(null==(t=this._sourceBuffer[e])?void 0:t.buffered)),i,s.context),s.promise.resolve({name:s.opName,context:s.context,costtime:i}),this._startQueue(e)}}})),__publicField(this,"_onSBUpdateError",((e,t)=>{const i=this._queue[e];if(i){const s=i[0];s&&(this._logger.error("UpdateError",e,s.opName,s.context),s.promise.reject(new Ue(De.MEDIA,De.SUB_TYPES.MSE_APPEND_BUFFER,t)))}})),this._config=Object.assign(st.getDefaultConfig(),t),e&&this.bindMedia(e),this._logger=new Ke("MSE"),this._config.openLog&&Ke.enable()}static isSupported(e='video/mp4; codecs="avc1.42E01E,mp4a.40.2"'){const t=Qe();if(!t)return!1;try{return t.isTypeSupported(e)}catch(i){return this._logger.error(e,i),!1}}static isMMSOnly(){return"undefined"!=typeof ManagedMediaSource&&"undefined"==typeof MediaSource}static getDefaultConfig(){return{openLog:!1,preferMMS:!1}}get isOpened(){var e;return"open"===(null==(e=this.mediaSource)?void 0:e.readyState)}get hasOpTasks(){let e=!1;return Object.keys(this._queue).forEach((t=>{const i=this._queue[t];Array.isArray(i)&&(e||(e=i.length>0))})),e}get url(){return this._url}get duration(){var e;return(null==(e=this.mediaSource)?void 0:e.duration)||-1}get isEnded(){return!!this.mediaSource&&"ended"===this.mediaSource.readyState}get streaming(){return!Ze(this.mediaSource)||this.mediaSource.streaming}isFull(e){return e?this._mseFullFlag[e]:this._mseFullFlag[st.VIDEO]}updateDuration(e){const t=this.mediaSource&&this.mediaSource.duration>e;if(this.mediaSource&&this.mediaSource.duration>e){let t=0;if(Object.keys(this._sourceBuffer).forEach((e=>{try{t=Math.max(this.bufferEnd(e)||0,t)}catch(i){}})),e<t)return Promise.resolve()}return this._enqueueBlockingOp((()=>{this.isEnded?this._logger.debug("setDuration but ended"):this.mediaSource&&(this.mediaSource.duration=e,this._logger.debug("setDuration",e))}),it,{isReduceDuration:t})}open(){if(this._openPromise.used&&!this.isOpened&&this.mediaSource){const e=this.mediaSource,t=()=>{const i=Xe()-this._st;this._logger.debug("sourceopen",i),e.removeEventListener("sourceopen",t),this._openPromise.resolve({costtime:i})};e.addEventListener("sourceopen",t),this._openPromise=Je()}return this._openPromise}async bindMedia(e){(this.mediaSource||this.media)&&await this.unbindMedia();const t=Qe(this._config.preferMMS);if(!e||!t)throw new Error("Param media or MediaSource does not exist");this.media=e;const i=this.mediaSource=new t,s=Ze(i);this._st=Xe();const r=()=>{const t=Xe()-this._st;this._logger.debug("sourceopen"),i.removeEventListener("sourceopen",r),URL.revokeObjectURL(e.src),this._openPromise.resolve({costtime:t})};return i.addEventListener("sourceopen",r),s&&(i.addEventListener("startstreaming",this._onStartStreaming),i.addEventListener("endstreaming",this._onEndStreaming)),this._url=URL.createObjectURL(i),e.src=this._url,e.disableRemotePlayback=s,this._openPromise}async unbindMedia(){this._openPromise.used||this._openPromise.resolve();const e=this.mediaSource;if(e){Object.keys(this._queue).forEach((e=>{const t=this._queue[e];t&&t.forEach((e=>{var t,i;return null==(i=null==(t=e.promise)?void 0:t.resolve)?void 0:i.call(t)}))}));const i=!!this.media&&this.media.readyState>=1,s="open"===e.readyState;if(i&&s)try{e.endOfStream()}catch(t){}Object.keys(this._sourceBuffer).forEach((i=>{try{e.removeSourceBuffer(this._sourceBuffer[i])}catch(t){}})),Ze(e)&&(e.removeEventListener("startstreaming",this._onStartStreaming),e.removeEventListener("endstreaming",this._onEndStreaming))}if(this.media){this.media.disableRemotePlayback=!1,this.media.removeAttribute("src");try{this.media.load()}catch(t){}this.media=null}this.mediaSource=null,this._openPromise=Je(),this._queue=Object.create(null),this._sourceBuffer=Object.create(null)}createSource(e,t){if(this._sourceBuffer[e]||!this.mediaSource)return;let i;try{i=this._sourceBuffer[e]=this.mediaSource.addSourceBuffer(t)}catch(s){throw new Ue(De.MEDIA,De.SUB_TYPES.MSE_ADD_SB,s)}i.mimeType=t,i.addEventListener("updateend",this._onSBUpdateEnd.bind(this,e)),i.addEventListener("error",this._onSBUpdateError.bind(this,e))}changeType(e,t){const i=this._sourceBuffer[e];return this.mediaSource&&i&&i.mimeType!==t?"function"!=typeof i.changeType?Promise.reject():this._enqueueOp(e,(()=>{i.changeType(t),i.mimeType=t,this._onSBUpdateEnd(e)}),"changeType",{mimeType:t}):Promise.resolve()}createOrChangeSource(e,t){return this.createSource(e,t),this.changeType(e,t)}append(e,t,i){return t&&t.byteLength&&this._sourceBuffer[e]?this._enqueueOp(e,(()=>{var s;this.mediaSource&&!this.media.error&&(this._logger.debug("MSE APPEND START",i),this._opst=Xe(),null==(s=this._sourceBuffer[e])||s.appendBuffer(t))}),et,i):Promise.resolve()}remove(e,t,i,s){let r=!1;return this._mseFullFlag[e]&&(r=!0),this._enqueueOp(e,(()=>{if(!this.mediaSource||this.media.error)return;const r=this._sourceBuffer[e];t>=i||!r?this._onSBUpdateEnd(e):(this._opst=Xe(),this._logger.debug("MSE REMOVE START",e,t,i,s),r.remove(t,i))}),tt,s,r)}clearBuffer(e,t){let i;return Object.keys(this._sourceBuffer).forEach((s=>{i=this.remove(s,e,t)})),i||Promise.resolve()}clearAllBuffer(){let e;return Object.keys(this._sourceBuffer).forEach((t=>{const i=this._sourceBuffer[t];e=this.remove(t,0,Fe.end(Fe.get(i)))})),e}clearOpQueues(e,t){this._logger.debug("MSE clearOpQueue START");const i=this._queue[e];if(t&&i)return void(this._queue[e]=[]);if(!i||!i[e]||i.length<5)return;const s=[];i.forEach((e=>{e.context&&e.context.isinit&&s.push(e)})),this._queue[e]=i.slice(0,2),s.length>0&&this._queue[e].push(...s)}endOfStream(e){return this.mediaSource&&"open"===this.mediaSource.readyState?this._enqueueBlockingOp((()=>{const t=this.mediaSource;t&&"open"===t.readyState&&(this._logger.debug("MSE endOfStream START"),e?t.endOfStream(e):t.endOfStream())}),"endOfStream"):Promise.resolve()}setLiveSeekableRange(e,t){const i=this.mediaSource;e<0||t<e||!(null==i?void 0:i.setLiveSeekableRange)||"open"!==i.readyState||i.setLiveSeekableRange(e,t)}getSourceBuffer(e){return this._sourceBuffer[e]}buffered(e){return Fe.get(this._sourceBuffer[e])}bufferStart(e){return Fe.start(this.buffered(e))}bufferEnd(e){return Fe.end(this.buffered(e))}_enqueueOp(e,t,i,s,r){if(!this.mediaSource)return Promise.resolve();const n=this._queue[e]=this._queue[e]||[],a={exec:t,promise:Je(),opName:i,context:s};return r?(n.splice(0,0,a),this._mseFullFlag[e]=!1,this._startQueue(e)):n.push(a),this.isOpened||this.isEnded?1===n.length&&this._startQueue(e):this._openPromise.then((()=>{1===n.length&&this._startQueue(e)})),a.promise}async _enqueueBlockingOp(e,t,i){if(!this.mediaSource)return Promise.resolve();const s=Object.keys(this._sourceBuffer);if(!s.length)return e();const r=[];return s.forEach((e=>{const s=this._queue[e],n=Je();r.push(n),s.push({exec:()=>{n.resolve()},promise:n,opName:t,context:i}),1===s.length&&this._startQueue(e)})),Promise.all(r).then((()=>{try{return e()}finally{s.forEach((e=>{const t=this._queue[e],i=this._sourceBuffer[e];null==t||t.shift(),i&&i.updating||this._startQueue(e)}))}}))}_startQueue(e){const t=this._queue[e];if(t){const s=t[0];if(s&&!this._mseFullFlag[e])try{s.exec()}catch(i){i&&i.message&&i.message.indexOf("SourceBuffer is full")>=0?(this._mseFullFlag[e]=!0,this._logger.error("[MSE error], context,",s.context," ,name,",s.opName,",err,SourceBuffer is full"),s.promise.reject(new Ue(De.MEDIA,De.SUB_TYPES.MSE_FULL,i))):(this._logger.error(i),s.promise.reject(new Ue(De.MEDIA,De.SUB_TYPES.MSE_OTHER,i)),t.shift(),this._startQueue(e))}}}setTimeoffset(e,t,i){return this._enqueueOp(e,(()=>{t<0&&(t+=.001),this._sourceBuffer[e].timestampOffset=t,this._onSBUpdateEnd(e)}),"setTimeoffset",i)}abort(e,t){return this.isOpened?this._enqueueOp(e,(()=>{this._sourceBuffer[e].abort(),this._onSBUpdateEnd(e)}),"abort",t):Promise.resolve()}};let rt=st;__publicField(rt,"VIDEO","video"),__publicField(rt,"AUDIO","audio");const nt="fetch",at="xhr",ot="arraybuffer",lt="text",ht="json";class dt extends Error{constructor(e,t,i,s){super(s),__publicField(this,"retryCount",0),__publicField(this,"isTimeout",!1),__publicField(this,"loaderType",nt),__publicField(this,"startTime",0),__publicField(this,"endTime",0),__publicField(this,"options",{}),this.url=e,this.request=t,this.response=i}}const ct=Object.prototype.toString;function ut(e){if("[object Object]"!==ct.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function ft(e){if(!e||null===e[0]||void 0===e[0]||0===e[0]&&(null===e[1]||void 0===e[1]))return;let t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}function pt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function mt(e,t){if(!e)return;if(!t)return e;let i;const s=Object.keys(t).map((e=>{if(i=t[e],null!=i)return Array.isArray(i)?e+="[]":i=[i],i.map((t=>{var i;return i=t,"[object Date]"===ct.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${pt(e)}=${pt(t)}`})).join("&")})).filter(Boolean).join("&");if(s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}function gt(e,t,i,s,r,n,a,o,l,h,d){r=null!=r?parseFloat(r):null,s=parseInt(s||"0",10),Number.isNaN(s)&&(s=0);return{data:e,done:t,options:{range:l,vid:h,index:o,contentLength:s,age:r,startTime:n,firstByteTime:a,endTime:Date.now(),priOptions:d},response:i}}function _t(e,t){return Math.round(8*e*1e3/t/1024)}const yt="real_time_speed",vt=2097152;class bt extends r{constructor(){super(),__publicField(this,"_abortController",null),__publicField(this,"_timeoutTimer",null),__publicField(this,"_reader",null),__publicField(this,"_response",null),__publicField(this,"_aborted",!1),__publicField(this,"_index",-1),__publicField(this,"_range",null),__publicField(this,"_receivedLength",0),__publicField(this,"_running",!1),__publicField(this,"_logger",null),__publicField(this,"_vid",""),__publicField(this,"_onProcessMinLen",0),__publicField(this,"_onCancel",null),__publicField(this,"_priOptions",null)}load({url:e,vid:t,timeout:i,responseType:s,onProgress:r,index:n,onTimeout:a,onCancel:o,range:l,transformResponse:h,request:d,params:c,logger:u,method:f,headers:p,body:m,mode:g,credentials:_,cache:y,redirect:v,referrer:b,referrerPolicy:T,onProcessMinLen:S,priOptions:x}){var E;this._logger=u,this._aborted=!1,this._onProcessMinLen=S,this._onCancel=o,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=n,this._range=l||[0,0],this._vid=t||e,this._priOptions=x||{};const w={method:f,headers:p,body:m,mode:g,credentials:_,cache:y,redirect:v,referrer:b,referrerPolicy:T,signal:null==(E=this._abortController)?void 0:E.signal};let k=!1;clearTimeout(this._timeoutTimer),e=mt(e,c);const R=ft(l);R&&(p=d?d.headers:w.headers=w.headers||(Headers?new Headers:{}),Headers&&p instanceof Headers?p.append("Range",R):p.Range=R),i&&(this._timeoutTimer=setTimeout((()=>{if(k=!0,this.cancel(),a){const t=new dt(e,w,null,"timeout");t.isTimeout=!0,a(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),i));const M=Date.now();return this._logger.debug("[fetch load start], index,",n,",range,",l),new Promise(((t,i)=>{fetch(d||e,d?void 0:w).then((async a=>{if(clearTimeout(this._timeoutTimer),this._response=a,this._aborted||!this._running)return;if(h&&(a=h(a,e)||a),!a.ok)throw new dt(e,w,a,"bad network response");const o=Date.now();let d;if(s===lt)d=await a.text(),this._running=!1;else if(s===ht)d=await a.json(),this._running=!1;else{if(r)return this.resolve=t,this.reject=i,void this._loadChunk(a,r,M,o);{d=await a.arrayBuffer(),d=new Uint8Array(d),this._running=!1;const e=Date.now()-M,t=_t(d.byteLength,e);this.emit(yt,{speed:t,len:d.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}this._logger.debug("[fetch load end], index,",n,",range,",l),t(gt(d,!0,a,a.headers.get("Content-Length"),a.headers.get("age"),M,o,n,l,this._vid,this._priOptions))})).catch((t=>{clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!k||((t=t instanceof dt?t:new dt(e,w,null,null==t?void 0:t.message)).startTime=M,t.endTime=Date.now(),t.isTimeout=k,t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},i(t))}))}))}async cancel(){if(!this._aborted){if(this._aborted=!0,this._running=!1,this._response){try{this._reader&&await this._reader.cancel()}catch(e){}this._response=this._reader=null}if(this._abortController){try{this._abortController.abort()}catch(e){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}_loadChunk(e,t,i,s){if(!e.body||!e.body.getReader){this._running=!1;const t=new dt(e.url,"",e,"onProgress of bad response.body.getReader");return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(t)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(vt),this._writeIdx=0);const r=this._reader=e.body.getReader();let n,a,o;const l=async()=>{var h;a=Date.now();try{n=await r.read(),o=Date.now()}catch(p){return o=Date.now(),void(this._aborted||(this._running=!1,p.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this.reject(p)))}const d=(null==(h=this._range)?void 0:h.length)>0?this._range[0]:0,c=d+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[c,c],vid:this._vid,index:this._index,startTime:a,endTime:o,st:i,firstByteTime:s,priOptions:this._priOptions},e);const u=n.value?n.value.byteLength:0;let f;if(this._receivedLength+=u,this._logger.debug("【fetchLoader,onProgress call】,task,",this._range,", start,",c,", end,",d+this._receivedLength,", done,",n.done),this._onProcessMinLen>0){if(this._writeIdx+u>=this._onProcessMinLen||n.done)f=new Uint8Array(this._writeIdx+u),f.set(this._cache.slice(0,this._writeIdx),0),u>0&&f.set(n.value,this._writeIdx),this._writeIdx=0,this._logger.debug("【fetchLoader,onProgress enough】,done,",n.done,",len,",f.byteLength,", writeIdx,",this._writeIdx);else if(u>0&&this._writeIdx+u<vt)this._cache.set(n.value,this._writeIdx),this._writeIdx+=u,this._logger.debug("【fetchLoader,onProgress cache】,len,",u,", writeIdx,",this._writeIdx);else if(u>0){const e=new Uint8Array(this._writeIdx+u+2048);this._logger.debug("【fetchLoader,onProgress extra start】,size,",this._writeIdx+u+2048,", datalen,",u,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),u>0&&e.set(n.value,this._writeIdx),this._writeIdx+=u,delete this._cache,this._cache=e,this._logger.debug("【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",this._writeIdx)}}else f=n.value;if((f&&f.byteLength>0||n.done)&&t(f,n.done,{range:[this._range[0]+this._receivedLength-(f?f.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:a,endTime:o,st:i,firstByteTime:s,priOptions:this._priOptions},e),n.done){const t=Date.now()-i,r=_t(this._receivedLength,t);this.emit(yt,{speed:r,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this._logger.debug("[fetchLoader onProgress end],task,",this._range,",done,",n.done),this.resolve(gt(n,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,s,this._index,this._range,this._vid,this._priOptions))}else l()};l()}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}static isSupported(){return!("undefined"==typeof fetch)}}class Tt extends r{constructor(){super(),__publicField(this,"_xhr",null),__publicField(this,"_aborted",!1),__publicField(this,"_timeoutTimer",null),__publicField(this,"_range",null),__publicField(this,"_receivedLength",0),__publicField(this,"_url",null),__publicField(this,"_onProgress",null),__publicField(this,"_index",-1),__publicField(this,"_headers",null),__publicField(this,"_currentChunkSizeKB",384),__publicField(this,"_timeout",null),__publicField(this,"_xhr",null),__publicField(this,"_withCredentials",null),__publicField(this,"_startTime",-1),__publicField(this,"_loadCompleteResolve",null),__publicField(this,"_loadCompleteReject",null),__publicField(this,"_runing",!1),__publicField(this,"_logger",!1),__publicField(this,"_vid",""),__publicField(this,"_responseType"),__publicField(this,"_credentials"),__publicField(this,"_method"),__publicField(this,"_transformResponse"),__publicField(this,"_firstRtt"),__publicField(this,"_onCancel",null),__publicField(this,"_priOptions",null)}load(e){clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=mt(e.url,e.params);const t=Date.now();return new Promise(((e,t)=>{this._loadCompleteResolve=e,this._loadCompleteReject=t,this._startLoad()})).catch((e=>{if(clearTimeout(this._timeoutTimer),this._runing=!1,!this._aborted)throw(e=e instanceof dt?e:new dt(this._url,this._request)).startTime=t,e.endTime=Date.now(),e.options={index:this._index,vid:this._vid,priOptions:this._priOptions},e}))}_startLoad(){let e=null;if(this._responseType===ot&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let s=this._range[1];t<this._range[1]-i&&(s=i+t),e=[i,s],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}_internalOpen(e){try{this._startTime=Date.now();const t=this._xhr=new XMLHttpRequest;t.open(this._method||"GET",this._url,!0),t.responseType=this._responseType,this._timeout&&(t.timeout=this._timeout),t.withCredentials=this._withCredentials,t.onload=this._onLoad.bind(this),t.onreadystatechange=this._onReadyStatechange.bind(this),t.onerror=e=>{var t,i,s;this._running=!1;const r=new dt(this._url,this._request,null==(t=null==e?void 0:e.currentTarget)?void 0:t.response,"xhr.onerror.status:"+(null==(i=null==e?void 0:e.currentTarget)?void 0:i.status)+",statusText,"+(null==(s=null==e?void 0:e.currentTarget)?void 0:s.statusText));r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)},t.ontimeout=e=>{this.cancel();const t=new dt(this._url,this._request,{status:408},"timeout");this._onTimeout&&(t.isTimeout=!0,this._onTimeout(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})),t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)};const i=this._headers||{},s=ft(e);s&&(i.Range=s),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),t.send(this._body)}catch(t){t.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}}_onReadyStatechange(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}_onLoad(e){var t,i;const s=e.target.status;if(s<200||s>299){const t=new dt(this._url,null,{...e.target.response,status:s},"bad response,status:"+s);return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}let r,n=null,a=!1;const o=(null==(t=this._range)?void 0:t.length)>0?this._range[0]:0;if(this._responseType===ot){const t=new Uint8Array(e.target.response);if(r=o+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,i=_t(this._receivedLength,e);this.emit(yt,{speed:i,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[r,o+this._receivedLength],priOptions:this._priOptions})}n=t,a=!((null==(i=this._range)?void 0:i.length)>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",r,"end ",o+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",a)}else a=!0,n=e.target.response;let l={ok:s>=200&&s<300,status:s,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(l=this._transformResponse(l,this._url)||l),this._onProgress&&this._onProgress(n,a,{index:this._index,vid:this._vid,range:[r,o+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},l),a?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(gt(this._onProgress?null:n,a,l,l.headers["content-length"],l.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}cancel(){if(!this._aborted)return this._aborted=!0,this._runing=!1,super.removeAllListeners(),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}static isSupported(){return"undefined"!=typeof XMLHttpRequest}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}_getHeaders(e){const t=e.getAllResponseHeaders().trim().split("\r\n"),i={};for(const s of t){const e=s.split(": ");i[e[0].toLowerCase()]=e.slice(1).join(": ")}return i}}class St{constructor(e,t){this.promise=Je(),this.alive=!!t.onProgress,!t.logger&&(t.logger=new Ke("Loader")),this._loaderType=e,this._loader=e===nt&&"undefined"!=typeof fetch?new bt:new Tt,this._config=t,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=t.retryCheckFunc,this._logger=t.logger}exec(){const{retry:e,retryDelay:t,onRetryError:i,transformError:s,...r}=this._config,n=async()=>{try{const e=await this._loader.load(r);this.promise.resolve(e)}catch(a){if(this._loader.running=!1,this._logger.debug("[task request catch err]",a),this._canceled)return;a.loaderType=this._loaderType,a.retryCount=this._retryCount;let o=a;s&&(o=s(o)||o),i&&this._retryCount>0&&i(o,this._retryCount,{index:r.index,vid:r.vid,range:r.range,priOptions:r.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(a)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this._logger.debug("[task request setTimeout],retry",this._retryCount,",retry range,",r.range),void(this._retryTimer=setTimeout(n,t));this.promise.reject(o)}};return n(),this.promise}async cancel(){return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,this._loader.cancel()}get running(){return this._loader&&this._loader.running}get loader(){return this._loader}}function xt(...e){if((e=e.filter(Boolean)).length<2)return e[0];const t=new Uint8Array(e.reduce(((e,t)=>e+t.byteLength),0));let i=0;return e.forEach((e=>{t.set(e,i),i+=e.byteLength})),t}class Et extends r{constructor(e){super(e),__publicField(this,"type",nt),__publicField(this,"_queue",[]),__publicField(this,"_alive",[]),__publicField(this,"_currentTask",null),__publicField(this,"_finnalUrl",""),__publicField(this,"_config"),this._config=function(e){return{loaderType:nt,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:lt,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0,...e}}(e),this._config.loaderType!==at&&bt.isSupported()||(this.type=at),this.log=e.logger}isFetch(){return this.type===nt}static isFetchSupport(){return bt.isSupported()}load(e,t={}){"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,(t=Object.assign({},this._config,t)).params&&(t.params=Object.assign({},t.params)),t.headers&&ut(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&ut(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t),t.logger=this.log;const i=new St(this.type,t);return i.loader.on(yt,(e=>{this.emit(yt,e)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}async cancel(){const e=this._queue.map((e=>e.cancel())).concat(this._alive.map((e=>e.cancel())));this._currentTask&&e.push(this._currentTask.cancel()),this._queue=[],this._alive=[],await Promise.all(e),await function(e=0){return new Promise((t=>setTimeout(t,e)))}()}_processTask(){if(this._currentTask=this._queue.shift(),!this._currentTask)return;this._currentTask.alive&&this._alive.push(this._currentTask);const e=this._currentTask.exec().catch((e=>{}));e&&"function"==typeof e.finally&&e.finally((()=>{var e,t;(null==(e=this._currentTask)?void 0:e.alive)&&(null==(t=this._alive)?void 0:t.length)>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const wt={416:Ae[De.NETWROK_RANGE_NOT_SATISFIABLE],403:Ae[De.NETWORK_FORBIDDEN],404:Ae[De.NETWORK_NOTFOUND],timeout:Ae[De.NETWORK_TIMEOUT],"4xx":`${Ae[De.NETWORK]}4XX`,"5xx":`${Ae[De.NETWORK]}5XX`,networkError:Ae[De.NETWORK],contentError:`${Ae[De.NETWORK]}contentError`,mse:Ae[De.MEDIA][De.SUB_TYPES.MSE_OTHER],mseOpen:Ae[De.MEDIA][De.SUB_TYPES.MSE_ADD_SB],mseAppend:Ae[De.MEDIA][De.SUB_TYPES.MSE_APPEND_BUFFER],mse_hijack:Ae[De.MEDIA][De.SUB_TYPES.MSE_HIJACK],eme_hijack:Ae[De.MEDIA][De.SUB_TYPES.EME_HIJACK],metaError:Ae[De.DEMUX][De.SUB_TYPES.MP4],muxError:Ae[De.REMUX][De.SUB_TYPES.FMP4],other:Ae[De.OTHER],waitTimeout:Ae[De.RUNTIME][De.SUB_TYPES.BUFFERBREAK_ERROR],waitTimeoutWithHidden:Ae[De.RUNTIME][De.SUB_TYPES.WAITING_TIMEOUT_ERROR],drm:Ae[De.DRM][De.SUB_TYPES.LICENSE]},kt=De;class Rt{constructor(e,t,i){let s=0,r=0;i&&i.range&&i.range.length>1&&(s=i.range[0],r=i.range[1]);const n=function(e){return wt[e]||e}(t);return{errorCode:n,errorType:e,errorMessage:(null==i?void 0:i.httpText)||(null==i?void 0:i.message),url:null==i?void 0:i.url,httpCode:t,version:Be,rangeStart:s,rangeEnd:r,ext:i,mediaError:{code:n,message:(null==i?void 0:i.httpText)||(null==i?void 0:i.message)}}}}class Mt{constructor(e,t,i){return{errorCode:t,errorType:e,version:Be,errorMessage:i.msg,ext:i,mediaError:{code:t,message:i.msg}}}}const Lt={};Lt.nowTime=function(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}},Lt.concatData=function(e,t){const i=[];let s=0;e&&i.push(e),t&&i.push(t),i.every((e=>(e&&(s+=e.byteLength),!0)));const r=new Uint8Array(s);let n=0;return i.every((e=>(e&&(r.set(e,n),n+=e.byteLength),!0))),r};const It="content-range";function Ct(e){try{e&&e.src&&(e.removeAttribute("src"),e.load())}catch(t){}}function Pt(e,t){const i=e.media||e.video;e._detachSourceEvents(i),t instanceof Array?e._attachSourceEvents(i,t):t?i.src=t:i.removeAttribute("src")}class Bt{constructor(e,t){this.type="file",this.message=e,this.data=t}}class Ft{constructor(){__publicField(this,"_data",Object.create(null))}set(e,t){this._data[e]=t}get(e){return this._data[e]}clear(){this._data=Object.create(null)}}function Ot(e,t){var i,s,r,n,a,o;const l=e.trak;if(!l||!l.length)return;const h=l.find((e=>{var t,i;return"vide"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)})),d=l.find((e=>{var t,i;return"soun"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)}));if(!h&&!d)return;let c,u=[],f=[];if(h){const e=null==(s=null==(i=h.mdia)?void 0:i.minf)?void 0:s.stbl;if(!e)return;const n=null==(r=h.mdia.mdhd)?void 0:r.timescale,{stts:a,stsc:o,stsz:l,stco:d,stss:f,ctts:p}=e;if(!(n&&a&&o&&l&&d&&f))return;u=Dt(t,n,a,o,l,d,f,p),c=u.map((e=>e.duration))}if(d){const e=null==(a=null==(n=d.mdia)?void 0:n.minf)?void 0:a.stbl;if(!e)return;const i=null==(o=d.mdia.mdhd)?void 0:o.timescale,{stts:s,stsc:r,stsz:l,stco:h}=e;if(!(i&&s&&r&&l&&h))return;f=Dt(t,i,s,r,l,h,null,null,c)}return{videoSegments:u,audioSegments:f}}function Dt(e,t,i,s,r,n,a,o,l){const h=[],d=[],c=[],u=s.entries,f=n.entries,p=r.entrySizes,m=null==a?void 0:a.entries,g=null==o?void 0:o.entries;let _,y,v,b;g&&(_=[],g.forEach((({count:e,offset:t})=>{for(let i=0;i<e;i++)_.push(t)}))),m&&(y={},m.forEach((e=>{y[e-1]=!0})));let T=0,S=0,x=0,E=0,w=0,k=u[0].samplesPerChunk,R=u[1]?u[1].firstChunk-1:1/0,M=0,L=-1;i.entries.forEach((({count:e,delta:t})=>{b=t;for(let i=0;i<e;i++)v={dts:M,startTime:T,duration:b,size:p[S]||r.sampleSize,offset:f[x]+w,index:S},m&&(v.keyframe=y[S],v.keyframe?(L++,d.push([v]),c.push(v.duration)):(d[d.length-1].push(v),c[d.length-1]+=v.duration),v.gopId=L),_&&S<_.length&&(v.pts=M+_[S]),0===S&&(v.pts=0),h.push(v),T+=b,M+=t,S++,S<k?w+=v.size:(x++,w=0,x>=R&&(E++,R=u[E+1]?u[E+1].firstChunk-1:1/0),k+=u[E].samplesPerChunk)}));const I=h.length;if(!I||a&&!h[0].keyframe)return;const C=[];let P,B=[],F=0,O=0;const D=e=>{var i;P=B[B.length-1],C.push({index:C.length,startTime:(null==(i=C[C.length-1])?void 0:i.endTime)||B[0].startTime/t,endTime:(P.startTime+P.duration)/t,duration:e,range:[B[0].offset,P.offset+P.size],frames:B}),F=0,B=[]};if(a){const i=e*t;for(let e=0,s=d.length;e<s;e++)F+=c[e],B.push(...d[e]),e+1<s?(0===e||F>i)&&D(F/t):D(F/t)}else{let i=(l=l||[])[0]||e;for(let s=0;s<I;s++){B.push(h[s]),F+=h[s].duration;const r=F/t;(s+1>=I||r+O>=i)&&(O+=r-i,D(r),i=l[C.length]||e)}}return C}function At(e){var t,i,s,r,n,a,o,l,h,d,c,u,f,p,m,g;let _="",y="",v=0,b=0,T=0,S=0,x=0,E=0,w=0;e.mvhd&&(x=e.mvhd.duration/e.mvhd.timescale);const k=e.trak;if(k){const R=k.find((e=>{var t,i;return"vide"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)})),M=k.find((e=>{var t,i;return"soun"===(null==(i=null==(t=e.mdia)?void 0:t.hdlr)?void 0:i.handlerType)}));let L,I=null;return R&&(I=null==(s=null==(i=null==(t=R.mdia)?void 0:t.minf)?void 0:i.stbl)?void 0:s.stsd.entries[0],I&&(v=I.width,b=I.height,E=null==(n=null==(r=R.mdia)?void 0:r.mdhd)?void 0:n.timescale,_=null==(a=I.avcC||I.hvcC)?void 0:a.codec,"encv"===I.type&&(L=null==(l=null==(o=I.sinf)?void 0:o.schi)?void 0:l.tenc.default_KID))),M&&(I=null==(c=null==(d=null==(h=M.mdia)?void 0:h.minf)?void 0:d.stbl)?void 0:c.stsd.entries[0],I&&(T=I.channelCount,S=I.sampleRate,y=null==(u=I.esds)?void 0:u.codec,w=null==(p=null==(f=M.mdia)?void 0:f.mdhd)?void 0:p.timescale,"enca"===I.type&&(L=L||(null==(g=null==(m=I.sinf)?void 0:m.schi)?void 0:g.tenc.default_KID)))),{kid:L?L.join(""):null,videoCodec:_,audioCodec:y,width:v,height:b,videoTimescale:E,audioChannelCount:T,audioSampleRate:S,duration:x,audioTimescale:w,moov:e}}}function Ut(e){return"number"==typeof e&&!Number.isNaN(e)}class Nt extends r{constructor(e){var t;super(),__publicField(this,"vid",""),__publicField(this,"url",""),__publicField(this,"meta",{}),__publicField(this,"downloadInfo",[]),__publicField(this,"videoSegments",[]),__publicField(this,"audioSegments",[]),__publicField(this,"cache",null),__publicField(this,"_currentSegmentIndex",-1),__publicField(this,"_currentLoadingSegmentIndex",-1),__publicField(this,"buffer"),__publicField(this,"_error"),__publicField(this,"_transformError",(e=>e)),this._config=(t=e,{vid:"",moovEnd:8e4,segmentDuration:2,maxDownloadInfoSize:30,responseType:"arraybuffer",cache:null,...t});const{vid:i,cache:s,...r}=this._config;this.cache=s||new Ft,this.vid=i||r.url,this.url=r.url,r.transformError=this._transformError,this.logger=new Ke("MP4Loader_"+this.vid),e.openLog&&Ke.enable(),r.logger=this.logger,this._loader=new Et(r),this._loader.on(yt,(e=>{this.emit(yt,e)}))}get isMetaLoaded(){return this.videoSegments.length||this.audioSegments.length}setCurrentSegment(e){Ut(e)&&(this._currentSegmentIndex=e)}isLastSegment(e){var t,i;if(Ut(e)){return e>=((null==(t=this.videoSegments[this.videoSegments.length-1])?void 0:t.index)||(null==(i=this.audioSegments[this.audioSegments.length-1])?void 0:i.index)||0)}return!1}isSegmentLoading(e){return e===this._currentLoadingSegmentIndex}async changeUrl(e,t=e,i,s){await this.reset(s),e&&(this.url=e),t&&(this.vid=t),i&&(this._config.moovEnd=i)}async getOrLoadMeta(e){return this.isMetaLoaded||await this.loadMeta(e),this.meta}async loadMetaProcess(e,[t,i],s,r){this._error=!1,this.logger.debug("[loadMetaProcess start], range,",[t,i]);await this.loadData([t,i||this._config.moovEnd],e,{onProgress:async(n,a,o,l)=>{if(this.meta&&(null==o?void 0:o.range)&&o.range.length>0&&o.range[1]>=i&&(a=!0,this.logger.debug("[loadMetaProcess],data done,setstate true,[",t,i,"]")),a&&(null==o?void 0:o.range)&&o.range.length>0&&o.range[1]<i&&(a=!1,this.logger.debug("[loadMetaProcess],data not done,setstate false,[",t,i,"]")),this.logger.debug("[loadMetaProcess],task,[",t,i,"], range,",o.range,",dataLen,",n?n.byteLength:void 0,", state,",a,",err,",this._error),!this._error&&n&&n.byteLength>0&&s(n,a,o,null,l),!this.meta.moov&&!this._error&&n&&n.byteLength>0){this.buffer=xt(this.buffer,n);let t=P.findBox(this.buffer,["moov"])[0];if(!t){const i=P.findBox(this.buffer,["mdat"])[0];if(a){if(!i)return this._error=!0,void s(null,a,o,{err:"cannot find moov or mdat box"},l);{const s=i.start+i.size,n=await this.loadData([s,""],e,r);n&&(t=P.findBox(n.data,["moov"])[0])}}}if(t&&a&&t.size>t.data.length&&(this.logger.debug("[loadMetaProcess],moov not all, range,",o.range[1],",dataLen,",this.buffer.byteLength,", state,",a),await this.loadMetaProcess(e,[o.range[1],t.start+t.size-1],s)),t&&t.size<=t.data.length&&!this.meta.moov){const e=P.moov(t);if(!e)return this._error=!0,void s(null,a,o,{err:"cannot parse moov box"},l);const i=Ot(e,this._config.segmentDuration);if(!i)return this._error=!0,void s(null,a,o,{err:"cannot parse segments"},l);this.meta=At(e);const{videoSegments:r,audioSegments:n}=i;this.videoSegments=r,this.audioSegments=n,this.logger.debug("[loadMetaProcess] moov ok"),s(void 0,a,{meta:{meta:this.meta,videoSegments:r,audioSegments:n}},null,l)}}},...r})}async loadMeta(e,t,i){const s=[];this.logger.debug("[loadMeta start]");let r=await this.loadData([0,t||this._config.moovEnd],e,i);if(!r)return;s.push(r);let n=P.findBox(r.data,["moov"])[0];if(!n){const t=P.findBox(r.data,["mdat"])[0];if(!t)throw new Bt("cannot find moov or mdat box",r.data);const a=t.start+t.size;if(r=await this.loadData([a],e,i),!r)return;if(s.push(r),n=P.findBox(r.data,["moov"],a)[0],!n)throw new Bt("cannot find moov box",r.data)}if(n.size>n.data.length){if(r=await this.loadData([r.data.length,n.start+n.size-1],e,i),!r)return;s.push(r),n.data=xt(n.data,r.data)}const a=P.moov(n);if(!a)throw new Bt("cannot parse moov box",n.data);const o=Ot(a,this._config.segmentDuration);if(!o)throw new Bt("cannot parse segments",n.data);this.meta=At(a);const{videoSegments:l,audioSegments:h}=o;return this.videoSegments=l,this.audioSegments=h,this.logger.debug("[load moov end!!!!!]"),{meta:this.meta,videoSegments:l,audioSegments:h,responses:s}}loadCacheMeta(e,t){const{moov:i}=e,s=Ot(i,this._config.segmentDuration),{videoSegments:r,audioSegments:n}=s;this.videoSegments=r,this.audioSegments=n,this._currentSegmentIndex=t,this.meta=e}getSegmentByTime(e){let t,i;return this.videoSegments.length?(t=this.videoSegments.find((t=>t.startTime<=e&&t.endTime>e)),t&&(i=this.audioSegments[t.index])):i=this.audioSegments.find((t=>t.startTime<=e&&t.endTime>e)),{video:t,audio:i}}async loadSegmentByTime(e,t,i=!0,s={}){this.isMetaLoaded||await this.loadMeta(t);const{video:r,audio:n}=this.getSegmentByTime(e);return this._loadSegment(r,n,t,i,s)}async loadNextSegment(e,t=!0,i={}){this.isMetaLoaded||await this.loadMeta();const s=this.videoSegments[this._currentSegmentIndex+1],r=this.audioSegments[this._currentSegmentIndex+1];return this._loadSegment(s,r,e,t,i)}async preload(e){if(this.isMetaLoaded||await this.loadMeta(!0),!e||e<0)return;const{video:t,audio:i}=this.getSegmentByTime(e),s=Math.max((null==t?void 0:t.index)||0,(null==i?void 0:i.index)||0);if(!s)return;const r=this.videoSegments.slice(0,s),n=this.audioSegments.slice(0,s),a=async e=>{e>s||(await this._loadSegment(r[e],n[e],!0,!1),await a(e+1))};await a(0)}cancel(){return this._loader.cancel()}async reset(e=!1){e||(this.logger.debug("[MP4loader reset func call loader.cancel]"),await this._loader.cancel()),this.vid=this.url="",this.meta={},this.downloadInfo=[],this.videoSegments=[],this.audioSegments=[],this._currentSegmentIndex=-1,this._currentLoadingSegmentIndex=-1}async destroy(){await this.reset(),this.cache.clear()}async _loadSegment(e,t,i,s,r){if(!e&&!t)return;const n=(null==e?void 0:e.index)||(null==t?void 0:t.index)||0;let a;this._currentLoadingSegmentIndex=n;try{a=await this.loadData([Math.min((null==e?void 0:e.range[0])||1/0,(null==t?void 0:t.range[0])||1/0),Math.max((null==e?void 0:e.range[1])||0,(null==t?void 0:t.range[1])||0)],i,r)}finally{this._currentLoadingSegmentIndex=-1}return a?(s&&(this._currentSegmentIndex=n),a.video=e,a.audio=t,a):void 0}async loadData(e,t,i){const s=this._getCacheKey(e),r=await this.cache.get(s);let n;if(r)n={data:r,state:!0,options:{fromCache:!0,range:e,vid:this.vid}};else{const t=i&&i.url?i.url:this.url;n=await this._loader.load(t,{range:e,vid:this.vid,...i})}if(n)return r||(n.data&&this.downloadInfo.push({startTime:n.startTime,endTime:n.endTime,size:n.data.byteLength,range:e}),this.downloadInfo&&this.downloadInfo.length>this._config.maxDownloadInfoSize&&(this.downloadInfo=this.downloadInfo.slice(-this._config.maxDownloadInfoSize))),n}_getCacheKey(e){return(this.vid||this.url)+":"+e}}const zt=function(){try{return"undefined"!=typeof localStorage&&"setItem"in window.localStorage&&!!window.localStorage.setItem}catch(e){return!1}}()&&!function(){const e="_localstorage_support_test";try{return window.localStorage.setItem(e,!0),window.localStorage.removeItem(e),!1}catch(t){return!0}}(),jt=Ht();function Ht(){if(zt)try{return!!window.localStorage.getItem("playerlog")}catch(e){return!1}return!1}function Vt(e,...t){jt&&console.log&&console.log("[logger]",Lt.nowTime(),e,...t)}!function(){if(zt)try{return!!window.localStorage.getItem("playertestlog")}catch(e){return!1}}();const qt="error",Kt="metaReady",Wt="moov_request_Progress",Yt="update_load_fragmentIdx";class $t extends r{constructor(e,t){super(),__publicField(this,"onprogressDataArrive",(async(e,t,i)=>{if(e&&e.byteLength>0){const s=this.timeRange[i.index].range;s&&i.range[1]>=s[1]&&!t&&(t=!0),this.log("[mp4.loadFragment onprogressDataArrive ] receive data, >>> index,",i.index,",range,",JSON.stringify(i.range),", dataLen,",e.byteLength),this._mux(e,i.range[0],i.index,t)}t&&(this.timeRange[i.index].downloaded=!0,this.bufferLoadedPos=-1,this.log("[FragLoadDowned],fragmentIdx,",i.index,",rangeEnd,",i.range[1]))})),this.url=e,this.options=$t.getDefaultConfig(),Object.keys(t).map((e=>{void 0!==t[e]&&null!==t[e]&&(this.options[e]=t[e])})),this.timeRange=[],this.CHUNK_SIZE=this.options.chunkSize,this.bufferLoaded=new Uint8Array(0),this.bufferLoadedPos=0,this.meta=null,this.videoTrak=null,this.audioTrak=null,this.canDownload=!0,this._loadSuccessCallBack=null,this._isPending=!1,this._metaLoading=!1,this.MP4Loader=new Nt({segmentDuration:this.options.segmentDuration,url:e,vid:t.vid,retry:this.options.retryCount,retryDelay:this.options.retryDelay,timeout:this.options.timeout,...t.reqOptions,openLog:Ht()}),this.MP4Demuxer=null,this.FMP4Remuxer=null,this._needInitSegment=!0,this._switchBitRate=!1,this.enableWorker=this.options.enableWorker,this.enableWorker||(this.MP4Demuxer=null,this.FMP4Remuxer=null),this.seekTime=-1,this.changeBitRateTime=-1}static getDefaultConfig(){return{segmentDuration:5,onProcessMinLen:1024,chunkSize:8e5,retryCount:3,retryDelay:1e3,timeout:3e3,enableWorker:!1,playerId:"",vid:"",ext:{}}}async changeBitRate(e){this.url=e.url,await this.MP4Loader.changeUrl(this.url,this.options.vid+Date.now(),this.CHUNK_SIZE),this._switchBitRate=!0,this.log("[switchBitrate] changeUrl, bitRate,",this.url)}log(e,...t){const{options:i}=this;Vt(i&&i.vid?`[MP4] ${i.vid} ${e}`:`[MP4] ${e}`,...t)}async errorHandler(e,t,i={}){const{response:s,message:r}=e,n=this.options?this.options.vid:"";let a=null;this._isPending=!0,s?(a=new Rt("network",s.status,{httpText:s.httpText,message:r,url:s.url}),this.emit(qt,a)):(console.error(`[MP4] [${n}] errorHandler,`,e),a=e,this.emit(qt,a))}async init(){this.url&&await this.MP4Loader.changeUrl(this.url,this.options.vid+Date.now(),this.CHUNK_SIZE),await this.getMetaInfo()}getTimeRange(){const e=[];let t=null;for(let i=0;this.videoTrak&&i<this.videoTrak.length;i++)t={startTime:this.videoTrak[i].startTime,endTime:this.videoTrak[i].endTime,downloaded:!1,isLoading:!1},e.push(t);if(this.audioTrak&&this.audioTrak.length>e.length)for(let i=e.length;i<this.audioTrak.length;i++)t={startTime:Math.max(this.audioTrak[i].startTime,t?t.endTime:0),endTime:Math.max(this.audioTrak[i].endTime,t?t.endTime:0),downloaded:!1,isLoading:!1},e.push(t);return e}async getMetaInfo(e=!0){try{this._metaLoading=!0,this.log("getMetaInfo start"),this.bufferLoaded=new Uint8Array(0);let t=0;const i=async(i,s,r,n,o)=>{const l=o?Number(function(e){const t=It;if(e&&e.get&&e.get(t)){const i=e.get(t).split("/");if(2===(null==i?void 0:i.length))return i[1]}return null}(o.headers)):0,h=o?Number(function(e){const t="Content-Length";return e&&e.get&&e.get(t)?e.get(t):null}(o.headers)):0;if(this.log("getMetaInfo onProgressHandle, dataLen,",i?i.byteLength:-1,", state,",s,",range,",JSON.stringify(r.range)),console.log("getMetaInfo onProgressHandle, dataLen,",s,",state","range",JSON.stringify(r.range),h,l),n)return void this.emit(qt,n);if(i&&r.range[0]===t&&(this.bufferLoaded=a(Uint8Array,this.bufferLoaded,new Uint8Array(i)),t+=i.byteLength),r.meta&&!this.meta){const t=r.meta;this.videoTrak=t.videoSegments,this.audioTrak=t.audioSegments,this.timeRange=this.getTimeRange(),this.meta={...t.meta,ext:{videoTrak:this.videoTrak,audioTrak:this.audioTrak}},t.bufferLoaded=this.bufferLoaded,this.log("meta reach"),e&&this.emit(Kt,this.meta)}this.meta&&s&&(this.log("[getMetaInfo req end]"),this._metaLoading=!1),this.meta&&(i||s)&&(this.log("emit moov_req_progress"),this.emit(Wt));const d=(null==r?void 0:r.range)||[];l>0&&!this.meta&&d&&d.length>1&&d[1]>=l&&(this.log("getMetaInfo_error_nometa"),this.emit(qt,{message:"getMetaInfo_error_nometa"}))};await this.MP4Loader.loadMetaProcess(this.MP4Loader.cache,[0,this.CHUNK_SIZE],i)}catch(t){console.error("[MP4] trigger errorHandler getMetaInfo",null==t?void 0:t.message),this.loadError(t,"getMetaInfo")}}getFragmentIdx(e){let t,i;if(this.videoTrak.length){if(t=this.videoTrak.find((t=>t.startTime<=e&&t.endTime>e)),i=this.audioTrak.find((t=>t.startTime<=e&&t.endTime>e)),t&&i)return Math.min(t.index,i.index);if(t||i)return t?t.index:i.index;{let e=Number.MAX_VALUE;return this.videoTrak&&this.videoTrak.length>0&&(e=this.videoTrak.length-1),this.audioTrak&&this.audioTrak.length>0&&(e=Math.min(this.audioTrak.length-1,e)),e}}return i=this.audioTrak.find((t=>t.startTime<=e&&t.endTime>e)),i?i.index:0}async _checkHasMeta(){this.log(" loadMeta start"),this._metaLoading=!0;try{const e=await this.MP4Loader.loadMeta(this.MP4Loader.cache,Math.round(this.CHUNK_SIZE/2));return this._metaLoading=!1,this.videoTrak=e.videoSegments,this.audioTrak=e.audioSegments,this.meta={...e.meta,ext:{videoTrak:this.videoTrak,audioTrak:this.audioTrak}},this.timeRange=this.getTimeRange(),this.bufferLoaded=new Uint8Array(0),e.bufferLoaded=this.bufferLoaded,!0}catch(e){return console.error(e),this._metaLoading=!1,this.emit(qt,e),console.error(e),!1}}resetFragmentLoadState(e){for(let t=0;t<this.timeRange.length;t++)t<e?(this.timeRange[t].downloaded=!0,this.timeRange[t].isLoading=!0):(this.timeRange[t].downloaded=!1,this.timeRange[t].isLoading=!1)}getFragRange(e){let t=null;this.videoTrak&&(t=e<this.videoTrak.length?this.videoTrak[e]:this.videoTrak[this.videoTrak.length-1]);let i=null;this.audioTrak&&(i=e<this.audioTrak.length?this.audioTrak[e]:this.audioTrak[this.audioTrak.length-1]);let s=0,r=0;this.videoTrak&&e>=this.videoTrak.length-1&&(s=-1),this.audioTrak&&e>=this.audioTrak.length-1&&(r=-1);const n=[Math.min((null==t?void 0:t.range[0])||1/0,(null==i?void 0:i.range[0])||1/0),Math.max((null==t?void 0:t.range[1])+s||0,(null==i?void 0:i.range[1])+r||0)];return e<this.timeRange.length&&(this.timeRange[e].range=n),n}async load(e,t){if(this._loadSuccessCallBack=t,this._switchBitRate&&!this._metaLoading){this.log("[switchBitrate], switch bitRate start load, time,",e>=this.videoTrak.length?this.audioTrak[e].startTime:this.videoTrak[e].startTime,", fragIndex,",e);const t=await this._checkHasMeta();this.changeBitRateTime>0&&(this.timeRange[e].startTime<=this.changeBitRateTime&&this.changeBitRateTime<this.timeRange[e].endTime?this.log("[switchBitrate], not need update load fragIndex",e,",stTime,",this.changeBitRateTime):(e=this.getFragmentIdx(this.changeBitRateTime),this.log("[switchBitrate], need update load fragIndex",e,",stTime,",this.changeBitRateTime,",newBitrateTimeRange,",this.timeRange[e].startTime,"-",this.timeRange[e].endTime),this.emit(Yt,e)),this.seekTime=this.changeBitRateTime,this.changeBitRateTime=-1),this.resetFragmentLoadState(e),this.log("[switchBitrate], reset timerange state,",e),this._needInitSegment=!0,this.resetTansmuxer(),t&&(this._switchBitRate=!1)}if(this._switchBitRate&&this._metaLoading)return;const i=this.getFragRange(e);if(this.log("loadFragment,",e,",range,",JSON.stringify(i)),this.seekTime>0){const t=this.getSubRange(e,this.seekTime,i);this.loadFragment(e,t),this.seekTime=-1}else this.loadFragment(e,i)}getSubRange(e,t,i){var s,r;let n=i[0],a=i[0];if(this.log(">>>>>getSubRange time,",t,JSON.stringify(i)),(null==(s=this.videoTrak)?void 0:s.length)>0){const i=e<this.videoTrak.length?this.videoTrak[e]:this.videoTrak[this.videoTrak.length-1],s=i.frames.filter(Jt),r=this.meta.videoTimescale;this.log(">>>>>getSubRange video, startTime,",i.startTime,",endTime,",i.endTime);const a=s.find(((e,a)=>{const o=e.startTime/r,l=a+1<s.length?s[a+1].startTime/r:i.endTime+.8;if(t>=o&&t<l)return this.log(">>>>>getSubRange video end, startTime,",o,",endTime,",l,",startRange,",n,", keyFrameIndex,",e.index),e}));n=(null==a?void 0:a.offset)||n}let o=1;if((null==(r=this.audioTrak)?void 0:r.length)>0){const s=e<this.audioTrak.length?this.audioTrak[e]:this.audioTrak[this.audioTrak.length-1],r=s.frames,n=this.meta.audioTimescale;o=Math.floor((t*n-r[0].startTime)/s.frames[0].duration),o=Math.min(r.length-1,o);let l=o>0?r[o-1].startTime/n:r[0].startTime/n;for(;o>=0;){if(o>0&&l>t){o-=1,l=r[o].startTime/n;continue}const e=(r[o].startTime+r[o].duration)/n;if(l<=t&&t<e&&i[0]<r[o].offset){a=r[o].offset,this.log(">>>>>getSubRange audio end, startTime,",l,",endTime,",e,",startRange,",a,", index,",o);break}l=e,o++}}const l=[Math.min(a,n),i[1]];return this.log(">>>>>getSubRange finalRange ",JSON.stringify(l),",oldRange,",JSON.stringify(i)),l}_mux(e,t,i,s){const r=this.getSamplesRange(i,"video"),n=this.getSamplesRange(i,"audio"),a=[t,t+e.byteLength];try{this.MP4Demuxer||(this.MP4Demuxer=new q(this.videoTrak,this.audioTrak,null,{openLog:Ht()}));const o=this.MP4Demuxer.demuxPart(e,t,r,n,this.meta.moov,this.useEME,this.kidValue);let l;this.FMP4Remuxer||this.checkCodecH265()&&!this.options.supportHevc||(this.FMP4Remuxer=new V(this.MP4Demuxer.videoTrack,this.MP4Demuxer.audioTrack,{openLog:Ht()})),this.log("[mux], videoTimeRange,",o.videoTrack?[o.videoTrack.startPts,o.videoTrack.endPts]:null,",audioTimeRange,",o.audioTrack?[o.audioTrack.startPts,o.audioTrack.endPts]:null);const h=Math.min(o.videoTrack.startPts,o.audioTrack.startPts),d=[h,Math.max(o.videoTrack.endPts,o.audioTrack.endPts)];if(this.FMP4Remuxer){const e=this.FMP4Remuxer.remux(this._needInitSegment,{initMerge:!0,range:a});e.initSegment&&(this._needInitSegment=!1);l={buffer:Lt.concatData(e.audioSegment,e.videoSegment),range:a,state:s,context:{range:a,fragIndex:i,timeRange:d},initSeg:e.initSegment}}else l={videoTrack:o.videoTrack,audioTrack:o.audioTrack,buffer:null,range:a,state:s,context:{range:a,fragIndex:i,timeRange:d}};this._loadSuccessCallBack&&this._loadSuccessCallBack(l)}catch(o){console.error("mux err:",o);const s=new Mt(kt.remux,wt.muxError,{msg:JSON.stringify(o)});this.errorHandler(s,"mux",{fragIndex:i,range:[t,t+e.byteLength]})}}getSamplesRange(e,t){const i=[];switch(t){case"video":if(this.videoTrak&&e<this.videoTrak.length){const t=this.videoTrak[e].frames;i.push(t[0].index),i.push(t[t.length-1].index)}break;case"audio":if(this.audioTrak&&e<this.audioTrak.length){const t=this.audioTrak[e].frames;i.push(t[0].index),i.push(t[t.length-1].index)}break;default:console.warn("[getSamplesRange] type ",t," is invalid")}return i}async loadFragment(e,t){if(!(this._isPending||t.length>0&&0===t[0]&&0===t[1]||this.timeRange[e].isLoading))if(this.log("[MP4.loadFragment] ,fragIndex,",e,",range ",t,",len ,",t[1]-t[0],", bufferLoaded_Len,",this.bufferLoaded.byteLength),t.length>=2&&t[1]&&t[1]>0&&t[1]<=this.bufferLoaded.byteLength){this.timeRange[e].isLoading=!0;const i=Math.max(t[0],this.bufferLoadedPos),s=new Uint8Array(this.bufferLoaded.slice(i,t[1]));this.log("[mp4.loadFragment] has all data: ",i,t[1]),this.timeRange[e].downloaded=!0,this.bufferLoadedPos=-1,this._mux(s,i,e,!0)}else if(t.length>=2&&t[0]&&t[0]<=this.bufferLoaded.byteLength){if(!this.timeRange[e].isLoading){const i=Math.max(t[0],this.bufferLoadedPos),s=new Uint8Array(this.bufferLoaded.slice(i,t[1]));if(s.byteLength>0)return this.bufferLoadedPos=i+s.byteLength,this.log("[mp4.loadFragment] has part data: ",i,i+s.byteLength),void this._mux(s,i,e,t[1]<=this.bufferLoadedPos);this._metaLoading||this.timeRange[e].isLoading||(this.log("[mp4.loadFragment] ready to load part data >>> ",this.bufferLoaded.byteLength,t[1]),this.timeRange[e].isLoading=!0,await this.startLoad([this.bufferLoaded.byteLength,t[1]],e))}}else this._metaLoading&&!(t[0]>=this.CHUNK_SIZE)||this.timeRange[e].isLoading||(this.timeRange[e].isLoading=!0,this.log("[mp4.loadFragment],ready to load all data ,segmentIdx, ",e,",range >>> ",JSON.stringify(t)),await this.startLoad(t,e))}async startLoad(e,t){try{await this.MP4Loader.loadData(e,this.MP4Loader.cache,{index:t,onProgress:this.onprogressDataArrive,onProcessMinLen:this.options.onProcessMinLen,url:this.url})}catch(i){console.error("[MP4] trigger errorHandler startLoad",e,t,null==i?void 0:i.message),this.timeRange[t].isLoading=!1,this.loadError(i,"startLoad",{range:e,fragIndex:t})}}loadError(e,t,i){var s;!e.response&&(e.response={}),e.isTimeout?e.response.status="timeout":(null==(s=null==e?void 0:e.response)?void 0:s.status)||(e.response.status="networkError"),this.errorHandler(e,t,i)}async cancelLoading(){await this.MP4Loader&&this.MP4Loader.cancel()}async update(e){this.url=e,this.MP4Loader&&this.MP4Loader.changeUrl(e),this.MP4Loader&&this.MP4Loader.changeUrl(e)}restart(){this._isPending=!1,this.meta||this.init()}checkCodecH265(){return this.meta&&(this.meta.videoCodec.indexOf("hvc1")>-1||this.meta.videoCodec.indexOf("hev1")>-1)}destroy(){this.hasDestroyed||(this.resetTansmuxer(),this._isPending=!1,this._metaLoading=!1,this.bufferLoadedPos=0,this.bufferLoaded=new Uint8Array(0),this.MP4Loader&&(this.MP4Loader.cancel(),this.MP4Loader.destroy()),this.hasDestroyed=!0)}resetTansmuxer(){this.MP4Demuxer&&this.MP4Demuxer.reset(),this.MP4Demuxer=null,this.FMP4Remuxer&&this.FMP4Remuxer.reset(),this.FMP4Remuxer=null}}function Jt(e){if(e.keyframe)return e}class Xt{constructor(e){this.onTick_=e,this.cancelPending_=null}tickAfter(e,t=null){this.stop();let i=!0,s=null;this.cancelPending_=()=>{window.clearTimeout(s),i=!1};return s=window.setTimeout((()=>{i&&(this.onTick_(),t&&t())}),1e3*e),this}tickEvery(e){this.tickAfter(e,(()=>{this.tickEvery(e)}))}stop(){this.cancelPending_&&(this.cancelPending_(),this.cancelPending_=null)}}class Gt{constructor(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.resolve=function(t){e(t),i.state="fulfilled"},i.reject=function(e){t(e),i.state="rejected",i.isBreak="DESTROYED"===e},i.state="pending",i}resolve(e){}reject(e){}}let Qt=null,Zt=null,ei=null,ti=null;class ii extends t.BasePlugin{constructor(e){super(e),__publicField(this,"_onMp4DataCallBack",(()=>{this._isMseInit&&this._onTimeUpdate()})),__publicField(this,"_onMp4MetaReady",(e=>{const{config:i}=this,s=this.mp4.checkCodecH265();try{if(s&&!this.config.supportHevc){const e="browser not support HEVC",s=new t.Errors(this.player,{errorType:"runtime",errorTypeCode:kt.runtime,errorCode:wt.h265Error,errorMessage:e,vid:i.vid,mediaError:{code:wt.h265Error,message:e}});this._errorHandler(s)}else this._initMse(e),this._initPromise.resolve()}catch(r){console.error(r);const e=new t.Errors(this.player,{errorType:"runtime",errorTypeCode:kt.runtime,errorCode:wt.mse,errorMessage:null==r?void 0:r.message,vid:i.vid,mediaError:{code:wt.other1,message:null==r?void 0:r.message}});return void this._errorHandler(e)}this._loadData()})),__publicField(this,"_onMp4Error",(e=>{const{vid:t}=this.playerConfig;console.error("[Index] _onMp4Error",t,e),this._errorHandler(e)})),__publicField(this,"_loadDataSuccess",(e=>{if(!this.isDestroy&&this.mse){this.log("[loadFragment] _loadDataSuccess ",JSON.stringify(e.context.range),",dataLen,",e.buffer?e.buffer.byteLength:0,e.state);try{e.initSeg&&(this._appendInitSeg(e.initSeg),(!e.buffer||e.buffer.byteLength<1)&&(this.log("no data, must load data"),this._onTimeUpdate()));const{buffer:t,state:i,context:s}=e;if(this.mse&&i&&(!t||t.byteLength<=0)&&s.fragIndex===this.mp4.timeRange.length-1){const e=this.player.buffered;e&&e.length>0&&(this.bufferEndTime=e.end(e.length-1)),this._isEnded(),this.log("loaded ended !!!==>>>",JSON.stringify(s.range),", fragIndex,",s.fragIndex,", bufferEndTime,",this.bufferEndTime,",meta_duration,",this.mp4.meta.duration)}if(this.mse&&i&&s.fragIndex===this.mp4.timeRange.length-1&&(!t||t.byteLength<=0)){const e=this.player.buffered;e&&e.length>0&&(this.bufferEndTime=e.end(e.length-1)),this._isEnded(),this.log("load ended !!!==>>>",this.playerConfig.vid,JSON.stringify(s.range),", fragIndex,",s.fragIndex,", bufferEndTime,",this.bufferEndTime,",meta_duration,",this.mp4.meta.duration)}t&&this.mse&&t&&t.byteLength>0&&this._appendBuffer(rt.VIDEO,t,s,i)}catch(i){console.error("appendBuffer error: ",i),this.log("appendBuffer error",i);const e=new t.Errors(this.player,{errorType:"runtime",errorTypeCode:kt.runtime,errorCode:wt.mse,vid:this.player.config.vid,errorMessage:i.message,mediaError:{code:wt.mse,message:i.message}});this._errorHandler(e)}(null==e?void 0:e.state)&&this._onTimeUpdate()}})),__publicField(this,"_onWaiting",(()=>{const{player:e,config:t}=this;clearTimeout(this._waitInBufferTimer),this._waitInBufferTimer=null;const i=e.currentTime,s=e.bufferedPoint;s.end>0&&s.end-e.currentTime>=2&&this._waitAdjustTimeCnt<t.waitJampBufferMaxCnt&&(this._waitInBufferTimer=setTimeout((()=>{this._waitAdjustTimeCnt++,e.currentTime=e.currentTime+.5,this.log("[waitInBufferTimeout], waitAdjustTimeCnt,",this._waitAdjustTimeCnt,",curtime,",i,Lt.nowTime())}),t.waitingInBufferTimeOut))})),__publicField(this,"_onSeeking",(async()=>{const{player:e,mp4:t}=this,i=e.currentTime;if(this.log("[seekTime], curTime,",i,",buffer,",e.buffered2.bufferedList),!t||!t.meta)return;this.endofstream=!1,t.bufferLoadedPos=-1,t._metaLoading=!1;const s=e.bufferedPoint;let r=!1,n=0;if(s.end>0){if(r=!0,t.meta.duration-s.end<.5)return this._startProgress(),void this.log("[seeking in buffered range], buffer end,",s.end,", duration,",t.meta.duration);if(n=t.getFragmentIdx(s.end),this._curLoadSegmentIdx===n)return this._startProgress(),void this.log("[seeking in buffered range], seek fragIndex is current load segmentIdx",n);t.seekTime=s.end,n<0&&(n=this._curLoadSegmentIdx),this.log("[seeking in buffered range], seekTime ",i,",bufferRange,",s.start,"-",s.end,", fragIndex,",n)}if(!r){t.seekTime=i,n=t.getFragmentIdx(i),n<0&&(n=this._curLoadSegmentIdx),this.log("[seekTime out buffer range], curTime,",i,", Idx,",n);const{mse:s}=this;if(s&&s.isFull()){const t=e.buffered2.bufferedList,i=t[t.length-1];s.clearOpQueues(rt.VIDEO),this._checkRemoveSourceBuffer([i.start,i.end],e.currentTime,!0,!0)}}t.changeBitRateTime>=0&&(t.changeBitRateTime=t.seekTime,this.log("[seekTime set changeBitRateTime ], curTime,",i,", changeBitRateTime,",t.changeBitRateTime)),await t.cancelLoading(),t.resetFragmentLoadState(n),this._curLoadSegmentIdx=n,this._onTimeUpdate(),this._startProgress(),this._isEnded()})),__publicField(this,"changeDefineCanPlay",((e,i,s,r)=>{const{player:n}=this;if(n.ended)return void(n.currentTime=0);this.log("[oldChangeDefinition],this._changeDefState,",this._changeDefState),n.currentTime=this._changeDefState?this._changeDefState.currentTime:e;(this._changeDefState?this._changeDefState.paused:i)?n.pause():n.play(),this._changeDefState=null,n.emit(t.Events.AFTER_DEFINITION_CHANGE,{from:s,to:r})})),__publicField(this,"changeDefinition",(async(e,i)=>{const{player:s,config:r,mp4:n}=this;i||(i=s.curDefinition),this._MSEError=!1;const{definitionList:a}=s;let o=null;for(let t=0;t<a.length;t++){const i=a[t].definition;if(i===e.definition||i===Number(e.definition)){o=a[t];break}}if(!o)return void console.error("there is no definition for ",e);if(r.witchBitRateWay)return void this.oldChangeDefinition(o,i);if(this.useVideoLoad)return void ei.call(this.player,o,i);s.emit(t.Events.DEFINITION_CHANGE,{from:i,to:o});const l=s.currentTime;let h=n.getFragmentIdx(l);h<0&&(h=this._curLoadSegmentIdx),this.log("switchBitrate:point,fragIndex,",h,",startTime,",n.timeRange[h].startTime,",currentTime,",s.currentTime),n&&(this.mp4.changeBitRateTime=l,await n.cancelLoading(),n._metaLoading&&(n._metaLoading=!1)),this._removeBuffeEndTime=n.timeRange[h].startTime,this._isChangeDefinition=!0;const d=s.getBufferedRange(s.buffered);d[1]>0&&d[1]-s.currentTime>5&&(this.mse.clearOpQueues(rt.VIDEO),this.mse.remove(rt.VIDEO,s.currentTime+5,d[1])),this.log("switchBitrate: resetFragmentLoadState,",h),n.resetFragmentLoadState(h),this._curLoadSegmentIdx=h,this._handlerUrl(o.url),s.config.url=o.url;const c={...o,url:this.config._mainURL};await this.mp4.changeBitRate(c),this._onTimeUpdate(),s.emit("RESOLUTION_UPDATE",c)})),__publicField(this,"_replayHook",(()=>{var e;return null==(e=this.player)||e.play(),!1})),__publicField(this,"_retryHook",(()=>(this.beforePlayerInit(),!1))),__publicField(this,"_errorMiddleware",((e,t)=>{const{error:i}=e||{},{video:s}=this.player||{};i&&i.message&&i.message.indexOf("CHUNK_DEMUXER_ERROR_APPEND_FAILED")>-1||s&&!this.useVideoLoad&&function(e){return e.media&&(e=e.media),!!(e&&e instanceof HTMLMediaElement)&&(/^blob/.test(e.currentSrc)||/^blob/.test(e.src))}(s)?this._errorHandler(i):t(e.eventName,null==e?void 0:e.error)})),this.compatibleConfig(this.playerConfig),this.mp4=null,this.mse=null,this._waitAdjustTimeCnt=0,this._lastCheckTime=Lt.nowTime(),this._removeBuffeEndTime=0,this._pendingPromises=[]}static get pluginName(){return"mp4Plugin"}static get defaultConfig(){return{maxBufferLength:40,minBufferLength:5,disableBufferBreakCheck:!1,waitingTimeOut:15e3,waitingInBufferTimeOut:5e3,waitJampBufferMaxCnt:3,tickInSeconds:.1,reqOptions:null,closeDowngrade:!1}}static get version(){return"3.0.0-alpha.34"}compatibleConfig(e){const t=Object.keys(e);let i=null;for(let n=0;n<t.length;n++){const s=t[n].toLowerCase();if("mp4player"===s||"m4aplayer"===s){i=e[t[n]];break}}i&&(this.config={...this.config,...i});let{reqOptions:s,headers:r}=this.config;!r||s&&s.headers||(this.config.reqOptions={...s,headers:r})}afterCreate(){window.__mp4player=this;try{t.BasePlugin.defineGetterOrSetter(this.player,{__url:{get:()=>{try{return this.mse?this.mse.url:this.config.url}catch(e){return console.error(e),null}}}})}catch(e){console.error(e)}this._proxyPlayer()}attachEvents(){this.off(t.Events.SEEKING,this._onSeeking),this.on(t.Events.SEEKING,this._onSeeking),this.on(t.Events.WAITING,this._onWaiting),this.off(t.Events.URL_CHANGE,this.switchURL),this.on(t.Events.URL_CHANGE,this.switchURL)}detachEvents(){this.off(t.Events.SEEKING,this._onSeeking),this.off(t.Events.WAITING,this._onWaiting),this.off(t.Events.URL_CHANGE,this.switchURL)}_proxyPlayer(){"function"==typeof this.player.playNext&&(Qt=this.player.playNext),this.player.playNext=(...e)=>{this.playNext(...e)},Zt=this.player._startInit,ti=this.player.switchURL,ei=this.player.changeDefinition,this.player._startInit=this._playerStartInit.bind(this),this.player.switchURL=this.switchURL.bind(this),this.player.changeDefinition=this.changeDefinition.bind(this),this.player.useHooks("replay",this._replayHook),this.player.useHooks("retry",this._retryHook),this.player.setEventsMiddleware({error:this._errorMiddleware})}_playerStartInit(e){var i;const{config:s,playerConfig:r}=this;void 0===s.supportHevc&&(null==(i=t.Sniffer)?void 0:i.isHevcSupported)&&t.Sniffer.isHevcSupported()&&(s.supportHevc=!0),this._handlerUrl(r.url);const n=this.initMp4();this._initPromise=n,this._addPendingPromise(this._initPromise),this.mse&&"String"===t.Util.typeOf(e)&&/^blob/.test(e)&&e!==this.mse.url&&(e=r.url),n.then((()=>{this.mse&&(e=this.mse.url),this.attachEvents(),this._startProgress()})).catch((i=>{console.error(i);const s=!!this._initPromise&&this._initPromise.isBreak;if(this.isDestroy||s)return;let r=i;r.errorCode||(r=new t.Errors(this.player,{errorType:kt.RUNTIME,errorCode:(null==i?void 0:i.errorCode)||wt.other,vid:this.playerConfig.vid,errorMessage:(null==i?void 0:i.errorMessage)||(null==i?void 0:i.message),mediaError:{code:(null==i?void 0:i.httpCode)||wt.other,message:(null==i?void 0:i.errorMessage)||(null==i?void 0:i.message),errorType:null==i?void 0:i.errorType}}),r.url=e),this.useVideoLoad=!0,this.player.vtype="MP4_1",this.player.emit("playCatch",this.player.vtype,r)})).finally((()=>{if(!this._initPromise)return;const{isBreak:t}=this._initPromise;t||(this._initPromise&&this._removePendingPromise(this._initPromise),this._initPromise=null,!this.isDestroy&&!t&&Zt.call(this.player,e))}))}initMp4(){const{player:e,config:t}=this;e.config.vid||(e.config.vid=Date.now());const i=new Gt;this.mp4&&(this.mp4.off(Kt,this._onMp4MetaReady),this.mp4.off(qt,this._onMp4Error),this.mp4.off(Wt,this._onMp4DataCallBack),this.mp4.destroy(),this.mp4=null);const s=t._mainURL;return this.mp4=new $t(s,{...this.config,vid:e.config.vid}),this.mp4.on(Kt,this._onMp4MetaReady),this.mp4.on(qt,this._onMp4Error),this.mp4.on(Wt,this._onMp4DataCallBack),this.mp4.on(Yt,(e=>{this._curLoadSegmentIdx=e,this.log("[update curLoadSegmentIdx]",e)})),this.mp4.init(),i}_handlerUrl(e){const{config:i,playerConfig:s}=this;let r;const n=[];if("String"===t.Util.typeOf(e))r=e,s.backupURL&&n.push(s.backupURL);else if("Array"===t.Util.typeOf(e)&&e.length>0&&(r=e[0].src,e.length>1))for(let t=1;t<e.length;t++)n.push(e[t].src);if(!r&&0===n.length)return!1;i._mainURL=r,i._backupURL=n}setConfig(e){this.config=Object.assign(this.config,e)}playNext(e){const{player:t}=this;this._defInited=!1,t.resetState(),t._currentTime=0,t._duration=0,t.isPlaying=!1,this._MSEError=!1,t.pause(),this._reset(),t.setConfig(e),this.log("[Index] playNext",e),t.play(),this.emit("playnext")}checkDegrade(e){const{closeDowngrade:t}=this.config;return!t||"networkError"===e.httpCode}_errorHandler(e){var t,i;const{player:s,config:r,playerConfig:n}=this;if(!s||this.useVideoLoad)return;const{_backupURL:a}=r;if(a&&a.length>0){const e=a[0];return this.mp4.update(e),this.mp4.restart(),void a.splice(0,1)}!e.url&&(null==(t=this.mp4)?void 0:t.url)&&(e.url=this.mp4.url);const o=s.paused;console.error("final error !!!!, ",r.vid,e,null==(i=this.player.video)?void 0:i.error),this.player.vtype="MP4_2",this.player.emit("playCatch",this.player.vtype,e);if(this.checkDegrade(e)){this._initPromise&&this._removeAndRejectInitPromise(e),this._reset();const t=this.mp4?this.mp4.url:n.url;this._startDegradedPlayback(e,o,t)}else{this.player.pause(),this._reset();const{currentTime:t}=s;this.destroyMSE(),s.currentTime=t,this.emit("error",e)}}_startDegradedPlayback(e,t,i){const{player:s,playerConfig:r}=this;this.useVideoLoad=!0,this.destroyMSE(),this._currentTime=s._currentTime,this.__onmetadataHandle=()=>{this._currentTime&&(s.currentTime=this._currentTime),t?this.player.pause():this.player.play();(s.media||s.video).removeEventListener("loadedmetadata",this.__onmetadataHandle),this.__onmetadataHandle=null};const n=s.media||s.video;n.addEventListener("loadedmetadata",this.__onmetadataHandle),Ct(n),r.url=i,Pt(s,i)}_addPendingPromise(e){this._pendingPromises.push(e)}_removePendingPromise(e){const t=this._pendingPromises.indexOf(e);t>-1&&this._pendingPromises.splice(t,1)}_cancelPendingPromises(){this._pendingPromises.length>0&&this._pendingPromises.forEach((e=>{e.reject("DESTROYED")})),this._pendingPromises=[]}_removeAndRejectInitPromise(e){this._initPromise&&(this._removePendingPromise(this._initPromise),this._initPromise.reject(e))}async _initMse(e){this.mse&&(await this.mse.unbindMedia(),this.mse=null);const t=this.mp4&&this.mp4.checkCodecH265(),i=!!e.videoCodec,s=!!e.audioCodec;let r;r=i&&s?t?'video/mp4; codecs="hev1.1.6.L93.B0, mp4a.40.5"':'video/mp4; codecs="avc1.64001E, mp4a.40.5"':i?t?'video/mp4; codecs="hev1.1.6.L93.B0"':'video/mp4; codecs="avc1.64001E"':'video/mp4; codecs="mp4a.40.5"';const n={[rt.VIDEO]:{mimeType:"video/mp4",codec:r}};this.mse=new rt;this.mse.bindMedia(this.player.video).then((()=>{const e=Object.keys(n);try{for(let t=0;t<e.length;t++){const i=e[t];this.mse.createSource(i,n[i].codec)}}catch(t){console.error("MSE error: ",t),this._errorHandler(t)}this._isMseInit=!0,this._onTimeUpdate()}))}async destroyMSE(){var e;await(null==(e=this.mse)?void 0:e.unbindMedia()),this.mse=null}_onTimeUpdate(){const{mse:e,mp4:t,player:i,config:s}=this;if(!t)return;const r=t.timeRange,n=i.getBufferedRange(i.buffered2);if(e&&t&&t.canDownload){Lt.nowTime()-this._lastCheckTime>1e3&&(this._lastCheckTime=Lt.nowTime(),this._loadStuckCheck(),this._checkRemoveSourceBuffer(n,i.currentTime));const e=i.paused?i.currentTime+s.minBufferLength:i.currentTime+s.maxBufferLength;n[1]-e<0&&r.every(((e,t)=>!!e.downloaded||(!this._isChangeDefinition&&e.endTime-e.startTime>1&&this._isInBuffer(e)?(e.downloaded=!0,e.isLoading=!0,this.log(`onTimeUpdate, ${t} download segment, has buffer`,e.startTime,e.endTime),!0):void(e.startTime-i.currentTime<s.maxBufferLength&&(this._curLoadSegmentIdx=t,this.log("[onTimeUpdate],load index==>>>, ",t,",IdxTimeRange, ",e.startTime,"-",e.endTime,",buffEnd, ",n[1],",playCurTime,",i.currentTime,", bufferLen,",n[1]-i.currentTime,",bufferRangeList,",this.player.buffered2?this.player.buffered2.bufferedList:null),this._loadData()))))),this._isEnded()}this.checkRemoveOldBitrateBuffer()}checkRemoveOldBitrateBuffer(){const{mse:e,player:t}=this;e&&this._removeBuffeEndTime>0&&t.currentTime>this._removeBuffeEndTime+1&&(this.log("remove old bitrate buffer",this._removeBuffeEndTime),e.remove(rt.VIDEO,0,this._removeBuffeEndTime-1),this._removeBuffeEndTime=0)}_isInBuffer(e,t=0){let i=!1;const s=this.player.video.buffered;for(let r=0;r<s.length;r++){const n=s.start(r)-t,a=s.end(r)+t;if(n<=e.startTime&&e.endTime<=a){i=!0;break}}return i}async _loadData(){if(this.mp4&&this._isMseInit)try{await this.mp4.load(this._curLoadSegmentIdx,this._loadDataSuccess)}catch(e){console.error("[Index] _loadData error",this.playerConfig.vid,e),this._errorHandler(e)}else this.log("loadData, player.mp4 null",this._isMseInit)}_appendInitSeg(e){this.mp4&&this.mse&&this.mse.append(rt.VIDEO,e,{vid:this.playerConfig.vid,range:null,dataLen:e.byteLength,isinit:!0}).then((e=>{this.log("appendInitSeg end ==>>>",e.context?e.context:null,", costTime,",e.costtime)}))}_appendBuffer(e,t,i={},s){const{mse:r,config:n}=this;r.append(e,t,{vid:n.vid,fragIndex:i.fragIndex,range:i.range,dataLen:t.byteLength,state:s}).then((e=>{if(e&&(this.log("player appendBuffer end ==>>>",e.context?e.context:null,", costTime,",e.costtime,", opt,",e.name,",bufferRange,",this.player.getBufferedRange()),this.mse&&i.state&&i.fragIndex===this.mp4.timeRange.length-1)){const e=this.player.buffered;e&&e.length>0&&(this.bufferEndTime=e.end(e.length-1)),this._isEnded(),this.log("loaded ended !!!==>>>",i.range,", fragIndex,",i.fragIndex,", bufferEndTime,",this.bufferEndTime,",meta_duration,",this.mp4.meta.duration)}})).catch((e=>{if(console.log("[MSE error]",e),e&&(null==r?void 0:r.isFull())){const e=this.player.getBufferedRange(this.player.buffered2);this._checkRemoveSourceBuffer(e,this.player.currentTime,!0)}}))}_checkRemoveSourceBuffer(e,t,i){const{mse:s,mp4:r,player:n}=this;if(s&&r&&n&&(i&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),e||(e=n.getBufferedRange(n.buffered2)),t||(t=n.currentTime),!(!i&&Lt.nowTime()-this._checkRemoveBufferLastTime<=this.config.removeBufferLen||this.endofstream)&&(this._checkRemoveBufferLastTime=Lt.nowTime(),e&&e[0]>=0&&(t-e[0]>this.config.removeBufferLen||s.isFull())))){const i=e[1],n=r.getFragmentIdx(i);if(n>=0&&r.timeRange[n].startTime<t){const t=Math.floor(Math.min(r.timeRange[n].startTime,e[1]));e[0]<t?(this.log("[checkremoveSourceBuffer], remove range==>>>",e[0],t),s.remove(rt.VIDEO,e[0],t)):s.isFull()&&!this._removeBufferTimer&&(this._removeBufferTimer=setTimeout((()=>{this._checkRemoveSourceBuffer(null,null,!0)}),1e4))}}}_isEnded(){const{player:e,mp4:t}=this,i=e.bufferedPoint,s=i?i.end:0;return!this.endofstream&&this.mse&&t.meta.duration-e.currentTime<.5&&(this.log("[check player isEnded],deal mse.endOfStream, currentTime,",e.currentTime,", bufferend,",s,", duration,",t.meta.duration),this.endofstream=!0,this.mse.endOfStream()),!!(t&&t.meta&&t.meta.duration-e.currentTime<.5)&&(this._stopProgress(),this.log("[check player isEnded],stopProgress and endOfStream,currentTime, ",e.currentTime,", bufferend,",s,", duration,",t.meta.duration),this.mse&&this.mse.endOfStream(),!0)}switchURL(e){if(this.useVideoLoad){const{player:t}=this,{currentTime:i}=t;Pt(t,e),t.once("canplay",(()=>{t.currentTime=i})),t.play()}else this.changeDefinition(e)}oldChangeDefinition(e,t){const{config:i,player:s}=this;this.log("[oldChangeDefinition],currentTime,",s.currentTime,",from,",t,",to,",e);const{currentTime:r,paused:n}=s;this._changeDefState||(this._changeDefState={currentTime:r,paused:n},this.log("[oldChangeDefinition],currentTime,",s.currentTime,",pause,",n)),s.config.url=e.url,i.focusUserDefinition=!0,s.currentTime=0,s.pause(),this._reset(),this._isMseInit=!1,this._changeDefineCanPlay&&s.off("canplay",this._changeDefineCanPlay),this._changeDefineCanPlay=()=>{this.changeDefineCanPlay(r,n,t,e),this._changeDefineCanPlay=null},s.once("canplay",this._changeDefineCanPlay),this.player.video.load(),this.initMp4()}_loadStuckCheck(){const{config:e,player:i,playerConfig:s}=this;e.disableBufferBreakCheck||(i.currentTime-(this._lastCurrentTime||0)>.1||i.paused?1!==this._bufferBreakFlag&&2!==this._bufferBreakFlag||(this.log("视频没有卡死,重置卡死标记"),this._bufferBreakFlag=0,clearTimeout(this._bufferBreakTimer),this._bufferBreakFlag=null):this._bufferBreakFlag||(this._bufferBreakFlag=1,this.log(`卡死计时开始! 持续${e.waitingTimeOut}毫秒则确认卡死`),this._bufferBreakTimer=setTimeout((()=>{this.isDestroy||(1===this._bufferBreakFlag&&(this._bufferBreakFlag=2,this.log("确认卡死!!!"),this._errorHandler(new t.Errors(this.player,{errorType:"runtime",errorTypeCode:kt.runtime,errorCode:wt.waitTimeout,errorMessage:"wait_timeout",vid:s.vid}))),this._bufferBreakTimer=null)}),e.waitingTimeOut)),this._lastCurrentTime=i.currentTime)}get isDestroy(){return!this.player}_stopProgress(){this._hasStartProgress=!1,this._requestTimer&&(this._requestTimer.stop(),this._requestTimer=null),this._bufferBreakTimer&&(clearTimeout(this._bufferBreakTimer),this._bufferBreakTimer=null,this._bufferBreakFlag=void 0)}_startProgress(){this._hasStartProgress||(this._stopProgress(),this._requestTimer=new Xt((()=>{this._requestTimer&&this._onTimeUpdate()})),this._requestTimer.tickEvery(this.config.tickInSeconds),this._hasStartProgress=!0)}log(e,...t){const{playerConfig:i}=this;Vt(i&&i.vid?`[Index]${i.vid} ${e}`:`[Index] ${e}`,...t)}_reset(){this._isMseInit=!1,this.endofstream=!1,this._curLoadSegmentIdx=0,this._removeBuffeEndTime=0,this._isChangeDefinition=!1,this._stopProgress(),this.mp4&&(this.mp4.off(Kt,this._onMp4MetaReady),this.mp4.off(qt,this._onMp4Error),this.mp4.off(Wt,this._onMp4DataCallBack),this.mp4.destroy(),this.mp4=null),this.mse&&(this.mse.unbindMedia(),this.mse=null),Ct(this.player.video)}destroy(){const{player:e}=this;e.removeHooks("replay",this._replayHook),e.removeHooks("retry",this._retryHook),e.removeEventsMiddleware({error:this._errorMiddleware}),this.detachEvents(),this._reset(),this.player.playNext=Qt,this.player._startInit=Zt,this.player.changeDefinition=ei,this.player.switchURL=ti,this._bufferBreakTimer&&clearInterval(this._bufferBreakTimer),this._removeBufferTimer&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),this._waitInBufferTimer&&(clearTimeout(this._waitInBufferTimer),this._waitInBufferTimer=null)}}e.M4aPlayer=ii,e.default=ii,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
2
2
|
//# sourceMappingURL=index.min.js.map
|