ios - 使用 AVAudioSession 设置麦克风增益时出现不稳定行为

标签 ios iphone ipad audio avaudiosession

我试图在 AVAudioSession 中使用“setInputGain”设置麦克风增益来处理非常微弱的声音,但我只取得了部分成功。我正在检查是否“isInputGainSettable”,然后尝试使用 slider 更改增益。我通过读回值和检查实际录制的声音来检查增益是否实际发生变化。结果如下:

enter image description here

我正在使用的代码

-(void)viewDidLoad
{
    self.audioSession = [AVAudioSession sharedInstance];
    if(self.audioSession.isInputGainSettable){
        [self.audioSession setActive:YES error:nil];
    }
}

-(IBAction)setGain:(id)sender 
{
  float gain = self.gainSlider.value;
  NSError* error;
  BOOL gainset = [self.audioSession setInputGain:gain error:&error];
  if (!gainset) NSLog(@"failed %@", error);

  NSLog(@"audiosession gain: %.2f ",self.audioSession.inputGain);
}

我没有收到任何错误消息。我一直在搜索 SO 和其他地方,人们都报告了问题,但他们也能够在 iPad 和旧款 iPhone 上设置增益。我见过报道的唯一“技巧”是在设置增益之前“等待一段时间”,我尝试过但没有成功。

所以问题是我是否错过了一些东西,以及我是否应该能够在 iPad 和旧款 iPhone 上设置增益?

最佳答案

我也累坏了,找了将近三个小时。

唯一对我有用的是调用 viewDidAppear 中的 setGain 方法。

关于ios - 使用 AVAudioSession 设置麦克风增益时出现不稳定行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23158868/

相关文章:

ios - 在 UIAlertView 覆盖上方添加按钮

iphone - 如何在 iOS 中重用代码(IBAction)?

ios - UIAccessibilityVoiceOverStatusDidChangeNotification 方法被多次调用

ios - iPad:如何模拟 99% 的完整内存?

iOS 设备和 2D 空间

ios - App Store Connect 沙盒服务器到服务器通知未发送预期字段

iOS CommonJS 模块返回 "undefined is not a constructor"错误

ios - UISwitch 关闭/打开 - 图像不会出现

iphone - iOS分发证书过期会怎样?

iphone - 如何制作自定义通知,以便每当事件发生时它都会在 iOS 中处理