Skip to content
This repository has been archived by the owner on Dec 14, 2020. It is now read-only.

A react-native audio streaming module which works on both iOS & Android

License

Notifications You must be signed in to change notification settings

indiecastfm/react-native-audio-streamer

Repository files navigation

react-native-audio-streamer

A react-native audio streaming module which works on both iOS & Android

iOS streaming is based on DOUAudioStreamer

Android streaming is based on ExoPlayer

Installation

npm install react-native-audio-streamer --save

Then run the following command to link to iOS & Android project

react-native link react-native-audio-streamer

Usage

Basic

import RNAudioStreamer from 'react-native-audio-streamer';

RNAudioStreamer.setUrl('http://lacavewebradio.chickenkiller.com:8000/stream.mp3')
RNAudioStreamer.play()
RNAudioStreamer.pause()
RNAudioStreamer.seekToTime(16) //seconds
RNAudioStreamer.duration((err, duration)=>{
 if(!err) console.log(duration) //seconds
})
RNAudioStreamer.currentTime((err, currentTime)=>{
 if(!err) console.log(currentTime) //seconds
})

// Player Status:
// - PLAYING
// - PAUSED
// - STOPPED
// - FINISHED
// - BUFFERING
// - ERROR
RNAudioStreamer.status((err, status)=>{
 if(!err) console.log(status)
})

Status Change Observer

const {
  DeviceEventEmitter
} = 'react-native'

// Status change observer
componentDidMount() {
    this.subscription = DeviceEventEmitter.addListener('RNAudioStreamerStatusChanged',this._statusChanged.bind(this))
}

// Player Status:
// - PLAYING
// - PAUSED
// - STOPPED
// - FINISHED
// - BUFFERING
// - ERROR
_statusChanged(status) {
  // Your logic
}

Milestones

  • Audio caching
  • Buffering ratio