【问题标题】:AudioQueueNewInput callback latencyAudioQueueNewInput 回调延迟
【发布时间】: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


    【解决方案1】:

    Audio Queue API 看起来像是在 Audio Unit RemoteIO API 之上构建的。小型音频队列缓冲区可能被用于在幕后填充更大的 RemoteIO 缓冲区。甚至可能会进行一些速率重采样(在最初的 2G 手机上)。

    为了降低延迟,请尝试直接使用 RemoteIO Audio Unit API,然后请求音频会话为您的应用提供更小的延迟缓冲区大小。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2021-04-15
    • 2016-12-17
    • 1970-01-01
    相关资源
    最近更新 更多