Получение AveragePower и PeakPower для канала в AVAudioRecorder - PullRequest
2 голосов
/ 21 апреля 2010

Меня раздражает этот кусок кода. Я пытаюсь получить средниеPowerForChannel и peakPowerForChannel при записи аудио, но каждый раз, когда я получаю его как 0.0

Ниже приведен мой код для записи звука:

 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]);

}

В чем ошибка в коде ???

Ответы [ 2 ]

5 голосов
/ 16 сентября 2010

Я думаю, что вы должны использовать свойство meteringEnabled после того, как подготовите ToRecord. И просто прокомментируйте ту часть, где вы указываете количество каналов как 1. Позвольте ему использовать значения по умолчанию. Надеюсь, это поможет.

2 голосов
/ 28 июня 2010

Я думаю, если вы установите AVNumberOfChannelsKey в 2 ... это будет работать.

...