@byomakase/omakase-player
Version:
## Omakase Player - Open source JavaScript framework for building frame accurate video experiences
205 lines (204 loc) • 14.1 kB
TypeScript
import { VideoControllerApi } from './video-controller-api';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { AudioLoadedEvent, AudioPeakProcessorMessageEvent, AudioSwitchedEvent, AudioUpdatedEvent, HelpMenuGroup, MainAudioChangeEvent, MainAudioInputSoloMuteEvent, OmpAudioTrack, OmpAudioTrackCreateType, OmpNamedEvent, OmpNamedEventEventName, SidecarAudioChangeEvent, SidecarAudioCreateEvent, SidecarAudioInputSoloMuteEvent, SidecarAudioLoadedEvent, SidecarAudioPeakProcessorMessageEvent, SidecarAudioRemoveEvent, SidecarAudiosChangeEvent, SidecarAudioVolumeChangeEvent, SubtitlesCreateEvent, SubtitlesEvent, SubtitlesLoadedEvent, SubtitlesVttTrack, ThumnbailVttUrlChangedEvent, VideoBufferingEvent, VideoEndedEvent, VideoErrorEvent, VideoFullscreenChangeEvent, VideoHelpMenuChangeEvent, VideoLoadedEvent, VideoLoadingEvent, VideoPlaybackRateEvent, VideoPlayEvent, VideoSafeZoneChangeEvent, VideoSeekedEvent, VideoSeekingEvent, VideoTimeChangeEvent, VideoWindowPlaybackStateChangeEvent, VolumeChangeEvent } from '../types';
import { AudioMeterStandard, BufferedTimespan, OmpAudioRouterState, OmpAudioRoutingConnection, OmpAudioRoutingPath, OmpMainAudioState, OmpSidecarAudioState, MediaElementPlaybackState, Video, VideoLoadOptions, VideoSafeZone, VideoWindowPlaybackState } from './index';
import { VideoControllerConfig } from './video-controller';
import Hls from 'hls.js';
import { OmpAudioRouter } from './audio-router';
import { SidecarAudioApi } from '../api/sidecar-audio-api';
import { OmpAudioEffectFactory, OmpAudioEffectFilter, OmpAudioEffectParam, OmpAudioEffectsGraphDef } from '../audio';
import { VideoKeyframe, VideoKeyframeOptions, OmpAudioRoutingInputType, OmpMainAudioInputSoloMuteState, OmpSidecarAudioInputSoloMuteState, VideoLoadOptionsInternal } from './model';
import { OmpAudioEffectsGraphConnection } from '../audio/model';
/**
* Used for switching between {@link VideoControllerApi} instances
*/
export declare class SwitchableVideoController implements VideoControllerApi {
readonly onVideoLoaded$: BehaviorSubject<VideoLoadedEvent | undefined>;
readonly onVideoLoading$: Subject<VideoLoadingEvent>;
readonly onAudioLoaded$: BehaviorSubject<AudioLoadedEvent | undefined>;
readonly onAudioSwitched$: Subject<AudioSwitchedEvent>;
readonly onAudioUpdated$: Subject<AudioUpdatedEvent>;
readonly onAudioOutputVolumeChange$: Subject<VolumeChangeEvent>;
readonly onSubtitlesLoaded$: BehaviorSubject<SubtitlesLoadedEvent | undefined>;
readonly onSubtitlesCreate$: Subject<SubtitlesCreateEvent>;
readonly onSubtitlesHide$: Subject<SubtitlesEvent>;
readonly onSubtitlesRemove$: Subject<SubtitlesEvent>;
readonly onSubtitlesShow$: Subject<SubtitlesEvent>;
readonly onPlay$: Subject<VideoPlayEvent>;
readonly onPause$: Subject<VideoPlayEvent>;
readonly onVideoTimeChange$: Subject<VideoTimeChangeEvent>;
readonly onSeeking$: Subject<VideoSeekingEvent>;
readonly onSeeked$: Subject<VideoSeekedEvent>;
readonly onBuffering$: Subject<VideoBufferingEvent>;
readonly onEnded$: Subject<VideoEndedEvent>;
readonly onVideoError$: Subject<VideoErrorEvent>;
readonly onVolumeChange$: Subject<VolumeChangeEvent>;
readonly onFullscreenChange$: Subject<VideoFullscreenChangeEvent>;
readonly onVideoSafeZoneChange$: Subject<VideoSafeZoneChangeEvent>;
readonly onPlaybackRateChange$: Subject<VideoPlaybackRateEvent>;
readonly onVideoWindowPlaybackStateChange$: Subject<VideoWindowPlaybackStateChangeEvent>;
readonly onHelpMenuChange$: Subject<VideoHelpMenuChangeEvent>;
readonly onPlaybackState$: Subject<MediaElementPlaybackState>;
readonly onThumbnailVttUrlChanged$: Subject<ThumnbailVttUrlChangedEvent>;
readonly onMainAudioChange$: BehaviorSubject<MainAudioChangeEvent | undefined>;
readonly onMainAudioPeakProcessorMessage$: Subject<AudioPeakProcessorMessageEvent>;
readonly onMainAudioInputSoloMute$: BehaviorSubject<MainAudioInputSoloMuteEvent | undefined>;
readonly onSidecarAudioCreate$: Subject<SidecarAudioCreateEvent>;
readonly onSidecarAudioLoaded$: Subject<SidecarAudioLoadedEvent>;
readonly onSidecarAudioRemove$: Subject<SidecarAudioRemoveEvent>;
readonly onSidecarAudioChange$: Subject<SidecarAudioChangeEvent>;
readonly onSidecarAudioVolumeChange$: Subject<SidecarAudioVolumeChangeEvent>;
readonly onSidecarAudioPeakProcessorMessage$: Subject<SidecarAudioPeakProcessorMessageEvent>;
readonly onSidecarAudioInputSoloMute$: Subject<SidecarAudioInputSoloMuteEvent>;
readonly onSidecarAudiosChange$: Subject<SidecarAudiosChangeEvent>;
readonly onActiveNamedEventStreamsChange$: Subject<OmpNamedEventEventName[]>;
readonly onNamedEvent$: Subject<OmpNamedEvent>;
protected _videoController: VideoControllerApi;
protected _eventBreaker$: Subject<void>;
protected _destroyed$: Subject<void>;
constructor(videoController: VideoControllerApi);
destroy(): void;
protected switchToController(videoController: VideoControllerApi): void;
protected attachEventListeners(videoController: VideoControllerApi): void;
addSafeZone(videoSafeZone: VideoSafeZone): Observable<VideoSafeZone>;
appendHelpMenuGroup(helpMenuGroup: HelpMenuGroup): Observable<void>;
calculateFrameToTime(frameNumber: number): number;
calculateTimeToFrame(time: number): number;
clearSafeZones(): Observable<void>;
getSafeZones(): VideoSafeZone[];
formatToTimecode(time: number): string;
getAudioTracks(): any[];
getBufferedTimespans(): BufferedTimespan[];
getActiveAudioTrack(): OmpAudioTrack | undefined;
getCurrentFrame(): number;
getCurrentTime(): number;
getCurrentTimecode(): string;
getDuration(): number;
getFrameRate(): number;
getHTMLVideoElement(): HTMLVideoElement;
getAudioContext(): AudioContext;
getAudioOutputNode(): AudioNode;
getSidecarAudiosOutputNode(): AudioNode;
getAudioOutputVolume(): number;
isAudioOutputMuted(): boolean;
setAudioOutputMuted(muted: boolean): Observable<void>;
toggleAudioOutputMuteUnmute(): Observable<void>;
muteAudioOutput(): Observable<void>;
unmuteAudioOutput(): Observable<void>;
setAudioOutputVolume(volume: number): Observable<void>;
getMainAudioRouter(): OmpAudioRouter | undefined;
getHelpMenuGroups(): HelpMenuGroup[];
getPlaybackRate(): number;
getPlaybackState(): MediaElementPlaybackState | undefined;
getTotalFrames(): number;
getVideo(): Video | undefined;
getVideoLoadOptions(): VideoLoadOptions | undefined;
getVolume(): number;
isFullscreen(): boolean;
isMuted(): boolean;
isPaused(): boolean;
isPlaying(): boolean;
isSeeking(): boolean;
isVideoLoaded(): boolean;
loadVideoInternal(sourceUrl: string, options: VideoLoadOptions | undefined, optionsInternal: VideoLoadOptionsInternal): Observable<Video>;
loadVideo(sourceUrl: string, options?: VideoLoadOptions): Observable<Video>;
reloadVideo(): Observable<Video>;
mute(): Observable<void>;
parseTimecodeToFrame(timecode: string): number;
parseTimecodeToTime(timecode: string): number;
pause(): Observable<void>;
play(): Observable<void>;
prependHelpMenuGroup(helpMenuGroup: HelpMenuGroup): Observable<void>;
clearHelpMenuGroups(): Observable<void>;
removeSafeZone(id: string): Observable<void>;
seekFromCurrentFrame(framesCount: number): Observable<boolean>;
seekFromCurrentTime(timeAmount: number): Observable<boolean>;
seekNextFrame(): Observable<boolean>;
seekPreviousFrame(): Observable<boolean>;
seekToFrame(frame: number): Observable<boolean>;
seekToPercent(percent: number): Observable<boolean>;
seekToEnd(): Observable<boolean>;
seekToTime(time: number): Observable<boolean>;
seekToTimecode(timecode: string): Observable<boolean>;
setActiveAudioTrack(id: string): Observable<void>;
updateAudioTrack(audioTrack: OmpAudioTrack): Observable<void>;
activateMainAudio(): Observable<void>;
deactivateMainAudio(): Observable<void>;
setPlaybackRate(playbackRate: number): Observable<void>;
setVolume(volume: number): Observable<void>;
toggleFullscreen(): Observable<void>;
toggleMuteUnmute(): Observable<void>;
togglePlayPause(): Observable<void>;
unmute(): Observable<void>;
getVideoWindowPlaybackState(): VideoWindowPlaybackState;
isDetachable(): boolean;
canDetach(): boolean;
canAttach(): boolean;
detachVideoWindow(): Observable<void>;
attachVideoWindow(): Observable<void>;
createSubtitlesVttTrack(subtitlesVttTrack: SubtitlesVttTrack): Observable<SubtitlesVttTrack>;
getActiveSubtitlesTrack(): SubtitlesVttTrack | undefined;
getSubtitlesTracks(): SubtitlesVttTrack[];
hideSubtitlesTrack(id: string): Observable<void>;
removeAllSubtitlesTracks(): Observable<void>;
removeSubtitlesTrack(id: string): Observable<void>;
showSubtitlesTrack(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>>;
getMainAudioNode(): AudioNode | undefined;
getMainAudioState(): OmpMainAudioState | undefined;
getMainAudioInputSoloMuteState(): OmpMainAudioInputSoloMuteState | undefined;
getMainAudioRouterInitialRoutingConnections(): OmpAudioRoutingConnection[] | undefined;
setMainAudioRouterInitialRoutingConnections(connections: OmpAudioRoutingConnection[]): Observable<void>;
updateMainAudioRouterConnections(connections: OmpAudioRoutingConnection[]): Observable<void>;
setMainAudioEffectsGraphs(effectsGraphDef: OmpAudioEffectsGraphDef, effectsGraphConnection: OmpAudioEffectsGraphConnection): Observable<void>;
removeMainAudioEffectsGraphs(effectsGraphConnection: OmpAudioEffectsGraphConnection): Observable<void>;
setMainAudioEffectsParams(param: OmpAudioEffectParam, effectGraphConnection: OmpAudioEffectsGraphConnection, filter?: OmpAudioEffectFilter): Observable<void>;
getSidecarAudios(): SidecarAudioApi[];
getSidecarAudio(id: string): SidecarAudioApi | undefined;
getSidecarAudioState(id: string): OmpSidecarAudioState | undefined;
getSidecarAudioStates(): OmpSidecarAudioState[];
getSidecarAudioInputSoloMuteState(id: string): OmpSidecarAudioInputSoloMuteState | undefined;
getSidecarAudioInputSoloMuteStates(): OmpSidecarAudioInputSoloMuteState[];
getSidecarAudioRouterInitialRoutingConnections(id: string): OmpAudioRoutingConnection[] | undefined;
setSidecarAudioRouterInitialRoutingConnections(id: string, connections: OmpAudioRoutingConnection[]): Observable<void>;
createSidecarAudioTrack(track: OmpAudioTrackCreateType): Observable<OmpAudioTrack>;
createSidecarAudioTracks(tracks: OmpAudioTrackCreateType[]): Observable<OmpAudioTrack[]>;
activateSidecarAudioTracks(ids: string[] | undefined, deactivateOthers: boolean | undefined): Observable<void>;
deactivateSidecarAudioTracks(ids: string[] | undefined): Observable<void>;
setSidecarVolume(volume: number, ids: string[] | undefined): Observable<void>;
setSidecarMuted(muted: boolean, ids: string[] | undefined): Observable<void>;
muteSidecar(ids: string[] | undefined): Observable<void>;
unmuteSidecar(ids: string[] | undefined): Observable<void>;
getActiveSidecarAudioTracks(): OmpAudioTrack[];
getSidecarAudioTracks(): OmpAudioTrack[];
removeSidecarAudioTracks(ids: string[]): Observable<void>;
removeAllSidecarAudioTracks(): Observable<void>;
createSidecarAudioRouter(sidecarAudioTrackId: string, inputsNumber: number, outputsNumber?: number): Observable<OmpAudioRouterState>;
updateSidecarAudioRouterConnections(sidecarAudioTrackId: string, connections: OmpAudioRoutingConnection[]): Observable<void>;
setSidecarAudioEffectsGraph(sidecarAudioTrackId: string, effectsGraphDef: OmpAudioEffectsGraphDef, effectsGraphConnection: OmpAudioEffectsGraphConnection): Observable<void>;
removeSidecarAudioEffectsGraphs(sidecarAudioTrackId: string, effectsGraphConnection: OmpAudioEffectsGraphConnection): Observable<void>;
setSidecarAudioEffectsParams(sidecarAudioTrackId: string, param: OmpAudioEffectParam, effectGraphConnection: OmpAudioEffectsGraphConnection, filter?: {
routingPath?: Partial<OmpAudioRoutingPath>;
} & OmpAudioEffectFilter): 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>;
toggleMainAudioRouterSolo(routingPath: OmpAudioRoutingInputType): Observable<void>;
toggleMainAudioRouterMute(routingPath: OmpAudioRoutingInputType): Observable<void>;
toggleSidecarAudioRouterSolo(sidecarAudioTrackId: string, routingPath: OmpAudioRoutingInputType): Observable<void>;
toggleSidecarAudioRouterMute(sidecarAudioTrackId: string, routingPath: OmpAudioRoutingInputType): Observable<void>;
registerAudioEffect(effectType: string, effectFactory: OmpAudioEffectFactory): void;
extractVideoKeyframe(options?: VideoKeyframeOptions): Observable<VideoKeyframe>;
}