0

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

4 に答える 4

3

メッセージまたはメッセージをmeteringEnabled送信するまで、プロパティの設定を待つ必要があります。 recordprepareToRecord

特定のケースでは、次を追加します。

[recorder prepareToRecord];

recorder.meteringEnabled = YES;

そしてそれはうまくいくはずです。

于 2009-08-12T16:46:51.640 に答える
0

0を返すことになっており、0dBと最大電力を示します。Appleのドキュメントから:

戻り値
録音されているサウンドの現在のピークパワー(デシベル単位)。0 dBの戻り値は、フルスケールまたは最大電力を示します。-160 dBの戻り値は、最小電力(つまり、ほぼ無音)を示します。

http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioRecorder_ClassReference/Reference/Reference.html

代わりに、averagePowerForChannel:が必要です。

于 2011-06-05T22:51:52.687 に答える
0

チャンネル 0 ではなく、チャンネル 1 または 2 のピークをテストしてみてください

于 2009-10-05T12:48:14.823 に答える