6

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ように見えるプロパティがありますが、 AVAudioSessioninputNumberOfChannelsmaximumInputNumberOfChannels両方とも 1 です。このプロパティchannelAssignmentsは、複数のチャンネルを持つ補助マイク用に設計されています。

低レベルの AudioUnit を使用してみましたが、同じ結果が得られます。入力ソースを変更するための AudioUnit のプロパティが見つかりませんでした。

どんな助けでも大歓迎です。

4

1 に答える 1