專利名稱:在媒體分發(fā)網(wǎng)絡(luò)中實(shí)現(xiàn)視頻直播的系統(tǒng)、方法和客戶端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在媒體分發(fā)網(wǎng)絡(luò)中傳輸視頻的技術(shù),特別涉及一種在媒體分發(fā)網(wǎng)絡(luò)中實(shí)現(xiàn)視頻直播的系統(tǒng)、方法和客戶端。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,用戶在使用網(wǎng)絡(luò)時(shí)對(duì)網(wǎng)站的瀏覽速度和效果更加重視,但由于用戶數(shù)量激增,網(wǎng)絡(luò)訪問路徑過長(zhǎng),從而使用戶的訪問質(zhì)量受到嚴(yán)重影響。特別是當(dāng)用戶與網(wǎng)站之間的鏈路被突發(fā)的大流量數(shù)據(jù)擁塞時(shí),對(duì)于異地互聯(lián)網(wǎng)用戶急速增加的地區(qū)來說,訪問質(zhì)量不良更是一個(gè)急待解決的問題。如何才能讓各地的用戶都能夠進(jìn)行高質(zhì)量的訪問,并盡量減少由此而產(chǎn)生的費(fèi)用和網(wǎng)站管理壓力呢??jī)?nèi)容分發(fā)網(wǎng)絡(luò)(CDN,Content DeliveryNetwork)出現(xiàn)了。
CDN通過在英特網(wǎng)中增加一層網(wǎng)絡(luò)架構(gòu),將網(wǎng)站的內(nèi)容從中心節(jié)點(diǎn)發(fā)布到最接近用戶的邊緣節(jié)點(diǎn),使用戶可以就近取得所需的內(nèi)容,提高用戶訪問網(wǎng)站的響應(yīng)速度。因此,CDN可以明顯提高英特網(wǎng)中信息流動(dòng)的效率,從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小、用戶訪問量大、網(wǎng)站所在站點(diǎn)分布不均等問題,提高用戶訪問網(wǎng)站的響應(yīng)速度。
由于網(wǎng)絡(luò)應(yīng)用的不斷出現(xiàn),用戶對(duì)多媒體內(nèi)容的需求也不斷增加,比如視頻點(diǎn)播和視頻直播等。CDN相關(guān)技術(shù)也逐漸被運(yùn)用到了視頻內(nèi)容的分發(fā)上,產(chǎn)生了專門用于傳輸多媒體內(nèi)容的媒體分發(fā)網(wǎng)絡(luò)(MDN,Media DeliveryNetwork)。由于視頻傳輸具有實(shí)時(shí)性和大容量的特點(diǎn),通過將視頻內(nèi)容分布到靠近用戶的邊緣節(jié)點(diǎn)上,可以為用戶提供更好的播放質(zhì)量,同時(shí)又能大大降低對(duì)骨干網(wǎng)絡(luò)的沖擊。
圖1為現(xiàn)有技術(shù)MDN的結(jié)構(gòu)示意圖,包括中心節(jié)點(diǎn)以及通過承載網(wǎng)與中心節(jié)點(diǎn)交互的邊緣節(jié)點(diǎn)。在中心節(jié)點(diǎn)中,包括全局負(fù)載均衡器(GSLB,Globle Service Load Balance)、媒體管理器(MM,Media Mangaer)和媒體服務(wù)器(MS,Media Server);在邊緣節(jié)點(diǎn)中,包括本地負(fù)載均衡器(SLB,Service Load Balance)、MM和MS。其中,GSLB根據(jù)用戶對(duì)媒體內(nèi)容的請(qǐng)求將媒體內(nèi)容調(diào)度到靠近用戶的邊緣節(jié)點(diǎn)上;SLB負(fù)責(zé)本地用戶的媒體內(nèi)容請(qǐng)求路由和負(fù)載平衡,根據(jù)媒體內(nèi)容分發(fā)和設(shè)備負(fù)載情況選擇最優(yōu)MS為用戶提供服務(wù);MM,通過PULL和PUSH技術(shù)進(jìn)行媒體內(nèi)容的分發(fā),在中心節(jié)點(diǎn)和邊緣節(jié)點(diǎn)之間、邊緣節(jié)點(diǎn)和邊緣節(jié)點(diǎn)之間以及邊緣節(jié)點(diǎn)內(nèi)的多個(gè)MS之間進(jìn)行。
在MDN中,用戶通過點(diǎn)擊中心節(jié)點(diǎn)上的直播統(tǒng)一資源定位(URL,Universal Resource Locator)來啟動(dòng)直播流程,這個(gè)URL請(qǐng)求會(huì)被交給中心節(jié)點(diǎn)的GSLB來處理,GSLB通過進(jìn)一步調(diào)度把該請(qǐng)求重定向到某個(gè)邊緣節(jié)點(diǎn)上,邊緣節(jié)點(diǎn)上的SLB通過MM最終再將該請(qǐng)求重定向到某個(gè)MS上。調(diào)度的原則主要基于地理位置就近和負(fù)載狀況。最終提供服務(wù)的MS為用戶提供單播視頻流數(shù)據(jù)。
在目前的MDN中,用戶對(duì)視頻內(nèi)容的請(qǐng)求被重定向到邊緣節(jié)點(diǎn)后,就直接由邊緣節(jié)點(diǎn)上的MS來提供單播視頻流數(shù)據(jù)為用戶服務(wù),但是在這種方案中,對(duì)于視頻點(diǎn)播內(nèi)容和視頻直播內(nèi)容對(duì)MDN的負(fù)荷是相同的,MDN要為每個(gè)請(qǐng)求維護(hù)一個(gè)數(shù)據(jù)傳輸通道。
由于是由MS為用戶提供單播視頻流數(shù)據(jù),而邊緣節(jié)點(diǎn)上MS的帶寬是確定的,因此能服務(wù)的用戶數(shù)量是非常有限的,要想滿足用戶的需求,邊緣節(jié)點(diǎn)的能力要隨用戶數(shù)量的增加作線性增長(zhǎng),因此對(duì)邊緣節(jié)點(diǎn)的投資龐大。
目前,還可以提供一種方案為用戶提供視頻數(shù)據(jù)流,以下進(jìn)行具體敘述。
由于點(diǎn)播和直播的差異性,對(duì)兩種視頻流數(shù)據(jù)需求作區(qū)分點(diǎn)播還是以單播方式為用戶提供媒體流;而直播由于所有用戶需要的為相同時(shí)間點(diǎn)的內(nèi)容,因此可以用網(wǎng)際協(xié)議(IP,Internet Protocol)層組播的方式來提供視頻流數(shù)據(jù)。在這種方案中,收看同一個(gè)直播的所有用戶都加入一個(gè)組播組中,由視頻流數(shù)據(jù)要經(jīng)過的網(wǎng)絡(luò)設(shè)備(包括路由器和交換機(jī)等組成網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的網(wǎng)元)來分發(fā)數(shù)據(jù),因此MS只需要傳輸一路視頻流數(shù)據(jù)就可以了。應(yīng)用這種技術(shù)來提供直播對(duì)MS的負(fù)荷是最小的,也是最理想的狀態(tài)。
但是,這種方案也存在著缺點(diǎn)由于組播方式需要網(wǎng)絡(luò)底層的支持,而現(xiàn)有網(wǎng)絡(luò)的異構(gòu)性對(duì)組播的支持十分有限,因此在現(xiàn)有網(wǎng)絡(luò)上開展組播還需要繼續(xù)研究,這個(gè)方案適合于新建的網(wǎng)絡(luò),從開始規(guī)劃時(shí)就考慮各個(gè)網(wǎng)絡(luò)設(shè)備對(duì)組播的支持。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種在MDN中實(shí)現(xiàn)視頻直播的系統(tǒng),該系統(tǒng)能夠提高M(jìn)DN的負(fù)荷率,從而使MDN具有更好的擴(kuò)張性,使得MDN能更好地支持用戶請(qǐng)求視頻直播數(shù)據(jù)的增長(zhǎng)。
本發(fā)明還提供一種在MDN中實(shí)現(xiàn)視頻直播的方法,該方法能夠提高M(jìn)DN的負(fù)荷率,從而使MDN具有更好的擴(kuò)張性,使得MDN能更好地支持用戶請(qǐng)求視頻直播數(shù)據(jù)的增長(zhǎng)。
本發(fā)明還提供一種在MDN中實(shí)現(xiàn)視頻直播的客戶端,該客戶端能夠采用P2P方式獲取到視頻直播數(shù)據(jù)。
根據(jù)上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種在媒體分發(fā)網(wǎng)絡(luò)MDN中實(shí)現(xiàn)視頻直播的系統(tǒng),該系統(tǒng)包括MDN,該系統(tǒng)包括點(diǎn)對(duì)點(diǎn)客戶端、在MDN的邊緣節(jié)點(diǎn)中包括節(jié)點(diǎn)網(wǎng)關(guān)控制器和點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),其中,節(jié)點(diǎn)網(wǎng)關(guān)控制器,用于接收由全局負(fù)載均衡器GSLB重定向到本地負(fù)載均衡器SLB再重定向到自身的直播頻道請(qǐng)求,根據(jù)存儲(chǔ)的由其他點(diǎn)對(duì)點(diǎn)客戶端或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的直播頻道信息確定接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的其他點(diǎn)對(duì)點(diǎn)客戶端或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),將所確定其他點(diǎn)對(duì)點(diǎn)客戶端或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的地址信息發(fā)送給點(diǎn)對(duì)點(diǎn)客戶端,向點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送建立點(diǎn)對(duì)點(diǎn)直播點(diǎn)的命令;點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),用于根據(jù)接收到節(jié)點(diǎn)網(wǎng)關(guān)控制器發(fā)送的點(diǎn)對(duì)點(diǎn)直播點(diǎn)命令建立點(diǎn)對(duì)點(diǎn)直播點(diǎn),從具有直播頻道請(qǐng)求中直播頻道的媒體服務(wù)器MS上接收直播頻道的視頻直播流數(shù)據(jù)并緩存為視頻直播數(shù)據(jù)后,將緩存后的該視頻直播數(shù)據(jù)發(fā)送給與自身建立連接的點(diǎn)對(duì)點(diǎn)客戶端,向節(jié)點(diǎn)網(wǎng)關(guān)控制器發(fā)送直播頻道信息;點(diǎn)對(duì)點(diǎn)客戶端,用于向GSLB發(fā)起直播頻道請(qǐng)求,根據(jù)從節(jié)點(diǎn)網(wǎng)關(guān)控制器接收到的所確定其他點(diǎn)對(duì)點(diǎn)客戶端或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的地址信息中選取至少一個(gè)建立連接,從所建立連接的點(diǎn)對(duì)點(diǎn)客戶端上或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)上接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)。
所述點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)還用于在節(jié)點(diǎn)網(wǎng)關(guān)控制器的指示下刪除點(diǎn)對(duì)點(diǎn)直播點(diǎn);所述節(jié)點(diǎn)網(wǎng)關(guān)控制器還用于向點(diǎn)對(duì)點(diǎn)網(wǎng)關(guān)媒體服務(wù)網(wǎng)關(guān)指示刪除點(diǎn)對(duì)點(diǎn)直播點(diǎn)。
所述點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)還包括點(diǎn)對(duì)點(diǎn)直播點(diǎn)管理模塊、點(diǎn)對(duì)點(diǎn)直播服務(wù)模塊和網(wǎng)關(guān)信息報(bào)告模塊,其中,點(diǎn)對(duì)點(diǎn)直播點(diǎn)管理模塊用于在節(jié)點(diǎn)網(wǎng)關(guān)控制器的指示下建立或刪除點(diǎn)對(duì)點(diǎn)直播點(diǎn);點(diǎn)對(duì)點(diǎn)直播服務(wù)模塊用于與點(diǎn)對(duì)點(diǎn)客戶端建立連接,將緩存后的該視頻直播數(shù)據(jù)發(fā)送給與自身建立連接的點(diǎn)對(duì)點(diǎn)客戶端;網(wǎng)關(guān)信息報(bào)告模塊用于向節(jié)點(diǎn)網(wǎng)關(guān)控制器上報(bào)直播頻道信息。
所述節(jié)點(diǎn)網(wǎng)關(guān)控制器還包括點(diǎn)對(duì)點(diǎn)客戶端通訊模塊、點(diǎn)對(duì)點(diǎn)網(wǎng)關(guān)管理模塊和數(shù)據(jù)記錄模塊,其中,點(diǎn)對(duì)點(diǎn)客戶端通訊模塊,用于接收重定向到自身的直播頻道請(qǐng)求,根據(jù)從數(shù)據(jù)記錄模塊存儲(chǔ)的由其他點(diǎn)對(duì)點(diǎn)客戶端發(fā)送的直播頻道信息確定接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的其他點(diǎn)對(duì)點(diǎn)客戶端,將所確定其他點(diǎn)對(duì)點(diǎn)客戶端的地址信息發(fā)送給點(diǎn)對(duì)點(diǎn)客戶端,接收其他點(diǎn)對(duì)點(diǎn)客戶端發(fā)送的直播頻道信息且發(fā)送給數(shù)據(jù)記錄模塊存儲(chǔ);點(diǎn)對(duì)點(diǎn)網(wǎng)關(guān)管理模塊,用于接收重定向到自身的直播頻道請(qǐng)求,根據(jù)從數(shù)據(jù)記錄模塊存儲(chǔ)的由點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的直播頻道信息確定接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)網(wǎng)關(guān)媒體服務(wù)網(wǎng)關(guān),將所確定點(diǎn)對(duì)點(diǎn)網(wǎng)關(guān)媒體服務(wù)網(wǎng)發(fā)送給點(diǎn)對(duì)點(diǎn)客戶端,接收點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的直播頻道信息且發(fā)送給數(shù)據(jù)記錄模塊存儲(chǔ),指示點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)建立或刪除點(diǎn)對(duì)點(diǎn)直播點(diǎn)。
所述點(diǎn)對(duì)點(diǎn)客戶端包括請(qǐng)求控制模塊、點(diǎn)對(duì)點(diǎn)傳輸模塊和播放模塊,其中,請(qǐng)求控制模塊用于向GSLB發(fā)起直播頻道請(qǐng)求、以及與GSLB、SLB和節(jié)點(diǎn)網(wǎng)關(guān)控制器實(shí)現(xiàn)消息交互;點(diǎn)對(duì)點(diǎn)傳輸模塊用于所確定其他點(diǎn)對(duì)點(diǎn)客戶端或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的地址信息中選取至少一個(gè)建立連接,接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)發(fā)送給播放模塊;播放模塊,用于對(duì)接收到的視頻直播數(shù)據(jù)進(jìn)行解碼,顯示給用戶。
所述存儲(chǔ)的由點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的直播頻道信息為直播頻道標(biāo)識(shí)、點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的網(wǎng)際協(xié)議地址和端口號(hào)以及熱度。
所述存儲(chǔ)的由點(diǎn)對(duì)點(diǎn)客戶端發(fā)送的直播頻道信息為直播頻道標(biāo)識(shí)、點(diǎn)對(duì)點(diǎn)客戶端的網(wǎng)際協(xié)議地址和端口號(hào)以及時(shí)間戳。
一種在MDN中實(shí)現(xiàn)視頻直播的方法,在MDN的邊緣節(jié)點(diǎn)中設(shè)置存儲(chǔ)直播頻道信息的節(jié)點(diǎn)網(wǎng)關(guān)控制器,該方法還包括A、點(diǎn)對(duì)點(diǎn)客戶端向GSLB發(fā)起直播頻道請(qǐng)求,該請(qǐng)求被重定向到邊緣節(jié)點(diǎn)中的SLB,再被重定向到節(jié)點(diǎn)網(wǎng)關(guān)控制器;B、節(jié)點(diǎn)網(wǎng)關(guān)控制器根據(jù)存儲(chǔ)的直播頻道信息確定當(dāng)前接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的其他點(diǎn)對(duì)點(diǎn)客戶端或/和建立的緩存有直播頻道傳送的視頻直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),將所確定的其他點(diǎn)對(duì)點(diǎn)客戶端或/和點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的地址信息發(fā)送給點(diǎn)對(duì)點(diǎn)客戶端;C、點(diǎn)對(duì)點(diǎn)客戶端從接收到地址信息中選取至少一個(gè)進(jìn)行連接后,接收由所連接的其他點(diǎn)對(duì)點(diǎn)客戶端或/和點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)。
在步驟B之前,該方法還包括;節(jié)點(diǎn)網(wǎng)關(guān)控制器根據(jù)存儲(chǔ)的直播頻道信息判斷是否有當(dāng)前接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)或其他點(diǎn)對(duì)點(diǎn)客戶端,如果是,則執(zhí)行步驟B;否則,轉(zhuǎn)入步驟B1;B1、節(jié)點(diǎn)網(wǎng)關(guān)控制器根據(jù)存儲(chǔ)的直播頻道信息選取本邊緣節(jié)點(diǎn)中的一個(gè)點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),向該點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送建立該請(qǐng)求中直播頻道的點(diǎn)對(duì)點(diǎn)直播點(diǎn)命令;B2、該點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)向SLB發(fā)送獲取該直播頻道傳送的視頻直播數(shù)據(jù)的請(qǐng)求,SLB重定向該請(qǐng)求到具有該直播頻道的MS上,MS向該點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送該直播頻道傳送的視頻直播流數(shù)據(jù),該點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)將視頻直播流數(shù)據(jù)以分片數(shù)據(jù)的結(jié)構(gòu)緩存為視頻直播數(shù)據(jù)后,向節(jié)點(diǎn)網(wǎng)關(guān)控制器發(fā)送直播頻道信息,然后執(zhí)行步驟B。
該方法還包括節(jié)點(diǎn)網(wǎng)關(guān)控制器根據(jù)存儲(chǔ)的直播頻道信息判斷點(diǎn)對(duì)點(diǎn)客戶端是否已經(jīng)退出,如果是,則向提供該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送刪除命令;該點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)根據(jù)該命令停止從MS接收該請(qǐng)求中直播頻道傳送的視頻直播流數(shù)據(jù),等待當(dāng)前給點(diǎn)對(duì)點(diǎn)客戶端傳輸?shù)囊曨l直播數(shù)據(jù)完成后,刪除所緩存的視頻直播數(shù)據(jù)。
所述存儲(chǔ)直播頻道信息為具有直播頻道標(biāo)識(shí)、具有對(duì)應(yīng)直播頻道標(biāo)識(shí)的直播頻道傳輸?shù)囊曨l直播數(shù)據(jù)的其他點(diǎn)對(duì)點(diǎn)客戶端的端口號(hào)、網(wǎng)際協(xié)議地址和時(shí)間戳、或/和具有對(duì)應(yīng)直播頻道標(biāo)識(shí)的直播頻道傳輸?shù)囊曨l直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的端口號(hào)、網(wǎng)際協(xié)議地址和熱度。
在步驟A所述該請(qǐng)求被重定向到邊緣節(jié)點(diǎn)中的SLB之后,該方法還包括SLB根據(jù)該請(qǐng)求確定是否是點(diǎn)對(duì)點(diǎn)請(qǐng)求,如果是,執(zhí)行步驟A的后續(xù)步驟。
所述確定該請(qǐng)求是否為點(diǎn)對(duì)點(diǎn)請(qǐng)求的過程為判斷該請(qǐng)求在統(tǒng)一資源標(biāo)識(shí)URL是否設(shè)置了點(diǎn)對(duì)點(diǎn)請(qǐng)求標(biāo)識(shí),如果是,則是點(diǎn)對(duì)點(diǎn)請(qǐng)求。。
所述確定該請(qǐng)求是否為點(diǎn)對(duì)點(diǎn)請(qǐng)求的過程為判斷該請(qǐng)求在RTSP/HTTP應(yīng)用層協(xié)議中是否將用戶代理參數(shù)字段設(shè)置了設(shè)定的表示點(diǎn)對(duì)點(diǎn)請(qǐng)求的值,如果是,則是點(diǎn)對(duì)點(diǎn)請(qǐng)求。
一種在MDN中實(shí)現(xiàn)視頻直播的客戶端,該客戶端包括請(qǐng)求控制模塊、點(diǎn)對(duì)點(diǎn)傳輸模塊和播放模塊,其中,請(qǐng)求控制模塊,用于向GSLB發(fā)起直播頻道的請(qǐng)求,GSLB將該請(qǐng)求重定向到SLB,SLB再將該請(qǐng)求重定向到節(jié)點(diǎn)網(wǎng)關(guān)控制器,由節(jié)點(diǎn)網(wǎng)關(guān)控制器完成該請(qǐng)求以及后續(xù)的與節(jié)點(diǎn)網(wǎng)關(guān)控制器的定期消息交互,從節(jié)點(diǎn)網(wǎng)關(guān)控制器獲取點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)和其他點(diǎn)對(duì)點(diǎn)客戶端的地址信息后,發(fā)送給點(diǎn)對(duì)點(diǎn)傳輸模塊;點(diǎn)對(duì)點(diǎn)傳輸模塊,用于根據(jù)從請(qǐng)求控制模塊得到的地址信息從點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)或其他點(diǎn)對(duì)點(diǎn)客戶端獲取視頻直播數(shù)據(jù),發(fā)送給播放模塊;播放模塊,用于對(duì)從點(diǎn)對(duì)點(diǎn)傳輸模塊接收到的視頻直播數(shù)據(jù)進(jìn)行解碼,顯示給用戶。
從上述方案可以看出,本發(fā)明在MDN的邊緣節(jié)點(diǎn)中設(shè)置存儲(chǔ)有直播頻道信息的節(jié)點(diǎn)網(wǎng)關(guān)控制器(Tracker),當(dāng)接收到由P2P client發(fā)起的被重定向到自身的直播頻道請(qǐng)求后,根據(jù)存儲(chǔ)的直播頻道信息確定當(dāng)前具有該直播頻道傳送的視頻直播數(shù)據(jù)的其他P2P client或/和在本邊緣節(jié)點(diǎn)設(shè)置的點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)(P2P MSGW),將這些設(shè)備的地址信息發(fā)送給P2P client,P2P client根據(jù)接收到地址信息選取至少一個(gè)建立P2P連接,獲取該直播頻道傳送的視頻直播數(shù)據(jù)。由于本發(fā)明通過P2P模式為P2P client提供直播頻道傳送的視頻直播數(shù)據(jù),提供者可以為其他P2P client或/和在本邊緣節(jié)點(diǎn)設(shè)置的P2P MSGW,而不像現(xiàn)有技術(shù)那樣必須由本邊緣節(jié)點(diǎn)中的MS通過超文本傳輸協(xié)議(HTTP,HyperTextTransfer Protocol)或請(qǐng)求發(fā)送協(xié)議(RTSP,Request to send Protocol)提供視頻直播流數(shù)據(jù),從而使MDN具有更好的擴(kuò)張性,使得MDN能更好地支持用戶請(qǐng)求視頻直播數(shù)據(jù)的增長(zhǎng)。
圖1為現(xiàn)有技術(shù)MDN的結(jié)構(gòu)示意圖;圖2為本發(fā)明在MDN中實(shí)現(xiàn)視頻直播的系統(tǒng)示意圖;圖3為在MDN中實(shí)現(xiàn)視頻直播的模塊結(jié)構(gòu)示意圖;圖4為頻道節(jié)點(diǎn)數(shù)據(jù)模塊的結(jié)構(gòu)示意圖;圖5為P2P網(wǎng)關(guān)數(shù)據(jù)模塊的結(jié)構(gòu)示意圖;圖6為P2P直播點(diǎn)管理模塊解析視頻直播流數(shù)據(jù)且緩存視頻直播分片數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)示意圖;圖7為在MDN中實(shí)現(xiàn)視頻直播的方法流程圖。
具體實(shí)施例方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下舉具體實(shí)施例并參照附圖,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)的說明。
通過現(xiàn)有技術(shù)的MDN來傳輸視頻直播流數(shù)據(jù),用戶可以就近從最近的邊緣節(jié)點(diǎn)獲取視頻直播流數(shù)據(jù)。但是受限于MDN中邊緣節(jié)點(diǎn)能力的限制,支持的最大并發(fā)用戶的數(shù)量是確定的。由于在同一時(shí)間內(nèi)用戶發(fā)起的直播頻道的請(qǐng)求的數(shù)目具有很大的不確定性,即使增加邊緣節(jié)點(diǎn)的能力也不可能滿足在同一時(shí)間內(nèi)用戶發(fā)起的直播頻道請(qǐng)求的數(shù)目突發(fā)性增長(zhǎng)。因此,一旦在同一個(gè)時(shí)間內(nèi)用戶發(fā)起的直播頻道請(qǐng)求的數(shù)目超過所屬邊緣節(jié)點(diǎn)的能力,該邊緣節(jié)點(diǎn)只能拒絕服務(wù)。即使通過調(diào)度由中心節(jié)點(diǎn)或其他邊緣節(jié)點(diǎn)來提供視頻直播服務(wù),也沒有解決對(duì)整個(gè)MDN的負(fù)荷過大問題,而且對(duì)骨干網(wǎng)絡(luò)也造成了很大壓力。
根據(jù)上述分析,本發(fā)明利用用戶使用客戶端的能力在所屬邊緣節(jié)點(diǎn)的范圍內(nèi)通過點(diǎn)對(duì)點(diǎn)協(xié)議(P2P)互相傳輸視頻直播數(shù)據(jù),從而使MDN具有更好的擴(kuò)張性,使得MDN更好地支持用戶發(fā)起的直播頻道請(qǐng)求的數(shù)目突發(fā)性增長(zhǎng)。
為了實(shí)現(xiàn)用戶所使用的客戶端之間的視頻直播數(shù)據(jù)的相互傳輸,在MDN現(xiàn)有的邊緣節(jié)點(diǎn)中增加一個(gè)tracker以及至少一個(gè)P2P MSGW。圖2為本發(fā)明在MDN中實(shí)現(xiàn)視頻直播的系統(tǒng)示意圖,該系統(tǒng)包括中心節(jié)點(diǎn)和通過承載網(wǎng)與中心節(jié)點(diǎn)相連接的至少一個(gè)邊緣節(jié)點(diǎn)。在中心節(jié)點(diǎn)中,包括GSLB、MM和MS;在邊緣節(jié)點(diǎn)中,除了包括SLB、MM和MS之外,還包括本發(fā)明提供的Tracker和至少一個(gè)P2P MSGW,其中,Tracker分別與SLB、點(diǎn)對(duì)點(diǎn)客戶端(P2P client)和P2P MSGW進(jìn)行消息交互相連接,P2P MSGW分別與P2P client、Tracker和MS進(jìn)行消息交互或視頻直播數(shù)據(jù)的傳輸。
Tracker,用于接收依次由GSLB重定向到SLB再重定向到自身的直播頻道請(qǐng)求,根據(jù)存儲(chǔ)的直播頻道信息確定接收該直播頻道傳送的視頻直播數(shù)據(jù)的P2P MSGW或/和其他P2P client,將所確定P2P MSGW或/和其他P2P client的地址信息發(fā)送給P2P client。
P2P MSGW,用于在Tracker的指示下建立或刪除P2P直播點(diǎn),從具有直播頻道傳送的視頻直播流數(shù)據(jù)的MS上接收該視頻直播數(shù)據(jù)并緩存為視頻直播數(shù)據(jù)后,將緩存后的該視頻直播數(shù)據(jù)發(fā)送給與自身連接的P2P client。
P2P client,用于向GSLB發(fā)起直播頻道的請(qǐng)求,根據(jù)從Tracker接收到的所確定P2P MSGW或/和其他P2P client的地址信息中選取至少一個(gè)設(shè)備建立連接,接收該直播頻道傳送的視頻直播數(shù)據(jù)。
在本發(fā)明中,在Tracker中存儲(chǔ)有直播頻道信息,該信息是當(dāng)前緩存有視頻直播數(shù)據(jù)的P2P MSGW或/和P2P client定期上報(bào)的。
現(xiàn)有的SLB中有HTTP/RTSP服務(wù)模塊,可以根據(jù)P2P client發(fā)送的直播頻道請(qǐng)求分別進(jìn)行HTTP重定向或RTSP重定向?,F(xiàn)有的SLB需要對(duì)P2P client的請(qǐng)求作區(qū)分,以判斷哪些請(qǐng)求仍然按照現(xiàn)有方式重定向到MS上,哪些請(qǐng)求需要重定向到Tracker上。例如,P2P client請(qǐng)求的是rtsp//202.56.45.53/PhenixNews?mode=p2p,其中202.56.45.53是SLB的IP地址,SLB的HTTP/RTSP服務(wù)模塊根據(jù)mode=p2p屬性來判斷該請(qǐng)求需要用P2P模式來滿足,即將該請(qǐng)求重定向到Tracker上。
以下詳細(xì)敘述Tracker、P2P MSGW和P2P client是如何進(jìn)行消息交互和傳輸視頻直播數(shù)據(jù)的。
圖3為在MDN中實(shí)現(xiàn)視頻直播的模塊結(jié)構(gòu)示意圖,如圖所示Tracker由P2P客戶端通訊模塊、P2P網(wǎng)關(guān)管理模塊和數(shù)據(jù)記錄模塊這3個(gè)模塊組成。
數(shù)據(jù)記錄模塊中包括頻道節(jié)點(diǎn)數(shù)據(jù)模塊和P2P網(wǎng)關(guān)數(shù)據(jù)模塊,其中,頻道節(jié)點(diǎn)數(shù)據(jù)模塊的結(jié)構(gòu)示意圖如圖4所示,P2P網(wǎng)關(guān)數(shù)據(jù)模塊的結(jié)構(gòu)示意圖如圖5所示。在頻道節(jié)點(diǎn)數(shù)據(jù)模塊中包括直播頻道標(biāo)識(shí)(ID),用于唯一標(biāo)志直播頻道,可以是直播頻道的名稱、直播頻道的唯一編號(hào)等;P2P MSGW信息,至少一條P2P MSGW記錄,每條P2P MSGW記錄包括P2P MSGW的IP地址、P2P連接端口號(hào)和熱度,即P2P MSGW定期上報(bào)當(dāng)前直接從自身獲得直播的P2P client數(shù)量;P2P client信息,0條或多條客戶端記錄,每條記錄包括P2P client的IP地址、端口信息和時(shí)間戳。在P2P網(wǎng)關(guān)數(shù)據(jù)模塊中包括網(wǎng)關(guān)IP、網(wǎng)關(guān)控制端口、中央處理器(CPU)利用率、可用內(nèi)存大小和可用帶寬大小,其中,前面兩項(xiàng)用于Tracker和P2P MSGW進(jìn)行通訊,發(fā)送控制消息,后面三項(xiàng)用于Tracker進(jìn)行負(fù)載均衡。
P2P客戶端通訊模塊的主要功能是使收看同一頻道的P2P client之間互相發(fā)現(xiàn),從而互相傳輸視頻直播數(shù)據(jù)。P2P client對(duì)某個(gè)直播頻道的請(qǐng)求被重定向到Tracker后,由該模塊讀取頻道節(jié)點(diǎn)數(shù)據(jù)模塊中存儲(chǔ)的該直播頻道的信息,返回給P2P client該直播頻道的限定數(shù)量的P2P client信息和P2P MSGW信息。如果限定數(shù)量太多,加重Tracker負(fù)擔(dān);如果限定數(shù)量太少,有可能不滿足P2P client連接的需要,從而導(dǎo)致客戶端經(jīng)常向Tracker發(fā)送直播頻道更新消息。另外,在用戶通過P2P client接收視頻直播數(shù)據(jù)時(shí),也會(huì)向P2P客戶端通訊模塊定期發(fā)送直播頻道更新消息,P2P客戶端通訊模塊也會(huì)定期和Tracker進(jìn)行信息交互,獲取新的P2P MSGW和其他P2P client的地址信息。同時(shí),Tracker要更新該P(yáng)2P client的相關(guān)信息,即在直播頻道標(biāo)識(shí)ID存儲(chǔ)該P(yáng)2P client當(dāng)前接收視頻直播數(shù)據(jù)的直播頻道、在P2P client信息中存儲(chǔ)該P(yáng)2P client的IP地址、端口信息和時(shí)間戳,以及將這兩個(gè)數(shù)據(jù)項(xiàng)相關(guān)聯(lián)。在P2P client信息中存儲(chǔ)該P(yáng)2P client的時(shí)間戳是該P(yáng)2P client和Tracker進(jìn)行通訊的時(shí)間,包括第一次發(fā)起的,即通過SLB重定向到Tracker的時(shí)間或以后定期發(fā)起的直接到Tracker的更新消息的時(shí)間。設(shè)置時(shí)間戳的目的在于,P2P客戶端通訊模塊可以定期檢測(cè)時(shí)間戳,判斷是否超過所設(shè)置的時(shí)間,如果是,則確定P2P client已經(jīng)非正常推出視頻直播服務(wù),直接將該P(yáng)2P client的信息從相應(yīng)數(shù)據(jù)項(xiàng)中刪除;如果否,則再定期檢測(cè)時(shí)間戳。當(dāng)然,P2P client也可以直接向P2P客戶端通訊模塊發(fā)送請(qǐng)求,請(qǐng)求將該P(yáng)2P client的信息從相應(yīng)數(shù)據(jù)項(xiàng)中刪除,P2P客戶端通訊模塊接收到后,數(shù)據(jù)該P(yáng)2P client的信息。
P2P網(wǎng)關(guān)管理模塊的主要功能是維護(hù)P2P MSGW狀態(tài),在P2P MSGW上建立和刪除P2P直播點(diǎn)。當(dāng)P2P client對(duì)某個(gè)直播頻道的請(qǐng)求被重定向到Tracker時(shí),如果之前在所屬邊緣節(jié)點(diǎn)上沒有任何P2P client收看該直播頻道,則在頻道節(jié)點(diǎn)數(shù)據(jù)模塊中沒有相應(yīng)的存儲(chǔ)信息,這時(shí),該模塊根據(jù)數(shù)據(jù)記錄模塊的P2P網(wǎng)關(guān)數(shù)據(jù)模塊的負(fù)載信息選擇一個(gè)P2P MSGW,指示其建立P2P直播點(diǎn)后,將該P(yáng)2P MSGW的信息存儲(chǔ)在數(shù)據(jù)記錄模塊中,即直播頻道標(biāo)識(shí)ID對(duì)應(yīng)一個(gè)P2PMSGW信息和一個(gè)P2P client信息,前者包含至少一個(gè)P2P MSGW記錄,后者包含0個(gè)或多個(gè)P2P client記錄。當(dāng)P2P網(wǎng)關(guān)管理模塊檢測(cè)到當(dāng)前某個(gè)直播頻道已經(jīng)沒有P2P client在接收視頻直播數(shù)據(jù)時(shí),P2P網(wǎng)關(guān)管理模塊指示相應(yīng)的P2P MSGW刪除相應(yīng)的P2P直播點(diǎn)后,將存儲(chǔ)在數(shù)據(jù)記錄模塊中的該P(yáng)2PMSGW的信息刪除。
如圖3所示,P2P MSGW包括P2P直播點(diǎn)管理模塊、P2P直播服務(wù)模塊和網(wǎng)關(guān)信息報(bào)告模塊。
P2P直播點(diǎn)管理模塊用于根據(jù)Tracker中的P2P網(wǎng)關(guān)管理模塊指示,建立或刪除P2P直播點(diǎn)。
建立P2P直播點(diǎn)的過程為第一步,P2P直播點(diǎn)管理模塊根據(jù)Tracker發(fā)送的直播頻道URL向SLB請(qǐng)求視頻直播流數(shù)據(jù);第二步,SLB接收到該請(qǐng)求后,將該請(qǐng)求按照現(xiàn)有技術(shù)重定向到MS上,該MS有該視頻直播流數(shù)據(jù);第三步,MS接收到該請(qǐng)求后,將該視頻直播流數(shù)據(jù)通過現(xiàn)有的MMS/HTTP/RTP向P2P直播點(diǎn)管理模塊發(fā)送;第四步,P2P直播點(diǎn)管理模塊解析該視頻直播流數(shù)據(jù)且緩存視頻直播數(shù)據(jù),緩存方式如下所述;第五步,P2P直播點(diǎn)管理模塊準(zhǔn)備接受P2P client的請(qǐng)求,根據(jù)直播頻道ID和分片時(shí)間標(biāo)志提供所緩存的視頻直播數(shù)據(jù)。
在第四步中,P2P直播點(diǎn)管理模塊解析該視頻直播流數(shù)據(jù)且緩存為視頻直播數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)如圖6所示根據(jù)視頻直播流數(shù)據(jù)中的時(shí)間信息,將視頻直播流數(shù)據(jù)按照時(shí)間分片,如以1秒為單位,并且為每個(gè)分片上打上時(shí)間標(biāo)志,在本地緩存一段時(shí)間,如20秒的分片視頻直播數(shù)據(jù)。圖6中當(dāng)前正在接收到的分片數(shù)據(jù)為n,則在本地已經(jīng)緩存的分片數(shù)據(jù)為從n~n-20。
刪除P2P直播點(diǎn)的過程為第一步,P2P直播點(diǎn)管理模塊根據(jù)Tracker發(fā)送的刪除消息中的直播頻道ID,斷開與MS之間的連接,停止接收該直播頻道傳輸?shù)囊曨l直播流數(shù)據(jù);第二步,P2P直播點(diǎn)管理模塊給P2P client傳輸完當(dāng)前正在傳輸?shù)囊曨l直播數(shù)據(jù)后,拒絕為P2P client后續(xù)發(fā)送的直播頻道的請(qǐng)求;第三步,P2P直播點(diǎn)管理模塊刪除所緩存的視頻直播數(shù)據(jù)。
P2P直播服務(wù)模塊的主要功能是接受P2P client客戶端的連接,為客戶端提供所緩存的視頻直播數(shù)據(jù)。
網(wǎng)關(guān)信息報(bào)告模塊的主要功能是定期向Tracker上報(bào)已經(jīng)建立的P2P直播點(diǎn)的熱度、網(wǎng)關(guān)負(fù)載信息等數(shù)據(jù),即定期向Tracker的P2P網(wǎng)關(guān)管理模塊上報(bào),Tracker的數(shù)據(jù)記錄模塊將上報(bào)的信息存儲(chǔ)在相應(yīng)的頻道節(jié)點(diǎn)數(shù)據(jù)模塊和P2P網(wǎng)關(guān)數(shù)據(jù)模塊中的相應(yīng)數(shù)據(jù)項(xiàng)中。
如圖3所示,P2P client包括請(qǐng)求控制模塊、P2P傳輸模塊和播放模塊。
請(qǐng)求控制模塊,用于向中心節(jié)點(diǎn)的GSLB發(fā)起直播頻道的請(qǐng)求,GSLB會(huì)將該請(qǐng)求重定向到SLB,SLB再將該請(qǐng)求重定向到Tracker,由Tracker完成該請(qǐng)求以及實(shí)現(xiàn)后續(xù)的與Tracker的定期消息交互,獲取新的P2P MSGW和其他P2P client的地址信息,同時(shí),Tracker要更新該P(yáng)2P client的相關(guān)信息。
P2P傳輸模塊,采用現(xiàn)有P2P直播技術(shù)實(shí)現(xiàn),用于與P2P MSGW或其他P2P client交互并獲取視頻直播數(shù)據(jù)。
播放模塊,對(duì)接收到的視頻直播數(shù)據(jù)進(jìn)行解碼,并顯示給用戶。
本發(fā)明還提供一種在MDN中實(shí)現(xiàn)視頻直播的方法,圖7為在MDN中實(shí)現(xiàn)視頻直播的方法流程圖,預(yù)先在各個(gè)邊緣節(jié)點(diǎn)中設(shè)置存儲(chǔ)有直播頻道信息的Tracker和緩存有直播頻道傳輸?shù)囊曨l直播數(shù)據(jù)的P2P MSGW,其具體步驟為步驟700、用戶通過P2P client向中心節(jié)點(diǎn)的GSLB發(fā)起直播頻道的請(qǐng)求,該請(qǐng)求攜帶有直播頻道的URL和要求以P2P模式接收直播頻道傳送的視頻直播數(shù)據(jù)的信息。
步驟701、GSLB接收到該請(qǐng)求后,按照現(xiàn)有技術(shù)采用就近原則將該請(qǐng)求重定向到P2P client就近邊緣節(jié)點(diǎn)的SLB上。
步驟702、該SLB根據(jù)該請(qǐng)求攜帶的以P2P模式接收直播頻道傳送的視頻直播數(shù)據(jù)的信息判斷是P2P請(qǐng)求,將該請(qǐng)求采用現(xiàn)有技術(shù)重定向到同一邊緣節(jié)點(diǎn)的Tracker上。
步驟703、該Tracker根據(jù)存儲(chǔ)的直播頻道信息判斷是否有提供該請(qǐng)求指定的直播頻道的視頻直播數(shù)據(jù)的P2P MSGW或/和P2P client,如果有,轉(zhuǎn)入步驟708;如果沒有,轉(zhuǎn)入步驟704。
步驟704、該Tracker按照各個(gè)P2P MSGW負(fù)載情況選擇一個(gè)P2P MSGW,向所選擇的P2P MSGW發(fā)送建立P2P直播點(diǎn)的命令,該P(yáng)2P直播點(diǎn)為該請(qǐng)求指定的直播頻道的直播點(diǎn)。
步驟705、所選擇的P2P MSGW向本邊緣節(jié)點(diǎn)的SLB發(fā)出請(qǐng)求該直播頻道數(shù)據(jù)的請(qǐng)求,該請(qǐng)求被SLB重定向到提供該直播頻道的視頻直播流數(shù)據(jù)的MS上,MS給所選擇的P2P MSGW發(fā)送該視頻直播流數(shù)據(jù),該P(yáng)2P MSGW采用應(yīng)用層分片打包的方法緩存視頻直播數(shù)據(jù)。
步驟706、所選擇的P2P MSGW向該Tracker通知已經(jīng)建立好P2P直播點(diǎn)。
步驟707、該Tracker存儲(chǔ)該直播頻道信息。
步驟708、該Tracker返回提供該請(qǐng)求指定的直播頻道傳輸?shù)囊曨l直播數(shù)據(jù)的P2P MSGW或/和P2P client的地址信息給P2P client。
步驟709、P2P client根據(jù)接收到的P2P MSGW或/和P2P client的地址信息隨機(jī)選取至少一個(gè)與其建立連接,接收所緩存的視頻直播數(shù)據(jù)。
以下舉兩個(gè)具體實(shí)施例說明本發(fā)明。
具體實(shí)施例一第一步、現(xiàn)有的MDN中直播頻道URL為rtsp//www.aaa.com/PhenixNews,那在本系統(tǒng)中提供P2P直播的URL為p2p//www.aaa.com/PhenixNews?mode=rtsp。
第二步、用戶點(diǎn)擊網(wǎng)頁上的URL,根據(jù)”p2p//”客戶操作系統(tǒng)可以自動(dòng)打開關(guān)聯(lián)的P2P client,P2P client將URL修改為rtsp//www.aaa.com/PhenixNews?mode=p2p后發(fā)起直播頻道請(qǐng)求。
第三步、MDN將請(qǐng)求重定向到提供PhenixNews的邊緣節(jié)點(diǎn)的SLB上。
第四步、SLB根據(jù)請(qǐng)求中的URL的參數(shù)mode=p2p判斷這是一個(gè)P2P請(qǐng)求,因此重定向到本邊緣節(jié)點(diǎn)的Tracker上。這時(shí)Tracker收到請(qǐng)求的URL是rtsp//tracker的IP/PhenixNews?mode=p2p。
第五步、Tracker根據(jù)URL里的直播頻道ID(”PhenixNews”)搜索所存儲(chǔ)的直播頻道信息,如果沒有,則需要先在P2P MSGW上建立P2P直播點(diǎn)后,再返回P2P MSGW和P2P client的地址信息給當(dāng)前請(qǐng)求的P2P client;如果有,則返回P2P MSGW和P2P client的地址信息給當(dāng)前請(qǐng)求的P2P client。
需要要注意的是,P2P client第一次向Tracker發(fā)送的是請(qǐng)求發(fā)送協(xié)議建立(RTSP SETUP)消息,Tracker返回一個(gè)消息指示接下來進(jìn)行直播頻道節(jié)點(diǎn)信息交互,然后P2P client上報(bào)自身IP、端口等信息,Tracker再返回P2P MSGW和P2P client的地址信息。
第六步、P2P client根據(jù)接收到的P2P MSGW和P2P client的地址信息,選擇至少一個(gè)建立連接獲取視頻直播數(shù)據(jù)。
具體實(shí)施例二第一步、現(xiàn)有的MDN中直播頻道URL為rtsp//www.aaa.com/PhenixNews。
第二步、用戶點(diǎn)擊網(wǎng)頁上的URL,通過將P2P客戶端和“rtsp//”作關(guān)聯(lián),客戶操作系統(tǒng)可以自動(dòng)打開P2P client??蛻舳送ㄟ^標(biāo)準(zhǔn)的RTSP請(qǐng)求該URL。
第三步、MDN將用戶請(qǐng)求重定向到提供PhenixNews的SLB上。
第四步、P2P client向SLB請(qǐng)求該URL,具體如下RTSP SETUP rtsp//202.83.8.1/PhenixNews RTSP/1.0 //202.83.8.1是SLB的IP地址CSeq3 //序列號(hào)TransportRTP/AVP/UDP;//傳輸方式unicast;client_port=5576-5577;[mode=″PLAY″]//單播;客戶端端口號(hào);模式為播放User-Agentp2p client //用戶代理屬性,即接收視頻直播數(shù)據(jù)的方式第五步、SLB根據(jù)用戶代理(User-Agent)的屬性判斷是P2P client,重定向到本邊緣節(jié)點(diǎn)的Tracker上,這時(shí)Tracker收到的應(yīng)用層消息是如第四步所述的RTSP SETUP消息。
第六步、Tracker根據(jù)URL里的直播頻道ID(”PhenixNews”)搜索所存儲(chǔ)的直播頻道信息,如果沒有,則需要先在P2P MSGW上建立P2P直播點(diǎn)后,再返回P2P MSGW和P2P client的地址信息給當(dāng)前請(qǐng)求的P2P client;如果有,則返回P2P MSGW和P2P client的地址信息給當(dāng)前請(qǐng)求的P2P client。
第七步、P2P client根據(jù)接收到的P2P MSGW和P2P client的地址信息,選擇其中至少一個(gè)建立連接獲取視頻直播數(shù)據(jù)。
本發(fā)明利用P2P技術(shù)改進(jìn)了現(xiàn)有的MDN。本發(fā)明先通過MDN的全局調(diào)度能力將用戶的請(qǐng)求調(diào)度到離P2P client最近的邊緣節(jié)點(diǎn),然后在每個(gè)邊緣節(jié)點(diǎn)上將收看同一直播頻道的客戶端組織成一個(gè)邊緣P2P網(wǎng)絡(luò)。由于P2P client的數(shù)據(jù)來源在物理上相對(duì)靠近,因此傳輸質(zhì)量比較有保證,而且大大降低了對(duì)骨干網(wǎng)絡(luò)的壓力。同時(shí)充分利用了P2P client的能力,使系統(tǒng)的擴(kuò)張性更好,能應(yīng)付用戶收看直播頻道請(qǐng)求的突發(fā)性增長(zhǎng)。
本發(fā)明新增加的Tracker和P2P MSGW將P2P能力和原有的媒體分發(fā)能力作了比較好的隔離,既實(shí)現(xiàn)了P2P的能力,同時(shí)對(duì)原有MDN的架構(gòu)和流程的影響很小。因此,本發(fā)明提供的系統(tǒng)及方法能夠?qū)2P能力作比較好的控制和管理而不影響原有MDN的控制管理功能。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種在媒體分發(fā)網(wǎng)絡(luò)MDN中實(shí)現(xiàn)視頻直播的系統(tǒng),該系統(tǒng)包括MDN,其特征在于,該系統(tǒng)包括點(diǎn)對(duì)點(diǎn)客戶端、在MDN的邊緣節(jié)點(diǎn)中包括節(jié)點(diǎn)網(wǎng)關(guān)控制器和點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),其中,節(jié)點(diǎn)網(wǎng)關(guān)控制器,用于接收由全局負(fù)載均衡器GSLB重定向到本地負(fù)載均衡器SLB再重定向到自身的直播頻道請(qǐng)求,根據(jù)存儲(chǔ)的由其他點(diǎn)對(duì)點(diǎn)客戶端或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的直播頻道信息確定接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的其他點(diǎn)對(duì)點(diǎn)客戶端或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),將所確定其他點(diǎn)對(duì)點(diǎn)客戶端或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的地址信息發(fā)送給點(diǎn)對(duì)點(diǎn)客戶端,向點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送建立點(diǎn)對(duì)點(diǎn)直播點(diǎn)的命令;點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),用于根據(jù)接收到節(jié)點(diǎn)網(wǎng)關(guān)控制器發(fā)送的點(diǎn)對(duì)點(diǎn)直播點(diǎn)命令建立點(diǎn)對(duì)點(diǎn)直播點(diǎn),從具有直播頻道請(qǐng)求中直播頻道的媒體服務(wù)器MS上接收直播頻道的視頻直播流數(shù)據(jù)并緩存為視頻直播數(shù)據(jù)后,將緩存后的該視頻直播數(shù)據(jù)發(fā)送給與自身建立連接的點(diǎn)對(duì)點(diǎn)客戶端,向節(jié)點(diǎn)網(wǎng)關(guān)控制器發(fā)送直播頻道信息;點(diǎn)對(duì)點(diǎn)客戶端,用于向GSLB發(fā)起直播頻道請(qǐng)求,根據(jù)從節(jié)點(diǎn)網(wǎng)關(guān)控制器接收到的所確定其他點(diǎn)對(duì)點(diǎn)客戶端或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的地址信息中選取至少一個(gè)建立連接,從所建立連接的點(diǎn)對(duì)點(diǎn)客戶端上或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)上接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)還用于在節(jié)點(diǎn)網(wǎng)關(guān)控制器的指示下刪除點(diǎn)對(duì)點(diǎn)直播點(diǎn);所述節(jié)點(diǎn)網(wǎng)關(guān)控制器還用于向點(diǎn)對(duì)點(diǎn)網(wǎng)關(guān)媒體服務(wù)網(wǎng)關(guān)指示刪除點(diǎn)對(duì)點(diǎn)直播點(diǎn)。
3.如權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)還包括點(diǎn)對(duì)點(diǎn)直播點(diǎn)管理模塊、點(diǎn)對(duì)點(diǎn)直播服務(wù)模塊和網(wǎng)關(guān)信息報(bào)告模塊,其中,點(diǎn)對(duì)點(diǎn)直播點(diǎn)管理模塊用于在節(jié)點(diǎn)網(wǎng)關(guān)控制器的指示下建立或刪除點(diǎn)對(duì)點(diǎn)直播點(diǎn);點(diǎn)對(duì)點(diǎn)直播服務(wù)模塊用于與點(diǎn)對(duì)點(diǎn)客戶端建立連接,將緩存后的該視頻直播數(shù)據(jù)發(fā)送給與自身建立連接的點(diǎn)對(duì)點(diǎn)客戶端;網(wǎng)關(guān)信息報(bào)告模塊用于向節(jié)點(diǎn)網(wǎng)關(guān)控制器上報(bào)直播頻道信息。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述節(jié)點(diǎn)網(wǎng)關(guān)控制器還包括點(diǎn)對(duì)點(diǎn)客戶端通訊模塊、點(diǎn)對(duì)點(diǎn)網(wǎng)關(guān)管理模塊和數(shù)據(jù)記錄模塊,其中,點(diǎn)對(duì)點(diǎn)客戶端通訊模塊,用于接收重定向到自身的直播頻道請(qǐng)求,根據(jù)從數(shù)據(jù)記錄模塊存儲(chǔ)的由其他點(diǎn)對(duì)點(diǎn)客戶端發(fā)送的直播頻道信息確定接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的其他點(diǎn)對(duì)點(diǎn)客戶端,將所確定其他點(diǎn)對(duì)點(diǎn)客戶端的地址信息發(fā)送給點(diǎn)對(duì)點(diǎn)客戶端,接收其他點(diǎn)對(duì)點(diǎn)客戶端發(fā)送的直播頻道信息且發(fā)送給數(shù)據(jù)記錄模塊存儲(chǔ);點(diǎn)對(duì)點(diǎn)網(wǎng)關(guān)管理模塊,用于接收重定向到自身的直播頻道請(qǐng)求,根據(jù)從數(shù)據(jù)記錄模塊存儲(chǔ)的由點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的直播頻道信息確定接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)網(wǎng)關(guān)媒體服務(wù)網(wǎng)關(guān),將所確定點(diǎn)對(duì)點(diǎn)網(wǎng)關(guān)媒體服務(wù)網(wǎng)發(fā)送給點(diǎn)對(duì)點(diǎn)客戶端,接收點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的直播頻道信息且發(fā)送給數(shù)據(jù)記錄模塊存儲(chǔ),指示點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)建立或刪除點(diǎn)對(duì)點(diǎn)直播點(diǎn)。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述點(diǎn)對(duì)點(diǎn)客戶端包括請(qǐng)求控制模塊、點(diǎn)對(duì)點(diǎn)傳輸模塊和播放模塊,其中,請(qǐng)求控制模塊用于向GSLB發(fā)起直播頻道請(qǐng)求、以及與GSLB、SLB和節(jié)點(diǎn)網(wǎng)關(guān)控制器實(shí)現(xiàn)消息交互;點(diǎn)對(duì)點(diǎn)傳輸模塊用于所確定其他點(diǎn)對(duì)點(diǎn)客戶端或點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的地址信息中選取至少一個(gè)建立連接,接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)發(fā)送給播放模塊;播放模塊,用于對(duì)接收到的視頻直播數(shù)據(jù)進(jìn)行解碼,顯示給用戶。
6.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述存儲(chǔ)的由點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的直播頻道信息為直播頻道標(biāo)識(shí)、點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的網(wǎng)際協(xié)議地址和端口號(hào)以及熱度。
7.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述存儲(chǔ)的由點(diǎn)對(duì)點(diǎn)客戶端發(fā)送的直播頻道信息為直播頻道標(biāo)識(shí)、點(diǎn)對(duì)點(diǎn)客戶端的網(wǎng)際協(xié)議地址和端口號(hào)以及時(shí)間戳。
8.一種在MDN中實(shí)現(xiàn)視頻直播的方法,其特征在于,在MDN的邊緣節(jié)點(diǎn)中設(shè)置存儲(chǔ)直播頻道信息的節(jié)點(diǎn)網(wǎng)關(guān)控制器,該方法還包括A、點(diǎn)對(duì)點(diǎn)客戶端向GSLB發(fā)起直播頻道請(qǐng)求,該請(qǐng)求被重定向到邊緣節(jié)點(diǎn)中的SLB,再被重定向到節(jié)點(diǎn)網(wǎng)關(guān)控制器;B、節(jié)點(diǎn)網(wǎng)關(guān)控制器根據(jù)存儲(chǔ)的直播頻道信息確定當(dāng)前接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的其他點(diǎn)對(duì)點(diǎn)客戶端或/和建立的緩存有直播頻道傳送的視頻直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),將所確定的其他點(diǎn)對(duì)點(diǎn)客戶端或/和點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的地址信息發(fā)送給點(diǎn)對(duì)點(diǎn)客戶端;C、點(diǎn)對(duì)點(diǎn)客戶端從接收到地址信息中選取至少一個(gè)進(jìn)行連接后,接收由所連接的其他點(diǎn)對(duì)點(diǎn)客戶端或/和點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)。
9.如權(quán)利要求8所述的方法,其特征在于,在步驟B之前,該方法還包括;節(jié)點(diǎn)網(wǎng)關(guān)控制器根據(jù)存儲(chǔ)的直播頻道信息判斷是否有當(dāng)前接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)或其他點(diǎn)對(duì)點(diǎn)客戶端,如果是,則執(zhí)行步驟B;否則,轉(zhuǎn)入步驟B1;B1、節(jié)點(diǎn)網(wǎng)關(guān)控制器根據(jù)存儲(chǔ)的直播頻道信息選取本邊緣節(jié)點(diǎn)中的一個(gè)點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),向該點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送建立該請(qǐng)求中直播頻道的點(diǎn)對(duì)點(diǎn)直播點(diǎn)命令;B2、該點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)向SLB發(fā)送獲取該直播頻道傳送的視頻直播數(shù)據(jù)的請(qǐng)求,SLB重定向該請(qǐng)求到具有該直播頻道的MS上,MS向該點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送該直播頻道傳送的視頻直播流數(shù)據(jù),該點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)將視頻直播流數(shù)據(jù)以分片數(shù)據(jù)的結(jié)構(gòu)緩存為視頻直播數(shù)據(jù)后,向節(jié)點(diǎn)網(wǎng)關(guān)控制器發(fā)送直播頻道信息,然后執(zhí)行步驟B。
10.如權(quán)利要求9所述的方法,其特征在于,該方法還包括節(jié)點(diǎn)網(wǎng)關(guān)控制器根據(jù)存儲(chǔ)的直播頻道信息判斷點(diǎn)對(duì)點(diǎn)客戶端是否已經(jīng)退出,如果是,則向提供該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送刪除命令;該點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)根據(jù)該命令停止從MS接收該請(qǐng)求中直播頻道傳送的視頻直播流數(shù)據(jù),等待當(dāng)前給點(diǎn)對(duì)點(diǎn)客戶端傳輸?shù)囊曨l直播數(shù)據(jù)完成后,刪除所緩存的視頻直播數(shù)據(jù)。
11.如權(quán)利要求8所述的方法,其特征在于,所述存儲(chǔ)直播頻道信息為具有直播頻道標(biāo)識(shí)、具有對(duì)應(yīng)直播頻道標(biāo)識(shí)的直播頻道傳輸?shù)囊曨l直播數(shù)據(jù)的其他點(diǎn)對(duì)點(diǎn)客戶端的端口號(hào)、網(wǎng)際協(xié)議地址和時(shí)間戳、或/和具有對(duì)應(yīng)直播頻道標(biāo)識(shí)的直播頻道傳輸?shù)囊曨l直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的端口號(hào)、網(wǎng)際協(xié)議地址和熱度。
12.如權(quán)利要求8所述的方法,其特征在于,在步驟A所述該請(qǐng)求被重定向到邊緣節(jié)點(diǎn)中的SLB之后,該方法還包括SLB根據(jù)該請(qǐng)求確定是否是點(diǎn)對(duì)點(diǎn)請(qǐng)求,如果是,執(zhí)行步驟A的后續(xù)步驟。
13.如權(quán)利要求12所述的方法,其特征在于,所述確定該請(qǐng)求是否為點(diǎn)對(duì)點(diǎn)請(qǐng)求的過程為判斷該請(qǐng)求在統(tǒng)一資源標(biāo)識(shí)URL是否設(shè)置了點(diǎn)對(duì)點(diǎn)請(qǐng)求標(biāo)識(shí),如果是,則是點(diǎn)對(duì)點(diǎn)請(qǐng)求。
14.如權(quán)利要求12所述的方法,其特征在于,所述確定該請(qǐng)求是否為點(diǎn)對(duì)點(diǎn)請(qǐng)求的過程為判斷該請(qǐng)求在RTSP/HTTP應(yīng)用層協(xié)議中是否將用戶代理參數(shù)字段設(shè)置了設(shè)定的表示點(diǎn)對(duì)點(diǎn)請(qǐng)求的值,如果是,則是點(diǎn)對(duì)點(diǎn)請(qǐng)求。
15.一種在MDN中實(shí)現(xiàn)視頻直播的客戶端,其特征在于,該客戶端包括請(qǐng)求控制模塊、點(diǎn)對(duì)點(diǎn)傳輸模塊和播放模塊,其中,請(qǐng)求控制模塊,用于向GSLB發(fā)起直播頻道的請(qǐng)求,GSLB將該請(qǐng)求重定向到SLB,SLB再將該請(qǐng)求重定向到節(jié)點(diǎn)網(wǎng)關(guān)控制器,由節(jié)點(diǎn)網(wǎng)關(guān)控制器完成該請(qǐng)求以及后續(xù)的與節(jié)點(diǎn)網(wǎng)關(guān)控制器的定期消息交互,從節(jié)點(diǎn)網(wǎng)關(guān)控制器獲取點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)和其他點(diǎn)對(duì)點(diǎn)客戶端的地址信息后,發(fā)送給點(diǎn)對(duì)點(diǎn)傳輸模塊;點(diǎn)對(duì)點(diǎn)傳輸模塊,用于根據(jù)從請(qǐng)求控制模塊得到的地址信息從點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)或其他點(diǎn)對(duì)點(diǎn)客戶端獲取視頻直播數(shù)據(jù),發(fā)送給播放模塊;播放模塊,用于對(duì)從點(diǎn)對(duì)點(diǎn)傳輸模塊接收到的視頻直播數(shù)據(jù)進(jìn)行解碼,顯示給用戶。
全文摘要
一種在媒體分發(fā)網(wǎng)絡(luò)MDN中實(shí)現(xiàn)視頻直播的系統(tǒng)、方法和客戶端,該方法包括A.點(diǎn)對(duì)點(diǎn)客戶端向GSLB發(fā)起直播頻道請(qǐng)求,該請(qǐng)求被重定向到邊緣節(jié)點(diǎn)中的SLB,再被重定向到節(jié)點(diǎn)網(wǎng)關(guān)控制器;B.節(jié)點(diǎn)網(wǎng)關(guān)控制器根據(jù)存儲(chǔ)的直播頻道信息確定當(dāng)前接收該請(qǐng)求中直播頻道傳送的視頻直播數(shù)據(jù)的其他點(diǎn)對(duì)點(diǎn)客戶端或/和建立的緩存有直播頻道傳送的視頻直播數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān),將所確定的其他點(diǎn)對(duì)點(diǎn)客戶端或/和點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)的地址信息發(fā)送給點(diǎn)對(duì)點(diǎn)客戶端;C.點(diǎn)對(duì)點(diǎn)客戶端選取至少一個(gè)進(jìn)行連接后,接收由所連接的其他點(diǎn)對(duì)點(diǎn)客戶端或/和點(diǎn)對(duì)點(diǎn)媒體服務(wù)網(wǎng)關(guān)發(fā)送的視頻直播數(shù)據(jù)。
文檔編號(hào)H04L12/18GK1909509SQ20061009889
公開日2007年2月7日 申請(qǐng)日期2006年7月19日 優(yōu)先權(quán)日2006年7月19日
發(fā)明者陳浩華, 嚴(yán)哲峰 申請(qǐng)人:華為技術(shù)有限公司