react-audio-recorder-hook
Version:
A powerful TypeScript-based React hook that provides complete audio recording capabilities with pause/resume functionality, recording management, and audio processing
54 lines • 2.18 kB
TypeScript
import { type AudioEffectOptions } from './effects/audioEffects';
export interface AudioRecorderOptions {
/** Optional audio constraints to pass to getUserMedia */
audioConstraints?: MediaTrackConstraints;
/** Recording data chunk interval in milliseconds */
chunkInterval?: number;
/** Custom MIME type to use if supported */
preferredMimeType?: string;
/** Called when recording is unsupported on the browser */
onNotSupported?: () => void;
/** Optional bitrate for audio recording quality */
audioBitsPerSecond?: number;
/** Volume metering refresh rate in ms (default: 100) */
volumeMeterRefreshRate?: number;
/** Audio effect to apply during recording (default: none) */
audioEffect?: AudioEffectOptions;
}
export interface UseAudioRecorderReturn {
startRecording: () => Promise<void>;
stopRecording: () => Promise<void>;
cancelRecording: () => void;
pauseRecording: () => void;
resumeRecording: () => Promise<void>;
saveRecording: () => Promise<{
blob: Blob;
url: string;
} | null>;
playRecording: () => Promise<string | null>;
/** Apply a new audio effect while recording */
applyEffect: (effect: AudioEffectOptions) => void;
isRecording: boolean;
isPaused: boolean;
recordingDuration: number;
mediaStream: MediaStream | null;
/** Current audio volume level (0-1) */
currentVolume: number;
/** Error encountered during recording (if any) */
error: Error | null;
/** Whether permission to record has been denied */
isPermissionDenied: boolean;
/** Information about browser compatibility */
browserCompatibility: {
isSupported: boolean;
mediaRecorderSupported: boolean;
getUserMediaSupported: boolean;
audioContextSupported: boolean;
isMobileBrowser: boolean;
};
/** Current audio effect being applied */
currentEffect: AudioEffectOptions;
}
export default function useAudioRecorder(options?: AudioRecorderOptions): UseAudioRecorderReturn;
export { AudioEffectType, type AudioEffectOptions } from './effects/audioEffects';
//# sourceMappingURL=index.d.ts.map