除了上面说的,在AVFoundation框架中还要一个AVAudioRecorder类专门处理录音操作,它同样支持多种音频格式。与AVAudioPlayer类似,你完全可以将它看成是一个录音机控制类,下面是常用的属性和方法:

属性

说明

@property(readonly, getter=isRecording) BOOL recording;

是否正在录音,只读

@property(readonly) NSURL *url

录音文件地址,只读

@property(readonly) NSDictionary *settings

录音文件设置,只读

@property(readonly) NSTimeInterval currentTime

录音时长,只读,注意仅仅在录音状态可用

@property(readonly) NSTimeInterval deviceCurrentTime

输入设置的时间长度,只读,注意此属性一直可访问

@property(getter=isMeteringEnabled) BOOL meteringEnabled;

是否启用录音测量,如果启用录音测量可以获得录音分贝等数据信息

@property(nonatomic, copy) NSArray *channelAssignments

当前录音的通道

对象方法

说明

- (instancetype)initWithURL:(NSURL *)url settings:(NSDictionary *)settings error:(NSError **)outError

录音机对象初始化方法,注意其中的url必须是本地文件url,settings是录音格式、编码等设置

- (BOOL)prepareToRecord

准备录音,主要用于创建缓冲区,如果不手动调用,在调用record录音时也会自动调用

- (BOOL)record

开始录音

- (BOOL)recordAtTime:(NSTimeInterval)time

在指定的时间开始录音,一般用于录音暂停再恢复录音

- (BOOL)recordForDuration:(NSTimeInterval) duration

按指定的时长开始录音

- (BOOL)recordAtTime:(NSTimeInterval)time forDuration:(NSTimeInterval) duration

在指定的时间开始录音,并指定录音时长

- (void)pause;

暂停录音

- (void)stop;

停止录音

- (BOOL)deleteRecording;

删除录音,注意要删除录音此时录音机必须处于停止状态

- (void)updateMeters;

更新测量数据,注意只有meteringEnabled为YES此方法才可用

- (float)peakPowerForChannel:(NSUInteger)channelNumber;

指定通道的测量峰值,注意只有调用完updateMeters才有值

- (float)averagePowerForChannel:(NSUInteger)channelNumber

指定通道的测量平均值,注意只有调用完updateMeters才有值

代理方法

说明

- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag

完成录音

- (void)audioRecorderEncodeErrorDidOccur:(AVAudioRecorder *)recorder error:(NSError *)error

录音编码发生错误

AVAudioRecorder很多属性和方法跟AVAudioPlayer都是类似的,但是它的创建有所不同,在创建录音机时除了指定路径外还必须指定录音设置信息,因为录音机必须知道录音文件的格式、采样率、通道数、每个采样点的位数等信息,但是也并不是所有的信息都必须设置,通常只需要几个常用设置。关于录音设置详见帮助文档中的“AVFoundation Audio Settings Constants”。

下面就使用AVAudioRecorder创建一个录音机,实现了录音、暂停、停止、播放等功能,实现效果大致如下:

在这个示例中将实行一个完整的录音控制,包括录音、暂停、恢复、停止,同时还会实时展示用户录音的声音波动,当用户点击完停止按钮还会自动播放录音文件。程序的构建主要分为以下几步:

1  设置音频会话类型为AVAudioSessionCategoryPlayAndRecord,因为程序中牵扯到录音和播放操作。

2  创建录音机AVAudioRecorder,指定录音保存的路径并且设置录音属性,注意对于一般的录音文件要求的采样率、位数并不高,需要适当设置以保证录音文件的大小和效果。

3  设置录音机代理以便在录音完成后播放录音,打开录音测量保证能够实时获得录音时的声音强度。(注意声音强度范围-160到0,0代表最大输入)

4  创建音频播放器AVAudioPlayer,用于在录音完成之后播放录音。

5  创建一个定时器以便实时刷新录音测量值并更新录音强度到UIProgressView中显示。

