@pineappleaf/react-media-recorder
Version:
A React component based on MediaRecorder() API to record audio/video streams
55 lines (54 loc) • 2.4 kB
TypeScript
/// <reference types="dom-mediacapture-record" />
import { ReactElement } from "react";
export declare enum MediaPermissions {
Granted = "granted",
Denied = "denied",
Prompt = "prompt"
}
export declare function isSupported(): boolean;
export declare function useQueryMediaPermissions(): () => Promise<MediaPermissions>;
export declare type ReactMediaRecorderRenderProps = {
error: string;
muteAudio: () => void;
unMuteAudio: () => void;
startRecording: () => void;
pauseRecording: () => void;
resumeRecording: () => void;
stopRecording: () => void;
mediaBlobUrl: null | string;
status: StatusMessages;
isAudioMuted: boolean;
previewStream: MediaStream | null;
clearBlobUrl: () => void;
stopMediaStream: () => void;
startMediaStream: () => Promise<void>;
mediaPermissions: MediaPermissions;
};
export declare type ReactMediaRecorderHookProps = {
audio?: boolean | MediaTrackConstraints;
video?: boolean | MediaTrackConstraints;
screen?: boolean;
onStop?: (blobUrl: string, blob: Blob) => void;
onStart?: () => void;
blobPropertyBag?: BlobPropertyBag;
mediaRecorderOptions?: MediaRecorderOptions | null;
customMediaStream?: MediaStream | null;
stopStreamsOnStop?: boolean;
recorderTimeslice?: number;
};
export declare type ReactMediaRecorderProps = ReactMediaRecorderHookProps & {
render: (props: ReactMediaRecorderRenderProps) => ReactElement;
};
export declare type StatusMessages = "media_aborted" | "permission_denied" | "no_specified_media_found" | "media_in_use" | "invalid_media_constraints" | "no_constraints" | "recorder_error" | "idle" | "acquiring_media" | "delayed_start" | "recording" | "stopping" | "stopped" | "requesting_media";
export declare enum RecorderErrors {
AbortError = "media_aborted",
NotAllowedError = "permission_denied",
NotFoundError = "no_specified_media_found",
NotReadableError = "media_in_use",
OverconstrainedError = "invalid_media_constraints",
TypeError = "no_constraints",
NONE = "",
NO_RECORDER = "recorder_error",
UnsupportedBrowserError = "unsupported_browser"
}
export declare function useReactMediaRecorder({ audio, video, onStop, onStart, blobPropertyBag, screen, mediaRecorderOptions, customMediaStream, stopStreamsOnStop, recorderTimeslice, }: ReactMediaRecorderHookProps): ReactMediaRecorderRenderProps;