APlay
更棒的iOS音频流及播放Swift框架
使用方法
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)
...
⚠️ ⚠️ ⚠️ 已知问题
此项目只能以DEBUG
模式运行,因为优化模式会暂停解码循环。
如果使用CocoaPods安装,请在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
文档
运行./generate_docs.sh
特性
-
CPU友好设计,避免过大的峰值
-
支持WAVE和FLAC(带有寻址表)上的寻址
-
支持iOS已支持的音频格式(MP3、WAVE、FLAC等)(未完全测试)
-
提供摘要(已测试)、基本(未测试)代理支持
-
支持多种协议:ShoutCast、标准HTTP、本地文件
-
针对艰难的网络条件做好准备:在失败时重启,在流结束时未完整流式传输内容时重启
-
支持元数据:ShoutCast元数据、ID3V1、ID3v1.1、ID3v2.2、ID3v2.3、ID3v2.4、FLAC元数据
-
本地磁盘存储:用户可以添加文件夹以加载本地资源
-
无需等待缓冲即可立即开始播放
-
支持将流内容缓存在文件中
-
支持自定义日志模块和文件日志记录
-
开放协议以支持定制。
AudioDecoderCompatible
、ConfigurationCompatible
、LoggerCompatible
...
安装
Carthage github "CodeEagle/APlay"
CocoaPods pod 'APlay'
待办事项
- Airplay2 支持(可能不是)
- AudioEffectUint 支持