playable
Version:
Video player based on HTML5Video
307 lines (306 loc) • 8.18 kB
TypeScript
import { IPlaybackEngineAPI, IPlaybackEngine, IPlaybackEngineDependencies, IVideoOutput, PlayableMediaSource, CrossOriginValue, PreloadType, IEngineDebugInfo } from './types';
declare class Engine implements IPlaybackEngine {
static moduleName: string;
static dependencies: string[];
private _eventEmitter;
private _config;
private _output;
private _defaultOutput;
constructor({ eventEmitter, nativeOutput, config, }: IPlaybackEngineDependencies);
private _applyConfig;
getElement(): HTMLVideoElement;
get isDynamicContent(): boolean;
get isDynamicContentEnded(): boolean;
get isSeekAvailable(): boolean;
get isMetadataLoaded(): boolean;
get isPreloadActive(): boolean;
get isAutoPlayActive(): boolean;
get isSyncWithLive(): boolean;
/**
* Method for setting source of video to player.
* @param src Array with multiple sources
* @param callback
* @example
* player.setSrc([
* 'https://my-url/video.mp4',
* 'https://my-url/video.webm',
* 'https://my-url/video.m3u8'
* ]);
* @note
* Read more about [video source](/video-source)
*/
setSrc(src: PlayableMediaSource, callback?: Function): void;
/**
* Return current source of video
* @example
* player.getSrc(); // ['https://my-url/video.mp4']
*/
getSrc(): PlayableMediaSource;
reset(): void;
/**
* Start playback
* @example
* player.play();
*/
play(): void;
/**
* Pause playback
* @example
* player.pause();
*/
pause(): void;
/**
* Toggle (play\pause) playback of video
* @example
* player.togglePlayback();
*/
togglePlayback(): void;
/**
* Reset video playback
* @example
* player.play();
* console.log(player.isPaused); // false
* ...
* player.resetPlayback();
* console.log(player.isPaused); // true;
* console.log(player.getCurrentTime()); //0;
*/
resetPlayback(): void;
/**
* High level state of video playback. Returns true if playback is paused.
* For more advance state use `getPlaybackState`
* @example
* player.play();
* console.log(player.isPaused);
*/
get isPaused(): boolean;
/**
* High level state of video playback. Returns true if playback is ended. Also note, that `isPaused` will return `true` if playback is ended also.
* For more advance state use `getPlaybackState`
* @example
* player.play();
* console.log(player.isEnded);
*/
get isEnded(): boolean;
/**
* Method for synchronize current playback with live point. Available only if you playing live source.
* @example
* player.syncWithLive();
*/
syncWithLive(): void;
/**
* Method for going forward in playback by your value
* @param sec - Value in seconds
* @example
* player.seekForward(5);
*/
seekForward(sec: number): void;
/**
* Method for going backward in playback by your value
* @param sec - Value in seconds
* @example
* player.seekBackward(5);
*/
seekBackward(sec: number): void;
/**
* Set volume
* @param volume - Volume value `0..100`
* @example
* player.setVolume(50);
*/
setVolume(volume: number): void;
/**
* Get volume
* @example
* player.getVolume(); // 50
*/
getVolume(): number;
/**
* Method for increasing current volume by value
* @param value - Value from 0 to 100
* @example
* player.increaseVolume(30);
*/
increaseVolume(value: number): void;
/**
* Method for decreasing current volume by value
* @param value - Value from 0 to 100
* @example
* player.decreaseVolume(30);
*/
decreaseVolume(value: number): void;
setMute(isMuted: boolean): void;
/**
* Mute the video
* @example
* player.mute();
*/
mute(): void;
/**
* Unmute the video
* @example
* player.unmute(true);
*/
unmute(): void;
/**
* Get mute flag
* @example
* player.mute();
* player.isMuted; // true
* player.unmute();
* player.isMuted: // false
*/
get isMuted(): boolean;
/**
* Set autoplay flag
* @example
* player.setAutoplay();
*/
setAutoplay(isAutoplay: boolean): void;
/**
* Get autoplay flag
* @example
* player.getAutoplay(); // true
*/
getAutoplay(): boolean;
/**
* Set loop flag
* @param isLoop - If `true` video will be played again after it will finish
* @example
* player.setLoop(true);
*/
setLoop(isLoop: boolean): void;
/**
* Get loop flag
* @example
* player.getLoop(); // true
*/
getLoop(): boolean;
/**
* Method for setting playback rate
*/
setPlaybackRate(rate: number): void;
/**
* Return current playback rate
*/
getPlaybackRate(): number;
/**
* Set preload type
* @example
* player.setPreload('none');
*/
setPreload(preload: PreloadType): void;
/**
* Return preload type
* @example
* player.getPreload(); // none
*/
getPreload(): string;
/**
* Return current time of video playback
* @example
* player.getCurrentTime(); // 60.139683
*/
getCurrentTime(): number;
/**
* Method for seeking to time in video
* @param time - Time in seconds
* @example
* player.seekTo(34);
*/
seekTo(time: number): void;
/**
* Return duration of video
* @example
* player.getDuration(); // 180.149745
*/
getDuration(): number;
/**
* Return real width of video from metadata
* @example
* player.getVideoWidth(); // 400
*/
getVideoWidth(): number;
/**
* Return real height of video from metadata
* @example
* player.getVideoHeight(); // 225
*/
getVideoHeight(): number;
getBuffered(): TimeRanges;
/**
* Set playsinline flag
* @param isPlaysinline - If `false` - video will be played in full screen, `true` - inline
* @example
* player.setPlaysinline(true);
*/
setPlaysinline(isPlaysinline: boolean): void;
/**
* Get playsinline flag
* @example
* player.getPlaysinline(); // true
*/
getPlaysinline(): boolean;
/**
* Set crossorigin attribute for video
* @example
* player.setCrossOrigin('anonymous');
*/
setCrossOrigin(crossOrigin?: CrossOriginValue): void;
/**
* Get crossorigin attribute value for video
* @example
* player.getCrossOrigin(); // 'anonymous'
*/
getCrossOrigin(): CrossOriginValue;
/**
* Return current state of playback
*/
getCurrentState(): import("../../constants/engine-state").default;
/**
* Return object with internal debug info
*
* @example
* player.getDebugInfo();
*
* @note
* The above command returns JSON structured like this:
*
* @example
* {
* "type": "HLS",
* "viewDimensions": {
* "width": 700,
* "height": 394
* }
* "url": "https://example.com/video.m3u8",
* "currentTime": 22.092514,
* "duration": 60.139683,
* "loadingStateTimestamps": {
* "metadata-loaded": 76,
* "ready-to-play": 67
* },
* "bitrates": [
* // Available bitrates
* "100000",
* "200000",
* ...
* ],
* // One of available bitrates, that used right now
* "currentBitrate": "100000",
* // Raw estimation of bandwidth, that could be used without playback stall
* "bwEstimate": "120000"
* "overallBufferLength": 60.139683,
* "nearestBufferSegInfo": {
* "start": 0,
* "end": 60.139683
* }
* }
*/
getDebugInfo(): IEngineDebugInfo;
destroy(): void;
changeOutput(output?: IVideoOutput, callback?: Function): void;
resetOutput(): void;
}
export { IPlaybackEngineAPI };
export default Engine;