我一直在使用Apple Shiny 的新AVFoundation库,但到目前为止,我无法设置AVAudioEngine使用的输入或输出设备(例如USB声卡),而且似乎无法在文档说这甚至是可能的。

有人对这个有经验么?

最佳答案

好的,在第十次阅读文档之后,我注意到AVAudioEngine具有成员inputNodeoutputNode(不确定我是怎么错过的!)。

以下代码似乎可以完成这项工作:

AudioDeviceID inputDeviceID = 53; // get this using AudioObjectGetPropertyData
AVAudioEngine *engine = [[AVAudioEngine alloc] init];
AudioUnit audioUnit = [[engine inputNode] audioUnit];

OSStatus error = AudioUnitSetProperty(audioUnit,
                                      kAudioOutputUnitProperty_CurrentDevice,
                                      kAudioUnitScope_Global,
                                      0,
                                      &inputDeviceID,
                                      sizeof(inputDeviceID));

我从CAPlayThrough示例中借用了非AVFoundation C代码。

关于objective-c - 设置AVAudioEngine输入和输出设备,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28781283/

10-11 19:48