@byomakase/omakase-player
Version:
## Omakase Player - Open source JavaScript framework for building frame accurate video experiences
178 lines (177 loc) • 10.5 kB
TypeScript
import Hls from 'hls.js';
import { BehaviorSubject, Observable } from 'rxjs';
import { AudioLoadedEvent, AudioPeakProcessorMessageEvent, AudioSwitchedEvent, HelpMenuGroup, MainAudioChangeEvent, OmpAudioTrack, OmpNamedEvent, OmpNamedEventEventName, SidecarAudioChangeEvent, SidecarAudioCreateEvent, SidecarAudioPeakProcessorMessageEvent, SidecarAudioRemoveEvent, SubtitlesCreateEvent, SubtitlesEvent, SubtitlesLoadedEvent, SubtitlesVttTrack, ThumnbailVttUrlChangedEvent, VideoBufferingEvent, VideoEndedEvent, VideoErrorEvent, VideoFullscreenChangeEvent, VideoHelpMenuChangeEvent, VideoLoadedEvent, VideoLoadingEvent, VideoPlaybackRateEvent, VideoPlayEvent, VideoSafeZoneChangeEvent, VideoSeekedEvent, VideoSeekingEvent, VideoTimeChangeEvent, VideoVolumeEvent, VideoWindowPlaybackStateChangeEvent } from '../types';
import { AudioMeterStandard, PlaybackState, Video, VideoControllerApi, VideoLoadOptions } from './index';
import { VideoControllerConfig } from './video-controller';
import { TypedOmpBroadcastChannel } from '../common/omp-broadcast-channel';
import { MessageChannelActionsMap } from './channel-types';
import { AudioInputOutputNode, BufferedTimespan, OmpAudioRouterState, OmpMainAudioState, OmpSidecarAudioState, VideoLoadOptionsInternal, VideoSafeZone, VideoWindowPlaybackState } from './model';
import { OmpAudioRouter } from './audio-router';
import { SidecarAudioApi } from '../api/sidecar-audio-api';
export declare class RemoteVideoController implements VideoControllerApi {
private readonly _messageChannel;
private readonly _attachVideoWindowHook;
private readonly _get_onVideoLoaded$;
private readonly _get_onAudioLoaded$;
private readonly _get_onSubtitlesLoaded$;
private readonly _get_onMainAudioChange$;
/**
* Tracks VideoController.getPlaybackState()
* @private
*/
private _playbackState;
private _currentTime;
private _videoElementVolume;
private _videoElementMuted;
private _videoElementPlaybackRate;
private _documentFullscreen;
private _videoSafeZones;
private _videoHelpMenuGroups;
private _bufferedTimespans;
private _subtitlesTracks;
private _activeSubtitlesTrack;
private _activeAudioTrack;
private _sidecarAudioStates;
private _thumbnailVttUrl;
private _activeNamedEventStreams;
private _destroyed$;
constructor(messageChannel: TypedOmpBroadcastChannel<MessageChannelActionsMap>, attachVideoWindowHook: () => Observable<void>);
destroy(): void;
get onVideoLoaded$(): BehaviorSubject<VideoLoadedEvent | undefined>;
get onVideoLoading$(): Observable<VideoLoadingEvent>;
get onPlay$(): Observable<VideoPlayEvent>;
get onPause$(): Observable<VideoPlayEvent>;
get onVideoTimeChange$(): Observable<VideoTimeChangeEvent>;
get onSeeking$(): Observable<VideoSeekingEvent>;
get onSeeked$(): Observable<VideoSeekedEvent>;
get onBuffering$(): Observable<VideoBufferingEvent>;
get onEnded$(): Observable<VideoEndedEvent>;
get onAudioSwitched$(): Observable<AudioSwitchedEvent>;
get onPlaybackState$(): Observable<PlaybackState>;
get onPlaybackRateChange$(): Observable<VideoPlaybackRateEvent>;
get onHelpMenuChange$(): Observable<VideoHelpMenuChangeEvent>;
get onVideoWindowPlaybackStateChange$(): Observable<VideoWindowPlaybackStateChangeEvent>;
get onVideoError$(): Observable<VideoErrorEvent>;
get onVolumeChange$(): Observable<VideoVolumeEvent>;
get onFullscreenChange$(): Observable<VideoFullscreenChangeEvent>;
get onVideoSafeZoneChange$(): Observable<VideoSafeZoneChangeEvent>;
get onAudioLoaded$(): BehaviorSubject<AudioLoadedEvent | undefined>;
get onSubtitlesLoaded$(): BehaviorSubject<SubtitlesLoadedEvent | undefined>;
get onSubtitlesCreate$(): Observable<SubtitlesCreateEvent>;
get onSubtitlesHide$(): Observable<SubtitlesEvent>;
get onSubtitlesRemove$(): Observable<SubtitlesEvent>;
get onSubtitlesShow$(): Observable<SubtitlesEvent>;
get onMainAudioChange$(): Observable<MainAudioChangeEvent | undefined>;
get onMainAudioPeakProcessorMessage$(): Observable<AudioPeakProcessorMessageEvent>;
get onSidecarAudioCreate$(): Observable<SidecarAudioCreateEvent>;
get onSidecarAudioRemove$(): Observable<SidecarAudioRemoveEvent>;
get onSidecarAudioChange$(): Observable<SidecarAudioChangeEvent>;
get onSidecarAudioPeakProcessorMessage$(): Observable<SidecarAudioPeakProcessorMessageEvent>;
get onThumbnailVttUrlChanged$(): Observable<ThumnbailVttUrlChangedEvent>;
get onActiveNamedEventStreamsChange$(): Observable<OmpNamedEventEventName[]>;
get onNamedEvent$(): Observable<OmpNamedEvent>;
loadVideoInternal(sourceUrl: string, frameRate: number | string, options: VideoLoadOptions | undefined, optionsInternal: VideoLoadOptionsInternal): Observable<Video>;
loadVideo(sourceUrl: string, frameRate: string | number, options?: VideoLoadOptions | undefined): Observable<Video>;
reloadVideo(): Observable<Video>;
getPlaybackState(): PlaybackState | undefined;
getBufferedTimespans(): BufferedTimespan[];
isVideoLoaded(): boolean;
getVideo(): Video | undefined;
getVideoLoadOptions(): VideoLoadOptions | undefined;
getHTMLVideoElement(): HTMLVideoElement;
getAudioContext(): AudioContext;
getMainAudioRouter(): OmpAudioRouter | undefined;
getDuration(): number;
getCurrentTime(): number;
getCurrentTimecode(): string;
getPlaybackRate(): number;
setPlaybackRate(playbackRate: number): Observable<void>;
getVolume(): number;
setVolume(volume: number): Observable<void>;
getCurrentFrame(): number;
getFrameRate(): number;
getTotalFrames(): number;
isPlaying(): boolean;
isPaused(): boolean;
isSeeking(): boolean;
pause(): Observable<void>;
play(): Observable<void>;
togglePlayPause(): Observable<void>;
seekToFrame(frame: number): Observable<boolean>;
seekFromCurrentFrame(framesCount: number): Observable<boolean>;
seekFromCurrentTime(timeAmount: number): Observable<boolean>;
seekPreviousFrame(): Observable<boolean>;
seekNextFrame(): Observable<boolean>;
seekToTime(time: number): Observable<boolean>;
seekToTimecode(timecode: string): Observable<boolean>;
seekToPercent(percent: number): Observable<boolean>;
seekToEnd(): Observable<boolean>;
formatToTimecode(time: number): string;
parseTimecodeToFrame(timecode: string): number;
parseTimecodeToTime(timecode: string): number;
calculateTimeToFrame(time: number): number;
calculateFrameToTime(frameNumber: number): number;
mute(): Observable<void>;
unmute(): Observable<void>;
isMuted(): boolean;
toggleMuteUnmute(): Observable<void>;
isFullscreen(): boolean;
toggleFullscreen(): Observable<void>;
appendHelpMenuGroup(helpMenuGroup: HelpMenuGroup): Observable<void>;
prependHelpMenuGroup(helpMenuGroup: HelpMenuGroup): Observable<void>;
clearHelpMenuGroups(): Observable<void>;
getHelpMenuGroups(): HelpMenuGroup[];
addSafeZone(videoSafeZone: VideoSafeZone): Observable<VideoSafeZone>;
removeSafeZone(id: string): Observable<void>;
clearSafeZones(): Observable<void>;
getSafeZones(): VideoSafeZone[];
getVideoWindowPlaybackState(): VideoWindowPlaybackState;
isDetachable(): boolean;
canDetach(): boolean;
canAttach(): boolean;
detachVideoWindow(): Observable<void>;
attachVideoWindow(): Observable<void>;
private validateVideoLoaded;
createSubtitlesVttTrack(subtitlesVttTrack: SubtitlesVttTrack): Observable<SubtitlesVttTrack | undefined>;
getSubtitlesTracks(): SubtitlesVttTrack[];
getActiveSubtitlesTrack(): SubtitlesVttTrack | undefined;
hideSubtitlesTrack(id: string): Observable<void>;
removeAllSubtitlesTracks(): Observable<void>;
removeSubtitlesTrack(id: string): Observable<void>;
showSubtitlesTrack(id: string): Observable<void>;
getActiveAudioTrack(): OmpAudioTrack | undefined;
getAudioTracks(): OmpAudioTrack[];
setActiveAudioTrack(id: string): Observable<void>;
createMainAudioRouter(inputsNumber: number, outputsNumber?: number): Observable<OmpAudioRouterState>;
createMainAudioRouterWithOutputsResolver(inputsNumber: number, outputsNumberResolver: (maxChannelCount: number) => number): Observable<OmpAudioRouterState>;
createMainAudioPeakProcessor(audioMeterStandard?: AudioMeterStandard): Observable<Observable<AudioPeakProcessorMessageEvent>>;
getMainAudioSourceNode(): AudioNode;
getMainAudioState(): OmpMainAudioState | undefined;
routeMainAudioRouterNodes(newAudioInputOutputNodes: AudioInputOutputNode[]): Observable<void>;
getSidecarAudios(): SidecarAudioApi[];
getSidecarAudio(id: string): SidecarAudioApi | undefined;
getSidecarAudioStates(): OmpSidecarAudioState[];
createSidecarAudioTrack(track: Partial<OmpAudioTrack>): Observable<OmpAudioTrack>;
createSidecarAudioTracks(tracks: Partial<OmpAudioTrack>[]): Observable<OmpAudioTrack[]>;
activateSidecarAudioTracks(ids: string[], deactivateOthers: boolean | undefined): Observable<void>;
deactivateSidecarAudioTracks(ids: string[]): Observable<void>;
getActiveSidecarAudioTracks(): OmpAudioTrack[];
getSidecarAudioTracks(): OmpAudioTrack[];
removeSidecarAudioTracks(ids: string[]): Observable<void>;
removeAllSidecarAudioTracks(): Observable<void>;
createSidecarAudioRouter(sidecarAudioTrackId: string, inputsNumber: number, outputsNumber?: number): Observable<OmpAudioRouterState>;
routeSidecarAudioRouterNodes(sidecarAudioTrackId: string, newAudioInputOutputNodes: AudioInputOutputNode[]): Observable<void>;
createSidecarAudioPeakProcessor(sidecarAudioTrackId: string, audioMeterStandard?: AudioMeterStandard): Observable<Observable<AudioPeakProcessorMessageEvent>>;
exportMainAudioTrackToSidecar(mainAudioTrackId: string): Observable<OmpAudioTrack>;
exportMainAudioTracksToSidecar(mainAudioTrackIds: string[]): Observable<OmpAudioTrack[]>;
getThumbnailVttUrl(): string | undefined;
loadThumbnailVttUrl(thumbnailVttUrl: string): Observable<void>;
isPiPSupported(): boolean;
enablePiP(): Observable<void>;
disablePiP(): Observable<void>;
getConfig(): VideoControllerConfig;
getHls(): Hls | undefined;
updateActiveNamedEventStreams(eventNames: OmpNamedEventEventName[]): Observable<void>;
getActiveNamedEventStreams(): OmpNamedEventEventName[];
loadBlackVideo(): Observable<Video>;
}