videomail-client
Version:
A wicked npm package to record videos directly in the browser, wohooo!
55 lines (54 loc) • 2 kB
TypeScript
import { Dimension } from "../../types/dimension";
import { VideomailClientOptions } from "../../types/options";
import Despot from "../../util/Despot";
import { AudioProcessCB } from "../../util/html/media/AudioRecorder";
import Recorder from "./recorder";
interface StopParams {
aboutToInitialize: boolean;
switchingFacingMode: any;
}
declare class UserMedia extends Despot {
private readonly recorder;
private readonly rawVisualUserMedia;
private paused;
private recording;
private audioRecorder?;
private currentVisualStream?;
private onPlayReached;
private onLoadedMetaDataReached;
private playingPromiseReached;
constructor(recorder: Recorder, options: VideomailClientOptions);
private attachMediaStream;
private setVisualStream;
private hasEnded;
private hasInvalidDimensions;
private logEvent;
private outputEvent;
unloadRemainingEventListeners(): void;
private audioRecord;
init(localMediaStream: MediaStream, videoCallback: () => void, audioCallback: AudioProcessCB, endedEarlyCallback: (err: any) => void, switchingFacingMode?: ConstrainDOMString): void;
isReady(): boolean;
stop(visualStream?: MediaStream, params?: StopParams): void;
createCanvas(): HTMLCanvasElement;
getVideoHeight(): number | undefined;
getVideoWidth(): number | undefined;
hasVideoWidth(): boolean | 0 | undefined;
getRawWidth(responsive: boolean): Dimension;
getRawHeight(responsive: boolean): number | undefined;
getRawVisuals(): HTMLVideoElement | null | undefined;
pause(): void;
isPaused(): boolean;
resume(): void;
record(): void;
isRecording(): boolean;
getAudioSampleRate(): number;
getCharacteristics(): {
audioSampleRate: number;
muted: boolean | undefined;
width: number | undefined;
height: number | undefined;
videoWidth: number | undefined;
videoHeight: number | undefined;
};
}
export default UserMedia;