gpt4 book ai didi

iphone - AudioToolbox - 录音时的回调延迟

转载 作者:可可西里 更新时间:2023-11-01 05:47:54 28 4
gpt4 key购买 nike

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

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

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

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

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

有人遇到过这个问题吗?有谁知道,至少,它可能是什么原因?

提前谢谢你。

最佳答案

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

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

关于iphone - AudioToolbox - 录音时的回调延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6686930/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com