6
本文作者: 吳桐 | 2016-08-10 18:54 |
雷鋒網(wǎng)按:本文作者吳桐,云信音視頻實(shí)時(shí)通話項(xiàng)目與互動(dòng)直播項(xiàng)目的負(fù)責(zé)人,負(fù)責(zé)項(xiàng)目的架構(gòu)和實(shí)現(xiàn)。
移動(dòng)直播這把火從2015年一直燒到2016年,毫無疑問直播是當(dāng)前移動(dòng)互聯(lián)網(wǎng)最熱門的領(lǐng)域之一,在超大熱度的引導(dǎo)下直播領(lǐng)域也吸引了大量的商業(yè)資本。各大直播應(yīng)用萬花齊放,來到風(fēng)口。站在這個(gè)風(fēng)口上,直播應(yīng)用只有把握好風(fēng)向標(biāo),推出具備高用戶粘性的差異化功能,才能在這個(gè)不斷推陳出新的時(shí)代站穩(wěn)腳跟,獲得不可動(dòng)搖的地位。
(移動(dòng)直播火爆)
當(dāng)前國(guó)內(nèi)大多數(shù)的直播應(yīng)用,使用的是單主播模式,主播與觀眾僅僅使用文字、點(diǎn)贊、禮物等方式進(jìn)行互動(dòng)。在主播直播時(shí),觀眾如果能夠與其進(jìn)行實(shí)時(shí)的視頻互動(dòng),給觀眾連麥露臉的機(jī)會(huì),這將大大提高用戶的參與感與幸福感,增加用戶粘性。而且市面上能夠提供這種連麥互動(dòng)直播功能的應(yīng)用還非常少,這也將成為2016下半年各直播應(yīng)用的主要競(jìng)爭(zhēng)領(lǐng)域。
什么是連麥互動(dòng)直播? 簡(jiǎn)單來說就是當(dāng)主播直播期間,可以與其中某一個(gè)觀眾或者幾個(gè)粉絲進(jìn)行互動(dòng),并且其他觀眾能夠觀看到這個(gè)互動(dòng)過程。直播連麥功能的推出讓直播的傳播方式變成平等的互動(dòng)社交模式。主播和觀眾的身份也由此轉(zhuǎn)換為發(fā)起者和參與者,除了最基本的內(nèi)容傳輸,提升參與感才是直播連麥的本質(zhì)訴求。
為了更直觀的闡述互動(dòng)直播是什么,舉個(gè)簡(jiǎn)單的例子。傳統(tǒng)直播就像看“新聞聯(lián)播”,觀眾只能收看這個(gè)節(jié)目,偶爾能通過手機(jī)短信與節(jié)目組進(jìn)行互動(dòng)。當(dāng)然現(xiàn)在基于互聯(lián)網(wǎng)的直播已經(jīng)先進(jìn)得多,可以使用互聯(lián)網(wǎng)發(fā)送文字、點(diǎn)贊、送禮物,消息的實(shí)時(shí)性也大大提高,但本質(zhì)上與看“新聞聯(lián)播”的體驗(yàn)類似。
而互動(dòng)直播就像到達(dá)芒果臺(tái)快樂大本營(yíng)的錄制現(xiàn)場(chǎng),觀眾坐在錄制現(xiàn)場(chǎng)的觀眾席上,可以看節(jié)目,同時(shí)還有機(jī)會(huì)被邀請(qǐng)到臺(tái)上和主持人互動(dòng),當(dāng)然主持人可以邀請(qǐng)多名觀眾上臺(tái)進(jìn)行互動(dòng),而互動(dòng)的內(nèi)容其他觀眾也能看到。
傳統(tǒng)移動(dòng)直播
連麥互動(dòng)直播
連麥互動(dòng)直播相比傳統(tǒng)單向直播,給了觀眾更直接的參與感以及與主播音視頻實(shí)時(shí)互動(dòng)的滿足感,對(duì)提升直播應(yīng)用的活躍度和粘性都有明顯作用。
(連麥互動(dòng)直播功能流程圖)
a)主播正常開始直播,普通觀眾看到主播的單人直播畫面;
b)需要連麥的觀眾發(fā)起連麥請(qǐng)求,進(jìn)入連麥申請(qǐng)列表;
c)主播從連麥申請(qǐng)列表中選擇一名或多名觀眾進(jìn)行連麥操作,主播與連麥觀眾進(jìn)行實(shí)時(shí)音視頻互動(dòng),同時(shí)互動(dòng)直播系統(tǒng)生成“合成畫面”;
d)普通觀眾看到直播畫面為包含主播與連麥觀眾的“合成畫面”;
e)連麥結(jié)束,恢復(fù)主播單人直播模式。
接下來我們探討一下連麥互動(dòng)直播的具體實(shí)現(xiàn)方案,這部分將主要闡述互動(dòng)實(shí)時(shí)性高且具備真實(shí)可行性的兩種方案。下面會(huì)詳細(xì)分析各自的優(yōu)缺點(diǎn)。
為了實(shí)現(xiàn)互動(dòng)實(shí)時(shí)性高的連麥,首先需要有一套實(shí)現(xiàn)了類似微信、Skype及Facetime的多人音視頻實(shí)時(shí)通話系統(tǒng)。這套實(shí)時(shí)通話系統(tǒng)可以選擇自主研發(fā)或者基于開源軟件如Google的WebRTC做二次開發(fā)。下面簡(jiǎn)單介紹多人實(shí)時(shí)通話系統(tǒng)的一些重點(diǎn)技術(shù)細(xì)節(jié)。
1、多人音視頻實(shí)時(shí)通話系統(tǒng)為了降低通話時(shí)延,我們使用UDP協(xié)議作為傳輸層協(xié)議,眾所周知UDP協(xié)議是不可靠,為了提高弱網(wǎng)下的實(shí)時(shí)音視頻的通話效果,需要使用相關(guān)方案來做QoS保障,主要包括:
a)使用基于網(wǎng)絡(luò)狀態(tài)的音視頻碼率自適應(yīng)算法,根據(jù)當(dāng)前網(wǎng)絡(luò)的丟包、時(shí)延自適應(yīng)降低或者升高音頻和視頻的碼率和幀率,通過這個(gè)方法來降低網(wǎng)絡(luò)的擁塞,提高通話質(zhì)量;
b)使用智能Jitterbuf算法來平滑網(wǎng)絡(luò)抖動(dòng),同時(shí)內(nèi)部使用音頻編碼的丟包補(bǔ)償(PLC)算法進(jìn)一步提升通話質(zhì)量;
c)使用基于多層參考的視頻編解碼器,降低視頻丟包后的卡頓;
d)整個(gè)UDP傳輸層使用前向糾錯(cuò)FEC算法進(jìn)行智能保護(hù),最大限度上保證實(shí)時(shí)音視頻通話的效果。根據(jù)我們的實(shí)際測(cè)試,在使用上訴QoS保障策略以后,音視頻通話可以抗20%丟包和600ms的網(wǎng)絡(luò)抖動(dòng)。
2、多人音視頻實(shí)時(shí)通話系統(tǒng)為了在保障質(zhì)量的前提下盡量降低通話流量,音頻編解碼主要以O(shè)pus為主,Opus融合吸收了CELT和SILK編碼的各種優(yōu)點(diǎn),具備高音質(zhì),高壓縮率,高抗丟包等特性,非常適合移動(dòng)網(wǎng)絡(luò)。視頻編解碼我們使用OpenH264,OpenH264編解碼性能優(yōu)秀,同時(shí)具備:動(dòng)態(tài)碼率、動(dòng)態(tài)幀率及時(shí)域分層等多項(xiàng)適合移動(dòng)網(wǎng)絡(luò)實(shí)時(shí)通話的特性。同時(shí)我們使用了自主研發(fā)的降噪算法,配合回聲消除、自動(dòng)增益和舒適噪音等音頻處理算法來進(jìn)一步保證音頻的質(zhì)量。
3、現(xiàn)在用戶對(duì)于視頻的清晰度要求越來越高,我們的多人實(shí)時(shí)通話系統(tǒng)能夠支持720p,720p下純軟件編解碼對(duì)CPU開銷過大,因此在可以開啟硬件編解碼的機(jī)器上,對(duì)于需要720p清晰度的都盡量使用硬件編解碼。對(duì)于蘋果手機(jī)硬件編解碼基本上只與iOS的版本相關(guān),而Android情況就會(huì)復(fù)雜得多,不僅與手機(jī)硬件相關(guān),還和各個(gè)手機(jī)的ROM相關(guān),為了解決這個(gè)問題需要去做適配。我們?cè)诰W(wǎng)易強(qiáng)大的移動(dòng)應(yīng)用測(cè)試部門的配合下,為大多數(shù)的Android設(shè)備做了適配。
4、沒有覆蓋全球的服務(wù)器部署與網(wǎng)絡(luò)拓?fù)浯罱?,是不可能?gòu)架出一套完善的多人音視頻實(shí)時(shí)通話系統(tǒng)的。依賴網(wǎng)易云在全球范圍內(nèi)的機(jī)房節(jié)點(diǎn),我們搭建了多個(gè)多線接入網(wǎng)絡(luò)拓?fù)洌渴鹆烁呖捎玫姆?wù)器集群,并利用智能分配算法與路由策略,為跨省、跨運(yùn)營(yíng)商、跨國(guó)的多人實(shí)時(shí)通話提供優(yōu)質(zhì)的傳輸通道。
要實(shí)現(xiàn)效果理想的連麥互動(dòng)直播,一套強(qiáng)大完善的多人實(shí)時(shí)通話系統(tǒng)是前提。在簡(jiǎn)單介紹完一套強(qiáng)大的多人實(shí)時(shí)通話系統(tǒng)的需要具備的特點(diǎn)后,接著我們就可以討論下連麥互動(dòng)直播的具體實(shí)現(xiàn)方案了。
傳統(tǒng)的直播流程是:主播客戶端采集并編碼音視頻數(shù)據(jù)以后,直接使用RTMP協(xié)議推流到CDN,其它觀眾使用對(duì)應(yīng)的拉流地址向CDN拉取音視頻流。
該方案使用實(shí)時(shí)通話系統(tǒng)來進(jìn)行主播和觀眾的實(shí)時(shí)互動(dòng)連麥,通過實(shí)時(shí)通話通道主播端收到觀眾端發(fā)送的音頻和視頻數(shù)據(jù),主播端將自己的聲音和觀眾的聲音做混音,并將自己的畫面與觀眾的畫面做視頻合成,最后將混合的聲音和畫面推流到CDN流媒體服務(wù)器。
架構(gòu)圖如下:
方案優(yōu)點(diǎn):
1、主播和連麥觀眾使用了實(shí)時(shí)音視頻來進(jìn)行連麥互動(dòng),實(shí)時(shí)性高,觀眾看到的合成畫面里主播和觀眾的互動(dòng)也是同步實(shí)時(shí)的。
2、方案對(duì)原有直播推流客戶端改動(dòng)不大,服務(wù)端都不需要修改。方案整體的實(shí)現(xiàn)簡(jiǎn)單,利用現(xiàn)有的系統(tǒng)和SDK就可以快速搭建。
這個(gè)方案雖然簡(jiǎn)單可行但對(duì)于移動(dòng)端來說就有兩個(gè)比較致命的問題:
1、主播端的帶寬壓力很大,從架構(gòu)圖中可以看出,主播端必須通過實(shí)時(shí)通話系統(tǒng)發(fā)送一份音視頻數(shù)據(jù)給連麥觀眾,同時(shí)還需要推送一路流到CDN流媒體服務(wù)器。所以相比單人直播,連麥后主播端的上行流量將變?yōu)樵瓉淼膬杀?。這個(gè)兩倍的流量在Windows端穩(wěn)定的有線網(wǎng)絡(luò)環(huán)境下影響不大,但在上行帶寬本來就有限移動(dòng)網(wǎng)絡(luò)下,將會(huì)大大影響直播的效果。
2、主播端的視頻編解碼壓力很大,與造成帶寬壓力大的原因一樣,主播必須編碼一路視頻給連麥觀眾,同時(shí)需要合成并編碼一路推到CDN,兩次編碼對(duì)于移動(dòng)端的性能壓力非常大,經(jīng)過真機(jī)測(cè)試對(duì)于720p的分辨率的連麥互動(dòng)直播僅在旗艦機(jī)型上可以勉強(qiáng)支撐,但發(fā)熱和耗電會(huì)大大增加。
由于上述兩個(gè)問題,我們認(rèn)為方案一在移動(dòng)場(chǎng)景下是不太適用的。
為了解決方案一的問題,可以有以下的替代方案。
架構(gòu)圖如下:
本方案作為優(yōu)化替代方案,方案的關(guān)鍵是:主播不再直接推流到CDN流媒體服務(wù)器,而是基于實(shí)時(shí)音視頻通話系統(tǒng),由實(shí)時(shí)音視頻的中轉(zhuǎn)服務(wù)器轉(zhuǎn)發(fā)給互動(dòng)直播服務(wù)器,再由互動(dòng)直播服務(wù)器處理后推流到CDN流媒體服務(wù)器。
多人音視頻實(shí)時(shí)通話系統(tǒng),可以實(shí)現(xiàn)多人的實(shí)時(shí)互動(dòng),而且多人模式下所有的數(shù)據(jù)包都是通過音視頻中轉(zhuǎn)服務(wù)器中轉(zhuǎn)。音視頻中轉(zhuǎn)服務(wù)器在轉(zhuǎn)發(fā)給參與客戶端的同時(shí),轉(zhuǎn)發(fā)一份到互動(dòng)直播服務(wù)器,互動(dòng)直播服務(wù)器對(duì)收到的語音進(jìn)行混音,同時(shí)對(duì)視頻畫面做混合處理,處理完畢以后再推流到CDN流媒體服務(wù)器。通過這種方案,將方案一中由主播端做的混音混合及推流操作,轉(zhuǎn)嫁由互動(dòng)直播服務(wù)器來承擔(dān)。
方案優(yōu)點(diǎn):
1、主播和連麥觀眾使用了實(shí)時(shí)音視頻來進(jìn)行連麥互動(dòng),實(shí)時(shí)性高,普通觀眾看到的合成畫面里主播和觀眾的互動(dòng)也是同步實(shí)時(shí)的。
2、可以實(shí)現(xiàn)多人連麥互動(dòng)直播,功能差異化明顯。
3、所有客戶端的上行推流不再依賴基于TCP的RTMP協(xié)議,而是使用網(wǎng)易自研的基于UDP的高性能私有協(xié)議,傳輸層的QoS保障更加智能高效。
4、方案一中主播端的帶寬和性能壓力不復(fù)存在,本方案非常適合移動(dòng)端的連麥互動(dòng)直播。
當(dāng)然本方案雖然有很多優(yōu)點(diǎn),但是實(shí)現(xiàn)起來也是最困難的。首先本架構(gòu)涉及到實(shí)時(shí)通話系統(tǒng)與互動(dòng)直播系統(tǒng)兩大系統(tǒng)的融合,架構(gòu)和代碼復(fù)雜度高。特別是互動(dòng)直播系統(tǒng),由于要處理視頻的混合,對(duì)服務(wù)器端代碼的性能和硬件要求都很高。我們?yōu)榱私鉀Q這個(gè)問題,使用了網(wǎng)易機(jī)房里多臺(tái)高性能物理機(jī)作為連麥互動(dòng)直播服務(wù)器,并且不斷優(yōu)化服務(wù)器端代碼架構(gòu)和處理流程,通過不斷的優(yōu)化,最終滿足了業(yè)務(wù)需求。綜上,我們認(rèn)為本方案是當(dāng)前最適合移動(dòng)端的連麥互動(dòng)直播方案。
2016年作為移動(dòng)直播元年,全球范圍內(nèi)的開發(fā)者和公司都在思考如何提供更加優(yōu)質(zhì)的服務(wù)。我們認(rèn)為內(nèi)容永遠(yuǎn)都是直播發(fā)展的王道,作為研發(fā)工程師的職責(zé)就是為內(nèi)容的傳輸保駕護(hù)航,提供高清、流暢且延遲低的直播內(nèi)容。而差異化的功能將成為直播應(yīng)用的亮點(diǎn),其中擁有連麥互動(dòng)的直播應(yīng)用將會(huì)在增加用戶的參與度、幸福感的同時(shí)提高用戶粘性,連麥互動(dòng)直播的重要性也就不言而喻了。
科技永遠(yuǎn)都是第一生產(chǎn)力,當(dāng)前VR虛擬現(xiàn)實(shí)技術(shù)與直播一樣火爆。而VR與直播結(jié)合的VR直播能夠讓觀眾身臨其境,它獨(dú)特的互動(dòng)方式或許在不久的將來,就會(huì)在直播領(lǐng)域掀起新一輪的變革。而互動(dòng)直播在未來將是一個(gè)以泛生活和場(chǎng)景化直播為主題,充分結(jié)合VR技術(shù),全面開啟新聞、旅游、教育、醫(yī)療等全場(chǎng)景沉浸式“直播+”時(shí)代。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。