(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.videojsContribHls=f()}})(function(){var define,module,exports;return(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o=cue.adStartTime&&mediaTime<=cue.adEndTime){return cue;}} return null;};var updateAdCues=function updateAdCues(media,track){var offset=arguments.length<=2||arguments[2]===undefined?0:arguments[2];if(!media.segments){return;} var mediaTime=offset;var cue=undefined;for(var i=0;i=0x20&&e<0x7e){return String.fromCharCode(e);} return '.';};var utils={hexDump:function hexDump(data){var bytes=Array.prototype.slice.call(data);var step=16;var result='';var hex=undefined;var ascii=undefined;for(var j=0;j');} this.logger_('initialize');var waitingHandler=function waitingHandler(){return _this.waiting_();};var cancelTimerHandler=function cancelTimerHandler(){return _this.cancelTimer_();};this.tech_.on('waiting',waitingHandler);this.tech_.on(timerCancelEvents,cancelTimerHandler);this.monitorCurrentTime_();this.dispose=function(){_this.logger_('dispose');_this.tech_.off('waiting',waitingHandler);_this.tech_.off(timerCancelEvents,cancelTimerHandler);if(_this.checkCurrentTimeTimeout_){clearTimeout(_this.checkCurrentTimeTimeout_);} _this.cancelTimer_();};} _createClass(GapSkipper,[{key:'monitorCurrentTime_',value:function monitorCurrentTime_(){this.checkCurrentTime_();if(this.checkCurrentTimeTimeout_){clearTimeout(this.checkCurrentTimeTimeout_);} this.checkCurrentTimeTimeout_=setTimeout(this.monitorCurrentTime_.bind(this),250);}},{key:'waiting_',value:function waiting_(){if(!this.tech_.seeking()){this.setTimer_();}}},{key:'checkCurrentTime_',value:function checkCurrentTime_(){if(this.tech_.paused()||this.tech_.seeking()){return;} var currentTime=this.tech_.currentTime();if(this.consecutiveUpdates===5&¤tTime===this.lastRecordedTime){this.consecutiveUpdates++;this.waiting_();}else if(currentTime===this.lastRecordedTime){this.consecutiveUpdates++;}else{this.consecutiveUpdates=0;this.lastRecordedTime=currentTime;}}},{key:'cancelTimer_',value:function cancelTimer_(){this.consecutiveUpdates=0;if(this.timer_){this.logger_('cancelTimer_');clearTimeout(this.timer_);} this.timer_=null;}},{key:'skipTheGap_',value:function skipTheGap_(scheduledCurrentTime){var buffered=this.tech_.buffered();var currentTime=this.tech_.currentTime();var nextRange=_ranges2['default'].findNextRange(buffered,currentTime);this.consecutiveUpdates=0;this.timer_=null;if(nextRange.length===0||currentTime!==scheduledCurrentTime){return;} this.logger_('skipTheGap_:','currentTime:',currentTime,'scheduled currentTime:',scheduledCurrentTime,'nextRange start:',nextRange.start(0));this.tech_.setCurrentTime(nextRange.start(0)+_ranges2['default'].TIME_FUDGE_FACTOR);}},{key:'gapFromVideoUnderflow_',value:function gapFromVideoUnderflow_(buffered,currentTime){var gaps=_ranges2['default'].findGaps(buffered);for(var i=0;i2){return{start:start,end:end};}} return null;}},{key:'setTimer_',value:function setTimer_(){var buffered=this.tech_.buffered();var currentTime=this.tech_.currentTime();var nextRange=_ranges2['default'].findNextRange(buffered,currentTime);if(this.timer_!==null){return;} if(nextRange.length===0){var gap=this.gapFromVideoUnderflow_(buffered,currentTime);if(gap){this.logger_('setTimer_:','Encountered a gap in video','from: ',gap.start,'to: ',gap.end,'seeking to current time: ',currentTime);this.tech_.setCurrentTime(currentTime);} return;} var difference=nextRange.start(0)-currentTime;this.logger_('setTimer_:','stopped at:',currentTime,'setting timer for:',difference,'seeking to:',nextRange.start(0));this.timer_=setTimeout(this.skipTheGap_.bind(this),difference*1000,currentTime);}},{key:'logger_',value:function logger_(){}}]);return GapSkipper;})();exports['default']=GapSkipper;module.exports=exports['default'];}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./ranges":8}],5:[function(require,module,exports){(function(global){'use strict';Object.defineProperty(exports,'__esModule',{value:true});var _createClass=(function(){function defineProperties(target,props){for(var i=0;imainSeekable.start(0)?audioSeekable.start(0):mainSeekable.start(0),audioSeekable.end(0)0){newDuration=Math.max(newDuration,buffered.end(buffered.length-1));} if(oldDuration!==newDuration){if(this.mediaSource.readyState!=='open'){this.mediaSource.addEventListener('sourceopen',setDuration);}else{setDuration();}}}},{key:'dispose',value:function dispose(){this.masterPlaylistLoader_.dispose();this.mainSegmentLoader_.dispose();this.audioSegmentLoader_.dispose();}},{key:'master',value:function master(){return this.masterPlaylistLoader_.master;}},{key:'media',value:function media(){return this.masterPlaylistLoader_.media()||this.initialMedia_;}},{key:'setupSourceBuffers_',value:function setupSourceBuffers_(){var media=this.masterPlaylistLoader_.media();var mimeTypes=undefined;if(!media||this.mediaSource.readyState!=='open'){return;} mimeTypes=mimeTypesForPlaylist_(this.masterPlaylistLoader_.master,media);if(mimeTypes.length<1){this.error='No compatible SourceBuffer configuration for the variant stream:'+media.resolvedUri;return this.mediaSource.endOfStream('decode');} this.mainSegmentLoader_.mimeType(mimeTypes[0]);if(mimeTypes[1]){this.audioSegmentLoader_.mimeType(mimeTypes[1]);} this.excludeIncompatibleVariants_(media);}},{key:'excludeIncompatibleVariants_',value:function excludeIncompatibleVariants_(media){var master=this.masterPlaylistLoader_.master;var codecCount=2;var videoCodec=null;var audioProfile=null;var codecs=undefined;if(media.attributes&&media.attributes.CODECS){codecs=parseCodecs(media.attributes.CODECS);videoCodec=codecs.videoCodec;audioProfile=codecs.audioProfile;codecCount=codecs.codecCount;} master.playlists.forEach(function(variant){var variantCodecs={codecCount:2,videoCodec:null,audioProfile:null};if(variant.attributes&&variant.attributes.CODECS){var codecString=variant.attributes.CODECS;variantCodecs=parseCodecs(codecString);if(window.MediaSource&&window.MediaSource.isTypeSupported&&!window.MediaSource.isTypeSupported('video/mp4; codecs="'+codecString+'"')){variant.excludeUntil=Infinity;}} if(variantCodecs.codecCount!==codecCount){variant.excludeUntil=Infinity;} if(variantCodecs.videoCodec!==videoCodec){variant.excludeUntil=Infinity;} if(variantCodecs.audioProfile==='5'&&audioProfile!=='5'||audioProfile==='5'&&variantCodecs.audioProfile!=='5'){variant.excludeUntil=Infinity;}});}},{key:'updateAdCues_',value:function updateAdCues_(media){var offset=arguments.length<=1||arguments[1]===undefined?0:arguments[1];_adCueTags2['default'].updateAdCues(media,this.cueTagsTrack_,offset);}}]);return MasterPlaylistController;})(_videoJs2['default'].EventTarget);exports.MasterPlaylistController=MasterPlaylistController;}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./ad-cue-tags":1,"./playlist-loader":6,"./ranges":8,"./segment-loader":11}],6:[function(require,module,exports){(function(global){'use strict';Object.defineProperty(exports,'__esModule',{value:true});function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{'default':obj};} var _resolveUrl=require('./resolve-url');var _resolveUrl2=_interopRequireDefault(_resolveUrl);var _videoJs=(typeof window!=="undefined"?window['videojs']:typeof global!=="undefined"?global['videojs']:null);var _stream=require('./stream');var _stream2=_interopRequireDefault(_stream);var _m3u8Parser=require('m3u8-parser');var _m3u8Parser2=_interopRequireDefault(_m3u8Parser);var _globalWindow=require('global/window');var _globalWindow2=_interopRequireDefault(_globalWindow);var updateSegments=function updateSegments(original,update,offset){var result=update.slice();var length=undefined;var i=undefined;offset=offset||0;length=Math.min(original.length,update.length+offset);for(i=offset;i=500?4:2};loader.trigger('error');};haveMetadata=function(xhr,url){var parser=undefined;var refreshDelay=undefined;var update=undefined;loader.setBandwidth(request||xhr);request=null;loader.state='HAVE_METADATA';parser=new _m3u8Parser2['default'].Parser();parser.push(xhr.responseText);parser.end();parser.manifest.uri=url;update=updateMaster(loader.master,parser.manifest);refreshDelay=(parser.manifest.targetDuration||10)*1000;loader.targetDuration=parser.manifest.targetDuration;if(update){loader.master=update;loader.updateMediaPlaylist_(parser.manifest);}else{refreshDelay/=2;} if(!loader.media().endList){_globalWindow2['default'].clearTimeout(mediaUpdateTimeout);mediaUpdateTimeout=_globalWindow2['default'].setTimeout(function(){loader.trigger('mediaupdatetimeout');},refreshDelay);} loader.trigger('loadedplaylist');};loader.state='HAVE_NOTHING';this.expired_=0;dispose=this.dispose;loader.dispose=function(){loader.stopRequest();_globalWindow2['default'].clearTimeout(mediaUpdateTimeout);dispose.call(this);};loader.stopRequest=function(){if(request){var oldRequest=request;request=null;oldRequest.onreadystatechange=null;oldRequest.abort();}};loader.enabledPlaylists_=function(){return loader.master.playlists.filter(function(element,index,array){return!element.excludeUntil||element.excludeUntil<=Date.now();}).length;};loader.isLowestEnabledRendition_=function(){var media=loader.media();if(!media||!media.attributes){return false;} var currentBandwidth=loader.media().attributes.BANDWIDTH||0;return!(loader.master.playlists.filter(function(element,index,array){var enabled=typeof element.excludeUntil==='undefined'||element.excludeUntil<=Date.now();if(!enabled){return false;} var item=element.attributes.BANDWIDTH;return item<=currentBandwidth;}).length>1);};loader.media=function(playlist){var startingState=loader.state;var mediaChange=undefined;if(!playlist){return loader.media_;} if(loader.state==='HAVE_NOTHING'){throw new Error('Cannot switch media playlist from '+loader.state);} if(typeof playlist==='string'){if(!loader.master.playlists[playlist]){throw new Error('Unknown playlist URI: '+playlist);} playlist=loader.master.playlists[playlist];} mediaChange=!loader.media_||playlist.uri!==loader.media_.uri;if(loader.master.playlists[playlist.uri].endList){if(request){request.onreadystatechange=null;request.abort();request=null;} loader.state='HAVE_METADATA';loader.media_=playlist;if(mediaChange){loader.trigger('mediachanging');loader.trigger('mediachange');} return;} if(!mediaChange){return;} loader.state='SWITCHING_MEDIA';if(request){if((0,_resolveUrl2['default'])(loader.master.uri,playlist.uri)===request.url){return;} request.onreadystatechange=null;request.abort();request=null;} if(this.media_){this.trigger('mediachanging');} request=this.hls_.xhr({uri:(0,_resolveUrl2['default'])(loader.master.uri,playlist.uri),withCredentials:withCredentials},function(error,req){if(!request){return;} if(error){return playlistRequestError(request,playlist.uri,startingState);} haveMetadata(req,playlist.uri);if(startingState==='HAVE_MASTER'){loader.trigger('loadedmetadata');}else{loader.trigger('mediachange');}});};loader.setBandwidth=function(xhr){loader.bandwidth=xhr.bandwidth;};loader.on('firstplay',function(){this.trackExpiredTime_=true;});loader.on('mediaupdatetimeout',function(){if(loader.state!=='HAVE_METADATA'){return;} loader.state='HAVE_CURRENT_METADATA';request=this.hls_.xhr({uri:(0,_resolveUrl2['default'])(loader.master.uri,loader.media().uri),withCredentials:withCredentials},function(error,req){if(!request){return;} if(error){return playlistRequestError(request,loader.media().uri);} haveMetadata(request,loader.media().uri);});});loader.pause=function(){loader.stopRequest();_globalWindow2['default'].clearTimeout(mediaUpdateTimeout);};loader.load=function(){if(loader.started){if(!loader.media().endList){loader.trigger('mediaupdatetimeout');}else{loader.trigger('loadedplaylist');}}else{loader.start();}};loader.start=function(){loader.started=true;request=_this.hls_.xhr({uri:srcUrl,withCredentials:withCredentials},function(error,req){var parser=undefined;var playlist=undefined;var i=undefined;if(!request){return;} request=null;if(error){loader.error={status:req.status,message:'HLS playlist request error at URL: '+srcUrl,responseText:req.responseText,code:2};return loader.trigger('error');} parser=new _m3u8Parser2['default'].Parser();parser.push(req.responseText);parser.end();loader.state='HAVE_MASTER';parser.manifest.uri=srcUrl;if(parser.manifest.playlists){loader.master=parser.manifest;i=loader.master.playlists.length;while(i--){playlist=loader.master.playlists[i];loader.master.playlists[playlist.uri]=playlist;playlist.resolvedUri=(0,_resolveUrl2['default'])(loader.master.uri,playlist.uri);} for(var groupKey in loader.master.mediaGroups.AUDIO){for(var labelKey in loader.master.mediaGroups.AUDIO[groupKey]){var alternateAudio=loader.master.mediaGroups.AUDIO[groupKey][labelKey];if(alternateAudio.uri){alternateAudio.resolvedUri=(0,_resolveUrl2['default'])(loader.master.uri,alternateAudio.uri);}}} loader.trigger('loadedplaylist');if(!request){loader.media(parser.manifest.playlists[0]);} return;} loader.master={mediaGroups:{'AUDIO':{},'VIDEO':{},'CLOSED-CAPTIONS':{},'SUBTITLES':{}},uri:_globalWindow2['default'].location.href,playlists:[{uri:srcUrl}]};loader.master.playlists[srcUrl]=loader.master.playlists[0];loader.master.playlists[0].resolvedUri=srcUrl;haveMetadata(req,srcUrl);return loader.trigger('loadedmetadata');});};};PlaylistLoader.prototype=new _stream2['default']();PlaylistLoader.prototype.updateMediaPlaylist_=function(update){var outdated=undefined;var i=undefined;var segment=undefined;outdated=this.media_;this.media_=this.master.playlists[update.uri];if(!outdated){return;} if(!this.trackExpiredTime_){return;} if(update.uri!==outdated.uri){return;} if(update.segments.length){if(typeof update.segments[0].start!=='undefined'){this.expired_=update.segments[0].start;return;}else if(typeof update.segments[0].end!=='undefined'){this.expired_=update.segments[0].end-update.segments[0].duration;return;}} i=update.mediaSequence-outdated.mediaSequence-1;for(;i>=0;i--){segment=outdated.segments[i];if(!segment){this.expired_+=outdated.targetDuration||10;continue;} if(typeof segment.end!=='undefined'){this.expired_=segment.end;return;} if(typeof segment.start!=='undefined'){this.expired_=segment.start+segment.duration;return;} this.expired_+=segment.duration;}};exports['default']=PlaylistLoader;module.exports=exports['default'];}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./resolve-url":10,"./stream":13,"global/window":25,"m3u8-parser":62}],7:[function(require,module,exports){(function(global){'use strict';Object.defineProperty(exports,'__esModule',{value:true});function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{'default':obj};} var _videoJs=(typeof window!=="undefined"?window['videojs']:typeof global!=="undefined"?global['videojs']:null);var _globalWindow=require('global/window');var _globalWindow2=_interopRequireDefault(_globalWindow);var Playlist={UNSAFE_LIVE_SEGMENTS:3};var backwardDuration=function backwardDuration(playlist,endSequence){var result=0;var i=endSequence-playlist.mediaSequence;var segment=playlist.segments[i];if(segment){if(typeof segment.start!=='undefined'){return{result:segment.start,precise:true};} if(typeof segment.end!=='undefined'){return{result:segment.end-segment.duration,precise:true};}} while(i--){segment=playlist.segments[i];if(typeof segment.end!=='undefined'){return{result:result+segment.end,precise:true};} result+=segment.duration;if(typeof segment.start!=='undefined'){return{result:result+segment.start,precise:true};}} return{result:result,precise:false};};var forwardDuration=function forwardDuration(playlist,endSequence){var result=0;var segment=undefined;var i=endSequence-playlist.mediaSequence;for(;itime){knownEnd=segment.end;endIndex=i;break;}else{knownStart=segment.end;startIndex=i+1;}}} if(startIndex===numSegments){return numSegments;} if(typeof startIndex!=='undefined'){time=time-knownStart;for(i=startIndex;i<(endIndex||numSegments);i++){segment=playlist.segments[i];time-=segment.duration;if(time<0){return i;}} if(i>=endIndex){return startIndex+Math.floor((originalTime-knownStart)/(knownEnd-knownStart)*(endIndex-startIndex));} return lastSegment;}else if(typeof endIndex!=='undefined'){time=knownEnd-time;for(i=endIndex;i>=0;i--){segment=playlist.segments[i];time-=segment.duration;if(time<0){return i;}} if(time===0){return 0;} return-1;} time=time-expired;if(time<0){return-1;} for(i=0;i=time;});};var findNextRange=function findNextRange(timeRanges,time){return filterRanges(timeRanges,function(start){return start-TIME_FUDGE_FACTOR>=time;});};var findGaps=function findGaps(buffered){if(buffered.length<2){return _videoJs2['default'].createTimeRanges();} var ranges=[];for(var i=1;i=end;};if(original){for(i=0;i=1){return null;} if(hasPlayed&&bufferedTime>=_config2['default'].GOAL_BUFFER_LENGTH){return null;} mediaIndex=(0,_playlist.getMediaIndexForTime_)(playlist,currentBufferedEnd+timeCorrection,expired);} return mediaIndex;}},{key:'abort_',value:function abort_(){if(this.xhr_){this.xhr_.abort();} this.pendingSegment_=null;}},{key:'init_',value:function init_(){this.state='READY';this.sourceUpdater_=new _sourceUpdater2['default'](this.mediaSource_,this.mimeType_);this.clearBuffer();return this.fillBuffer_();}},{key:'fillBuffer_',value:function fillBuffer_(){if(this.sourceUpdater_.updating()){return;} var buffered=this.sourceUpdater_.buffered();var playlist=this.playlist_;var currentTime=this.currentTime_();var hasPlayed=this.hasPlayed_();var expired=this.expired_;var timeCorrection=this.timeCorrection_;var requestIndex=this.checkBuffer_(buffered,playlist,currentTime,hasPlayed,expired,timeCorrection);if(requestIndex===null){return;} var isEndOfStream=detectEndOfStream(playlist,this.mediaSource_,requestIndex);if(isEndOfStream){this.mediaSource_.endOfStream();return;} if(requestIndex===playlist.segments.length-1&&this.mediaSource_.readyState==='ended'&&!this.seeking_()){return;} if(requestIndex<0||requestIndex>=playlist.segments.length){return;} var segment=this.playlist_.segments[requestIndex];var request={uri:segment.resolvedUri,mediaIndex:requestIndex,playlist:playlist,bytes:null,encryptedBytes:null,buffered:null,timestampOffset:NaN,timeline:segment.timeline,duration:segment.duration};var startOfSegment=(0,_playlist.duration)(playlist,playlist.mediaSequence+request.mediaIndex,expired);request.timestampOffset=this.sourceUpdater_.timestampOffset();if(segment.timeline!==this.currentTimeline_||startOfSegment=90){var correctionApplied=this.incrementTimeCorrection_(playlist.targetDuration/2,1);if(correctionApplied&&!this.paused()){this.fillBuffer_();} return;} this.loadSegment_(request);}},{key:'trimBuffer_',value:function trimBuffer_(segmentInfo){var seekable=this.seekable_();var currentTime=this.currentTime_();var removeToTime=0;if(seekable.length&&seekable.start(0)>0&&seekable.start(0)=removeToTime){removeToTime=previousDuration;break;}} return removeToTime;}},{key:'loadSegment_',value:function loadSegment_(segmentInfo){var segment=undefined;var keyXhr=undefined;var initSegmentXhr=undefined;var segmentXhr=undefined;var removeToTime=0;removeToTime=this.trimBuffer_(segmentInfo);if(removeToTime>0){this.sourceUpdater_.remove(0,removeToTime);} segment=segmentInfo.playlist.segments[segmentInfo.mediaIndex];if(segment.key){var keyRequestOptions=_videoJs2['default'].mergeOptions(this.xhrOptions_,{uri:segment.key.resolvedUri,responseType:'arraybuffer'});keyXhr=this.hls_.xhr(keyRequestOptions,this.handleResponse_.bind(this));} if(segment.map&&!this.initSegments_[initSegmentId(segment.map)]){var initSegmentOptions=_videoJs2['default'].mergeOptions(this.xhrOptions_,{uri:segment.map.resolvedUri,responseType:'arraybuffer',headers:segmentXhrHeaders(segment.map)});initSegmentXhr=this.hls_.xhr(initSegmentOptions,this.handleResponse_.bind(this));} this.pendingSegment_=segmentInfo;var segmentRequestOptions=_videoJs2['default'].mergeOptions(this.xhrOptions_,{uri:segmentInfo.uri,responseType:'arraybuffer',headers:segmentXhrHeaders(segment)});segmentXhr=this.hls_.xhr(segmentRequestOptions,this.handleResponse_.bind(this));this.xhr_={keyXhr:keyXhr,initSegmentXhr:initSegmentXhr,segmentXhr:segmentXhr,abort:function abort(){if(this.segmentXhr){this.segmentXhr.onreadystatechange=null;this.segmentXhr.abort();this.segmentXhr=null;} if(this.initSegmentXhr){this.initSegmentXhr.onreadystatechange=null;this.initSegmentXhr.abort();this.initSegmentXhr=null;} if(this.keyXhr){this.keyXhr.onreadystatechange=null;this.keyXhr.abort();this.keyXhr=null;}}};this.state='WAITING';}},{key:'handleResponse_',value:function handleResponse_(error,request){var segmentInfo=undefined;var segment=undefined;var keyXhrRequest=undefined;var view=undefined;if(!this.xhr_||request!==this.xhr_.segmentXhr&&request!==this.xhr_.keyXhr&&request!==this.xhr_.initSegmentXhr){return;} segmentInfo=this.pendingSegment_;segment=segmentInfo.playlist.segments[segmentInfo.mediaIndex];if(request.timedout){this.abort_();this.bandwidth=1;this.roundTrip=NaN;this.state='READY';return this.trigger('progress');} if(!request.aborted&&error){keyXhrRequest=this.xhr_.keyXhr;this.abort_();this.error({status:request.status,message:request===keyXhrRequest?'HLS key request error at URL: '+segment.key.uri:'HLS segment request error at URL: '+segmentInfo.uri,code:2,xhr:request});this.state='READY';this.pause();return this.trigger('error');} if(!request.response){this.abort_();return;} if(request===this.xhr_.segmentXhr){this.xhr_.segmentXhr=null;this.roundTrip=request.roundTripTime;this.bandwidth=request.bandwidth;this.mediaBytesTransferred+=request.bytesReceived||0;this.mediaRequests+=1;this.mediaTransferDuration+=request.roundTripTime||0;if(segment.key){segmentInfo.encryptedBytes=new Uint8Array(request.response);}else{segmentInfo.bytes=new Uint8Array(request.response);}} if(request===this.xhr_.keyXhr){keyXhrRequest=this.xhr_.segmentXhr;this.xhr_.keyXhr=null;if(request.response.byteLength!==16){this.abort_();this.error({status:request.status,message:'Invalid HLS key at URL: '+segment.key.uri,code:2,xhr:request});this.state='READY';this.pause();return this.trigger('error');} view=new DataView(request.response);segment.key.bytes=new Uint32Array([view.getUint32(0),view.getUint32(4),view.getUint32(8),view.getUint32(12)]);segment.key.iv=segment.key.iv||new Uint32Array([0,0,0,segmentInfo.mediaIndex+segmentInfo.playlist.mediaSequence]);} if(request===this.xhr_.initSegmentXhr){this.xhr_.initSegmentXhr=null;segment.map.bytes=new Uint8Array(request.response);this.initSegments_[initSegmentId(segment.map)]=segment.map;} if(!this.xhr_.segmentXhr&&!this.xhr_.keyXhr&&!this.xhr_.initSegmentXhr){this.xhr_=null;this.processResponse_();}}},{key:'clearBuffer',value:function clearBuffer(){if(this.sourceUpdater_&&this.sourceUpdater_.buffered().length){this.sourceUpdater_.remove(0,Infinity);}}},{key:'processResponse_',value:function processResponse_(){var segmentInfo=undefined;var segment=undefined;this.state='DECRYPTING';segmentInfo=this.pendingSegment_;segment=segmentInfo.playlist.segments[segmentInfo.mediaIndex];if(segment.map&&isNaN(this.zeroOffset_)){var timescales=_muxJsLibMp4Probe2['default'].timescale(segment.map.bytes);var startTime=_muxJsLibMp4Probe2['default'].startTime(timescales,segmentInfo.bytes);this.zeroOffset_=startTime;segmentInfo.timestampOffset-=startTime;} if(segment.key){new _aesDecrypter.Decrypter(segmentInfo.encryptedBytes,segment.key.bytes,segment.key.iv,(function(err,bytes){segmentInfo.bytes=bytes;this.handleSegment_();}).bind(this));}else{this.handleSegment_();}}},{key:'handleSegment_',value:function handleSegment_(){var _this=this;var segmentInfo=undefined;var segment=undefined;this.state='APPENDING';segmentInfo=this.pendingSegment_;segmentInfo.buffered=this.sourceUpdater_.buffered();segment=segmentInfo.playlist.segments[segmentInfo.mediaIndex];this.currentTimeline_=segmentInfo.timeline;if(segmentInfo.timestampOffset!==this.sourceUpdater_.timestampOffset()){this.sourceUpdater_.timestampOffset(segmentInfo.timestampOffset);} if(segment.map){(function(){var initId=initSegmentId(segment.map);if(!_this.activeInitSegmentId_||_this.activeInitSegmentId_!==initId){var initSegment=_this.initSegments_[initId];_this.sourceUpdater_.appendBuffer(initSegment.bytes,function(){_this.activeInitSegmentId_=initId;});}})();} this.sourceUpdater_.appendBuffer(segmentInfo.bytes,this.handleUpdateEnd_.bind(this));}},{key:'handleUpdateEnd_',value:function handleUpdateEnd_(){var segmentInfo=this.pendingSegment_;var currentTime=this.currentTime_();this.pendingSegment_=null;var timelineUpdated=this.updateTimeline_(segmentInfo);this.trigger('progress');var currentMediaIndex=segmentInfo.mediaIndex;currentMediaIndex+=segmentInfo.playlist.mediaSequence-this.playlist_.mediaSequence;var currentBuffered=_ranges2['default'].findRange(this.sourceUpdater_.buffered(),currentTime);var isEndOfStream=detectEndOfStream(segmentInfo.playlist,this.mediaSource_,currentMediaIndex+1);if(isEndOfStream){this.mediaSource_.endOfStream();} var seekable=this.seekable_();var next=_ranges2['default'].findNextRange(this.sourceUpdater_.buffered(),currentTime);if(this.seeking_()&¤tBuffered.length===0){if(seekable.length&¤tTime=this.playlist_.targetDuration*maxSegmentsToWalk){this.timeCorrection_=0;return false;} this.timeCorrection_+=secondsToIncrement;return true;}}]);return SegmentLoader;})(_videoJs2['default'].EventTarget);exports['default']=SegmentLoader;module.exports=exports['default'];}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./config":3,"./playlist":7,"./ranges":8,"./source-updater":12,"aes-decrypter":18,"global/window":25,"mux.js/lib/mp4/probe":80}],12:[function(require,module,exports){(function(global){'use strict';Object.defineProperty(exports,'__esModule',{value:true});var _createClass=(function(){function defineProperties(target,props){for(var i=0;i-1;}},{key:'trigger',value:function trigger(type){var callbacks=undefined;var i=undefined;var length=undefined;var args=undefined;callbacks=this.listeners[type];if(!callbacks){return;} if(arguments.length===2){length=callbacks.length;for(i=0;i>7)*283)^i]=i;} for(x=xInv=0;!sbox[x];x^=x2||1,xInv=th[xInv]||1){s=xInv^xInv<<1^xInv<<2^xInv<<3^xInv<<4;s=s>>8^s&255^99;sbox[x]=s;sboxInv[s]=x;x8=d[x4=d[x2=d[x]]];tDec=x8*0x1010101^x4*0x10001^x2*0x101^x*0x1010100;tEnc=d[s]*0x101^s*0x1010100;for(i=0;i<4;i++){encTable[i][x]=tEnc=tEnc<<24^tEnc>>>8;decTable[i][s]=tDec=tDec<<24^tDec>>>8;}} for(i=0;i<5;i++){encTable[i]=encTable[i].slice(0);decTable[i]=decTable[i].slice(0);} return tables;};var aesTables=null;var AES=(function(){function AES(key){_classCallCheck(this,AES);if(!aesTables){aesTables=precompute();} this._tables=[[aesTables[0][0].slice(),aesTables[0][1].slice(),aesTables[0][2].slice(),aesTables[0][3].slice(),aesTables[0][4].slice()],[aesTables[1][0].slice(),aesTables[1][1].slice(),aesTables[1][2].slice(),aesTables[1][3].slice(),aesTables[1][4].slice()]];var i=undefined;var j=undefined;var tmp=undefined;var encKey=undefined;var decKey=undefined;var sbox=this._tables[0][4];var decTable=this._tables[1];var keyLen=key.length;var rcon=1;if(keyLen!==4&&keyLen!==6&&keyLen!==8){throw new Error('Invalid aes key size');} encKey=key.slice(0);decKey=[];this._key=[encKey,decKey];for(i=keyLen;i<4*keyLen+28;i++){tmp=encKey[i-1];if(i%keyLen===0||keyLen===8&&i%keyLen===4){tmp=sbox[tmp>>>24]<<24^sbox[tmp>>16&255]<<16^sbox[tmp>>8&255]<<8^sbox[tmp&255];if(i%keyLen===0){tmp=tmp<<8^tmp>>>24^rcon<<24;rcon=rcon<<1^(rcon>>7)*283;}} encKey[i]=encKey[i-keyLen]^tmp;} for(j=0;i;j++,i--){tmp=encKey[j&3?i:i-4];if(i<=4||j<4){decKey[j]=tmp;}else{decKey[j]=decTable[0][sbox[tmp>>>24]]^decTable[1][sbox[tmp>>16&255]]^decTable[2][sbox[tmp>>8&255]]^decTable[3][sbox[tmp&255]];}}} _createClass(AES,[{key:'decrypt',value:function decrypt(encrypted0,encrypted1,encrypted2,encrypted3,out,offset){var key=this._key[1];var a=encrypted0^key[0];var b=encrypted3^key[1];var c=encrypted2^key[2];var d=encrypted1^key[3];var a2=undefined;var b2=undefined;var c2=undefined;var nInnerRounds=key.length/4-2;var i=undefined;var kIndex=4;var table=this._tables[1];var table0=table[0];var table1=table[1];var table2=table[2];var table3=table[3];var sbox=table[4];for(i=0;i>>24]^table1[b>>16&255]^table2[c>>8&255]^table3[d&255]^key[kIndex];b2=table0[b>>>24]^table1[c>>16&255]^table2[d>>8&255]^table3[a&255]^key[kIndex+1];c2=table0[c>>>24]^table1[d>>16&255]^table2[a>>8&255]^table3[b&255]^key[kIndex+2];d=table0[d>>>24]^table1[a>>16&255]^table2[b>>8&255]^table3[c&255]^key[kIndex+3];kIndex+=4;a=a2;b=b2;c=c2;} for(i=0;i<4;i++){out[(3&-i)+offset]=sbox[a>>>24]<<24^sbox[b>>16&255]<<16^sbox[c>>8&255]<<8^sbox[d&255]^key[kIndex++];a2=a;a=b;b=c;c=d;d=a2;}}}]);return AES;})();exports['default']=AES;module.exports=exports['default'];},{}],16:[function(require,module,exports){'use strict';Object.defineProperty(exports,'__esModule',{value:true});var _createClass=(function(){function defineProperties(target,props){for(var i=0;i>8|word>>>24;};var decrypt=function decrypt(encrypted,key,initVector){var encrypted32=new Int32Array(encrypted.buffer,encrypted.byteOffset,encrypted.byteLength>>2);var decipher=new _aes2['default'](Array.prototype.slice.call(key));var decrypted=new Uint8Array(encrypted.byteLength);var decrypted32=new Int32Array(decrypted.buffer);var init0=undefined;var init1=undefined;var init2=undefined;var init3=undefined;var encrypted0=undefined;var encrypted1=undefined;var encrypted2=undefined;var encrypted3=undefined;var wordIx=undefined;init0=initVector[0];init1=initVector[1];init2=initVector[2];init3=initVector[3];for(wordIx=0;wordIx2?sources[length-2]:undefined,guard=length>2?sources[2]:undefined,thisArg=length>1?sources[length-1]:undefined;if(typeof customizer=='function'){customizer=bindCallback(customizer,thisArg,5);length-=2;}else{customizer=typeof thisArg=='function'?thisArg:undefined;length-=(customizer?1:0);} if(guard&&isIterateeCall(sources[0],sources[1],guard)){customizer=length<3?undefined:customizer;length=1;} while(++index-1&&value%1==0&&value-1&&value%1==0&&value<=MAX_SAFE_INTEGER;} module.exports=isLength;},{}],45:[function(require,module,exports){function isObjectLike(value){return!!value&&typeof value=='object';} module.exports=isObjectLike;},{}],46:[function(require,module,exports){var isArguments=require('../lang/isArguments'),isArray=require('../lang/isArray'),isIndex=require('./isIndex'),isLength=require('./isLength'),isString=require('../lang/isString'),keysIn=require('../object/keysIn');var objectProto=Object.prototype;var hasOwnProperty=objectProto.hasOwnProperty;function shimKeys(object){var props=keysIn(object),propsLength=props.length,length=propsLength&&object.length;var allowIndexes=!!length&&isLength(length)&&(isArray(object)||isArguments(object)||isString(object));var index=-1,result=[];while(++index0,skipErrorProps=support.enumErrorProps&&(object===errorProto||object instanceof Error),skipProto=support.enumPrototypes&&isFunction(object);while(++index-1;nextNewline=this.buffer.indexOf('\n')){this.trigger('data',this.buffer.substring(0,nextNewline));this.buffer=this.buffer.substring(nextNewline+1);}}}]);return LineStream;})(_stream2['default']);exports['default']=LineStream;module.exports=exports['default'];},{"./stream":66}],64:[function(require,module,exports){'use strict';Object.defineProperty(exports,'__esModule',{value:true});var _slicedToArray=(function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i['return'])_i['return']();}finally{if(_d)throw _e;}}return _arr;}return function(arr,i){if(Array.isArray(arr)){return arr;}else if(Symbol.iterator in Object(arr)){return sliceIterator(arr,i);}else{throw new TypeError('Invalid attempt to destructure non-iterable instance');}};})();var _createClass=(function(){function defineProperties(target,props){for(var i=0;i0){currentUri.duration=entry.duration;} if(entry.duration===0){currentUri.duration=0.01;this.trigger('info',{message:'updating zero segment duration to a small value'});} this.manifest.segments=uris;},key:function key(){if(!entry.attributes){this.trigger('warn',{message:'ignoring key declaration without attribute list'});return;} if(entry.attributes.METHOD==='NONE'){_key=null;return;} if(!entry.attributes.URI){this.trigger('warn',{message:'ignoring key declaration without URI'});return;} if(!entry.attributes.METHOD){this.trigger('warn',{message:'defaulting key method to AES-128'});} _key={method:entry.attributes.METHOD||'AES-128',uri:entry.attributes.URI};if(typeof entry.attributes.IV!=='undefined'){_key.iv=entry.attributes.IV;}},'media-sequence':function mediaSequence(){if(!isFinite(entry.number)){this.trigger('warn',{message:'ignoring invalid media sequence: '+entry.number});return;} this.manifest.mediaSequence=entry.number;},'discontinuity-sequence':function discontinuitySequence(){if(!isFinite(entry.number)){this.trigger('warn',{message:'ignoring invalid discontinuity sequence: '+entry.number});return;} this.manifest.discontinuitySequence=entry.number;currentTimeline=entry.number;},'playlist-type':function playlistType(){if(!/VOD|EVENT/.test(entry.playlistType)){this.trigger('warn',{message:'ignoring unknown playlist type: '+entry.playlist});return;} this.manifest.playlistType=entry.playlistType;},map:function map(){currentMap={};if(entry.uri){currentMap.uri=entry.uri;} if(entry.byterange){currentMap.byterange=entry.byterange;}},'stream-inf':function streamInf(){this.manifest.playlists=uris;this.manifest.mediaGroups=this.manifest.mediaGroups||defaultMediaGroups;if(!entry.attributes){this.trigger('warn',{message:'ignoring empty stream-inf attributes'});return;} if(!currentUri.attributes){currentUri.attributes={};} currentUri.attributes=(0,_lodashCompatObjectMerge2['default'])(currentUri.attributes,entry.attributes);},media:function media(){this.manifest.mediaGroups=this.manifest.mediaGroups||defaultMediaGroups;if(!(entry.attributes&&entry.attributes.TYPE&&entry.attributes['GROUP-ID']&&entry.attributes.NAME)){this.trigger('warn',{message:'ignoring incomplete or missing media group'});return;} var mediaGroupType=this.manifest.mediaGroups[entry.attributes.TYPE];mediaGroupType[entry.attributes['GROUP-ID']]=mediaGroupType[entry.attributes['GROUP-ID']]||{};mediaGroup=mediaGroupType[entry.attributes['GROUP-ID']];rendition={'default':/yes/i.test(entry.attributes.DEFAULT)};if(rendition['default']){rendition.autoselect=true;}else{rendition.autoselect=/yes/i.test(entry.attributes.AUTOSELECT);} if(entry.attributes.LANGUAGE){rendition.language=entry.attributes.LANGUAGE;} if(entry.attributes.URI){rendition.uri=entry.attributes.URI;} if(entry.attributes['INSTREAM-ID']){rendition.instreamId=entry.attributes['INSTREAM-ID'];} mediaGroup[entry.attributes.NAME]=rendition;},discontinuity:function discontinuity(){currentTimeline+=1;currentUri.discontinuity=true;this.manifest.discontinuityStarts.push(uris.length);},'program-date-time':function programDateTime(){this.manifest.dateTimeString=entry.dateTimeString;this.manifest.dateTimeObject=entry.dateTimeObject;},targetduration:function targetduration(){if(!isFinite(entry.duration)||entry.duration<0){this.trigger('warn',{message:'ignoring invalid target duration: '+entry.duration});return;} this.manifest.targetDuration=entry.duration;},totalduration:function totalduration(){if(!isFinite(entry.duration)||entry.duration<0){this.trigger('warn',{message:'ignoring invalid total duration: '+entry.duration});return;} this.manifest.totalDuration=entry.duration;},'cue-out':function cueOut(){currentUri.cueOut=entry.data;},'cue-out-cont':function cueOutCont(){currentUri.cueOutCont=entry.data;},'cue-in':function cueIn(){currentUri.cueIn=entry.data;}})[entry.tagType]||noop).call(self);},uri:function uri(){currentUri.uri=entry.uri;uris.push(currentUri);if(this.manifest.targetDuration&&!('duration'in currentUri)){this.trigger('warn',{message:'defaulting segment duration to the target duration'});currentUri.duration=this.manifest.targetDuration;} if(_key){currentUri.key=_key;} currentUri.timeline=currentTimeline;if(currentMap){currentUri.map=currentMap;} currentUri={};},comment:function comment(){}})[entry.type].call(self);});} _createClass(Parser,[{key:'push',value:function push(chunk){this.lineStream.push(chunk);}},{key:'end',value:function end(){this.lineStream.push('\n');}}]);return Parser;})(_stream2['default']);exports['default']=Parser;module.exports=exports['default'];},{"./line-stream":63,"./parse-stream":64,"./stream":66,"lodash-compat/object/merge":59}],66:[function(require,module,exports){arguments[4][13][0].apply(exports,arguments)},{"dup":13}],67:[function(require,module,exports){'use strict';var Stream=require('../utils/stream.js');var AacStream;AacStream=function(){var everything=new Uint8Array(),timeStamp=0;AacStream.prototype.init.call(this);this.setTimestamp=function(timestamp){timeStamp=timestamp;};this.parseId3TagSize=function(header,byteIndex){var returnSize=(header[byteIndex+6]<<21)|(header[byteIndex+7]<<14)|(header[byteIndex+8]<<7)|(header[byteIndex+9]),flags=header[byteIndex+5],footerPresent=(flags&16)>>4;if(footerPresent){return returnSize+20;} return returnSize+10;};this.parseAdtsSize=function(header,byteIndex){var lowThree=(header[byteIndex+5]&0xE0)>>5,middle=header[byteIndex+4]<<3,highTwo=header[byteIndex+3]&0x3<<11;return(highTwo|middle)|lowThree;};this.push=function(bytes){var frameSize=0,byteIndex=0,bytesLeft,chunk,packet,tempLength;if(everything.length){tempLength=everything.length;everything=new Uint8Array(bytes.byteLength+tempLength);everything.set(everything.subarray(0,tempLength));everything.set(bytes,tempLength);}else{everything=bytes;} while(everything.length-byteIndex>=3){if((everything[byteIndex]==='I'.charCodeAt(0))&&(everything[byteIndex+1]==='D'.charCodeAt(0))&&(everything[byteIndex+2]==='3'.charCodeAt(0))){if(everything.length-byteIndex<10){break;} frameSize=this.parseId3TagSize(everything,byteIndex);if(frameSize>everything.length){break;} chunk={type:'timed-metadata',data:everything.subarray(byteIndex,byteIndex+frameSize)};this.trigger('data',chunk);byteIndex+=frameSize;continue;}else if((everything[byteIndex]&0xff===0xff)&&((everything[byteIndex+1]&0xf0)===0xf0)){if(everything.length-byteIndex<7){break;} frameSize=this.parseAdtsSize(everything,byteIndex);if(frameSize>everything.length){break;} packet={type:'audio',data:everything.subarray(byteIndex,byteIndex+frameSize),pts:timeStamp,dts:timeStamp};this.trigger('data',packet);byteIndex+=frameSize;continue;} byteIndex++;} bytesLeft=everything.length-byteIndex;if(bytesLeft>0){everything=everything.subarray(byteIndex);}else{everything=new Uint8Array();}};};AacStream.prototype=new Stream();module.exports=AacStream;},{"../utils/stream.js":83}],68:[function(require,module,exports){'use strict';var Stream=require('../utils/stream.js');var AdtsStream;var ADTS_SAMPLING_FREQUENCIES=[96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000,7350];AdtsStream=function(){var buffer;AdtsStream.prototype.init.call(this);this.push=function(packet){var i=0,frameNum=0,frameLength,protectionSkipBytes,frameEnd,oldBuffer,sampleCount,adtsFrameDuration;if(packet.type!=='audio'){return;} if(buffer){oldBuffer=buffer;buffer=new Uint8Array(oldBuffer.byteLength+packet.data.byteLength);buffer.set(oldBuffer);buffer.set(packet.data,oldBuffer.byteLength);}else{buffer=packet.data;} while(i+5>5);sampleCount=((buffer[i+6]&0x03)+1)*1024;adtsFrameDuration=(sampleCount*90000)/ADTS_SAMPLING_FREQUENCIES[(buffer[i+2]&0x3c)>>>2];frameEnd=i+frameLength;if(buffer.byteLength>>6)&0x03)+1,channelcount:((buffer[i+2]&1)<<2)|((buffer[i+3]&0xc0)>>>6),samplerate:ADTS_SAMPLING_FREQUENCIES[(buffer[i+2]&0x3c)>>>2],samplingfrequencyindex:(buffer[i+2]&0x3c)>>>2,samplesize:16,data:buffer.subarray(i+7+protectionSkipBytes,frameEnd)});if(buffer.byteLength===frameEnd){buffer=undefined;return;} frameNum++;buffer=buffer.subarray(frameEnd);}};this.flush=function(){this.trigger('done');};};AdtsStream.prototype=new Stream();module.exports=AdtsStream;},{"../utils/stream.js":83}],69:[function(require,module,exports){'use strict';var Stream=require('../utils/stream.js');var ExpGolomb=require('../utils/exp-golomb.js');var H264Stream,NalByteStream;var PROFILES_WITH_OPTIONAL_SPS_DATA;NalByteStream=function(){var syncPoint=0,i,buffer;NalByteStream.prototype.init.call(this);this.push=function(data){var swapBuffer;if(!buffer){buffer=data.data;}else{swapBuffer=new Uint8Array(buffer.byteLength+data.data.byteLength);swapBuffer.set(buffer);swapBuffer.set(data.data,buffer.byteLength);buffer=swapBuffer;} for(;syncPoint3){this.trigger('data',buffer.subarray(syncPoint+3));} buffer=null;syncPoint=0;this.trigger('done');};};NalByteStream.prototype=new Stream();PROFILES_WITH_OPTIONAL_SPS_DATA={100:true,110:true,122:true,244:true,44:true,83:true,86:true,118:true,128:true,138:true,139:true,134:true};H264Stream=function(){var nalByteStream=new NalByteStream(),self,trackId,currentPts,currentDts,discardEmulationPreventionBytes,readSequenceParameterSet,skipScalingList;H264Stream.prototype.init.call(this);self=this;this.push=function(packet){if(packet.type!=='video'){return;} trackId=packet.trackId;currentPts=packet.pts;currentDts=packet.dts;nalByteStream.push(packet);};nalByteStream.on('data',function(data){var event={trackId:trackId,pts:currentPts,dts:currentDts,data:data};switch(data[0]&0x1f){case 0x05:event.nalUnitType='slice_layer_without_partitioning_rbsp_idr';break;case 0x06:event.nalUnitType='sei_rbsp';event.escapedRBSP=discardEmulationPreventionBytes(data.subarray(1));break;case 0x07:event.nalUnitType='seq_parameter_set_rbsp';event.escapedRBSP=discardEmulationPreventionBytes(data.subarray(1));event.config=readSequenceParameterSet(event.escapedRBSP);break;case 0x08:event.nalUnitType='pic_parameter_set_rbsp';break;case 0x09:event.nalUnitType='access_unit_delimiter_rbsp';break;default:break;} self.trigger('data',event);});nalByteStream.on('done',function(){self.trigger('done');});this.flush=function(){nalByteStream.flush();};skipScalingList=function(count,expGolombDecoder){var lastScale=8,nextScale=8,j,deltaScale;for(j=0;j0){throw new Error('Attempted to create new NAL wihout closing the old one');} adHoc=this.length;this.length+=4;this.position=this.length;};this.endNalUnit=function(nalContainer){var nalStart,nalLength;if(this.length===adHoc+4){this.length-=4;}else if(adHoc>0){nalStart=adHoc+4;nalLength=this.length-nalStart;this.position=adHoc;this.view.setUint32(this.position,nalLength);this.position=this.length;if(nalContainer){nalContainer.push(this.bytes.subarray(nalStart,nalStart+nalLength));}} adHoc=0;};this.writeMetaDataDouble=function(key,val){var i;prepareWrite(this,2+key.length+9);this.view.setUint16(this.position,key.length);this.position+=2;if(key==='width'){this.bytes.set(widthBytes,this.position);this.position+=5;}else if(key==='height'){this.bytes.set(heightBytes,this.position);this.position+=6;}else if(key==='videocodecid'){this.bytes.set(videocodecidBytes,this.position);this.position+=12;}else{for(i=0;i>>16;this.bytes[14]=(dtsDelta&0x0000FF00)>>>8;this.bytes[15]=(dtsDelta&0x000000FF)>>>0;break;case FlvTag.AUDIO_TAG:this.bytes[11]=0xAF;this.bytes[12]=extraData?0x00:0x01;break;case FlvTag.METADATA_TAG:this.position=11;this.view.setUint8(this.position,0x02);this.position++;this.view.setUint16(this.position,0x0A);this.position+=2;this.bytes.set([0x6f,0x6e,0x4d,0x65,0x74,0x61,0x44,0x61,0x74,0x61],this.position);this.position+=10;this.bytes[this.position]=0x08;this.position++;this.view.setUint32(this.position,adHoc);this.position=this.length;this.bytes.set([0,0,9],this.position);this.position+=3;this.length=this.position;break;} len=this.length-11;this.bytes[1]=(len&0x00FF0000)>>>16;this.bytes[2]=(len&0x0000FF00)>>>8;this.bytes[3]=(len&0x000000FF)>>>0;this.bytes[4]=(this.dts&0x00FF0000)>>>16;this.bytes[5]=(this.dts&0x0000FF00)>>>8;this.bytes[6]=(this.dts&0x000000FF)>>>0;this.bytes[7]=(this.dts&0xFF000000)>>>24;this.bytes[8]=0;this.bytes[9]=0;this.bytes[10]=0;prepareWrite(this,4);this.view.setUint32(this.length,this.length);this.length+=4;this.position+=4;this.bytes=this.bytes.subarray(0,this.length);this.frameTime=FlvTag.frameTime(this.bytes);return this;};};FlvTag.AUDIO_TAG=0x08;FlvTag.VIDEO_TAG=0x09;FlvTag.METADATA_TAG=0x12;FlvTag.isAudioFrame=function(tag){return FlvTag.AUDIO_TAG===tag[0];};FlvTag.isVideoFrame=function(tag){return FlvTag.VIDEO_TAG===tag[0];};FlvTag.isMetaData=function(tag){return FlvTag.METADATA_TAG===tag[0];};FlvTag.isKeyFrame=function(tag){if(FlvTag.isVideoFrame(tag)){return tag[11]===0x17;} if(FlvTag.isAudioFrame(tag)){return true;} if(FlvTag.isMetaData(tag)){return true;} return false;};FlvTag.frameTime=function(tag){var pts=tag[4]<<16;pts|=tag[5]<<8;pts|=tag[6]<<0;pts|=tag[7]<<24;return pts;};module.exports=FlvTag;},{}],71:[function(require,module,exports){module.exports={tag:require('./flv-tag'),Transmuxer:require('./transmuxer')};},{"./flv-tag":70,"./transmuxer":72}],72:[function(require,module,exports){'use strict';var Stream=require('../utils/stream.js');var FlvTag=require('./flv-tag.js');var m2ts=require('../m2ts/m2ts.js');var AdtsStream=require('../codecs/adts.js');var H264Stream=require('../codecs/h264').H264Stream;var Transmuxer,VideoSegmentStream,AudioSegmentStream,CoalesceStream,collectTimelineInfo,metaDataTag,extraDataTag;collectTimelineInfo=function(track,data){if(typeof data.pts==='number'){if(track.timelineStartInfo.pts===undefined){track.timelineStartInfo.pts=data.pts;}else{track.timelineStartInfo.pts=Math.min(track.timelineStartInfo.pts,data.pts);}} if(typeof data.dts==='number'){if(track.timelineStartInfo.dts===undefined){track.timelineStartInfo.dts=data.dts;}else{track.timelineStartInfo.dts=Math.min(track.timelineStartInfo.dts,data.dts);}}};metaDataTag=function(track,pts){var tag=new FlvTag(FlvTag.METADATA_TAG);tag.dts=pts;tag.pts=pts;tag.writeMetaDataDouble('videocodecid',7);tag.writeMetaDataDouble('width',track.width);tag.writeMetaDataDouble('height',track.height);return tag;};extraDataTag=function(track,pts){var i,tag=new FlvTag(FlvTag.VIDEO_TAG,true);tag.dts=pts;tag.pts=pts;tag.writeByte(0x01);tag.writeByte(track.profileIdc);tag.writeByte(track.profileCompatibility);tag.writeByte(track.levelIdc);tag.writeByte(0xFC|0x03);tag.writeByte(0xE0|0x01);tag.writeShort(track.sps[0].length);tag.writeBytes(track.sps[0]);tag.writeByte(track.pps.length);for(i=0;i=1000){adtsFrame=new FlvTag(FlvTag.METADATA_TAG);adtsFrame.pts=currentFrame.pts;adtsFrame.dts=currentFrame.dts;adtsFrame.writeMetaDataDouble('audiocodecid',10);adtsFrame.writeMetaDataBoolean('stereo',track.channelcount===2);adtsFrame.writeMetaDataDouble('audiosamplerate',track.samplerate);adtsFrame.writeMetaDataDouble('audiosamplesize',16);tags.push(adtsFrame);oldExtraData=track.extraData;adtsFrame=new FlvTag(FlvTag.AUDIO_TAG,true);adtsFrame.pts=currentFrame.pts;adtsFrame.dts=currentFrame.dts;adtsFrame.view.setUint16(adtsFrame.position,track.extraData);adtsFrame.position+=2;adtsFrame.length=Math.max(adtsFrame.length,adtsFrame.position);tags.push(adtsFrame);lastMetaPts=currentFrame.pts;} adtsFrame=new FlvTag(FlvTag.AUDIO_TAG);adtsFrame.pts=currentFrame.pts;adtsFrame.dts=currentFrame.dts;adtsFrame.writeBytes(currentFrame.data);tags.push(adtsFrame);} oldExtraData=null;this.trigger('data',{track:track,tags:tags});this.trigger('done');};};AudioSegmentStream.prototype=new Stream();VideoSegmentStream=function(track){var nalUnits=[],config,h264Frame;VideoSegmentStream.prototype.init.call(this);this.finishFrame=function(tags,frame){if(!frame){return;} if(config&&track&&track.newMetadata&&(frame.keyFrame||tags.length===0)){tags.push(metaDataTag(config,frame.dts));tags.push(extraDataTag(track,frame.dts));track.newMetadata=false;} frame.endNalUnit();tags.push(frame);h264Frame=null;};this.push=function(data){collectTimelineInfo(track,data);data.pts=Math.round(data.pts/90);data.dts=Math.round(data.dts/90);nalUnits.push(data);};this.flush=function(){var currentNal,tags=[];while(nalUnits.length){if(nalUnits[0].nalUnitType==='access_unit_delimiter_rbsp'){break;} nalUnits.shift();} if(nalUnits.length===0){this.trigger('done');return;} while(nalUnits.length){currentNal=nalUnits.shift();if(currentNal.nalUnitType==='seq_parameter_set_rbsp'){track.newMetadata=true;config=currentNal.config;track.width=config.width;track.height=config.height;track.sps=[currentNal.data];track.profileIdc=config.profileIdc;track.levelIdc=config.levelIdc;track.profileCompatibility=config.profileCompatibility;h264Frame.endNalUnit();}else if(currentNal.nalUnitType==='pic_parameter_set_rbsp'){track.newMetadata=true;track.pps=[currentNal.data];h264Frame.endNalUnit();}else if(currentNal.nalUnitType==='access_unit_delimiter_rbsp'){if(h264Frame){this.finishFrame(tags,h264Frame);} h264Frame=new FlvTag(FlvTag.VIDEO_TAG);h264Frame.pts=currentNal.pts;h264Frame.dts=currentNal.dts;}else{if(currentNal.nalUnitType==='slice_layer_without_partitioning_rbsp_idr'){h264Frame.keyFrame=true;} h264Frame.endNalUnit();} h264Frame.startNalUnit();h264Frame.writeBytes(currentNal.data);} if(h264Frame){this.finishFrame(tags,h264Frame);} this.trigger('data',{track:track,tags:tags});this.trigger('done');};};VideoSegmentStream.prototype=new Stream();CoalesceStream=function(options){this.numberOfTracks=0;this.metadataStream=options.metadataStream;this.videoTags=[];this.audioTags=[];this.videoTrack=null;this.audioTrack=null;this.pendingCaptions=[];this.pendingMetadata=[];this.pendingTracks=0;CoalesceStream.prototype.init.call(this);this.push=function(output){if(output.text){return this.pendingCaptions.push(output);} if(output.frames){return this.pendingMetadata.push(output);} if(output.track.type==='video'){this.videoTrack=output.track;this.videoTags=output.tags;this.pendingTracks++;} if(output.track.type==='audio'){this.audioTrack=output.track;this.audioTags=output.tags;this.pendingTracks++;}};};CoalesceStream.prototype=new Stream();CoalesceStream.prototype.flush=function(){var id3,caption,i,timelineStartPts,event={tags:{},captions:[],metadata:[]};if(this.pendingTracks>>8;char1=data&0xff;if(char0>=0x10&&char0<=0x17&&char1>=0x40&&char1<=0x7F&&(char0!==0x10||char1<0x60)){char0=0x20;char1=null;} if((char0===0x11||char0===0x19)&&(char1>=0x30&&char1<=0x3F)){char0=0x266A;char1='';} if((char0&0xf0)===0x10){return;} this[this.mode_](packet.pts,char0,char1);break;}};};Cea608Stream.prototype=new Stream();Cea608Stream.prototype.flushDisplayed=function(pts){var content=this.displayed_.map(function(row){return row.trim();}).filter(function(row){return row.length;}).join('\n');if(content.length){this.trigger('data',{startPts:this.startPts_,endPts:pts,text:content});}};Cea608Stream.prototype.popOn=function(pts,char0,char1){var baseRow=this.nonDisplayed_[BOTTOM_ROW];baseRow+=getCharFromCode(char0);baseRow+=getCharFromCode(char1);this.nonDisplayed_[BOTTOM_ROW]=baseRow;};Cea608Stream.prototype.rollUp=function(pts,char0,char1){var baseRow=this.displayed_[BOTTOM_ROW];if(baseRow===''){this.flushDisplayed(pts);this.startPts_=pts;} baseRow+=getCharFromCode(char0);baseRow+=getCharFromCode(char1);this.displayed_[BOTTOM_ROW]=baseRow;};Cea608Stream.prototype.shiftRowsUp_=function(){var i;for(i=0;i>>4)>0x01){offset+=packet[offset]+1;} if(result.pid===0){result.type='pat';parsePsi(packet.subarray(offset),result);this.trigger('data',result);}else if(result.pid===this.pmtPid){result.type='pmt';parsePsi(packet.subarray(offset),result);this.trigger('data',result);}else if(this.programMapTable===undefined){this.packetsWaitingForPmt.push([packet,offset,result]);}else{this.processPes_(packet,offset,result);}};this.processPes_=function(packet,offset,result){result.streamType=this.programMapTable[result.pid];result.type='pes';result.data=packet.subarray(offset);this.trigger('data',result);};};TransportParseStream.prototype=new Stream();TransportParseStream.STREAM_TYPES={h264:0x1b,adts:0x0f};ElementaryStream=function(){var self=this,video={data:[],size:0},audio={data:[],size:0},timedMetadata={data:[],size:0},parsePes=function(payload,pes){var ptsDtsFlags;pes.dataAlignmentIndicator=(payload[6]&0x04)!==0;ptsDtsFlags=payload[7];if(ptsDtsFlags&0xC0){pes.pts=(payload[9]&0x0E)<<27|(payload[10]&0xFF)<<20|(payload[11]&0xFE)<<12|(payload[12]&0xFF)<<5|(payload[13]&0xFE)>>>3;pes.pts*=4;pes.pts+=(payload[13]&0x06)>>>1;pes.dts=pes.pts;if(ptsDtsFlags&0x40){pes.dts=(payload[14]&0x0E)<<27|(payload[15]&0xFF)<<20|(payload[16]&0xFE)<<12|(payload[17]&0xFF)<<5|(payload[18]&0xFE)>>>3;pes.dts*=4;pes.dts+=(payload[18]&0x06)>>>1;}} pes.data=payload.subarray(9+payload[8]);},flushStream=function(stream,type){var packetData=new Uint8Array(stream.size),event={type:type},i=0,fragment;if(!stream.data.length){return;} event.trackId=stream.data[0].pid;while(stream.data.length){fragment=stream.data.shift();packetData.set(fragment.data,i);i+=fragment.data.byteLength;} parsePes(packetData,event);stream.size=0;self.trigger('data',event);};ElementaryStream.prototype.init.call(this);this.push=function(data){({pat:function(){},pes:function(){var stream,streamType;switch(data.streamType){case StreamTypes.H264_STREAM_TYPE:case m2tsStreamTypes.H264_STREAM_TYPE:stream=video;streamType='video';break;case StreamTypes.ADTS_STREAM_TYPE:stream=audio;streamType='audio';break;case StreamTypes.METADATA_STREAM_TYPE:stream=timedMetadata;streamType='timed-metadata';break;default:return;} if(data.payloadUnitStartIndicator){flushStream(stream,streamType);} stream.data.push(data);stream.size+=data.data.byteLength;},pmt:function(){var event={type:'metadata',tracks:[]},programMapTable=data.programMapTable,k,track;for(k in programMapTable){if(programMapTable.hasOwnProperty(k)){track={timelineStartInfo:{baseMediaDecodeTime:0}};track.id=+k;if(programMapTable[k]===m2tsStreamTypes.H264_STREAM_TYPE){track.codec='avc';track.type='video';}else if(programMapTable[k]===m2tsStreamTypes.ADTS_STREAM_TYPE){track.codec='adts';track.type='audio';} event.tracks.push(track);}} self.trigger('data',event);}})[data.type]();};this.flush=function(){flushStream(video,'video');flushStream(audio,'audio');flushStream(timedMetadata,'timed-metadata');this.trigger('done');};};ElementaryStream.prototype=new Stream();var m2ts={PAT_PID:0x0000,MP2T_PACKET_LENGTH:MP2T_PACKET_LENGTH,TransportPacketStream:TransportPacketStream,TransportParseStream:TransportParseStream,ElementaryStream:ElementaryStream,TimestampRolloverStream:TimestampRolloverStream,CaptionStream:CaptionStream.CaptionStream,Cea608Stream:CaptionStream.Cea608Stream,MetadataStream:require('./metadata-stream')};for(var type in StreamTypes){if(StreamTypes.hasOwnProperty(type)){m2ts[type]=StreamTypes[type];}} module.exports=m2ts;},{"../utils/stream.js":83,"./caption-stream":73,"./metadata-stream":75,"./stream-types":76,"./stream-types.js":76,"./timestamp-rollover-stream":77}],75:[function(require,module,exports){'use strict';var Stream=require('../utils/stream'),StreamTypes=require('./stream-types'),percentEncode=function(bytes,start,end){var i,result='';for(i=start;i>>2);size*=4;size+=d[7]&0x03;frame.timeStamp=size;if(tag.pts===undefined&&tag.dts===undefined){tag.pts=frame.timeStamp;tag.dts=frame.timeStamp;} this.trigger('timestamp',frame);}} tag.frames.push(frame);frameStart+=10;frameStart+=frameSize;}while(frameStartreference){direction=-1;} while(Math.abs(reference-value)>RO_THRESH){value+=(direction*MAX_TS);} return value;};var TimestampRolloverStream=function(type){var lastDTS,referenceDTS;TimestampRolloverStream.prototype.init.call(this);this.type_=type;this.push=function(data){if(data.type!==this.type_){return;} if(referenceDTS===undefined){referenceDTS=data.dts;} data.dts=handleRollover(data.dts,referenceDTS);data.pts=handleRollover(data.pts,referenceDTS);lastDTS=data.dts;this.trigger('data',data);};this.flush=function(){referenceDTS=lastDTS;this.trigger('done');};};TimestampRolloverStream.prototype=new Stream();module.exports={TimestampRolloverStream:TimestampRolloverStream,handleRollover:handleRollover};},{"../utils/stream":83}],78:[function(require,module,exports){module.exports={generator:require('./mp4-generator'),Transmuxer:require('./transmuxer').Transmuxer,AudioSegmentStream:require('./transmuxer').AudioSegmentStream,VideoSegmentStream:require('./transmuxer').VideoSegmentStream};},{"./mp4-generator":79,"./transmuxer":81}],79:[function(require,module,exports){'use strict';var UINT32_MAX=Math.pow(2,32)-1;var box,dinf,esds,ftyp,mdat,mfhd,minf,moof,moov,mvex,mvhd,trak,tkhd,mdia,mdhd,hdlr,sdtp,stbl,stsd,traf,trex,trun,types,MAJOR_BRAND,MINOR_VERSION,AVC1_BRAND,VIDEO_HDLR,AUDIO_HDLR,HDLR_TYPES,VMHD,SMHD,DREF,STCO,STSC,STSZ,STTS;(function(){var i;types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],smhd:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],styp:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[]};if(typeof Uint8Array==='undefined'){return;} for(i in types){if(types.hasOwnProperty(i)){types[i]=[i.charCodeAt(0),i.charCodeAt(1),i.charCodeAt(2),i.charCodeAt(3)];}} MAJOR_BRAND=new Uint8Array(['i'.charCodeAt(0),'s'.charCodeAt(0),'o'.charCodeAt(0),'m'.charCodeAt(0)]);AVC1_BRAND=new Uint8Array(['a'.charCodeAt(0),'v'.charCodeAt(0),'c'.charCodeAt(0),'1'.charCodeAt(0)]);MINOR_VERSION=new Uint8Array([0,0,0,1]);VIDEO_HDLR=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x69,0x64,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x69,0x64,0x65,0x6f,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x00]);AUDIO_HDLR=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x6f,0x75,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x53,0x6f,0x75,0x6e,0x64,0x48,0x61,0x6e,0x64,0x6c,0x65,0x72,0x00]);HDLR_TYPES={video:VIDEO_HDLR,audio:AUDIO_HDLR};DREF=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x75,0x72,0x6c,0x20,0x00,0x00,0x00,0x01]);SMHD=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]);STCO=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]);STSC=STCO;STSZ=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]);STTS=STCO;VMHD=new Uint8Array([0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]);}());box=function(type){var payload=[],size=0,i,result,view;for(i=1;i>>1),(track.samplingfrequencyindex<<7)|(track.channelcount<<3),0x06,0x01,0x02]));};ftyp=function(){return box(types.ftyp,MAJOR_BRAND,MINOR_VERSION,MAJOR_BRAND,AVC1_BRAND);};hdlr=function(type){return box(types.hdlr,HDLR_TYPES[type]);};mdat=function(data){return box(types.mdat,data);};mdhd=function(track){var result=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x01,0x5f,0x90,(track.duration>>>24)&0xFF,(track.duration>>>16)&0xFF,(track.duration>>>8)&0xFF,track.duration&0xFF,0x55,0xc4,0x00,0x00]);if(track.samplerate){result[12]=(track.samplerate>>>24)&0xFF;result[13]=(track.samplerate>>>16)&0xFF;result[14]=(track.samplerate>>>8)&0xFF;result[15]=(track.samplerate)&0xFF;} return box(types.mdhd,result);};mdia=function(track){return box(types.mdia,mdhd(track),hdlr(track.type),minf(track));};mfhd=function(sequenceNumber){return box(types.mfhd,new Uint8Array([0x00,0x00,0x00,0x00,(sequenceNumber&0xFF000000)>>24,(sequenceNumber&0xFF0000)>>16,(sequenceNumber&0xFF00)>>8,sequenceNumber&0xFF]));};minf=function(track){return box(types.minf,track.type==='video'?box(types.vmhd,VMHD):box(types.smhd,SMHD),dinf(),stbl(track));};moof=function(sequenceNumber,tracks){var trackFragments=[],i=tracks.length;while(i--){trackFragments[i]=traf(tracks[i]);} return box.apply(null,[types.moof,mfhd(sequenceNumber)].concat(trackFragments));};moov=function(tracks){var i=tracks.length,boxes=[];while(i--){boxes[i]=trak(tracks[i]);} return box.apply(null,[types.moov,mvhd(0xffffffff)].concat(boxes).concat(mvex(tracks)));};mvex=function(tracks){var i=tracks.length,boxes=[];while(i--){boxes[i]=trex(tracks[i]);} return box.apply(null,[types.mvex].concat(boxes));};mvhd=function(duration){var bytes=new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x01,0x5f,0x90,(duration&0xFF000000)>>24,(duration&0xFF0000)>>16,(duration&0xFF00)>>8,duration&0xFF,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff]);return box(types.mvhd,bytes);};sdtp=function(track){var samples=track.samples||[],bytes=new Uint8Array(4+samples.length),flags,i;for(i=0;i>>8);sequenceParameterSets.push((sps[i].byteLength&0xFF));sequenceParameterSets=sequenceParameterSets.concat(Array.prototype.slice.call(sps[i]));} for(i=0;i>>8);pictureParameterSets.push((pps[i].byteLength&0xFF));pictureParameterSets=pictureParameterSets.concat(Array.prototype.slice.call(pps[i]));} return box(types.avc1,new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,(track.width&0xff00)>>8,track.width&0xff,(track.height&0xff00)>>8,track.height&0xff,0x00,0x48,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x13,0x76,0x69,0x64,0x65,0x6f,0x6a,0x73,0x2d,0x63,0x6f,0x6e,0x74,0x72,0x69,0x62,0x2d,0x68,0x6c,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x11,0x11]),box(types.avcC,new Uint8Array([0x01,track.profileIdc,track.profileCompatibility,track.levelIdc,0xff].concat([sps.length]).concat(sequenceParameterSets).concat([pps.length]).concat(pictureParameterSets))),box(types.btrt,new Uint8Array([0x00,0x1c,0x9c,0x80,0x00,0x2d,0xc6,0xc0,0x00,0x2d,0xc6,0xc0])));};audioSample=function(track){return box(types.mp4a,new Uint8Array([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,(track.channelcount&0xff00)>>8,(track.channelcount&0xff),(track.samplesize&0xff00)>>8,(track.samplesize&0xff),0x00,0x00,0x00,0x00,(track.samplerate&0xff00)>>8,(track.samplerate&0xff),0x00,0x00]),esds(track));};}());tkhd=function(track){var result=new Uint8Array([0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,(track.id&0xFF000000)>>24,(track.id&0xFF0000)>>16,(track.id&0xFF00)>>8,track.id&0xFF,0x00,0x00,0x00,0x00,(track.duration&0xFF000000)>>24,(track.duration&0xFF0000)>>16,(track.duration&0xFF00)>>8,track.duration&0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,(track.width&0xFF00)>>8,track.width&0xFF,0x00,0x00,(track.height&0xFF00)>>8,track.height&0xFF,0x00,0x00]);return box(types.tkhd,result);};traf=function(track){var trackFragmentHeader,trackFragmentDecodeTime,trackFragmentRun,sampleDependencyTable,dataOffset,upperWordBaseMediaDecodeTime,lowerWordBaseMediaDecodeTime;trackFragmentHeader=box(types.tfhd,new Uint8Array([0x00,0x00,0x00,0x3a,(track.id&0xFF000000)>>24,(track.id&0xFF0000)>>16,(track.id&0xFF00)>>8,(track.id&0xFF),0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]));upperWordBaseMediaDecodeTime=Math.floor(track.baseMediaDecodeTime/(UINT32_MAX+1));lowerWordBaseMediaDecodeTime=Math.floor(track.baseMediaDecodeTime%(UINT32_MAX+1));trackFragmentDecodeTime=box(types.tfdt,new Uint8Array([0x01,0x00,0x00,0x00,(upperWordBaseMediaDecodeTime>>>24)&0xFF,(upperWordBaseMediaDecodeTime>>>16)&0xFF,(upperWordBaseMediaDecodeTime>>>8)&0xFF,upperWordBaseMediaDecodeTime&0xFF,(lowerWordBaseMediaDecodeTime>>>24)&0xFF,(lowerWordBaseMediaDecodeTime>>>16)&0xFF,(lowerWordBaseMediaDecodeTime>>>8)&0xFF,lowerWordBaseMediaDecodeTime&0xFF]));dataOffset=(32+ 20+ 8+ 16+ 8+ 8);if(track.type==='audio'){trackFragmentRun=trun(track,dataOffset);return box(types.traf,trackFragmentHeader,trackFragmentDecodeTime,trackFragmentRun);} sampleDependencyTable=sdtp(track);trackFragmentRun=trun(track,sampleDependencyTable.length+dataOffset);return box(types.traf,trackFragmentHeader,trackFragmentDecodeTime,trackFragmentRun,sampleDependencyTable);};trak=function(track){track.duration=track.duration||0xffffffff;return box(types.trak,tkhd(track),mdia(track));};trex=function(track){var result=new Uint8Array([0x00,0x00,0x00,0x00,(track.id&0xFF000000)>>24,(track.id&0xFF0000)>>16,(track.id&0xFF00)>>8,(track.id&0xFF),0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01]);if(track.type!=='video'){result[result.length-1]=0x00;} return box(types.trex,result);};(function(){var audioTrun,videoTrun,trunHeader;trunHeader=function(samples,offset){var durationPresent=0,sizePresent=0,flagsPresent=0,compositionTimeOffset=0;if(samples.length){if(samples[0].duration!==undefined){durationPresent=0x1;} if(samples[0].size!==undefined){sizePresent=0x2;} if(samples[0].flags!==undefined){flagsPresent=0x4;} if(samples[0].compositionTimeOffset!==undefined){compositionTimeOffset=0x8;}} return[0x00,0x00,durationPresent|sizePresent|flagsPresent|compositionTimeOffset,0x01,(samples.length&0xFF000000)>>>24,(samples.length&0xFF0000)>>>16,(samples.length&0xFF00)>>>8,samples.length&0xFF,(offset&0xFF000000)>>>24,(offset&0xFF0000)>>>16,(offset&0xFF00)>>>8,offset&0xFF];};videoTrun=function(track,offset){var bytes,samples,sample,i;samples=track.samples||[];offset+=8+12+(16*samples.length);bytes=trunHeader(samples,offset);for(i=0;i>>24,(sample.duration&0xFF0000)>>>16,(sample.duration&0xFF00)>>>8,sample.duration&0xFF,(sample.size&0xFF000000)>>>24,(sample.size&0xFF0000)>>>16,(sample.size&0xFF00)>>>8,sample.size&0xFF,(sample.flags.isLeading<<2)|sample.flags.dependsOn,(sample.flags.isDependedOn<<6)|(sample.flags.hasRedundancy<<4)|(sample.flags.paddingValue<<1)|sample.flags.isNonSyncSample,sample.flags.degradationPriority&0xF0<<8,sample.flags.degradationPriority&0x0F,(sample.compositionTimeOffset&0xFF000000)>>>24,(sample.compositionTimeOffset&0xFF0000)>>>16,(sample.compositionTimeOffset&0xFF00)>>>8,sample.compositionTimeOffset&0xFF]);} return box(types.trun,new Uint8Array(bytes));};audioTrun=function(track,offset){var bytes,samples,sample,i;samples=track.samples||[];offset+=8+12+(8*samples.length);bytes=trunHeader(samples,offset);for(i=0;i>>24,(sample.duration&0xFF0000)>>>16,(sample.duration&0xFF00)>>>8,sample.duration&0xFF,(sample.size&0xFF000000)>>>24,(sample.size&0xFF0000)>>>16,(sample.size&0xFF00)>>>8,sample.size&0xFF]);} return box(types.trun,new Uint8Array(bytes));};trun=function(track,offset){if(track.type==='audio'){return audioTrun(track,offset);} return videoTrun(track,offset);};}());module.exports={ftyp:ftyp,mdat:mdat,moof:moof,moov:moov,initSegment:function(tracks){var fileType=ftyp(),movie=moov(tracks),result;result=new Uint8Array(fileType.byteLength+movie.byteLength);result.set(fileType);result.set(movie,fileType.byteLength);return result;}};},{}],80:[function(require,module,exports){'use strict';var findBox,parseType,timescale,startTime;findBox=function(data,path){var results=[],i,size,type,end,subresults;if(!path.length){return null;} for(i=0;i1?i+size:data.byteLength;if(type===path[0]){if(path.length===1){results.push(data.subarray(i+8,end));}else{subresults=findBox(data.subarray(i+8,end),path.slice(1));if(subresults.length){results=results.concat(subresults);}}} i=end;} return results;};parseType=function(buffer){var result='';result+=String.fromCharCode(buffer[0]);result+=String.fromCharCode(buffer[1]);result+=String.fromCharCode(buffer[2]);result+=String.fromCharCode(buffer[3]);return result;};timescale=function(init){var result={},traks=findBox(init,['moov','trak']);return traks.reduce(function(result,trak){var tkhd,version,index,id,mdhd;tkhd=findBox(trak,['tkhd'])[0];if(!tkhd){return null;} version=tkhd[0];index=version===0?12:20;id=tkhd[index]<<24|tkhd[index+1]<<16|tkhd[index+2]<<8|tkhd[index+3];mdhd=findBox(trak,['mdia','mdhd'])[0];if(!mdhd){return null;} version=mdhd[0];index=version===0?12:20;result[id]=mdhd[index]<<24|mdhd[index+1]<<16|mdhd[index+2]<<8|mdhd[index+3];return result;},result);};startTime=function(timescale,fragment){var trafs,baseTimes,result;trafs=findBox(fragment,['moof','traf']);baseTimes=[].concat.apply([],trafs.map(function(traf){return findBox(traf,['tfhd']).map(function(tfhd){var id,scale,baseTime;id=tfhd[4]<<24|tfhd[5]<<16|tfhd[6]<<8|tfhd[7];scale=timescale[id]||90e3;baseTime=findBox(traf,['tfdt']).map(function(tfdt){var version,result;version=tfdt[0];result=tfdt[4]<<24|tfdt[5]<<16|tfdt[6]<<8|tfdt[7];if(version===1){result*=Math.pow(2,32);result+=tfdt[8]<<24|tfdt[9]<<16|tfdt[10]<<8|tfdt[11];} return result;})[0];baseTime=baseTime||Infinity;return baseTime/scale;});}));result=Math.min.apply(null,baseTimes);return isFinite(result)?result:0;};module.exports={parseType:parseType,timescale:timescale,startTime:startTime};},{}],81:[function(require,module,exports){'use strict';var Stream=require('../utils/stream.js');var mp4=require('./mp4-generator.js');var m2ts=require('../m2ts/m2ts.js');var AdtsStream=require('../codecs/adts.js');var H264Stream=require('../codecs/h264').H264Stream;var AacStream=require('../aac');var AUDIO_PROPERTIES=['audioobjecttype','channelcount','samplerate','samplingfrequencyindex','samplesize'];var VIDEO_PROPERTIES=['width','height','profileIdc','levelIdc','profileCompatibility'];var VideoSegmentStream,AudioSegmentStream,Transmuxer,CoalesceStream;var createDefaultSample,isLikelyAacData,collectDtsInfo,clearDtsInfo,calculateTrackBaseMediaDecodeTime,arrayEquals,sumFrameByteLengths;createDefaultSample=function(){return{size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0}};};isLikelyAacData=function(data){if((data[0]==='I'.charCodeAt(0))&&(data[1]==='D'.charCodeAt(0))&&(data[2]==='3'.charCodeAt(0))){return true;} return false;};arrayEquals=function(a,b){var i;if(a.length!==b.length){return false;} for(i=0;i=earliestAllowedDts){return adtsFrames;} track.minSegmentDts=Infinity;return adtsFrames.filter(function(currentFrame){if(currentFrame.dts>=earliestAllowedDts){track.minSegmentDts=Math.min(track.minSegmentDts,currentFrame.dts);track.minSegmentPts=track.minSegmentDts;return true;} return false;});};this.generateSampleTable_=function(frames){var i,currentFrame,samples=[];for(i=0;i=-allowableOverlap&&dtsDistance<=halfSecond){if(!nearestGopObj||nearestDistance>dtsDistance){nearestGopObj=currentGopObj;nearestDistance=dtsDistance;}}} if(nearestGopObj){return nearestGopObj.gop;} return null;};this.extendFirstKeyFrame_=function(gops){var currentGop;if(!gops[0][0].keyFrame){currentGop=gops.shift();gops.byteLength-=currentGop.byteLength;gops.nalCount-=currentGop.nalCount;gops[0][0].dts=currentGop.dts;gops[0][0].pts=currentGop.pts;gops[0][0].duration+=currentGop.duration;} return gops;};this.groupNalsIntoFrames_=function(nalUnits){var i,currentNal,currentFrame=[],frames=[];currentFrame.byteLength=0;for(i=0;i=this.numberOfTracks){this.trigger('done');this.emittedTracks=0;} return;}} if(this.videoTrack){timelineStartPts=this.videoTrack.timelineStartInfo.pts;VIDEO_PROPERTIES.forEach(function(prop){event.info[prop]=this.videoTrack[prop];},this);}else if(this.audioTrack){timelineStartPts=this.audioTrack.timelineStartInfo.pts;AUDIO_PROPERTIES.forEach(function(prop){event.info[prop]=this.audioTrack[prop];},this);} if(this.pendingTracks.length===1){event.type=this.pendingTracks[0].type;}else{event.type='combined';} this.emittedTracks+=this.pendingTracks.length;initSegment=mp4.initSegment(this.pendingTracks);event.initSegment=new Uint8Array(initSegment.byteLength);event.initSegment.set(initSegment);event.data=new Uint8Array(this.pendingBytes);for(i=0;i=this.numberOfTracks){this.trigger('done');this.emittedTracks=0;}};Transmuxer=function(options){var self=this,hasFlushed=true,videoTrack,audioTrack;Transmuxer.prototype.init.call(this);options=options||{};this.baseMediaDecodeTime=options.baseMediaDecodeTime||0;this.transmuxPipeline_={};this.setupAacPipeline=function(){var pipeline={};this.transmuxPipeline_=pipeline;pipeline.type='aac';pipeline.metadataStream=new m2ts.MetadataStream();pipeline.aacStream=new AacStream();pipeline.audioTimestampRolloverStream=new m2ts.TimestampRolloverStream('audio');pipeline.timedMetadataTimestampRolloverStream=new m2ts.TimestampRolloverStream('timed-metadata');pipeline.adtsStream=new AdtsStream();pipeline.coalesceStream=new CoalesceStream(options,pipeline.metadataStream);pipeline.headOfPipeline=pipeline.aacStream;pipeline.aacStream.pipe(pipeline.audioTimestampRolloverStream).pipe(pipeline.adtsStream);pipeline.aacStream.pipe(pipeline.timedMetadataTimestampRolloverStream).pipe(pipeline.metadataStream).pipe(pipeline.coalesceStream);pipeline.metadataStream.on('timestamp',function(frame){pipeline.aacStream.setTimestamp(frame.timeStamp);});pipeline.aacStream.on('data',function(data){if(data.type==='timed-metadata'&&!pipeline.audioSegmentStream){audioTrack=audioTrack||{timelineStartInfo:{baseMediaDecodeTime:self.baseMediaDecodeTime},codec:'adts',type:'audio'};pipeline.coalesceStream.numberOfTracks++;pipeline.audioSegmentStream=new AudioSegmentStream(audioTrack);pipeline.adtsStream.pipe(pipeline.audioSegmentStream).pipe(pipeline.coalesceStream);}});pipeline.coalesceStream.on('data',this.trigger.bind(this,'data'));pipeline.coalesceStream.on('done',this.trigger.bind(this,'done'));};this.setupTsPipeline=function(){var pipeline={};this.transmuxPipeline_=pipeline;pipeline.type='ts';pipeline.metadataStream=new m2ts.MetadataStream();pipeline.packetStream=new m2ts.TransportPacketStream();pipeline.parseStream=new m2ts.TransportParseStream();pipeline.elementaryStream=new m2ts.ElementaryStream();pipeline.videoTimestampRolloverStream=new m2ts.TimestampRolloverStream('video');pipeline.audioTimestampRolloverStream=new m2ts.TimestampRolloverStream('audio');pipeline.timedMetadataTimestampRolloverStream=new m2ts.TimestampRolloverStream('timed-metadata');pipeline.adtsStream=new AdtsStream();pipeline.h264Stream=new H264Stream();pipeline.captionStream=new m2ts.CaptionStream();pipeline.coalesceStream=new CoalesceStream(options,pipeline.metadataStream);pipeline.headOfPipeline=pipeline.packetStream;pipeline.packetStream.pipe(pipeline.parseStream).pipe(pipeline.elementaryStream);pipeline.elementaryStream.pipe(pipeline.videoTimestampRolloverStream).pipe(pipeline.h264Stream);pipeline.elementaryStream.pipe(pipeline.audioTimestampRolloverStream).pipe(pipeline.adtsStream);pipeline.elementaryStream.pipe(pipeline.timedMetadataTimestampRolloverStream).pipe(pipeline.metadataStream).pipe(pipeline.coalesceStream);pipeline.h264Stream.pipe(pipeline.captionStream).pipe(pipeline.coalesceStream);pipeline.elementaryStream.on('data',function(data){var i;if(data.type==='metadata'){i=data.tracks.length;while(i--){if(!videoTrack&&data.tracks[i].type==='video'){videoTrack=data.tracks[i];videoTrack.timelineStartInfo.baseMediaDecodeTime=self.baseMediaDecodeTime;}else if(!audioTrack&&data.tracks[i].type==='audio'){audioTrack=data.tracks[i];audioTrack.timelineStartInfo.baseMediaDecodeTime=self.baseMediaDecodeTime;}} if(videoTrack&&!pipeline.videoSegmentStream){pipeline.coalesceStream.numberOfTracks++;pipeline.videoSegmentStream=new VideoSegmentStream(videoTrack);pipeline.videoSegmentStream.on('timelineStartInfo',function(timelineStartInfo){if(audioTrack){audioTrack.timelineStartInfo=timelineStartInfo;pipeline.audioSegmentStream.setEarliestDts(timelineStartInfo.dts);}});pipeline.h264Stream.pipe(pipeline.videoSegmentStream).pipe(pipeline.coalesceStream);} if(audioTrack&&!pipeline.audioSegmentStream){pipeline.coalesceStream.numberOfTracks++;pipeline.audioSegmentStream=new AudioSegmentStream(audioTrack);pipeline.adtsStream.pipe(pipeline.audioSegmentStream).pipe(pipeline.coalesceStream);}}});pipeline.coalesceStream.on('data',this.trigger.bind(this,'data'));pipeline.coalesceStream.on('done',this.trigger.bind(this,'done'));};this.setBaseMediaDecodeTime=function(baseMediaDecodeTime){var pipeline=this.transmuxPipeline_;this.baseMediaDecodeTime=baseMediaDecodeTime;if(audioTrack){audioTrack.timelineStartInfo.dts=undefined;audioTrack.timelineStartInfo.pts=undefined;clearDtsInfo(audioTrack);audioTrack.timelineStartInfo.baseMediaDecodeTime=baseMediaDecodeTime;} if(videoTrack){if(pipeline.videoSegmentStream){pipeline.videoSegmentStream.gopCache_=[];} videoTrack.timelineStartInfo.dts=undefined;videoTrack.timelineStartInfo.pts=undefined;clearDtsInfo(videoTrack);videoTrack.timelineStartInfo.baseMediaDecodeTime=baseMediaDecodeTime;}};this.push=function(data){if(hasFlushed){var isAac=isLikelyAacData(data);if(isAac&&this.transmuxPipeline_.type!=='aac'){this.setupAacPipeline();}else if(!isAac&&this.transmuxPipeline_.type!=='ts'){this.setupTsPipeline();} hasFlushed=false;} this.transmuxPipeline_.headOfPipeline.push(data);};this.flush=function(){hasFlushed=true;this.transmuxPipeline_.headOfPipeline.flush();};};Transmuxer.prototype=new Stream();module.exports={Transmuxer:Transmuxer,VideoSegmentStream:VideoSegmentStream,AudioSegmentStream:AudioSegmentStream,AUDIO_PROPERTIES:AUDIO_PROPERTIES,VIDEO_PROPERTIES:VIDEO_PROPERTIES};},{"../aac":67,"../codecs/adts.js":68,"../codecs/h264":69,"../m2ts/m2ts.js":74,"../utils/stream.js":83,"./mp4-generator.js":79}],82:[function(require,module,exports){'use strict';var ExpGolomb;ExpGolomb=function(workingData){var workingBytesAvailable=workingData.byteLength,workingWord=0,workingBitsAvailable=0;this.length=function(){return(8*workingBytesAvailable);};this.bitsAvailable=function(){return(8*workingBytesAvailable)+workingBitsAvailable;};this.loadWord=function(){var position=workingData.byteLength-workingBytesAvailable,workingBytes=new Uint8Array(4),availableBytes=Math.min(4,workingBytesAvailable);if(availableBytes===0){throw new Error('no bytes available');} workingBytes.set(workingData.subarray(position,position+availableBytes));workingWord=new DataView(workingBytes.buffer).getUint32(0);workingBitsAvailable=availableBytes*8;workingBytesAvailable-=availableBytes;};this.skipBits=function(count){var skipBytes;if(workingBitsAvailable>count){workingWord<<=count;workingBitsAvailable-=count;}else{count-=workingBitsAvailable;skipBytes=Math.floor(count/8);count-=(skipBytes*8);workingBytesAvailable-=skipBytes;this.loadWord();workingWord<<=count;workingBitsAvailable-=count;}};this.readBits=function(size){var bits=Math.min(workingBitsAvailable,size),valu=workingWord>>>(32-bits);workingBitsAvailable-=bits;if(workingBitsAvailable>0){workingWord<<=bits;}else if(workingBytesAvailable>0){this.loadWord();} bits=size-bits;if(bits>0){return valu<>>leadingZeroCount))!==0){workingWord<<=leadingZeroCount;workingBitsAvailable-=leadingZeroCount;return leadingZeroCount;}} this.loadWord();return leadingZeroCount+this.skipLeadingZeros();};this.skipUnsignedExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros());};this.skipExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros());};this.readUnsignedExpGolomb=function(){var clz=this.skipLeadingZeros();return this.readBits(clz+1)-1;};this.readExpGolomb=function(){var valu=this.readUnsignedExpGolomb();if(0x01&valu){return(1+valu)>>>1;} return-1*(valu>>>1);};this.readBoolean=function(){return this.readBits(1)===1;};this.readUnsignedByte=function(){return this.readBits(8);};this.loadWord();};module.exports=ExpGolomb;},{}],83:[function(require,module,exports){'use strict';var Stream=function(){this.init=function(){var listeners={};this.on=function(type,listener){if(!listeners[type]){listeners[type]=[];} listeners[type]=listeners[type].concat(listener);};this.off=function(type,listener){var index;if(!listeners[type]){return false;} index=listeners[type].indexOf(listener);listeners[type]=listeners[type].slice();listeners[type].splice(index,1);return index>-1;};this.trigger=function(type){var callbacks,i,length,args;callbacks=listeners[type];if(!callbacks){return;} if(arguments.length===2){length=callbacks.length;for(i=0;i1){var _name=pair[0].replace(/"/g,'').trim();var value=pair[1].replace(/"/g,'').trim();object.parameters[_name]=value;}});return object;};exports['default']={isAudioCodec:isAudioCodec,parseContentType:parseContentType,isVideoCodec:isVideoCodec};module.exports=exports['default'];},{}],86:[function(require,module,exports){'use strict';Object.defineProperty(exports,'__esModule',{value:true});var createTextTracksIfNecessary=function createTextTracksIfNecessary(sourceBuffer,mediaSource,segment){if(segment.captions&&segment.captions.length&&!sourceBuffer.inbandTextTrack_){sourceBuffer.inbandTextTrack_=mediaSource.player_.addTextTrack('captions','cc1');} if(segment.metadata&&segment.metadata.length&&!sourceBuffer.metadataTrack_){sourceBuffer.metadataTrack_=mediaSource.player_.addTextTrack('metadata','Timed Metadata');sourceBuffer.metadataTrack_.inBandMetadataTrackDispatchType=segment.metadata.dispatchType;}};exports['default']=createTextTracksIfNecessary;module.exports=exports['default'];},{}],87:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var flashConstants={TIME_BETWEEN_TICKS:Math.floor(1000/500),TIME_PER_TICK:Math.floor(1000/100),BYTES_PER_CHUNK:4*1024,MIN_CHUNK:4096,MAX_CHUNK:4*1024*1024};exports["default"]=flashConstants;module.exports=exports["default"];},{}],88:[function(require,module,exports){(function(global){'use strict';Object.defineProperty(exports,'__esModule',{value:true});var _createClass=(function(){function defineProperties(target,props){for(var i=0;i=0){this.timestampOffset_=val;this.segmentParser_=new _muxJsLibFlv2['default'].Transmuxer();this.segmentParser_.on('data',this.receiveBuffer_.bind(this));this.mediaSource_.swfObj.vjs_discontinuity();this.basePtsOffset_=NaN;}}});Object.defineProperty(this,'buffered',{get:function get(){if(!this.mediaSource_||!this.mediaSource_.swfObj||!('vjs_getProperty'in this.mediaSource_.swfObj)){return _videoJs2['default'].createTimeRange();} var buffered=this.mediaSource_.swfObj.vjs_getProperty('buffered');if(buffered&&buffered.length){buffered[0][0]=toDecimalPlaces(buffered[0][0],3);buffered[0][1]=toDecimalPlaces(buffered[0][1],3);} return _videoJs2['default'].createTimeRanges(buffered);}});this.mediaSource_.player_.on('seeked',function(){(0,_removeCuesFromTrack2['default'])(0,Infinity,_this.metadataTrack_);(0,_removeCuesFromTrack2['default'])(0,Infinity,_this.inbandTextTrack_);});} _createClass(FlashSourceBuffer,[{key:'appendBuffer',value:function appendBuffer(bytes){var _this2=this;var error=undefined;var chunk=512*1024;var i=0;if(this.updating){error=new Error('SourceBuffer.append() cannot be called '+'while an update is in progress');error.name='InvalidStateError';error.code=11;throw error;} this.updating=true;this.mediaSource_.readyState='open';this.trigger({type:'update'});var chunkInData=function chunkInData(){_this2.segmentParser_.push(bytes.subarray(i,i+chunk));i+=chunk;if(i'+b64str+'');appendTime=new Date()-startTime;}while(this.buffer_.length&&appendTime<_flashConstants2['default'].TIME_PER_TICK);if(this.buffer_.length&&startByte){this.buffer_[0]=this.buffer_[0].subarray(startByte);} if(appendTime>=_flashConstants2['default'].TIME_PER_TICK){this.chunkSize_=Math.floor(this.chunkSize_*(appendIterations/4));} this.chunkSize_=Math.max(_flashConstants2['default'].MIN_CHUNK,Math.min(this.chunkSize_,_flashConstants2['default'].MAX_CHUNK));if(this.bufferSize_!==0){scheduleTick(this.processBuffer_.bind(this));}else{this.updating=false;this.trigger({type:'updateend'});}}},{key:'convertTagsToData_',value:function convertTagsToData_(segmentData){var segmentByteLength=0;var tech=this.mediaSource_.tech_;var targetPts=0;var i=undefined;var j=undefined;var segment=undefined;var filteredTags=[];var tags=this.getOrderedTags_(segmentData);if(isNaN(this.basePtsOffset_)&&tags.length){this.basePtsOffset_=tags[0].pts;} if(tech.seeking()){targetPts=Math.max(targetPts,tech.currentTime()-this.timestampOffset);} targetPts*=1e3;targetPts+=this.basePtsOffset_;for(i=0;i=targetPts){filteredTags.push(tags[i]);}} if(filteredTags.length===0){return;} for(i=0;ithis.nativeMediaSource_.duration||isNaN(this.nativeMediaSource_.duration)){this.nativeMediaSource_.duration=end;}}},{key:'addSourceBuffer',value:function addSourceBuffer(type){var buffer=undefined;var parsedType=(0,_codecUtils.parseContentType)(type);if(/^(video|audio)\/mp2t$/i.test(parsedType.type)){var codecs=[];if(parsedType.parameters&&parsedType.parameters.codecs){codecs=parsedType.parameters.codecs.split(',');codecs=translateLegacyCodecs(codecs);codecs=codecs.filter(function(codec){return(0,_codecUtils.isAudioCodec)(codec)||(0,_codecUtils.isVideoCodec)(codec);});} if(codecs.length===0){codecs=['avc1.4d400d','mp4a.40.2'];} buffer=new _virtualSourceBuffer2['default'](this,codecs);if(this.sourceBuffers.length!==0){this.sourceBuffers[0].createRealSourceBuffers_();buffer.createRealSourceBuffers_();this.sourceBuffers[0].audioDisabled_=true;}}else{buffer=this.nativeMediaSource_.addSourceBuffer(type);} this.sourceBuffers.push(buffer);return buffer;}}]);return HtmlMediaSource;})(_videoJs2['default'].EventTarget);exports['default']=HtmlMediaSource;module.exports=exports['default'];}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./add-text-track-data":84,"./codec-utils":85,"./virtual-source-buffer":94,"global/document":24,"global/window":25}],91:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var removeCuesFromTrack=function removeCuesFromTrack(start,end,track){var i=undefined;var cue=undefined;if(!track){return;} i=track.cues.length;while(i--){cue=track.cues[i];if(cue.startTime<=end&&cue.endTime>=start){track.removeCue(cue);}}};exports["default"]=removeCuesFromTrack;module.exports=exports["default"];},{}],92:[function(require,module,exports){'use strict';Object.defineProperty(exports,'__esModule',{value:true});var _createClass=(function(){function defineProperties(target,props){for(var i=0;i=0){this.timestampOffset_=val;this.appendAudioInitSegment_=true;this.transmuxer_.postMessage({action:'setTimestampOffset',timestampOffset:val});}}});Object.defineProperty(this,'appendWindowStart',{get:function get(){return(this.videoBuffer_||this.audioBuffer_).appendWindowStart;},set:function set(start){if(this.videoBuffer_){this.videoBuffer_.appendWindowStart=start;} if(this.audioBuffer_){this.audioBuffer_.appendWindowStart=start;}}});Object.defineProperty(this,'updating',{get:function get(){return!!(this.bufferUpdating_||!this.audioDisabled_&&this.audioBuffer_&&this.audioBuffer_.updating||this.videoBuffer_&&this.videoBuffer_.updating);}});Object.defineProperty(this,'buffered',{get:function get(){var start=null;var end=null;var arity=0;var extents=[];var ranges=[];if(!this.videoBuffer_&&!this.audioBuffer_){return _videoJs2['default'].createTimeRange();} if(!this.videoBuffer_){return this.audioBuffer_.buffered;} if(!this.audioBuffer_){return this.videoBuffer_.buffered;} if(this.audioDisabled_){return this.videoBuffer_.buffered;} if(this.videoBuffer_.buffered.length===0&&this.audioBuffer_.buffered.length===0){return _videoJs2['default'].createTimeRange();} var videoBuffered=this.videoBuffer_.buffered;var audioBuffered=this.audioBuffer_.buffered;var count=videoBuffered.length;while(count--){extents.push({time:videoBuffered.start(count),type:'start'});extents.push({time:videoBuffered.end(count),type:'end'});} count=audioBuffered.length;while(count--){extents.push({time:audioBuffered.start(count),type:'start'});extents.push({time:audioBuffered.end(count),type:'end'});} extents.sort(function(a,b){return a.time-b.time;});for(count=0;count=localVariant.excludeUntil;} return true;});i=sortedPlaylists.length;while(i--){variant=sortedPlaylists[i];if(!variant.attributes||!variant.attributes.BANDWIDTH){continue;} effectiveBitrate=variant.attributes.BANDWIDTH*BANDWIDTH_VARIANCE;if(effectiveBitrate=49;} return true;};var Component=_videoJs2['default'].getComponent('Component');var HlsHandler=(function(_Component){_inherits(HlsHandler,_Component);function HlsHandler(source,tech,options){var _this=this;_classCallCheck(this,HlsHandler);_get(Object.getPrototypeOf(HlsHandler.prototype),'constructor',this).call(this,tech);if(tech.options_&&tech.options_.playerId){var _player=(0,_videoJs2['default'])(tech.options_.playerId);if(!_player.hasOwnProperty('hls')){Object.defineProperty(_player,'hls',{get:function get(){_videoJs2['default'].log.warn('player.hls is deprecated. Use player.tech_.hls instead.');return _this;}});}} this.tech_=tech;this.source_=source;this.stats={};this.options_=_videoJs2['default'].mergeOptions(_videoJs2['default'].options.hls||{},options.hls);this.setOptions_();this.on(_globalDocument2['default'],['fullscreenchange','webkitfullscreenchange','mozfullscreenchange','MSFullscreenChange'],function(event){var fullscreenElement=_globalDocument2['default'].fullscreenElement||_globalDocument2['default'].webkitFullscreenElement||_globalDocument2['default'].mozFullScreenElement||_globalDocument2['default'].msFullscreenElement;if(fullscreenElement&&fullscreenElement.contains(_this.tech_.el())){_this.masterPlaylistController_.fastQualityChange_();}});this.on(this.tech_,'seeking',function(){this.setCurrentTime(this.tech_.currentTime());});this.on(this.tech_,'error',function(){if(this.masterPlaylistController_){this.masterPlaylistController_.pauseLoading();}});this.audioTrackChange_=function(){_this.masterPlaylistController_.setupAudio();};this.on(this.tech_,'play',this.play);} _createClass(HlsHandler,[{key:'setOptions_',value:function setOptions_(){var _this2=this;this.options_.withCredentials=this.options_.withCredentials||false;if(typeof this.options_.bandwidth!=='number'){this.options_.bandwidth=4194304;} ['withCredentials','bandwidth'].forEach(function(option){if(typeof _this2.source_[option]!=='undefined'){_this2.options_[option]=_this2.source_[option];}});this.bandwidth=this.options_.bandwidth;}},{key:'src',value:function src(_src){var _this3=this;if(!_src){return;} this.setOptions_();this.options_.url=this.source_.src;this.options_.tech=this.tech_;this.options_.externHls=Hls;this.masterPlaylistController_=new _masterPlaylistController.MasterPlaylistController(this.options_);this.gapSkipper_=new _gapSkipper2['default'](this.options_);this.masterPlaylistController_.selectPlaylist=this.selectPlaylist?this.selectPlaylist.bind(this):Hls.STANDARD_PLAYLIST_SELECTOR.bind(this);this.playlists=this.masterPlaylistController_.masterPlaylistLoader_;this.mediaSource=this.masterPlaylistController_.mediaSource;Object.defineProperties(this,{selectPlaylist:{get:function get(){return this.masterPlaylistController_.selectPlaylist;},set:function set(selectPlaylist){this.masterPlaylistController_.selectPlaylist=selectPlaylist.bind(this);}},bandwidth:{get:function get(){return this.masterPlaylistController_.mainSegmentLoader_.bandwidth;},set:function set(bandwidth){this.masterPlaylistController_.mainSegmentLoader_.bandwidth=bandwidth;}}});Object.defineProperties(this.stats,{bandwidth:{get:function get(){return _this3.bandwidth||0;},enumerable:true},mediaRequests:{get:function get(){return _this3.masterPlaylistController_.mediaRequests_()||0;},enumerable:true},mediaTransferDuration:{get:function get(){return _this3.masterPlaylistController_.mediaTransferDuration_()||0;},enumerable:true},mediaBytesTransferred:{get:function get(){return _this3.masterPlaylistController_.mediaBytesTransferred_()||0;},enumerable:true}});this.tech_.one('canplay',this.masterPlaylistController_.setupFirstPlay.bind(this.masterPlaylistController_));this.masterPlaylistController_.on('sourceopen',function(){_this3.tech_.audioTracks().addEventListener('change',_this3.audioTrackChange_);});this.masterPlaylistController_.on('selectedinitialmedia',function(){(0,_renditionMixin2['default'])(_this3);});this.masterPlaylistController_.on('audioupdate',function(){_this3.tech_.clearTracks('audio');_this3.masterPlaylistController_.activeAudioGroup().forEach(function(audioTrack){_this3.tech_.audioTracks().addTrack(audioTrack);});});this.on(this.masterPlaylistController_,'progress',function(){this.bandwidth=this.masterPlaylistController_.mainSegmentLoader_.bandwidth;this.tech_.trigger('progress');});if(!this.tech_.el()){return;} this.tech_.src(_videoJs2['default'].URL.createObjectURL(this.masterPlaylistController_.mediaSource));}},{key:'activeAudioGroup_',value:function activeAudioGroup_(){return this.masterPlaylistController_.activeAudioGroup();}},{key:'play',value:function play(){this.masterPlaylistController_.play();}},{key:'setCurrentTime',value:function setCurrentTime(currentTime){this.masterPlaylistController_.setCurrentTime(currentTime);}},{key:'duration',value:function duration(){return this.masterPlaylistController_.duration();}},{key:'seekable',value:function seekable(){return this.masterPlaylistController_.seekable();}},{key:'dispose',value:function dispose(){if(this.masterPlaylistController_){this.masterPlaylistController_.dispose();} this.gapSkipper_.dispose();this.tech_.audioTracks().removeEventListener('change',this.audioTrackChange_);_get(Object.getPrototypeOf(HlsHandler.prototype),'dispose',this).call(this);}}]);return HlsHandler;})(Component);var HlsSourceHandler=function HlsSourceHandler(mode){return{canHandleSource:function canHandleSource(srcObj){if(_videoJs2['default'].options.hls&&_videoJs2['default'].options.hls.mode&&_videoJs2['default'].options.hls.mode!==mode){return false;} return HlsSourceHandler.canPlayType(srcObj.type);},handleSource:function handleSource(source,tech,options){if(mode==='flash'){tech.setTimeout(function(){tech.trigger('loadstart');},1);} var settings=_videoJs2['default'].mergeOptions(options,{hls:{mode:mode}});tech.hls=new HlsHandler(source,tech,settings);tech.hls.xhr=(0,_xhr2['default'])();if(_videoJs2['default'].Hls.xhr.beforeRequest){tech.hls.xhr.beforeRequest=_videoJs2['default'].Hls.xhr.beforeRequest;} tech.hls.src(source.src);return tech.hls;},canPlayType:function canPlayType(type){if(HlsSourceHandler.canPlayType(type)){return 'maybe';} return '';}};};Hls.comparePlaylistBandwidth=function(left,right){var leftBandwidth=undefined;var rightBandwidth=undefined;if(left.attributes&&left.attributes.BANDWIDTH){leftBandwidth=left.attributes.BANDWIDTH;} leftBandwidth=leftBandwidth||_globalWindow2['default'].Number.MAX_VALUE;if(right.attributes&&right.attributes.BANDWIDTH){rightBandwidth=right.attributes.BANDWIDTH;} rightBandwidth=rightBandwidth||_globalWindow2['default'].Number.MAX_VALUE;return leftBandwidth-rightBandwidth;};Hls.comparePlaylistResolution=function(left,right){var leftWidth=undefined;var rightWidth=undefined;if(left.attributes&&left.attributes.RESOLUTION&&left.attributes.RESOLUTION.width){leftWidth=left.attributes.RESOLUTION.width;} leftWidth=leftWidth||_globalWindow2['default'].Number.MAX_VALUE;if(right.attributes&&right.attributes.RESOLUTION&&right.attributes.RESOLUTION.width){rightWidth=right.attributes.RESOLUTION.width;} rightWidth=rightWidth||_globalWindow2['default'].Number.MAX_VALUE;if(leftWidth===rightWidth&&left.attributes.BANDWIDTH&&right.attributes.BANDWIDTH){return left.attributes.BANDWIDTH-right.attributes.BANDWIDTH;} return leftWidth-rightWidth;};HlsSourceHandler.canPlayType=function(type){var mpegurlRE=/^(audio|video|application)\/(x-|vnd\.apple\.)?mpegurl/i;if(Hls.supportsNativeHls){return false;} return mpegurlRE.test(type);};if(typeof _videoJs2['default'].MediaSource==='undefined'||typeof _videoJs2['default'].URL==='undefined'){_videoJs2['default'].MediaSource=_videojsContribMediaSources.MediaSource;_videoJs2['default'].URL=_videojsContribMediaSources.URL;} if(_videojsContribMediaSources.MediaSource.supportsNativeMediaSources()){_videoJs2['default'].getComponent('Html5').registerSourceHandler(HlsSourceHandler('html5'));} if(_globalWindow2['default'].Uint8Array){_videoJs2['default'].getComponent('Flash').registerSourceHandler(HlsSourceHandler('flash'));} _videoJs2['default'].HlsHandler=HlsHandler;_videoJs2['default'].HlsSourceHandler=HlsSourceHandler;_videoJs2['default'].Hls=Hls;_videoJs2['default'].m3u8=_m3u8Parser2['default'];_videoJs2['default'].registerComponent('Hls',Hls);_videoJs2['default'].options.hls=_videoJs2['default'].options.hls||{};module.exports={Hls:Hls,HlsHandler:HlsHandler,HlsSourceHandler:HlsSourceHandler};}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./bin-utils":2,"./config":3,"./gap-skipper":4,"./master-playlist-controller":5,"./playlist":7,"./playlist-loader":6,"./rendition-mixin":9,"./xhr":14,"aes-decrypter":18,"global/document":24,"global/window":25,"m3u8-parser":62,"videojs-contrib-media-sources":93}]},{},[96])(96)});