ios, получать обновления микрофона с плавающим уровнем, когда микрофон записывает звук

вот мой код для записи сейчас, как получить уровень звука, поступающего в микрофон, по образцу UIlable float number

я думаю, что буду использовать эту функцию, но как я могу использовать это в файлах rec.h и rec.m

(void)updateMeters

AVAudioSession * audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];
NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc] init];
[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
recordedTmpName = [[NSString alloc] initWithFormat:@"%.0f.%@", [NSDate timeIntervalSinceReferenceDate] * 1000.0, @"aac"];
temporaryRecFile= [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:recordedTmpName]];
recorder = [[ AVAudioRecorder alloc] initWithURL:temporaryRecFile settings:recordSetting error:nil];
[recorder setDelegate:self];
[recorder prepareToRecord];
[recorder record];

person user1466308    schedule 17.02.2013    source источник


Ответы (1)


Во время записи вы должны периодически вызывать updateMeters и получать среднюю мощность с помощью - (float)averagePowerForChannel:(NSUInteger)channelNumber

[recorder setDelegate:self];
[recorder prepareToRecord];
recorder.meteringEnabled = YES;
[recorder record];
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(handleTimer) userInfo:nil repeats:YES];




- (void) handleTimer
{
    [recorder updateMeters];
    label.text = [NSString stringWithFormat:@"lf",[recorder averagePowerForChannel:0]];
}

Для получения дополнительной информации посетите страницу Справочник по классу AVAudioRecorder

person user9527    schedule 20.02.2013