UNPKG

@mustafakarali/react-native-audio-stream

Version:

React Native Audio Stream - High-performance audio streaming for React Native

223 lines 7.56 kB
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