語(yǔ)音直播,簡(jiǎn)單來(lái)說(shuō)就是實(shí)時(shí)聲音播放的意思。語(yǔ)音直播和視頻直播的區(qū)別在于,它沒(méi)有主播的畫(huà)面,只有主播的聲音是實(shí)時(shí)播出的載體,但是每個(gè)人都可以用文字互動(dòng)。

就語(yǔ)音直播而言,它使用的流量相對(duì)較少,除了視頻畫(huà)面的刺激之外,我們還可以用耳朵集中精力聽(tīng)到更多的材料。
隨著互聯(lián)網(wǎng)用戶(hù)消費(fèi)內(nèi)容和互動(dòng)模式的升級(jí),支持這些內(nèi)容和互動(dòng)模式的基礎(chǔ)設(shè)施也在悄然發(fā)生變化。手機(jī)設(shè)備的視頻拍攝能力和網(wǎng)絡(luò)的升級(jí)引起了人們對(duì)視頻直播領(lǐng)域的關(guān)注,吸引了許多互聯(lián)網(wǎng)企業(yè)家或成熟企業(yè)進(jìn)入這一領(lǐng)域。那么開(kāi)發(fā)一套看似簡(jiǎn)單的語(yǔ)音直播APP源碼需要哪些技術(shù)支持呢?
1、音視頻采集
收集是播放過(guò)程中的第一個(gè)環(huán)節(jié)。iOS系統(tǒng)相對(duì)簡(jiǎn)單,因?yàn)檐浻布N類(lèi)不多,硬件適應(yīng)性好。安卓不一樣。市場(chǎng)上有很多硬件模型,很難用一個(gè)倉(cāng)庫(kù)來(lái)適應(yīng)所有的硬件。PC端的收集也與各種攝像頭驅(qū)動(dòng)有關(guān)。建議使用市場(chǎng)上最好的PC端開(kāi)源免費(fèi)軟件OBS。
2、音視頻處理
「80%的主播沒(méi)有美顏根本看不到。」不僅僅是美顏,還有很多其他的視頻處理,比如模糊效果、水印等等。目前iOS端比較知名的是GPUImage,為端預(yù)處理提供了豐富的效果,也可以基于這個(gè)數(shù)據(jù)庫(kù)自己寫(xiě)算法來(lái)實(shí)現(xiàn)更豐富的端效果。Android還有GPUImage的移植,叫做android。-gpuimage。
3、音視頻編碼
編碼有兩個(gè)主要難點(diǎn):
處理硬件兼容性問(wèn)題。
在高fps、在低bitrate和音質(zhì)畫(huà)質(zhì)之間找到平衡。
iOS端硬件兼容性好,可直接使用硬件編輯。但是Android的硬編輯支持要困難得多,需要支持各種硬件型號(hào),建議使用軟編輯。
4、推動(dòng)和傳輸:
傳輸涉及許多端:
由主播端到服務(wù)端;
從收流服務(wù)端到邊緣節(jié)點(diǎn);
還有從邊緣節(jié)點(diǎn)到觀眾端。
理論上,推送端和分發(fā)端需要支持的并發(fā)用戶(hù)數(shù)量應(yīng)該是1億,但畢竟產(chǎn)生內(nèi)容的推送端是少數(shù),與消費(fèi)內(nèi)容端的播放端不是一個(gè)數(shù)量級(jí),但對(duì)推送端的穩(wěn)定性和速度要求遠(yuǎn)高于播放端,這涉及到所有播放端是否能看到直播,直播端的質(zhì)量如何。
5、實(shí)時(shí)音視頻轉(zhuǎn)碼
為了讓主播推上來(lái)的流量適應(yīng)各種平臺(tái)端的不同協(xié)議,需要在服務(wù)端做一些流量處理工作,比如轉(zhuǎn)碼成不同格式支持RTMP等不同協(xié)議。、HLS和FLV,為適應(yīng)各種網(wǎng)絡(luò)條件和不同分辨率的終端設(shè)備,一路轉(zhuǎn)多路流。
與此同時(shí),我們還提供了內(nèi)容識(shí)別如鑒黃等功能,以滿足一些運(yùn)營(yíng)需求,如一些監(jiān)管部門(mén)的要求。
6、解碼和渲染
解碼和渲染,即播放音視頻,目前iOS端的播放兼容性較好,在延遲可接受的情況下使用HLS協(xié)議是最佳選擇,我們還提供了可以播放RTMP和HLS的播放器SDK。Android的硬件解碼與編碼相同,也存在兼容性問(wèn)題,目前較好的開(kāi)源播放器是基于ffplay的ijkplayer,我們也基于此實(shí)現(xiàn)了更好的AndroidSDK。
語(yǔ)音直播APP源碼所遵循的直播過(guò)程與我們常見(jiàn)的直播系統(tǒng)過(guò)程基本相同。也就是說(shuō),通過(guò)攝像頭收集音頻和視頻流,編碼,然后推送音頻和視頻流,通過(guò)流媒體服務(wù)器(CDN)實(shí)現(xiàn)內(nèi)容分發(fā),用戶(hù)再次拉流,通過(guò)設(shè)備觀看音視頻流解碼。一對(duì)一語(yǔ)音直播系統(tǒng)的重點(diǎn)是主播播出前的設(shè)置,也就是如何以最好的方式實(shí)現(xiàn)語(yǔ)音直播。其實(shí)語(yǔ)音直播有很多模式可以開(kāi)發(fā),實(shí)現(xiàn)語(yǔ)音直播APP源碼機(jī)制的方式有很多。