WebRTC 的音視頻開(kāi)發(fā)過(guò)程是怎樣的?
共 803字,需瀏覽 2分鐘
·
2022-02-09 17:35
目前最簡(jiǎn)單的WebRTC音視頻應(yīng)用開(kāi)發(fā),應(yīng)該是基于瀏覽器內(nèi)核提供的JS API直接進(jìn)行Web應(yīng)用開(kāi)發(fā),相關(guān)的WebRTC JS API的Demo可以參考:WebRTC samples
這種開(kāi)發(fā)基本的音視頻應(yīng)用問(wèn)題不大,但也存在不少限制,如無(wú)法直接接入RTSP流的網(wǎng)絡(luò)攝像機(jī),無(wú)法本地進(jìn)行多路畫(huà)面的合成和推流等特殊定制功能。
基于開(kāi)源的WebRTC,則可以基于WebRTC C++ Native API進(jìn)行開(kāi)發(fā),這樣可以進(jìn)行很多定制功能的開(kāi)發(fā)(例如,啟用GPU硬件加速的視頻編解碼、多路畫(huà)面拼接合成后再使用WebRTC推流、使用RTSP流作為WebRTC推流的視頻源,通過(guò)WebRTC推流共享視頻文件,共享指定應(yīng)用窗口,本地視頻錄制,使用外部的音頻處理算法等),其實(shí)完全可以基于WebRTC開(kāi)發(fā)一款自己的音視頻引擎,以滿足產(chǎn)品的定制化功能需求。
當(dāng)然,真正的音視頻產(chǎn)品,除了客戶端,基本離不開(kāi)流媒體服務(wù)器,目前可以配合WebRTC客戶端的開(kāi)源WebRTC服務(wù)器也挺多的了,我比較推薦SRS 4.0,使用起來(lái)比較方便,支持WebRTC、RTMP協(xié)議推流,支持WebRTC、RTMP、HLS、HTTP FLV拉流,也支持推流到CDN和服務(wù)器錄制等,開(kāi)發(fā)可以參考:shanewfx:基于WebRTC Native API實(shí)現(xiàn)SRS4.0客戶端
但SRS 4.0是一個(gè)SFU類型的流媒體服務(wù)器,如果需要在服務(wù)器上進(jìn)行多路視頻流的合流、混音等功能,需要選擇MCU類型的流媒體服務(wù)器,目前推薦Intel開(kāi)源的OWT Server(基于licode開(kāi)發(fā),業(yè)務(wù)部分使用nodejs開(kāi)發(fā),媒體處理使用C++開(kāi)發(fā),封裝為node模塊供nodejs調(diào)用),其也有配套的WebRTC客戶端SDK可以使用。
但MCU對(duì)服務(wù)器的硬件配置要求還是比較高的,真正產(chǎn)品化應(yīng)該需要硬件加速支持,目前Intel提供了VCA板卡可以支持,但成本應(yīng)該比較高些。
