在 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_VideoRecording
和AudioSessionSetProperty
使用离摄像头最近的麦克风,应该是后置麦克风。那是如果您使用音频会话服务。 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