Как изменить входное усиление для AVAudioSession? Xcode
У меня были некоторые проблемы, пытаясь отрегулировать входное усиление при записи с использованием AVAudioSession и AVAudioRecorder из инфраструктуры AVFoundations. Я нашел метод setInputGain, который принимает float [0.0, 1.0]. Пока что это выглядит примерно так:
На мой взгляд DidLoad:
//Initialise the AVAudioSession, and share between different functions
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];
[audioSession setInputGain:1.0 error:nil];
Однако метод setInputGain дает вам только дополнительное усиление поверх того, что в данный момент записывается, поэтому установка его на 0.0 не отключит его, а установка на 1.0 сделает громкость входного сигнала. Есть свойство, которое я нашел в классе AudioSession и называется kAudioSessionProperty_InputGainScalar, но не могу записать в него значение. Мне нужна небольшая помощь, пожалуйста.
Это функция записи, которая следует за другим учебником:
//Creating a temporary place to record
tempRecFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"sound.caf"]];
recorder = [[AVAudioRecorder alloc] initWithURL:tempRecFile
settings:nil
error:nil];
[recorder setDelegate:self];
//Setting the input gain for the recording, then proceed to record
//[audioSession setInputGain:inputGainSlider.value error:nil];
[recorder prepareToRecord];
[recorder record];
[self.inputGainSlider setEnabled:NO];
2 ответа
Ни одно из устройств, на которых я это тестировал, не позволяет устанавливать усиление на входе. Официального списка устройств от Apple пока не нашел... Вот устройства, которые я пробовал: iphone 4s iphone 6s ipad pro
Из официального документа я вижу следующие строки:
обсуждение
Перед вызовом этого метода необходимо проверить значение в свойстве inputGainSettable, чтобы убедиться, что уровень входного усиления можно установить для текущих входных данных.
есть ли вероятность, что устройство не поддерживает его изменение?