Неустойчивое поведение при настройке усиления микрофона с помощью AVAudioSession

Я пытаюсь установить усиление микрофона с помощью «setInputGain» в AVAudioSession для обработки очень слабых звуков, но мне это удается лишь частично. Я проверяю, является ли «isInputGainSettable», а затем пытаюсь изменить усиление с помощью ползунка. Я проверяю, действительно ли изменяется усиление, как путем считывания значения, так и проверки фактического записанного звука. Результат выглядит следующим образом:

введите здесь описание изображения

Код, который я использую

-(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?


person Sten    schedule 18.04.2014    source источник


Ответы (1)


Я тоже был измотан и искал почти три часа.

Единственное, что у меня сработало, это вызвать метод setGain в viewDidAppear.

person Ashish Shukla    schedule 11.04.2019
comment
Я пытался вызвать это после viewDidAppear, и это все еще не работает для меня. - person Kyle Redfearn; 26.02.2020