A Better(Maybe) iOS Audio Stream & Play Swift Framework
import APlay
...
let url = URL(string: "path/to/audio/resource")!
let player = APlay()
player.eventPipeline.delegate(to: self, with: { (target, event) in
// event handling
})
player.play(url)
...
This project can only run in DEBUG
mode,cause optimization mode will pause the decode loop.
if install with CocoaPods, add this block of code in your podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
swiftPods = ['APlay']
if swiftPods.include?(target.name)
config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = '-Onone'
end
end
end
end
Run ./generate_docs.sh
-
CPU-friendly design to avoid excessive peaks
-
Support seek on WAVE, and FLAC(with seektable)
-
Support all type of audio format(MP3, WAVE, FLAC, etc...) that iOS already support(Not fully tested)
-
Digest(Tested), Basic(not tested) proxy support
-
Multiple protocols supported: ShoutCast, standard HTTP, local files
-
Prepared for tough network conditions: restart on failures,restart on not full content streamed when end of stream
-
Metadata support: ShoutCast metadata, ID3V1, ID3v1.1, ID3v2.2, ID3v2.3, ID3v2.4, FLAC metadata
-
Local disk storing: user can add folders for local resource loading
-
Playback can start immediately without needing to wait for buffering
-
Support cached the stream contents to a file
-
Custom logging module and logging into file supported
-
Open protocols to support customizing.
AudioDecoderCompatible
,ConfigurationCompatible
,LoggerCompatible
...
Carthage github "CodeEagle/APlay"
CocoaPods pod 'APlay'
- Airplay2 support(Maybe not)
- AudioEffectUint support