iOS 使用AVAudioRecorder实现音频的录制

      和AVAudioPlayer类似,AVAudioRecorder也是AVFoundtion框架的,而且在结构、属性上也挺相似。

    1、构建:

  使用方法:

- (id)initWithURL:(NSURL *)url settings:(NSDictionary *)settings error:(NSError **)outError
   参数url是录制的音频文件的路径,注意不是文件存放的文件夹的路径,是包含文件一起的完整路径,如:   file:///var/mobile/Applications/2EB555A9-C09B-4269-B0B3-F479A39F6784/Documents/recordedFiles/-2118413987.wav。

   settings是一个字典,包含了对于AVAudioRecorder的对象的许多配置信息,关于所包含的键值,文档里有链接。一般的配置如下:

NSDictionary *setting = [[NSDictionary alloc] initWithObjectsAndKeys:
                              [NSNumber numberWithFloat: 44100.0],AVSampleRateKey,
                              [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey,
                              [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,
                              [NSNumber numberWithInt: 2], AVNumberOfChannelsKey,
                              [NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,
                              [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,nil];

  2、录制:

   录制就是调用:

[_audioRecorder prepareToRecord] 
[_audioRecorder record]

prepareToRecord 这个方法会根据上面构建时提供的路径构建一个音频文件,如果已经有同名文件,会替换掉之前的。然后这个方法会有一个bool的返回值,如果文件路径不可使用,会返回NO;如果音频文件格式是不支持的格式,也会返回NO。所以有必要在这做个判断。

   但是在prepareToRecord之前需要调整一个属性,关于应用音频方面的一些性质的调节:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
    [audioSession setActive:YES error:nil];
需要把 AVAudioSession 的category设为AVAudioSessionPlayAndRecord或AVAudioSessionRecord;并且设置active为YES来激活。在播放的时候,需要把category调回AVAudioSessionPlayback,否则会声音特别小。

 录制过程中可以使用pause 方法来暂停,使用stop方法来停止。停止之后,一段录音就有了。

  对于录音文件的格式也有一定要求,没有全部测试,.caf  .wav .aac 是可以的,.mp3是不行的。而且选择特定格式时,构建时用到的settings中的AVFormatIDKey 需要响应的更改,这个键的可选枚举值在文档中可以找到。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值