ios – 如何将AVAudioEngine连接到Lightning Port音频输入?

前端之家收集整理的这篇文章主要介绍了ios – 如何将AVAudioEngine连接到Lightning Port音频输入?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想把我的电吉他连接到我的应用程序.我有硬件(Line6 Sonic Port)将吉他的音频传递到我的iPhone.我已经想出如何将音频播放到我的耳机,但它的音频来自我的耳机麦克风,而不是闪电端口输入.如何以编程方式查找Lightning Port音频输入,而不是通过耳机麦克风获取音频?

这是我到目前为止所尝试的:

@H_403_4@self.audioEngine = AVAudioEngine() let input = self.audioEngine.inputNode let mixer = self.audioEngine.mainMixerNode let output = self.audioEngine.outputNode self.audioEngine.inputNode.installTapOnBus(0,bufferSize: 128,format: input.inputFormatForBus(0)) { (buffer,time) -> Void in // } self.audioEngine.connect(input,to: mixer,format: input.inputFormatForBus(0)) self.audioEngine.connect(mixer,to: output,format: mixer.inputFormatForBus(0)) self.audioEngine.prepare() self.audioEngine.startAndReturnError(nil)

当我跑这个时,我听到了音频 – 但它来自我的耳机麦克风,而不是吉他.如何连接来自闪电端口的音频?

为了快速说明,这是我正在使用的硬件:

解决方法

要连接到特定的音频输入,需要使用setPreferredInput:error:方法配置AVAudioSession的sharedInstance.

以下是Objective-C中的完成方式:

@H_403_4@AVAudioSession *sharedSession = [AVAudioSession sharedInstance]; NSArray *availableInputs = [sharedSession availableInputs]; [availableInputs enumerateObjectsUsingBlock:^(AVAudioSessionPortDescription *portDescription,NSUInteger idx,BOOL *stop) { if (portDescription.portType == AVAudioSessionPortUSBAudio) { [sharedSession setPreferredInput:portDescription error:nil]; } }];

要了解更多信息,请查看:

> AVAudioSession documentation
> Technical Q&A QA1799: AVAudioSession – Microphone Selection

原文链接:https://www.f2er.com/iOS/328442.html

猜你在找的iOS相关文章