iPhone 5 具有三个麦克风 - 顶部正面、顶部背面和底部。我想同时记录所有这些以进行一些信号处理。我试了好几天都没有成功。
使用 AVAudioSession,我可以看到麦克风:
NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs);
"<AVAudioSessionPortDescription: 0x14554400, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = Back>"
NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs[0].inputDataSources);
"<AVAudioSessionDataSourceDescription: 0x145afb00, ID = 1835216945; name = Bottom>",
"<AVAudioSessionDataSourceDescription: 0x145b1870, ID = 1835216946; name = Front>",
"<AVAudioSessionDataSourceDescription: 0x145b3650, ID = 1835216947; name = Back>"
我可以使用 AVAudioSessionPortDescription-setPreferredDataSource:error:
从三个之一进行录制。但我不能同时录制多个。如果我将输入通道数设置为 2,我会从同一个麦克风获得两个相同的音轨。
AVAudioRecorder 有一个channelAssignments
看起来应该可以工作的属性,但是 AVAudioSessioninputNumberOfChannels
和maximumInputNumberOfChannels
都是 1。该属性channelAssignments
是为具有多个通道的辅助麦克风设计的。
我尝试使用低级 AudioUnit,但我得到了相同的结果。我在 AudioUnit 上找不到任何属性来更改输入源。
任何帮助,将不胜感激。