UNPKG

@100mslive/hls-player

Version:

HLS client library which uses HTML5 Video element and Media Source Extension for playback

111 lines (110 loc) 3.88 kB
import { HlsPlayerStats } from '@100mslive/hls-stats'; import { HMSHLSException } from '../error/HMSHLSException'; import { HMSHLSPlayerListeners, IHMSHLSPlayerEventEmitter } from '../interfaces/events'; import { HMSHLSLayer } from '../interfaces/IHMSHLSLayer'; import IHMSHLSPlayer from '../interfaces/IHMSHLSPlayer'; import { HMSHLSPlayerEvents } from '../utilies/constants'; export declare class HMSHLSPlayer implements IHMSHLSPlayer, IHMSHLSPlayerEventEmitter { private _hls; private _hlsUrl; private _hlsStats; private _videoEl; private _emitter; private _subscribeHlsStats?; private _isLive; private _volume; private _metaData; private readonly TAG; /** * Initiliaze the player with hlsUrl and video element * @remarks If video element is not passed, we will create one and call a method getVideoElement get element * @param hlsUrl required - Pass hls url to * @param videoEl optional field - HTML video element */ constructor(hlsUrl: string, videoEl?: HTMLVideoElement); /** * @remarks It will create a video element with playiniline true. * @returns HTML video element */ private createVideoElement; /** * @returns get html video element */ getVideoElement(): HTMLVideoElement; /** * Subscribe to hls stats */ private subscribeStats; /** * Unsubscribe to hls stats */ private unsubscribeStats; reset(): void; on: <E extends HMSHLSPlayerEvents>(eventName: E, listener: HMSHLSPlayerListeners<E>) => void; off: <E extends HMSHLSPlayerEvents>(eventName: E, listener: HMSHLSPlayerListeners<E>) => void; emitEvent: <E extends HMSHLSPlayerEvents>(eventName: E, eventObject: { "seek-pos-behind-live-edge": import("../interfaces/events").HMSHLSStreamLive; "timed-metadata": import("../interfaces/events").HMSHLSCue; stats: HlsPlayerStats; "playback-state": import("../interfaces/events").HMSHLSPlaybackState; "caption-enabled": boolean; error: HMSHLSException; "current-time": number; "autoplay-blocked": HMSHLSException; "manifest-loaded": import("../interfaces/events").HMSHLSManifestLoaded; "layer-updated": import("../interfaces/events").HMSHLSLayerUpdated; }[E]) => boolean; private removeAllListeners; get volume(): number; setVolume(volume: number): void; getLayer(): HMSHLSLayer | null; setLayer(layer: HMSHLSLayer): void; /** * set current stream to Live */ seekToLivePosition(): Promise<void>; /** * Play stream */ play: () => Promise<void>; /** * Pause stream */ pause: () => void; /** * It will update the video element current time * @param seekValue Pass currentTime in second */ seekTo: (seekValue: number) => void; hasCaptions: () => boolean; toggleCaption: () => void; private playVideo; private pauseVideo; private playEventHandler; private pauseEventHandler; private volumeEventHandler; private reConnectToStream; private handleHLSException; private manifestLoadedHandler; private levelUpdatedHandler; private handleTimeUpdateListener; /** * Listen to hlsjs and video related events */ private listenHLSEvent; /** * 1 min retries before user came online, reason room automatically disconnected if user is offline for more than 1mins * Retries logic will run exponential like (1, 2, 4, 8, 8, 8, 8, 8, 8, 8secs) * there will be total 10 retries */ private getPlayerConfig; /** * @param {Array} levels array * @returns a new array with only video levels. */ private removeAudioLevels; /** * @returns true if HLS player is supported in the browser */ static isSupported(): boolean; }