@mustafakarali/react-native-audio-stream
Version:
React Native Audio Stream - High-performance audio streaming for React Native
223 lines • 7.56 kB
TypeScript
export declare enum AudioFormat {
MP3 = "mp3",
AAC = "aac",
WAV = "wav",
OGG = "ogg",
FLAC = "flac",
PCM = "pcm",
HLS = "hls",
DASH = "dash"
}
export declare enum StreamingProtocol {
HTTP = "http",
HTTPS = "https",
WEBSOCKET = "websocket"
}
export declare enum PlaybackState {
IDLE = "idle",
LOADING = "loading",
BUFFERING = "buffering",
PLAYING = "playing",
PAUSED = "paused",
STOPPED = "stopped",
ERROR = "error",
COMPLETED = "completed"
}
export declare enum LogLevel {
NONE = 0,
ERROR = 1,
WARNING = 2,
INFO = 3,
DEBUG = 4,
VERBOSE = 5
}
export interface AudioStreamConfig {
bufferSize?: number;
prebufferThreshold?: number;
maxBufferSize?: number;
chunkSize?: number;
protocol?: StreamingProtocol;
reconnectAttempts?: number;
reconnectDelay?: number;
timeout?: number;
format?: AudioFormat;
sampleRate?: number;
channels?: number;
bitRate?: number;
autoPlay?: boolean;
enableBackgroundMode?: boolean;
maintainAudioFocus?: boolean;
enableCache?: boolean;
cacheSize?: number;
cachePath?: string;
logLevel?: LogLevel;
headers?: Record<string, string>;
method?: 'GET' | 'POST';
body?: string | Record<string, any>;
enableRecording?: boolean;
voiceProcessing?: boolean;
spokenAudio?: boolean;
longFormAudio?: boolean;
enableAirPodsHighQuality?: boolean;
enableEnhancedBuffering?: boolean;
enableSpatialAudio?: boolean;
}
export interface PlaybackStats {
bufferedDuration: number;
playedDuration: number;
totalDuration: number;
networkSpeed: number;
latency: number;
bufferHealth: number;
droppedFrames: number;
bitRate: number;
bufferedPosition: number;
currentPosition: number;
bufferedPercentage: number;
isBuffering: boolean;
playWhenReady: boolean;
}
export interface AudioMetadata {
title?: string;
artist?: string;
album?: string;
genre?: string;
year?: string;
duration?: number;
artwork?: string;
[key: string]: any;
}
export interface EqualizerBand {
frequency: number;
gain: number;
}
export interface EqualizerPreset {
name: string;
bands: EqualizerBand[];
}
export interface StreamError {
code: string;
message: string;
details?: any;
recoverable: boolean;
}
export interface AudioStreamCallbacks {
onStart?: () => void;
onBuffer?: (isBuffering: boolean) => void;
onProgress?: (progress: {
currentTime: number;
duration: number;
percentage: number;
}) => void;
onError?: (error: StreamError) => void;
onEnd?: () => void;
onStateChange?: (state: PlaybackState) => void;
onMetadata?: (metadata: AudioMetadata) => void;
onStats?: (stats: PlaybackStats) => void;
onNetworkStateChange?: (state: {
isConnected: boolean;
type?: string;
}) => void;
}
export interface AudioDeviceInfo {
portName: string;
portType: string;
uid: string;
hasHardwareVoiceCallProcessing: boolean;
channels: number;
}
export interface IAudioStream {
initialize(config?: AudioStreamConfig): Promise<void>;
destroy(): Promise<void>;
startStream(url: string, config?: AudioStreamConfig): Promise<void>;
stopStream(): Promise<void>;
cancelStream(): Promise<void>;
playFromData(base64Data: string, config?: AudioStreamConfig): Promise<void>;
appendToBuffer(base64Data: string): Promise<void>;
play(): Promise<void>;
pause(): Promise<void>;
stop(): Promise<void>;
seek(position: number): Promise<void>;
setVolume(volume: number): Promise<void>;
getVolume(): Promise<number>;
setPlaybackRate(rate: number): Promise<void>;
getPlaybackRate(): Promise<number>;
getState(): Promise<PlaybackState>;
getCurrentTime(): Promise<number>;
getDuration(): Promise<number>;
getBufferedPercentage(): Promise<number>;
getStats(): Promise<PlaybackStats>;
getMetadata(): Promise<AudioMetadata | null>;
setEqualizer(bands: EqualizerBand[]): Promise<void>;
getEqualizer(): Promise<EqualizerBand[]>;
applyEqualizerPreset(preset: EqualizerPreset | number): Promise<void>;
getEqualizerPresets(): Promise<EqualizerPreset[]>;
addEventListener<K extends keyof AudioStreamCallbacks>(event: K, callback: AudioStreamCallbacks[K]): void;
removeEventListener<K extends keyof AudioStreamCallbacks>(event: K, callback: AudioStreamCallbacks[K]): void;
removeAllEventListeners(): void;
clearCache(): Promise<void>;
getCacheSize(): Promise<number>;
preloadStream(url: string, duration?: number): Promise<void>;
setNetworkPriority(priority: 'low' | 'normal' | 'high'): Promise<void>;
requestAudioFocus(): Promise<boolean>;
abandonAudioFocus(): Promise<void>;
setAudioSessionCategory(category: string): Promise<void>;
showInputPicker(): Promise<void>;
getAvailableInputs(): Promise<AudioDeviceInfo[]>;
enableEnhancedBuffering(enable: boolean): Promise<void>;
enableSpatialAudio(enable: boolean): Promise<void>;
useQueuePlayer(enable: boolean): Promise<void>;
createRoutePickerView(): Promise<number>;
}
export interface AudioStreamNativeModule {
initialize(config: AudioStreamConfig): Promise<void>;
destroy(): Promise<void>;
startStream(url: string, config: AudioStreamConfig): Promise<void>;
stopStream(): Promise<void>;
cancelStream(): Promise<void>;
playFromData(base64Data: string, config: AudioStreamConfig): Promise<void>;
appendToBuffer(base64Data: string): Promise<void>;
play(): Promise<void>;
pause(): Promise<void>;
stop(): Promise<void>;
seek(position: number): Promise<void>;
setVolume(volume: number): Promise<void>;
getVolume(): Promise<number>;
setPlaybackRate(rate: number): Promise<void>;
getPlaybackRate(): Promise<number>;
getState(): Promise<PlaybackState>;
getCurrentTime(): Promise<number>;
getDuration(): Promise<number>;
getBufferedPercentage(): Promise<number>;
getStats(): Promise<PlaybackStats>;
getMetadata(): Promise<AudioMetadata | null>;
setEqualizer(bands: EqualizerBand[]): Promise<void>;
getEqualizer(): Promise<EqualizerBand[]>;
clearCache(): Promise<void>;
getCacheSize(): Promise<number>;
preloadStream(url: string, duration?: number): Promise<void>;
setNetworkPriority(priority: string): Promise<void>;
requestAudioFocus(): Promise<boolean>;
abandonAudioFocus(): Promise<void>;
setAudioSessionCategory(category: string): Promise<void>;
showInputPicker(): Promise<void>;
getAvailableInputs(): Promise<AudioDeviceInfo[]>;
enableEnhancedBuffering(enable: boolean): Promise<void>;
enableSpatialAudio(enable: boolean): Promise<void>;
useQueuePlayer(enable: boolean): Promise<void>;
createRoutePickerView(): Promise<number>;
}
export declare const ErrorCodes: {
readonly NETWORK_ERROR: "NETWORK_ERROR";
readonly DECODE_ERROR: "DECODE_ERROR";
readonly PERMISSION_DENIED: "PERMISSION_DENIED";
readonly UNSUPPORTED_FORMAT: "UNSUPPORTED_FORMAT";
readonly BUFFER_TIMEOUT: "BUFFER_TIMEOUT";
readonly INITIALIZATION_ERROR: "INITIALIZATION_ERROR";
readonly INVALID_STATE: "INVALID_STATE";
readonly CACHE_ERROR: "CACHE_ERROR";
readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
};
export declare const DEFAULT_CONFIG: AudioStreamConfig;
export declare const EQUALIZER_PRESETS: EqualizerPreset[];
//# sourceMappingURL=types.d.ts.map