@playkit-js/playkit-js-ui
Version:
[](https://github.com/kaltura/playkit-js-ui/actions/workflows/run_canary_full_flow.yaml) [ • 82.3 kB
TypeScript
import { AbrMode } from '@playkit-js/playkit-js';
import { BaseMiddleware } from '@playkit-js/playkit-js';
import * as core from '@playkit-js/playkit-js';
import { EngineType } from '@playkit-js/playkit-js';
import { Error as Error_2 } from '@playkit-js/playkit-js';
import { EventManager } from '@playkit-js/playkit-js';
import { FakeEvent } from '@playkit-js/playkit-js';
import { FakeEventTarget } from '@playkit-js/playkit-js';
import { KPUIAddComponent } from '@playkit-js/playkit-js-ui';
import { KPUIRemoveComponent } from '@playkit-js/playkit-js-ui';
import { LoggerLevels } from '@playkit-js/playkit-js';
import { MediaType } from '@playkit-js/playkit-js';
import { PKAbrConfigObject } from '@playkit-js/playkit-js';
import { PKDimensionsConfig } from '@playkit-js/playkit-js';
import { PKDrmDataObject } from '@playkit-js/playkit-js';
import { PKEventTypes } from '@playkit-js/playkit-js';
import { PKMediaSourceObject } from '@playkit-js/playkit-js';
import { PKMetadataConfigObject } from '@playkit-js/playkit-js';
import { PKPlaybackConfigObject } from '@playkit-js/playkit-js';
import { PKPlayerDimensions } from '@playkit-js/playkit-js';
import { PKSessionConfigObject } from '@playkit-js/playkit-js';
import { PKSourcesConfigObject } from '@playkit-js/playkit-js';
import { PKTextConfigObject } from '@playkit-js/playkit-js';
import { Provider } from '@playkit-js/playkit-js-providers/ovp-provider';
import { ProviderEntryListObject } from '@playkit-js/playkit-js-providers/types';
import { ProviderMediaConfigSessionObject } from '@playkit-js/playkit-js-providers/types';
import { ProviderMediaConfigSourcesObject } from '@playkit-js/playkit-js-providers/types';
import { ProviderMediaInfoObject } from '@playkit-js/playkit-js-providers/types';
import { ProviderOptionsObject } from '@playkit-js/playkit-js-providers/types';
import { ProviderPlaylistInfoObject } from '@playkit-js/playkit-js-providers/types';
import { ProviderPlaylistMetadataObject } from '@playkit-js/playkit-js-providers/types';
import { ProviderPlaylistObject } from '@playkit-js/playkit-js-providers/types';
import * as providers from '@playkit-js/playkit-js-providers/ovp-provider';
import { StateType } from '@playkit-js/playkit-js';
import { StreamType } from '@playkit-js/playkit-js';
import { TextStyle } from '@playkit-js/playkit-js';
import { ThumbnailInfo } from '@playkit-js/playkit-js';
import { TimedMetadata } from '@playkit-js/playkit-js';
import { Track } from '@playkit-js/playkit-js';
import { TrackType } from '@playkit-js/playkit-js';
import { TrackTypes } from '@playkit-js/playkit-js';
import * as ui from '@playkit-js/playkit-js-ui';
import { UIEventType } from '@playkit-js/playkit-js-ui';
import { UIOptionsObject } from '@playkit-js/playkit-js-ui';
import { UIPreset } from '@playkit-js/playkit-js-ui';
/**
* @class Ad
* @param {string} id - Ad ID.
* @param {PKAdOptions} options - Ad data options.
*/
export declare class Ad {
private readonly _id;
private readonly _system;
private readonly _url;
private readonly _contentType;
private readonly _title;
private readonly _position;
private readonly _duration;
private readonly _clickThroughUrl;
private _posterUrl;
private readonly _skipOffset;
private _linear;
private readonly _width;
private readonly _height;
private readonly _bitrate;
private readonly _bumper;
private readonly _inStream;
private readonly _vpaid;
private readonly _streamId;
private readonly _wrapperAdIds;
private readonly _wrapperCreativeIds;
private readonly _wrapperAdSystems;
constructor(id: string, options: PKAdOptions);
/**
* @instance
* @memberof Ad
* @return {string} - Ad ID.
*/
get id(): string;
/**
* @instance
* @memberof Ad
* @return {string | undefined} - Ad system.
*/
get system(): string | undefined;
/**
* @instance
* @memberof Ad
* @return {string} - Ad content type.
*/
get contentType(): string | undefined;
/**
* @instance
* @memberof Ad
* @return {string} - Ad URL.
*/
get url(): string | undefined;
/**
* @instance
* @memberof Ad
* @return {string} - Ad title.
*/
get title(): string | undefined;
/**
* @instance
* @memberof Ad
* @return {string} - Ad position inside the ad break.
*/
get position(): number | undefined;
/**
* @instance
* @memberof Ad
* @return {string} - Ad duration.
*/
get duration(): number | undefined;
/**
* @instance
* @memberof Ad
* @return {string} - Ad click through URL.
*/
get clickThroughUrl(): string | undefined;
/**
* @instance
* @memberof Ad
* @return {string} - Ad poster URL.
*/
get posterUrl(): string | undefined;
/**
* @instance
* @memberof Ad
* @return {string} - Ad skip offset.
*/
get skipOffset(): number | undefined;
/**
* @instance
* @memberof Ad
* @return {boolean} - Whether the ad is linear.
*/
get linear(): boolean;
/**
* @instance
* @memberof Ad
* @return {string} - Ad width.
*/
get width(): number;
/**
* @instance
* @memberof Ad
* @return {string} - Ad height.
*/
get height(): number;
/**
* @instance
* @memberof Ad
* @return {string} - Ad bitrate.
*/
get bitrate(): number;
/**
* @instance
* @memberof Ad
* @return {boolean} - Whether the ad is bumper.
*/
get bumper(): boolean;
/**
* @instance
* @memberof Ad
* @return {boolean} - Whether the ad is imadai.
*/
get inStream(): boolean;
/**
* @instance
* @memberof Ad
* @return {string} - Whether the ad is skippable or not.
*/
get skippable(): boolean;
/**
* @instance
* @memberof Ad
* @return {boolean} - Whether the ad is vpaid or not.
*/
get vpaid(): boolean;
/**
* @instance
* @memberof Ad
* @return {string} - The ad streamId.
*/
get streamId(): string;
/**
* @instance
* @memberof Ad
* @return {string} - The ad wrapperAdIds.
*/
get wrapperAdIds(): Array<string>;
/**
* @instance
* @memberof Ad
* @return {string} - The ad wrapperCreativeIds.
*/
get wrapperCreativeIds(): Array<string>;
/**
* @instance
* @memberof Ad
* @return {string} - The ad wrapperAdSystems.
*/
get wrapperAdSystems(): Array<string>;
toJSON(): any;
}
export declare class AdBreak {
private readonly _type;
private readonly _position;
private readonly _numAds;
constructor(options: PKAdBreakOptions);
/**
* @instance
* @memberof AdBreak
* @return {string} - Ad break type - pre/mid/post.
*/
get type(): string | undefined;
/**
* @instance
* @memberof AdBreak
* @return {string} - Ad break position on the playback timeline.
*/
get position(): number | undefined;
/**
* @instance
* @memberof AdBreak
* @return {string} - The number of ads inside the ad break.
*/
get numAds(): number | undefined;
toJSON(): any;
}
/**
* @typedef {Object} KPAdBreakObject@typedef {Object} KPAdBreakObject
* @property {number} position - The position; in seconds; to show the ad break.
* @property {number} percentage - Alternative parameter to `position`. The position; in percentage of the media length; to show the ad break (optional).
* @property {number} every - Alternative parameter to `position`. Play ad break every X seconds (optional).
* @property {AdPod} ads - An array of ads to play (Ad pod).
*/
declare interface AdBreakObject {
position: number;
percentage?: number;
every?: number;
ads: AdObject[];
}
/**
* @typedef {Object} KPAdObject@typedef {Object} KPAdObject
* @property {Array<string>} url - List of urls; each one specifies the ad tag url that is requested from the ad server. The player will request the first url; if failed; it will request the second url and so on (aka waterfalling).
* @property {Array<string>} response - List of XMLs; each one specifies a VAST 2.0 document to be used as the ads response instead of making a request via an ad tag url. The player will use the first XML; if failed; it will use the second and so on (aka waterfalling).
* @property {boolean} bumper - Specifies whether this is a bumper.
* @property {PrebidConfig} prebid - Specifies whether this is a prebid ad and add the relevant config for prebid request.
*/
declare interface AdObject {
url?: Array<string>;
response?: Array<string>;
bumper?: boolean;
prebid?: PrebidConfig;
}
export declare interface AdPrebidConfig {
adUnit: Object;
params?: Object;
options?: Object;
timeout: number;
}
/**
* @class AdsController
* @param {Player} player - The player.
* @param {IAdsController} adsPluginController - The controller of the current ads plugin instance.
*/
declare class AdsController extends FakeEventTarget implements IAdsController {
private static _logger;
private readonly _player;
private _adsPluginControllers;
private _allAdsCompleted;
private _eventManager;
private _liveEventManager;
private _adBreaksLayout;
private _adBreak;
private _ad;
private _adPlayed;
private _snapback;
private _configAdBreaks;
private _adIsLoading;
private _isAdPlaying;
private _middleware;
private readonly _prebidManager;
private _liveSeeking;
prerollReady: Promise<any>;
constructor(player: KalturaPlayer, adsPluginControllers: Array<IAdsPluginController>);
/**
* @instance
* @memberof AdsController
* @returns {boolean} - Whether all ads completed.
*/
get allAdsCompleted(): boolean;
/**
* @instance
* @memberof AdsController
* @returns {boolean} - Whether an ad is playing.
*/
isAdPlaying(): boolean;
/**
* @instance
* @memberof AdsController
* @returns {boolean} - Whether we're in an ad break.
*/
isAdBreak(): boolean;
/**
* @instance
* @memberof AdsController
* @returns {Array<number|string>} - The ad breaks layout (cue points).
*/
getAdBreaksLayout(): Array<number | string>;
/**
* @instance
* @memberof AdsController
* @returns {?AdBreak} - Gets the current ad break data.
*/
getAdBreak(): AdBreak | undefined;
/**
* @instance
* @memberof AdsController
* @returns {?Ad} - Gets the current ad data.
*/
getAd(): Ad | undefined;
/**
* Skip on an ad.
* @instance
* @memberof AdsController
* @returns {void}
*/
skipAd(): void;
/**
* Play an ad on demand.
* @param {KPAdPod} adPod - The ad pod play.
* @instance
* @memberof AdsController
* @returns {void}
*/
playAdNow(adPod: KPAdPod): void;
getMiddleware(): BaseMiddleware;
private _init;
private _initMembers;
private _addBindings;
private _handleConfiguredAdBreaks;
private _validateOneTimeConfig;
private _dispatchAdManifestLoaded;
private _handlePrebidAdConfig;
private _getPrebidAds;
private _handleConfiguredPreroll;
private _handleEveryAndPercentage;
private _attachLiveSeekedHandler;
private _pushNextAdsForLive;
private _handleConfiguredMidrolls;
private _handleReturnToLive;
private _playAdBreak;
private _onAdManifestLoaded;
private _onAdBreakStart;
private _onAdLoaded;
private _onAdStarted;
private _onAdBreakEnd;
private _onAdsCompleted;
private _onAdError;
private _isBumper;
private _onEnded;
private _onPlaybackEnded;
private _handleConfiguredPostroll;
private _reset;
private _destroy;
private _mergeAdBreaks;
}
/**
* @typedef {Object} KPAdvertisingConfigObject@typedef {Object} KPAdvertisingConfigObject
* @property {PrebidConfig} prebid - The prebid config.
* @property {Array<KPAdBreakObject>} adBreaks - The ad breaks scheme.
* @property {number} [playAdsAfterTime] - Only play ad breaks scheduled after this time (in seconds). This setting is strictly after - e.g. setting playAdsAfterTime to 15 will cause the player to ignore an ad break scheduled to play at 15s.
* @property {boolean} [showAdBreakCuePoint] - Whether to show the ad breaks cue points.
* @property {Object} [adBreakCuePointStyle] - Style options for the ad breaks cue points - See the options {@link https://github.com/kaltura/playkit-js-timeline/blob/main/docs/types.md#cuepointoptionsobject|Here}.
*/
export declare interface AdvertisingConfig {
prebid?: PrebidConfig;
adBreaks: AdBreakObject[];
playAdsAfterTime?: number;
showAdBreakCuePoint?: boolean;
adBreakCuePointStyle?: Object;
}
/** The BasePlugin responsible to implement the plugin interface.
* Contains several default implementations.
* Other plugins should extend this class.
* @classdesc
*/
export declare class BasePlugin {
protected logger: any;
/**
* The runtime configuration of the plugin.
* @member
*/
protected config: any;
/**
* The name of the plugin.
* @member
*/
name: string;
/**
* The logger of the plugin.
* @member
*/
/**
* Reference to the actual player.
* @member
*/
protected player: KalturaPlayer;
/**
* The event manager of the plugin.
* @member
*/
protected eventManager: EventManager;
/**
* The default configuration of the plugin.
* Inherited plugins should override this property.
* @type {Object}
* @static
* @member
*/
protected static defaultConfig: any;
/**
* Returns under what conditions the plugin is valid.
* Plugin must implement this method.
* @returns {boolean} - Whether the plugin is valid and can be initiated. Default implementation is true
* @static
* @public
* @abstract
*/
static isValid(): boolean;
/**
* constructor
* @param {string} name - The plugin name
* @param {Object} player - The player reference
* @param {Object} config - The plugin configuration
* @constructor
* @private
*/
constructor(name: string, player: KalturaPlayer, config?: any);
/**
* Getter for the configuration of the plugin.
* @param {string} attr - The key in the plugin configuration (optional).
* @returns {*} - If attribute is provided, returns its value. Else, Returns the config of the plugin.
* @public
*/
getConfig(attr?: string): any;
/**
* Getter for the ready promise of the plugin.
* @returns {Promise<*>} - returns a resolved promise unless the plugin overrides this ready getter.
* @public
*/
protected get ready(): Promise<any>;
/**
* Updates the config of the plugin.
* @param {Object} update - The updated configuration.
* @public
* @returns {void}
*/
updateConfig(update: any): void;
/**
* Runs the loadMedia logic of the plugin.
* plugin must implement this method.
* @public
* @virtual
* @returns {void}
*/
loadMedia(): void;
/**
* Runs the destroy logic of the plugin.
* plugin must implement this method.
* @public
* @virtual
* @returns {void}
*/
destroy(): void;
/**
* Runs the reset logic of the plugin.
* plugin must implement this method.
* @public
* @virtual
* @returns {void}
*/
reset(): void;
/**
* Getter for the plugin's name.
* @returns {string} - The name of the plugin.
* @public
*/
getName(): string;
/**
* Dispatch an event via the plugin.
* @param {string} name - The event name.
* @param {any} payload - The event payload.
* @returns {void}
*/
dispatchEvent(name: string, payload?: any): void;
}
/**
* Basic remote player.
* Implements the Kaltura Player playback, ads, tracks,vr and cast APIs.
* Remote players should extend this class and implement the needed API.
* @class BaseRemotePlayer
* @param {string} name - Remote player name.
* @param {Object} config - Cast configuration.
* @param {RemoteControl} remoteControl - Remote control.
* @extends {FakeEventTarget}
* @implements {IRemotePlayer}
*/
declare class BaseRemotePlayer extends FakeEventTarget implements IRemotePlayer {
/**
* Default configuration of the remote player.
* @static
* @type {Object}
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.defaultConfig // {}
*/
private static defaultConfig;
/**
* Remote player type.
* @static
* @type {string}
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.Type // 'BaseRemotePlayer'
*/
private static Type;
/**
* @static
* @returns {boolean} - Whether the remote player is supported in the current environment.
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.isSupported() // true
*/
static isSupported(): boolean;
private static _logger;
private _remoteControl;
private _playerConfig;
private _castConfig;
private _eventManager;
private _isCastInitiator;
constructor(name: string, castConfig: any, remoteControl: RemoteControl);
/**
* Loads a media to the receiver application.
* @param {Object} mediaInfo - The entry media info.
* @returns {Promise<void>} - Promise to indicate load succeed or failed.
* @instance
* @memberof BaseRemotePlayer
*/
loadMedia(mediaInfo: any): Promise<any>;
/**
* Sets a media to the remote player..
* @param {Object} mediaConfig - Media configuration to set.
* @instance
* @returns {void}
* @memberof BaseRemotePlayer
*/
setMedia(mediaConfig: any): void;
/**
* Gets the media Info.
* @returns {?Object} - The media info.
* @instance
* @memberof BaseRemotePlayer
*/
getMediaInfo(): any;
/**
* Gets the media config.
* @returns {?Object} - The media config.
* @instance
* @memberof BaseRemotePlayer
*/
getMediaConfig(): any;
/**
* Configure the remote player
* @param {Object} config - Configuration to set.
* @instance
* @returns {void}
* @memberof BaseRemotePlayer
*/
configure(config?: any): void;
/**
* The remote player readiness.
* @returns {Promise<any>} - Promise which resolved when the remote player is ready.
* @instance
* @memberof BaseRemotePlayer
*/
ready(): Promise<any>;
/**
* Load the remote player.
* @instance
* @returns {void}
* @memberof BaseRemotePlayer
*/
load(): void;
/**
* Play/resume the remote player.
* @instance
* @returns {void}
* @memberof BaseRemotePlayer
*/
play(): void;
/**
* Pause the remote player.
* @instance
* @returns {void}
* @memberof BaseRemotePlayer
*/
pause(): void;
/**
* Reset the remote player.
* @instance
* @returns {void}
* @memberof BaseRemotePlayer
*/
reset(): void;
/**
* Destroy the remote player.
* @instance
* @returns {void}
* @memberof BaseRemotePlayer
*/
destroy(): void;
/**
* @returns {boolean} - Whether the current playback is a live playback.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.isLive() // false
*/
isLive(): boolean;
/**
* @returns {boolean} - Whether the current live playback has DVR window. In case of non-live playback will return false.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.isDvr() // false
*/
isDvr(): boolean;
/**
* Seeks to the live edge.
* @instance
* @returns {void}
* @memberof BaseRemotePlayer
*/
seekToLiveEdge(): void;
/**
* @returns {number} - The start time of the DVR window.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.getStartTimeOfDvrWindow() // 0
*/
getStartTimeOfDvrWindow(): number;
/**
* @param {string} [type] - Track type.
* @returns {Array<Track>} - The remote player tracks.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.getTracks() // []
*/
getTracks(type?: string): Array<Track>;
/**
* @returns {Object} - The remote player active tracks.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.getTracks() // {audio: undefined, video: undefined, text: undefined}
*/
getActiveTracks(): any;
/**
* Select a certain track to be active.
* @param {Track} track - The track to activate.
* @returns {void}
* @instance
* @memberof BaseRemotePlayer
*/
selectTrack(track: Track): void;
/**
* Hides the active text track.
* @returns {void}
* @instance
* @memberof BaseRemotePlayer
*/
hideTextTrack(): void;
/**
* @function enableAdaptiveBitrate
* @description Enables automatic adaptive bitrate switching.
* @returns {void}
* @instance
* @memberof BaseRemotePlayer
*/
enableAdaptiveBitrate(): void;
/**
* @function isAdaptiveBitrateEnabled
* @returns {boolean} - Whether adaptive bitrate is enabled.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.isAdaptiveBitrateEnabled() // true
*/
isAdaptiveBitrateEnabled(): boolean;
/**
* Sets the text display settings.
* @function setTextDisplaySettings
* @param {Object} settings - Text settings.
* @instance
* @memberof BaseRemotePlayer
* @returns {void}
*/
setTextDisplaySettings(settings: any): void;
/**
* Start casting.
* @returns {Promise<any>} - A promise to indicate session is starting, or failed
* @instance
* @memberof BaseRemotePlayer
*/
startCasting(): Promise<void>;
/**
* Stops the current cast session.
* @returns {void}
* @instance
* @memberof BaseRemotePlayer
*/
stopCasting(): void;
/**
* @returns {boolean} - Whether casting is currently active.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.isCasting() // true
*/
isCasting(): boolean;
/**
* @returns {boolean} - Whether casting is available.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.isCastAvailable() // true
*/
isCastAvailable(): boolean;
/**
* Gets the current remote session.
* @returns {RemoteSession} - The remote session.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.getCastSession() // new RemoteSession('', '')
*/
getCastSession(): RemoteSession;
/**
* @returns {boolean} - Whether the current media is of VR type (360 content).
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.isVr() // false
*/
isVr(): boolean;
/**
* Toggles VR mode on the current content.
* @instance
* @returns {void}
* @memberof BaseRemotePlayer
*/
toggleVrStereoMode(): void;
/**
* @returns {boolean} - Whether the current content displayed in VR mode.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.isInVrStereoMode() // false
*/
isInVrStereoMode(): boolean;
/**
* The remote player ads controller.
* @type {?Object}
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.ads // null
*/
get ads(): any;
/**
* Setter.
* @param {TextStyle} style - The text style to set.
* @returns {void}
* @instance
* @memberof BaseRemotePlayer
*/
set textStyle(style: TextStyle);
/**
* Getter.
* @returns {TextStyle} - The current text style.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.textStyle // new TextStyle()
*/
get textStyle(): TextStyle;
/**
* Gets the first buffered range of the remote player.
* @returns {Array<any>} - First buffered range in seconds.
* @public
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.buffered // []
*/
get buffered(): Array<any>;
/**
* Setter.
* @param {number} to - The number to set in seconds.
* @returns {void}
* @instance
* @memberof BaseRemotePlayer
*/
set currentTime(to: number);
/**
* Getter.
* @returns {number} - The current time in seconds.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.currentTime // 0
*/
get currentTime(): number;
/**
* @returns {number} - The duration in seconds.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.duration // 0
*/
get duration(): number;
/**
* @returns {number} - The live duration in seconds.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.liveDuration // NaN
*/
get liveDuration(): number;
/**
* Setter.
* @param {number} vol - The volume to set in the range of 0-1.
* @returns {void}
* @instance
* @memberof BaseRemotePlayer
*/
set volume(vol: number);
/**
* Getter.
* @returns {number} - The current volume in the range of 0-1.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.volume // 1
*/
get volume(): number;
/**
* @returns {boolean} - Whether the cast player is in paused state.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.paused // false
*/
get paused(): boolean;
/**
* @returns {boolean} - Whether the cast player is in ended state.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.ended // false
*/
get ended(): boolean;
/**
* @returns {boolean} - Whether the cast player is in seeking state.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.seeking // false
*/
get seeking(): boolean;
/**
* Setter.
* @param {boolean} mute - The mute value to set.
* @returns {void}
* @instance
* @memberof BaseRemotePlayer
*/
set muted(mute: boolean);
/**
* Getter.
* @returns {boolean} - The muted state.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.muted // false
*/
get muted(): boolean;
/**
* @returns {string} - The current playing source url.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.src // ''
*/
get src(): string;
/**
* @returns {string} - The current poster url.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.poster // ''
*/
get poster(): string;
/**
* Setter.
* @param {number} rate - The playback rate to set.
* @instance
* @memberof BaseRemotePlayer
*/
set playbackRate(rate: number);
/**
* @returns {string} - The current playback rate.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.playbackRate // 1
*/
get playbackRate(): number;
/**
* @returns {string} - The active engine type.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.engineType // ''
*/
get engineType(): string;
/**
* @returns {string} - The active stream type.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.streamType // ''
*/
get streamType(): string;
/**
* @returns {string} - The remote player type.
* @instance
* @memberof BaseRemotePlayer
* @example
* BaseRemotePlayer.prototype.type // BaseRemotePlayer.Type
*/
get type(): string;
/**
* @returns {KPOptionsObject} - The runtime remote player config.
* @instance
* @memberof BaseRemotePlayer
*/
get config(): any;
set isCastInitiator(isCastInitiator: boolean);
get isCastInitiator(): boolean;
}
declare class BaseStorageManager {
protected static _logger: any;
static StorageKeys: {
[key: string]: string;
};
/**
* Initializes class.
* @private
* @param {string} className - The manager's class name.
* @returns {void}
*/
static init(className: string): void;
/**
* Applies cache support if it's supported by the environment.
* @private
* @param {KalturaPlayer} player - The Kaltura player.
* @returns {void}
*/
static attachAll(player: KalturaPlayer): void;
/**
* Sets the storage config on the player config if certain conditions are met.
* @private
* @param {KPOptionsObject} options - kaltura player options
* @returns {void}
*/
static setStorageConfig(options: KalturaPlayerConfig): void;
/**
* @static
* @private
* @returns {boolean} - Whether the storage is implemented in the current browser.
*/
static isStorageAvailable(): boolean;
/**
* Checks if we have previous storage.
* @private
* @static
* @return {boolean} - Whether we have previous storage.
*/
static hasStorage(): boolean;
/**
* Sets an item in the storage.
* @private
* @static
* @param {string} key - The key of the item
* @param {any} item - The value of the item
* @returns {void}
*/
static setItem(key: string, item: any): void;
/**
* Gets an item from the storage.
* @private
* @static
* @param {string} key - The item key
* @returns {any} - The item value
*/
static getItem(key: string): any;
/**
* Gets the storage size
* @static
* @private
* @return {number} - The number of keys in the local storage started with wanted prefix.
*/
static getStorageSize(): number;
/**
* Gets the storage in the structure of the player configuration.
* @private
* @static
* @return {Object} - Partial storageable player configuration.
*/
static getStorageConfig(): any;
/**
* Gets the current existing values in the storage.
* @private
* @static
* @return {Object} - The values object from the storage.
*/
static _getExistingValues(): any;
/**
* Builds the storage configuration object.
* @private
* @static
* @param {Object} values - The values to set to storage configuration
* @return {Object} - The configuration with values from the storage.
*/
static _buildStorageConfig(values: any): any;
/**
* Gets the storage object to access.
* i.e: sessionStorage, localStorage
* @private
* @static
* @return {Object} - The storage object.
*/
static getStorageObject(): any;
/**
* Attaches listeners to the storage manager.
* @private
* @static
* @return {void}
*/
static attach(player: KalturaPlayer): void;
/**
* Initialize the storage manager.
* @private
* @static
* @return {void}
*/
static initialize(): void;
}
export declare const cast: {
registerRemotePlayer: typeof RemotePlayerManager.register;
PlayerSnapshot: typeof PlayerSnapshot;
RemoteControl: typeof RemoteControl;
RemoteSession: typeof RemoteSession;
BaseRemotePlayer: typeof BaseRemotePlayer;
RemoteConnectedPayload: typeof RemoteConnectedPayload;
RemoteDisconnectedPayload: typeof RemoteDisconnectedPayload;
RemoteAvailablePayload: typeof RemoteAvailablePayload;
RemotePlayerUI: typeof RemotePlayerUI;
CastEventType: {
readonly CAST_SESSION_START_FAILED: "kaltura-player-castsessionstartfailed";
readonly CAST_SESSION_STARTING: "kaltura-player-castsessionstarting";
readonly CAST_SESSION_STARTED: "kaltura-player-castsessionstarted";
readonly CAST_SESSION_ENDING: "kaltura-player-castsessionending";
readonly CAST_SESSION_ENDED: "kaltura-player-castsessionended";
readonly CAST_AVAILABLE: "kaltura-player-castavailable";
};
RemotePlayerType: {
[type: string]: string;
};
TextStyleConverter: typeof TextStyleConverter;
CustomEventMessage: typeof CustomEventMessage;
CustomActionMessage: typeof CustomActionMessage;
CustomMessageType: {
[type: string]: string;
};
CustomActionType: {
[action: string]: string;
};
CustomMessage: typeof CustomMessage;
};
/**
* @const {Object} CastEventType
*
* @example
* // Events lifecycle
* 1. CAST_AVAILABLE
* 2. CAST_SESSION_STARTING
* 3. CAST_SESSION_STARTED || CAST_SESSION_START_FAILED -> X
* 4. CAST_SESSION_ENDING
* 5. CAST_SESSION_ENDED
* @example
* // How to use
* player.addEventListener(KalturaPlayer.cast.CastEventType.CAST_SESSION_STARTED, e => {
* console.log(e.session);
* };
*/
declare const CastEventType: {
/**
* Fires when cast session start failed.
* @event CAST_SESSION_START_FAILED
* @memberof CastEventType
*/
readonly CAST_SESSION_START_FAILED: "kaltura-player-castsessionstartfailed";
/**
* Fires when cast session starting.
* @event CAST_SESSION_STARTING
* @memberof CastEventType
*/
readonly CAST_SESSION_STARTING: "kaltura-player-castsessionstarting";
/**
* Fires when cast session started.
* @event CAST_SESSION_STARTED
* @memberof CastEventType
*/
readonly CAST_SESSION_STARTED: "kaltura-player-castsessionstarted";
/**
* Fires when cast session ending.
* @event CAST_SESSION_ENDING
* @memberof CastEventType
*/
readonly CAST_SESSION_ENDING: "kaltura-player-castsessionending";
/**
* Fires when cast session ended.
* @event CAST_SESSION_ENDED
* @memberof CastEventType
*/
readonly CAST_SESSION_ENDED: "kaltura-player-castsessionended";
/**
* Fires when cast is available.
* @event CAST_AVAILABLE
* @memberof CastEventType
*/
readonly CAST_AVAILABLE: "kaltura-player-castavailable";
};
export declare type ClassConstructor<T> = new (...args: any[]) => T;
export { core }
export declare interface CuePoint {
id: string;
startTime: number;
endTime: number;
metadata: any;
}
declare class CuePointManager {
private _player;
private _textTrack;
constructor(player: KalturaPlayer);
private _addTextTrack;
private _getMetadataTracks;
private _createTextTrackCue;
private _cuesSorter;
getAllCuePoints(): Array<TimedMetadata>;
getActiveCuePoints(): Array<TimedMetadata>;
private _getTextTrackCueById;
private _removeTextTrackCue;
addCuePoints(data: CuePoint[]): void;
private _clearAllTextTrackCues;
reset(): void;
destroy(): void;
}
declare class CustomActionMessage extends CustomMessage {
action: string;
args: any;
constructor(action: string, args: any);
}
declare class CustomEventMessage extends CustomMessage {
event: string;
payload: any;
constructor(event: string, payload: any);
}
declare class CustomMessage {
type: string;
constructor(type: string);
}
/**
* @typedef {Object} DRMSupportedObject@typedef {Object} DRMSupportedObject
* @property {number} isDRMSupported - Specifies DRM supported option by the browser
* @property {Array<string>} supportedDRMs - List of supported DRMs (optional values: widevine; playready; fairplay)
*/
export declare type DRMSupportedObject = {
isDRMSupported: number;
supportedDRMs: Array<string>;
};
export declare interface ExternalThumbnailsConfig {
vttUrl: string;
}
/**
* get a player instance by id
* @param {string} id - the player ID
* @returns {KalturaPlayer | null} - the player if found by the supplied ID or null if key doesn't exist
*/
export declare function getPlayer(id: string): KalturaPlayer | null;
/**
* get all instantiated players
* @returns {KalturaPlayers} - map of player ids and their respective instantiated player
*/
export declare function getPlayers(): Record<string, KalturaPlayer>;
/**
* @typedef {Object} HEVCConfigObject@typedef {Object} HEVCConfigObject
* @property {number} width - Optional width of the video
* @property {number} height - Optional height of the video
* @property {number} bitrate - Optional number of bits used to encode a second of video
* @property {number} framerate - Optional number of frames used in one second
*/
export declare type HEVCConfigObject = {
width?: number;
height?: number;
bitrate?: number;
framerate?: number;
};
/**
* @typedef {Object} HEVCSupportedObject@typedef {Object} HEVCSupportedObject
* @property {number} isHEVCSupported - Specifies HEVC supported option by the browser
* @property {number} isPowerEfficient - Specifies power efficiency supported option
*/
export declare type HEVCSupportedObject = {
isHEVCSupported: number;
isPowerEfficient: number;
};
export declare interface IAdsController {
allAdsCompleted: boolean;
isAdBreak(): boolean;
getAdBreaksLayout(): Array<number | string>;
getAdBreak(): AdBreak | undefined;
getAd(): Ad | undefined;
skipAd(): void;
playAdNow(adPod: KPAdPod): void;
}
export declare interface IAdsControllerProvider {
getAdsController(): IAdsPluginController;
}
export declare interface IAdsPluginController {
skipAd(): void;
playAdNow(adPod: KPAdPod): void;
onPlaybackEnded(): Promise<void>;
active: boolean;
done: boolean;
name: string;
}
export declare interface ImageSourceOptions {
thumbnailAPIParams: {
[parmaName: string]: string;
};
}
/**
* @interface IRemotePlayer
*
*/
declare interface IRemotePlayer {
/**
* @type {TextStyle}
* @instance
* @memberof IRemotePlayer
*/
textStyle: TextStyle;
/**
* @type {boolean}
* @instance
* @memberof IRemotePlayer
*/
muted: boolean;
/**
* @type {number}
* @instance
* @memberof IRemotePlayer
*/
playbackRate: number;
/**
* @type {number}
* @instance
* @memberof IRemotePlayer
*/
volume: number;
/**
* @type {number}
* @instance
* @memberof IRemotePlayer
*/
currentTime: number;
/**
* @readonly
* @type {number}
* @instance
* @memberof IRemotePlayer
*/
buffered: Array<any>;
/**
* @readonly
* @type {number}
* @instance
* @memberof IRemotePlayer
*/
duration: number;
/**
* @readonly
* @type {number}
* @instance
* @memberof IRemotePlayer
*/
liveDuration: number;
/**
* @readonly
* @type {boolean}
* @instance
* @memberof IRemotePlayer
*/
paused: boolean;
/**
* @readonly
* @type {boolean}
* @instance
* @memberof IRemotePlayer
*/
ended: boolean;
/**
* @readonly
* @type {boolean}
* @instance
* @memberof IRemotePlayer
*/
seeking: boolean;
/**
* @readonly
* @type {string}
* @instance
* @memberof IRemotePlayer
*/
src: string;
/**
* @readonly
* @type {string}
* @instance
* @memberof IRemotePlayer
*/
poster: string;
/**
* @readonly
* @type {string}
* @instance
* @memberof IRemotePlayer
*/
engineType: string;
/**
* @readonly
* @type {string}
* @instance
* @memberof IRemotePlayer
*/
streamType: string;
/**
* @readonly
* @type {string}
* @instance
* @memberof IRemotePlayer
*/
type: string;
/**
* @readonly
* @type {Object}
* @memberof IRemotePlayer
* @instance
*/
ads: any;
/**
* @readonly
* @type {KPOptionsObject}
* @instance
* @memberof IRemotePlayer
*/
config: any;
/**
* @method
* @param {string} type
* @param {Function} listener
* @instance
* @memberof IRemotePlayer
*/
addEventListener(type: string, listener: () => any): void;
/**
* @method
* @param {string} type
* @param {Function} listener
* @instance
* @memberof IRemotePlayer
*/
removeEventListener(type: string, listener: () => any): void;
/**
* @method
* @param {FakeEvent} event
* @instance
* @memberof IRemotePlayer
*/
dispatchEvent(event: FakeEvent): void;
/**
* @method
* @param {Object} mediaInfo
* @instance
* @memberof IRemotePlayer
*/
loadMedia(mediaInfo: any): Promise<any>;
/**
* @method
* @param {Object} mediaConfig
* @instance
* @memberof IRemotePlayer
*/
setMedia(mediaConfig: any): void;
/**
* @method
* @returns {Object}
* @instance
* @memberof IRemotePlayer
*/
getMediaInfo(): ProviderMediaInfoObject;
/**
* @method
* @returns {Object}
* @instance
* @memberof IRemotePlayer
*/
getMediaConfig(): KPMediaConfig;
/**
* @method
* @param {Object} config
* @instance
* @memberof IRemotePlayer
*/
configure(config: any): void;
/**
* @method
* @returns {Promise<any>}
* @instance
* @memberof IRemotePlayer
*/
ready(): Promise<any>;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
load(): void;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
play(): void;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
pause(): void;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
reset(): void;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
destroy(): void;
/**
* @method
* @returns {boolean}
* @instance
* @memberof IRemotePlayer
*/
isLive(): boolean;
/**
* @method
* @returns {boolean}
* @instance
* @memberof IRemotePlayer
*/
isDvr(): boolean;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
seekToLiveEdge(): void;
/**
* @method
* @returns {number}
* @instance
* @memberof IRemotePlayer
*/
getStartTimeOfDvrWindow(): number;
/**
* @method
* @param {string} [type]
* @returns {Array<Track>}
* @instance
* @memberof IRemotePlayer
*/
getTracks(type?: string): Array<Track>;
/**
* @method
* @returns {Object}
* @instance
* @memberof IRemotePlayer
*/
getActiveTracks(): any;
/**
* @method
* @param {Track} track
* @instance
* @memberof IRemotePlayer
*/
selectTrack(track: Track): void;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
hideTextTrack(): void;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
enableAdaptiveBitrate(): void;
/**
* @method
* @returns {boolean}
* @instance
* @memberof IRemotePlayer
*/
isAdaptiveBitrateEnabled(): boolean;
/**
* @method
* @param {Object} settings
* @instance
* @memberof IRemotePlayer
*/
setTextDisplaySettings(settings: any): void;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
startCasting(): void;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
stopCasting(): void;
/**
* @method
* @returns {boolean}
* @instance
* @memberof IRemotePlayer
*/
isCasting(): boolean;
/**
* @method
* @returns {boolean}
* @instance
* @memberof IRemotePlayer
*/
isCastAvailable(): boolean;
/**
* @method
* @returns {RemoteSession}
* @instance
* @memberof IRemotePlayer
*/
getCastSession(): RemoteSession;
/**
* @method
* @returns {boolean}
* @instance
* @memberof IRemotePlayer
*/
isVr(): boolean;
/**
* @method
* @instance
* @memberof IRemotePlayer
*/
toggleVrStereoMode(): void;
/**
* @method
* @returns {boolean}
* @instance
* @memberof IRemotePlayer
*/
isInVrStereoMode(): boolean;
}
export declare const KALTURA_PLAYER_START_TIME_QS: string;
export declare class KalturaPlayer extends FakeEventTarget {
private static _logger;
private _localPlayer;
private _provider;
private _uiWrapper;
private _controllerProvider;
private _adsController;
private _eventManager;
private _attachEventManager;
private _playlistManager;
private _remotePlayerManager;
private _mediaInfo;
_remotePlayer: BaseRemotePlayer | null;
private _pluginManager;
private _pluginsConfig;
private _reset;
private _firstPlay;
private _sourceSelected;
private _pluginReadinessMiddleware;
private _configEvaluator;
private _appPluginConfig;
private _viewabilityManager;
_playbackStart: boolean;
private _thumbnailManager;
private _cuepointManager;
private _serviceProvider;
private _isVisible;
private _autoPaused;
constructor(options: KalturaPlayerConfig);
loadMedia(mediaInfo: ProviderMediaInfoObject, mediaOptions?: SourcesConfig): Promise<any>;
setMedia(mediaConfig: KPMediaConfig): void;
loadPlaylist(playlistInfo: ProviderPlaylistInfoObject, playlistConfig: PlaylistConfigObject): Promise<ProviderPlaylistObject>;
loadPlaylistByEntryList(entryList: ProviderEntryListObject, playlistConfig: PlaylistConfigObject): Promise<ProviderPlaylistObject>;
setPlaylist(playlistData: ProviderPlaylistObject, playlistConfig: PlaylistConfigObject, entryList?: ProviderEntryListObject): void;
configure(config?: Partial<KalturaPlayerConfig>): void;
updateKalturaPoster(playerSources: PKSourcesConfigObject, mediaSources: ProviderMediaConfigSourcesObject, dimensions: PKPlayerDimensions): void;
shouldAddKs(mediaConfig?: KPMediaConfig): boolean;
getMediaInfo(): ProviderMediaInfoObject;
getDrmInfo(): PKDrmDataObject | null;
getMediaConfig(): KPMediaConfig;
setSourcesMetadata(sourcesMetadata: PKMetadataConfigObject): void;
ready(): Promise<void>;
load(): void;
play(): void;
pause(): void;
getView(): HTMLElement;
getVideoElement(): HTMLVideoElement | undefined;
reset(isChangeMedia?: boolean): void;
destroy(): void;
isLive(): boolean;
isOnLiveEdge(): boolean;
isDvr(): boolean;
isUntimedImg(): boolean;
isUntimedDocument(): boolean;
isImage(): boolean;
isDocument(): boolean;
isAudio(): boolean;
seekToLiveEdge(): void;
getStartTimeOfDvrWindow(): number;
getTracks(type?: TrackTypes): Array<Track>;
getActiveTracks(): any;
selectTrack(track: Track): void;
hideTextTrack(): void;
showTextTrack(): void;
enableAdaptiveBitrate(): void;
isAdaptiveBitrateEnabled(): boolean;
setTextDisplaySettings(settings: any): void;
get textDisplaySetting(): any;
isFullscreen(): boolean;
notifyEnterFullscreen(): void;
notifyExitFullscreen(): void;
enterFullscreen(fullScreenElementId?: string): void;
exitFullscreen(): void;
enterPictureInPicture(): void;
exitPictureInPicture(): void;
isInPictureInPicture(): boolean;
isPictureInPictureSupported(): boolean;
getLogLevel(name?: string): any;
startCasting(type: string): Promise<void>;
setIsCastInitiator(type: string, isCastInitiator: boolean): void;
isCastAvailable(type?: string): boolean;
getCastSession(): RemoteSession | null;
stopCasting(): void;
isCasting(): boolean;
isVr(): boolean;
toggleVrStereoMode(): void;
isInVrStereoMode(): boolean;
setLogLevel(level: any, name?: string): void;
getThumbnail(time?: number): ThumbnailInfo | null;
set textStyle(style: TextStyle);
get textStyle(): TextStyle;
get buffered(): TimeRanges | null;
get stats(): any;
set currentTime(to: number);
get currentTime(): number | null;
get duration(): number | null;
get liveDuration(): number | null;
/**
* In VOD playback this setter is like the regular `currentTime` setter.
* In live playback this setter normalizes the seek point to be relative to the start of the DVR window.
* This setter is useful to display a seekbar presents the available seek range only.
* @param {Number} to - The number to set in seconds (from 0 to the normalized duration).
*/
set normalizedCurrentTime(to: number);
/**
* In VOD playback this getter is like the regular `currentTime` getter.
* In live playback this getter normalizes the current time to be relative to the start of the DVR window.
* This getter is useful to display a seekbar presents the available seek range only.
*/
get normalizedCurrentTime(): number | null;
/**
* In VOD playback this getter is like the regular `duration` getter.
* In live playback this getter normalizes the duration to be relative to the start of the DVR window.
* This getter is useful to display a seekbar presents the available seek range only.
*/
get normalizedDuration(): number | null;
set volume(vol: number);
get volume(): number | null;
get paused(): boolean | null;
get seeking(): boolean | null;
set playsinline(playsinline: boolean);
get playsinline(): boolean | null;
set muted(mute: boolean);
get muted(): boolean | null;
get src(): string | null;
get videoHeight(): number | null;
get videoWidth(): number | null;
set dimensions(dimensions: PKPlayerDimensions);
get dimensions(): PKPlayerDimensions;
get poster(): string;
get ended(): boolean | null;
set playbackRate(rate: number);
get playbackRate(): number | null;
get playbackRates(): Array<number>;
get defaultPlaybackRate(): number;
get engineType(): string;
get streamType(): string;
get env(): any;
get selectedSource(): PKMediaSourceObject | null;
get sources(): PKSourcesConfigObject;
get config(): KalturaPlayerConfig;
get hasUserInteracted(): boolean;
set loadingMedia(loading: boolean);
get ads(): AdsController | undefined;
get plugins(): {
[name: string]: BasePlugin;
};
get provider(): Provider;
get ui(): UIWrapper;
/**
* The playlist controller.
* @type {PlaylistManager}
* @instance
* @memberof KalturaPlayer
* @example
* KalturaPlayer.playlist.playNext();
*/
get playlist(): PlaylistManager;
get Event(): KPEventTypes;
get TextStyle(): typeof TextStyle;
get ViewabilityType(): typeof ViewabilityType;
get State(): typeof StateType;
get Track(): typeof TrackType;
get LogLevelType(): Record<keyof LoggerLevels, keyof LoggerLevels>;
get LogLevel(): LoggerLevels;
get AbrMode(): typeof AbrMode;
get MediaType(): typeof MediaType;
get StreamType(): typeof StreamType;
get EngineType(): typeof EngineType;
get Error(): typeof Error_2;
private _addBindings;
private _onChangeSourceEnded;
private _onPlayerReset;
private _onChangeSourceStarted;
private _onEnded;
private _onPlaybackEnded;
private _onAdStarted;
private _onAdAutoplayFailed;
private _configureOrLoadPlugins;
private _maybeCreateAdsController;
attachMediaSource(): void;
detachMediaSource(): void;
private _resetProviderPluginsConfig;
/**
* Set crossOrigin attribute.
* @param {?string} crossOrigin - 'anonymous', 'use-credentials' or null to remove attribute
* anonymous: CORS requests for this element will not have the credentials flag set.
* use-credentials: CORS requests for this element will have the credentials flag set; this means the request will provide credentials.
*/
set crossOrigin(crossOrigin: string);
/**
* Get crossOrigin attribute.
* @returns {?string} - 'anonymous' or 'use-credentials'
*/
get crossOrigin(): string | null;
/**
* Gets the player visibility state
* @returns {boolean} - whether the player is in the active browser tab and visible in the view port
* @public