@slashedcloud/player
Version:
A media player application utilizing Shaka Player for adaptive video streaming, capable of playing HLS, MPD and plain HTTP video streams.
170 lines (169 loc) • 5.73 kB
TypeScript
import { default as Plugin } from './Plugins/Base';
import { default as shaka } from 'shaka-player/dist/shaka-player.ui';
import { default as Persister, PersisterOptions } from './util/Persister';
export declare const playerEvents: readonly ["firstPlay", "play", "playing", "pause", "ended", "seeking", "seeked", "volumeChange", "unmute", "mute", "acknowledge", "playAttempt", "fullScreenIn", "fullScreenOut", "timeUpdate", "error", "adStart", "adComplete", "adAllCompleted", "adClick", "adSkip", "adError", "adBlockDetector"];
export type PlayerEvent = (typeof playerEvents)[number] | string;
export type MediaTailor = {
type: 'media-tailor';
url: string;
assetId?: string;
podDuration?: string;
};
export type ImaDai = {
adTagParameters?: string;
apiKey?: string;
authToken?: string;
format?: 'hls' | 'dash';
omidAccessModeRules?: string;
streamActivityMonitorId?: string;
};
export type ImaDaiVod = ImaDai & {
type: 'ima-dai';
stream: 'vod';
contentSourceId: string;
videoId: string;
};
export type ImaDaiLive = ImaDai & {
type: 'ima-dai';
stream: 'live';
assetKey: string;
};
export type AdaptiveStreamSource = {
type: 'm3u8' | 'hls' | 'mpd' | 'dash' | 'application/dash+xml' | 'application/x-mpegurl';
url: string;
};
export type PlainSource = string;
export type ProgressiveSource = {
type: 'multi-progressive';
srcSet: SrcSet[];
};
export type SrcSet = {
url: string;
type: string;
label: string;
active?: boolean;
};
export type Source = PlainSource | AdaptiveStreamSource | ProgressiveSource | MediaTailor | ImaDaiVod | ImaDaiLive;
export type SetSource = {
url: string;
type: string;
label: string;
active?: boolean;
} | {
url: string;
type: null;
} | {
url: string;
type: string;
};
export type Options = Omit<UIConfiguration, 'volumeBarColors' | 'seekBarColors'> & {
autoplay?: boolean;
debug?: boolean;
height?: number;
language?: string;
muted?: boolean;
persister?: PersisterOptions;
playsInline?: boolean;
src: Source | Source[];
width?: number;
};
interface UISeekBarColors {
adBreaks: string;
base: string;
buffered: string;
played: string;
}
interface UIVolumeBarColors {
base: string;
level: string;
}
type TrackLabelFormat = 'LANGUAGE' | 'ROLE' | 'LANGUAGE_ROLE' | 'LABEL';
interface UIConfiguration {
adStatisticsList?: string[];
addBigPlayButton?: boolean;
addSeekBar?: boolean;
castAndroidReceiverCompatible?: boolean;
castReceiverAppId?: string;
clearBufferOnQualityChange?: boolean;
contextMenuElements?: string[];
controlPanelElements?: string[];
customContextMenu?: boolean;
defaultVrProjectionMode?: 'equirectangular' | 'cubemap';
displayInVrMode?: boolean;
doubleClickForFullscreen?: boolean;
enableFullscreenOnRotation?: boolean;
enableKeyboardPlaybackControls?: boolean;
enableTooltips?: boolean;
fadeDelay?: number;
fastForwardRates?: number[];
forceLandscapeOnFullscreen?: boolean;
fullScreenElement?: HTMLElement;
keyboardLargeSeekDistance?: number;
keyboardSeekDistance?: number;
overflowMenuButtons?: string[];
playbackRates?: number[];
preferDocumentPictureInPicture?: boolean;
refreshTickInSeconds?: number;
rewindRates?: number[];
seekBarColors: UISeekBarColors;
seekOnTaps?: boolean;
setupMediaSession?: boolean;
showAudioChannelCountVariants?: boolean;
showUnbufferedStart?: boolean;
singleClickForPlayAndPause?: boolean;
statisticsList?: string[];
tapSeekDistance?: number;
textTrackLabelFormat?: TrackLabelFormat;
trackLabelFormat?: TrackLabelFormat;
volumeBarColors: UIVolumeBarColors;
}
export declare const multiProgressiveTrack: Map<shaka.ui.Controls, ProgressiveSource>;
declare class Player {
#private;
elementId: string;
basePlayer: shaka.Player;
overlay: shaka.ui.Overlay;
controls: shaka.ui.Controls;
localization: shaka.ui.Localization | null;
container: HTMLElement;
videoElement: HTMLVideoElement;
options: Options;
uiConfig: UIConfiguration;
language: string;
constructor(elementId: string, options: Options);
initialize(): Promise<void>;
onError(error: any, isShaka?: boolean): Promise<void>;
/**
* Loads a plugin into the player
* @param plugin
* @param options
*/
loadPlugin<P extends Plugin>(Plugin: new (player: this) => P): P;
loadPlugin<P extends Plugin, O>(Plugin: new (player: this, options: O) => P, options: O): P;
/**
* Returns a loaded plugin instance
* @param PluginClass
* @returns
*/
getPlugin<P extends Plugin, O>(PluginClass: new (player: this, options: O) => P): P;
play(): Promise<void>;
pause(): void;
volume(volume: number): void;
mute(): void;
unmute(): void;
on: {
(event: string, listener: import('./util/EventEmitter').Listener): () => void;
(event: string[], listener: import('./util/EventEmitter').Listener): (() => void)[];
};
once: {
(event: string, listener: import('./util/EventEmitter').Listener): () => void;
(event: string[], listener: import('./util/EventEmitter').Listener): (() => void)[];
};
all: (listener: import('./util/EventEmitter').Listener) => void;
removeListener: (event: string | string[], listener: import('./util/EventEmitter').Listener) => void;
off: (event: string | string[], listener: import('./util/EventEmitter').Listener) => void;
emit: (event: string, ...args: any[]) => void;
get persister(): Persister;
get currentSourceIndex(): number;
}
export default Player;