【发布时间】:2011-01-04 15:49:56
【问题描述】:
无论缓冲区的大小如何,我提供给 AudioQueueNewInput 的回调都会以大致相同的时间间隔发生。
例如:
如果您有 0.05 秒的缓冲区并以 44k 录制,则回调首先在 0.09 秒左右调用,然后在(0.001 秒)之后立即发生第二次调用。然后你再次等待 ~.09 秒。如果您的缓冲区大小是 0.025。您将等待 0.09 秒,然后几乎立即看到另外 3 个缓冲区。
更改采样率会增加延迟。
录制 16 位 8k 音频会导致缓冲区溢出之间的延迟为 0.5 秒。
所以我怀疑有一个 8000 字节的缓冲区正在幕后使用。当它被填满时,我的回调将使用给定的缓冲区运行,直到它被清空。
我想以尽可能少的延迟录制 16k 16 位音频。鉴于上述情况,我总是看到大约四分之一秒的延迟。有没有办法减少延迟?是否有音频会话属性来设置内部缓冲区大小?我试过 kAudioSessionProperty_PreferredHardwareIOBufferDuration 但它似乎没有帮助。
谢谢!
【问题讨论】:
标签: iphone audio audiotoolbox