@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
TypeScript
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;
}