1. 使用EZAudio的原因
最近在写一个关于音频开发的项目,因为项目需求的变动,导致我对iOS录音框架进行了一一尝试。
需求1:将上传音频给服务器,果断选择AVAudioRecord,最高层的。然后上架一段时间后,产品需求更新,你这个只能在录完之后才能上传吗?是的,目前的框架只有在结束完之后才能获取相应的录音数据。
需求2:现在新需求,希望能边录边传,则需要时时获取音频数据,每隔5分钟把录取的音频数据上传至服务器,防止用户手机没电等其他原因导致数据丢失。接下来选择了Audioqueue,但在bufferSize,经常不精准。
需求3:bufferSize要精准,最后选择了AudioUnit(准到你怀疑人生),至于为何这么准,跟ios底层框架有关,网上有人对此作出了解释,在此不在重述。而EZAudio第三方,其底层也恰恰是基于AudioUnit。虽然该框架已经不在维护,但是他是开源的,也可以自己进行维护的,所以如果此时你选择使用它, 也是勿须太担心的。
2.EZAudio 官方Demo中没有指出来的一些用法:
使用EZAudio如何暂停录音,继续录音,
1.你可以简单理解,这个框架数据的入口为麦克风。所以暂停就是关闭麦克风,继续就是打开麦克风。之前在谷歌上看到有老外用EZAudio问了半年以上,关于如何继续录音这个问题。居然想到暂停时,结束这段音频的录音,继续时重新新建一个音频文件。在完成录音时,把这些音频频接起来。我想,万一用户中间要是多暂停几次,这性能。。。本来两句代码就能解决的事。
2.时时获取音频数据
在这个代理方法里面可以直接获取录音数据,注意这个方法是在子线程调用(框架自动设为在子线程了),所以如果你有UI的更新,请把UI更新加入到主线程。
- (void) microphone:(EZMicrophone *)microphone hasBufferList:(AudioBufferList *)bufferList withBufferSize:(UInt32)bufferSize withNumberOfChannels:(UInt32)numberOfChannels{...}
3.后台录音有电话
当App使用EZAudio时,如果你的App退到后台录音,此时电话来临,你的App会闪退,所以此处你需要进行特别的处理。
以上三点就是我在使用EZAudio时,遇到的问题,写出来与大家分享一下,毕竟我翻墙谷歌,都没有解决,最后都是自己的思考结晶,如果帮到你了请给我打赏。谢谢!!!