本發(fā)明屬于網(wǎng)絡(luò)視頻直播技術(shù)領(lǐng)域,具體涉及一種針對(duì)網(wǎng)吧環(huán)境基于三層服務(wù)器架構(gòu)的視頻直播系統(tǒng)。
背景技術(shù):
隨著科技的飛速發(fā)展,計(jì)算機(jī)硬件性能越來(lái)越強(qiáng),對(duì)實(shí)時(shí)處理高清音視頻流的編解碼工作已經(jīng)能輕松應(yīng)對(duì)。加之互聯(lián)網(wǎng)的蓬勃發(fā)展,網(wǎng)絡(luò)帶寬不斷提高,資費(fèi)逐漸降低,給網(wǎng)絡(luò)視頻直播的發(fā)展提供了良好的基礎(chǔ)。
網(wǎng)絡(luò)直播作為互聯(lián)網(wǎng)發(fā)展的產(chǎn)物,正以迅雷不及掩耳之勢(shì)迅速崛起,網(wǎng)絡(luò)直播憑其多方面的特性躋身于最具人氣的網(wǎng)絡(luò)應(yīng)用之列,并成為當(dāng)下最火的互聯(lián)網(wǎng)“風(fēng)口”之一。一時(shí)間,各類(lèi)娛樂(lè)直播層出不窮,例如,游戲電競(jìng)直播、美女秀場(chǎng)直播等,聚集了眾多直播用戶(hù),同時(shí)吸引了眾多投資者的關(guān)注。網(wǎng)吧作為當(dāng)前提供互聯(lián)網(wǎng)娛樂(lè)的主要場(chǎng)所之一,服務(wù)著大批的網(wǎng)民,有強(qiáng)烈的視頻直播的需求。
網(wǎng)絡(luò)視頻直播是指利用互聯(lián)網(wǎng)及流媒體技術(shù)進(jìn)行直播,視頻直播系統(tǒng)首先把現(xiàn)場(chǎng)的信號(hào)(攝像機(jī))、電視信號(hào)(如電視節(jié)目、錄像帶)等進(jìn)行實(shí)時(shí)采集編碼成標(biāo)準(zhǔn)流式數(shù)據(jù)(FLV、WMV)進(jìn)行管理,然后通過(guò)網(wǎng)絡(luò)傳送到服務(wù)器上進(jìn)行發(fā)布,最后由終端向服務(wù)器進(jìn)行訂閱視頻媒體流,從而使用戶(hù)通過(guò)網(wǎng)絡(luò)實(shí)時(shí)觀看到現(xiàn)場(chǎng)節(jié)目。作為一種嶄新的傳播渠道,網(wǎng)絡(luò)直播吸取和延續(xù)了互聯(lián)網(wǎng)的優(yōu)勢(shì),利用互聯(lián)網(wǎng)的直觀、快速,表現(xiàn)形式好、內(nèi)容豐富、交互性強(qiáng)、地域不受限制、受眾可劃分等特點(diǎn),加強(qiáng)活動(dòng)現(xiàn)場(chǎng)的推廣效果。現(xiàn)場(chǎng)直播完成后,還可以隨時(shí)為讀者繼續(xù)提供重播、點(diǎn)播,有效延長(zhǎng)了直播的時(shí)間和空間,發(fā)揮直播內(nèi)容的最大價(jià)值。
網(wǎng)絡(luò)直播這種實(shí)時(shí)性、互動(dòng)性及豐富多彩的音、視頻多媒體的特性確實(shí)是其他傳統(tǒng)媒介所無(wú)法比擬的。因此,其一出現(xiàn)就被喻為是信息傳播方式的重大革命。但是,網(wǎng)絡(luò)直播一直受到網(wǎng)絡(luò)傳輸?shù)燃夹g(shù)方面的制約,束縛著其進(jìn)一步的發(fā)展和普及。
首先,網(wǎng)絡(luò)帶寬是限制其發(fā)展的主要瓶頸。電視主要提供給受眾動(dòng)態(tài)的影像畫(huà)面和聲音。網(wǎng)絡(luò)作為多媒體形式結(jié)合的新媒體,雖然可以提供給受眾影像和聲音信息,但質(zhì)量上和電視相比還有明顯的差距。以現(xiàn)在的彩色電視制式,每秒至少25幀畫(huà)面再加上聲音信號(hào),其數(shù)據(jù)量是相當(dāng)大的。而目前電信等運(yùn)營(yíng)商提供的寬帶網(wǎng)絡(luò)雖然可以達(dá)到播放視頻的要求,但是由于經(jīng)濟(jì)成本的原因,只有部分商業(yè)用戶(hù)和小部分個(gè)人用戶(hù)的網(wǎng)絡(luò)才能流暢播放高清視頻,大部分用戶(hù)只能播放經(jīng)過(guò)大幅壓縮的視頻數(shù)據(jù),在分辨率和畫(huà)面效果上都無(wú)法與高清電視相比。特別是在網(wǎng)絡(luò)使用高峰的時(shí)間段,要想完整地觀看一場(chǎng)畫(huà)面流暢的高清直播基本不太可能。所以在一些調(diào)查中,仍有超過(guò)半數(shù)的調(diào)查用戶(hù)將電視、廣播作為觀看直播節(jié)目的首選。對(duì)于已經(jīng)租用了優(yōu)質(zhì)寬帶網(wǎng)絡(luò)的商戶(hù)和個(gè)人,尤其是直播平臺(tái)的運(yùn)營(yíng)商,也都非常期望能進(jìn)一步降低網(wǎng)絡(luò)帶寬的經(jīng)濟(jì)負(fù)擔(dān)。因此,降低直播網(wǎng)絡(luò)帶寬的消耗也是進(jìn)一步推進(jìn)網(wǎng)絡(luò)視頻直播的關(guān)鍵點(diǎn)所在。
其次,由于網(wǎng)絡(luò)技術(shù)的特殊性,網(wǎng)絡(luò)用戶(hù)要得到數(shù)據(jù)必須從連接網(wǎng)絡(luò)的服務(wù)器上獲得,在數(shù)據(jù)量小或用戶(hù)不多的情況下,并沒(méi)有什么問(wèn)題,但當(dāng)用戶(hù)成倍增長(zhǎng),數(shù)據(jù)量極度膨脹時(shí),就會(huì)對(duì)內(nèi)容提供方的服務(wù)器及存儲(chǔ)設(shè)備提出挑戰(zhàn)。以往,一些大型網(wǎng)絡(luò)直播活動(dòng)還沒(méi)到高峰時(shí)期,就已出現(xiàn)因?yàn)橛脩?hù)太多而連接不上視頻服務(wù)器、看不到直播的現(xiàn)象,甚至出現(xiàn)服務(wù)器死機(jī)的嚴(yán)重情況。因此,網(wǎng)絡(luò)直播的發(fā)展還得基于當(dāng)前的硬件水平努力解決服務(wù)端的瓶頸,提高后端流媒體服務(wù)器系統(tǒng)的并發(fā)能力。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述,本發(fā)明提供了一種針對(duì)網(wǎng)吧環(huán)境基于三層服務(wù)器架構(gòu)的視頻直播系統(tǒng),能夠最大程度節(jié)省網(wǎng)吧的網(wǎng)絡(luò)帶寬,使網(wǎng)吧大量用戶(hù)可同時(shí)觀看高質(zhì)量的高清直播節(jié)目,并能保持視頻直播節(jié)目的流暢播放。
一種針對(duì)網(wǎng)吧環(huán)境基于三層服務(wù)器架構(gòu)的視頻直播系統(tǒng),包括位于云端對(duì)應(yīng)第一層的流媒體發(fā)布服務(wù)器集群、對(duì)應(yīng)第二層的流媒體源服務(wù)器集群和中心控制服務(wù)器集群以及位于同一網(wǎng)吧局域網(wǎng)內(nèi)對(duì)應(yīng)第三層的流媒體邊緣服務(wù)器集群、客戶(hù)端集群和邊緣控制服務(wù)器;
所述的客戶(hù)端集群由多臺(tái)客戶(hù)端組成,這些客戶(hù)端分為兩種類(lèi)型:一種是提供多媒體直播數(shù)據(jù)流的主播客戶(hù)端,另一種是接收多媒體直播數(shù)據(jù)流的觀眾客戶(hù)端;所述的客戶(hù)端可以是普通PC機(jī)(Window或MAC操作系統(tǒng))、智能手機(jī)(iPhone、Android智能手機(jī))或平板電腦(蘋(píng)果iPad、微軟Surface、三星Galaxy)。
所述的主播客戶(hù)端要上傳直播節(jié)目時(shí)先向中心控制服務(wù)器集群發(fā)出請(qǐng)求,進(jìn)而根據(jù)中心控制服務(wù)器分配的服務(wù)器地址和端口與對(duì)應(yīng)的流媒體源服務(wù)器建立連接并向其推送多媒體直播數(shù)據(jù)流;
所述的觀眾客戶(hù)端要觀看直播節(jié)目時(shí)先向邊緣控制服務(wù)器發(fā)出請(qǐng)求,進(jìn)而根據(jù)邊緣控制服務(wù)器分配的服務(wù)器地址和端口與對(duì)應(yīng)的流媒體邊緣服務(wù)器建立連接并向其請(qǐng)求所要觀看的直播節(jié)目,收到流媒體邊緣服務(wù)器發(fā)送的多媒體直播數(shù)據(jù)流后對(duì)該直播節(jié)目進(jìn)行播放;
所述的邊緣控制服務(wù)器根據(jù)觀眾客戶(hù)端的請(qǐng)求為其分配一臺(tái)流媒體邊緣服務(wù)器并向其返回該服務(wù)器的地址和端口;
所述的中心控制服務(wù)器集群由多臺(tái)中心控制服務(wù)器組成,所述的中心控制服務(wù)器用于為客戶(hù)端、流媒體發(fā)布服務(wù)器和流媒體源服務(wù)器提供注冊(cè)、登錄驗(yàn)證,實(shí)時(shí)采集流媒體發(fā)布服務(wù)器集群和流媒體源服務(wù)器集群的負(fù)載信息,同時(shí)根據(jù)主播客戶(hù)端的請(qǐng)求為其分配一臺(tái)流媒體源服務(wù)器并向其返回該服務(wù)器的地址和端口,根據(jù)流媒體邊緣服務(wù)器的請(qǐng)求為其分配一臺(tái)流媒體發(fā)布服務(wù)器并向其返回該服務(wù)器的地址和端口,根據(jù)流媒體發(fā)布服務(wù)器所請(qǐng)求的直播節(jié)目向其返回該節(jié)目所在流媒體源服務(wù)器的地址和端口;其不僅可以避免將流媒體服務(wù)器的網(wǎng)絡(luò)地址直接暴露出去,提高系統(tǒng)的安全性,使流媒體服務(wù)器的部署更加靈活和便利,此外還可及時(shí)發(fā)現(xiàn)和剔除崩潰的流媒體服務(wù)器,提高系統(tǒng)對(duì)外的可用性。
所述的流媒體邊緣服務(wù)器集群由多臺(tái)流媒體邊緣服務(wù)器組成,所述的流媒體邊緣服務(wù)器根據(jù)觀眾客戶(hù)端所請(qǐng)求的直播節(jié)目查詢(xún)?cè)摴?jié)目是否正在被本服務(wù)器轉(zhuǎn)發(fā):若是則直接將該節(jié)目的多媒體直播數(shù)據(jù)流轉(zhuǎn)發(fā)給觀眾客戶(hù)端;若否則通過(guò)互聯(lián)網(wǎng)向中心控制服務(wù)器集群請(qǐng)求可連接的流媒體發(fā)布服務(wù)器,進(jìn)而根據(jù)中心控制服務(wù)器分配的服務(wù)器地址和端口與對(duì)應(yīng)的流媒體發(fā)布服務(wù)器建立連接并向其請(qǐng)求觀眾客戶(hù)端所要求的直播節(jié)目,收到流媒體發(fā)布服務(wù)器發(fā)送的多媒體直播數(shù)據(jù)流后轉(zhuǎn)發(fā)給觀眾客戶(hù)端;當(dāng)有大量終端用戶(hù)觀看同一直播節(jié)目時(shí),邊緣服務(wù)器集群可以顯著降低直播系統(tǒng)對(duì)公網(wǎng)帶寬的需求,保證高質(zhì)量的直播節(jié)目能流暢、穩(wěn)定的播放,可以明顯提高直播觀看端用戶(hù)打開(kāi)直播節(jié)目速度,縮短播放等待時(shí)間,提升用戶(hù)體驗(yàn)。
所述的流媒體發(fā)布服務(wù)器集群由多臺(tái)流媒體發(fā)布服務(wù)器組成,所述的流媒體發(fā)布服務(wù)器根據(jù)流媒體邊緣服務(wù)器所請(qǐng)求的直播節(jié)目查詢(xún)?cè)摴?jié)目是否正在被本服務(wù)器轉(zhuǎn)發(fā):若是則直接將該節(jié)目的多媒體直播數(shù)據(jù)流轉(zhuǎn)發(fā)給流媒體邊緣服務(wù)器;若否則向中心控制服務(wù)器集群請(qǐng)求連接該節(jié)目所在的流媒體源服務(wù)器,進(jìn)而根據(jù)中心控制服務(wù)器提供的服務(wù)器地址和端口與對(duì)應(yīng)的流媒體源服務(wù)器建立連接并向其請(qǐng)求流媒體邊緣服務(wù)器所要求的直播節(jié)目,收到流媒體源服務(wù)器發(fā)送的多媒體直播數(shù)據(jù)流后轉(zhuǎn)發(fā)給流媒體邊緣服務(wù)器;流媒體發(fā)布服務(wù)器集群能顯著提高直播節(jié)目觀看人數(shù)的并發(fā)量,并且能按需擴(kuò)展,具有良好的伸縮性。
所述的流媒體源服務(wù)器集群由多臺(tái)流媒體源服務(wù)器組成,所述的流媒體源服務(wù)器用于接收并緩存主播客戶(hù)端所推送的多媒體直播數(shù)據(jù)流,建立并管理對(duì)應(yīng)的直播節(jié)目列表信息,同時(shí)根據(jù)流媒體發(fā)布服務(wù)器所請(qǐng)求的直播節(jié)目將該節(jié)目的多媒體直播數(shù)據(jù)流發(fā)送給流媒體發(fā)布服務(wù)器。
優(yōu)選地,所述的中心控制服務(wù)器還負(fù)責(zé)對(duì)流媒體發(fā)布服務(wù)器集群和流媒體源服務(wù)器集群進(jìn)行負(fù)載均衡控制,從而在滿(mǎn)足流媒體源服務(wù)器集群負(fù)載均衡條件下為主播客戶(hù)端分配合適的流媒體源服務(wù)器,在滿(mǎn)足流媒體發(fā)布服務(wù)器集群負(fù)載均衡條件下為流媒體邊緣服務(wù)器分配合適的流媒體發(fā)布服務(wù)器。
進(jìn)一步優(yōu)選地,所述的中心控制服務(wù)器根據(jù)流媒體邊緣服務(wù)器所請(qǐng)求的直播節(jié)目?jī)?yōu)先為其分配正在轉(zhuǎn)發(fā)該節(jié)目的流媒體發(fā)布服務(wù)器,以便降低總的帶寬消耗和減少加入節(jié)目的等待時(shí)間。
優(yōu)選地,所述的邊緣控制服務(wù)器還負(fù)責(zé)對(duì)流媒體邊緣服務(wù)器集群進(jìn)行負(fù)載均衡控制,從而在滿(mǎn)足流媒體邊緣服務(wù)器集群負(fù)載均衡條件下為觀眾客戶(hù)端分配合適的流媒體邊緣服務(wù)器。
進(jìn)一步優(yōu)選地,所述的邊緣控制服務(wù)器根據(jù)觀眾客戶(hù)端所請(qǐng)求的直播節(jié)目?jī)?yōu)先為其分配正在轉(zhuǎn)發(fā)該節(jié)目的流媒體邊緣服務(wù)器,以便降低總的帶寬消耗和減少加入節(jié)目的等待時(shí)間。
優(yōu)選地,所述的中心控制服務(wù)器集群內(nèi)還包含有負(fù)載均衡器,所述的負(fù)載均衡器用于對(duì)中心控制服務(wù)器集群進(jìn)行負(fù)載均衡控制,當(dāng)主播客戶(hù)端、流媒體邊緣服務(wù)器或流媒體發(fā)布服務(wù)器向中心控制服務(wù)器集群發(fā)送請(qǐng)求時(shí),負(fù)載均衡器在滿(mǎn)足中心控制服務(wù)器集群負(fù)載均衡條件下從中選取合適的中心控制服務(wù)器為對(duì)方提供服務(wù)。
本發(fā)明的有益技術(shù)效果如下:
1、本發(fā)明通過(guò)云端的流媒體源服務(wù)器、云端的流媒體發(fā)布服務(wù)器和網(wǎng)吧端的流媒體邊緣服務(wù)器三層服務(wù)器架構(gòu),解決了直播觀眾高并發(fā)觀看的問(wèn)題。
2、本發(fā)明通過(guò)在網(wǎng)吧端增加流媒體邊緣服務(wù)器的部署,觀眾統(tǒng)一從邊緣服務(wù)器獲取直播流,可以顯著降低網(wǎng)吧帶寬和直播系統(tǒng)公網(wǎng)帶寬的消耗,在保證用戶(hù)流暢觀看直播的同時(shí)降低整個(gè)直播系統(tǒng)的運(yùn)營(yíng)成本。
3、本發(fā)明通過(guò)控制服務(wù)器的分配策略,加入直播的觀看用戶(hù)會(huì)優(yōu)先連接到已在轉(zhuǎn)發(fā)該節(jié)目的流媒體服務(wù)器,因此可以明顯縮短加入時(shí)間,減少等待,提供更佳的用戶(hù)體驗(yàn)。
4、本發(fā)明每一層流媒體服務(wù)器集群可根據(jù)主播用戶(hù)和觀看用戶(hù)的規(guī)模進(jìn)行獨(dú)立的增加和縮減,靈活性和可擴(kuò)展性好。
附圖說(shuō)明
圖1為本發(fā)明網(wǎng)絡(luò)視頻直播系統(tǒng)的組成示意圖。
圖2為本發(fā)明網(wǎng)絡(luò)視頻直播系統(tǒng)的交互流程示意圖。
具體實(shí)施方式
為了更為具體地描述本發(fā)明,下面結(jié)合附圖及具體實(shí)施方式對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
本發(fā)明網(wǎng)絡(luò)視頻直播系統(tǒng)的結(jié)構(gòu)如圖1所示,系統(tǒng)主要由視頻直播客戶(hù)端、中心控制服務(wù)器集群、流媒體源服務(wù)器集群、流媒體發(fā)布服務(wù)器集群、邊緣控制服務(wù)器和流媒體邊緣服務(wù)器集群組成。此網(wǎng)絡(luò)視頻直播系統(tǒng)的架構(gòu)設(shè)計(jì)靈活,可擴(kuò)展性強(qiáng),部署簡(jiǎn)單,所有服務(wù)器集群中的服務(wù)器數(shù)量都是動(dòng)態(tài)可調(diào)整的,隨著用戶(hù)量的增加,系統(tǒng)中各個(gè)服務(wù)器集群的服務(wù)器數(shù)量可以隨時(shí)增加,因此該系統(tǒng)的服務(wù)能力可以動(dòng)態(tài)提升,能較容易地滿(mǎn)足實(shí)際的需要。
視頻直播客戶(hù)端實(shí)現(xiàn)兩個(gè)功能,一、主播端(視頻源端)完成音視頻數(shù)據(jù)的采集,編碼打包后將數(shù)據(jù)推送到流媒體源服務(wù)器集群;二、觀看端從流媒體邊緣服務(wù)器集群持續(xù)請(qǐng)求多媒體碼流,接收后解碼播放視頻。
由于直播客戶(hù)端是在不同的平臺(tái)上實(shí)現(xiàn)的,所以涉及到的開(kāi)發(fā)語(yǔ)言包括C++,ActionScript,Java和Object-C等,客戶(hù)終端基本由以下模塊組成:
通信模塊,主要用于向中心控制服務(wù)器集群發(fā)送認(rèn)證請(qǐng)求信息(觀看客戶(hù)端可不進(jìn)行登錄)、創(chuàng)建直播指令和停止直播指令;向流媒體源服務(wù)器集群推送音視頻流數(shù)據(jù),并接收流媒體邊緣服務(wù)器集群轉(zhuǎn)發(fā)的音視頻碼流;控制指令傳輸采用TCP/HTTP協(xié)議,流媒體碼流傳輸采用RTMP協(xié)議。
音視頻采集模塊,實(shí)現(xiàn)對(duì)音視頻信息的采集,包括采集主播攝像頭和麥克風(fēng)的輸入,采集游戲畫(huà)面和聲音等,主要基于CoreAudio、DirectX實(shí)現(xiàn)。
流媒體編碼模塊,用于對(duì)采集到的音視頻數(shù)據(jù)分別進(jìn)行編碼壓縮,視頻采用H.264算法,音頻采用AAC算法,然后將獨(dú)立的視頻碼流和音頻碼流封裝成標(biāo)準(zhǔn)的RTMP多媒體流。其中,視頻H.264編碼模塊會(huì)檢測(cè)終端的硬件配置,支持開(kāi)啟Intel、NVIDIA和AMD的硬件編碼功能。
中心控制服務(wù)器集群在整個(gè)直播系統(tǒng)中扮演著管理者的角色,中心控制服務(wù)器主要由以下功能模塊組成:
通信管理模塊,開(kāi)啟以下4種偵聽(tīng)服務(wù),(1)用于偵聽(tīng)客戶(hù)端的連接請(qǐng)求(TCP/HTTP),主要負(fù)責(zé)客戶(hù)端的登錄認(rèn)證處理以及維護(hù)主播客戶(hù)端和流媒體源服務(wù)器之間的網(wǎng)絡(luò)連接與通信;(2)用于偵聽(tīng)流媒體源服務(wù)器集群的連接請(qǐng)求(TCP),維持源服務(wù)器狀態(tài)信息更新;(3)用于偵聽(tīng)流媒體發(fā)布服務(wù)器集群的連接請(qǐng)求(TCP),維護(hù)流媒體發(fā)布服務(wù)器狀態(tài)信息更新以及發(fā)布服務(wù)器和流媒體源服務(wù)器之間的網(wǎng)絡(luò)連接與通信;(4)用于偵聽(tīng)流媒體邊緣服務(wù)器集群的連接請(qǐng)求(TCP),維護(hù)邊緣服務(wù)器和發(fā)布服務(wù)器之間的網(wǎng)絡(luò)連接與通信。
服務(wù)器管理模塊,包括流媒體源服務(wù)器和流媒體發(fā)布服務(wù)器的基本信息注冊(cè)、直播節(jié)目列表信息注冊(cè)、服務(wù)器負(fù)載信息更新三個(gè)功能。服務(wù)器基本信息注冊(cè)用于存儲(chǔ)流媒體源服務(wù)器和流媒體發(fā)布服務(wù)器的基本信息,包括IP地址、端口、最大負(fù)載數(shù)等;直播節(jié)目列表信息注冊(cè)用于登記流媒體源服務(wù)器上進(jìn)行的直播節(jié)目,以及流媒體發(fā)布服務(wù)器上轉(zhuǎn)發(fā)的直播節(jié)目;服務(wù)器負(fù)載信息更新是指對(duì)流媒體源服務(wù)器上進(jìn)行的直播節(jié)目的數(shù)量和流媒體發(fā)布服務(wù)器上轉(zhuǎn)發(fā)的節(jié)目數(shù)量等負(fù)載信息進(jìn)行更新。
監(jiān)控管理模塊,用于監(jiān)控、維護(hù)流媒體發(fā)布服務(wù)器集群的所有服務(wù)器狀態(tài)信息,為流媒體發(fā)布服務(wù)器集群提供負(fù)載均衡功能。當(dāng)流媒體邊緣服務(wù)器向中心控制服務(wù)器請(qǐng)求某個(gè)直播節(jié)目時(shí),中心控制服務(wù)器會(huì)選擇一個(gè)合適的流媒體發(fā)布服務(wù)器,把地址和端口告知請(qǐng)求方,并記錄下該節(jié)目和流媒體發(fā)布服務(wù)器的對(duì)應(yīng)關(guān)系。
流媒體服務(wù)器分配模塊,分為三部分:一是根據(jù)流媒體源服務(wù)器注冊(cè)的信息為主播客戶(hù)端分配最優(yōu)的流媒體源服務(wù)器,具有負(fù)載均衡的作用;二是根據(jù)流媒體發(fā)布服務(wù)器注冊(cè)的信息為流媒體邊緣服務(wù)器分配最優(yōu)的流媒體發(fā)布服務(wù)器,兼有負(fù)載均衡的作用,但又不僅限于此,會(huì)優(yōu)先分配正在轉(zhuǎn)發(fā)請(qǐng)求節(jié)目的發(fā)布服務(wù)器,以便降低總的帶寬消耗和減少加入節(jié)目的等待時(shí)間;三是根據(jù)注冊(cè)的直播節(jié)目信息為流媒體發(fā)布服務(wù)器選擇正確的流媒體源服務(wù)器。
流媒體源服務(wù)器由以下功能模塊組成:
通信管理模塊,主要負(fù)責(zé)維持流媒體源服務(wù)器與主播客戶(hù)端、中心控制服務(wù)器、流媒體發(fā)布服務(wù)器之間的網(wǎng)絡(luò)連接和通訊。此模塊將開(kāi)啟兩個(gè)偵聽(tīng)服務(wù)和一個(gè)連接請(qǐng)求:(1)用于偵聽(tīng)主播客戶(hù)端請(qǐng)求推送到本服務(wù)器的直播節(jié)目的音視頻碼流的RTMP連接;(2)用于偵聽(tīng)流媒體發(fā)布服務(wù)器請(qǐng)求直播節(jié)目的音視頻碼流的RTMP連接;(3)流媒體源服務(wù)器開(kāi)啟時(shí)主動(dòng)向中心控制服務(wù)器發(fā)起連接請(qǐng)求,定時(shí)匯報(bào)狀態(tài)信息;如果連接失敗,流媒體服務(wù)器將定時(shí)發(fā)送連接請(qǐng)求,直到連接成功為止。
注冊(cè)匯報(bào)模塊,主要由基本信息注冊(cè)和負(fù)載信息匯報(bào)兩個(gè)功能組成。流媒體源服務(wù)器開(kāi)啟后,如果與中心控制服務(wù)器連接成功,它將把自己的基本信息發(fā)送給中心控制服務(wù)器,基本信息包括:最大負(fù)載數(shù)、提供給主播客戶(hù)端連接的IP地址和端口,提供給流媒體發(fā)布服務(wù)器連接的IP地址和端口等;負(fù)載信息匯報(bào)功能定時(shí)匯報(bào)流媒體源服務(wù)器當(dāng)前的直播數(shù)目和每個(gè)節(jié)目被流媒體發(fā)布服務(wù)器訂閱的情況。
直播節(jié)目管理模塊,負(fù)責(zé)創(chuàng)建并管理維護(hù)和主播客戶(hù)端之間的直播會(huì)話,同時(shí)將直播節(jié)目的多媒體流轉(zhuǎn)發(fā)給每個(gè)訂閱該節(jié)目的流媒體發(fā)布服務(wù)器。主播客戶(hù)端只有登錄到中心控制服務(wù)器經(jīng)過(guò)認(rèn)證,才能獲得流媒體源服務(wù)器的公網(wǎng)IP地址和端口,然后連接源服務(wù)器開(kāi)始直播。當(dāng)有新的發(fā)布服務(wù)器請(qǐng)求訂閱某個(gè)節(jié)目時(shí),源服務(wù)器會(huì)在直播列表中搜尋該節(jié)目,如找到則把請(qǐng)求的發(fā)布服務(wù)器加入該節(jié)目的訂閱列表中,之后便會(huì)實(shí)時(shí)轉(zhuǎn)發(fā)節(jié)目流到發(fā)布服務(wù)器。當(dāng)主播停止直播后,源服務(wù)器會(huì)通知訂閱該節(jié)目的每個(gè)發(fā)布服務(wù)器,最終關(guān)閉所有相關(guān)的連接,釋放會(huì)話資源。
直播節(jié)目錄制模塊,主要負(fù)責(zé)將接收到的直播RTMP多媒體流按照配置信息錄制成指定的多媒體文件,以便于后續(xù)可提供點(diǎn)播回放功能,支持錄制成FLV和MP4文件。
流媒體發(fā)布服務(wù)器由以下功能模塊組成:
通信管理模塊,主要負(fù)責(zé)維持流媒體發(fā)布服務(wù)器與中心控制服務(wù)器、流媒體邊緣服務(wù)器之間的網(wǎng)絡(luò)連接和通訊。此模塊將開(kāi)啟一個(gè)偵聽(tīng)服務(wù)和兩個(gè)連接請(qǐng)求,偵聽(tīng)服務(wù)用于偵聽(tīng)流媒體邊緣服務(wù)器請(qǐng)求直播節(jié)目的音視頻碼流的RTMP連接;兩個(gè)連接請(qǐng)求為:(1)向流媒體源服務(wù)器請(qǐng)求直播節(jié)目的音視頻碼流的RTMP連接;(2)流媒體發(fā)布服務(wù)器開(kāi)啟時(shí)主動(dòng)向中心控制服務(wù)器發(fā)起連接請(qǐng)求,定時(shí)匯報(bào)狀態(tài)信息,以及按需請(qǐng)求不同直播節(jié)目所屬的源服務(wù)器地址和端口,如果連接失敗,流媒體服務(wù)器將定時(shí)發(fā)送連接請(qǐng)求,直到連接成功為止。
注冊(cè)匯報(bào)模塊,主要由基本信息注冊(cè)和負(fù)載信息匯報(bào)兩個(gè)功能組成。流媒體發(fā)布服務(wù)器開(kāi)啟后,如果與中心控制服務(wù)器連接成功,它將把自己的基本信息發(fā)送給中心控制服務(wù)器,基本信息包括:最大負(fù)載數(shù)、提供給流媒體邊緣服務(wù)器連接的IP地址和端口等;負(fù)載信息匯報(bào)功能定時(shí)匯報(bào)流媒體發(fā)布服務(wù)器當(dāng)前轉(zhuǎn)發(fā)的直播數(shù)目和每個(gè)節(jié)目被流媒體邊緣服務(wù)器訂閱的情況。
直播節(jié)目管理模塊,負(fù)責(zé)管理直播節(jié)目的轉(zhuǎn)發(fā)。當(dāng)流媒體邊緣服務(wù)器來(lái)請(qǐng)求訂閱某個(gè)節(jié)目的多媒體流時(shí),如果本服務(wù)器的轉(zhuǎn)發(fā)節(jié)目列表中沒(méi)有該節(jié)目,則向中心控制服務(wù)器請(qǐng)求該節(jié)目的源服務(wù)器地址和端口,然后和流媒體源服務(wù)器建立直播節(jié)目的音視頻的RTMP連接,并將獲取到的流實(shí)時(shí)轉(zhuǎn)發(fā)給訂閱的流媒體邊緣服務(wù)器;如果本服務(wù)器的轉(zhuǎn)發(fā)節(jié)目列表中有該節(jié)目,則直接將請(qǐng)求訂閱該節(jié)目的邊緣服務(wù)器加入該節(jié)目的轉(zhuǎn)發(fā)列表中,之后便可實(shí)時(shí)轉(zhuǎn)發(fā)節(jié)目流。當(dāng)流媒體發(fā)布服務(wù)器接收到流媒體源服務(wù)器關(guān)于某個(gè)直播節(jié)目停止直播的信息,發(fā)布服務(wù)器會(huì)通知訂閱該節(jié)目的所有邊緣服務(wù)器該節(jié)目停止直播,然后關(guān)閉所有相關(guān)的連接,釋放會(huì)話資源。
邊緣控制服務(wù)器由以下功能模塊組成:
通信管理模塊,主要負(fù)責(zé)維持本服務(wù)器與直播客戶(hù)端,本服務(wù)器與流媒體邊緣服務(wù)器之間的網(wǎng)絡(luò)連接和通訊。此模塊將開(kāi)啟兩個(gè)偵聽(tīng)服務(wù):(1)用于偵聽(tīng)直播觀看客戶(hù)端請(qǐng)求流媒體邊緣服務(wù)器地址的連接請(qǐng)求(TCP);(2)用于偵聽(tīng)流媒體邊緣服務(wù)器集群的連接請(qǐng)求(TCP),維護(hù)流媒體邊緣服務(wù)器狀態(tài)信息更新和轉(zhuǎn)發(fā)的直播節(jié)目信息的更新。
流媒體邊緣服務(wù)器分配模塊,根據(jù)流媒體邊緣服務(wù)器注冊(cè)的狀態(tài)信息和轉(zhuǎn)發(fā)的節(jié)目列表為直播觀看客戶(hù)端分配最優(yōu)的流媒體邊緣服務(wù)器,兼有負(fù)載均衡的作用,但又不僅限于此,會(huì)優(yōu)先分配正在轉(zhuǎn)發(fā)請(qǐng)求節(jié)目的發(fā)布服務(wù)器,以便降低總的帶寬消耗和減少加入節(jié)目的等待時(shí)間。
流媒體邊緣服務(wù)器由以下功能模塊組成:
通信管理模塊,主要負(fù)責(zé)維持流媒體邊緣服務(wù)器與直播客戶(hù)端、中心控制服務(wù)器、流媒體發(fā)布服務(wù)器之間的網(wǎng)絡(luò)連接和通訊。此模塊將開(kāi)啟一個(gè)偵聽(tīng)服務(wù)和三個(gè)連接請(qǐng)求。偵聽(tīng)服務(wù)用于偵聽(tīng)直播觀看客戶(hù)端請(qǐng)求直播節(jié)目的音視頻碼流的RTMP連接;兩個(gè)連接請(qǐng)求為:(1)開(kāi)啟時(shí)主動(dòng)向邊緣控制服務(wù)器發(fā)起連接請(qǐng)求,定時(shí)匯報(bào)狀態(tài)信息以及轉(zhuǎn)發(fā)的節(jié)目信息。如果連接失敗,流媒體服務(wù)器將定時(shí)發(fā)送連接請(qǐng)求,直到連接成功為止;(2)向中心控制服務(wù)器集群請(qǐng)求可連接的流媒體發(fā)布服務(wù)器地址和端口的TCP連接;(3)向流媒體發(fā)布服務(wù)器請(qǐng)求直播節(jié)目的音視頻碼流的RTMP連接。
直播節(jié)目管理模塊,負(fù)責(zé)管理直播節(jié)目的轉(zhuǎn)發(fā)。當(dāng)直播觀看客戶(hù)端來(lái)請(qǐng)求訂閱某個(gè)節(jié)目的多媒體流時(shí),如果本服務(wù)器的轉(zhuǎn)發(fā)節(jié)目列表中沒(méi)有該節(jié)目,則向中心控制服務(wù)器請(qǐng)求該節(jié)目的發(fā)布服務(wù)器地址和端口,然后和流媒體發(fā)布服務(wù)器建立直播節(jié)目的音視頻的RTMP連接,并將獲取到的流實(shí)時(shí)轉(zhuǎn)發(fā)給訂閱的直播觀看客戶(hù)端;如果本服務(wù)器的轉(zhuǎn)發(fā)節(jié)目列表中有該節(jié)目,則直接將請(qǐng)求訂閱該節(jié)目的客戶(hù)端加入該節(jié)目的轉(zhuǎn)發(fā)列表中,之后便可實(shí)時(shí)轉(zhuǎn)發(fā)節(jié)目流。當(dāng)流媒體邊緣服務(wù)器接收到流媒體發(fā)布服務(wù)器關(guān)于某個(gè)直播節(jié)目停止直播的信息,邊緣服務(wù)器會(huì)通知訂閱該節(jié)目的所有客戶(hù)端該節(jié)目停止直播,然后關(guān)閉所有相關(guān)的連接,釋放會(huì)話資源。當(dāng)觀看客戶(hù)端告知邊緣服務(wù)器停止觀看某節(jié)目的直播后,邊緣服務(wù)器會(huì)將該客戶(hù)端從轉(zhuǎn)發(fā)節(jié)目列表對(duì)應(yīng)的節(jié)目訂閱列表中刪除該用戶(hù)的訂閱,然后關(guān)閉和該客戶(hù)的連接,釋放該會(huì)話資源。
圖1中的負(fù)載均衡器可按實(shí)際需要采用專(zhuān)業(yè)的第三方廠商提供的負(fù)載均衡(Load Balance)設(shè)備,例如思杰(Citrix)的NetScaler,它在一個(gè)簡(jiǎn)便易用的平臺(tái)上結(jié)合了高速負(fù)載均衡和內(nèi)容交換、數(shù)據(jù)壓縮、內(nèi)容緩存、SSL加速、應(yīng)用流可視性和強(qiáng)大的應(yīng)用防火墻。在本發(fā)明的直播系統(tǒng)中,負(fù)載均衡器可以分發(fā)高并發(fā)的請(qǐng)求給中心控制服務(wù)器集群中的各個(gè)服務(wù)器,中心控制服務(wù)器的具體數(shù)量可根據(jù)實(shí)際情況進(jìn)行擴(kuò)展部署。
下面給出了客戶(hù)端與服務(wù)器之間數(shù)據(jù)通訊的主要流程,從這些流程能看出各種服務(wù)器之間是如何進(jìn)行數(shù)據(jù)交互和協(xié)同工作的。如圖2所示,網(wǎng)絡(luò)視頻直播系統(tǒng)交互流程包含了流媒體服務(wù)器注冊(cè)、主播客戶(hù)端登錄認(rèn)證并啟動(dòng)直播、觀看客戶(hù)端請(qǐng)求觀看直播節(jié)目這3個(gè)主要流程。
(1)流媒體服務(wù)器注冊(cè)流程:包括第①、②和③步。
①、流媒體源服務(wù)器啟動(dòng)后,將自己的基本信息發(fā)送給中心控制服務(wù)器進(jìn)行注冊(cè)登記,成功后中心控制服務(wù)器標(biāo)注該流媒體源服務(wù)器準(zhǔn)備就緒;
②、流媒體發(fā)布服務(wù)器啟動(dòng)后,將自己的基本信息發(fā)送給中心控制服務(wù)器進(jìn)行注冊(cè)登記,成功后中心控制服務(wù)器標(biāo)注該流媒體發(fā)布服務(wù)器準(zhǔn)備就緒;
③、流媒體邊緣服務(wù)器啟動(dòng)后,將自己的基本信息發(fā)送給邊緣控制服務(wù)器進(jìn)行注冊(cè)登記,成功后邊緣控制服務(wù)器標(biāo)注該流媒體發(fā)布服務(wù)器準(zhǔn)備就緒。
(2)主播客戶(hù)端登錄、開(kāi)啟直播流程:包括第④、⑤和⑥步。
④、主播客戶(hù)端將用戶(hù)名和密碼信息發(fā)送給中心控制服務(wù)器;
⑤、中心控制服務(wù)器驗(yàn)證用戶(hù)名和密碼通過(guò)后,會(huì)給主播客戶(hù)端分配并返回一個(gè)流媒體源服務(wù)器的地址和端口;
⑥、主播客戶(hù)端對(duì)中心控制服務(wù)器返回的流媒體源服務(wù)器地址和端口請(qǐng)求連接,RTMP連接建立后便開(kāi)始推送直播節(jié)目的多媒體流數(shù)據(jù)。
(3)觀看客戶(hù)端請(qǐng)求觀看直播節(jié)目的流程:包括第⑦、⑧、⑨、⑩、和步。
⑦、觀看客戶(hù)端向邊緣控制服務(wù)器請(qǐng)求可連接的流媒體邊緣服務(wù)器;
⑧、邊緣控制服務(wù)器將合適的流媒體邊緣服務(wù)器地址和端口返回給觀看客戶(hù)端;
⑨、觀看客戶(hù)端根據(jù)地址和端口向流媒體邊緣服務(wù)器請(qǐng)求直播節(jié)目;
⑩、流媒體邊緣服務(wù)器接收到節(jié)目請(qǐng)求后,查詢(xún)?cè)摴?jié)目是否已被本服務(wù)器轉(zhuǎn)發(fā),是則直接跳到第步,否則,向中心控制服務(wù)器請(qǐng)求可連接的流媒體發(fā)布服務(wù)器;
中心控制服務(wù)器將合適的流媒體發(fā)布服務(wù)器地址和端口返回給流媒體邊緣服務(wù)器;
流媒體邊緣服務(wù)器根據(jù)地址和端口向流媒體發(fā)布服務(wù)器請(qǐng)求直播節(jié)目;
流媒體發(fā)布服務(wù)器接收到節(jié)目請(qǐng)求后,查詢(xún)?cè)摴?jié)目是否已被本服務(wù)器轉(zhuǎn)發(fā),是則直接跳到第步,否則,向中心控制服務(wù)器請(qǐng)求直播節(jié)目源所在的流媒體源服務(wù)器;
中心控制服務(wù)器將正確的流媒體源服務(wù)器地址和端口返回給流媒體發(fā)布服務(wù)器;
流媒體發(fā)布服務(wù)器根據(jù)地址和端口向流媒體源服務(wù)器請(qǐng)求直播節(jié)目;
流媒體源服務(wù)器接收到節(jié)目請(qǐng)求后,將直播節(jié)目的多媒體流轉(zhuǎn)發(fā)給流媒體發(fā)布服務(wù)器;
流媒體發(fā)布服務(wù)器將接收的直播節(jié)目多媒體流轉(zhuǎn)發(fā)給流媒體邊緣服務(wù)器;
流媒體邊緣服務(wù)器將接收的直播節(jié)目多媒體流轉(zhuǎn)發(fā)給觀看客戶(hù)端。
上述對(duì)實(shí)施例的描述是為便于本技術(shù)領(lǐng)域的普通技術(shù)人員能理解和應(yīng)用本發(fā)明。熟悉本領(lǐng)域技術(shù)的人員顯然可以容易地對(duì)上述實(shí)施例做出各種修改,并把在此說(shuō)明的一般原理應(yīng)用到其他實(shí)施例中而不必經(jīng)過(guò)創(chuàng)造性的勞動(dòng)。因此,本發(fā)明不限于上述實(shí)施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的揭示,對(duì)于本發(fā)明做出的改進(jìn)和修改都應(yīng)該在本發(fā)明的保護(hù)范圍之內(nèi)。