UNPKG

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