iPhone上的音频硬件延迟

时间:2012-08-21 18:26:30

标签: iphone avfoundation core-audio audioqueue

我目前正在开发一个播放音频文件的应用程序(mp3,但可以更改为WAV以减少解码时间),并同时录制音频。
出于同步目的,我想估计音频开始播放的确切时间。

使用AudioQueue控制每个缓冲区,我可以估计第一个缓冲区耗尽的时间。我的问题是:

  1. 正在播放的AudioQueue缓冲区与实际播放之间的硬件延迟是多少?
  2. 是否有更低级别的API(特别是AudioUnit),它具有更好的性能(在硬件延迟测量中)?
  3. 是否可以使用AudioQueue设置硬件延迟的上限,w或w / o解码缓冲区? 5ms似乎是我可以使用的东西,更多的是需要不同的方法。
  4. 谢谢!

1 个答案:

答案 0 :(得分:0)

音频队列API运行在音频单元之上,因此使用原始未压缩音频的RemoteIO音频单元将允许更低且更确定的延迟。可以在某些iOS设备上设置的最小RemoteIO缓冲持续时间(使用音频会话API)大约为6到24毫秒,具体取决于应用程序状态。这可能会设置播放和录制延迟的下限,具体取决于您用于延迟测量点的事件。

解码压缩音频可以在解码开始时增加一个数量级或两个延迟。