Как изменить входное усиление для AVAudioSession? xcode

У меня возникли проблемы с настройкой входного усиления при записи с использованием AVAudioSession и AVAudioRecorder из фреймворка AVFoundations. Я нашел метод setInputGain, который принимает число с плавающей запятой [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];

person Mikail Lo    schedule 10.12.2012    source источник


Ответы (2)


ни одно из устройств, на которых я тестировал это, не позволяет настраивать входное усиление. Официального списка устройств от Apple я пока не нашел... Вот устройства, которые пробовал: iphone 4s iphone 6s ipad pro

person Manuel Alejandro Arredondo    schedule 18.09.2017

Из официального документа я вижу следующие строки:

Обсуждение

Перед вызовом этого метода следует проверить значение свойства inputGainSettable, чтобы убедиться, что уровень входного усиления можно установить для текущих входов.

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

person LetBulletFlies    schedule 18.01.2013