1

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

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

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

谢谢!

4

1 回答 1

0

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

解码压缩音频可能会从解码开始增加大约一个或两个数量级的延迟。

于 2012-08-21T20:48:56.503 回答