# iOS录音

导入AV框架

#import 

定义全局变量

/** 录音的对象 */
@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

关于代理的功能,无非就是结束后是否录音成功(如果失败可能是编码问题),以及编码失败的监听,中断的处理

你可能感兴趣的:(# iOS录音)