@playkit-js/playkit-js-dash
Version:
[](https://github.com/kaltura/playkit-js-dash/actions/workflows/run_canary_full_flow.yaml) [ • 15.9 kB
TypeScript
import { AudioTrack } from '@playkit-js/playkit-js';
import { BaseMediaSourceAdapter } from '@playkit-js/playkit-js';
import { ILogger } from 'js-logger';
import { ImageTrack } from '@playkit-js/playkit-js';
import { IMediaSourceAdapter } from '@playkit-js/playkit-js';
import { PKABRRestrictionObject } from '@playkit-js/playkit-js';
import { PKDrmConfigObject } from '@playkit-js/playkit-js';
import { PKDrmDataObject } from '@playkit-js/playkit-js';
import { PKMediaSourceObject } from '@playkit-js/playkit-js';
import { TextTrack as TextTrack_2 } from '@playkit-js/playkit-js';
import { ThumbnailInfo } from '@playkit-js/playkit-js';
import { VideoTrack } from '@playkit-js/playkit-js';
/**
* Adapter of shaka lib for dash content
* @classdesc
*/
declare class DashAdapter extends BaseMediaSourceAdapter {
/**
* The id of Adapter
* @member {string} id
* @static
* @public
*/
static id: string;
/**
* The adapter logger
* @member {any} _logger
* @private
* @static
*/
protected static _logger: ILogger;
static textContainerClass: string;
/**
* The supported mime type by the dash adapter
* @member {string} _dashMimeType
* @static
* @private
*/
private static _dashMimeType;
/**
* The DRM protocols implementations for dash adapter.
* @type {Array<Function>}
* @private
* @static
*/
private static _drmProtocols;
/**
* The DRM protocols available for the current playback.
* @type {Array<Function>}
* @private
* @static
*/
private static _availableDrmProtocol;
/**
* The shaka Lib
* @member {any} _shakaLib
* @private
*/
private _shakaLib;
/**
* The shaka player instance
* @member {any} _shaka
* @private
*/
private _shaka;
/**
* an object containing all the events we bind and unbind to.
* @member {Object} - _adapterEventsBindings
* @type {Object}
* @private
*/
private _adapterEventsBindings;
/**
* The buffering state flag
* @member {boolean} - _buffering
* @type {boolean}
* @private
*/
private _buffering;
/**
* Whether 'waiting' event has been sent by the HTMLVideoElement
* @member {boolean} - _waitingSent
* @type {boolean}
* @private
*/
private _waitingSent;
/**
* Whether 'playing' event has been sent by the HTMLVideoElement
* @member {boolean} - _playingSent
* @type {boolean}
* @private
*/
private _playingSent;
/**
* Video size update timer
* @type {null|number}
* @private
*/
private _videoSizeUpdateTimer;
/**
* stall interval to break the stall on Smart TV
* @type {null|IntervalID}
* @private
*/
private _stallInterval;
/**
* 3016 is the number of the video error at shaka, we already listens to it in the html5 class
* @member {number} - VIDEO_ERROR_CODE
* @type {number}
* @private
*/
VIDEO_ERROR_CODE: number;
/**
* The last time detach occurred
* @type {number}
* @private
*/
private _lastTimeDetach;
/**
* Whether the request filter threw an error
* @type {boolean}
* @private
*/
private _requestFilterError;
/**
* Whether the response filter threw an error
* @type {boolean}
* @private
*/
private _responseFilterError;
/**
* Whether async destroy is in progress
* @type {boolean}
* @private
*/
private _isDestroyInProgress;
/**
* Custom dash manifest parser.
* @type {DashManifestParser}
* @private
*/
private _manifestParser;
/**
* error counter to change severity
* @type ErrorEventsType
* @private
*/
private _errorCounter;
/**
* Dash thumbnail controller.
* @type {DashThumbnailController}
* @private
*/
private _thumbnailController;
private _isStartOver;
private _seekRangeStart;
private _startOverTimeout;
private _isLive;
private _isStaticLive;
private _selectedVideoTrack;
private _playbackActualUri;
applyTextTrackStyles(sheet: CSSStyleSheet, styles: any, containerId: string): void;
/**
* Factory method to create media source adapter.
* @function createAdapter
* @param {HTMLVideoElement} videoElement - The video element that the media source adapter work with.
* @param {PKMediaSourceObject} source - The source Object.
* @param {Object} config - The player configuration.
* @returns {IMediaSourceAdapter} - New instance of the run time media source adapter.
* @static
*/
static createAdapter(videoElement: HTMLVideoElement, source: PKMediaSourceObject, config: any): IMediaSourceAdapter;
/**
* Checks if dash adapter can play a given mime type
* @function canPlayType
* @param {string} mimeType - The mime type to check
* @returns {boolean} - Whether the dash adapter can play a specific mime type
* @static
*/
static canPlayType(mimeType: string): boolean;
/**
* set 'bitrate' the max bandwidth (if possible)
* @param {number} bitrate the max bitrate allowed
* @returns {void}
*/
setMaxBitrate(bitrate: number): void;
private _getSortedTracks;
private _hasLowerOrEqualBitrate;
/**
* Checks if dash adapter can play a given drm data.
* @param {Array<Object>} drmData - The drm data to check.
* @param {PKDrmConfigObject} drmConfig - The drm config.
* @returns {boolean} - Whether the dash adapter can play a specific drm data.
* @static
*/
static canPlayDrm(drmData: Array<PKDrmDataObject>, drmConfig: PKDrmConfigObject): boolean;
/**
* Checks if the dash adapter is supported
* @function isSupported
* @returns {boolean} - Whether dash is supported.
* @static
*/
static isSupported(): boolean;
/**
* @constructor
* @param {HTMLVideoElement} videoElement - The video element which bind to the dash adapter
* @param {PKMediaSourceObject} source - The source object
* @param {Object} config - The media source adapter configuration
*/
constructor(videoElement: HTMLVideoElement, source: PKMediaSourceObject, config?: any);
/**
* Runs the initialization actions of the dash adapter.
* @private
* @returns {void}
*/
private _init;
private _clearStallInterval;
private _stallHandler;
/**
* register to event to break the stalls on smart TV
* @returns {void}
* @private
*/
private _maybeBreakStalls;
/**
* get the redirected URL
* @param {string} url - The url to check for redirection
* @returns {Promise<string>} - the resolved url
* @private
*/
private _maybeGetRedirectedUrl;
private _maybeSetFilters;
/**
* Configure drm for shaka player.
* @private
* @returns {void}
*/
private _maybeSetDrmConfig;
/**
* apply Capping to player size restrictions
* @private
* @returns {void}
*/
private _maybeCapLevelToPlayerSize;
/**
* apply ABR restrictions
* @private
* @returns {void}
*/
private _maybeApplyAbrRestrictions;
/**
* apply ABR restrictions by size
* @private
* @param {PKABRRestrictionObject} restrictions - abr restrictions config
* @returns {void}
*/
private _updateRestriction;
private _getRestrictionShakaConfig;
/**
* attach media - return the media source to handle the video tag
* @public
* @returns {void}
*/
attachMediaSource(): void;
/**
* detach media - will remove the media source from handling the video
* @public
* @returns {Promise<void>} - detach promise
*/
detachMediaSource(): Promise<void>;
/**
* Clear the video update timer
* @private
* @returns {void}
*/
private _clearVideoUpdateTimer;
private get _videoWidth();
private get _videoHeight();
private get _contentScaleFactor();
/**
* Add the required bindings to shaka.
* @function _addBindings
* @private
* @returns {void}
*/
private _addBindings;
private _onLoadedData;
_switchFromDynamicToStatic(): Promise<void>;
private _setLowLatencyMode;
/**
* Custom parser to retrieve image adaptation sets.
* @param {ArrayBuffer} manifestBuffer - The array buffer manifest from the response.
* @function _parseManifest
* @private
* @returns {void}
*/
private _parseManifest;
/**
* Load the video source
* @param {number} startTime - Optional time to start the video from.
* @function load
* @override
*/
load(startTime?: number): Promise<any>;
/**
* Destroys the dash adapter
* @function destroy
* @override
* @returns {Promise<*>} - The destroy promise.
*/
destroy(): Promise<void>;
/**
* Returns in-stream thumbnail for a chosen time.
* @param {number} time - playback time.
* @public
* @return {?ThumbnailInfo} - Thumbnail info
*/
getThumbnail(time: number): ThumbnailInfo | null;
/**
* Reset shaka instance and its bindings
* @function _reset
* @private
* @returns {Promise<*>} - The destroy promise.
*/
private _reset;
/**
* Remove mediaKeys from the video element.
* mediaKeys are set if an encrypted media was previously played, and must be removed before a new encrypted media can be played.
* If mediaKeys are not null it means that shaka reset wasn't called or that it failed to remove them.
* @returns {Promise<void>} Promise that resolves when the operation finishes.
*/
_removeMediaKeys(): Promise<void>;
/**
* Get the original video tracks
* @function _getVideoTracks
* @returns {Array<Object>} - The original video tracks
* @private
*/
private _getVideoTracks;
private _getActiveTrack;
/**
* Get the original audio tracks
* @function _getAudioTracks
* @returns {Array<Object>} - Array of objects with unique language and label.
* @private
*/
private _getAudioTracks;
/**
* Get the parsed tracks
* @function _getParsedTracks
* @returns {Array<Track>} - The parsed tracks
* @private
*/
private _getParsedTracks;
/**
* Get the parsed video tracks
* @function _getParsedVideoTracks
* @returns {Array<VideoTrack>} - The parsed video tracks
* @private
*/
private _getParsedVideoTracks;
/**
* Get the parsed audio tracks
* @function _getParsedAudioTracks
* @returns {Array<AudioTrack>} - The parsed audio tracks
* @private
*/
private _getParsedAudioTracks;
/**
* Get the parsed text tracks
* @function _getParsedTextTracks
* @returns {Array<TextTrack>} - The parsed text tracks
* @private
*/
private _getParsedTextTracks;
/**
* Get the parsed image tracks
* @function _getParsedImageTracks
* @returns {Array<ImageTrack>} - The parsed image tracks
* @private
*/
private _getParsedImageTracks;
/**
* Select a video track
* @function selectVideoTrack
* @param {VideoTrack} videoTrack - the video track to select
* @returns {void}
* @public
*/
selectVideoTrack(videoTrack: VideoTrack): void;
/**
* Select an audio track
* @function selectAudioTrack
* @param {AudioTrack} audioTrack - the audio track to select
* @returns {void}
* @public
*/
selectAudioTrack(audioTrack: AudioTrack): void;
/**
* Select a text track
* @function selectTextTrack
* @param {TextTrack} textTrack - the track to select
* @returns {void}
* @public
*/
selectTextTrack(textTrack: TextTrack_2): void;
selectImageTrack(imageTrack: ImageTrack): void;
/**
* Hide the text track
* @function hideTextTrack
* @returns {void}
* @public
*/
hideTextTrack(): void;
/**
* Enables adaptive bitrate switching
* @function enableAdaptiveBitrate
* @returns {void}
* @public
*/
enableAdaptiveBitrate(): void;
/**
* Checking if adaptive bitrate switching is enabled.
* @function isAdaptiveBitrateEnabled
* @returns {boolean} - Whether adaptive bitrate is enabled.
* @public
*/
isAdaptiveBitrateEnabled(): boolean;
/**
* Apply ABR restriction.
* @function applyABRRestriction
* @param {PKABRRestrictionObject} restrictions - abr restrictions config
* @returns {void}
* @public
*/
applyABRRestriction(restrictions: PKABRRestrictionObject): void;
/**
* Returns the live edge
* @returns {number} - live edge
* @private
*/
protected _getLiveEdge(): number;
/**
* Seeking to live edge.
* @function seekToLiveEdge
* @returns {void}
* @public
*/
seekToLiveEdge(): void;
/**
* Checking if the current playback is live.
* @function isLive
* @returns {boolean} - Whether playback is live.
* @public
*/
isLive(): boolean;
/**
* Gets the segment duration of the stream
* @return {number} - Segment duration in seconds
*/
get liveDuration(): number;
/**
* Gets the live duration
* @return {number} - live duration
*/
getSegmentDuration(): number;
/**
* An handler to shaka adaptation event
* @function _onAdaptation
* @returns {void}
* @private
*/
private _onAdaptation;
/**
* An handler to shaka error event
* @function _onError
* @param {any} event - the error event
* @returns {void}
* @private
*/
private _onError;
private _shouldErrorChangeSeverity;
/**
* An handler to shaka buffering event
* @function _onBuffering
* @param {any} event - the buffering event
* @returns {void}
* @private
*/
private _onBuffering;
private _dispatchNativeEvent;
/**
* An handler to shaka drm session update event
* @function _onDrmSessionUpdate
* @returns {void}
* @private
*/
private _onDrmSessionUpdate;
/**
* An handler to shaka emsg event
* @function _onEmsg
* @param {any} event - the emsg event
* @returns {void}
* @private
*/
private _onEmsg;
/**
* An handler to HTMLVideoElement waiting event
* @function _onWaiting
* @returns {void}
* @private
*/
private _onWaiting;
/**
* An handler to HTMLVideoElement playing event
* @function _onPlaying
* @returns {void}
* @private
*/
private _onPlaying;
/**
* Get the start time of DVR window in live playback in seconds.
* @returns {Number} - start time of DVR window.
* @public
*/
getStartTimeOfDvrWindow(): number;
/**
* gets the target buffer of the player
* @returns {number} - buffer length target in seconds
*/
get targetBuffer(): number;
getDrmInfo(): PKDrmDataObject | null;
}
export default DashAdapter;
export declare const NAME: string;
export declare const VERSION: string;
export { }