!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).flvjs=e()}(function(){return function n(r,s,a){function o(i,e){if(!s[i]){if(!r[i]){var t="function"==typeof require&&require;if(!e&&t)return t(i,!0);if(u)return u(i,!0);e=new Error("Cannot find module '"+i+"'");throw e.code="MODULE_NOT_FOUND",e}t=s[i]={exports:{}};r[i][0].call(t.exports,function(e){var t=r[i][1][e];return o(t||e)},t,t.exports,n,r,s,a)}return s[i].exports}for(var u="function"==typeof require&&require,e=0;et&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this;throw TypeError("listener must be a function")},n.prototype.once=function(e,t){if(!u(t))throw TypeError("listener must be a function");var i=!1;function n(){this.removeListener(e,n),i||(i=!0,t.apply(this,arguments))}return n.listener=t,this.on(e,n),this},n.prototype.removeListener=function(e,t){var i,n,r,s;if(!u(t))throw TypeError("listener must be a function");if(this._events&&this._events[e])if(r=(i=this._events[e]).length,n=-1,i===t||u(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(l(i)){for(s=r;0=e[i]&&tt[t.length-1].originalDts&&this.clear(),Array.prototype.push.apply(t,e))}},{key:"getLastSyncPointBeforeDts",value:function(e){if(0==this._list.length)return null;var t,i=this._list,n=0,r=i.length-1,s=0,a=r;for(e=i[t].dts&&et[i].lastSample.originalDts&&e=t[i].lastSample.originalDts&&(i===t.length-1||i=this._config.autoCleanupMaxBackwardDuration)return!0}}}return!1}},{key:"_doCleanupSourceBuffer",value:function(){var e=this._mediaElement.currentTime;if(this.checkMediaSource("_doCleanupSourceBuffer"))for(var t in this._sourceBuffers){var i=this._sourceBuffers[t];if(i){for(var n=i.buffered,r=!1,s=0;s=this._config.autoCleanupMaxBackwardDuration&&(r=!0,a=e-this._config.autoCleanupMinBackwardDuration,this._pendingRemoveRanges[t].push({start:o,end:a})):u>>32-e,this._current_word<<=e,this._current_word_bits_left-=e,t;var t=this._current_word_bits_left?this._current_word:0,e=(t>>>=32-this._current_word_bits_left,e-this._current_word_bits_left),e=(this._fillCurrentWord(),Math.min(e,this._current_word_bits_left)),i=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}},{key:"readUEG",value:function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1}},{key:"readSEG",value:function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}]);e=a;function a(e){if(!(this instanceof a))throw new TypeError("Cannot call a class as a function");this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}i.default=e},{"../utils/exception.js":40}],18:[function(e,t,i){"use strict";Object.defineProperty(i,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n=function(e,t,i){return t&&s(e.prototype,t),i&&s(e,i),e};function s(e,t){for(var i=0;ie.byteLength)break;var u=o.getUint8(0),l=16777215&o.getUint32(0,!n);if(i+11+l+4>e.byteLength)break;if(8!==u&&9!==u&&18!==u)L.default.w(this.TAG,"Unsupported tag type "+u+", skipped"),i+=11+l+4;else{var d=o.getUint8(4),h=o.getUint8(5),c=o.getUint8(6)|h<<8|d<<16|o.getUint8(7)<<24,f=(o.getUint32(7,!n),i+11);switch(u){case 8:this._parseAudioData(e,f,l,c),a+=l;break;case 9:this._parseVideoData(e,f,l,c,t+i),s+=l;break;case 18:this._parseScriptData(e,f,l)}h=o.getUint32(11+l,!n);h!==11+l&&L.default.w(this.TAG,"Invalid PrevTagSize "+h),i+=11+l+4}}return this._bpsInfo&&(this._bpsInfo.lastAudioBytes+=a,this._bpsInfo.lastVideoBytes+=s,0!=this._bpsInfo.data_updated_time&&(r=(r=(this._now()-this._bpsInfo.data_updated_time)/1e3)<1?1:Math.round(r),this._bpsInfo.time_gap_factor=r),this._bpsInfo.data_updated_time=this._now()),this._isInitialMetadataDispatched()&&this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack),i}},{key:"_parseScriptData",value:function(e,t,i){e=a.default.parseScriptData(e,t,i);if(e.hasOwnProperty("onMetaData")){if(null==e.onMetaData||"object"!==r(e.onMetaData))return void L.default.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&L.default.w(this.TAG,"Found another onMetaData tag!"),this._metadata=e;var n,t=this._metadata.onMetaData;this._onMetaDataArrived&&this._onMetaDataArrived(Object.assign({},t)),"boolean"==typeof t.hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=t.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof t.hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=t.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof t.audiodatarate&&(this._mediaInfo.audioDataRate=t.audiodatarate),"number"==typeof t.videodatarate&&(this._mediaInfo.videoDataRate=t.videodatarate),"number"==typeof t.width&&(this._mediaInfo.width=t.width),"number"==typeof t.height&&(this._mediaInfo.height=t.height),"number"==typeof t.duration?this._durationOverrided||(i=Math.floor(t.duration*this._timescale),this._duration=i,this._mediaInfo.duration=i):this._mediaInfo.duration=0,"number"!=typeof t.framerate||0<(i=Math.floor(1e3*t.framerate))&&(n=i/1e3,this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=n,this._referenceFrameRate.fps_num=i,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=n),"object"===r(t.keyframes)?(this._mediaInfo.hasKeyframesIndex=!0,i=t.keyframes,this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(i),t.keyframes=null):this._mediaInfo.hasKeyframesIndex=!1,this._dispatch=!1,this._mediaInfo.metadata=t,L.default.v(this.TAG,"Parsed onMetaData, hasAudio:"+this._mediaInfo.hasAudio+", hasVideo:"+this._mediaInfo.hasVideo+", video demension:"+this._mediaInfo.width+"x"+this._mediaInfo.height+"@"+this._mediaInfo.fps+" fps, hasKeyframesIndex="+this._mediaInfo.hasKeyframesIndex+", video_bitrate="+this._mediaInfo.videoDataRate+", audio_bitrate="+this._mediaInfo.audioDataRate),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}0>>4;if(2!=s&&10!=s)this._onError(w.default.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+s);else{var a=0,o=(12&r)>>>2;if(0<=o&&o<=4){var a=this._flvSoundRateTable[o],r=1&r,u=this._audioMetadata,l=this._audioTrack;if(u||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),(u=this._audioMetadata={type:"audio"}).id=l.id,u.timescale=this._timescale,u.duration=this._duration,u.audioSampleRate=a,u.channelCount=0==r?1:2),10==s){a=this._parseAACAudioData(e,t+1,i-1);null!=a&&(0===a.packetType?(u.config&&L.default.w(this.TAG,"Found another AudioSpecificConfig!"),r=a.data,L.default.v(this.TAG,"old {channel:"+u.channelCount+", codec:"+u.codec+", sample rate:"+u.audioSampleRate+", orignal codec:"+r.originalCodec+", config:"+u.config+"}"),L.default.v(this.TAG,"new {channel:"+r.channelCount+", codec:"+r.codec+", sample rate:"+r.samplingRate+", orignal codec:"+r.originalCodec+", config:"+r.config+"}"),u.channelCount===r.channelCount&&u.audioSampleRate===r.samplingRate&&u.codec===r.codec&&u.originalCodec===r.originalCodec?L.default.w(this.TAG,"audio specific config do not changed, discard it."):(u.audioSampleRate=r.samplingRate,u.channelCount=r.channelCount,u.codec=r.codec,u.originalCodec=r.originalCodec,u.config=r.config,u.refSampleDuration=1024/u.audioSampleRate*u.timescale,this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",u),(r=this._mediaInfo).audioCodec=u.originalCodec,r.audioSampleRate=u.audioSampleRate,r.audioChannelCount=u.channelCount,r.hasVideo?null!=r.videoCodec&&(r.mimeType='video/x-flv; codecs="'+r.videoCodec+","+r.audioCodec+'"'):r.mimeType='video/x-flv; codecs="'+r.audioCodec+'"',r.isComplete()&&this._onMediaInfo(r))):1===a.packetType?(r=this._timestampBase+n,r={unit:a.data,length:a.data.byteLength,dts:r,pts:r},l.samples.push(r),l.length+=a.data.length):L.default.e(this.TAG,"Flv: Unsupported AAC data type "+a.packetType))}else if(2==s){if(!u.codec){r=this._parseMP3AudioData(e,t+1,i-1,!0);if(null==r)return;u.audioSampleRate=r.samplingRate,u.channelCount=r.channelCount,u.codec=r.codec,u.originalCodec=r.originalCodec,u.refSampleDuration=1152/u.audioSampleRate*u.timescale,L.default.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",u);a=this._mediaInfo;a.audioCodec=u.codec,a.audioSampleRate=u.audioSampleRate,a.audioChannelCount=u.channelCount,a.audioDataRate=r.bitRate,a.hasVideo?null!=a.videoCodec&&(a.mimeType='video/x-flv; codecs="'+a.videoCodec+","+a.audioCodec+'"'):a.mimeType='video/x-flv; codecs="'+a.audioCodec+'"',a.isComplete()&&this._onMediaInfo(a)}s=this._parseMP3AudioData(e,t+1,i-1,!1);null!=s&&(u=this._timestampBase+n,r={unit:s,length:s.byteLength,dts:u,pts:u},l.samples.push(r),l.length+=s.length)}}else this._onError(w.default.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+o)}}}},{key:"_parseAACAudioData",value:function(e,t,i){var n,r;{if(!(i<=1))return n={},r=new Uint8Array(e,t,i),n.packetType=r[0],0===r[0]?n.data=this._parseAACAudioSpecificConfig(e,t+1,i-1):n.data=r.subarray(1),n;L.default.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!")}}},{key:"_parseAACAudioSpecificConfig",value:function(e,t,i){var n,r,e=new Uint8Array(e,t,i),t=null,i=0,s=null,i=n=e[0]>>>3;if((r=(7&e[0])<<1|e[1]>>>7)<0||r>=this._mpegSamplingRates.length)this._onError(w.default.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");else{var a=this._mpegSamplingRates[r],o=(120&e[1])>>>3;if(!(o<0||8<=o))return 5===i&&(s=(7&e[1])<<1|e[2]>>>7,e[2]),-1!==(e=self.navigator.userAgent.toLowerCase()).indexOf("firefox")?s=6<=r?(i=5,t=new Array(4),r-3):(i=2,t=new Array(2),r):-1!==e.indexOf("android")?(i=2,t=new Array(2),s=r):(i=5,s=r,t=new Array(4),6<=r?s=r-3:1==o&&(i=2,t=new Array(2),s=r)),t[0]=i<<3,t[0]|=(15&r)>>>1,t[1]=(15&r)<<7,t[1]|=(15&o)<<3,5===i&&(t[1]|=(15&s)>>>1,t[2]=(1&s)<<7,t[2]|=8,t[3]=0),{config:t,samplingRate:a,channelCount:o,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n};this._onError(w.default.FORMAT_ERROR,"Flv: AAC invalid channel configuration")}}},{key:"_parseMP3AudioData",value:function(e,t,i,n){if(!(i<4)){this._littleEndian;e=new Uint8Array(e,t,i),t=null;if(n){if(255!==e[0])return;var i=e[1]>>>3&3,n=(6&e[1])>>1,r=(240&e[2])>>>4,s=(12&e[2])>>>2,a=3!=(e[3]>>>6&3)?2:1,o=0,u=0;switch(i){case 0:o=this._mpegAudioV25SampleRateTable[s];break;case 2:o=this._mpegAudioV20SampleRateTable[s];break;case 3:o=this._mpegAudioV10SampleRateTable[s]}switch(n){case 1:r>>4,7!=(a=15&a)?this._onError(w.default.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+a):this._parseAVCVideoPacket(e,t+1,i-1,n,r,s))}},{key:"_parseAVCVideoPacket",value:function(e,t,i,n,r,s){var a,o,u;i<4?L.default.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime"):(a=this._littleEndian,o=(u=new DataView(e,t,i)).getUint8(0),u=(16777215&u.getUint32(0,!a))<<8>>8,0===o?this._parseAVCDecoderConfigurationRecord(e,t+4,i-4):1===o?this._parseAVCVideoData(e,t+4,i-4,n,r,s,u):2!==o&&this._onError(w.default.FORMAT_ERROR,"Flv: Invalid video packet type "+o))}},{key:"_parseAVCDecoderConfigurationRecord",value:function(e,t,i){if(i<7)L.default.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");else{var n=this._videoMetadata,r=this._videoTrack,s=this._littleEndian,a=new DataView(e,t,i),o=!1,r=(n?void 0!==n.avcc&&(o=!0):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),(n=this._videoMetadata={type:"video"}).id=r.id,n.timescale=this._timescale,n.duration=this._duration),a.getUint8(0)),u=a.getUint8(1);a.getUint8(2),a.getUint8(3);if(1!==r||0===u)this._onError(w.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");else if(this._naluLengthSize=1+(3&a.getUint8(4)),3!==this._naluLengthSize&&4!==this._naluLengthSize)this._onError(w.default.FORMAT_ERROR,"Flv: Strange NaluLengthSizeMinusOne: "+(this._naluLengthSize-1));else{var l=31&a.getUint8(5);if(0==l)this._onError(w.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");else{1=f.codec_size.height;if(o&&this._lastVideoDimension){if(this._lastVideoDimension.width!=f.codec_size.width||this._lastVideoDimension.height!=f.codec_size.height){this._resolutionChanged=!0,L.default.d(this.TAG,"video resolution changed from ["+this._lastVideoDimension.width+"x"+this._lastVideoDimension.height+"] to ["+f.codec_size.width+"x"+f.codec_size.height+"]"),this._lastVideoDimension.width=f.codec_size.width,this._lastVideoDimension.height=f.codec_size.height,this._lastVideoDimension.profile=f.profile_string,this._lastVideoDimension.level=f.level_string;var m={};m.width=f.codec_size.width,m.height=f.codec_size.height,this._onVideoResolutionChanged(m)}else if(this._lastVideoDimension.profile==f.profile_string&&this._lastVideoDimension.level==f.level_string)return void L.default.d(this.TAG,"video config does not changed. discard reset.")}else this._lastVideoDimension.width=f.codec_size.width,this._lastVideoDimension.height=f.codec_size.height,this._lastVideoDimension.profile=f.profile_string,this._lastVideoDimension.level=f.level_string,L.default.d(this.TAG,"got new video dimension: ["+this._lastVideoDimension.width+"x"+this._lastVideoDimension.height+"]");n.codecWidth=f.codec_size.width,n.codecHeight=f.codec_size.height,n.presentWidth=f.present_size.width,n.presentHeight=f.present_size.height,n.profile=f.profile_string,n.level=f.level_string,n.bitDepth=f.bit_depth,n.chromaFormat=f.chroma_format,n.sarRatio=f.sar_ratio,n.frameRate=f.frame_rate,!1!==f.frame_rate.fixed&&0!==f.frame_rate.fps_num&&0!==f.frame_rate.fps_den||(n.frameRate=this._referenceFrameRate);for(var m=n.frameRate.fps_den,p=n.frameRate.fps_num,g=(n.refSampleDuration=n.timescale*(m/p),_.subarray(1,4)),v="avc1.",y=0;y<3;y++){var b=g[y].toString(16);v+=b=b.length<2?"0"+b:b}n.codec=v;p=this._mediaInfo;p.width=n.codecWidth,p.height=n.codecHeight,p.fps=n.frameRate.fps,p.profile=n.profile,p.level=n.level,p.refFrames=f.ref_frames,p.chromaFormat=f.chroma_format_string,p.sarNum=n.sarRatio.width,p.sarDen=n.sarRatio.height,p.videoCodec=v,p.hasAudio?null!=p.audioCodec&&(p.mimeType='video/x-flv; codecs="'+p.videoCodec+","+p.audioCodec+'"'):p.mimeType='video/x-flv; codecs="'+p.videoCodec+'"',p.isComplete()&&this._onMediaInfo(p)}}}var E=a.getUint8(h);if(0===E)this._onError(w.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No PPS");else{1 DataSize!");var p=31&u.getUint8(h+c),g=(5==p&&(_=!0),new Uint8Array(e,t+h,c+m));l.push({type:p,data:g}),d+=g.byteLength,h+=c+m}l.length&&(n=this._videoTrack,s={units:l,length:d,isKeyframe:_,dts:f,cts:a,pts:f+a},_&&(s.fileposition=r),n.samples.push(s),n.length+=d)}},{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(e){this._onTrackMetadata=e}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(e){this._onMediaInfo=e}},{key:"onMetaDataArrived",get:function(){return this._onMetaDataArrived},set:function(e){this._onMetaDataArrived=e}},{key:"onScriptDataArrived",get:function(){return this._onScriptDataArrived},set:function(e){this._onScriptDataArrived=e}},{key:"onError",get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(e){this._onDataAvailable=e}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(e){this._timestampBase=e}},{key:"overridedDuration",get:function(){return this._duration},set:function(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}},{key:"overridedHasAudio",set:function(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e}},{key:"overridedHasVideo",set:function(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e}},{key:"onVideoResolutionChanged",get:function(){return this._onVideoResolutionChanged},set:function(e){this._onVideoResolutionChanged=e}}],[{key:"probe",value:function(e){var e=new Uint8Array(e),t={match:!1};if(70!==e[0]||76!==e[1]||86!==e[2]||1!==e[3])return t;var i,n=(4&e[4])>>>2!=0,r=0!=(1&e[4]),e=e[i=5]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3];return e<9?t:{match:!0,consumed:e,dataOffset:e,hasAudioTrack:n,hasVideoTrack:r}}}]);e=m;function m(e,t){if(!(this instanceof m))throw new TypeError("Cannot call a class as a function");this.TAG="FLVDemuxer",this._config=t,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null,this._onVideoResolutionChanged=null,this._dataOffset=e.dataOffset,this._firstParse=!0,this._dispatch=!1,this._hasAudio=e.hasAudioTrack,this._hasVideo=e.hasVideoTrack,this._hasAudioFlagOverrided=!1,this._hasVideoFlagOverrided=!1,this._audioInitialMetadataDispatched=!1,this._videoInitialMetadataDispatched=!1,this._mediaInfo=new o.default,this._mediaInfo.hasAudio=this._hasAudio,this._mediaInfo.hasVideo=this._hasVideo,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this.timestamplast=0,this.timestamppos=0,this._naluLengthSize=4,this._timestampBase=0,this._timescale=1e3,this._duration=0,this._durationOverrided=!1,this._referenceFrameRate={fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3},this._flvSoundRateTable=[5500,11025,22050,44100,48e3],this._mpegSamplingRates=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],this._lastVideoDimension={width:-1,height:-1,profile:"",level:""},this._bpsCalculator=null,this._bpsInfo={lastVideoBytes:0,lastAudioBytes:0,bps_video:0,bps_audio:0,data_updated_time:0,time_gap_factor:1},this._resolutionChanged=!1,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now,this._mpegAudioV10SampleRateTable=[44100,48e3,32e3,0],this._mpegAudioV20SampleRateTable=[22050,24e3,16e3,0],this._mpegAudioV25SampleRateTable=[11025,12e3,8e3,0],this._mpegAudioL1BitRateTable=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],this._mpegAudioL2BitRateTable=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],this._mpegAudioL3BitRateTable=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],this._videoTrack={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this._audioTrack={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._littleEndian=(t=new ArrayBuffer(2),new DataView(t).setInt16(0,256,!0),256===new Int16Array(t)[0])}i.default=e},{"../core/media-info.js":7,"../utils/exception.js":40,"../utils/logger.js":41,"./amf-parser.js":15,"./demux-errors.js":16,"./sps-parser.js":19}],19:[function(e,t,i){"use strict";Object.defineProperty(i,"__esModule",{value:!0});var n=function(e,t,i){return t&&r(e.prototype,t),i&&r(e,i),e};function r(e,t){for(var i=0;i=i[t]&&ethis._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),r=new Uint8Array(this._stashBuffer,0,this._bufferSize)),r.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength):(s=this._dispatchChunks(e,t))this._bufferSize&&(this._expandBuffer(a),r=new Uint8Array(this._stashBuffer,0,this._bufferSize)),r.set(new Uint8Array(e,s),0),this._stashUsed+=a,this._stashByteStart=t+s))):0===this._stashUsed?(r=this._dispatchChunks(e,t))this._bufferSize&&this._expandBuffer(a),new Uint8Array(this._stashBuffer,0,this._bufferSize).set(new Uint8Array(e,r),0),this._stashUsed+=a,this._stashByteStart=t+r):(this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength),(s=new Uint8Array(this._stashBuffer,0,this._bufferSize)).set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength,(a=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart))=this._bufferLimit&&(o.default.v(this.TAG,"MSStream buffer exceeded max size near "+(i+t.byteLength)+", reconnecting..."),this._doReconnectIfNeeded()))}},{key:"_doReconnectIfNeeded",value:function(){var e;(null==this._contentLength||this._receivedLength=this._contentLength&&(e=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:e},this._internalOpen(this._dataSource,this._currentRequestRange)}},{key:"_internalOpen",value:function(e,t){this._lastTimeLoaded=0;var i=e.url,i=(this._config.reuseRedirectedURL&&(null!=this._currentRedirectedURL?i=this._currentRedirectedURL:null!=e.redirectedURL&&(i=e.redirectedURL)),this._seekHandler.getConfig(i,t)),n=(this._currentRequestURL=i.url,this._xhr=new XMLHttpRequest);if(n.open("GET",i.url,!0),n.responseType="arraybuffer",n.onreadystatechange=this._onReadyStateChange.bind(this),n.onprogress=this._onProgress.bind(this),n.onload=this._onLoad.bind(this),n.onerror=this._onXhrError.bind(this),e.withCredentials&&(n.withCredentials=!0),"object"===u(i.headers)){var r,s=i.headers;for(r in s)s.hasOwnProperty(r)&&n.setRequestHeader(r,s[r])}if("object"===u(this._config.headers)){var a,o=this._config.headers;for(a in o)o.hasOwnProperty(a)&&n.setRequestHeader(a,o[a])}n.send()}},{key:"abort",value:function(){this._requestAbort=!0,this._internalAbort(),this._status=l.LoaderStatus.kComplete}},{key:"_internalAbort",value:function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)}},{key:"_onReadyStateChange",value:function(e){var t,e=e.target;if(2===e.readyState)if(null!=e.responseURL&&(t=this._seekHandler.removeURLParameters(e.responseURL),e.responseURL!==this._currentRequestURL&&t!==this._currentRedirectedURL&&(this._currentRedirectedURL=t,this._onURLRedirect&&this._onURLRedirect(t))),200<=e.status&&e.status<=299)this._waitForTotalLength||(this._status=l.LoaderStatus.kBuffering);else{if(this._status=l.LoaderStatus.kError,!this._onError)throw new d.RuntimeException("RangeLoader: Http code invalid, "+e.status+" "+e.statusText);this._onError(l.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})}}},{key:"_onProgress",value:function(e){if(this._status!==l.LoaderStatus.kError){if(null===this._contentLength){var t=!1;if(this._waitForTotalLength&&(this._waitForTotalLength=!1,t=this._totalLengthReceived=!0,i=e.total,this._internalAbort(),null!=i&0!==i&&(this._totalLength=i)),-1===this._range.to?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,t)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var i=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(i)}}},{key:"_normalizeSpeed",value:function(e){var t,i=this._chunkSizeKBList,n=i.length-1,r=0,s=n;if(e=i[t]&&e=1e3*(i+n._config.lazyLoadMaxDuration)&&null==n._progressChecker&&n._suspendTransmuxer())}),this._transmuxer.on(h.default.LOADING_COMPLETE,function(){n._msectl.endOfStream(),n._emitter.emit(l.default.LOADING_COMPLETE)}),this._transmuxer.on(h.default.RECOVERED_EARLY_EOF,function(){n._emitter.emit(l.default.RECOVERED_EARLY_EOF)}),this._transmuxer.on(h.default.IO_ERROR,function(e,t){n._emitter.emit(l.default.ERROR,_.ErrorTypes.NETWORK_ERROR,e,t)}),this._transmuxer.on(h.default.DEMUX_ERROR,function(e,t){n._emitter.emit(l.default.ERROR,_.ErrorTypes.MEDIA_ERROR,e,{code:-1,msg:t})}),this._transmuxer.on(h.default.MEDIA_INFO,function(e){n._mediaInfo=e,n._emitter.emit(l.default.MEDIA_INFO,Object.assign({},e))}),this._transmuxer.on(h.default.METADATA_ARRIVED,function(e){n._emitter.emit(l.default.METADATA_ARRIVED,e)}),this._transmuxer.on(h.default.SCRIPTDATA_ARRIVED,function(e){n._emitter.emit(l.default.SCRIPTDATA_ARRIVED,e)}),this._transmuxer.on(h.default.STATISTICS_INFO,function(e){n._statisticsInfo=n._fillStatisticsInfo(e),n._emitter.emit(l.default.STATISTICS_INFO,Object.assign({},n._statisticsInfo))}),this._transmuxer.on(h.default.RECOMMEND_SEEKPOINT,function(e){n._mediaElement&&!n._config.accurateSeek&&(n._requestSetTime=!0,n._mediaElement.currentTime=e/1e3)}),this._transmuxer.on(h.default.VIDEO_RESOLUTION_CHANGED,function(e){n._emitter.emit(l.default.VIDEO_RESOLUTION_CHANGED,e)}),this._transmuxer.open()))}},{key:"unload",value:function(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null),this._durationMonitor&&(self.clearInterval(this._durationMonitor),this._durationMonitor=null),this._latencyDetectTimer&&(self.clearInterval(this._latencyDetectTimer),this._latencyDetectTimer=null,this._latencyAdjustCount=0,this._latencyAdjustCountTotal=0),this._forzenTimes=0,this._lastDecodedFrames=0}},{key:"play",value:function(){return this._mediaElement.play()}},{key:"pause",value:function(){this._mediaElement.pause()}},{key:"_fillStatisticsInfo",value:function(e){var t,i,n,r;return e.playerType=this._type,this._mediaElement instanceof HTMLVideoElement&&(t=!0,r=n=0,this._mediaElement.getVideoPlaybackQuality?(n=(i=this._mediaElement.getVideoPlaybackQuality()).totalVideoFrames,r=i.droppedVideoFrames):null!=this._mediaElement.webkitDecodedFrameCount?(n=this._mediaElement.webkitDecodedFrameCount,r=this._mediaElement.webkitDroppedFrameCount):t=!1,t&&(e.decodedFrames=n,e.droppedFrames=r)),e}},{key:"enableVideoStateMonitor",value:function(e){this._enableDurationMonitor=e,this._enableVideoFrozenMonitor=e}},{key:"_increaseLatency",value:function(e){this._curLatencyThreshold+=e,this._curLatencyThreshold>this._config.highLatencyThreshold&&(this._curLatencyThreshold=this._config.highLatencyThreshold),o.default.i(this.TAG,"latency +"+this._curLatencyThreshold)}},{key:"_decreaseLatency",value:function(e){this._curLatencyThreshold-=e,this._curLatencyThresholdthis._config.highLatencyThreshold&&(this._curLatencyThreshold=this._config.highLatencyThreshold),o.default.i(this.TAG,"update current latency threshold : "+this._curLatencyThreshold)}},{key:"_adjustDurationGap",value:function(){this._latencyAdjustCountthis._latencyDetectThreshold&&this._increaseLatency(5*this._latencyDetectAdjustStep),this._latencyAdjustCount=0}},{key:"_doDurationMonitor",value:function(){if(this._enableDurationMonitor&&this._mseSourceOpened&&(!this._msectl||!this._msectl.checkSourceBufferNull())){var e=this._mediaElement.buffered,t=this._mediaElement.currentTime,i=this._mediaElement.paused;if(null!=e&&0!=e.length){var e=e.end(0),t=e-t;if(!i&&t>this._curLatencyThreshold&&(i=e-this._decreaseDurationStep,o.default.w(this.TAG,"high latency gap {"+t+"}, decrease "+this._decreaseDurationStep+" and set to "+i),this._mediaElement.currentTime=i,this._requestSetTime=!0,this._latencyAdjustCountTotal++,2=this._frozenTimesThreshold&&(o.default.w(this.TAG,"Report video frozen event"),this._emitter.emit(l.default.VIDEO_FROZEN),this._forzenTimes=0)}}}}},{key:"_onmseUpdateEnd",value:function(){if(this._config.lazyLoad&&!this._config.isLive){for(var e=this._mediaElement.buffered,t=this._mediaElement.currentTime,i=0,n=0;n=t+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&this._suspendTransmuxer()}}},{key:"_onmseBufferFull",value:function(){o.default.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer(),this._emitter.emit(l.default.MS_BUFFER_FULL)}},{key:"_suspendTransmuxer",value:function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))}},{key:"_checkProgressAndResume",value:function(){for(var e=this._mediaElement.currentTime,t=this._mediaElement.buffered,i=!1,n=0;n=s-this._config.lazyLoadRecoverDuration&&(i=!0);break}}i&&(window.clearInterval(this._progressChecker),this._progressChecker=null,i&&(o.default.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))}},{key:"_isTimepointBuffered",value:function(e){for(var t=this._mediaElement.buffered,i=0;i>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);for(var a=8,o=0;o>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}},{key:"trak",value:function(e){return d.box(d.types.trak,d.tkhd(e),d.mdia(e))}},{key:"tkhd",value:function(e){var t=e.id,i=e.duration,n=e.presentWidth,e=e.presentHeight;return d.box(d.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>>8&255,255&n,0,0,e>>>8&255,255&e,0,0]))}},{key:"mdia",value:function(e){return d.box(d.types.mdia,d.mdhd(e),d.hdlr(e),d.minf(e))}},{key:"mdhd",value:function(e){var t=e.timescale,e=e.duration;return d.box(d.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]))}},{key:"hdlr",value:function(e){var t=null,t="audio"===e.type?d.constants.HDLR_AUDIO:d.constants.HDLR_VIDEO;return d.box(d.types.hdlr,t)}},{key:"minf",value:function(e){var t=null,t="audio"===e.type?d.box(d.types.smhd,d.constants.SMHD):d.box(d.types.vmhd,d.constants.VMHD);return d.box(d.types.minf,t,d.dinf(),d.stbl(e))}},{key:"dinf",value:function(){return d.box(d.types.dinf,d.box(d.types.dref,d.constants.DREF))}},{key:"stbl",value:function(e){return d.box(d.types.stbl,d.stsd(e),d.box(d.types.stts,d.constants.STTS),d.box(d.types.stsc,d.constants.STSC),d.box(d.types.stsz,d.constants.STSZ),d.box(d.types.stco,d.constants.STCO))}},{key:"stsd",value:function(e){return"audio"===e.type?"mp3"===e.codec?d.box(d.types.stsd,d.constants.STSD_PREFIX,d.mp3(e)):d.box(d.types.stsd,d.constants.STSD_PREFIX,d.mp4a(e)):d.box(d.types.stsd,d.constants.STSD_PREFIX,d.avc1(e))}},{key:"mp3",value:function(e){var t=e.channelCount,e=e.audioSampleRate,t=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,e>>>8&255,255&e,0,0]);return d.box(d.types[".mp3"],t)}},{key:"mp4a",value:function(e){var t=e.channelCount,i=e.audioSampleRate,t=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]);return d.box(d.types.mp4a,t,d.esds(e))}},{key:"esds",value:function(e){var e=e.config||[],t=e.length,t=new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e).concat([6,1,2]));return d.box(d.types.esds,t)}},{key:"avc1",value:function(e){var t=e.avcc,i=e.codecWidth,e=e.codecHeight,i=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,i>>>8&255,255&i,e>>>8&255,255&e,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return d.box(d.types.avc1,i,d.box(d.types.avcC,t))}},{key:"mvex",value:function(e){return d.box(d.types.mvex,d.trex(e))}},{key:"trex",value:function(e){e=e.id,e=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return d.box(d.types.trex,e)}},{key:"moof",value:function(e,t){return d.box(d.types.moof,d.mfhd(e.sequenceNumber),d.traf(e,t))}},{key:"mfhd",value:function(e){e=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return d.box(d.types.mfhd,e)}},{key:"traf",value:function(e,t){var i=e.id,i=d.box(d.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),t=d.box(d.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=d.sdtp(e),e=d.trun(e,n.byteLength+16+16+8+16+8+8);return d.box(d.types.traf,i,t,e,n)}},{key:"sdtp",value:function(e){for(var t=e.samples||[],i=t.length,n=new Uint8Array(4+i),r=0;r>>24&255,n>>>16&255,n>>>8&255,255&n,(t+=8+e)>>>24&255,t>>>16&255,t>>>8&255,255&t],0);for(var s=0;s>>24&255,a>>>16&255,a>>>8&255,255&a,o>>>24&255,o>>>16&255,o>>>8&255,255&o,u.isLeading<<2|u.dependsOn,u.isDependedOn<<6|u.hasRedundancy<<4|u.isNonSync,0,0,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*s)}return d.box(d.types.trun,r)}},{key:"mdat",value:function(e){return d.box(d.types.mdat,e)}}]);var r=d;function d(){if(!(this instanceof d))throw new TypeError("Cannot call a class as a function")}r.init(),i.default=r},{}],38:[function(e,t,i){"use strict";Object.defineProperty(i,"__esModule",{value:!0});var n=function(e,t,i){return t&&r(e.prototype,t),i&&r(e,i),e};function r(e,t){for(var i=0;i>>24&255,d[1]=h>>>16&255,d[2]=h>>>8&255,d[3]=255&h,d.set(x.default.types.mdat,4));for(var T=0;T>>24&255,u[1]=t>>>16&255,u[2]=t>>>8&255,u[3]=255&t,u.set(x.default.types.mdat,4);for(var E=0;E "+t;s.ENABLE_CALLBACK&&s.emitter.emit("log","error",e),s.ENABLE_ERROR&&(console.error?console.error(e):console.warn?console.warn(e):console.log(e))}},{key:"i",value:function(e,t){e="["+(e=e&&!s.FORCE_GLOBAL_TAG?e:s.GLOBAL_TAG)+"] > "+t;s.ENABLE_CALLBACK&&s.emitter.emit("log","info",e),s.ENABLE_INFO&&(console.info?console.info(e):console.log(e))}},{key:"w",value:function(e,t){e="["+(e=e&&!s.FORCE_GLOBAL_TAG?e:s.GLOBAL_TAG)+"] > "+t;s.ENABLE_CALLBACK&&s.emitter.emit("log","warn",e),s.ENABLE_WARN&&(console.warn?console.warn(e):console.log(e))}},{key:"d",value:function(e,t){e="["+(e=e&&!s.FORCE_GLOBAL_TAG?e:s.GLOBAL_TAG)+"] > "+t;s.ENABLE_CALLBACK&&s.emitter.emit("log","debug",e),s.ENABLE_DEBUG&&(console.debug?console.debug(e):console.log(e))}},{key:"v",value:function(e,t){e="["+(e=e&&!s.FORCE_GLOBAL_TAG?e:s.GLOBAL_TAG)+"] > "+t;s.ENABLE_CALLBACK&&s.emitter.emit("log","verbose",e),s.ENABLE_VERBOSE&&console.log(e)}}]);n=s;function s(){if(!(this instanceof s))throw new TypeError("Cannot call a class as a function")}n.GLOBAL_TAG="flv.js",n.FORCE_GLOBAL_TAG=!1,n.ENABLE_ERROR=!0,n.ENABLE_INFO=!0,n.ENABLE_WARN=!0,n.ENABLE_DEBUG=!0,n.ENABLE_VERBOSE=!0,n.ENABLE_CALLBACK=!1,n.emitter=new e.default,i.default=n},{events:2}],42:[function(e,t,i){"use strict";Object.defineProperty(i,"__esModule",{value:!0});var n=function(e,t,i){return t&&r(e.prototype,t),i&&r(e,i),e};function r(e,t){for(var i=0;i>>10|55296)),t.push(String.fromCharCode(1023&a|56320)),n+=4;continue}}t.push(String.fromCharCode(65533)),++n}return t.join("")}},{}]},{},[21])(21)});