2

AVFoundations フレームワークの AVAudioSession および AVAudioRecorder を使用して録音するときに、入力ゲインを調整しようとして問題が発生しました。float [0.0, 1.0] を受け入れるメソッド setInputGain を見つけました。これまでのところ、次のようになっています。

私のビューでは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 に設定すると入力が大きくなります。kAudioSessionProperty_InputGainScalar という AudioSession クラスで見つけたプロパティがありますが、それに値を書き込むことができないようです。少し助けが必要です、お願いします。

これは記録機能で、別のチュートリアルに従います。

    //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];
4

2 に答える 2

0

公式文書から、私は次の行を見ます、

討論

このメソッドを呼び出す前に、inputGainSettableプロパティの値をチェックして、入力ゲインレベルが現在の入力に対して設定可能であることを確認する必要があります。

それで、デバイスがそれを変更することをサポートしていない可能性はありますか?

于 2013-01-18T05:33:03.027 に答える