Go to file
Thong Nguyen dde738dffd Fixed finished event not raised if item is only item in queue. New timeline method of checking whether item has finished playing won't work if item is the only or last item in the queue as handleAudioQueueOutput isn't called once last packet is played (it's gets called if other items are queued). If no items are queued, the queue is stopped and the queue property event is used to figure out if its finished playing 2014-01-22 19:34:17 +00:00
ExampleApp Fixed finished event not raised if item is only item in queue. New timeline method of checking whether item has finished playing won't work if item is the only or last item in the queue as handleAudioQueueOutput isn't called once last packet is played (it's gets called if other items are queued). If no items are queued, the queue is stopped and the queue property event is used to figure out if its finished playing 2014-01-22 19:34:17 +00:00
StreamingKit Fixed finished event not raised if item is only item in queue. New timeline method of checking whether item has finished playing won't work if item is the only or last item in the queue as handleAudioQueueOutput isn't called once last packet is played (it's gets called if other items are queued). If no items are queued, the queue is stopped and the queue property event is used to figure out if its finished playing 2014-01-22 19:34:17 +00:00
StreamingKit.xcworkspace Fixed hard coded library search path in ExampleApp project 2014-01-20 19:22:48 +00:00
.gitignore Add xcuserdata to gitignore 2013-03-24 16:25:46 +00:00
LICENSE Adding podspec and LICENSE for Cocoapods integratino 2013-04-08 10:54:23 +00:00
README.md Updated README 2014-01-20 23:57:45 +00:00
StreamingKit-head.podspec Renamed project to StreamingKit and addded STK classes prefixes. Separated library and sample app into discrete projects inside a workspace. 2014-01-20 15:42:28 +00:00
StreamingKit.podspec Fixed StreamingKit.podspec 2014-01-20 15:54:52 +00:00

README.md

StreamingKit

StreamingKit (formally Audjustable) is an audio streaming library for iOS and OSX. StreamingKit uses CoreAudio to decompress and playback audio whilst providing a clean and simple object-oriented API.

The primary motivation of this project was to decouple the input data sources from the actual player logic in order to allow advanced customizable input handling such as HTTP streaming, encryption/decryption, auto-recovery, dynamic-buffering. Along the way other features such as gapless playback were added.

Main Features

  • Simple OOP API
  • Easy to read source
  • Mostly asynchronous API
  • Buffered and gapless playback
  • Easy to implement audio data sources (Local, HTTP, Auto Recovering HTTP DataSources are provided)
  • Easy to extend DataSource to support adaptive buffering, encryption, etc.
  • Optimised for low CPU/battery usage

Installation

StreamingKit is also available as a Cocoapod and a static lib. You can also simply manually copy all the source files located inside StreamingKit/StreamingKit/* into your project.

Example

There are two main classes. The STKDataSource class which is the abstract base class for the various compressed audio data sources. The STKAudioPlayer class manages and renders audio from a queue DataSources. By default STKAudioPlayer will automatically parse URLs and create the appropriate data source internally.



STKAudioPlayer* audioPlayer = [[STKAudioPlayer alloc] init];
audioPlayer.delegate = self;

[audioPlayer play:@"http://fs.bloom.fm/oss/audiosamples/sample.mp3"];


More

More documentation is available on the project wiki

Authors and Contributors

Copyright (c) 2012-2014, Thong Nguyen (@tumtumtum)