需求
對(duì)于整個(gè)iOS體系中音視頻眾多框架,我們不應(yīng)該盲目選擇,針對(duì)音視頻的采集錄制,需要根據(jù)自己的實(shí)際需求選擇最適合項(xiàng)目的API,以致于最高效的完成項(xiàng)目任務(wù).
以下是一些主要中低層框架的選擇推薦與原理講述,代碼實(shí)戰(zhàn),可以通過以下鏈接了解你需要的,也可以從文中鏈接找到對(duì)應(yīng)文章,去github下載相應(yīng)的Demo幫助你快速開發(fā).
iOS中音頻架構(gòu)圖
1.上層API
對(duì)于僅僅想直接播放個(gè)音頻或視頻的需求,沒有必要使用底層的API,這些API可以簡(jiǎn)單的直接調(diào)用一些類似start,stop,設(shè)置一些資源文件路徑就可以做錄制與播放.
- 視頻播放:AVPlayer
- 視頻錄制:UIImagePickerController
- 音頻播放:AVAudioRecorder
- 音頻錄制:AVAudioPlayer
以上API如需了解使用自行百度,簡(jiǎn)單易用.
2.中層API
如果想采集到視頻幀,音頻幀加以利用,需要使用一些中層的API,對(duì)于采集而言,視頻最底層即AVCaptureSession,我們可以通過回調(diào)函數(shù)拿到指定格式的音頻視頻.錄制基本也同理.但對(duì)音頻而言,如果不對(duì)音頻有太多具體設(shè)置,僅僅做同步,可以直接使用AVCaputureSession中的音頻采集.
3.底層,功能最多的API
音頻采集方面還可以使用更底層,更好用的Audio Queue, Audio Unit.
Audio Queue與Audio Unit的選擇
- Audio Queue: 以隊(duì)列的形式高效采集音頻數(shù)據(jù),可以直接設(shè)置采集PCM,AAC等壓縮,未壓縮類型格式音頻數(shù)據(jù).
- Audio Unit: 比起Audio Queue, 提供更加專業(yè)音頻處理,支持混合,均衡,格式轉(zhuǎn)換和實(shí)時(shí)輸入/輸出,用于錄制,播放,離線渲染和實(shí)時(shí)對(duì)話,例如VoIP(互聯(lián)網(wǎng)協(xié)議語音).可以從iOS應(yīng)用程序動(dòng)態(tài)加載和使用它.