AVAudioEngine准备期间出错

时间:2017-11-23 14:09:22

标签: objective-c avaudioengine

我是AVAudioEngine的新手。 我的任务非常简单:我希望从麦克风获取声音,改变它的音高并保存到文件或只是播放结果。

self.engine = [[AVAudioEngine alloc] init];
self.pitchNode = [[AVAudioUnitTimePitch alloc] init];
self.recordNode = self.engine.inputNode;

[self.engine attachNode:self.pitchNode];

AVAudioFormat *fmt = [self.recordNode inputFormatForBus:0];

[self.engine connect:self.recordNode to:self.pitchNode format:fmt];
[self.engine connect:self.pitchNode to:self.engine.mainMixerNode fromBus:0 toBus:1 format:fmt];
[self.engine connect:self.engine.mainMixerNode to:self.engine.outputNode format:fmt];
 [self.engine prepare]; // at this line i got error message 
  

错误:> avae> AVAudioEngineGraph.mm:685:InitializeActiveNodesInInputChain:必需条件为false:false == isInputConnToConverter

有人可以帮忙吗?感谢。

2 个答案:

答案 0 :(得分:1)

我找到了解决方法:不是将inputNode连接到音高节点我只需安装它并在其中播放带有AVAudioPlayerNode的缓冲区的回调块

答案 1 :(得分:0)

AVAudioUnitTimePitch(AVAudioUnitTimeEffect)不支持实时音频。您应该保存原始音频数据并使用另一个带有AVAudioUnitTimePitch的引擎进行播放。