hls.js.d.ts 94 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837
  1. declare class AbrController implements ComponentAPI {
  2. protected hls: Hls;
  3. private lastLoadedFragLevel;
  4. private _nextAutoLevel;
  5. private timer?;
  6. private onCheck;
  7. private fragCurrent;
  8. private partCurrent;
  9. private bitrateTestDelay;
  10. readonly bwEstimator: EwmaBandWidthEstimator;
  11. constructor(hls: Hls);
  12. protected registerListeners(): void;
  13. protected unregisterListeners(): void;
  14. destroy(): void;
  15. protected onFragLoading(event: Events.FRAG_LOADING, data: FragLoadingData): void;
  16. protected onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData): void;
  17. private _abandonRulesCheck;
  18. protected onFragLoaded(event: Events.FRAG_LOADED, { frag, part }: FragLoadedData): void;
  19. protected onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData): void;
  20. protected onError(event: Events.ERROR, data: ErrorData): void;
  21. clearTimer(): void;
  22. get nextAutoLevel(): number;
  23. private getNextABRAutoLevel;
  24. private findBestLevel;
  25. set nextAutoLevel(nextLevel: number);
  26. }
  27. export declare type ABRControllerConfig = {
  28. abrEwmaFastLive: number;
  29. abrEwmaSlowLive: number;
  30. abrEwmaFastVoD: number;
  31. abrEwmaSlowVoD: number;
  32. abrEwmaDefaultEstimate: number;
  33. abrBandWidthFactor: number;
  34. abrBandWidthUpFactor: number;
  35. abrMaxWithRealBitrate: boolean;
  36. maxStarvationDelay: number;
  37. maxLoadingDelay: number;
  38. };
  39. export declare class AttrList {
  40. [key: string]: any;
  41. constructor(attrs: string | Record<string, any>);
  42. decimalInteger(attrName: string): number;
  43. hexadecimalInteger(attrName: string): Uint8Array | null;
  44. hexadecimalIntegerAsNumber(attrName: string): number;
  45. decimalFloatingPoint(attrName: string): number;
  46. optionalFloat(attrName: string, defaultValue: number): number;
  47. enumeratedString(attrName: string): string | undefined;
  48. bool(attrName: string): boolean;
  49. decimalResolution(attrName: string): {
  50. width: number;
  51. height: number;
  52. } | undefined;
  53. static parseAttrList(input: string): Record<string, any>;
  54. }
  55. export declare type AudioPlaylistType = 'AUDIO';
  56. declare class AudioStreamController extends BaseStreamController implements NetworkComponentAPI {
  57. private videoBuffer;
  58. private videoTrackCC;
  59. private waitingVideoCC;
  60. private audioSwitch;
  61. private trackId;
  62. private waitingData;
  63. private mainDetails;
  64. private bufferFlushed;
  65. constructor(hls: Hls, fragmentTracker: FragmentTracker);
  66. protected onHandlerDestroying(): void;
  67. private _registerListeners;
  68. private _unregisterListeners;
  69. onInitPtsFound(event: Events.INIT_PTS_FOUND, { frag, id, initPTS }: InitPTSFoundData): void;
  70. startLoad(startPosition: number): void;
  71. doTick(): void;
  72. clearWaitingFragment(): void;
  73. protected onTickEnd(): void;
  74. private doTickIdle;
  75. protected getMaxBufferLength(): number;
  76. onMediaDetaching(): void;
  77. onAudioTracksUpdated(event: Events.AUDIO_TRACKS_UPDATED, { audioTracks }: AudioTracksUpdatedData): void;
  78. onAudioTrackSwitching(event: Events.AUDIO_TRACK_SWITCHING, data: AudioTrackSwitchingData): void;
  79. onManifestLoading(): void;
  80. onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData): void;
  81. onAudioTrackLoaded(event: Events.AUDIO_TRACK_LOADED, data: TrackLoadedData): void;
  82. _handleFragmentLoadProgress(data: FragLoadedData): void;
  83. protected _handleFragmentLoadComplete(fragLoadedData: FragLoadedData): void;
  84. onBufferReset(): void;
  85. onBufferCreated(event: Events.BUFFER_CREATED, data: BufferCreatedData): void;
  86. onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData): void;
  87. private onError;
  88. private onBufferFlushed;
  89. private _handleTransmuxComplete;
  90. private _bufferInitSegment;
  91. protected loadFragment(frag: Fragment, trackDetails: LevelDetails, targetBufferTime: number): void;
  92. private completeAudioSwitch;
  93. }
  94. declare class AudioTrackController extends BasePlaylistController {
  95. private tracks;
  96. private groupId;
  97. private tracksInGroup;
  98. private trackId;
  99. private trackName;
  100. private selectDefaultTrack;
  101. constructor(hls: Hls);
  102. private registerListeners;
  103. private unregisterListeners;
  104. destroy(): void;
  105. protected onManifestLoading(): void;
  106. protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;
  107. protected onAudioTrackLoaded(event: Events.AUDIO_TRACK_LOADED, data: AudioTrackLoadedData): void;
  108. protected onLevelLoading(event: Events.LEVEL_LOADING, data: LevelLoadingData): void;
  109. protected onLevelSwitching(event: Events.LEVEL_SWITCHING, data: LevelSwitchingData): void;
  110. private switchLevel;
  111. protected onError(event: Events.ERROR, data: ErrorData): void;
  112. get audioTracks(): MediaPlaylist[];
  113. get audioTrack(): number;
  114. set audioTrack(newId: number);
  115. private setAudioTrack;
  116. private selectInitialTrack;
  117. private findTrackId;
  118. protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void;
  119. }
  120. export declare interface AudioTrackLoadedData extends TrackLoadedData {
  121. }
  122. export declare interface AudioTracksUpdatedData {
  123. audioTracks: MediaPlaylist[];
  124. }
  125. export declare interface AudioTrackSwitchedData {
  126. id: number;
  127. }
  128. export declare interface AudioTrackSwitchingData {
  129. id: number;
  130. name: string;
  131. groupId: string;
  132. type: MediaPlaylistType | 'main';
  133. url: string;
  134. }
  135. export declare interface BackBufferData {
  136. bufferEnd: number;
  137. }
  138. declare class BasePlaylistController implements NetworkComponentAPI {
  139. protected hls: Hls;
  140. protected timer: number;
  141. protected canLoad: boolean;
  142. protected retryCount: number;
  143. protected log: (msg: any) => void;
  144. protected warn: (msg: any) => void;
  145. constructor(hls: Hls, logPrefix: string);
  146. destroy(): void;
  147. protected onError(event: Events.ERROR, data: ErrorData): void;
  148. protected clearTimer(): void;
  149. startLoad(): void;
  150. stopLoad(): void;
  151. protected switchParams(playlistUri: string, previous?: LevelDetails): HlsUrlParameters | undefined;
  152. protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void;
  153. protected shouldLoadTrack(track: MediaPlaylist): boolean;
  154. protected playlistLoaded(index: number, data: LevelLoadedData | AudioTrackLoadedData | TrackLoadedData, previousDetails?: LevelDetails): void;
  155. private getDeliveryDirectives;
  156. protected retryLoadingOrFail(errorEvent: ErrorData): boolean;
  157. }
  158. export declare class BaseSegment {
  159. private _byteRange;
  160. private _url;
  161. readonly baseurl: string;
  162. relurl?: string;
  163. elementaryStreams: ElementaryStreams;
  164. constructor(baseurl: string);
  165. setByteRange(value: string, previous?: BaseSegment): void;
  166. get byteRange(): number[];
  167. get byteRangeStartOffset(): number;
  168. get byteRangeEndOffset(): number;
  169. get url(): string;
  170. set url(value: string);
  171. }
  172. declare class BaseStreamController extends TaskLoop implements NetworkComponentAPI {
  173. protected hls: Hls;
  174. protected fragPrevious: Fragment | null;
  175. protected fragCurrent: Fragment | null;
  176. protected fragmentTracker: FragmentTracker;
  177. protected transmuxer: TransmuxerInterface | null;
  178. protected _state: string;
  179. protected media?: any;
  180. protected mediaBuffer?: any;
  181. protected config: HlsConfig;
  182. protected bitrateTest: boolean;
  183. protected lastCurrentTime: number;
  184. protected nextLoadPosition: number;
  185. protected startPosition: number;
  186. protected loadedmetadata: boolean;
  187. protected fragLoadError: number;
  188. protected retryDate: number;
  189. protected levels: Array<Level> | null;
  190. protected fragmentLoader: FragmentLoader;
  191. protected levelLastLoaded: number | null;
  192. protected startFragRequested: boolean;
  193. protected decrypter: Decrypter;
  194. protected initPTS: Array<number>;
  195. protected onvseeking: EventListener | null;
  196. protected onvended: EventListener | null;
  197. private readonly logPrefix;
  198. protected log: (msg: any) => void;
  199. protected warn: (msg: any) => void;
  200. constructor(hls: Hls, fragmentTracker: FragmentTracker, logPrefix: string);
  201. protected doTick(): void;
  202. protected onTickEnd(): void;
  203. startLoad(startPosition: number): void;
  204. stopLoad(): void;
  205. protected _streamEnded(bufferInfo: any, levelDetails: any): boolean;
  206. protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachingData): void;
  207. protected onMediaDetaching(): void;
  208. protected onMediaSeeking(): void;
  209. protected onMediaEnded(): void;
  210. onKeyLoaded(event: Events.KEY_LOADED, data: KeyLoadedData): void;
  211. protected onHandlerDestroying(): void;
  212. protected onHandlerDestroyed(): void;
  213. protected loadKey(frag: Fragment, details: LevelDetails): void;
  214. protected loadFragment(frag: Fragment, levelDetails: LevelDetails, targetBufferTime: number): void;
  215. private _loadFragForPlayback;
  216. protected flushMainBuffer(startOffset: number, endOffset: number, type?: SourceBufferName | null): void;
  217. protected _loadInitSegment(frag: Fragment): void;
  218. protected fragContextChanged(frag: Fragment | null): boolean;
  219. protected fragBufferedComplete(frag: Fragment, part: Part | null): void;
  220. protected _handleFragmentLoadComplete(fragLoadedEndData: PartsLoadedData): void;
  221. protected _handleFragmentLoadProgress(frag: FragLoadedData): void;
  222. protected _doFragLoad(frag: Fragment, details?: LevelDetails, targetBufferTime?: number | null, progressCallback?: FragmentLoadProgressCallback): Promise<PartsLoadedData | FragLoadedData | null>;
  223. private doFragPartsLoad;
  224. private handleFragLoadError;
  225. protected _handleTransmuxerFlush(chunkMeta: ChunkMetadata): void;
  226. protected getCurrentContext(chunkMeta: ChunkMetadata): {
  227. frag: Fragment;
  228. part: Part | null;
  229. level: Level;
  230. } | null;
  231. protected bufferFragmentData(data: RemuxedTrack, frag: Fragment, part: Part | null, chunkMeta: ChunkMetadata): void;
  232. protected flushBufferGap(frag: Fragment): void;
  233. protected getFwdBufferInfo(bufferable: Bufferable, type: PlaylistLevelType): {
  234. len: number;
  235. start: number;
  236. end: number;
  237. nextStart?: number;
  238. } | null;
  239. protected getMaxBufferLength(levelBitrate?: number): number;
  240. protected reduceMaxBufferLength(threshold?: number): boolean;
  241. protected getNextFragment(pos: number, levelDetails: LevelDetails): Fragment | null;
  242. getNextPart(partList: Part[], frag: Fragment, targetBufferTime: number): number;
  243. private loadedEndOfParts;
  244. protected getInitialLiveFragment(levelDetails: LevelDetails, fragments: Array<Fragment>): Fragment | null;
  245. protected getFragmentAtPosition(bufferEnd: number, end: number, levelDetails: LevelDetails): Fragment | null;
  246. protected synchronizeToLiveEdge(levelDetails: LevelDetails): void;
  247. protected alignPlaylists(details: LevelDetails, previousDetails?: LevelDetails): number;
  248. protected waitForCdnTuneIn(details: LevelDetails): boolean;
  249. protected setStartPosition(details: LevelDetails, sliding: number): void;
  250. protected getLoadPosition(): number;
  251. private handleFragLoadAborted;
  252. protected resetFragmentLoading(frag: Fragment): void;
  253. protected onFragmentOrKeyLoadError(filterType: PlaylistLevelType, data: ErrorData): void;
  254. protected afterBufferFlushed(media: Bufferable, bufferType: SourceBufferName, playlistType: PlaylistLevelType): void;
  255. protected resetLoadingState(): void;
  256. protected resetLiveStartWhenNotLoaded(level: number): boolean;
  257. private updateLevelTiming;
  258. protected resetTransmuxer(): void;
  259. set state(nextState: string);
  260. get state(): string;
  261. }
  262. declare type Bufferable = {
  263. buffered: TimeRanges;
  264. };
  265. export declare interface BufferAppendedData {
  266. type: SourceBufferName;
  267. frag: Fragment;
  268. part: Part | null;
  269. chunkMeta: ChunkMetadata;
  270. parent: PlaylistLevelType;
  271. timeRanges: Partial<Record<SourceBufferName, TimeRanges>>;
  272. }
  273. export declare interface BufferAppendingData {
  274. type: SourceBufferName;
  275. frag: Fragment;
  276. part: Part | null;
  277. chunkMeta: ChunkMetadata;
  278. parent: PlaylistLevelType;
  279. data: Uint8Array;
  280. }
  281. export declare interface BufferCodecsData {
  282. video?: Track;
  283. audio?: Track;
  284. }
  285. declare class BufferController implements ComponentAPI {
  286. private details;
  287. private _objectUrl;
  288. private operationQueue;
  289. private listeners;
  290. private hls;
  291. bufferCodecEventsExpected: number;
  292. private _bufferCodecEventsTotal;
  293. media: HTMLMediaElement | null;
  294. mediaSource: MediaSource | null;
  295. appendError: number;
  296. tracks: TrackSet;
  297. pendingTracks: TrackSet;
  298. sourceBuffer: SourceBuffers;
  299. constructor(hls: Hls);
  300. hasSourceTypes(): boolean;
  301. destroy(): void;
  302. protected registerListeners(): void;
  303. protected unregisterListeners(): void;
  304. private _initSourceBuffer;
  305. protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;
  306. protected onMediaAttaching(event: Events.MEDIA_ATTACHING, data: MediaAttachingData): void;
  307. protected onMediaDetaching(): void;
  308. protected onBufferReset(): void;
  309. protected onBufferCodecs(event: Events.BUFFER_CODECS, data: BufferCodecsData): void;
  310. protected appendChangeType(type: any, mimeType: any): void;
  311. protected onBufferAppending(event: Events.BUFFER_APPENDING, eventData: BufferAppendingData): void;
  312. protected onBufferFlushing(event: Events.BUFFER_FLUSHING, data: BufferFlushingData): void;
  313. protected onFragParsed(event: Events.FRAG_PARSED, data: FragParsedData): void;
  314. private onFragChanged;
  315. protected onBufferEos(event: Events.BUFFER_EOS, data: BufferEOSData): void;
  316. protected onLevelUpdated(event: Events.LEVEL_UPDATED, { details }: LevelUpdatedData): void;
  317. flushBackBuffer(): void;
  318. /**
  319. * Update Media Source duration to current level duration or override to Infinity if configuration parameter
  320. * 'liveDurationInfinity` is set to `true`
  321. * More details: https://github.com/video-dev/hls.js/issues/355
  322. */
  323. private updateMediaElementDuration;
  324. updateSeekableRange(levelDetails: any): void;
  325. protected checkPendingTracks(): void;
  326. protected createSourceBuffers(tracks: TrackSet): void;
  327. private _onMediaSourceOpen;
  328. private _onMediaSourceClose;
  329. private _onMediaSourceEnded;
  330. private _onSBUpdateStart;
  331. private _onSBUpdateEnd;
  332. private _onSBUpdateError;
  333. private removeExecutor;
  334. private appendExecutor;
  335. private blockBuffers;
  336. private getSourceBufferTypes;
  337. private addBufferListener;
  338. private removeBufferListeners;
  339. }
  340. export declare type BufferControllerConfig = {
  341. appendErrorMaxRetry: number;
  342. backBufferLength: number;
  343. liveDurationInfinity: boolean;
  344. liveBackBufferLength: number | null;
  345. };
  346. export declare interface BufferCreatedData {
  347. tracks: TrackSet;
  348. }
  349. export declare interface BufferEOSData {
  350. type?: SourceBufferName;
  351. }
  352. export declare interface BufferFlushedData {
  353. type: SourceBufferName;
  354. }
  355. export declare interface BufferFlushingData {
  356. startOffset: number;
  357. endOffset: number;
  358. endOffsetSubtitles?: number;
  359. type: SourceBufferName | null;
  360. }
  361. declare class CapLevelController implements ComponentAPI {
  362. autoLevelCapping: number;
  363. firstLevel: number;
  364. media: HTMLVideoElement | null;
  365. restrictedLevels: Array<number>;
  366. timer: number | undefined;
  367. private hls;
  368. private streamController?;
  369. clientRect: {
  370. width: number;
  371. height: number;
  372. } | null;
  373. constructor(hls: Hls);
  374. setStreamController(streamController: StreamController): void;
  375. destroy(): void;
  376. protected registerListeners(): void;
  377. protected unregisterListener(): void;
  378. protected onFpsDropLevelCapping(event: Events.FPS_DROP_LEVEL_CAPPING, data: FPSDropLevelCappingData): void;
  379. protected onMediaAttaching(event: Events.MEDIA_ATTACHING, data: MediaAttachingData): void;
  380. protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;
  381. protected onBufferCodecs(event: Events.BUFFER_CODECS, data: BufferCodecsData): void;
  382. protected onMediaDetaching(): void;
  383. detectPlayerSize(): void;
  384. getMaxLevel(capLevelIndex: number): number;
  385. startCapping(): void;
  386. stopCapping(): void;
  387. getDimensions(): {
  388. width: number;
  389. height: number;
  390. };
  391. get mediaWidth(): number;
  392. get mediaHeight(): number;
  393. static get contentScaleFactor(): number;
  394. static isLevelAllowed(level: number, restrictedLevels?: Array<number>): boolean;
  395. static getMaxLevelByMediaSize(levels: Array<Level>, width: number, height: number): number;
  396. }
  397. export declare type CapLevelControllerConfig = {
  398. capLevelToPlayerSize: boolean;
  399. };
  400. /**
  401. * Keep a CEA-608 screen of 32x15 styled characters
  402. * @constructor
  403. */
  404. declare class CaptionScreen {
  405. rows: Row[];
  406. currRow: number;
  407. nrRollUpRows: number | null;
  408. lastOutputScreen: CaptionScreen | null;
  409. logger: CaptionsLogger;
  410. constructor(logger: CaptionsLogger);
  411. reset(): void;
  412. equals(other: CaptionScreen): boolean;
  413. copy(other: CaptionScreen): void;
  414. isEmpty(): boolean;
  415. backSpace(): void;
  416. clearToEndOfRow(): void;
  417. /**
  418. * Insert a character (without styling) in the current row.
  419. */
  420. insertChar(char: number): void;
  421. setPen(styles: Partial<PenStyles>): void;
  422. moveCursor(relPos: number): void;
  423. setCursor(absPos: number): void;
  424. setPAC(pacData: PACData): void;
  425. /**
  426. * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).
  427. */
  428. setBkgData(bkgData: Partial<PenStyles>): void;
  429. setRollUpRows(nrRows: number | null): void;
  430. rollUp(): void;
  431. /**
  432. * Get all non-empty rows with as unicode text.
  433. */
  434. getDisplayText(asOneRow?: boolean): string;
  435. getTextAndFormat(): Row[];
  436. }
  437. declare class CaptionsLogger {
  438. time: number | null;
  439. verboseLevel: VerboseLevel;
  440. log(severity: VerboseLevel, msg: string): void;
  441. }
  442. export declare class ChunkMetadata {
  443. readonly level: number;
  444. readonly sn: number;
  445. readonly part: number;
  446. readonly id: number;
  447. readonly size: number;
  448. readonly partial: boolean;
  449. readonly transmuxing: HlsChunkPerformanceTiming;
  450. readonly buffering: {
  451. [key in SourceBufferName]: HlsChunkPerformanceTiming;
  452. };
  453. constructor(level: number, sn: number, id: number, size?: number, part?: number, partial?: boolean);
  454. }
  455. /**
  456. * CMCD
  457. */
  458. declare interface CMCD {
  459. /**
  460. * Encoded bitrate
  461. *
  462. * The encoded bitrate of the audio or video object being requested. This may not be known precisely by the player; however,
  463. * it MAY be estimated based upon playlist/manifest declarations. If the playlist declares both peak and average bitrate values,
  464. * the peak value should be transmitted.
  465. *
  466. * Integer kbps
  467. */
  468. br?: number;
  469. /**
  470. * Object duration
  471. *
  472. * The playback duration in milliseconds of the object being requested. If a partial segment is being requested, then this value
  473. * MUST indicate the playback duration of that part and not that of its parent segment. This value can be an approximation of the
  474. * estimated duration if the explicit value is not known.
  475. *
  476. * Integer milliseconds
  477. */
  478. d?: number;
  479. /**
  480. * Object type
  481. *
  482. * The media type of the current object being requested:
  483. * - `m` = text file, such as a manifest or playlist
  484. * - `a` = audio only
  485. * - `v` = video only
  486. * - `av` = muxed audio and video
  487. * - `i` = init segment
  488. * - `c` = caption or subtitle
  489. * - `tt` = ISOBMFF timed text track
  490. * - `k` = cryptographic key, license or certificate.
  491. * - `o` = other
  492. *
  493. * If the object type being requested is unknown, then this key MUST NOT be used.
  494. */
  495. ot?: CMCDObjectType;
  496. /**
  497. * Top bitrate
  498. *
  499. * The highest bitrate rendition in the manifest or playlist that the client is allowed to play, given current codec, licensing and
  500. * sizing constraints.
  501. *
  502. * Integer Kbps
  503. */
  504. tb?: number;
  505. /**
  506. * Buffer length
  507. *
  508. * The buffer length associated with the media object being requested. This value MUST be rounded to the nearest 100 ms. This key SHOULD only be
  509. * sent with an object type of ‘a’, ‘v’ or ‘av’.
  510. *
  511. * Integer milliseconds
  512. */
  513. bl?: number;
  514. /**
  515. * Deadline
  516. *
  517. * Deadline from the request time until the first sample of this Segment/Object needs to be available in order to not create a buffer underrun or
  518. * any other playback problems. This value MUST be rounded to the nearest 100ms. For a playback rate of 1, this may be equivalent to the player’s
  519. * remaining buffer length.
  520. *
  521. * Integer milliseconds
  522. */
  523. dl?: number;
  524. /**
  525. * Measured mtp CMCD throughput
  526. *
  527. * The throughput between client and server, as measured by the client and MUST be rounded to the nearest 100 kbps. This value, however derived,
  528. * SHOULD be the value that the client is using to make its next Adaptive Bitrate switching decision. If the client is connected to multiple
  529. * servers concurrently, it must take care to report only the throughput measured against the receiving server. If the client has multiple concurrent
  530. * connections to the server, then the intent is that this value communicates the aggregate throughput the client sees across all those connections.
  531. *
  532. * Integer kbps
  533. */
  534. mtp?: number;
  535. /**
  536. * Next object request
  537. *
  538. * Relative path of the next object to be requested. This can be used to trigger pre-fetching by the CDN. This MUST be a path relative to the current
  539. * request. This string MUST be URLEncoded. The client SHOULD NOT depend upon any pre-fetch action being taken - it is merely a request for such a
  540. * pre-fetch to take place.
  541. *
  542. * String
  543. */
  544. nor?: string;
  545. /**
  546. * Next range request
  547. *
  548. * If the next request will be a partial object request, then this string denotes the byte range to be requested. If the ‘nor’ field is not set, then the
  549. * object is assumed to match the object currently being requested. The client SHOULD NOT depend upon any pre-fetch action being taken – it is merely a
  550. * request for such a pre-fetch to take place. Formatting is similar to the HTTP Range header, except that the unit MUST be ‘byte’, the ‘Range:’ prefix is
  551. * NOT required and specifying multiple ranges is NOT allowed. Valid combinations are:
  552. *
  553. * - `"\<range-start\>-"`
  554. * - `"\<range-start\>-\<range-end\>"`
  555. * - `"-\<suffix-length\>"`
  556. *
  557. * String
  558. */
  559. nrr?: string;
  560. /**
  561. * Startup
  562. *
  563. * Key is included without a value if the object is needed urgently due to startup, seeking or recovery after a buffer-empty event. The media SHOULD not be
  564. * rendering when this request is made. This key MUST not be sent if it is FALSE.
  565. *
  566. * Boolean
  567. */
  568. su?: boolean;
  569. /**
  570. * Content ID
  571. *
  572. * A unique string identifying the current content. Maximum length is 64 characters. This value is consistent across multiple different
  573. * sessions and devices and is defined and updated at the discretion of the service provider.
  574. *
  575. * String
  576. */
  577. cid?: string;
  578. /**
  579. * Playback rate
  580. *
  581. * `1` if real-time, `2` if double speed, `0` if not playing. SHOULD only be sent if not equal to `1`.
  582. *
  583. * Decimal
  584. */
  585. pr?: number;
  586. /**
  587. * Streaming format
  588. *
  589. * The streaming format that defines the current request.
  590. *
  591. * - `d` = MPEG DASH
  592. * - `h` = HTTP Live Streaming (HLS)
  593. * - `s` = Smooth Streaming
  594. * - `o` = other
  595. *
  596. * If the streaming format being requested is unknown, then this key MUST NOT be used.
  597. */
  598. sf?: CMCDStreamingFormat;
  599. /**
  600. * Session ID
  601. *
  602. * A GUID identifying the current playback session. A playback session typically ties together segments belonging to a single media asset.
  603. * Maximum length is 64 characters. It is RECOMMENDED to conform to the UUID specification.
  604. *
  605. * String
  606. */
  607. sid?: string;
  608. /**
  609. * Stream type
  610. * - `v` = all segments are available – e.g., VOD
  611. * - `l` = segments become available over time – e.g., LIVE
  612. */
  613. st?: CMCDStreamType;
  614. /**
  615. * CMCD version
  616. *
  617. * The version of this specification used for interpreting the defined key names and values. If this key is omitted, the client and server MUST
  618. * interpret the values as being defined by version 1. Client SHOULD omit this field if the version is 1.
  619. *
  620. * Integer
  621. */
  622. v?: number;
  623. /**
  624. * Buffer starvation
  625. *
  626. * Key is included without a value if the buffer was starved at some point between the prior request and this object request,
  627. * resulting in the player being in a rebuffering state and the video or audio playback being stalled. This key MUST NOT be
  628. * sent if the buffer was not starved since the prior request.
  629. *
  630. * If the object type `ot` key is sent along with this key, then the `bs` key refers to the buffer associated with the particular
  631. * object type. If no object type is communicated, then the buffer state applies to the current session.
  632. *
  633. * Boolean
  634. */
  635. bs?: boolean;
  636. /**
  637. * Requested maximum throughput
  638. *
  639. * The requested maximum throughput that the client considers sufficient for delivery of the asset. Values MUST be rounded to the
  640. * nearest 100kbps. For example, a client would indicate that the current segment, encoded at 2Mbps, is to be delivered at no more
  641. * than 10Mbps, by using rtp=10000.
  642. *
  643. * Note: This can benefit clients by preventing buffer saturation through over-delivery and can also deliver a community benefit
  644. * through fair-share delivery. The concept is that each client receives the throughput necessary for great performance, but no more.
  645. * The CDN may not support the rtp feature.
  646. *
  647. * Integer kbps
  648. */
  649. rtp?: number;
  650. }
  651. /**
  652. * Controller to deal with Common Media Client Data (CMCD)
  653. * @see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf
  654. */
  655. declare class CMCDController implements ComponentAPI {
  656. private hls;
  657. private config;
  658. private media?;
  659. private sid?;
  660. private cid?;
  661. private useHeaders;
  662. private initialized;
  663. private starved;
  664. private buffering;
  665. private audioBuffer?;
  666. private videoBuffer?;
  667. constructor(hls: Hls);
  668. private registerListeners;
  669. private unregisterListeners;
  670. destroy(): void;
  671. private onMediaAttached;
  672. private onMediaDetached;
  673. private onBufferCreated;
  674. private onWaiting;
  675. private onPlaying;
  676. /**
  677. * Create baseline CMCD data
  678. */
  679. private createData;
  680. /**
  681. * Apply CMCD data to a request.
  682. */
  683. private apply;
  684. /**
  685. * Apply CMCD data to a manifest request.
  686. */
  687. private applyPlaylistData;
  688. /**
  689. * Apply CMCD data to a segment request
  690. */
  691. private applyFragmentData;
  692. /**
  693. * The CMCD object type.
  694. */
  695. private getObjectType;
  696. /**
  697. * Get the highest bitrate.
  698. */
  699. private getTopBandwidth;
  700. /**
  701. * Get the buffer length for a media type in milliseconds
  702. */
  703. private getBufferLength;
  704. /**
  705. * Create a playlist loader
  706. */
  707. private createPlaylistLoader;
  708. /**
  709. * Create a playlist loader
  710. */
  711. private createFragmentLoader;
  712. /**
  713. * Generate a random v4 UUI
  714. *
  715. * @returns {string}
  716. */
  717. static uuid(): string;
  718. /**
  719. * Serialize a CMCD data object according to the rules defined in the
  720. * section 3.2 of
  721. * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).
  722. */
  723. static serialize(data: CMCD): string;
  724. /**
  725. * Convert a CMCD data object to request headers according to the rules
  726. * defined in the section 2.1 and 3.2 of
  727. * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).
  728. */
  729. static toHeaders(data: CMCD): Partial<CMCDHeaders>;
  730. /**
  731. * Convert a CMCD data object to query args according to the rules
  732. * defined in the section 2.2 and 3.2 of
  733. * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).
  734. */
  735. static toQuery(data: CMCD): string;
  736. /**
  737. * Append query args to a uri.
  738. */
  739. static appendQueryToUri(uri: any, query: any): any;
  740. }
  741. export declare type CMCDControllerConfig = {
  742. sessionId?: string;
  743. contentId?: string;
  744. useHeaders?: boolean;
  745. };
  746. /**
  747. * CMCD Headers
  748. */
  749. declare interface CMCDHeaders {
  750. 'CMCD-Object': string;
  751. 'CMCD-Request': string;
  752. 'CMCD-Session': string;
  753. 'CMCD-Status': string;
  754. }
  755. /**
  756. * CMCD Object Type
  757. */
  758. declare enum CMCDObjectType {
  759. MANIFEST = "m",
  760. AUDIO = "a",
  761. VIDEO = "v",
  762. MUXED = "av",
  763. INIT = "i",
  764. CAPTION = "c",
  765. TIMED_TEXT = "tt",
  766. KEY = "k",
  767. OTHER = "o"
  768. }
  769. /**
  770. * CMCD Streaming Format
  771. */
  772. declare enum CMCDStreamingFormat {
  773. DASH = "d",
  774. HLS = "h",
  775. SMOOTH = "s",
  776. OTHER = "o"
  777. }
  778. /**
  779. * CMCD Streaming Type
  780. */
  781. declare enum CMCDStreamType {
  782. VOD = "v",
  783. LIVE = "l"
  784. }
  785. declare interface ComponentAPI {
  786. destroy(): void;
  787. }
  788. export declare interface CuesInterface {
  789. newCue(track: TextTrack | null, startTime: number, endTime: number, captionScreen: CaptionScreen): VTTCue[];
  790. }
  791. export declare interface CuesParsedData {
  792. type: 'captions' | 'subtitles';
  793. cues: any;
  794. track: string;
  795. }
  796. declare class Decrypter {
  797. private logEnabled;
  798. private observer;
  799. private config;
  800. private removePKCS7Padding;
  801. private subtle;
  802. private softwareDecrypter;
  803. private key;
  804. private fastAesKey;
  805. private remainderData;
  806. private currentIV;
  807. private currentResult;
  808. constructor(observer: HlsEventEmitter, config: HlsConfig, { removePKCS7Padding }?: {
  809. removePKCS7Padding?: boolean | undefined;
  810. });
  811. destroy(): void;
  812. isSync(): boolean;
  813. flush(): Uint8Array | void;
  814. reset(): void;
  815. decrypt(data: Uint8Array | ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer, callback: (decryptedData: ArrayBuffer) => void): void;
  816. softwareDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer): ArrayBuffer | null;
  817. webCryptoDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer): Promise<ArrayBuffer>;
  818. private onWebCryptoError;
  819. private getValidChunk;
  820. private logOnce;
  821. }
  822. export declare type DRMSystemOptions = {
  823. audioRobustness?: string;
  824. videoRobustness?: string;
  825. };
  826. export declare interface ElementaryStreamInfo {
  827. startPTS: number;
  828. endPTS: number;
  829. startDTS: number;
  830. endDTS: number;
  831. partial?: boolean;
  832. }
  833. export declare type ElementaryStreams = Record<ElementaryStreamTypes, ElementaryStreamInfo | null>;
  834. export declare enum ElementaryStreamTypes {
  835. AUDIO = "audio",
  836. VIDEO = "video",
  837. AUDIOVIDEO = "audiovideo"
  838. }
  839. /**
  840. * Controller to deal with encrypted media extensions (EME)
  841. * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API
  842. *
  843. * @class
  844. * @constructor
  845. */
  846. declare class EMEController implements ComponentAPI {
  847. private hls;
  848. private _widevineLicenseUrl?;
  849. private _licenseXhrSetup?;
  850. private _licenseResponseCallback?;
  851. private _emeEnabled;
  852. private _requestMediaKeySystemAccess;
  853. private _drmSystemOptions;
  854. private _config;
  855. private _mediaKeysList;
  856. private _media;
  857. private _hasSetMediaKeys;
  858. private _requestLicenseFailureCount;
  859. private mediaKeysPromise;
  860. private _onMediaEncrypted;
  861. /**
  862. * @constructs
  863. * @param {Hls} hls Our Hls.js instance
  864. */
  865. constructor(hls: Hls);
  866. destroy(): void;
  867. private _registerListeners;
  868. private _unregisterListeners;
  869. /**
  870. * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum
  871. * @returns {string} License server URL for key-system (if any configured, otherwise causes error)
  872. * @throws if a unsupported keysystem is passed
  873. */
  874. getLicenseServerUrl(keySystem: KeySystems): string;
  875. /**
  876. * Requests access object and adds it to our list upon success
  877. * @private
  878. * @param {string} keySystem System ID (see `KeySystems`)
  879. * @param {Array<string>} audioCodecs List of required audio codecs to support
  880. * @param {Array<string>} videoCodecs List of required video codecs to support
  881. * @throws When a unsupported KeySystem is passed
  882. */
  883. private _attemptKeySystemAccess;
  884. get requestMediaKeySystemAccess(): MediaKeyFunc;
  885. /**
  886. * Handles obtaining access to a key-system
  887. * @private
  888. * @param {string} keySystem
  889. * @param {MediaKeySystemAccess} mediaKeySystemAccess https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess
  890. */
  891. private _onMediaKeySystemAccessObtained;
  892. /**
  893. * Handles key-creation (represents access to CDM). We are going to create key-sessions upon this
  894. * for all existing keys where no session exists yet.
  895. *
  896. * @private
  897. */
  898. private _onMediaKeysCreated;
  899. /**
  900. * @private
  901. * @param {*} keySession
  902. */
  903. private _onNewMediaKeySession;
  904. /**
  905. * @private
  906. * @param {MediaKeySession} keySession
  907. * @param {ArrayBuffer} message
  908. */
  909. private _onKeySessionMessage;
  910. /**
  911. * @private
  912. * @param e {MediaEncryptedEvent}
  913. */
  914. private onMediaEncrypted;
  915. /**
  916. * @private
  917. */
  918. private _attemptSetMediaKeys;
  919. /**
  920. * @private
  921. */
  922. private _generateRequestWithPreferredKeySession;
  923. /**
  924. * @private
  925. * @param {string} url License server URL
  926. * @param {ArrayBuffer} keyMessage Message data issued by key-system
  927. * @param {function} callback Called when XHR has succeeded
  928. * @returns {XMLHttpRequest} Unsent (but opened state) XHR object
  929. * @throws if XMLHttpRequest construction failed
  930. */
  931. private _createLicenseXhr;
  932. /**
  933. * @private
  934. * @param {XMLHttpRequest} xhr
  935. * @param {string} url License server URL
  936. * @param {ArrayBuffer} keyMessage Message data issued by key-system
  937. * @param {function} callback Called when XHR has succeeded
  938. */
  939. private _onLicenseRequestReadyStageChange;
  940. /**
  941. * @private
  942. * @param {MediaKeysListItem} keysListItem
  943. * @param {ArrayBuffer} keyMessage
  944. * @returns {ArrayBuffer} Challenge data posted to license server
  945. * @throws if KeySystem is unsupported
  946. */
  947. private _generateLicenseRequestChallenge;
  948. /**
  949. * @private
  950. * @param keyMessage
  951. * @param callback
  952. */
  953. private _requestLicense;
  954. onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;
  955. onMediaDetached(): void;
  956. onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;
  957. }
  958. export declare type EMEControllerConfig = {
  959. licenseXhrSetup?: (xhr: XMLHttpRequest, url: string) => void;
  960. licenseResponseCallback?: (xhr: XMLHttpRequest, url: string) => ArrayBuffer;
  961. emeEnabled: boolean;
  962. widevineLicenseUrl?: string;
  963. drmSystemOptions: DRMSystemOptions;
  964. requestMediaKeySystemAccessFunc: MediaKeyFunc | null;
  965. };
  966. export declare interface ErrorData {
  967. type: ErrorTypes;
  968. details: ErrorDetails;
  969. fatal: boolean;
  970. buffer?: number;
  971. bytes?: number;
  972. context?: PlaylistLoaderContext;
  973. error?: Error;
  974. event?: keyof HlsListeners | 'demuxerWorker';
  975. frag?: Fragment;
  976. level?: number | undefined;
  977. levelRetry?: boolean;
  978. loader?: Loader<LoaderContext>;
  979. networkDetails?: any;
  980. mimeType?: string;
  981. reason?: string;
  982. response?: LoaderResponse;
  983. url?: string;
  984. parent?: PlaylistLevelType;
  985. err?: {
  986. message: string;
  987. };
  988. }
  989. /**
  990. * @enum {ErrorDetails}
  991. * @typedef {string} ErrorDetail
  992. */
  993. export declare enum ErrorDetails {
  994. KEY_SYSTEM_NO_KEYS = "keySystemNoKeys",
  995. KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess",
  996. KEY_SYSTEM_NO_SESSION = "keySystemNoSession",
  997. KEY_SYSTEM_LICENSE_REQUEST_FAILED = "keySystemLicenseRequestFailed",
  998. KEY_SYSTEM_NO_INIT_DATA = "keySystemNoInitData",
  999. MANIFEST_LOAD_ERROR = "manifestLoadError",
  1000. MANIFEST_LOAD_TIMEOUT = "manifestLoadTimeOut",
  1001. MANIFEST_PARSING_ERROR = "manifestParsingError",
  1002. MANIFEST_INCOMPATIBLE_CODECS_ERROR = "manifestIncompatibleCodecsError",
  1003. LEVEL_EMPTY_ERROR = "levelEmptyError",
  1004. LEVEL_LOAD_ERROR = "levelLoadError",
  1005. LEVEL_LOAD_TIMEOUT = "levelLoadTimeOut",
  1006. LEVEL_SWITCH_ERROR = "levelSwitchError",
  1007. AUDIO_TRACK_LOAD_ERROR = "audioTrackLoadError",
  1008. AUDIO_TRACK_LOAD_TIMEOUT = "audioTrackLoadTimeOut",
  1009. SUBTITLE_LOAD_ERROR = "subtitleTrackLoadError",
  1010. SUBTITLE_TRACK_LOAD_TIMEOUT = "subtitleTrackLoadTimeOut",
  1011. FRAG_LOAD_ERROR = "fragLoadError",
  1012. FRAG_LOAD_TIMEOUT = "fragLoadTimeOut",
  1013. FRAG_DECRYPT_ERROR = "fragDecryptError",
  1014. FRAG_PARSING_ERROR = "fragParsingError",
  1015. REMUX_ALLOC_ERROR = "remuxAllocError",
  1016. KEY_LOAD_ERROR = "keyLoadError",
  1017. KEY_LOAD_TIMEOUT = "keyLoadTimeOut",
  1018. BUFFER_ADD_CODEC_ERROR = "bufferAddCodecError",
  1019. BUFFER_INCOMPATIBLE_CODECS_ERROR = "bufferIncompatibleCodecsError",
  1020. BUFFER_APPEND_ERROR = "bufferAppendError",
  1021. BUFFER_APPENDING_ERROR = "bufferAppendingError",
  1022. BUFFER_STALLED_ERROR = "bufferStalledError",
  1023. BUFFER_FULL_ERROR = "bufferFullError",
  1024. BUFFER_SEEK_OVER_HOLE = "bufferSeekOverHole",
  1025. BUFFER_NUDGE_ON_STALL = "bufferNudgeOnStall",
  1026. INTERNAL_EXCEPTION = "internalException",
  1027. INTERNAL_ABORTED = "aborted",
  1028. UNKNOWN = "unknown"
  1029. }
  1030. export declare enum ErrorTypes {
  1031. NETWORK_ERROR = "networkError",
  1032. MEDIA_ERROR = "mediaError",
  1033. KEY_SYSTEM_ERROR = "keySystemError",
  1034. MUX_ERROR = "muxError",
  1035. OTHER_ERROR = "otherError"
  1036. }
  1037. /**
  1038. * @readonly
  1039. * @enum {string}
  1040. */
  1041. export declare enum Events {
  1042. MEDIA_ATTACHING = "hlsMediaAttaching",
  1043. MEDIA_ATTACHED = "hlsMediaAttached",
  1044. MEDIA_DETACHING = "hlsMediaDetaching",
  1045. MEDIA_DETACHED = "hlsMediaDetached",
  1046. BUFFER_RESET = "hlsBufferReset",
  1047. BUFFER_CODECS = "hlsBufferCodecs",
  1048. BUFFER_CREATED = "hlsBufferCreated",
  1049. BUFFER_APPENDING = "hlsBufferAppending",
  1050. BUFFER_APPENDED = "hlsBufferAppended",
  1051. BUFFER_EOS = "hlsBufferEos",
  1052. BUFFER_FLUSHING = "hlsBufferFlushing",
  1053. BUFFER_FLUSHED = "hlsBufferFlushed",
  1054. MANIFEST_LOADING = "hlsManifestLoading",
  1055. MANIFEST_LOADED = "hlsManifestLoaded",
  1056. MANIFEST_PARSED = "hlsManifestParsed",
  1057. LEVEL_SWITCHING = "hlsLevelSwitching",
  1058. LEVEL_SWITCHED = "hlsLevelSwitched",
  1059. LEVEL_LOADING = "hlsLevelLoading",
  1060. LEVEL_LOADED = "hlsLevelLoaded",
  1061. LEVEL_UPDATED = "hlsLevelUpdated",
  1062. LEVEL_PTS_UPDATED = "hlsLevelPtsUpdated",
  1063. LEVELS_UPDATED = "hlsLevelsUpdated",
  1064. AUDIO_TRACKS_UPDATED = "hlsAudioTracksUpdated",
  1065. AUDIO_TRACK_SWITCHING = "hlsAudioTrackSwitching",
  1066. AUDIO_TRACK_SWITCHED = "hlsAudioTrackSwitched",
  1067. AUDIO_TRACK_LOADING = "hlsAudioTrackLoading",
  1068. AUDIO_TRACK_LOADED = "hlsAudioTrackLoaded",
  1069. SUBTITLE_TRACKS_UPDATED = "hlsSubtitleTracksUpdated",
  1070. SUBTITLE_TRACKS_CLEARED = "hlsSubtitleTracksCleared",
  1071. SUBTITLE_TRACK_SWITCH = "hlsSubtitleTrackSwitch",
  1072. SUBTITLE_TRACK_LOADING = "hlsSubtitleTrackLoading",
  1073. SUBTITLE_TRACK_LOADED = "hlsSubtitleTrackLoaded",
  1074. SUBTITLE_FRAG_PROCESSED = "hlsSubtitleFragProcessed",
  1075. CUES_PARSED = "hlsCuesParsed",
  1076. NON_NATIVE_TEXT_TRACKS_FOUND = "hlsNonNativeTextTracksFound",
  1077. INIT_PTS_FOUND = "hlsInitPtsFound",
  1078. FRAG_LOADING = "hlsFragLoading",
  1079. FRAG_LOAD_EMERGENCY_ABORTED = "hlsFragLoadEmergencyAborted",
  1080. FRAG_LOADED = "hlsFragLoaded",
  1081. FRAG_DECRYPTED = "hlsFragDecrypted",
  1082. FRAG_PARSING_INIT_SEGMENT = "hlsFragParsingInitSegment",
  1083. FRAG_PARSING_USERDATA = "hlsFragParsingUserdata",
  1084. FRAG_PARSING_METADATA = "hlsFragParsingMetadata",
  1085. FRAG_PARSED = "hlsFragParsed",
  1086. FRAG_BUFFERED = "hlsFragBuffered",
  1087. FRAG_CHANGED = "hlsFragChanged",
  1088. FPS_DROP = "hlsFpsDrop",
  1089. FPS_DROP_LEVEL_CAPPING = "hlsFpsDropLevelCapping",
  1090. ERROR = "hlsError",
  1091. DESTROYING = "hlsDestroying",
  1092. KEY_LOADING = "hlsKeyLoading",
  1093. KEY_LOADED = "hlsKeyLoaded",
  1094. LIVE_BACK_BUFFER_REACHED = "hlsLiveBackBufferReached",
  1095. BACK_BUFFER_REACHED = "hlsBackBufferReached"
  1096. }
  1097. declare class EwmaBandWidthEstimator {
  1098. private defaultEstimate_;
  1099. private minWeight_;
  1100. private minDelayMs_;
  1101. private slow_;
  1102. private fast_;
  1103. constructor(slow: number, fast: number, defaultEstimate: number);
  1104. update(slow: number, fast: number): void;
  1105. sample(durationMs: number, numBytes: number): void;
  1106. canEstimate(): boolean;
  1107. getEstimate(): number;
  1108. destroy(): void;
  1109. }
  1110. declare type ExtendedSourceBuffer = SourceBuffer & {
  1111. ended?: boolean;
  1112. changeType?: (type: string) => void;
  1113. };
  1114. declare class FPSController implements ComponentAPI {
  1115. private hls;
  1116. private isVideoPlaybackQualityAvailable;
  1117. private timer?;
  1118. private media;
  1119. private lastTime;
  1120. private lastDroppedFrames;
  1121. private lastDecodedFrames;
  1122. private streamController;
  1123. constructor(hls: Hls);
  1124. setStreamController(streamController: StreamController): void;
  1125. protected registerListeners(): void;
  1126. protected unregisterListeners(): void;
  1127. destroy(): void;
  1128. protected onMediaAttaching(event: Events.MEDIA_ATTACHING, data: MediaAttachingData): void;
  1129. checkFPS(video: HTMLVideoElement, decodedFrames: number, droppedFrames: number): void;
  1130. checkFPSInterval(): void;
  1131. }
  1132. export declare type FPSControllerConfig = {
  1133. capLevelOnFPSDrop: boolean;
  1134. fpsDroppedMonitoringPeriod: number;
  1135. fpsDroppedMonitoringThreshold: number;
  1136. };
  1137. export declare interface FPSDropData {
  1138. currentDropped: number;
  1139. currentDecoded: number;
  1140. totalDroppedFrames: number;
  1141. }
  1142. export declare interface FPSDropLevelCappingData {
  1143. droppedLevel: number;
  1144. level: number;
  1145. }
  1146. export declare interface FragBufferedData {
  1147. stats: LoadStats;
  1148. frag: Fragment;
  1149. part: Part | null;
  1150. id: string;
  1151. }
  1152. export declare interface FragChangedData {
  1153. frag: Fragment;
  1154. }
  1155. export declare interface FragDecryptedData {
  1156. frag: Fragment;
  1157. payload: ArrayBuffer;
  1158. stats: {
  1159. tstart: number;
  1160. tdecrypt: number;
  1161. };
  1162. }
  1163. export declare interface FragLoadedData {
  1164. frag: Fragment;
  1165. part: Part | null;
  1166. payload: ArrayBuffer;
  1167. networkDetails: unknown;
  1168. }
  1169. export declare interface FragLoadEmergencyAbortedData {
  1170. frag: Fragment;
  1171. part: Part | null;
  1172. stats: LoaderStats;
  1173. }
  1174. export declare interface FragLoadingData {
  1175. frag: Fragment;
  1176. part?: Part;
  1177. targetBufferTime: number | null;
  1178. }
  1179. export declare class Fragment extends BaseSegment {
  1180. private _decryptdata;
  1181. rawProgramDateTime: string | null;
  1182. programDateTime: number | null;
  1183. tagList: Array<string[]>;
  1184. duration: number;
  1185. sn: number | 'initSegment';
  1186. levelkey?: LevelKey;
  1187. readonly type: PlaylistLevelType;
  1188. loader: Loader<FragmentLoaderContext> | null;
  1189. level: number;
  1190. cc: number;
  1191. startPTS?: number;
  1192. endPTS?: number;
  1193. appendedPTS?: number;
  1194. startDTS: number;
  1195. endDTS: number;
  1196. start: number;
  1197. deltaPTS?: number;
  1198. maxStartPTS?: number;
  1199. minEndPTS?: number;
  1200. stats: LoadStats;
  1201. urlId: number;
  1202. data?: Uint8Array;
  1203. bitrateTest: boolean;
  1204. title: string | null;
  1205. initSegment: Fragment | null;
  1206. constructor(type: PlaylistLevelType, baseurl: string);
  1207. get decryptdata(): LevelKey | null;
  1208. get end(): number;
  1209. get endProgramDateTime(): number | null;
  1210. get encrypted(): boolean;
  1211. /**
  1212. * Utility method for parseLevelPlaylist to create an initialization vector for a given segment
  1213. * @param {number} segmentNumber - segment number to generate IV with
  1214. * @returns {Uint8Array}
  1215. */
  1216. createInitializationVector(segmentNumber: number): Uint8Array;
  1217. /**
  1218. * Utility method for parseLevelPlaylist to get a fragment's decryption data from the currently parsed encryption key data
  1219. * @param levelkey - a playlist's encryption info
  1220. * @param segmentNumber - the fragment's segment number
  1221. * @returns {LevelKey} - an object to be applied as a fragment's decryptdata
  1222. */
  1223. setDecryptDataFromLevelKey(levelkey: LevelKey, segmentNumber: number): LevelKey;
  1224. setElementaryStreamInfo(type: ElementaryStreamTypes, startPTS: number, endPTS: number, startDTS: number, endDTS: number, partial?: boolean): void;
  1225. clearElementaryStreamInfo(): void;
  1226. }
  1227. declare class FragmentLoader {
  1228. private readonly config;
  1229. private loader;
  1230. private partLoadTimeout;
  1231. constructor(config: HlsConfig);
  1232. destroy(): void;
  1233. abort(): void;
  1234. load(frag: Fragment, onProgress?: FragmentLoadProgressCallback): Promise<FragLoadedData>;
  1235. loadPart(frag: Fragment, part: Part, onProgress: FragmentLoadProgressCallback): Promise<FragLoadedData>;
  1236. private updateStatsFromPart;
  1237. private resetLoader;
  1238. }
  1239. export declare type FragmentLoaderConfig = {
  1240. fLoader?: FragmentLoaderConstructor;
  1241. fragLoadingTimeOut: number;
  1242. fragLoadingMaxRetry: number;
  1243. fragLoadingRetryDelay: number;
  1244. fragLoadingMaxRetryTimeout: number;
  1245. };
  1246. export declare interface FragmentLoaderConstructor {
  1247. new (confg: HlsConfig): Loader<FragmentLoaderContext>;
  1248. }
  1249. export declare interface FragmentLoaderContext extends LoaderContext {
  1250. frag: Fragment;
  1251. part: Part | null;
  1252. }
  1253. declare type FragmentLoadProgressCallback = (result: FragLoadedData) => void;
  1254. declare enum FragmentState {
  1255. NOT_LOADED = "NOT_LOADED",
  1256. BACKTRACKED = "BACKTRACKED",
  1257. APPENDING = "APPENDING",
  1258. PARTIAL = "PARTIAL",
  1259. OK = "OK"
  1260. }
  1261. declare class FragmentTracker implements ComponentAPI {
  1262. private activeFragment;
  1263. private activeParts;
  1264. private fragments;
  1265. private timeRanges;
  1266. private bufferPadding;
  1267. private hls;
  1268. constructor(hls: Hls);
  1269. private _registerListeners;
  1270. private _unregisterListeners;
  1271. destroy(): void;
  1272. /**
  1273. * Return a Fragment with an appended range that matches the position and levelType.
  1274. * If not found any Fragment, return null
  1275. */
  1276. getAppendedFrag(position: number, levelType: PlaylistLevelType): Fragment | Part | null;
  1277. /**
  1278. * Return a buffered Fragment that matches the position and levelType.
  1279. * A buffered Fragment is one whose loading, parsing and appending is done (completed or "partial" meaning aborted).
  1280. * If not found any Fragment, return null
  1281. */
  1282. getBufferedFrag(position: number, levelType: PlaylistLevelType): Fragment | null;
  1283. /**
  1284. * Partial fragments effected by coded frame eviction will be removed
  1285. * The browser will unload parts of the buffer to free up memory for new buffer data
  1286. * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)
  1287. */
  1288. detectEvictedFragments(elementaryStream: SourceBufferName, timeRange: TimeRanges, playlistType?: PlaylistLevelType): void;
  1289. /**
  1290. * Checks if the fragment passed in is loaded in the buffer properly
  1291. * Partially loaded fragments will be registered as a partial fragment
  1292. */
  1293. private detectPartialFragments;
  1294. fragBuffered(frag: Fragment): void;
  1295. private getBufferedTimes;
  1296. /**
  1297. * Gets the partial fragment for a certain time
  1298. */
  1299. getPartialFragment(time: number): Fragment | null;
  1300. getState(fragment: Fragment): FragmentState;
  1301. backtrack(frag: Fragment, data?: FragLoadedData): FragLoadedData | null;
  1302. getBacktrackData(fragment: Fragment): FragLoadedData | null;
  1303. private isTimeBuffered;
  1304. private onFragLoaded;
  1305. private onBufferAppended;
  1306. private onFragBuffered;
  1307. private hasFragment;
  1308. removeFragmentsInRange(start: number, end: number, playlistType: PlaylistLevelType): void;
  1309. removeFragment(fragment: Fragment): void;
  1310. removeAllFragments(): void;
  1311. }
  1312. export declare interface FragParsedData {
  1313. frag: Fragment;
  1314. part: Part | null;
  1315. }
  1316. export declare interface FragParsingInitSegmentData {
  1317. }
  1318. export declare interface FragParsingMetadataData {
  1319. id: string;
  1320. frag: Fragment;
  1321. samples: MetadataSample[];
  1322. }
  1323. export declare interface FragParsingUserdataData {
  1324. id: string;
  1325. frag: Fragment;
  1326. samples: UserdataSample[];
  1327. }
  1328. /**
  1329. * @module Hls
  1330. * @class
  1331. * @constructor
  1332. */
  1333. declare class Hls implements HlsEventEmitter {
  1334. private static defaultConfig?;
  1335. readonly config: HlsConfig;
  1336. readonly userConfig: Partial<HlsConfig>;
  1337. private coreComponents;
  1338. private networkControllers;
  1339. private _emitter;
  1340. private _autoLevelCapping;
  1341. private abrController;
  1342. private bufferController;
  1343. private capLevelController;
  1344. private latencyController;
  1345. private levelController;
  1346. private streamController;
  1347. private audioTrackController;
  1348. private subtitleTrackController;
  1349. private emeController;
  1350. private cmcdController;
  1351. private _media;
  1352. private url;
  1353. static get version(): string;
  1354. static isSupported(): boolean;
  1355. static get Events(): typeof Events;
  1356. static get ErrorTypes(): typeof ErrorTypes;
  1357. static get ErrorDetails(): typeof ErrorDetails;
  1358. static get DefaultConfig(): HlsConfig;
  1359. /**
  1360. * @type {HlsConfig}
  1361. */
  1362. static set DefaultConfig(defaultConfig: HlsConfig);
  1363. /**
  1364. * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.
  1365. *
  1366. * @constructs Hls
  1367. * @param {HlsConfig} config
  1368. */
  1369. constructor(userConfig?: Partial<HlsConfig>);
  1370. createController(ControllerClass: any, fragmentTracker: any, components: any): any;
  1371. on<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1372. once<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1373. removeAllListeners<E extends keyof HlsListeners>(event?: E | undefined): void;
  1374. off<E extends keyof HlsListeners, Context = undefined>(event: E, listener?: HlsListeners[E] | undefined, context?: Context, once?: boolean | undefined): void;
  1375. listeners<E extends keyof HlsListeners>(event: E): HlsListeners[E][];
  1376. emit<E extends keyof HlsListeners>(event: E, name: E, eventObject: Parameters<HlsListeners[E]>[1]): boolean;
  1377. trigger<E extends keyof HlsListeners>(event: E, eventObject: Parameters<HlsListeners[E]>[1]): boolean;
  1378. listenerCount<E extends keyof HlsListeners>(event: E): number;
  1379. /**
  1380. * Dispose of the instance
  1381. */
  1382. destroy(): void;
  1383. /**
  1384. * Attaches Hls.js to a media element
  1385. * @param {HTMLMediaElement} media
  1386. */
  1387. attachMedia(media: HTMLMediaElement): void;
  1388. /**
  1389. * Detach Hls.js from the media
  1390. */
  1391. detachMedia(): void;
  1392. /**
  1393. * Set the source URL. Can be relative or absolute.
  1394. * @param {string} url
  1395. */
  1396. loadSource(url: string): void;
  1397. /**
  1398. * Start loading data from the stream source.
  1399. * Depending on default config, client starts loading automatically when a source is set.
  1400. *
  1401. * @param {number} startPosition Set the start position to stream from
  1402. * @default -1 None (from earliest point)
  1403. */
  1404. startLoad(startPosition?: number): void;
  1405. /**
  1406. * Stop loading of any stream data.
  1407. */
  1408. stopLoad(): void;
  1409. /**
  1410. * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)
  1411. */
  1412. swapAudioCodec(): void;
  1413. /**
  1414. * When the media-element fails, this allows to detach and then re-attach it
  1415. * as one call (convenience method).
  1416. *
  1417. * Automatic recovery of media-errors by this process is configurable.
  1418. */
  1419. recoverMediaError(): void;
  1420. removeLevel(levelIndex: any, urlId?: number): void;
  1421. /**
  1422. * @type {Level[]}
  1423. */
  1424. get levels(): Array<Level>;
  1425. /**
  1426. * Index of quality level currently played
  1427. * @type {number}
  1428. */
  1429. get currentLevel(): number;
  1430. /**
  1431. * Set quality level index immediately .
  1432. * This will flush the current buffer to replace the quality asap.
  1433. * That means playback will interrupt at least shortly to re-buffer and re-sync eventually.
  1434. * @type {number} -1 for automatic level selection
  1435. */
  1436. set currentLevel(newLevel: number);
  1437. /**
  1438. * Index of next quality level loaded as scheduled by stream controller.
  1439. * @type {number}
  1440. */
  1441. get nextLevel(): number;
  1442. /**
  1443. * Set quality level index for next loaded data.
  1444. * This will switch the video quality asap, without interrupting playback.
  1445. * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).
  1446. * @type {number} -1 for automatic level selection
  1447. */
  1448. set nextLevel(newLevel: number);
  1449. /**
  1450. * Return the quality level of the currently or last (of none is loaded currently) segment
  1451. * @type {number}
  1452. */
  1453. get loadLevel(): number;
  1454. /**
  1455. * Set quality level index for next loaded data in a conservative way.
  1456. * This will switch the quality without flushing, but interrupt current loading.
  1457. * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.
  1458. * @type {number} newLevel -1 for automatic level selection
  1459. */
  1460. set loadLevel(newLevel: number);
  1461. /**
  1462. * get next quality level loaded
  1463. * @type {number}
  1464. */
  1465. get nextLoadLevel(): number;
  1466. /**
  1467. * Set quality level of next loaded segment in a fully "non-destructive" way.
  1468. * Same as `loadLevel` but will wait for next switch (until current loading is done).
  1469. * @type {number} level
  1470. */
  1471. set nextLoadLevel(level: number);
  1472. /**
  1473. * Return "first level": like a default level, if not set,
  1474. * falls back to index of first level referenced in manifest
  1475. * @type {number}
  1476. */
  1477. get firstLevel(): number;
  1478. /**
  1479. * Sets "first-level", see getter.
  1480. * @type {number}
  1481. */
  1482. set firstLevel(newLevel: number);
  1483. /**
  1484. * Return start level (level of first fragment that will be played back)
  1485. * if not overrided by user, first level appearing in manifest will be used as start level
  1486. * if -1 : automatic start level selection, playback will start from level matching download bandwidth
  1487. * (determined from download of first segment)
  1488. * @type {number}
  1489. */
  1490. get startLevel(): number;
  1491. /**
  1492. * set start level (level of first fragment that will be played back)
  1493. * if not overrided by user, first level appearing in manifest will be used as start level
  1494. * if -1 : automatic start level selection, playback will start from level matching download bandwidth
  1495. * (determined from download of first segment)
  1496. * @type {number} newLevel
  1497. */
  1498. set startLevel(newLevel: number);
  1499. /**
  1500. * Get the current setting for capLevelToPlayerSize
  1501. *
  1502. * @type {boolean}
  1503. */
  1504. get capLevelToPlayerSize(): boolean;
  1505. /**
  1506. * set dynamically set capLevelToPlayerSize against (`CapLevelController`)
  1507. *
  1508. * @type {boolean}
  1509. */
  1510. set capLevelToPlayerSize(shouldStartCapping: boolean);
  1511. /**
  1512. * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)
  1513. * @type {number}
  1514. */
  1515. get autoLevelCapping(): number;
  1516. /**
  1517. * get bandwidth estimate
  1518. * @type {number}
  1519. */
  1520. get bandwidthEstimate(): number;
  1521. /**
  1522. * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)
  1523. * @type {number}
  1524. */
  1525. set autoLevelCapping(newLevel: number);
  1526. /**
  1527. * True when automatic level selection enabled
  1528. * @type {boolean}
  1529. */
  1530. get autoLevelEnabled(): boolean;
  1531. /**
  1532. * Level set manually (if any)
  1533. * @type {number}
  1534. */
  1535. get manualLevel(): number;
  1536. /**
  1537. * min level selectable in auto mode according to config.minAutoBitrate
  1538. * @type {number}
  1539. */
  1540. get minAutoLevel(): number;
  1541. /**
  1542. * max level selectable in auto mode according to autoLevelCapping
  1543. * @type {number}
  1544. */
  1545. get maxAutoLevel(): number;
  1546. /**
  1547. * next automatically selected quality level
  1548. * @type {number}
  1549. */
  1550. get nextAutoLevel(): number;
  1551. /**
  1552. * this setter is used to force next auto level.
  1553. * this is useful to force a switch down in auto mode:
  1554. * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)
  1555. * forced value is valid for one fragment. upon succesful frag loading at forced level,
  1556. * this value will be resetted to -1 by ABR controller.
  1557. * @type {number}
  1558. */
  1559. set nextAutoLevel(nextLevel: number);
  1560. /**
  1561. * @type {AudioTrack[]}
  1562. */
  1563. get audioTracks(): Array<MediaPlaylist>;
  1564. /**
  1565. * index of the selected audio track (index in audio track lists)
  1566. * @type {number}
  1567. */
  1568. get audioTrack(): number;
  1569. /**
  1570. * selects an audio track, based on its index in audio track lists
  1571. * @type {number}
  1572. */
  1573. set audioTrack(audioTrackId: number);
  1574. /**
  1575. * get alternate subtitle tracks list from playlist
  1576. * @type {MediaPlaylist[]}
  1577. */
  1578. get subtitleTracks(): Array<MediaPlaylist>;
  1579. /**
  1580. * index of the selected subtitle track (index in subtitle track lists)
  1581. * @type {number}
  1582. */
  1583. get subtitleTrack(): number;
  1584. get media(): HTMLMediaElement | null;
  1585. /**
  1586. * select an subtitle track, based on its index in subtitle track lists
  1587. * @type {number}
  1588. */
  1589. set subtitleTrack(subtitleTrackId: number);
  1590. /**
  1591. * @type {boolean}
  1592. */
  1593. get subtitleDisplay(): boolean;
  1594. /**
  1595. * Enable/disable subtitle display rendering
  1596. * @type {boolean}
  1597. */
  1598. set subtitleDisplay(value: boolean);
  1599. /**
  1600. * get mode for Low-Latency HLS loading
  1601. * @type {boolean}
  1602. */
  1603. get lowLatencyMode(): boolean;
  1604. /**
  1605. * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.
  1606. * @type {boolean}
  1607. */
  1608. set lowLatencyMode(mode: boolean);
  1609. /**
  1610. * position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)
  1611. * @type {number}
  1612. */
  1613. get liveSyncPosition(): number | null;
  1614. /**
  1615. * estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)
  1616. * returns 0 before first playlist is loaded
  1617. * @type {number}
  1618. */
  1619. get latency(): number;
  1620. /**
  1621. * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```
  1622. * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```
  1623. * returns 0 before first playlist is loaded
  1624. * @type {number}
  1625. */
  1626. get maxLatency(): number;
  1627. /**
  1628. * target distance from the edge as calculated by the latency controller
  1629. * @type {number}
  1630. */
  1631. get targetLatency(): number | null;
  1632. /**
  1633. * the rate at which the edge of the current live playlist is advancing or 1 if there is none
  1634. * @type {number}
  1635. */
  1636. get drift(): number | null;
  1637. /**
  1638. * set to true when startLoad is called before MANIFEST_PARSED event
  1639. * @type {boolean}
  1640. */
  1641. get forceStartLoad(): boolean;
  1642. }
  1643. export default Hls;
  1644. export declare interface HlsChunkPerformanceTiming extends HlsPerformanceTiming {
  1645. executeStart: number;
  1646. executeEnd: number;
  1647. }
  1648. export declare type HlsConfig = {
  1649. debug: boolean | ILogger;
  1650. enableWorker: boolean;
  1651. enableSoftwareAES: boolean;
  1652. minAutoBitrate: number;
  1653. loader: {
  1654. new (confg: HlsConfig): Loader<LoaderContext>;
  1655. };
  1656. fetchSetup?: (context: LoaderContext, initParams: any) => Request;
  1657. xhrSetup?: (xhr: XMLHttpRequest, url: string) => void;
  1658. audioStreamController?: typeof AudioStreamController;
  1659. audioTrackController?: typeof AudioTrackController;
  1660. subtitleStreamController?: typeof SubtitleStreamController;
  1661. subtitleTrackController?: typeof SubtitleTrackController;
  1662. timelineController?: typeof TimelineController;
  1663. emeController?: typeof EMEController;
  1664. cmcd?: CMCDControllerConfig;
  1665. cmcdController?: typeof CMCDController;
  1666. abrController: typeof AbrController;
  1667. bufferController: typeof BufferController;
  1668. capLevelController: typeof CapLevelController;
  1669. fpsController: typeof FPSController;
  1670. progressive: boolean;
  1671. lowLatencyMode: boolean;
  1672. } & ABRControllerConfig & BufferControllerConfig & CapLevelControllerConfig & EMEControllerConfig & FPSControllerConfig & FragmentLoaderConfig & LevelControllerConfig & MP4RemuxerConfig & PlaylistLoaderConfig & StreamControllerConfig & LatencyControllerConfig & TimelineControllerConfig & TSDemuxerConfig;
  1673. export declare interface HlsEventEmitter {
  1674. on<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1675. once<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1676. removeAllListeners<E extends keyof HlsListeners>(event?: E): void;
  1677. off<E extends keyof HlsListeners, Context = undefined>(event: E, listener?: HlsListeners[E], context?: Context, once?: boolean): void;
  1678. listeners<E extends keyof HlsListeners>(event: E): HlsListeners[E][];
  1679. emit<E extends keyof HlsListeners>(event: E, name: E, eventObject: Parameters<HlsListeners[E]>[1]): boolean;
  1680. listenerCount<E extends keyof HlsListeners>(event: E): number;
  1681. }
  1682. export declare interface HlsListeners {
  1683. [Events.MEDIA_ATTACHING]: (event: Events.MEDIA_ATTACHING, data: MediaAttachingData) => void;
  1684. [Events.MEDIA_ATTACHED]: (event: Events.MEDIA_ATTACHED, data: MediaAttachedData) => void;
  1685. [Events.MEDIA_DETACHING]: (event: Events.MEDIA_DETACHING) => void;
  1686. [Events.MEDIA_DETACHED]: (event: Events.MEDIA_DETACHED) => void;
  1687. [Events.BUFFER_RESET]: (event: Events.BUFFER_RESET) => void;
  1688. [Events.BUFFER_CODECS]: (event: Events.BUFFER_CODECS, data: BufferCodecsData) => void;
  1689. [Events.BUFFER_CREATED]: (event: Events.BUFFER_CREATED, data: BufferCreatedData) => void;
  1690. [Events.BUFFER_APPENDING]: (event: Events.BUFFER_APPENDING, data: BufferAppendingData) => void;
  1691. [Events.BUFFER_APPENDED]: (event: Events.BUFFER_APPENDED, data: BufferAppendedData) => void;
  1692. [Events.BUFFER_EOS]: (event: Events.BUFFER_EOS, data: BufferEOSData) => void;
  1693. [Events.BUFFER_FLUSHING]: (event: Events.BUFFER_FLUSHING, data: BufferFlushingData) => void;
  1694. [Events.BUFFER_FLUSHED]: (event: Events.BUFFER_FLUSHED, data: BufferFlushedData) => void;
  1695. [Events.MANIFEST_LOADING]: (event: Events.MANIFEST_LOADING, data: ManifestLoadingData) => void;
  1696. [Events.MANIFEST_LOADED]: (event: Events.MANIFEST_LOADED, data: ManifestLoadedData) => void;
  1697. [Events.MANIFEST_PARSED]: (event: Events.MANIFEST_PARSED, data: ManifestParsedData) => void;
  1698. [Events.LEVEL_SWITCHING]: (event: Events.LEVEL_SWITCHING, data: LevelSwitchingData) => void;
  1699. [Events.LEVEL_SWITCHED]: (event: Events.LEVEL_SWITCHED, data: LevelSwitchedData) => void;
  1700. [Events.LEVEL_LOADING]: (event: Events.LEVEL_LOADING, data: LevelLoadingData) => void;
  1701. [Events.LEVEL_LOADED]: (event: Events.LEVEL_LOADED, data: LevelLoadedData) => void;
  1702. [Events.LEVEL_UPDATED]: (event: Events.LEVEL_UPDATED, data: LevelUpdatedData) => void;
  1703. [Events.LEVEL_PTS_UPDATED]: (event: Events.LEVEL_PTS_UPDATED, data: LevelPTSUpdatedData) => void;
  1704. [Events.LEVELS_UPDATED]: (event: Events.LEVELS_UPDATED, data: LevelsUpdatedData) => void;
  1705. [Events.AUDIO_TRACKS_UPDATED]: (event: Events.AUDIO_TRACKS_UPDATED, data: AudioTracksUpdatedData) => void;
  1706. [Events.AUDIO_TRACK_SWITCHING]: (event: Events.AUDIO_TRACK_SWITCHING, data: AudioTrackSwitchingData) => void;
  1707. [Events.AUDIO_TRACK_SWITCHED]: (event: Events.AUDIO_TRACK_SWITCHED, data: AudioTrackSwitchedData) => void;
  1708. [Events.AUDIO_TRACK_LOADING]: (event: Events.AUDIO_TRACK_LOADING, data: TrackLoadingData) => void;
  1709. [Events.AUDIO_TRACK_LOADED]: (event: Events.AUDIO_TRACK_LOADED, data: AudioTrackLoadedData) => void;
  1710. [Events.SUBTITLE_TRACKS_UPDATED]: (event: Events.SUBTITLE_TRACKS_UPDATED, data: SubtitleTracksUpdatedData) => void;
  1711. [Events.SUBTITLE_TRACKS_CLEARED]: (event: Events.SUBTITLE_TRACKS_CLEARED) => void;
  1712. [Events.SUBTITLE_TRACK_SWITCH]: (event: Events.SUBTITLE_TRACK_SWITCH, data: SubtitleTrackSwitchData) => void;
  1713. [Events.SUBTITLE_TRACK_LOADING]: (event: Events.SUBTITLE_TRACK_LOADING, data: TrackLoadingData) => void;
  1714. [Events.SUBTITLE_TRACK_LOADED]: (event: Events.SUBTITLE_TRACK_LOADED, data: SubtitleTrackLoadedData) => void;
  1715. [Events.SUBTITLE_FRAG_PROCESSED]: (event: Events.SUBTITLE_FRAG_PROCESSED, data: SubtitleFragProcessedData) => void;
  1716. [Events.CUES_PARSED]: (event: Events.CUES_PARSED, data: CuesParsedData) => void;
  1717. [Events.NON_NATIVE_TEXT_TRACKS_FOUND]: (event: Events.NON_NATIVE_TEXT_TRACKS_FOUND, data: NonNativeTextTracksData) => void;
  1718. [Events.INIT_PTS_FOUND]: (event: Events.INIT_PTS_FOUND, data: InitPTSFoundData) => void;
  1719. [Events.FRAG_LOADING]: (event: Events.FRAG_LOADING, data: FragLoadingData) => void;
  1720. [Events.FRAG_LOAD_EMERGENCY_ABORTED]: (event: Events.FRAG_LOAD_EMERGENCY_ABORTED, data: FragLoadEmergencyAbortedData) => void;
  1721. [Events.FRAG_LOADED]: (event: Events.FRAG_LOADED, data: FragLoadedData) => void;
  1722. [Events.FRAG_DECRYPTED]: (event: Events.FRAG_DECRYPTED, data: FragDecryptedData) => void;
  1723. [Events.FRAG_PARSING_INIT_SEGMENT]: (event: Events.FRAG_PARSING_INIT_SEGMENT, data: FragParsingInitSegmentData) => void;
  1724. [Events.FRAG_PARSING_USERDATA]: (event: Events.FRAG_PARSING_USERDATA, data: FragParsingUserdataData) => void;
  1725. [Events.FRAG_PARSING_METADATA]: (event: Events.FRAG_PARSING_METADATA, data: FragParsingMetadataData) => void;
  1726. [Events.FRAG_PARSED]: (event: Events.FRAG_PARSED, data: FragParsedData) => void;
  1727. [Events.FRAG_BUFFERED]: (event: Events.FRAG_BUFFERED, data: FragBufferedData) => void;
  1728. [Events.FRAG_CHANGED]: (event: Events.FRAG_CHANGED, data: FragChangedData) => void;
  1729. [Events.FPS_DROP]: (event: Events.FPS_DROP, data: FPSDropData) => void;
  1730. [Events.FPS_DROP_LEVEL_CAPPING]: (event: Events.FPS_DROP_LEVEL_CAPPING, data: FPSDropLevelCappingData) => void;
  1731. [Events.ERROR]: (event: Events.ERROR, data: ErrorData) => void;
  1732. [Events.DESTROYING]: (event: Events.DESTROYING) => void;
  1733. [Events.KEY_LOADING]: (event: Events.KEY_LOADING, data: KeyLoadingData) => void;
  1734. [Events.KEY_LOADED]: (event: Events.KEY_LOADED, data: KeyLoadedData) => void;
  1735. [Events.LIVE_BACK_BUFFER_REACHED]: (event: Events.LIVE_BACK_BUFFER_REACHED, data: LiveBackBufferData) => void;
  1736. [Events.BACK_BUFFER_REACHED]: (event: Events.BACK_BUFFER_REACHED, data: BackBufferData) => void;
  1737. }
  1738. export declare interface HlsPerformanceTiming {
  1739. start: number;
  1740. end: number;
  1741. }
  1742. export declare interface HlsProgressivePerformanceTiming extends HlsPerformanceTiming {
  1743. first: number;
  1744. }
  1745. export declare enum HlsSkip {
  1746. No = "",
  1747. Yes = "YES",
  1748. v2 = "v2"
  1749. }
  1750. export declare class HlsUrlParameters {
  1751. msn?: number;
  1752. part?: number;
  1753. skip?: HlsSkip;
  1754. constructor(msn?: number, part?: number, skip?: HlsSkip);
  1755. addDirectives(uri: string): string | never;
  1756. }
  1757. declare interface ILogFunction {
  1758. (message?: any, ...optionalParams: any[]): void;
  1759. }
  1760. declare interface ILogger {
  1761. trace: ILogFunction;
  1762. debug: ILogFunction;
  1763. log: ILogFunction;
  1764. warn: ILogFunction;
  1765. info: ILogFunction;
  1766. error: ILogFunction;
  1767. }
  1768. export declare interface InitPTSFoundData {
  1769. id: string;
  1770. frag: Fragment;
  1771. initPTS: number;
  1772. timescale: number;
  1773. }
  1774. declare interface InitSegmentData {
  1775. tracks?: TrackSet;
  1776. initPTS: number | undefined;
  1777. timescale: number | undefined;
  1778. }
  1779. export declare interface KeyLoadedData {
  1780. frag: Fragment;
  1781. }
  1782. export declare interface KeyLoadingData {
  1783. frag: Fragment;
  1784. }
  1785. /**
  1786. * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess
  1787. */
  1788. export declare enum KeySystems {
  1789. WIDEVINE = "com.widevine.alpha",
  1790. PLAYREADY = "com.microsoft.playready"
  1791. }
  1792. export declare type LatencyControllerConfig = {
  1793. liveSyncDurationCount: number;
  1794. liveMaxLatencyDurationCount: number;
  1795. liveSyncDuration?: number;
  1796. liveMaxLatencyDuration?: number;
  1797. maxLiveSyncPlaybackRate: number;
  1798. };
  1799. export declare class Level {
  1800. readonly attrs: LevelAttributes;
  1801. readonly audioCodec: string | undefined;
  1802. readonly bitrate: number;
  1803. readonly codecSet: string;
  1804. readonly height: number;
  1805. readonly id: number;
  1806. readonly name: string | undefined;
  1807. readonly videoCodec: string | undefined;
  1808. readonly width: number;
  1809. readonly unknownCodecs: string[] | undefined;
  1810. audioGroupIds?: string[];
  1811. details?: LevelDetails;
  1812. fragmentError: number;
  1813. loadError: number;
  1814. loaded?: {
  1815. bytes: number;
  1816. duration: number;
  1817. };
  1818. realBitrate: number;
  1819. textGroupIds?: string[];
  1820. url: string[];
  1821. private _urlId;
  1822. constructor(data: LevelParsed);
  1823. get maxBitrate(): number;
  1824. get uri(): string;
  1825. get urlId(): number;
  1826. set urlId(value: number);
  1827. }
  1828. export declare interface LevelAttributes extends AttrList {
  1829. AUDIO?: string;
  1830. AUTOSELECT?: string;
  1831. 'AVERAGE-BANDWIDTH'?: string;
  1832. BANDWIDTH?: string;
  1833. BYTERANGE?: string;
  1834. 'CLOSED-CAPTIONS'?: string;
  1835. CODECS?: string;
  1836. DEFAULT?: string;
  1837. FORCED?: string;
  1838. 'FRAME-RATE'?: string;
  1839. LANGUAGE?: string;
  1840. NAME?: string;
  1841. 'PROGRAM-ID'?: string;
  1842. RESOLUTION?: string;
  1843. SUBTITLES?: string;
  1844. TYPE?: string;
  1845. URI?: string;
  1846. }
  1847. export declare type LevelControllerConfig = {
  1848. startLevel?: number;
  1849. };
  1850. export declare class LevelDetails {
  1851. PTSKnown: boolean;
  1852. alignedSliding: boolean;
  1853. averagetargetduration?: number;
  1854. endCC: number;
  1855. endSN: number;
  1856. fragments: Fragment[];
  1857. fragmentHint?: Fragment;
  1858. partList: Part[] | null;
  1859. live: boolean;
  1860. ageHeader: number;
  1861. advancedDateTime?: number;
  1862. updated: boolean;
  1863. advanced: boolean;
  1864. availabilityDelay?: number;
  1865. misses: number;
  1866. needSidxRanges: boolean;
  1867. startCC: number;
  1868. startSN: number;
  1869. startTimeOffset: number | null;
  1870. targetduration: number;
  1871. totalduration: number;
  1872. type: string | null;
  1873. url: string;
  1874. m3u8: string;
  1875. version: number | null;
  1876. canBlockReload: boolean;
  1877. canSkipUntil: number;
  1878. canSkipDateRanges: boolean;
  1879. skippedSegments: number;
  1880. recentlyRemovedDateranges?: string[];
  1881. partHoldBack: number;
  1882. holdBack: number;
  1883. partTarget: number;
  1884. preloadHint?: AttrList;
  1885. renditionReports?: AttrList[];
  1886. tuneInGoal: number;
  1887. deltaUpdateFailed?: boolean;
  1888. driftStartTime: number;
  1889. driftEndTime: number;
  1890. driftStart: number;
  1891. driftEnd: number;
  1892. constructor(baseUrl: any);
  1893. reloaded(previous: LevelDetails | undefined): void;
  1894. get hasProgramDateTime(): boolean;
  1895. get levelTargetDuration(): number;
  1896. get drift(): number;
  1897. get edge(): number;
  1898. get partEnd(): number;
  1899. get fragmentEnd(): number;
  1900. get age(): number;
  1901. get lastPartIndex(): number;
  1902. get lastPartSn(): number;
  1903. }
  1904. export declare class LevelKey {
  1905. private _uri;
  1906. method: string | null;
  1907. keyFormat: string | null;
  1908. keyFormatVersions: string | null;
  1909. keyID: string | null;
  1910. key: Uint8Array | null;
  1911. iv: Uint8Array | null;
  1912. static fromURL(baseUrl: string, relativeUrl: string): LevelKey;
  1913. static fromURI(uri: string): LevelKey;
  1914. private constructor();
  1915. get uri(): string | null;
  1916. }
  1917. export declare interface LevelLoadedData {
  1918. details: LevelDetails;
  1919. id: number;
  1920. level: number;
  1921. networkDetails: any;
  1922. stats: LoaderStats;
  1923. deliveryDirectives: HlsUrlParameters | null;
  1924. }
  1925. export declare interface LevelLoadingData {
  1926. id: number;
  1927. level: number;
  1928. url: string;
  1929. deliveryDirectives: HlsUrlParameters | null;
  1930. }
  1931. export declare interface LevelParsed {
  1932. attrs: LevelAttributes;
  1933. audioCodec?: string;
  1934. bitrate: number;
  1935. details?: LevelDetails;
  1936. height?: number;
  1937. id?: number;
  1938. level?: number;
  1939. name: string;
  1940. textCodec?: string;
  1941. unknownCodecs?: string[];
  1942. url: string;
  1943. videoCodec?: string;
  1944. width?: number;
  1945. }
  1946. export declare interface LevelPTSUpdatedData {
  1947. details: LevelDetails;
  1948. level: Level;
  1949. drift: number;
  1950. type: string;
  1951. frag: Fragment;
  1952. start: number;
  1953. end: number;
  1954. }
  1955. export declare interface LevelsUpdatedData {
  1956. levels: Array<Level>;
  1957. }
  1958. export declare interface LevelSwitchedData {
  1959. level: number;
  1960. }
  1961. export declare interface LevelSwitchingData extends Omit<Level, '_urlId'> {
  1962. level: number;
  1963. }
  1964. export declare interface LevelUpdatedData {
  1965. details: LevelDetails;
  1966. level: number;
  1967. }
  1968. /**
  1969. * Deprecated; please use BackBufferData
  1970. */
  1971. export declare interface LiveBackBufferData extends BackBufferData {
  1972. }
  1973. export declare interface Loader<T extends LoaderContext> {
  1974. destroy(): void;
  1975. abort(): void;
  1976. load(context: LoaderContext, config: LoaderConfiguration, callbacks: LoaderCallbacks<T>): void;
  1977. /**
  1978. * `getCacheAge()` is called by hls.js to get the duration that a given object
  1979. * has been sitting in a cache proxy when playing live. If implemented,
  1980. * this should return a value in seconds.
  1981. *
  1982. * For HTTP based loaders, this should return the contents of the "age" header.
  1983. *
  1984. * @returns time object being lodaded
  1985. */
  1986. getCacheAge?: () => number | null;
  1987. context: T;
  1988. stats: LoaderStats;
  1989. }
  1990. export declare interface LoaderCallbacks<T extends LoaderContext> {
  1991. onSuccess: LoaderOnSuccess<T>;
  1992. onError: LoaderOnError<T>;
  1993. onTimeout: LoaderOnTimeout<T>;
  1994. onAbort?: LoaderOnAbort<T>;
  1995. onProgress?: LoaderOnProgress<T>;
  1996. }
  1997. export declare interface LoaderConfiguration {
  1998. maxRetry: number;
  1999. timeout: number;
  2000. retryDelay: number;
  2001. maxRetryDelay: number;
  2002. highWaterMark: number;
  2003. }
  2004. export declare interface LoaderContext {
  2005. url: string;
  2006. responseType: string;
  2007. headers?: Record<string, string>;
  2008. rangeStart?: number;
  2009. rangeEnd?: number;
  2010. progressData?: boolean;
  2011. }
  2012. export declare type LoaderOnAbort<T extends LoaderContext> = (stats: LoaderStats, context: T, networkDetails: any) => void;
  2013. export declare type LoaderOnError<T extends LoaderContext> = (error: {
  2014. code: number;
  2015. text: string;
  2016. }, context: T, networkDetails: any) => void;
  2017. export declare type LoaderOnProgress<T extends LoaderContext> = (stats: LoaderStats, context: T, data: string | ArrayBuffer, networkDetails: any) => void;
  2018. export declare type LoaderOnSuccess<T extends LoaderContext> = (response: LoaderResponse, stats: LoaderStats, context: T, networkDetails: any) => void;
  2019. export declare type LoaderOnTimeout<T extends LoaderContext> = (stats: LoaderStats, context: T, networkDetails: any) => void;
  2020. export declare interface LoaderResponse {
  2021. url: string;
  2022. data: string | ArrayBuffer;
  2023. }
  2024. export declare interface LoaderStats {
  2025. aborted: boolean;
  2026. loaded: number;
  2027. retry: number;
  2028. total: number;
  2029. chunkCount: number;
  2030. bwEstimate: number;
  2031. loading: HlsProgressivePerformanceTiming;
  2032. parsing: HlsPerformanceTiming;
  2033. buffering: HlsProgressivePerformanceTiming;
  2034. }
  2035. export declare class LoadStats implements LoaderStats {
  2036. aborted: boolean;
  2037. loaded: number;
  2038. retry: number;
  2039. total: number;
  2040. chunkCount: number;
  2041. bwEstimate: number;
  2042. loading: HlsProgressivePerformanceTiming;
  2043. parsing: HlsPerformanceTiming;
  2044. buffering: HlsProgressivePerformanceTiming;
  2045. }
  2046. export declare type MainPlaylistType = AudioPlaylistType | 'VIDEO';
  2047. export declare interface ManifestLoadedData {
  2048. audioTracks: MediaPlaylist[];
  2049. captions?: MediaPlaylist[];
  2050. levels: LevelParsed[];
  2051. networkDetails: any;
  2052. sessionData: Record<string, AttrList> | null;
  2053. stats: LoaderStats;
  2054. subtitles?: MediaPlaylist[];
  2055. url: string;
  2056. }
  2057. export declare interface ManifestLoadingData {
  2058. url: string;
  2059. }
  2060. export declare interface ManifestParsedData {
  2061. levels: Level[];
  2062. audioTracks: MediaPlaylist[];
  2063. subtitleTracks: MediaPlaylist[];
  2064. firstLevel: number;
  2065. stats: LoaderStats;
  2066. audio: boolean;
  2067. video: boolean;
  2068. altAudio: boolean;
  2069. }
  2070. export declare interface MediaAttachedData {
  2071. media: HTMLMediaElement;
  2072. }
  2073. export declare interface MediaAttachingData {
  2074. media: HTMLMediaElement;
  2075. }
  2076. export declare type MediaKeyFunc = (keySystem: KeySystems, supportedConfigurations: MediaKeySystemConfiguration[]) => Promise<MediaKeySystemAccess>;
  2077. export declare interface MediaPlaylist extends LevelParsed {
  2078. autoselect: boolean;
  2079. default: boolean;
  2080. forced: boolean;
  2081. groupId?: string;
  2082. id: number;
  2083. instreamId?: string;
  2084. lang?: string;
  2085. name: string;
  2086. type: MediaPlaylistType | 'main';
  2087. }
  2088. export declare type MediaPlaylistType = MainPlaylistType | SubtitlePlaylistType;
  2089. export declare interface MetadataSample {
  2090. pts: number;
  2091. dts: number;
  2092. len?: number;
  2093. data: Uint8Array;
  2094. }
  2095. export declare type MP4RemuxerConfig = {
  2096. stretchShortVideoTrack: boolean;
  2097. maxAudioFramesDrift: number;
  2098. };
  2099. declare interface NetworkComponentAPI extends ComponentAPI {
  2100. startLoad(startPosition: number): void;
  2101. stopLoad(): void;
  2102. }
  2103. export declare interface NonNativeTextTrack {
  2104. _id?: string;
  2105. label: any;
  2106. kind: string;
  2107. default: boolean;
  2108. closedCaptions?: MediaPlaylist;
  2109. subtitleTrack?: MediaPlaylist;
  2110. }
  2111. export declare interface NonNativeTextTracksData {
  2112. tracks: Array<NonNativeTextTrack>;
  2113. }
  2114. declare interface PACData {
  2115. row: number;
  2116. indent: number | null;
  2117. color: string | null;
  2118. underline: boolean;
  2119. italics: boolean;
  2120. }
  2121. export declare class Part extends BaseSegment {
  2122. readonly fragOffset: number;
  2123. readonly duration: number;
  2124. readonly gap: boolean;
  2125. readonly independent: boolean;
  2126. readonly relurl: string;
  2127. readonly fragment: Fragment;
  2128. readonly index: number;
  2129. stats: LoadStats;
  2130. constructor(partAttrs: AttrList, frag: Fragment, baseurl: string, index: number, previous?: Part);
  2131. get start(): number;
  2132. get end(): number;
  2133. get loaded(): boolean;
  2134. }
  2135. declare interface PartsLoadedData {
  2136. frag: Fragment;
  2137. part: Part | null;
  2138. partsLoaded?: FragLoadedData[];
  2139. }
  2140. declare class PenState {
  2141. foreground: string;
  2142. underline: boolean;
  2143. italics: boolean;
  2144. background: string;
  2145. flash: boolean;
  2146. constructor(foreground?: string, underline?: boolean, italics?: boolean, background?: string, flash?: boolean);
  2147. reset(): void;
  2148. setStyles(styles: Partial<PenStyles>): void;
  2149. isDefault(): boolean;
  2150. equals(other: PenState): boolean;
  2151. copy(newPenState: PenState): void;
  2152. toString(): string;
  2153. }
  2154. declare type PenStyles = {
  2155. foreground: string | null;
  2156. underline: boolean;
  2157. italics: boolean;
  2158. background: string;
  2159. flash: boolean;
  2160. };
  2161. export declare enum PlaylistContextType {
  2162. MANIFEST = "manifest",
  2163. LEVEL = "level",
  2164. AUDIO_TRACK = "audioTrack",
  2165. SUBTITLE_TRACK = "subtitleTrack"
  2166. }
  2167. export declare enum PlaylistLevelType {
  2168. MAIN = "main",
  2169. AUDIO = "audio",
  2170. SUBTITLE = "subtitle"
  2171. }
  2172. export declare type PlaylistLoaderConfig = {
  2173. pLoader?: PlaylistLoaderConstructor;
  2174. manifestLoadingTimeOut: number;
  2175. manifestLoadingMaxRetry: number;
  2176. manifestLoadingRetryDelay: number;
  2177. manifestLoadingMaxRetryTimeout: number;
  2178. levelLoadingTimeOut: number;
  2179. levelLoadingMaxRetry: number;
  2180. levelLoadingRetryDelay: number;
  2181. levelLoadingMaxRetryTimeout: number;
  2182. };
  2183. export declare interface PlaylistLoaderConstructor {
  2184. new (confg: HlsConfig): Loader<PlaylistLoaderContext>;
  2185. }
  2186. export declare interface PlaylistLoaderContext extends LoaderContext {
  2187. loader?: Loader<PlaylistLoaderContext>;
  2188. type: PlaylistContextType;
  2189. level: number | null;
  2190. id: number | null;
  2191. groupId: string | null;
  2192. isSidxRequest?: boolean;
  2193. levelDetails?: LevelDetails;
  2194. deliveryDirectives: HlsUrlParameters | null;
  2195. }
  2196. declare interface RemuxedMetadata {
  2197. samples: MetadataSample[];
  2198. }
  2199. declare interface RemuxedTrack {
  2200. data1: Uint8Array;
  2201. data2?: Uint8Array;
  2202. startPTS: number;
  2203. endPTS: number;
  2204. startDTS: number;
  2205. endDTS: number;
  2206. type: SourceBufferName;
  2207. hasAudio: boolean;
  2208. hasVideo: boolean;
  2209. independent?: boolean;
  2210. firstKeyFrame?: number;
  2211. nb: number;
  2212. transferredData1?: ArrayBuffer;
  2213. transferredData2?: ArrayBuffer;
  2214. dropped?: number;
  2215. }
  2216. declare interface RemuxedUserdata {
  2217. samples: UserdataSample[];
  2218. }
  2219. declare interface RemuxerResult {
  2220. audio?: RemuxedTrack;
  2221. video?: RemuxedTrack;
  2222. text?: RemuxedUserdata;
  2223. id3?: RemuxedMetadata;
  2224. initSegment?: InitSegmentData;
  2225. independent?: boolean;
  2226. }
  2227. /**
  2228. * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.
  2229. * @constructor
  2230. */
  2231. declare class Row {
  2232. chars: StyledUnicodeChar[];
  2233. pos: number;
  2234. currPenState: PenState;
  2235. cueStartTime?: number;
  2236. logger: CaptionsLogger;
  2237. constructor(logger: CaptionsLogger);
  2238. equals(other: Row): boolean;
  2239. copy(other: Row): void;
  2240. isEmpty(): boolean;
  2241. /**
  2242. * Set the cursor to a valid column.
  2243. */
  2244. setCursor(absPos: number): void;
  2245. /**
  2246. * Move the cursor relative to current position.
  2247. */
  2248. moveCursor(relPos: number): void;
  2249. /**
  2250. * Backspace, move one step back and clear character.
  2251. */
  2252. backSpace(): void;
  2253. insertChar(byte: number): void;
  2254. clearFromPos(startPos: number): void;
  2255. clear(): void;
  2256. clearToEndOfRow(): void;
  2257. getTextString(): string;
  2258. setPenStyles(styles: Partial<PenStyles>): void;
  2259. }
  2260. export declare type SourceBufferName = 'video' | 'audio' | 'audiovideo';
  2261. declare type SourceBuffers = Partial<Record<SourceBufferName, ExtendedSourceBuffer>>;
  2262. declare class StreamController extends BaseStreamController implements NetworkComponentAPI {
  2263. private audioCodecSwap;
  2264. private gapController;
  2265. private level;
  2266. private _forceStartLoad;
  2267. private altAudio;
  2268. private audioOnly;
  2269. private fragPlaying;
  2270. private onvplaying;
  2271. private onvseeked;
  2272. private fragLastKbps;
  2273. private stalled;
  2274. private couldBacktrack;
  2275. private audioCodecSwitch;
  2276. private videoBuffer;
  2277. constructor(hls: Hls, fragmentTracker: FragmentTracker);
  2278. private _registerListeners;
  2279. protected _unregisterListeners(): void;
  2280. protected onHandlerDestroying(): void;
  2281. startLoad(startPosition: number): void;
  2282. stopLoad(): void;
  2283. protected doTick(): void;
  2284. protected onTickEnd(): void;
  2285. private doTickIdle;
  2286. protected loadFragment(frag: Fragment, levelDetails: LevelDetails, targetBufferTime: number): void;
  2287. private getAppendedFrag;
  2288. private getBufferedFrag;
  2289. private followingBufferedFrag;
  2290. immediateLevelSwitch(): void;
  2291. /**
  2292. * try to switch ASAP without breaking video playback:
  2293. * in order to ensure smooth but quick level switching,
  2294. * we need to find the next flushable buffer range
  2295. * we should take into account new segment fetch time
  2296. */
  2297. nextLevelSwitch(): void;
  2298. private abortCurrentFrag;
  2299. protected flushMainBuffer(startOffset: number, endOffset: number): void;
  2300. protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;
  2301. protected onMediaDetaching(): void;
  2302. private onMediaPlaying;
  2303. private onMediaSeeked;
  2304. private onManifestLoading;
  2305. private onManifestParsed;
  2306. private onLevelLoading;
  2307. private onLevelLoaded;
  2308. protected _handleFragmentLoadProgress(data: FragLoadedData): void;
  2309. private onAudioTrackSwitching;
  2310. private onAudioTrackSwitched;
  2311. private onBufferCreated;
  2312. private onFragBuffered;
  2313. private onError;
  2314. private checkBuffer;
  2315. private onFragLoadEmergencyAborted;
  2316. private onBufferFlushed;
  2317. private onLevelsUpdated;
  2318. swapAudioCodec(): void;
  2319. /**
  2320. * Seeks to the set startPosition if not equal to the mediaElement's current time.
  2321. * @private
  2322. */
  2323. private seekToStartPos;
  2324. private _getAudioCodec;
  2325. private _loadBitrateTestFrag;
  2326. private _handleTransmuxComplete;
  2327. private _bufferInitSegment;
  2328. private backtrack;
  2329. private checkFragmentChanged;
  2330. get nextLevel(): number;
  2331. get currentLevel(): number;
  2332. get nextBufferedFrag(): Fragment | null;
  2333. get forceStartLoad(): boolean;
  2334. }
  2335. export declare type StreamControllerConfig = {
  2336. autoStartLoad: boolean;
  2337. startPosition: number;
  2338. defaultAudioCodec?: string;
  2339. initialLiveManifestSize: number;
  2340. maxBufferLength: number;
  2341. maxBufferSize: number;
  2342. maxBufferHole: number;
  2343. highBufferWatchdogPeriod: number;
  2344. nudgeOffset: number;
  2345. nudgeMaxRetry: number;
  2346. maxFragLookUpTolerance: number;
  2347. maxMaxBufferLength: number;
  2348. startFragPrefetch: boolean;
  2349. testBandwidth: boolean;
  2350. };
  2351. /**
  2352. * Unicode character with styling and background.
  2353. * @constructor
  2354. */
  2355. declare class StyledUnicodeChar {
  2356. uchar: string;
  2357. penState: PenState;
  2358. constructor(uchar?: string, foreground?: string, underline?: boolean, italics?: boolean, background?: string, flash?: boolean);
  2359. reset(): void;
  2360. setChar(uchar: string, newPenState: PenState): void;
  2361. setPenState(newPenState: PenState): void;
  2362. equals(other: StyledUnicodeChar): boolean;
  2363. copy(newChar: StyledUnicodeChar): void;
  2364. isEmpty(): boolean;
  2365. }
  2366. declare interface SubtitleFragProcessed {
  2367. success: boolean;
  2368. frag: Fragment;
  2369. }
  2370. export declare interface SubtitleFragProcessedData {
  2371. success: boolean;
  2372. frag: Fragment;
  2373. error?: Error;
  2374. }
  2375. export declare type SubtitlePlaylistType = 'SUBTITLES' | 'CLOSED-CAPTIONS';
  2376. declare class SubtitleStreamController extends BaseStreamController implements NetworkComponentAPI {
  2377. protected levels: Array<Level>;
  2378. private currentTrackId;
  2379. private tracksBuffered;
  2380. private mainDetails;
  2381. constructor(hls: Hls, fragmentTracker: FragmentTracker);
  2382. protected onHandlerDestroying(): void;
  2383. private _registerListeners;
  2384. private _unregisterListeners;
  2385. startLoad(): void;
  2386. onManifestLoading(): void;
  2387. onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData): void;
  2388. onSubtitleFragProcessed(event: Events.SUBTITLE_FRAG_PROCESSED, data: SubtitleFragProcessed): void;
  2389. onBufferFlushing(event: Events.BUFFER_FLUSHING, data: BufferFlushingData): void;
  2390. onError(event: Events.ERROR, data: ErrorData): void;
  2391. onSubtitleTracksUpdated(event: Events.SUBTITLE_TRACKS_UPDATED, { subtitleTracks }: SubtitleTracksUpdatedData): void;
  2392. onSubtitleTrackSwitch(event: Events.SUBTITLE_TRACK_SWITCH, data: TrackSwitchedData): void;
  2393. onSubtitleTrackLoaded(event: Events.SUBTITLE_TRACK_LOADED, data: TrackLoadedData): void;
  2394. _handleFragmentLoadComplete(fragLoadedData: FragLoadedData): void;
  2395. doTick(): void;
  2396. protected loadFragment(frag: Fragment, levelDetails: LevelDetails, targetBufferTime: number): void;
  2397. get mediaBufferTimeRanges(): TimeRange[];
  2398. }
  2399. declare class SubtitleTrackController extends BasePlaylistController {
  2400. private media;
  2401. private tracks;
  2402. private groupId;
  2403. private tracksInGroup;
  2404. private trackId;
  2405. private selectDefaultTrack;
  2406. private queuedDefaultTrack;
  2407. private trackChangeListener;
  2408. private asyncPollTrackChange;
  2409. private useTextTrackPolling;
  2410. private subtitlePollingInterval;
  2411. subtitleDisplay: boolean;
  2412. constructor(hls: Hls);
  2413. destroy(): void;
  2414. private registerListeners;
  2415. private unregisterListeners;
  2416. protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;
  2417. private pollTrackChange;
  2418. protected onMediaDetaching(): void;
  2419. protected onManifestLoading(): void;
  2420. protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;
  2421. protected onSubtitleTrackLoaded(event: Events.SUBTITLE_TRACK_LOADED, data: TrackLoadedData): void;
  2422. protected onLevelLoading(event: Events.LEVEL_LOADING, data: LevelLoadingData): void;
  2423. protected onLevelSwitching(event: Events.LEVEL_SWITCHING, data: LevelSwitchingData): void;
  2424. private switchLevel;
  2425. private findTrackId;
  2426. protected onError(event: Events.ERROR, data: ErrorData): void;
  2427. /** get alternate subtitle tracks list from playlist **/
  2428. get subtitleTracks(): MediaPlaylist[];
  2429. /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/
  2430. get subtitleTrack(): number;
  2431. set subtitleTrack(newId: number);
  2432. protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void;
  2433. /**
  2434. * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.
  2435. * This operates on the DOM textTracks.
  2436. * A value of -1 will disable all subtitle tracks.
  2437. */
  2438. private toggleTrackModes;
  2439. /**
  2440. * This method is responsible for validating the subtitle index and periodically reloading if live.
  2441. * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.
  2442. */
  2443. private setSubtitleTrack;
  2444. private onTextTracksChanged;
  2445. }
  2446. export declare interface SubtitleTrackLoadedData extends TrackLoadedData {
  2447. }
  2448. export declare interface SubtitleTracksUpdatedData {
  2449. subtitleTracks: MediaPlaylist[];
  2450. }
  2451. export declare interface SubtitleTrackSwitchData {
  2452. id: number;
  2453. name?: string;
  2454. groupId?: string;
  2455. type?: MediaPlaylistType | 'main';
  2456. url?: string;
  2457. }
  2458. /**
  2459. * Sub-class specialization of EventHandler base class.
  2460. *
  2461. * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop,
  2462. * scheduled asynchroneously, avoiding recursive calls in the same tick.
  2463. *
  2464. * The task itself is implemented in `doTick`. It can be requested and called for single execution
  2465. * using the `tick` method.
  2466. *
  2467. * It will be assured that the task execution method (`tick`) only gets called once per main loop "tick",
  2468. * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly.
  2469. *
  2470. * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`,
  2471. * and cancelled with `clearNextTick`.
  2472. *
  2473. * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`).
  2474. *
  2475. * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine.
  2476. *
  2477. * Further explanations:
  2478. *
  2479. * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously
  2480. * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks.
  2481. *
  2482. * When the task execution (`tick` method) is called in re-entrant way this is detected and
  2483. * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further
  2484. * task processing on the next main loop iteration (also known as "next tick" in the Node/JS runtime lingo).
  2485. */
  2486. declare class TaskLoop {
  2487. private readonly _boundTick;
  2488. private _tickTimer;
  2489. private _tickInterval;
  2490. private _tickCallCount;
  2491. constructor();
  2492. destroy(): void;
  2493. protected onHandlerDestroying(): void;
  2494. protected onHandlerDestroyed(): void;
  2495. /**
  2496. * @returns {boolean}
  2497. */
  2498. hasInterval(): boolean;
  2499. /**
  2500. * @returns {boolean}
  2501. */
  2502. hasNextTick(): boolean;
  2503. /**
  2504. * @param {number} millis Interval time (ms)
  2505. * @returns {boolean} True when interval has been scheduled, false when already scheduled (no effect)
  2506. */
  2507. setInterval(millis: number): boolean;
  2508. /**
  2509. * @returns {boolean} True when interval was cleared, false when none was set (no effect)
  2510. */
  2511. clearInterval(): boolean;
  2512. /**
  2513. * @returns {boolean} True when timeout was cleared, false when none was set (no effect)
  2514. */
  2515. clearNextTick(): boolean;
  2516. /**
  2517. * Will call the subclass doTick implementation in this main loop tick
  2518. * or in the next one (via setTimeout(,0)) in case it has already been called
  2519. * in this tick (in case this is a re-entrant call).
  2520. */
  2521. tick(): void;
  2522. tickImmediate(): void;
  2523. /**
  2524. * For subclass to implement task logic
  2525. * @abstract
  2526. */
  2527. protected doTick(): void;
  2528. }
  2529. declare class TimelineController implements ComponentAPI {
  2530. private hls;
  2531. private media;
  2532. private config;
  2533. private enabled;
  2534. private Cues;
  2535. private textTracks;
  2536. private tracks;
  2537. private initPTS;
  2538. private timescale;
  2539. private unparsedVttFrags;
  2540. private captionsTracks;
  2541. private nonNativeCaptionsTracks;
  2542. private cea608Parser1;
  2543. private cea608Parser2;
  2544. private lastSn;
  2545. private prevCC;
  2546. private vttCCs;
  2547. private captionsProperties;
  2548. constructor(hls: Hls);
  2549. destroy(): void;
  2550. addCues(trackName: string, startTime: number, endTime: number, screen: CaptionScreen, cueRanges: Array<[number, number]>): void;
  2551. private onInitPtsFound;
  2552. private getExistingTrack;
  2553. createCaptionsTrack(trackName: string): void;
  2554. private createNativeTrack;
  2555. private createNonNativeTrack;
  2556. private createTextTrack;
  2557. private onMediaAttaching;
  2558. private onMediaDetaching;
  2559. private onManifestLoading;
  2560. private _cleanTracks;
  2561. private onSubtitleTracksUpdated;
  2562. private onManifestLoaded;
  2563. private onFragLoading;
  2564. private onFragLoaded;
  2565. private _parseIMSC1;
  2566. private _parseVTTs;
  2567. private _fallbackToIMSC1;
  2568. private _appendCues;
  2569. private onFragDecrypted;
  2570. private onSubtitleTracksCleared;
  2571. private onFragParsingUserdata;
  2572. onBufferFlushing(event: Events.BUFFER_FLUSHING, { startOffset, endOffset, endOffsetSubtitles, type }: BufferFlushingData): void;
  2573. private extractCea608Data;
  2574. }
  2575. export declare type TimelineControllerConfig = {
  2576. cueHandler: CuesInterface;
  2577. enableCEA708Captions: boolean;
  2578. enableWebVTT: boolean;
  2579. enableIMSC1: boolean;
  2580. captionsTextTrack1Label: string;
  2581. captionsTextTrack1LanguageCode: string;
  2582. captionsTextTrack2Label: string;
  2583. captionsTextTrack2LanguageCode: string;
  2584. captionsTextTrack3Label: string;
  2585. captionsTextTrack3LanguageCode: string;
  2586. captionsTextTrack4Label: string;
  2587. captionsTextTrack4LanguageCode: string;
  2588. renderTextTracksNatively: boolean;
  2589. };
  2590. declare interface TimeRange {
  2591. start: number;
  2592. end: number;
  2593. }
  2594. export declare interface Track {
  2595. id: 'audio' | 'main';
  2596. buffer?: SourceBuffer;
  2597. container: string;
  2598. codec?: string;
  2599. initSegment?: Uint8Array;
  2600. levelCodec?: string;
  2601. metadata?: any;
  2602. }
  2603. export declare interface TrackLoadedData {
  2604. details: LevelDetails;
  2605. id: number;
  2606. groupId: string;
  2607. networkDetails: any;
  2608. stats: LoaderStats;
  2609. deliveryDirectives: HlsUrlParameters | null;
  2610. }
  2611. export declare interface TrackLoadingData {
  2612. id: number;
  2613. groupId: string;
  2614. url: string;
  2615. deliveryDirectives: HlsUrlParameters | null;
  2616. }
  2617. export declare interface TrackSet {
  2618. audio?: Track;
  2619. video?: Track;
  2620. audiovideo?: Track;
  2621. }
  2622. declare interface TrackSwitchedData {
  2623. id: number;
  2624. }
  2625. declare class TransmuxerInterface {
  2626. private hls;
  2627. private id;
  2628. private observer;
  2629. private frag;
  2630. private part;
  2631. private worker;
  2632. private onwmsg?;
  2633. private transmuxer;
  2634. private onTransmuxComplete;
  2635. private onFlush;
  2636. constructor(hls: Hls, id: PlaylistLevelType, onTransmuxComplete: (transmuxResult: TransmuxerResult) => void, onFlush: (chunkMeta: ChunkMetadata) => void);
  2637. destroy(): void;
  2638. push(data: ArrayBuffer, initSegmentData: Uint8Array | undefined, audioCodec: string | undefined, videoCodec: string | undefined, frag: Fragment, part: Part | null, duration: number, accurateTimeOffset: boolean, chunkMeta: ChunkMetadata, defaultInitPTS?: number): void;
  2639. flush(chunkMeta: ChunkMetadata): void;
  2640. private handleFlushResult;
  2641. private onWorkerMessage;
  2642. private configureTransmuxer;
  2643. private handleTransmuxComplete;
  2644. }
  2645. declare interface TransmuxerResult {
  2646. remuxResult: RemuxerResult;
  2647. chunkMeta: ChunkMetadata;
  2648. }
  2649. export declare type TSDemuxerConfig = {
  2650. forceKeyFrameOnDiscontinuity: boolean;
  2651. };
  2652. export declare interface UserdataSample {
  2653. pts: number;
  2654. bytes: Uint8Array;
  2655. }
  2656. declare enum VerboseLevel {
  2657. ERROR = 0,
  2658. TEXT = 1,
  2659. WARNING = 2,
  2660. INFO = 2,
  2661. DEBUG = 3,
  2662. DATA = 3
  2663. }
  2664. export { }