1. 使用EZAudio的原因
最近在寫一個關于音頻開發(fā)的項目蹋宦,因為項目需求的變動披粟,導致我對iOS錄音框架進行了一一嘗試。
需求1:將上傳音頻給服務器冷冗,果斷選擇AVAudioRecord守屉,最高層的。然后上架一段時間后贾惦,產(chǎn)品需求更新胸梆,你這個只能在錄完之后才能上傳嗎敦捧?是的须板,目前的框架只有在結束完之后才能獲取相應的錄音數(shù)據(jù)碰镜。
需求2:現(xiàn)在新需求,希望能邊錄邊傳习瑰,則需要時時獲取音頻數(shù)據(jù)绪颖,每隔5分鐘把錄取的音頻數(shù)據(jù)上傳至服務器,防止用戶手機沒電等其他原因?qū)е聰?shù)據(jù)丟失甜奄。接下來選擇了Audioqueue柠横,但在bufferSize,經(jīng)常不精準课兄。
需求3:bufferSize要精準牍氛,最后選擇了AudioUnit(準到你懷疑人生),至于為何這么準烟阐,跟ios底層框架有關搬俊,網(wǎng)上有人對此作出了解釋,在此不在重述蜒茄。而EZAudio第三方唉擂,其底層也恰恰是基于AudioUnit。雖然該框架已經(jīng)不在維護檀葛,但是他是開源的玩祟,也可以自己進行維護的,所以如果此時你選擇使用它屿聋, 也是勿須太擔心的空扎。
2.EZAudio 官方Demo中沒有指出來的一些用法:
使用EZAudio如何暫停錄音,繼續(xù)錄音润讥,
1.你可以簡單理解勺卢,這個框架數(shù)據(jù)的入口為麥克風。所以暫停就是關閉麥克風象对,繼續(xù)就是打開麥克風黑忱。之前在谷歌上看到有老外用EZAudio問了半年以上,關于如何繼續(xù)錄音這個問題勒魔。居然想到暫停時甫煞,結束這段音頻的錄音,繼續(xù)時重新新建一個音頻文件冠绢。在完成錄音時抚吠,把這些音頻頻接起來。我想弟胀,萬一用戶中間要是多暫停幾次楷力,這性能喊式。。萧朝。本來兩句代碼就能解決的事岔留。
2.時時獲取音頻數(shù)據(jù)
在這個代理方法里面可以直接獲取錄音數(shù)據(jù),注意這個方法是在子線程調(diào)用(框架自動設為在子線程了)检柬,所以如果你有UI的更新献联,請把UI更新加入到主線程。
- (void) ? microphone:(EZMicrophone *)microphone hasBufferList:(AudioBufferList *)bufferList withBufferSize:(UInt32)bufferSize withNumberOfChannels:(UInt32)numberOfChannels{...}
3.后臺錄音有電話
當App使用EZAudio時何址,如果你的App退到后臺錄音里逆,此時電話來臨,你的App會閃退用爪,所以此處你需要進行特別的處理原押。
以上三點就是我在使用EZAudio時,遇到的問題偎血,寫出來與大家分享一下诸衔,畢竟我翻墻谷歌,都沒有解決烁巫,最后都是自己的思考結晶署隘,如果幫到你了請給我打賞。謝謝Q窍丁4挪汀!