A Better(Maybe) iOS Audio Stream、Cache、Play Framework
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'