UNPKG

@byomakase/omakase-player

Version:

## Omakase Player - Open source JavaScript framework for building frame accurate video experiences

230 lines (229 loc) • 14.9 kB
import Hls from 'hls.js'; import { BehaviorSubject, Observable } 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, OmpAudioRoutingConnection, OmpAudioRoutingPath, MediaElementPlaybackState, Video, VideoControllerApi, VideoLoadOptions } from './index'; import { VideoControllerConfig } from './video-controller'; import { TypedOmpBroadcastChannel } from '../common/omp-broadcast-channel'; import { MessageChannelActionsMap } from './channel-types'; import { BufferedTimespan, VideoKeyframe, VideoKeyframeOptions, OmpAudioRouterState, OmpAudioRoutingInputType, OmpMainAudioInputSoloMuteState, OmpMainAudioState, OmpSidecarAudioInputSoloMuteState, OmpSidecarAudioState, VideoLoadOptionsInternal, VideoSafeZone, VideoWindowPlaybackState } from './model'; import { OmpAudioRouter } from './audio-router'; import { SidecarAudioApi } from '../api/sidecar-audio-api'; import { OmpAudioEffectFactory, OmpAudioEffectFilter, OmpAudioEffectParam, OmpAudioEffectsGraphDef } from '../audio'; import { OmpAudioEffectsGraphConnection } from '../audio/model'; 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$; private readonly _get_onMainAudioInputSoloMute$; /** * 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 _audioTracks; private _activeAudioTrack; private _sidecarAudioStates; private _sidecarAudioInputSoloMuteStates; private _thumbnailVttUrl; private _activeNamedEventStreams; private _audioOutputVolume; private _audioOutputMuted; 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 onAudioUpdated$(): Observable<AudioUpdatedEvent>; get onAudioOutputVolumeChange$(): Observable<VolumeChangeEvent>; get onPlaybackState$(): Observable<MediaElementPlaybackState>; get onPlaybackRateChange$(): Observable<VideoPlaybackRateEvent>; get onHelpMenuChange$(): Observable<VideoHelpMenuChangeEvent>; get onVideoWindowPlaybackStateChange$(): Observable<VideoWindowPlaybackStateChangeEvent>; get onVideoError$(): Observable<VideoErrorEvent>; get onVolumeChange$(): Observable<VolumeChangeEvent>; 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 onMainAudioInputSoloMute$(): Observable<MainAudioInputSoloMuteEvent | undefined>; get onMainAudioPeakProcessorMessage$(): Observable<AudioPeakProcessorMessageEvent>; get onSidecarAudioCreate$(): Observable<SidecarAudioCreateEvent>; get onSidecarAudioLoaded$(): Observable<SidecarAudioLoadedEvent>; get onSidecarAudioRemove$(): Observable<SidecarAudioRemoveEvent>; get onSidecarAudioChange$(): Observable<SidecarAudioChangeEvent>; get onSidecarAudiosChange$(): Observable<SidecarAudiosChangeEvent>; get onSidecarAudioInputSoloMute$(): Observable<SidecarAudioInputSoloMuteEvent>; get onSidecarAudioVolumeChange$(): Observable<SidecarAudioVolumeChangeEvent>; get onSidecarAudioPeakProcessorMessage$(): Observable<SidecarAudioPeakProcessorMessageEvent>; get onThumbnailVttUrlChanged$(): Observable<ThumnbailVttUrlChangedEvent>; get onActiveNamedEventStreamsChange$(): Observable<OmpNamedEventEventName[]>; get onNamedEvent$(): Observable<OmpNamedEvent>; loadVideoInternal(sourceUrl: string, options: VideoLoadOptions | undefined, optionsInternal: VideoLoadOptionsInternal): Observable<Video>; loadVideo(sourceUrl: string, options?: VideoLoadOptions | undefined): Observable<Video>; reloadVideo(): Observable<Video>; getPlaybackState(): MediaElementPlaybackState | undefined; getBufferedTimespans(): BufferedTimespan[]; isVideoLoaded(): boolean; getVideo(): Video | undefined; getVideoLoadOptions(): VideoLoadOptions | undefined; getHTMLVideoElement(): HTMLVideoElement; getAudioContext(): AudioContext; getAudioOutputNode(): AudioNode; getSidecarAudiosOutputNode(): AudioNode; getAudioOutputVolume(): number; isAudioOutputMuted(): boolean; setAudioOutputMuted(muted: boolean): Observable<void>; toggleAudioOutputMuteUnmute(): Observable<void>; setAudioOutputVolume(volume: number): Observable<void>; muteAudioOutput(): Observable<void>; unmuteAudioOutput(): Observable<void>; 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>; 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>; updateAudioTrack(audioTrack: OmpAudioTrack): Observable<void>; activateMainAudio(): Observable<void>; deactivateMainAudio(): 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>; toggleMainAudioRouterSolo(routingPath: OmpAudioRoutingInputType): Observable<void>; toggleMainAudioRouterMute(routingPath: OmpAudioRoutingInputType): 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[]>; toggleSidecarAudioRouterSolo(sidecarAudioTrackId: string, routingPath: OmpAudioRoutingInputType): Observable<void>; toggleSidecarAudioRouterMute(sidecarAudioTrackId: string, routingPath: OmpAudioRoutingInputType): Observable<void>; 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>; registerAudioEffect(effectType: string, effectFactory: OmpAudioEffectFactory): void; extractVideoKeyframe(options?: VideoKeyframeOptions): Observable<VideoKeyframe>; }