欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS开发简记(4):录音AVAudioRecorder

程序员文章站 2022-10-16 14:24:51
录音,声音的采集,一般有两种实现办法,一是使用AVAudioRecorder,一是使用AudioUnit。如果只是简单的录音,使用AVAudioRecorder就可以了,如果想更灵活地处理刚录到的声音数据,那应该使用AudioUnit ......

录音,声音的采集,一般有两种实现办法,一是使用avaudiorecorder,一是使用audiounit。如果只是简单的录音,使用avaudiorecorder就可以了,如果想更灵活地处理刚录到的声音数据,那应该使用audiounit。

小程这里记录avaudiorecorder的使用。

(1)初始化

avaudiorecorder录音时,直接保存成文件,而写文件就是音频编码的过程,所以,在启动录音前,就应该设置后编码的参数(包括编码格式、采样率、位深、通道数等)。

可以这样设置:
iOS开发简记(4):录音AVAudioRecorder

这里编码成aac格式。对于多媒体的知识,读者可以关注“广州小程”微信公众号,并在“多媒体”菜单项内查阅文章。

(2)启动录音

代码如下:
iOS开发简记(4):录音AVAudioRecorder

调用上很简单,alloc一个avaudiorecorder,指定录音保存路径跟录音设置,然后调用record函数就启动录音了。

(3)录音回调

启动录音后,应该响应avaudiorecorder的回调函数:

- (void)audiorecorderdidfinishrecording:(avaudiorecorder *)recorder successfully:(bool)flag

avaudiorecorder在录音结束时会调用这个函数,实现这个函数的类需要继承协议avaudiorecorderdelegate。

(4)录音能量变化

一般在录音时,需要在界面上显示能量(分贝)的变化,而avaudiorecorder提供了获取能量的接口。

可以这样取能量变化:
iOS开发简记(4):录音AVAudioRecorder

在取能量之前,应该先设置avaudiorecorder的meteringenabled属性为yes(比如在创建avaudiorecorder时设置):

newrecorder.meteringenabled = yes;

在拿到能量的值后,可以根据这个值来划分等级,从而在界面上显示不同的图片,比如:
iOS开发简记(4):录音AVAudioRecorder

能量的等级显示,这里给出其效果的一个截图:
iOS开发简记(4):录音AVAudioRecorder

感谢各位的关注,后面我会把ios客户端源码、api源码呈献给大家,完整的示例大家可以暂时到appstore下载安装“知音”。