iOS 录音相关知识相关推荐

  1. iOS开发经验相关知识

    一. iPhone Size 手机型号 屏幕尺寸 iPhone 4 4s 320 * 480 iPhone 5 5s 320 * 568 iPhone 6 6s 375 * 667 iphone 6 ...

  2. iOS硬编解码相关知识

    1.软编与硬编概念 1.1 软编码:使用CPU进行编码. 实现直接.简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点. 1.2 硬编码:不使用CPU进行编码 ...

  3. ios录音文件路径_iOS中录音功能

    应用场景 在即时通讯APP中,例如微信,QQ,等都有语音发送功能,一般都要先将录音录制下来才能发送录音. 音频相关知识介绍: 1. 文件格式(不同的文件格式,可保存不同的编码格式的文件) 1.1 WA ...

  4. iOS底层基础知识-文件目录结构

    一:iOS沙盒知识 出于安全考虑,iOS系统把每个应用以及数据都放到一个沙盒(sandbox)里面,应用只能访问自己沙盒目录里面的文件.网络资源等(也有例外,比如系统通讯录.照相机.照片等能在用户授权 ...

  5. Swift: iOS底层基础知识-文件目录结构

    一:iOS沙盒知识 出于安全考虑,iOS系统把每个应用以及数据都放到一个沙盒(sandbox)里面,应用只能访问自己沙盒目录里面的文件.网络资源等(也有例外,比如系统通讯录.照相机.照片等能在用户授权 ...

  6. iOS开发基础知识--碎片44

    iOS开发基础知识--碎片44  iOS开发基础知识--碎片44 1:App跳转至系统Settings 跳转在IOS8以上跟以下是有区别的,如果是IOS8以上可以如下设置: NSURL *url = ...

  7. 直播相关知识之二 采集、处理、编码和封装

    直播相关知识之二 采集.处理.编码和封装 总体流程图 一. 采集 采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节.视频的采集涉及两方面数据的采集:音频 ...

  8. iOS开发基础知识--碎片41

    iOS开发基础知识--碎片41 1:UIWebView加载本地的HTML NSString *path = [[NSBundle mainBundle] bundlePath]; NSURL *bas ...

  9. 狂补呼叫中心相关知识,将收集的资料贴于此

    狂补呼叫中心相关知识,将收集的资料贴于此: H.323的协议体系 根据1998年H.323第二版,H.323制定了无QoS(服务质量)保证的分组网络 PBN(packet Based Networks ...

最新文章

  1. 机器学习笔记:triplet loss
  2. MyBatis Plus——分页插件
  3. 复习Javascript专题(一):基本概念部分
  4. Windows驱动—VS2010+WDK配置驱动开发环境
  5. android 全局 窗口,学习笔记:WindowManager显示Android全局悬浮窗口
  6. 超效率dea matlab,MATLAB在超效率DEA模型中的应用
  7. SourceTree git 工作流
  8. Html + Java登录验证码实现代码
  9. Android Wi-Fi subsystem_ramdump简介(以QCOM为Base)
  10. node.js是干什么的
  11. Python 第二章 字典
  12. 查找——图文翔解SkipList(跳跃表)
  13. 他们都说springboot是懒人神器,你觉得呢?
  14. IMX6Q的硬编码(VPU)的工程代码移植
  15. 2011-09-06 [plus_format_fck.js代码]
  16. QTableView点击表格内空白行的信号
  17. 快速查询出中通快运物流信息,将信息导出EXCEL表格
  18. PGP 对于JSON的加解密
  19. mysql查询bom清单_Oracle EBS-SQL (BOM-12):BOM清单查询
  20. 算法 - 多目标优化的注意点及常用方法概述

热门文章

  1. python对银行工作有用吗_银行工作到底好不好
  2. python实现家庭游戏
  3. 通过PHAsset获取的图片上传后变大和图像被旋转90度问题完美解决方案
  4. isarray php,isArray函数怎么使用
  5. 如何DIY一台适合中小企业的免费上网行为管理设备?
  6. python 网络爬虫爬取落网 期刊内容 下载图片 音乐
  7. 区间K大数查询(求解方法总结)
  8. win10 win11 远程连接 凭据不工作 无法建立连接
  9. C#日志系统 Log4net使用总结
  10. ibm光盘linux,IBM推出純Linux大型主機LinuxONE