11

RemoteIO ユニットが iPhone 5 でマイクを拾う方法はありますか? フロント マイクまたはボトム マイクを選択するように構成できますAVAudioSessionが、バック マイクを選択する方法が見つかりません。

AVFoundation frameworkバックカメラを使用する場合、確かにビデオ録画にバックマイクを使用しますが、 CoreAudio を使用して同じものを選択する方法が必要です。それは可能ですか?

4

2 に答える 2

1

with に設定kAudioSessionProperty_Modeすると、カメラに最も近いマイクが使用されます。これはバック マイクである必要があります。これは、Audio Session Services を使用する場合です。AVFoundation を使用して記録している場合。ドキュメントには、「このモードを使用すると、システムが適切なオーディオ信号処理を提供する可能性があります」と記載されています。「ノイズキャンセリングに他のマイクを使用することもある」と私は解釈します。 kAudioSessionMode_VideoRecordingAudioSessionSetPropertyAVAudioSessionModeVideoRecording

于 2013-05-16T08:15:24.450 に答える
1

AVAudioSession を使用して、利用可能な入力を取得します。私のiPhone5ではこんな感じです。

NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs);

  "<AVAudioSessionPortDescription: 0x14554400, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = Back>"

次に、これらの入力の 1 つを使用して、次のように availableDataSources を取得します。

NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs[0].dataSources);

  "<AVAudioSessionDataSourceDescription: 0x145afb00, ID = 1835216945; name = Bottom>",
  "<AVAudioSessionDataSourceDescription: 0x145b1870, ID = 1835216946; name = Front>",
  "<AVAudioSessionDataSourceDescription: 0x145b3650, ID = 1835216947; name = Back>"

これで、好みのデータ ソースを設定できます。

AVAudioSessionPortDescription *port = [AVAudioSession sharedInstance].availableInputs[0];
for (AVAudioSessionDataSourceDescription *source in port.dataSources) {
    if ([source.dataSourceName isEqualToString:@"Back"]) {
        [port setPreferredDataSource:source error:nil];
    }
}
于 2013-10-19T06:42:24.770 に答える