0

这是一个关于时间的非常“细节”问题......

我正在使用 iOS 的 RemoteIO 音频单元来做事。只是想知道系统究竟是如何处理时间的:在调用 AudioOutputUnitStart() 之后,该单元应该“打开”,然后渲染回调将被下游单元拉取。请允许我猜测:

可能性1:下一次渲染回调发生在AudioOutputUnitStart()执行之后,然后继续

可能性2:系统有自己的render回调节奏。调用 AudioOutputUnitStart() 后,下一个渲染回调捕获系统的“下一个”滴答声之一,然后从那里开始

1 还是 2?还是有 3 个?提前致谢!

4

1 回答 1

1

音频延迟似乎取决于特定的设备型号、音频会话和选项、请求的采样率和缓冲区大小,以及是否有任何其他音频(背景或最近关闭的应用程序)正在或最近在系统上播放或录制。内部音频放大器电路(等)是否需要通电或已经打开可能会产生最大的差异。由于操作系统重采样和混频器代码可能需要缓冲,请求某些采样率似乎也会导致额外的时间。

很可能是(2)或(3)。

使用 RemoteIO 时最小化延迟的最佳方法是在音频会话设置中请求非常短的缓冲区(1 到 6 毫秒),提前启动音频会话和音频单元(在应用程序启动时,查看加载等),然后用零填充回调缓冲区(或丢弃记录的回调数据),直到您需要声音。

于 2017-12-08T17:37:11.027 回答