@siteed/expo-audio-studio
Version:
Comprehensive audio processing library for React Native and Expo with recording, analysis, visualization, and streaming capabilities across iOS, Android, and web
59 lines • 2.21 kB
TypeScript
import { LegacyEventEmitter } from 'expo-modules-core';
import { AudioAnalysis } from './AudioAnalysis/AudioAnalysis.types';
import { AudioRecording, AudioStreamStatus, BitDepth, ConsoleLike, RecordingConfig, StartRecordingResult } from './ExpoAudioStream.types';
import { WebRecorder } from './WebRecorder.web';
export interface EmitAudioEventProps {
data: Float32Array;
position: number;
compression?: {
data: Blob;
size: number;
totalSize: number;
mimeType: string;
format: string;
bitrate: number;
};
}
export type EmitAudioEventFunction = (_: EmitAudioEventProps) => void;
export type EmitAudioAnalysisFunction = (_: AudioAnalysis) => void;
export interface ExpoAudioStreamWebProps {
logger?: ConsoleLike;
audioWorkletUrl: string;
featuresExtratorUrl: string;
maxBufferSize?: number;
}
export declare class ExpoAudioStreamWeb extends LegacyEventEmitter {
customRecorder: WebRecorder | null;
audioChunks: Float32Array[];
isRecording: boolean;
isPaused: boolean;
recordingStartTime: number;
pausedTime: number;
currentDurationMs: number;
currentSize: number;
currentInterval: number;
currentIntervalAnalysis: number;
lastEmittedSize: number;
lastEmittedTime: number;
lastEmittedCompressionSize: number;
lastEmittedAnalysisTime: number;
streamUuid: string | null;
extension: 'webm' | 'wav';
recordingConfig?: RecordingConfig;
bitDepth: BitDepth;
audioWorkletUrl: string;
featuresExtratorUrl: string;
logger?: ConsoleLike;
latestPosition: number;
totalCompressedSize: number;
private readonly maxBufferSize;
constructor({ audioWorkletUrl, featuresExtratorUrl, logger, maxBufferSize, }: ExpoAudioStreamWebProps);
getMediaStream(): Promise<MediaStream>;
startRecording(recordingConfig?: RecordingConfig): Promise<StartRecordingResult>;
emitAudioEvent({ data, position, compression }: EmitAudioEventProps): void;
stopRecording(): Promise<AudioRecording>;
pauseRecording(): Promise<void>;
resumeRecording(): Promise<void>;
status(): AudioStreamStatus;
}
//# sourceMappingURL=ExpoAudioStream.web.d.ts.map