MTAudioProcessingTap - 生成更多输出样本?

时间:2015-10-19 14:32:13

标签: ios audio core-audio mediatoolbox

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

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

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

这里MTAudioProcessingTap是正确的选择吗?

2 个答案:

答案 0 :(得分:1)

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

您需要一个自定义音频单位图。

答案 1 :(得分:0)

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