2010-04-21 12 views
0

Je suis ennuyé par ce morceau de code. Je suis en train d'obtenir le averagePowerForChannel et peakPowerForChannel lors de l'enregistrement audio, mais chaque fois que je reçois comme 0,0Obtenir AveragePower et PeakPower pour un canal dans AVAudioRecorder

Ci-dessous mon code pour l'enregistrement audio:

NSMutableDictionary *recordSetting =[[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithFloat: 22050.0], AVSampleRateKey, 
      [NSNumber numberWithInt: kAudioFormatLinearPCM], AVFormatIDKey, 
      [NSNumber numberWithInt: 1], AVNumberOfChannelsKey, 
      [NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey, 
      [NSNumber numberWithInt:32],AVLinearPCMBitDepthKey, 
      [NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey, 
      [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey, 
      nil]; 

recorder1 = [[AVAudioRecorder alloc] initWithURL:[NSURL fileURLWithPath:audioFilePath] settings:recordSetting error:&err]; 
recorder1.meteringEnabled = YES; 
recorder1.delegate=self; 
[recorder1 prepareToRecord]; 
[recorder1 record]; 
levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.3f target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES]; 

- (void)levelTimerCallback:(NSTimer *)timer { 

[recorder1 updateMeters]; 

NSLog(@"Peak Power : %f , %f", [recorder1 peakPowerForChannel:0], [recorder1 peakPowerForChannel:1]); 
NSLog(@"Average Power : %f , %f", [recorder1 averagePowerForChannel:0], [recorder1 averagePowerForChannel:1]); 

} 

Quelle est l'erreur dans le code? ??

Répondre

2

Je pense que si vous définissez AVNumberOfChannelsKey à 2 ... cela fonctionnera.

4

Je pense que vous devez utiliser la propriété meteringEnabled après avoir préparéToRecord. Et juste le commentaire la partie où vous spécifiez le nombre de canaux comme 1. Laissez-le utiliser les valeurs par défaut. J'espère que cela aide.

+0

MERCI! Je ne peux pas croire que j'ai raté ça. (Cela étant 'meteringEnabled' Le nombre de canaux n'est pas pertinent, je suis assez sûr.) – Kalle