AVAudioEngine 从外部麦克风录制音乐

AVAudioEngine recording music from external microphone

我已经使用 AVAudioEngine 设置了一个简单的图表,以简单地获取默认输入节点的数据并将其放入耳机(音频监控) - 这应该只是让您的耳机复制它通过麦克风听到的任何内容,并且它确实如此,当 运行 这个应用程序时,背景噪音会直接进入您的耳朵,但是,有一个问题:它总是采用内置麦克风的输入,即使外部麦克风已插入 iPad.

AVAudioSession 告诉我,输入应该使用外部麦克风(通过 [[AVAudioSession sharedInstance] currentRoute]),如果我用 AVAudioRecorder 录制音频,它确实使用那个输入,但不是 AVAudioEngine,它坚持内置麦克风。难道我做错了什么?有没有我错过的设置?

尝试将首选输入设置为外部麦克风:

    //get all avaialable Inputs
    var listOfInputs = AVAudioSession.sharedInstance().availableInputs
    println(listOfInputs)

    //pick which one you want (change index)
    var availableInput: AVAudioSessionPortDescription = listOfInputs[0] as AVAudioSessionPortDescription

    //set the Preffered Input
     AVAudioSession.sharedInstance().setPreferredInput(availableInput, error: nil)

不过要小心,为了简单起见,这没有错误处理。如果您的外部麦克风未插入或不可用,您将需要提供默认选项。