麦克风音量检测 及录音DEMO

本文介绍如何在iOS应用中实现录音功能,并通过AVAudioRecorder进行实时音量检测,包括设置录音参数、更新音量显示及调整动画图标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

麦克风音量检测

- (void)audio

{

    //录音设置

    NSMutableDictionary *recordSetting = [[[NSMutableDictionary alloc]init] autorelease];

    //设置录音格式  AVFormatIDKey==kAudioFormatLinearPCM

    [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];

    //设置录音采样率(Hz) 如:AVSampleRateKey==8000/44100/96000(影响音频的质量)

    [recordSetting setValue:[NSNumber numberWithFloat:44100] forKey:AVSampleRateKey];

    //录音通道数  1 2

    [recordSetting setValue:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];

    //线性采样位数  8162432

    [recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];

    //录音的质量

    [recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVEncoderAudioQualityKey];

    

    NSString *strUrl = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/lll.aac", strUrl]];

    urlPlay = url;

    

    NSError *error;

    //初始化

    recorder = [[AVAudioRecorder alloc]initWithURL:url settings:recordSetting error:&error];

    //开启音量检测

    recorder.meteringEnabled = YES;

    recorder.delegate = self;

}


- (void)detectionVoice

{

    [recorder updateMeters];//刷新音量数据

    //获取音量的平均值  [recorder averagePowerForChannel:0];

    //音量的最大值  [recorder peakPowerForChannel:0];

    

    double lowPassResults = pow(10, (0.05 * [recorder peakPowerForChannel:0]));

    NSLog(@"%lf",lowPassResults);

    //最大50  0

    //图片 -》大

    if (0<lowPassResults<=0.06) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_01.png"]];

    }else if (0.06<lowPassResults<=0.13) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_02.png"]];

    }else if (0.13<lowPassResults<=0.20) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_03.png"]];

    }else if (0.20<lowPassResults<=0.27) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_04.png"]];

    }else if (0.27<lowPassResults<=0.34) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_05.png"]];

    }else if (0.34<lowPassResults<=0.41) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_06.png"]];

    }else if (0.41<lowPassResults<=0.48) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_07.png"]];

    }else if (0.48<lowPassResults<=0.55) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_08.png"]];

    }else if (0.55<lowPassResults<=0.62) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_09.png"]];

    }else if (0.62<lowPassResults<=0.69) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_10.png"]];

    }else if (0.69<lowPassResults<=0.76) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_11.png"]];

    }else if (0.76<lowPassResults<=0.83) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_12.png"]];

    }else if (0.83<lowPassResults<=0.9) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_13.png"]];

    }else {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_14.png"]];

    }

}


- (void) updateImage

{

    [self.imageView setImage:[UIImage imageNamed:@"record_animate_01.png"]];

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值