@phenixrts/sdk
Version:
JavaScript SDK
51 lines (50 loc) • 1.85 kB
TypeScript
import IDisposable from '../../lang/IDisposable';
import { Second } from '../../units/Units';
import ReadOnlySubject from '../../rx/ReadOnlySubject';
import IsoBmffSegment from '../decode/bitstream/container/isobmff/segment/IsoBmffSegment';
import { TrackWriterWriteStatus } from '../decode/track/TrackWriterWriteStatus';
export type IsoBmffPlayerOptions = {
audioMimeType?: string;
videoMimeType?: string;
targetPlayoutBufferDuration?: Second;
};
export declare enum IsoBmffPlayerState {
Initializing = 0,
Initialized = 1,
Buffering = 2,
Playing = 3,
Paused = 4,
Failed = 5,
Stopped = 6
}
export default class IsoBmffPlayer implements IDisposable {
private readonly _logger;
private readonly _state;
private readonly _readOnlyState;
private readonly _audioMimeType;
private readonly _videoMimeType;
private readonly _mediaElement;
private readonly _mseDecoder;
private readonly _audioTrackFeeder;
private readonly _videoTrackFeeder;
private readonly _playbackMonitor;
private readonly _disposables;
constructor(mediaElement: HTMLMediaElement, options?: IsoBmffPlayerOptions);
get state(): ReadOnlySubject<IsoBmffPlayerState>;
get bufferedLength(): Second;
appendAudioSegment(segment: IsoBmffSegment): Promise<TrackWriterWriteStatus>;
appendVideoSegment(segment: IsoBmffSegment): Promise<TrackWriterWriteStatus>;
reset(): void;
dispose(): void;
private handleMseDecoderError;
private handleMseDecoderInitializing;
private handleMseDecoderDecoding;
private onMseDecoderStatus;
private resetTrackFeeders;
private dropSegment;
private feedInitializationSegment;
private feedSegment;
private updatePlaybackSettings;
private enforceCurrentTimeInBufferedRange;
private triggerMediaElementPlay;
}