您現在的位置是:首頁 > 武術
十年開發者述說,全民K歌iOS端AudioQueue實現耳返功能
- 由 pingwen20 發表于 武術
- 2022-01-08
怎麼在KTV實現耳返
前言
最近一直在做iOS音訊相關技術的專案,期間在官方及網上的資料文件也學習了很多,當然,iOS平臺中音訊相關技術還是有很多方面的,然後以AudioUnit對耳返功能實現為例子來總結一下自己最近的收穫,同時分享給大家。
技術點使用場景:
唱吧、全民K歌類似音樂專案中的,原唱和伴唱切換功能。
這個當初實現的時候,差點搞殘自己了。弄出來了,也拿來給大家做一個分享。我們團隊面試經常拿這個問開發者。大家有興趣可以學一下。
如果有更好的實現策略和我討論或者想拿原始碼和思維導圖資料的, 請聯絡我時,備註一下
AudioUnit耳返功能實現
AudioUnit耳返功能實現思路
這邊使用AudioUnit錄音,AudioQueue播放
建立AudioUnit物件,並初始化設定引數等
建立AudioQueue物件,初始化並設定引數
在AudioUnit回撥方法中獲取到採集到的資料,並將獲取到的資料餵給AudioQueue的容器中,並給它播放
AudioUnit簡介
AudioUnit這個名字取得還是比較形象的,它的主體就是一系列的unit,不同unit能夠實現不同的功能,將一個或多個unit新增到AUGraph(Audio Processing Graph)中,並建立unit之間的連線,音訊資料順次透過各個節點即可完成我們最終需求。
程式碼開始
1。使用AVAudioSession獲取音訊錄製播放許可權,並激活
2。建立AudioUnit
3。設定AudioUint
4。初始化/Start
5。建立AudioQueue例項
6。初始化音訊緩衝區,這3個音訊緩衝區地址不會改變,往裡面填資料的時候,只是裡面的資料變化而已(官方文件表明地址不可改變)
7。AudioUnit回撥中處理資料
使用該函式來講資料填充到我們建立的bufferList中
便於後續處理
8。AudioQueue的回撥
專案程式碼獲取
具體實現步驟,如下
喜歡的話點贊評論哦