什么会影响音频单元渲染回调周期(周期)?

Posted

技术标签:

【中文标题】什么会影响音频单元渲染回调周期(周期)?【英文标题】:what will affect audio-unit render callback cycle(period)? 【发布时间】:2020-11-17 03:58:22 【问题描述】:

我使用音频单元(子类型:VPIO)来播放音频。

网络发送的音频有抖动

问题: 1 .音频单元启动时间不固定,有时250MS,有时400MS(不同iPhone iPad) 2.播放回调周期甚至不是某个时候。例如我们 8K Sample_rate,大多数时间在 23 毫秒内被调用(播放回调)。340~342BYTE。但 偶尔,回调时间间隔 130+ ms,并且 ioData->mBuffers[0].mDataByteSize= 340 byte 也是。我没有在渲染回调函数中进行耗时的操作。只需将数据复制到 IOdata。数据就够了。

                          PlayCallback(void *inRefCon,

                           AudioUnitRenderActionFlags *ioActionFlags,

                           const AudioTimeStamp *inTimeStamp,

                           UInt32 inBusNumber,

                           UInt32 inNumberFrames,

                           AudioBufferList *IOData)copy data from my buffer 

我想知道什么会影响音频渲染回调周期(周期)?

【问题讨论】:

【参考方案1】:

后台模式通常会导致回调间隔或缓冲区大小增加 4 倍,这可能会节省电池电量(更长的间隔允许操作系统减少音频硬件 DMA 的频率,或者减少从睡眠/小睡模式中唤醒您的应用经常)。

开启或关闭 Siri 语音识别可能会影响麦克风芯片和相关音频输入电路启动所需的时间。任何其他应用程序是否也配置了音频会话也可能会影响启动时间。不同型号的 ios 设备的音频电路有所不同。

【讨论】:

【参考方案2】:

原因是由于录制。几乎我在录制和播放时使用不同的音频单元 obj,但它们位于相同的音频会话上下文中。一些操作会影响录制单元回调函数的周期,耗时比较长,结果就是播放音频单元的回调也会受到影响。

【讨论】:

以上是关于什么会影响音频单元渲染回调周期(周期)?的主要内容,如果未能解决你的问题,请参考以下文章

直接调用音频单元而不是回调 iOS

加载和选择音频文件到音频单元

编写远程 I/O 渲染回调函数时遇到问题

WaveOutWrite 回调创建断断续续的音频

在 iOS 上使用音频单元混合多个信号

核心音频:文件播放渲染回调函数