十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
需求:最近公司需要做一個樓宇對講的功能:門口機(連接WIFI)撥號對室內(nèi)機(對應(yīng)的WIFI)的設(shè)備進行呼叫,室內(nèi)機收到呼叫之后將對收到的數(shù)據(jù)進行UDP廣播的轉(zhuǎn)發(fā),手機(連接對應(yīng)的WIFI)收到視頻流之后,實時的展示視頻數(shù)據(jù)(手機可以接聽,掛斷,手機接聽之后,室內(nèi)機不展示視頻,只是進行轉(zhuǎn)發(fā)。)
簡單點說就是手機客戶端需要做一個類似于直播平臺的軟件,可以實時的展示視頻,實時的播放接收到的聲音數(shù)據(jù),并且實時將手機麥克風(fēng)收到的聲音回傳給室內(nèi)機,室內(nèi)機負責(zé)轉(zhuǎn)發(fā)給門口機。
這篇文章介紹iOS怎么進行實時的錄音和播放收到的聲音數(shù)據(jù)
想要使用系統(tǒng)的框架實時播放聲音和錄音數(shù)據(jù),就得知道音頻隊列服務(wù),
在AudioToolbox框架中的音頻隊列服務(wù),它完全可以做到音頻播放和錄制,
一個音頻服務(wù)隊列有三個部分組成:
1.三個緩沖器Buffers:沒個緩沖器都是一個存儲音頻數(shù)據(jù)的臨時倉庫。
2.一個緩沖隊列Buffer Queue:一個包含音頻緩沖器的有序隊列。
3.一個回調(diào)CallBack:一個自定義的隊列回調(diào)函數(shù)。
具體怎么運轉(zhuǎn)的還是百度吧!
我的簡單理解:
對于播放:系統(tǒng)會自動從緩沖隊列中循環(huán)取出每個緩沖器中的數(shù)據(jù)進行播放,我們需要做的就是將接收到的數(shù)據(jù)循環(huán)的放到緩沖器中,剩下的就交給系統(tǒng)去實現(xiàn)了。
對于錄音: 系統(tǒng)會自動將錄的聲音放入隊列中的每個緩沖器中,我們需要做的就是從回調(diào)函數(shù)中將數(shù)據(jù)轉(zhuǎn)化我們自己的數(shù)據(jù)就OK了。
#pragma mark--實時播放
1. 導(dǎo)入系統(tǒng)框架AudioToolbox.framework AVFoundation.framework
2. 獲取麥克風(fēng)權(quán)限,在工程的Info.plist文件中加入Privacy - Microphone Usage Description 這個key 描述:App想要訪問您的麥克風(fēng)
3. 創(chuàng)建播放聲音的類 EYAudio
EYAudio.h
#import@interface EYAudio : NSObject // 播放的數(shù)據(jù)流數(shù)據(jù) - (void)playWithData:(NSData *)data; // 聲音播放出現(xiàn)問題的時候可以重置一下 - (void)resetPlay; // 停止播放 - (void)stop; @end
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。