錄制原理:
1,RecorderManager中通過AudioSession進(jìn)行PCM音頻錄制,錄制格式為WAV格式,并開啟levelMeterState,可以實時顯示錄制音量
2,獲取PCM音頻錄制buffer,每20ms一個buffer,開啟三個buffer來循環(huán)input到Encapsulator中進(jìn)行speed音頻編碼
3,Encapsulator中對于每一個輸入的buffer放到oprationQueue中,按順序進(jìn)行encode,對于encode完的speex buffer,按頁為單位,通過NSFileHandle尋址到當(dāng)前已經(jīng)寫入的文件末尾,寫入當(dāng)前頁
4,錄制過程中生成的PCM音頻buffer只存在于內(nèi)存中,占用少量內(nèi)存,每轉(zhuǎn)換一個buffer的speex格式則將其存儲到本地文件中
5,在8khz下每秒鐘占用1kB的本地存儲空間(8khz對于語音說話足夠)
播放原理:
1,PlayerManager中將本地存儲的speex文件整個讀入內(nèi)存中
2,Decapsulator中將speex一段段的讀入buffer,通過SpeexCodec進(jìn)行decode
3,decode的PCM音頻buffer輸入到RawAudioDataPlayer中
4,RawAudioDataPlayer 將PCM的buffer音頻通過AudioQueueEnqueueBuffer進(jìn)行播放輸出
引用:http://blog.csdn.net/a_asinceo/article/details/46487125 iOS安卓互通方案