unified-video-framework
Version:
Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more
70 lines • 3.19 kB
TypeScript
import { EventEmitter } from 'events';
import { VideoPlayerConfig, VideoSource, PlayerState, PlayerEvent, EventHandler, Quality, SubtitleTrack, AudioTrack, PlayerMetrics, PlayerError, DRMConfig } from './interfaces';
export declare abstract class VideoPlayer {
protected config: VideoPlayerConfig;
protected eventEmitter: EventEmitter;
protected state: PlayerState;
protected currentSource?: VideoSource;
protected metrics: PlayerMetrics;
protected errors: PlayerError[];
constructor(config?: VideoPlayerConfig);
abstract load(source: VideoSource): Promise<void>;
abstract play(): Promise<void>;
abstract pause(): void;
abstract stop(): void;
abstract seek(position: number): void;
abstract setVolume(volume: number): void;
abstract setPlaybackRate(rate: number): void;
abstract getCurrentTime(): number;
abstract getDuration(): number;
abstract getVolume(): number;
abstract getPlaybackRate(): number;
abstract isMuted(): boolean;
abstract setMuted(muted: boolean): void;
abstract getAvailableQualities(): Quality[];
abstract getCurrentQuality(): Quality | null;
abstract setQuality(quality: Quality): void;
abstract enableAutoQuality(enabled: boolean): void;
abstract getSubtitleTracks(): SubtitleTrack[];
abstract getCurrentSubtitleTrack(): SubtitleTrack | null;
abstract setSubtitleTrack(track: SubtitleTrack | null): void;
abstract getAudioTracks(): AudioTrack[];
abstract getCurrentAudioTrack(): AudioTrack | null;
abstract setAudioTrack(track: AudioTrack): void;
abstract enterFullscreen(): void;
abstract exitFullscreen(): void;
abstract isFullscreen(): boolean;
abstract enterPictureInPicture(): void;
abstract exitPictureInPicture(): void;
abstract isPictureInPicture(): boolean;
on(event: PlayerEvent, handler: EventHandler): void;
off(event: PlayerEvent, handler: EventHandler): void;
once(event: PlayerEvent, handler: EventHandler): void;
removeAllListeners(event?: PlayerEvent): void;
protected emit(event: PlayerEvent, data?: any): void;
getState(): PlayerState;
protected setState(newState: PlayerState): void;
getConfig(): VideoPlayerConfig;
updateConfig(config: Partial<VideoPlayerConfig>): void;
protected abstract applyConfig(): void;
getMetrics(): PlayerMetrics;
protected initializeMetrics(): PlayerMetrics;
protected generateSessionId(): string;
protected handleError(error: PlayerError): void;
protected trackAnalytics(event: string, data?: any): void;
protected abstract configureDRM(drmConfig: DRMConfig): Promise<void>;
abstract destroy(): void;
protected cleanup(): void;
protected formatTime(seconds: number): string;
private pad;
abstract getBufferedRanges(): TimeRanges;
abstract getSeekableRanges(): TimeRanges;
protected isBuffering(): boolean;
abstract getBandwidth(): number;
abstract getNetworkState(): number;
abstract getVideoWidth(): number;
abstract getVideoHeight(): number;
abstract getDroppedFrames(): number;
abstract getDecodedFrames(): number;
}
//# sourceMappingURL=VideoPlayer.d.ts.map