繁体   English   中英

AudioToolbox - 录音时的回调延迟

[英]AudioToolbox - Callback delay while recording

最近,我一直在为 iOS 开展一个非常具体的项目,我的研究使我得到了几乎最终的代码。 到目前为止,我已经解决了我发现的所有极端困难,但是在这一点上我似乎没有任何线索(关于解决它的原因和可能性)。

我设置了我的音频队列(采样率 44100,格式 LinearPCM,每通道 16 位,每帧 2 字节,每帧 1 通道......)并开始使用 12 个音频缓冲区录制声音。 但是,每 4 次回调后似乎会有延迟。

情况如下:前 4 个回调的调用间隔约为 2 毫秒。 但是,在第 4 和第 5 之间,有大约 60ms 的延迟。 同样的事情发生在 8 号和 9 号之间,12 号和 13 号之间……

每帧的字节数和延迟时间之间似乎存在关系。 我知道这一点,因为如果我更改为每帧 4 个字节,我会在第 8 和第 9 之间开始延迟,然后在第 16 和第 17、第 24 和第 25 之间......尽管如此,似乎没有延迟时刻与缓冲区数量之间的任何关系。

回调 function 只做两件事:将音频数据 (inBuffer->mAudioData) 存储在我的 class 可以使用的数组中; 并调用另一个 AudioQueueEnqueueBuffer,将当前缓冲区放回队列中。

有人 go 已经解决了这个问题吗? 有谁知道,至少,这可能是什么原因?

先感谢您。

音频队列 API 似乎在 RemoteIO 音频单元 API 之上运行,其实际音频缓冲区大小可能与您的音频队列缓冲区大小无关,并且在您的示例中大于任何大小。 因此,只要 RemoteIO 缓冲区准备就绪,一堆较小的 AQ 缓冲区就会很快被填满。 然后你会得到更长的延迟,等待一些更大的缓冲区被样本填充。

如果您想要更好地控制(更均匀间隔)缓冲延迟,请尝试直接使用 RemoteIo 音频单元。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM