AVAudioRecorder インスタンスを使用してサウンドを録音しようとしていますが、音量を取得しようとして [recorder peakPowerForChannel:0] を呼び出すと、戻り値が常に 0 になることを除いて、録音の進行状況はすべて正常に動作します。これはかなり奇妙です..
録音した音声ファイルを確認しましたが、まったく問題ありません。次に、AVAudioPlayer を使用して再生し、再生中に [player peakPowerForChannel:0] を呼び出します。戻り値は正しく、意味があるようです。
どうすれば正しい値を取得できますか? recoder.meteringEnabled = YES に設定し、[recorder peakPowerForChannel:0] を呼び出すたびに [recorder updateMeters] を呼び出しました。リコーダーの頭文字は以下の通りです。
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];
//General Audio Format Settings
[recordSetting setValue:[NSNumber numberWithInt: 'ima4'] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
//Linear PCM Format Settings
[recordSetting setValue:[NSNumber numberWithInt: 32] forKey:AVLinearPCMBitDepthKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
//Encoder Settings
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityMedium] forKey:AVEncoderAudioQualityKey];
[recordSetting setValue:[NSNumber numberWithInt:96] forKey:AVEncoderBitRateKey];
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVEncoderBitDepthHintKey];
//Sample Rate Conversion Settings
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVSampleRateConverterAudioQualityKey];
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:nil];
recorder.meteringEnabled = YES;