iPhone 上的音频硬件延迟

Posted

技术标签:

【中文标题】iPhone 上的音频硬件延迟【英文标题】:Audio hardware latency on the iPhone 【发布时间】:2012-08-21 18:26:29 【问题描述】:

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

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

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

谢谢!

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于iPhone 上的音频硬件延迟的主要内容,如果未能解决你的问题,请参考以下文章

如何播放可以通过 iPhone 上的屏幕锁定按钮关闭的音频

如何在 iPhone 上实现音频流 <50 毫秒的延迟

iPhone 上的实时录音/分析

iPhone 3G、3GS 和 4 上音频框架的差异

为啥手机(不限于 iPhone)上的 YouTube 音频出现乱码? [关闭]

iPhone 上的音频混合:需要建议