在 iPhone 5 上选择后置麦克风

Posted

技术标签:

【中文标题】在 iPhone 5 上选择后置麦克风【英文标题】:Select Back Microphone on iPhone 5 【发布时间】:2013-01-21 20:26:46 【问题描述】:

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

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

【问题讨论】:

嗨,Deepak Sharma,你能给我一些想法或代码来选择前置麦克风或底部麦克风吗?提前致谢 嘿,Deepak,您找到解决方案了吗?如果有,你介意分享一下吗? 【参考方案1】:

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

【讨论】:

【参考方案2】:

使用 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];
    

【讨论】:

谢谢。但这应该只适用于我相信的 iOS 7。我认为这也可以。 使用此代码的类别应该是什么,用于设置首选数据源?

以上是关于在 iPhone 5 上选择后置麦克风的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 设备上选择后置摄像头 - jsartoolkit5

从两个麦克风录制 - ios

Swift 4 AVFoundation - 同时录制多个音频源

在 iPad 上选择照片并从相机拍摄

将电压施加到 iPhone 的麦克风端口

如何在 iPhone 内置麦克风上禁用 AEC、AGC 和 HPF