实现录音功能和播放音乐功能非常类似,都需要用到 "AVFoundation框架
录音三部曲
1. "创建录音器
1.1创建录音器
#warning 和音乐播放器一样,录音器必须定义一个strong类型的强引用 @property (nonatomic,strong) AVAudioRecorder *recorder;
代码如下:
AVAudioRecorder *recorder = [[AVAudioRecorder alloc] initWithURL:url settings:setting error:nil];
这里传入的url和音乐播放器的不同,音乐播放器的是本地资源文件的url,而这里是"存放"录音文件的url(沙盒)
关于setting:这里需要传入一个字典,具体的参数解释如下(比较专业,工作中不需要程序员去选择,会有专业的音频同事直接告诉你传什么)
// // 音频格式
// setting[AVFormatIDKey] = @(kAudioFormatAppleIMA4);
// // 音频采样率-->采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准
// setting[AVSampleRateKey] = @(8000.0);
// // 音频通道数-->iPhone只有一个 电脑可能多个
// setting[AVNumberOfChannelsKey] = @(1);
// // 线性音频的位深度(8/16/24/32 bit) 数值越高 失真越小
// setting[AVLinearPCMBitDepthKey] = @(8);
================================================================================================
2. "准备录音
//缓冲录音
[self.recorder prepareToRecord];
虽然此方法在录音前会自动调用,但建议写上
================================================================================================
3. "播放 暂停 或 停止
//播放
[self.recorder record];
//暂停
[self.recorder pause];
//停止
[self.recorder stop];
注意:暂停录音后录音文件不会存放在沙盒中,只有在停止录音时才会存放在沙盒中!
================================================================================================
>>测量分贝功能
1.测量分贝首先需要开启测量功能
self.recorder.meteringEnabled = YES;
2.在用定时器调用方法中,需要先更新最新的数据
[self.recorder updateMeters];
3.得到分贝的均值
CGFloat power = [self.recorder averagePowerForChannel:0];