Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

README.md

PersistentStreamPlayer

Handles the playing of an audio file while streaming, and saves the data to a local URL as soon as the stream completes. Battle-tested in the production version of Calm

Installation

Add this to your Podfile

pod 'PersistentStreamPlayer'

Usage

PersistentStreamPlayer *remoteAudioPlayer = [[PersistentStreamPlayer alloc] initWithRemoteURL:myHTTPURL
                                                                                     localURL:myFileURL];
remoteAudioPlayer.delegate = self;
[remoteAudioPlayer play];

Features

  • streaming of audio file, starting playback as soon as first data is available
  • also saves streamed data to a file URL as soon as the buffer completes
  • simple play, pause and destroy methods (destroy clears all memory resources)
  • ability to seamlessly loop the audio file. call player.looping = YES
  • exposes timeBuffered, helpful for displaying buffer progress bars in the UI
  • handles re-starting the audio file after the buffer stream stalls (e.g. slow network)
  • does not keep audio file data in memory, so that it supports large files that don't fit in RAM

The PersistentStreamPlayerDelegate protocol has some helpful event indicators, all optional:

/* called when the data is saved to localURL */
- (void)persistentStreamPlayerDidPersistAsset:(PersistentStreamPlayer *)player;

/* called when the audio file completed */
- (void)persistentStreamPlayerDidFinishPlaying:(PersistentStreamPlayer *)player;

/* called when the play head reaches the buffer head */
- (void)persistentStreamPlayerStreamingDidStall:(PersistentStreamPlayer *)player;

/* called as soon as the asset loads with a duration, helpful for showing a duration clock */
- (void)persistentStreamPlayerDidLoadAsset:(PersistentStreamPlayer *)player;

/* on failure to load asset */
- (void)persistentStreamPlayerDidFailToLoadAsset:(PersistentStreamPlayer *)player;

About

Stream audio over http, and persist the data to a local file while buffering

Topics

Resources

License

Packages

No packages published
You can’t perform that action at this time.