我正在使用GCD来发射一个定期播放嘀嗒声的循环。
我还使用AVAudioSession
配置了AVAudioSessionCategoryPlayback
并使用音频后台模式编辑了info.plist
文件以启用后台执行。
这在应用程序或后台运行时效果很好。但是,当屏幕锁定时,声音播放非常不均匀。这听起来像迪克 - 迪克 - 迪克迪克 - 迪克 - 迪克
我在调试模式下运行,屏幕被锁定,日志按预期均匀输出。所以我猜这可能是音频问题。
我花了很多时间使用不同的音频引擎和库,但没有一个改善了这种情况。
让我自己的循环音频走的路吗?我知道AudioQueue
可能会有所帮助,但不知道从哪里开始。
非常感谢任何想法。
答案 0 :(得分:1)
GCD不保证您进行音频计时所需的精确计时。如果你希望它对音乐家,尤其是鼓手有用,你需要将抖动降低到<20ms,理想情况下<10ms或<5ms。
AudioQueue
或音频单元可能是要走的路(我建议AudioQueue
)。您需要对声音流进行样本级访问,您可以精确地以22/44/48kHz分辨率写入样本,这是您需要的。如果您计算样本,那么只要CPU能够满足音频硬件的需求,您就可以保证在合适的时间发生滴答。
如果沿着这条路走下去,你需要快速了解样本,交错和缓冲区大小。