导入AV框架
#import <AVFoundation/AVFoundation.h>
定义全局变量
/** 录音的对象 */
@property (nonatomic, strong) AVAudioRecorder *recoder;
懒加载
- (AVAudioRecorder *)recoder
{
if (_recoder == nil) {
// 1.创建存放录音文件的地址
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [path stringByAppendingPathComponent:@"321.caf"];
NSURL *url = [NSURL URLWithString:filePath];
// 2.创建录音对象
self.recoder = [[AVAudioRecorder alloc] initWithURL:url settings:nil error:nil];
// 3.准备录音,该方法会自动创建文件
[self.recoder prepareToRecord];
}
return _recoder;
}
开始录音
[self.recoder record];
结束录音
[self.recoder stop];
中断录音
[self.recoder pause];
其他方法
// 到了将来某个指定时间会自动录音
- (BOOL)recordAtTime:(NSTimeInterval)time
// 指定录音时长,时间到了会自动保存这段录音
- (BOOL)recordForDuration:(NSTimeInterval) duration;
// 以上两个方法的结合
- (BOOL)recordAtTime:(NSTimeInterval)time forDuration:(NSTimeInterval) duration
// 删除录音,调用此方法前必须停止录音,如果失败会返回NO
- (BOOL)deleteRecording;
关于分贝
调用这个方法前,必须先调用- (void)updateMeters;
具体的使用参考这个帖子
还有这个帖子:iOS噪音计原理、分贝计- 简书
- (float)peakPowerForChannel:(NSUInteger)channelNumber;
- (float)averagePowerForChannel:(NSUInteger)channelNumber;
AVAudioRecorderDelegate
关于代理的功能,无非就是结束后是否录音成功(如果失败可能是编码问题),以及编码失败的监听,中断的处理