iPhone 5 には、前面上部、背面上部、下部の 3 つのマイクがあります。信号処理を行うために、それらすべてを同時に録音したいと考えています。数日間試しましたが失敗しました。
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:
して、3 つのうちの 1 つから録音できます。ただし、同時に複数台に録音することはできません。入力チャネルの数を 2 に設定すると、同じマイクから 2 つの同一のトラックが得られます。
AVAudioRecorder には機能するchannelAssignments
ように見えるプロパティがありますが、 AVAudioSessioninputNumberOfChannels
とmaximumInputNumberOfChannels
両方とも 1 です。このプロパティchannelAssignments
は、複数のチャンネルを持つ補助マイク用に設計されています。
低レベルの AudioUnit を使用してみましたが、同じ結果が得られます。入力ソースを変更するための AudioUnit のプロパティが見つかりませんでした。
どんな助けでも大歓迎です。