import type { EffectChainState, EffectDefinitionAndStack, LogLevel, useBufferState } from 'remotion'; import { type AudioIteratorManager } from './audio-iterator-manager'; import type { MediaRequestInit } from './request-init'; import type { SharedAudioContextForMediaPlayer } from './shared-audio-context-for-media-player'; import type { VideoIteratorManager } from './video-iterator-manager'; export type MediaPlayerInitResult = { type: 'success'; durationInSeconds: number; } | { type: 'unknown-container-format'; } | { type: 'cannot-decode'; } | { type: 'cannot-decode-prores'; } | { type: 'network-error'; } | { type: 'no-tracks'; } | { type: 'disposed'; }; export declare class MediaPlayer { private tagType; private canvas; private context; private src; private logLevel; private playbackRate; private toneFrequency; private globalPlaybackRate; private audioStreamIndex; private sharedAudioContext; audioIteratorManager: AudioIteratorManager | null; videoIteratorManager: VideoIteratorManager | null; private playing; private loop; private fps; private trimBefore; private trimAfter; private sequenceDurationInFrames; private sequenceOffset; private totalDuration; private debugOverlay; private nonceManager; private onVideoFrameCallback; private getEffects; private getEffectChainState; private initializationPromise; private premountAwareDelayPlayback; private seekPromiseChain; constructor({ canvas, src, logLevel, sharedAudioContext, loop, trimBefore, trimAfter, playbackRate, toneFrequency, globalPlaybackRate, audioStreamIndex, fps, debugOverlay, bufferState, isPremounting, isPostmounting, durationInFrames, onVideoFrameCallback, playing, sequenceOffset, credentials, requestInit, tagType, getEffects, getEffectChainState }: { canvas: HTMLCanvasElement | OffscreenCanvas | null; src: string; logLevel: LogLevel; sharedAudioContext: SharedAudioContextForMediaPlayer | null; loop: boolean; trimBefore: number | undefined; trimAfter: number | undefined; playbackRate: number; toneFrequency: number; globalPlaybackRate: number; audioStreamIndex: number | null; fps: number; debugOverlay: boolean; bufferState: ReturnType; isPremounting: boolean; isPostmounting: boolean; durationInFrames: number; onVideoFrameCallback: null | ((frame: CanvasImageSource) => void); playing: boolean; sequenceOffset: number; credentials: RequestCredentials | undefined; requestInit: MediaRequestInit | undefined; tagType: 'audio' | 'video'; getEffects: () => EffectDefinitionAndStack[]; getEffectChainState: (width: number, height: number) => EffectChainState | null; }); private input; private getDuration; private releaseInput; private disposed; private isDisposalError; initialize(startTimeUnresolved: number, initialMuted: boolean, initialVolume: number): Promise; private getStartTime; private getSequenceEndTimestamp; private getSequenceDurationInSeconds; private getMediaEndTimestamp; private getLoopSegmentMediaEndTimestamp; private _initialize; private seekToWithQueue; seekTo(time: number): Promise; private seekToDoNotCallDirectly; play(): void; private delayPlaybackHandleIfNotPremounting; pause(): void; setMuted(muted: boolean): void; setVolume(volume: number): void; private getTrimmedTime; setTrimBefore(trimBefore: number | undefined, unloopedTimeInSeconds: number): Promise; setTrimAfter(trimAfter: number | undefined, unloopedTimeInSeconds: number): Promise; setDebugOverlay(debugOverlay: boolean): void; setPlaybackRate(rate: number, unloopedTimeInSeconds: number): Promise; setToneFrequency(toneFrequency: number, unloopedTimeInSeconds: number): Promise; setGlobalPlaybackRate(rate: number, unloopedTimeInSeconds: number): Promise; setFps(fps: number, unloopedTimeInSeconds: number): Promise; setIsPremounting(isPremounting: boolean): void; setIsPostmounting(isPostmounting: boolean): void; setLoop(loop: boolean, unloopedTimeInSeconds: number): Promise; setSequenceOffset(offset: number, unloopedTimeInSeconds: number): Promise; setSequenceDurationInFrames(sequenceDurationInFrames: number, unloopedTimeInSeconds: number): Promise; dispose(): Promise; private getTargetTime; private scheduleAudioNode; setVideoFrameCallback(callback: null | ((frame: CanvasImageSource) => void)): void; redrawVideoEffects(): Promise; private drawDebugOverlay; audioSyncAnchorChanged: (unloopedTimeInSeconds: number) => Promise; }