Как изменить входное усиление для 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, чтобы убедиться, что уровень входного усиления можно установить для текущих входных данных.

есть ли вероятность, что устройство не поддерживает его изменение?

Другие вопросы по тегам