MTAudioProcessingTap - 产生更多的输出样本?

MTAudioProcessingTap - produce more output samples?

在我的 iOS 8.0 中。 App 我需要对(非实时)音频播放应用一些自定义音频处理。通常,音频来自设备本地音频文件。

目前,我在 AVMutableAudioMix 上使用 MTAudioProcessingTap。然后在 process 回调中调用我的处理代码。在某些情况下,此处理代码 可能 产生比传入样本数量更多的样本,我想知道处理此问题的最佳方法是什么(例如考虑时间拉伸效果)

process 回调采用传入的 CMItemCount *numberFramesOut 参数,表示传出帧的数量。对于传入帧和传出帧的数量相同的就地处理,这没有问题。在我的处理生成更多样本的情况下,我需要一种方法来进行播放,直到我的输出缓冲区被清空。

无论如何,MTAudioProcessingTap 是正确的选择吗?

只要长期利率相同,通告buffer/fifo 是在不同生产者利率和消费者利率之间进行中介的最常用方法之一。如果从长远来看,您计划制作的样本多于播放的样本,您可能需要偶尔暂时停止制作样本,同时仍在播放,以免填满所有缓冲区或系统内存。

MTAudioProcessingTap 不支持更改输入和输出之间的样本数(例如跳过静音)。

为此您需要自定义音频单元图表。