11

RemoteIO 单元有没有办法在 iPhone 5 上拾取麦克风?我可以配置AVAudioSession为在前置麦克风或底部麦克风之间进行选择,但我找不到选择后置麦克风的方法。

使用AVFoundation framework后置摄像头时,肯定会使用后置麦克风进行视频录制,但我想要一种使用CoreAudio来选择相同的方法。那可能吗 ?

4

2 回答 2

1

使用 AVAudioSession 获取可用的输入。在我的 iPhone 5 上,它看起来像这样。

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

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

然后使用这些输入之一来获取可用的数据源,就像这样。

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 回答
1

设置kAudioSessionProperty_ModekAudioSessionMode_VideoRecordingwithAudioSessionSetProperty使用离相机最近的麦克风,应该是后置麦克风。那是如果您使用音频会话服务。AVAudioSessionModeVideoRecording如果您使用 AVFoundation 进行录制。文档说“使用此模式可能会导致系统提供适当的音频信号处理。” 我将其解释为“我们也可以使用其他麦克风来消除噪音”。

于 2013-05-16T08:15:24.450 回答