我是靠谱客的博主 清秀苗条,最近开发中收集的这篇文章主要介绍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 需要响应的更改,这个键的可选枚举值在文档中可以找到。

    

转载于:https://www.cnblogs.com/walkingZero/p/3920507.html

最后

以上就是清秀苗条为你收集整理的iOS 使用AVAudioRecorder实现音频的录制的全部内容,希望文章能够帮你解决iOS 使用AVAudioRecorder实现音频的录制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部