A fast and extensible gapless AudioPlayer/AudioStreamer for OSX and iOS (iPhone, iPad)

Overview

StreamingKit

StreamingKit (formally Audjustable) is an audio playback and streaming library for iOS and Mac OSX. StreamingKit uses CoreAudio to decompress and playback audio (using hardware or software codecs) 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 progressive download based streaming, encryption/decryption, auto-recovery, dynamic-buffering. StreamingKit is the only streaming and playback library that supports dead-easy gapless playback between audio files of differing formats.

Main Features

  • Free OSS.
  • Simple API.
  • Easy to read source.
  • Carefully multi-threaded to provide a responsive API that won't block your UI thread nor starve the audio buffers.
  • Buffered and gapless playback between all format types.
  • Easy to implement audio data sources (Local, HTTP, AutoRecoveringHTTP DataSources are provided).
  • Easy to extend DataSource to support adaptive buffering, encryption, etc.
  • Optimised for low CPU/battery usage (0% - 1% CPU usage when streaming).
  • Optimised for linear data sources. Random access sources are required only for seeking.
  • StreamingKit 0.2.0 uses the AudioUnit API rather than the slower AudioQueues API which allows real-time interception of the raw PCM data for features such as level metering, EQ, etc.
  • Power metering
  • Inbuilt equalizer/EQ (iOS 5.0 and above, OSX 10.9 Mavericks and above) with support for dynamically changing/enabling/disabling EQ while playing.
  • Example apps for iOS and Mac OSX provided.

Installation

