@byomakase/omakase-player
Version:
## Omakase Player - Open source JavaScript framework for building frame accurate video experiences
29 lines (28 loc) • 1.83 kB
TypeScript
import { Video, VideoLoadOptions } from './model';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { VideoControllerApi } from './video-controller-api';
import { AudioLoadedEvent, AudioSwitchedEvent, Destroyable, OmpAudioTrack, OmpNamedEvent, OmpNamedEventEventName, SubtitlesLoadedEvent } from '../types';
export interface VideoLoader extends Destroyable {
onNamedEvent$: Observable<OmpNamedEvent>;
onAudioLoaded$: BehaviorSubject<AudioLoadedEvent | undefined>;
onAudioSwitched$: Observable<AudioSwitchedEvent>;
onSubtitlesLoaded$: BehaviorSubject<SubtitlesLoadedEvent | undefined>;
loadVideo(sourceUrl: string, frameRate: number, options?: VideoLoadOptions): Observable<Video>;
setActiveAudioTrack(ompAudioTrackId: string): Observable<void>;
exportAudioTrack(ompAudioTrackId: string): Observable<Partial<OmpAudioTrack>>;
updateActiveNamedEventStreams(eventNames: OmpNamedEventEventName[]): void;
}
export declare abstract class BaseVideoLoader implements VideoLoader {
readonly onNamedEvent$: Subject<OmpNamedEvent>;
readonly onAudioLoaded$: BehaviorSubject<AudioLoadedEvent | undefined>;
readonly onAudioSwitched$: Subject<AudioSwitchedEvent>;
readonly onSubtitlesLoaded$: BehaviorSubject<SubtitlesLoadedEvent | undefined>;
protected _videoController: VideoControllerApi;
protected readonly _destroyed$: Subject<void>;
protected constructor(videoController: VideoControllerApi);
abstract loadVideo(sourceUrl: string, frameRate: number, options?: VideoLoadOptions): Observable<Video>;
abstract updateActiveNamedEventStreams(eventNames: OmpNamedEventEventName[]): void;
setActiveAudioTrack(ompAudioTrackId: string): Observable<void>;
exportAudioTrack(ompAudioTrackId: string): Observable<Partial<OmpAudioTrack>>;
destroy(): void;
}