如何更改AVAudioSession的输入增益? Xcode中

时间:2012-12-10 10:37:03

标签: xcode audio audio-recording avaudiosession

在使用AVFoundations框架中的AVAudioSession和AVAudioRecorder进行录制时,我在尝试调整输入增益时遇到了一些问题。我发现方法setInputGain接受一个float [0.0,1.0],到目前为止,它看起来像这样:

在我的viewDidLoad中:

    //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 个答案:

答案 0 :(得分:1)

我测试过的这些设备都没有允许设置输入增益。我还没有找到苹果设备的官方列表......以下是我试过的设备: iphone 4s iPhone 6s ipad pro

答案 1 :(得分:0)

从官方文件中,我看到以下几行,

讨论

在调用此方法之前,应检查inputGainSettable属性中的值,以确保输入增益级别可设置为当前输入。

设备是否有可能不支持更改它?