StreamingKit is available as a Cocoapod. You can also simply copy all the source files located inside StreamingKit/StreamingKit/* into your Xcode 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.

Play an MP3 over HTTP

STKAudioPlayer* audioPlayer = [[STKAudioPlayer alloc] init];

[audioPlayer play:@"http://www.abstractpath.com/files/audiosamples/sample.mp3"];

Gapless playback

STKAudioPlayer* audioPlayer = [[STKAudioPlayer alloc] init];

[audioPlayer queue:@"http://www.abstractpath.com/files/audiosamples/sample.mp3"];
[audioPlayer queue:@"http://www.abstractpath.com/files/audiosamples/airplane.aac"];

Intercept PCM data just before its played

[audioPlayer appendFrameFilterWithName:@"MyCustomFilter" block:^(UInt32 channelsPerFrame, UInt32 bytesPerFrame, UInt32 frameCount, void* frames)
{
   ...
}];

More

More documentation is available on the project Wiki

Authors and Contributors

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

Comments
  • Something weird with DBL_MAX

    Something weird with DBL_MAX

    When I build a project using StreamingKit from Xcode everything works fine. However, when you try to build from the command line, you get these errors:

    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2495:6: error: use of undeclared identifier 'DBL_MAX'
                                            CALCULATE_METER(Left);
                                            ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2445:73: note: expanded from macro 'CALCULATE_METER'
            if ((sampleDB##channel == sampleDB##channel) && (sampleDB##channel != -DBL_MAX)) \
                                                                                   ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2495:6: error: use of undeclared identifier 'DBL_MAX'
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2451:28: note: expanded from macro 'CALCULATE_METER'
                    if (sampleDB##channel > -DBL_MAX) \
                                             ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2496:6: error: use of undeclared identifier 'DBL_MAX'
                                            CALCULATE_METER(Right);
                                            ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2445:73: note: expanded from macro 'CALCULATE_METER'
            if ((sampleDB##channel == sampleDB##channel) && (sampleDB##channel != -DBL_MAX)) \
                                                                                   ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2496:6: error: use of undeclared identifier 'DBL_MAX'
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2451:28: note: expanded from macro 'CALCULATE_METER'
                    if (sampleDB##channel > -DBL_MAX) \
                                             ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2506:6: error: use of undeclared identifier 'DBL_MAX'
                                            CALCULATE_METER(Left);
                                            ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2445:73: note: expanded from macro 'CALCULATE_METER'
            if ((sampleDB##channel == sampleDB##channel) && (sampleDB##channel != -DBL_MAX)) \
                                                                                   ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2506:6: error: use of undeclared identifier 'DBL_MAX'
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2451:28: note: expanded from macro 'CALCULATE_METER'
                    if (sampleDB##channel > -DBL_MAX) \
                                             ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2507:6: error: use of undeclared identifier 'DBL_MAX'
                                            CALCULATE_METER(Right);
                                            ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2445:73: note: expanded from macro 'CALCULATE_METER'
            if ((sampleDB##channel == sampleDB##channel) && (sampleDB##channel != -DBL_MAX)) \
                                                                                   ^
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2507:6: error: use of undeclared identifier 'DBL_MAX'
    /Users/kevin/Workspace/AudjustableTest/Pods/StreamingKit/StreamingKit/StreamingKit/STKAudioPlayer.m:2451:28: note: expanded from macro 'CALCULATE_METER'
                    if (sampleDB##channel > -DBL_MAX) \
                                             ^
    8 errors generated.
    

    I'm building AudjustableTest from the command line like this:

    xcodebuild -workspace AudjustableTest.xcworkspace -scheme AudjustableTest
    

    I have no clue what's going on. Building from Xcode works, the float.h header is imported just fine, but building from command line fails..

    opened by kevinrenskers 25
  • AUGraphStop crashes right after stream ending (iOS 14 only bug)

    AUGraphStop crashes right after stream ending (iOS 14 only bug)

    While adopting my app to new iOS 14, I faced a bug that StreamingKit crashes at stopAudioUnitWithReason method in status = AUGraphStop(audioGraph) line. This happens only after music file ends playing, with reason == STKAudioPlayerStopReasonEof. Frequency of crash = 100%.
    Also, no description of this problem was provided by Xcode.

    How can this be fixed? This is a very serious issue.

    opened by IlyaOst 19
  • Difference between progress and duration when player stops

    Difference between progress and duration when player stops

    Hi,

    Me again :)

    I'm queuing a remote track right before the completion of the playing track is it transitions nicely.

    However for some files/tracks this doesn't work because the player stops even though the next track is queued up. This happens consistently with a few particular tracks.

    So I added a log when didFinishPlayingQueueItemId is captured and noticed this

    Finished playing 2 - reason: 0 - progress 139.891365 - duration 139.908802

    It basically stops playing before the duration.

    What can cause this? Or what can cause the track not not transition to the next? Thanks!!

    opened by kojilab 18
  • Weird bleeps and no metadata available when playing a SHOUTcast stream

    Weird bleeps and no metadata available when playing a SHOUTcast stream

    When playing a SHOUTcast stream there are random bleeps occuring every x seconds and song metadata is not available. This happens for e.g. with: http://23.237.150.98:8512/ (PRM Internet Radio) http://lin1.san.fast-serv.com:9844/ (ANDYS 80S)

    When playing those URL's with for e.g. Apple Music or VLC it plays without any bleeps and the currently played song is displayed.

    opened by dylancom 17
  • IOS LockScreen Play Pause

    IOS LockScreen Play Pause

    Hello, maybe this is a silly question, but I have a problem with the lock screen.

    lock screen in the pause button is presented, when I press the player is stopped, but the icon is still pause, internally paused the player using the pause method of the library but the icon does not change.

    opened by jerson 15
  • Poor audio quality

    Poor audio quality

    I have a mp4 file that sounds much worse played by the StreamingKit (iOS), than by the browser. What could be the reason?

    File details:

    * * * MediaInfo Mac 0.7.36.0 file analysis report.
    * * * MediaInfo Mac is ©2010 by Diego Massanti - http://mediainfo.massanti.com
    * * * MediaInfoLib by Jerome Martinez - http://mediainfo.sourceforge.net
    Created on: 17 Mar 2014 10:50:08 GMT+1
    Report for file: song.mp4
    
    General / Container Stream #1
        Total Audio Streams for this File.................1
        Audio Codecs Used.................................AAC LC-SBR
        File Format.......................................MPEG-4
        Play Time.........................................4mn 2s
        Total File Size...................................1.88 MiB
        Total Stream BitRate..............................64.8 Kbps
        Title (Tag).......................................Country Girl
    Audio Stream #1
        Codec.............................................AAC
        Codec (FourCC)....................................40
        Audio Stream Length...............................4mn 2s 834ms
        Audio Stream BitRate..............................64.0 Kbps
        Audio Stream BitRate Mode.........................CBR
        Number of Audio Channels..........................2
        Audio Channel's Positions.........................Front: L R
        Sampling Rate.....................................44.1 KHz
        Audio Stream Size.................................1.85 MiB (99%)
        Date of Original Encoding.........................UTC 2012-09-07 23:29:05
    
    opened by ghost 15
  • Cannot play the audio in background - iOS 11 - using it in SWIFT

    Cannot play the audio in background - iOS 11 - using it in SWIFT

    Hello team,

    First of all thank you for making an awesome library. Appreciate all the team. I am using this library in one of the application, where as soon as the device got updated to iOS 11, it stopped playing the audio in the background and also not showing in controlcenter.

    Did anybody faced such issue ?

    Thanks In Advance.

    opened by deeprathod 13
  • Playing audio from Documents directory

    Playing audio from Documents directory

    Hi there...StreamingKit did help me a lot while streaming an audio from the server. I could also play a local audio, stored in a resource bundle with my player. However, I have been facing some issues when I try to play audio that I have stored in my app's document directory. Unfortunately, the player neither shows any error nor does it play the audio. Any help regarding the issue would be helpful. Thanks in advance.

    opened by rushiofthedeshpandes 13
  • Could StreamingKit play with SoundCloud url

    Could StreamingKit play with SoundCloud url

    Hi guys, I'm using this lib to play streaming url from Souncloud, it looks like https://api.soundcloud.com/tracks/344134966/stream?client_id=[CLIENT_ID].

    I have tried but It cannot play. Others are fine.

    Can anyone help me? Thanks a lot

    opened by gauuni 11
  • Crash in STKAudioPlayer.m line 475

    Crash in STKAudioPlayer.m line 475

    Many users of the app I'm working on having this crash. Initially I though that this issue is the same as #350, but stacktrace is different.

    I attached stacktrace:

    crash_stacktrace.txt

    Some things I want to highlight:

    #0. Crashed: com.apple.main-thread
    0  libobjc.A.dylib                0x185eec43c objc_msgSend + 28
    1  StreamingKit                   0x1034c4e64 __45-[STKAudioPlayer setInternalState:ifInState:]_block_invoke (STKAudioPlayer.m:475)
    2  libdispatch.dylib              0x18660d088 _dispatch_call_block_and_release + 24
    [...]
    10 App Name                        0x1027c1da4 main (WiFiSetttingController.swift:26)
    11 libdyld.dylib                  0x18667256c start + 4
    
    #9. Thread
    [...]
    2  StreamingKit                   0x1034cbd6c -[STKAudioPlayer handleAudioPackets:numberBytes:numberPackets:packetDescriptions:] (STKAudioPlayer.m:2604)
    [AudioToolbox methods...]
    6  StreamingKit                   0x1034c8be0 -[STKAudioPlayer dataSourceDataAvailable:] (STKAudioPlayer.m:1591)
    7  StreamingKit                   0x1034ce828 -[STKCoreFoundationDataSource dataAvailable] (STKCoreFoundationDataSource.m:75)
    8  StreamingKit                   0x1034ceb88 ReadStreamCallbackProc (STKCoreFoundationDataSource.m:60)
    [...]
    19 StreamingKit                   0x1034c8584 -[STKAudioPlayer startInternal] (STKAudioPlayer.m:1436)
    [...]
    
    #10. Thread
    0  libsystem_kernel.dylib         0x186780bc4 mach_msg_trap + 8
    [...]
    6  StreamingKit                   0x1034c8584 -[STKAudioPlayer startInternal] (STKAudioPlayer.m:1436)
    [...]
    10 libsystem_pthread.dylib        0x1868b2c28 thread_start + 4
    
    #15. Thread
    [...]
    6  StreamingKit                   0x1034c8584 -[STKAudioPlayer startInternal] (STKAudioPlayer.m:1436)
    [...]
    

    I didn't have a chance to see full analytics yet. And I could not reproduce this crash. But from the stacktrace I see that this happens after STKAudioPlayer receives audio packets.

    I will further investigate this issue. Any tips or thoughts will be very helpful.

    opened by derpoliuk 11
  • Hw uses use this with a project created in Xcode 4.6

    Hw uses use this with a project created in Xcode 4.6

    Hi, when i use

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error]; [[AVAudioSession sharedInstance] setActive:YES error:&error];

    Float32 bufferLength = 0.1;
    AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration, sizeof(bufferLength), &bufferLength);
    
    
    audioPlayer = [[STKAudioPlayer alloc] initWithOptions:(STKAudioPlayerOptions){ .flushQueueOnSeek = YES, .enableVolumeMixer = NO, .equalizerBandFrequencies = {50, 100, 200, 400, 800, 1600, 2600, 16000} }];
    audioPlayer.meteringEnabled = YES;
    audioPlayer.volume = 1;
    

    Then @try { NSLog(@"createStreamer Test"); // [audioPlayer play:Audiurl];

        NSURL* url = [NSURL URLWithString:Audiurl];
        STKDataSource* dataSource2 = [STKAudioPlayer dataSourceFromURL:url];
        [audioPlayer setDataSource:dataSource2 withQueueItemId:[[SampleQueueId alloc] initWithUrl:url andCount:0]];
    
    }
    @catch (NSException *exception) {
        NSLog(@"catch  %@", exception.reason);
    }
    @finally {
        NSLog(@"Finalize");
    }
    

    its throughout ing error -[__NSArrayI count]: message sent to deallocated instance 0xba49380

    how resolve this.

    opened by KeyideasGlobal 11
  • Crash

    Crash

    Crashed: AURemoteIO::IOThread
    0  caulk                           0x409c caulk::thread::join() + 104
    1  libEmbeddedSystemAUs.dylib      0xf2e4 std::__1::__shared_ptr_emplace<AURemoteIO::IOThread, std::__1::allocator<AURemoteIO::IOThread> >::__on_zero_shared() + 36
    2  libEmbeddedSystemAUs.dylib      0x4c984 std::__1::__shared_weak_count::__release_shared() + 84
    3  libEmbeddedSystemAUs.dylib      0x1a174 AURemoteIO::Stop() + 1524
    4  libEmbeddedSystemAUs.dylib      0xd568 ausdk::AUMethodStop(void*) + 120
    5  AudioToolbox                    0x18b268 <redacted> + 288
    6  StreamingKit                    0xb50c -[STKAudioPlayer stopAudioUnitWithReason:] + 2605 (STKAudioPlayer.m:2605)
    7  StreamingKit                    0x82ec -[STKAudioPlayer processRunloop] + 1481 (STKAudioPlayer.m:1481)
    8  StreamingKit                    0x724c -[STKAudioPlayer audioQueueFinishedPlaying:] + 1187 (STKAudioPlayer.m:1187)
    9  StreamingKit                    0xac68 OutputRenderCallback + 3228 (STKAudioPlayer.m:3228)
    10 libEmbeddedSystemAUs.dylib      0x1cd94 AUMultiChannelMixer::MixerCore::RenderInput(unsigned int, AudioTimeStamp const&, unsigned int) + 436
    11 libEmbeddedSystemAUs.dylib      0x1a6c4 AUMultiChannelMixer::MixerCore::Mix(InputRenderOrderInfo const*, int, AudioTimeStamp const&, unsigned int) + 1120
    12 libEmbeddedSystemAUs.dylib      0x5170 AUMultiChannelMixer::MixerCore::MasterMix(AudioTimeStamp const&, unsigned int) + 2076
    13 libEmbeddedSystemAUs.dylib      0x7520 AUMultiChannelMixer::Render(unsigned int&, AudioTimeStamp const&, unsigned int) + 832
    14 libEmbeddedSystemAUs.dylib      0x1640 ausdk::AUBase::DoRender(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int, AudioBufferList&) + 1544
    15 libEmbeddedSystemAUs.dylib      0x40f0 ausdk::AUMethodRender(void*, unsigned int*, AudioTimeStamp const*, unsigned int, unsigned int, AudioBufferList*) + 52
    16 libEmbeddedSystemAUs.dylib      0x25634 ausdk::AUInputElement::PullInput(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int) + 140
    17 libEmbeddedSystemAUs.dylib      0x6ea64 AUNotQuiteSoSimpleTime::PullInputAndAdvanceTimeStamp(unsigned int, unsigned int) + 340
    18 libEmbeddedSystemAUs.dylib      0x6e638 AUNotQuiteSoSimpleTime::Render(unsigned int&, AudioTimeStamp const&, unsigned int) + 1768
    19 libEmbeddedSystemAUs.dylib      0x1640 ausdk::AUBase::DoRender(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int, AudioBufferList&) + 1544
    20 libEmbeddedSystemAUs.dylib      0x40f0 ausdk::AUMethodRender(void*, unsigned int*, AudioTimeStamp const*, unsigned int, unsigned int, AudioBufferList*) + 52
    21 libEmbeddedSystemAUs.dylib      0x25634 ausdk::AUInputElement::PullInput(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int) + 140
    22 libEmbeddedSystemAUs.dylib      0xc63c AUInputFormatConverter2::InputProc(OpaqueAudioConverter*, unsigned int*, AudioBufferList*, AudioStreamPacketDescription**, void*) + 160
    23 AudioToolboxCore                0x25f0 acv1::AudioConverterChain::CallInputProc(unsigned int) + 436
    24 AudioToolboxCore                0x1c1ec acv1::AudioConverterChain::FillBufferFromInputProc(unsigned int*, CADeprecated::CABufferList*) + 428
    25 AudioToolboxCore                0x2ec60 acv1::BufferedAudioConverter::GetInputBytes(unsigned int, unsigned int&, CADeprecated::CABufferList const*&) + 220
    26 AudioToolboxCore                0x127968 acv1::Resampler2Wrapper::RenderOutput(CADeprecated::CABufferList*, unsigned int, unsigned int&) + 244
    27 AudioToolboxCore                0x1f37c8 acv1::SampleRateConverter::RenderOutput(CADeprecated::CABufferList*, unsigned int, unsigned int&, AudioStreamPacketDescription*) + 76
    28 AudioToolboxCore                0x134d0 acv1::BufferedAudioConverter::FillBuffer(unsigned int&, AudioBufferList&, AudioStreamPacketDescription*) + 416
    29 AudioToolboxCore                0x1f0b4 acv1::AudioConverterChain::RenderOutput(CADeprecated::CABufferList*, unsigned int, unsigned int&, AudioStreamPacketDescription*) + 148
    30 AudioToolboxCore                0x134d0 acv1::BufferedAudioConverter::FillBuffer(unsigned int&, AudioBufferList&, AudioStreamPacketDescription*) + 416
    31 AudioToolboxCore                0x3af8 acv1::_AudioConverterFillComplexBuffer(OpaqueAudioConverter*, int (*)(OpaqueAudioConverter*, unsigned int*, AudioBufferList*, AudioStreamPacketDescription**, void*), void*, unsigned int*, AudioBufferList*, AudioStreamPacketDescription*, AudioStreamPacketDependencyInfo*) + 796
    32 libEmbeddedSystemAUs.dylib      0x18b7c AUConverterBase::RenderBus(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int) + 712
    33 libEmbeddedSystemAUs.dylib      0x1245c AURemoteIO::RenderBus(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int) + 196
    34 libEmbeddedSystemAUs.dylib      0x1640 ausdk::AUBase::DoRender(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int, AudioBufferList&) + 1544
    35 libEmbeddedSystemAUs.dylib      0x2894 AURemoteIO::PerformIO(unsigned int, unsigned int, unsigned int, AudioTimeStamp const&, AudioTimeStamp const&, AudioBufferList const*, AudioBufferList*, int&) + 1352
    36 libEmbeddedSystemAUs.dylib      0xb8f4 _XPerformIO + 340
    37 libAudioToolboxUtility.dylib    0x23e0 mshMIGPerform + 260
    38 libAudioToolboxUtility.dylib    0x1b30 MSHMIGDispatchMessage + 40
    39 libEmbeddedSystemAUs.dylib      0x215c void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, AURemoteIO::IOThread::IOThread(AURemoteIO&, caulk::thread::attributes const&, caulk::mach::os_workgroup const&)::'lambda'(), std::__1::tuple<> > >(void*) + 572
    40 libsystem_pthread.dylib         0x19a4 _pthread_start + 148
    41 libsystem_pthread.dylib         0xea0 thread_start + 8
    
    opened by lixiang1994 5
  • AUGraphStart crashes on simulator below iOS 14

    AUGraphStart crashes on simulator below iOS 14

    Both the example app and our app crashes under simulator below iOS 14 (so only iOS 14 simulator works) since Big Sur.

    It seems that once they fixed to avoid crashing on iOS 14 #453 it started to crash on the simulators. There is also a Thread on Apple forums https://developer.apple.com/forums/thread/667921

    2021-06-15 09:31:19.245892+0100 ExampleApp[72627:4435895] 239: CA_UISoundClientBase::StartPlaying: AddRunningClient failed (status = -66681).
    2021-06-15 09:31:19.352905+0100 ExampleApp[72627:4435728] Slider Changed: 0.000000
    2021-06-15 09:31:35.521689+0100 ExampleApp[72627:4435728] setDataSource:withQueueItemId: Playing: http://www.abstractpath.com/files/audiosamples/sample.mp3
    2021-06-15 09:31:35.639445+0100 ExampleApp[72627:4435950] setCurrentlyReadingEntry:andStartPlaying:clearQueue: http://www.abstractpath.com/files/audiosamples/sample.mp3
    2021-06-15 09:31:35.889586+0100 ExampleApp[72627:4435950] processFinishPlayingIfAnyAndPlayingNext:withNext: Finished: nothing, Next: http://www.abstractpath.com/files/audiosamples/sample.mp3, buffering.count=0,upcoming.count=0
    2021-06-15 09:31:36.527620+0100 ExampleApp[72627:4436997] [AudioHAL_Client] HALB_IOBufferManager.cpp:226:GetIOBuffer:  HALB_IOBufferManager::GetIOBuffer: the stream index is out of range
    2021-06-15 09:31:36.527789+0100 ExampleApp[72627:4436997] [AudioHAL_Client] HALB_IOBufferManager.cpp:226:GetIOBuffer:  HALB_IOBufferManager::GetIOBuffer: the stream index is out of range
    2021-06-15 09:31:36.539061+0100 ExampleApp[72627:4436997] [aqme] 254: AQDefaultDevice (1): output stream 0: null buffer
    2021-06-15 09:31:36.539329+0100 ExampleApp[72627:4436997] [aqme] 1640: EXCEPTION thrown (-50): -
    2021-06-15 09:31:44.890548+0100 ExampleApp[72627:4435950] RPCTimeout.mm:55:_ReportRPCTimeout: Start: Mach message timeout. Apparently deadlocked. Aborting now.```
    
    opened by iamszabo 1
Owner
Thong Nguyen
Engineering Manager @ Facebook
Thong Nguyen
LaiFeng IOS Live Kit,H264 and AAC Hard coding,support GPUImage Beauty, rtmp transmission,weak network lost frame,Dynamic switching rate

LFLiveKit LFLiveKit is a opensource RTMP streaming SDK for iOS. Features Background recording Support horizontal vertical recording Support Beauty Fac

null 4.3k Jan 6, 2023
Syntax sugar of OpenTok iOS SDK with Audio/Video communication including screen sharing

Accelerator Core iOS The Accelerator Core is a solution to integrate audio/video communication to any iOS applications via OpenTok platform. Accelerat

OpenTok 30 Nov 8, 2022
Player for streaming local and remote audio files. Written in Swift.

Jukebox is an iOS audio player written in Swift. Contents Features Installation Supported OS & SDK versions Usage Handling remote events Public interf

Teo 545 Nov 11, 2022
Will Powell 1.2k Dec 29, 2022
AudioPlayer is a simple class for playing audio in iOS, macOS and tvOS apps.

AudioPlayer AudioPlayer is a simple class for playing audio in iOS, macOS and tvOS apps.

Tom Baranes 260 Nov 27, 2022
AudioPlayer is syntax and feature sugar over AVPlayer. It plays your audio files (local & remote).

AudioPlayer AudioPlayer is a wrapper around AVPlayer. It also offers cool features such as: Quality control based on number of interruption (buffering

Kevin Delannoy 676 Dec 25, 2022
Designed for gesture-driven animations. Fast, simple, & extensible!

Yet Another Animation Library Designed for gesture-driven animations. Fast, simple, & extensible! It is written in pure swift 3.1 with protocol orient

Luke Zhao 509 Dec 21, 2022
Fast Websockets in Swift for iOS and OSX

SwiftWebSocket Conforming WebSocket (RFC 6455) client library for iOS and Mac OSX. SwiftWebSocket passes all 521 of the Autobahn's fuzzing tests, incl

Josh 1.5k Dec 28, 2022
Fast Websockets in Swift for iOS and OSX

SwiftWebSocket Conforming WebSocket (RFC 6455) client library for iOS and Mac OSX. SwiftWebSocket passes all 521 of the Autobahn's fuzzing tests, incl

Josh Baker 1.5k Dec 27, 2022
Fast Multi-store Redux-like architecture for iOS/OSX applications

Highway Highway is implementation of Redux-like architecture pattern using Swift. If you were looking for a something like this: TEA (The Elm Architec

Dmitrii Cooler 14 Dec 9, 2022
Fast Swift Views layouting without auto layout. No magic, pure code, full control and blazing fast. Concise syntax, intuitive, readable & chainable. [iOS/macOS/tvOS/CALayer]

Extremely Fast views layouting without auto layout. No magic, pure code, full control and blazing fast. Concise syntax, intuitive, readable & chainabl

layoutBox 2.1k Dec 22, 2022
Fast Swift Views layouting without auto layout. No magic, pure code, full control and blazing fast

Fast Swift Views layouting without auto layout. No magic, pure code, full control and blazing fast. Concise syntax, intuitive, readable & chainable. [iOS/macOS/tvOS/CALayer]

layoutBox 2.1k Jan 2, 2023
Voice Memos is an audio recorder App for iPhone and iPad that covers some of the new technologies and APIs introduced in iOS 8 written in Swift.

VoiceMemos Voice Memos is a voice recorder App for iPhone and iPad that covers some of the new technologies and APIs introduced in iOS 8 written in Sw

Zhouqi Mo 322 Aug 4, 2022
Reading List is an iOS app for iPhone and iPad which helps users track and catalog the books they read

Reading List Reading List is an iOS app for iPhone and iPad which helps users track and catalog the books they read. Reading List v2 As of version 2.0

Andrew Bennet 281 Jan 15, 2022
TypeStyle is a handy app for iPhone and iPad that generates text using different styles and decorations. It is a native Swift iOS app.

TypeStyle TypeStyle is a handy app for iPhone and iPad that generates text using different styles and decorations. It is a native Swift iOS app. Featu

Eugene Belinski 31 Dec 14, 2022
A "time ago", "time since", "relative date", or "fuzzy date" category for NSDate and iOS, Objective-C, Cocoa Touch, iPhone, iPad

Migration 2014.04.12 NSDate+TimeAgo has merged with DateTools. DateTools is the parent project and Matthew York is the project head. This project is n

Kevin Lawler 1.8k Dec 2, 2022
iOS/iPhone/iPad Chart, Graph. Event handling and animation supported.

#EChart A highly extendable, easy to use chart with event handling, animation supported. ##Test How To Use Download and run the EChartDemo project is

Scott Zhu 646 Dec 27, 2022
📱 Wire for iOS (iPhone and iPad)

Wire™ This repository is part of the source code of Wire. You can find more information at wire.com or by contacting [email protected]. You can find

Wire Swiss GmbH 3.2k Jan 8, 2023
📱 Wire for iOS (iPhone and iPad)

Wire™ This repository is part of the source code of Wire. You can find more information at wire.com or by contacting [email protected]. You can find

Wire Swiss GmbH 3.2k Dec 30, 2022
RNH Tracker is a GPS logger for iOS (iPhone, iPad, iPod) Track your location and send your logs to RNH Regatta :-)

RNH Tracker for iOS + WatchOS RNH Tracker is a GPS logger for iOS (iPhone, iPad, iPod) with offline map cache support. Track your location, add waypoi

Ed Cafferata 0 Jan 23, 2022