專(zhuān)利名稱(chēng):多媒體電話p2p流媒體廣播方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于多播樹(shù)的廣播技術(shù)實(shí)現(xiàn)的流媒體P2P廣播方法及系統(tǒng),特別涉及一種基于固定多媒體可視電話終端實(shí)現(xiàn)P2P流媒體廣播的方法及系統(tǒng),其核心為如何建立與維護(hù)一個(gè)以媒體源為根節(jié)點(diǎn)的應(yīng)用層P2P流媒體多播樹(shù)。
背景技術(shù):
大屏幕多業(yè)務(wù)功能的嵌入式多媒體可視電話走進(jìn)千家萬(wàn)戶,為了推進(jìn)增值業(yè)務(wù), 特別是基于可視電話的廣告/娛樂(lè)媒體業(yè)務(wù),如電視廣播、視頻點(diǎn)播、多媒體廣告推播等, 都涉及到覆蓋網(wǎng)上的流媒體廣播技術(shù),需要有相應(yīng)的軟硬件的支持??梢曤娫捵鳛榱髅襟w廣播的播放終端,數(shù)量眾多,如果以C/S模式直接進(jìn)行推送播放,服務(wù)器與網(wǎng)絡(luò)的性能在技術(shù)上很難達(dá)到滿意的效果;采用內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN, Content Delivery Network)技術(shù),服務(wù)器成本太高;采用IP組播技術(shù)更受到網(wǎng)絡(luò)環(huán)境的限制;而采用P2P(Peer to Peer)技術(shù)是一種更為可行的方案。但是傳統(tǒng)的P2P方式下數(shù)據(jù)節(jié)點(diǎn)和傳輸是隨機(jī)的,也就是說(shuō)這種傳輸方式可能占據(jù)任意一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)或者出口的帶寬。P2P過(guò)于強(qiáng)調(diào)“對(duì)等”,每個(gè)節(jié)點(diǎn)之間的交換完全是無(wú)序的。例如,一個(gè)北京的用戶,既可能和廣州的用戶進(jìn)行文件片段的交換,也可能和遠(yuǎn)在美國(guó)的某用戶進(jìn)行交換。顯然,無(wú)序的交換導(dǎo)致了無(wú)謂的跨地區(qū)甚至是跨國(guó)的“流量旅行”, 這耗費(fèi)了寶貴的國(guó)內(nèi)和國(guó)際帶寬資源,代價(jià)巨大。
發(fā)明內(nèi)容
為了解決上述問(wèn)題,本發(fā)明提供了一種多媒體電話P2P流媒體廣播方法及系統(tǒng), 為面向多媒體可視電話終端的流媒體增值業(yè)務(wù)的實(shí)現(xiàn)提供了現(xiàn)實(shí)可行的技術(shù)方案,在有限投資的基礎(chǔ)上即可達(dá)到應(yīng)用要求,并獲得較好的綜合的P2P廣播性能。本發(fā)明所采用的主要技術(shù)方案是—種多媒體電話P2P流媒體廣播方法,其核心是建立從一個(gè)媒體源到若干多媒體電話終端的應(yīng)用層多播樹(shù)作為主要廣播路徑,所述媒體源為所述多播樹(shù)的根節(jié)點(diǎn),所述多播樹(shù)中的部分或全部樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn),所述超級(jí)樹(shù)節(jié)點(diǎn)同與其內(nèi)網(wǎng)相同的一個(gè)或多個(gè)節(jié)點(diǎn)組成伙伴關(guān)系,所述伙伴關(guān)系中的各節(jié)點(diǎn)采用P2P方式通信,請(qǐng)求流媒體服務(wù)的多媒體電話終端優(yōu)先加入與其內(nèi)網(wǎng)相同的超級(jí)樹(shù)節(jié)點(diǎn)的伙伴關(guān)系,或優(yōu)先以與其內(nèi)網(wǎng)相同的樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn)構(gòu)建新的伙伴關(guān)系,當(dāng)不存在能夠與其組成伙伴關(guān)系的樹(shù)節(jié)點(diǎn)時(shí),再加入所述多播樹(shù)成為多播樹(shù)中的樹(shù)節(jié)點(diǎn)。所述多播樹(shù)中的每個(gè)樹(shù)節(jié)點(diǎn)周期性地向其父節(jié)點(diǎn)和子節(jié)點(diǎn)發(fā)送心跳包,每個(gè)伙伴周期性地向其他伙伴發(fā)送心跳包,用以說(shuō)明本節(jié)點(diǎn)或伙伴工作正常,所述心跳包攜帶的信息包括電話號(hào)碼、機(jī)身ID、節(jié)目ID、節(jié)目授權(quán)串、數(shù)據(jù)片位圖和帶寬。除建立多播樹(shù)的方法外,所述多媒體電話P2P流媒體廣播方法中還包括對(duì)所述多播樹(shù)進(jìn)行優(yōu)化調(diào)整的節(jié)點(diǎn)調(diào)整方法,包括入樹(shù)節(jié)點(diǎn)調(diào)整方法和/或樹(shù)中節(jié)點(diǎn)調(diào)整方法,所述入樹(shù)節(jié)點(diǎn)調(diào)整方法為當(dāng)入樹(shù)請(qǐng)求被轉(zhuǎn)發(fā)給所述流媒體推送服務(wù)器的一個(gè)直接的子節(jié)點(diǎn)時(shí),如果所述多媒體電話終端的帶寬性能優(yōu)于該子節(jié)點(diǎn),則所述多媒體電話終端替代該子節(jié)點(diǎn),接管其節(jié)點(diǎn)任務(wù),該子節(jié)點(diǎn)重新請(qǐng)求入樹(shù)或成為所述多媒體電話終端的子節(jié)點(diǎn);當(dāng)入樹(shù)請(qǐng)求被轉(zhuǎn)發(fā)給某個(gè)被父節(jié)點(diǎn)選中的子節(jié)點(diǎn)時(shí),如果所述多媒體電話終端的帶寬性能優(yōu)于該子節(jié)點(diǎn),則所述多媒體電話終端替代該子節(jié)點(diǎn),接管其節(jié)點(diǎn)任務(wù),該子節(jié)點(diǎn)重新請(qǐng)求入樹(shù)或成為所述多媒體電話終端的子節(jié)點(diǎn);所述樹(shù)中節(jié)點(diǎn)調(diào)整方法為當(dāng)所述多播樹(shù)中的各個(gè)樹(shù)節(jié)點(diǎn)或超級(jí)樹(shù)節(jié)點(diǎn)的伙伴檢測(cè)或判斷到帶寬的較大變化時(shí),通過(guò)心跳包將其帶寬性能數(shù)據(jù)通知給其父節(jié)點(diǎn)或作為伙伴的超級(jí)樹(shù)節(jié)點(diǎn),接收心跳包的樹(shù)節(jié)點(diǎn)獲得其各子節(jié)點(diǎn)或伙伴的帶寬性能數(shù)據(jù),按公式& = α Βη_1+βΒ統(tǒng)計(jì)各子節(jié)點(diǎn)或伙伴的帶寬時(shí)段值,當(dāng)其某個(gè)子節(jié)點(diǎn)的帶寬時(shí)段值超過(guò)該樹(shù)節(jié)點(diǎn)一定值,或者其某個(gè)伙伴的帶寬時(shí)段值超過(guò)該樹(shù)節(jié)點(diǎn)一定值,則協(xié)商對(duì)換該節(jié)點(diǎn)與其子節(jié)點(diǎn),或者該樹(shù)節(jié)點(diǎn)與其伙伴在所述多播樹(shù)中的位置。上述公式中,Bn為收到第η個(gè)心跳的帶寬時(shí)段值,B為從第η個(gè)心跳包中取到的子節(jié)點(diǎn)或伙伴的帶寬值,α、β分別為權(quán)重系數(shù)。所述多媒體電話終端采用二級(jí)緩存機(jī)制存儲(chǔ)所述多媒體電話終端接收的來(lái)自其他樹(shù)節(jié)點(diǎn)或伙伴的數(shù)據(jù)包,一級(jí)緩存中存儲(chǔ)的數(shù)據(jù)包無(wú)序,用于多媒體電話終端同其他樹(shù)節(jié)點(diǎn)或伙伴進(jìn)行數(shù)據(jù)交換,所述一級(jí)緩存采用LRU替換策略,替換固定時(shí)間內(nèi)訪問(wèn)次數(shù)最少的數(shù)據(jù)包,所述二級(jí)緩存中存儲(chǔ)的數(shù)據(jù)包有序,主要用于本地的媒體播放,所述二級(jí)緩存依據(jù)流媒體的時(shí)序采用先進(jìn)先出的數(shù)據(jù)進(jìn)出方式。本發(fā)明還提供了一種基于上述多媒體電話P2P流媒體廣播方法的多媒體電話P2P 流媒體廣播系統(tǒng),為實(shí)現(xiàn)多媒體廣播等增值業(yè)務(wù)提供相應(yīng)的硬件支持及配套軟件,所述系統(tǒng)包括多個(gè)多媒體電話終端,用于接收多媒體節(jié)目,建立從一個(gè)媒體源到若干多媒體電話終端的應(yīng)用層多播樹(shù)作為主要廣播路徑,所述媒體源為所述多播樹(shù)的根節(jié)點(diǎn),所述多播樹(shù)中的部分或全部樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn),所述超級(jí)樹(shù)節(jié)點(diǎn)與與其內(nèi)網(wǎng)相同的一個(gè)或多個(gè)節(jié)點(diǎn)組成伙伴關(guān)系,所述伙伴關(guān)系中的各節(jié)點(diǎn)采用P2P方式通信,所述各多媒體電話終端為多播樹(shù)中的一個(gè)樹(shù)節(jié)點(diǎn)或伙伴關(guān)系中的一個(gè)非超級(jí)樹(shù)節(jié)點(diǎn)的伙伴;流媒體推送服務(wù)器,用作媒體源,提供原始的流媒體數(shù)據(jù),維護(hù)和管理廣播路徑;媒體節(jié)目排播服務(wù)器,用于根據(jù)電話用戶的屬性分類(lèi),綜合各媒體客戶的播放時(shí)段、受眾要求,生成各多媒體電話終端的媒體排播表,并在通信業(yè)務(wù)交換服務(wù)器的協(xié)助下,分發(fā)到各所述多媒體電話終端執(zhí)行;以及通信業(yè)務(wù)交換服務(wù)器,主要輔助流媒體推送服務(wù)器和媒體節(jié)目排播服務(wù)器對(duì)多媒體電話終端進(jìn)行認(rèn)證與定位。其中,所述多媒體電話終端設(shè)有與上述多媒體電話P2P流媒體廣播方法相配套的流媒體P2P廣播組件,屬于終端軟件,包括四大模塊(1)節(jié)點(diǎn)管理模塊,用于控制所述多媒體電話終端向廣播路徑中與其連接的其他節(jié)點(diǎn)發(fā)送心跳信息,并接收其他節(jié)點(diǎn)的心跳信息,動(dòng)態(tài)地維護(hù)系統(tǒng)中關(guān)系節(jié)點(diǎn)的視圖,了解各關(guān)系節(jié)點(diǎn)的帶寬能力,需要時(shí)進(jìn)行優(yōu)化調(diào)整協(xié)商;(2)伙伴管理模塊,用于向其所在伙伴關(guān)系中的伙伴發(fā)送心跳信息,接收其他伙伴的心跳信息,動(dòng)態(tài)地維護(hù)系統(tǒng)中伙伴關(guān)系的視圖,建立伙伴關(guān)系內(nèi)的協(xié)作關(guān)系,并適時(shí)地維護(hù)與伙伴之間的本地?cái)?shù)據(jù)緩沖狀況,進(jìn)行信息交互,為數(shù)據(jù)緩沖/管理模塊提供鏈路支持,了解各伙伴的帶寬能力,需要時(shí)進(jìn)行優(yōu)化調(diào)整協(xié)商;(3)數(shù)據(jù)緩沖/管理模塊,用于根據(jù)音視頻接口模塊以及與樹(shù)節(jié)點(diǎn)/伙伴的交互信息,動(dòng)態(tài)地與樹(shù)節(jié)點(diǎn)/伙伴進(jìn)行數(shù)據(jù)交換,并維護(hù)本地?cái)?shù)據(jù)緩沖狀況;(4)音視頻接口模塊,用于從所述數(shù)據(jù)緩沖/管理模塊中獲得媒體數(shù)據(jù),并且通過(guò)集成的媒體播放器播放。本發(fā)明的有益效果本發(fā)明以電話號(hào)碼來(lái)標(biāo)識(shí)多媒體可視電話終端,解決了終端認(rèn)證問(wèn)題,為實(shí)現(xiàn)面向大量多媒體可視電話終端提供多媒體廣播業(yè)務(wù)提供了基礎(chǔ)技術(shù)支撐;通過(guò)采用創(chuàng)新的廣播協(xié)議,終端加入廣播路徑時(shí),優(yōu)先加入與其內(nèi)網(wǎng)相同的超級(jí)樹(shù)節(jié)點(diǎn)的伙伴關(guān)系,或優(yōu)先以與其內(nèi)網(wǎng)相同的樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn)構(gòu)建新的伙伴關(guān)系,當(dāng)不存在能夠與其組成伙伴關(guān)系的樹(shù)節(jié)點(diǎn)時(shí),再加入所述多播樹(shù)成為多播樹(shù)中的樹(shù)節(jié)點(diǎn)。由于伙伴之間是動(dòng)態(tài)的對(duì)等關(guān)系, 通過(guò)入樹(shù)過(guò)程中的智能定位,可充分利用伙伴終端間的P2P通信連接的技術(shù)優(yōu)勢(shì),提高整體的廣播效率;設(shè)計(jì)了多播樹(shù)的性能調(diào)優(yōu)方法和過(guò)程,使性能越好的終端越靠近流媒體數(shù)據(jù)源,以提供更優(yōu)質(zhì)的數(shù)據(jù)傳輸功能,提高了網(wǎng)絡(luò)路由效率和廣播路徑的整體性能,減輕骨干網(wǎng)絡(luò)壓力;在可視電話終端上采用二級(jí)緩存技術(shù),對(duì)數(shù)據(jù)緩沖進(jìn)行高效管理,提高了數(shù)據(jù)分發(fā)性能。
圖1為本發(fā)明的多媒體電話P2P流媒體廣播系統(tǒng)的結(jié)構(gòu)示意圖;圖2為本發(fā)明的多媒體電話終端的流媒體二級(jí)緩存結(jié)構(gòu)示意圖;圖3為本發(fā)明的多媒體電話終端及其與系統(tǒng)接口的軟件結(jié)構(gòu)關(guān)系圖;圖4為本發(fā)明的流媒體推送服務(wù)器的軟件架構(gòu)示意圖;圖5為本發(fā)明的多媒體電話終端的軟件架構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明提供了一種多媒體電話P2P流媒體廣播方法,是一種基于固定多媒體可視電話終端,實(shí)現(xiàn)P2P流媒體廣播的協(xié)議過(guò)程,其核心是如何生產(chǎn)與維護(hù)一個(gè)以媒體源為根節(jié)點(diǎn)的應(yīng)用層P2P流媒體多播樹(shù)。生成所述多播樹(shù)的協(xié)議核心是建立從一個(gè)媒體源到若干多媒體電話終端的應(yīng)用層多播樹(shù)作為主要的廣播路徑(參見(jiàn)圖1),所述媒體源為所述多播樹(shù)的根節(jié)點(diǎn),所述多播樹(shù)中的部分或全部樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn),所述超級(jí)樹(shù)節(jié)點(diǎn)同與其內(nèi)網(wǎng)相同的一個(gè)或多個(gè)節(jié)點(diǎn)組成伙伴關(guān)系,所述伙伴關(guān)系中的各節(jié)點(diǎn)采用P2P方式通信,請(qǐng)求流媒體服務(wù)的多媒體電話終端優(yōu)先加入與其內(nèi)網(wǎng)相同的超級(jí)樹(shù)節(jié)點(diǎn)的伙伴關(guān)系,或優(yōu)先以與其內(nèi)網(wǎng)相同的樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn)構(gòu)建新的伙伴關(guān)系,當(dāng)不存在能夠與其組成伙伴關(guān)系的樹(shù)節(jié)點(diǎn)時(shí),再加入所述多播樹(shù)成為多播樹(shù)中的樹(shù)節(jié)點(diǎn)。由于伙伴關(guān)系是由超級(jí)樹(shù)節(jié)點(diǎn)同與其內(nèi)網(wǎng)相同的一個(gè)或多個(gè)節(jié)點(diǎn)組成的,且伙伴間為動(dòng)態(tài)的對(duì)等關(guān)系(依賴于通信業(yè)務(wù)交換服務(wù)器建立),即不存在固定的父子關(guān)系,通過(guò)優(yōu)先同與其內(nèi)網(wǎng)相同的超級(jí)樹(shù)節(jié)點(diǎn)構(gòu)建新的伙伴關(guān)系,能夠使鄰近終端優(yōu)先地相互提供流媒體服務(wù),充分提高了廣播路徑的路由效率。多播樹(shù)的建立過(guò)程由各個(gè)請(qǐng)求節(jié)點(diǎn)加入多播樹(shù)的過(guò)程組成,所述請(qǐng)求流媒體服務(wù)的多媒體電話終端作為請(qǐng)求節(jié)點(diǎn),加入多播樹(shù)的過(guò)程為(1)所述多媒體電話終端將其電話號(hào)碼作為其終端標(biāo)識(shí),向流媒體推送服務(wù)器發(fā)送服務(wù)請(qǐng)求包,請(qǐng)求包中可以包含電話號(hào)碼、機(jī)身ID、節(jié)目ID、認(rèn)證信息、網(wǎng)終類(lèi)型和上下行帶寬之類(lèi)的內(nèi)容;(2)所述流媒體推送服務(wù)器向通信業(yè)務(wù)交換服務(wù)器轉(zhuǎn)發(fā)所述服務(wù)請(qǐng)求包,所述通信業(yè)務(wù)交換服務(wù)器對(duì)所述多媒體電話終端進(jìn)行登陸認(rèn)證與伙伴查詢(外網(wǎng)IP相同、內(nèi)網(wǎng) IP與掩碼確定的內(nèi)網(wǎng)段相同的終端可以構(gòu)建伙伴關(guān)系),所述多媒體終端如果未通過(guò)登錄認(rèn)證,則終止通訊,通過(guò)則進(jìn)行伙伴查詢,并返回給所述流媒體推送服務(wù)器一個(gè)含有認(rèn)證結(jié)果和伙伴信息字段的伙伴信息包,其信息內(nèi)容可以包括電話號(hào)碼、機(jī)身ID、節(jié)目ID、認(rèn)證結(jié)果、伙伴信息(內(nèi)外網(wǎng)IP、電話號(hào)碼、機(jī)身ID)列表,伙伴信息包里包括伙伴的電話號(hào)碼信息,也可以為只有查詢到伙伴信息后,返回的伙伴信息包中才包括伙伴的電話號(hào)碼信息;(3)所述流媒體推送服務(wù)器向通過(guò)認(rèn)證的所述多媒體電話終端返回含有節(jié)目授權(quán)串和伙伴信息的服務(wù)請(qǐng)求許可包,其中可以包含電話號(hào)碼、機(jī)身ID、節(jié)目ID、節(jié)目授權(quán)串、 伙伴信息(內(nèi)外網(wǎng)IP、電話號(hào)碼、機(jī)身ID)列表;(4)所述多媒體電話終端收到服務(wù)請(qǐng)求許可包,從中取出伙伴信息列表,如果沒(méi)有伙伴信息,則向所述根節(jié)點(diǎn)請(qǐng)求入樹(shù),并成為所述多播樹(shù)的一個(gè)樹(shù)節(jié)點(diǎn),如果有伙伴信息, 則向伙伴發(fā)送含有節(jié)目授權(quán)串的節(jié)目詢問(wèn)包,其中可以包含電話號(hào)碼、機(jī)身ID、節(jié)目ID和節(jié)目授權(quán)串,詢問(wèn)其是否已加入多播樹(shù)以及是否有足夠的資源為所述多媒體電話終端提供流媒體服務(wù),如果是,則標(biāo)識(shí)所述多媒體電話終端為已加入多播樹(shù);否則向所述根節(jié)點(diǎn)請(qǐng)求入樹(shù),并成為多播樹(shù)的一個(gè)樹(shù)節(jié)點(diǎn)。該步驟實(shí)現(xiàn)了請(qǐng)求節(jié)點(diǎn)優(yōu)先加入與其內(nèi)網(wǎng)相同的超級(jí)樹(shù)節(jié)點(diǎn)的伙伴關(guān)系,或優(yōu)先以與其內(nèi)網(wǎng)相同的樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn)構(gòu)建新的伙伴關(guān)系。所述多媒體電話終端向所述根節(jié)點(diǎn)請(qǐng)求入樹(shù)并成為所述多播樹(shù)的一個(gè)樹(shù)節(jié)點(diǎn)的過(guò)程為所述多媒體電話終端向所述流媒體推送服務(wù)器發(fā)送入樹(shù)請(qǐng)求包,所述流媒體推送服務(wù)器收到入樹(shù)請(qǐng)求包,如果有足夠的資源,則直接向所述多媒體電話終端提供流媒體服務(wù),由此使所述多媒體電話終端成為其一個(gè)直接的子節(jié)點(diǎn),否則,所述流媒體推送服務(wù)器將入樹(shù)請(qǐng)求包轉(zhuǎn)發(fā)給它的一個(gè)直接的子節(jié)點(diǎn);如果該子節(jié)點(diǎn)有伙伴,優(yōu)先將所述入樹(shù)請(qǐng)求轉(zhuǎn)發(fā)給它的一個(gè)有足夠資源的伙伴,否則由該子節(jié)點(diǎn)判斷自己是否有足夠的資源為所述多媒體電話終端提供流媒體服務(wù),是則由該直接的子節(jié)點(diǎn)為所述多媒體電話終端提供流媒體服務(wù);當(dāng)所述直接的子節(jié)點(diǎn)與其伙伴的資源情況均不允許提供流媒體服務(wù)時(shí),所述多媒體電話終端的請(qǐng)求重定向到所述流媒體推送服務(wù)器的其他直接的子節(jié)點(diǎn)進(jìn)行新一輪的上述過(guò)程或者由該直接的子節(jié)點(diǎn)轉(zhuǎn)發(fā)給其直接的子節(jié)點(diǎn)進(jìn)行在下一級(jí)子節(jié)點(diǎn)層次上的上述過(guò)程。在上述入樹(shù)過(guò)程中,判斷一個(gè)節(jié)點(diǎn)或伙伴是否有足夠的資源為請(qǐng)求節(jié)點(diǎn)提供服務(wù)的依據(jù)為該節(jié)點(diǎn)是否有所需要的最近的數(shù)據(jù)片和足夠的上行寬帶,如果有,則判斷為有足夠的資源。以上,即完成了請(qǐng)求節(jié)點(diǎn)的完整入樹(shù)過(guò)程,通過(guò)此入樹(shù)過(guò)程逐漸構(gòu)建了多播樹(shù),所述多播樹(shù)中的每個(gè)樹(shù)節(jié)點(diǎn)周期性地向其父節(jié)點(diǎn)和子節(jié)點(diǎn)發(fā)送心跳包,每個(gè)伙伴周期性地向其他伙伴發(fā)送心跳包,用以說(shuō)明本節(jié)點(diǎn)或伙伴工作正常,所述心跳包攜帶的信息優(yōu)選包含電話號(hào)碼、機(jī)身ID、節(jié)目ID、節(jié)目授權(quán)串、數(shù)據(jù)片位圖和帶寬。多播樹(shù)中每個(gè)樹(shù)節(jié)點(diǎn)維護(hù)著自己的父節(jié)點(diǎn)和直接的子節(jié)點(diǎn)的信息,包括父節(jié)點(diǎn)的IP/端口 /上行帶寬、子節(jié)點(diǎn)的IP/端口 /下行帶寬。所述多媒體電話終端發(fā)出流媒體服務(wù)請(qǐng)求可由用戶點(diǎn)播、定時(shí)排播、遠(yuǎn)程現(xiàn)時(shí)播放命令等觸發(fā),具有包括(1)用戶在所述多媒體電話終端上操作,點(diǎn)播視頻;( 用戶從排播服務(wù)器分發(fā)到所述多媒體電話終端的現(xiàn)時(shí)流媒體服務(wù)申請(qǐng)命令中選擇;C3)用戶從排播服務(wù)器分發(fā)到所述多媒體電話終端的媒體節(jié)目排播表中定制,根據(jù)定制計(jì)劃按時(shí)申請(qǐng)流媒體播放服務(wù)。由于多播樹(shù)中各樹(shù)節(jié)點(diǎn)或伙伴的性能不同,因此多播樹(shù)中各段傳輸路徑的性能可能存在較大差異,為了使廣播路徑的整體性能更優(yōu),本發(fā)明還提供了針對(duì)所述多播樹(shù)進(jìn)行優(yōu)化調(diào)整的節(jié)點(diǎn)調(diào)整方法,包括入樹(shù)節(jié)點(diǎn)調(diào)整方法和/或樹(shù)中節(jié)點(diǎn)調(diào)整方法。所述入樹(shù)節(jié)點(diǎn)調(diào)整方法為當(dāng)入樹(shù)請(qǐng)求被轉(zhuǎn)發(fā)給所述流媒體推送服務(wù)器的一個(gè)直接的子節(jié)點(diǎn)時(shí),如果所述多媒體電話終端的帶寬性能優(yōu)于該子節(jié)點(diǎn),則所述多媒體電話終端替代該子節(jié)點(diǎn),接管其節(jié)點(diǎn)任務(wù),該子節(jié)點(diǎn)重新請(qǐng)求入樹(shù)或成為所述多媒體電話終端的子節(jié)點(diǎn)。當(dāng)入樹(shù)請(qǐng)求被轉(zhuǎn)發(fā)給某個(gè)被父節(jié)點(diǎn)選中的子節(jié)點(diǎn)時(shí),如果所述多媒體電話終端的帶寬性能優(yōu)于該子節(jié)點(diǎn),則所述多媒體電話終端替代該子節(jié)點(diǎn),接管其節(jié)點(diǎn)任務(wù),該子節(jié)點(diǎn)重新請(qǐng)求入樹(shù)或成為所述多媒體電話終端的子節(jié)點(diǎn)。所述子節(jié)點(diǎn)重新請(qǐng)求入樹(shù)和成為所述多媒體電話終端的子節(jié)點(diǎn)為兩種不同的調(diào)整方式,一般情況下采用原子節(jié)點(diǎn)成為所述多媒體電話終端的子節(jié)點(diǎn)的調(diào)整方式,當(dāng)不能采取這種方式時(shí)采用重新入樹(shù)的方式。所述樹(shù)中節(jié)點(diǎn)調(diào)整方法為當(dāng)所述多播樹(shù)中的各個(gè)樹(shù)節(jié)點(diǎn)或超級(jí)樹(shù)節(jié)點(diǎn)的伙伴檢測(cè)或判斷到帶寬的較大變化時(shí),通過(guò)心跳包將其帶寬性能數(shù)據(jù)通知給其父節(jié)點(diǎn)或作為伙伴的超級(jí)樹(shù)節(jié)點(diǎn)伙伴,接收心跳包的樹(shù)節(jié)點(diǎn)獲得其各子節(jié)點(diǎn)或伙伴的帶寬性能數(shù)據(jù),按公式& = α Βη_1+ β B統(tǒng)計(jì)各子節(jié)點(diǎn)或伙伴的帶寬時(shí)段值,當(dāng)其某個(gè)子節(jié)點(diǎn)的帶寬時(shí)段值超過(guò)該樹(shù)節(jié)點(diǎn)一定值,或者其某個(gè)伙伴的帶寬時(shí)段值超過(guò)該樹(shù)節(jié)點(diǎn)一定值,則協(xié)商對(duì)換該樹(shù)節(jié)點(diǎn)與其子節(jié)點(diǎn),或者該樹(shù)節(jié)點(diǎn)與其伙伴在所述多播樹(shù)中的位置,較優(yōu)地,當(dāng)帶寬時(shí)段值超過(guò)該節(jié)點(diǎn)的20%時(shí),交換位置。上述公式中,為收到第η個(gè)心跳的帶寬時(shí)段值,B為從第η個(gè)心跳包中取到的子節(jié)點(diǎn)或伙伴的帶寬值,α,β分別為權(quán)重系數(shù),所述權(quán)重系數(shù)根據(jù)網(wǎng)絡(luò)情況通過(guò)優(yōu)化計(jì)算或根據(jù)經(jīng)驗(yàn)數(shù)據(jù)獲得,以盡可能地保證數(shù)據(jù)傳輸流暢。通常,可以優(yōu)選為α+β =1,更優(yōu)地, 取 α = 0. 9,β = 0· 1。通常,多媒體電話終端是多任務(wù)的,當(dāng)A任務(wù)與流媒體廣播任務(wù)并發(fā)時(shí),如果當(dāng)前流媒體廣播任務(wù)優(yōu)先級(jí)高于A任務(wù)(例如正在以流媒體廣播的方式播報(bào)臺(tái)風(fēng)緊急通知,任務(wù)優(yōu)先級(jí)很高),流媒體廣播任務(wù)優(yōu)先擁有帶寬與CPU資源;如果當(dāng)前流媒體廣播任務(wù)優(yōu)先級(jí)低于A任務(wù)(例如在流媒體廣播時(shí),用戶撥打可視通話),且可預(yù)見(jiàn)帶寬與CPU資源不足,此時(shí)終端將正常離開(kāi)多播樹(shù)。此外,終端還可能非正常離開(kāi)多播樹(shù)。無(wú)論節(jié)點(diǎn)是哪種方式退出,都會(huì)影響到P2P網(wǎng)絡(luò)連接。因此,我們需要在節(jié)點(diǎn)退出后進(jìn)行節(jié)點(diǎn)失效恢復(fù)。在本系統(tǒng)中,每個(gè)節(jié)點(diǎn)除了保存父節(jié)點(diǎn)和伙伴的信息,同時(shí)還保存自己的備用父節(jié)點(diǎn)的信息,所述終端在加入多播樹(shù)后,向根節(jié)點(diǎn)申請(qǐng)備用的父節(jié)點(diǎn),并保留根節(jié)點(diǎn)反饋的備用的父節(jié)點(diǎn)的IP地址及端口號(hào),當(dāng)父節(jié)點(diǎn)離開(kāi)時(shí)可以便捷地用備用父節(jié)點(diǎn)代替父節(jié)點(diǎn)。所述多媒體電話終端可以采用正常離樹(shù)或非正常離樹(shù)的方式離開(kāi)多播樹(shù)。優(yōu)選的一種正常離樹(shù)方式為樹(shù)節(jié)點(diǎn)正常離開(kāi)多播樹(shù)時(shí),向上向服務(wù)器發(fā)送退出消息,通知其父節(jié)點(diǎn)收回資源,向下,還向所有的直接子節(jié)點(diǎn)和/或伙伴發(fā)送退出消息,并通知其直接的子節(jié)點(diǎn)或伙伴重新恢復(fù)連接。所述非正常離樹(shù)的方式優(yōu)選為每個(gè)樹(shù)節(jié)點(diǎn)周期性向其父節(jié)點(diǎn)以及可能有的直接子節(jié)點(diǎn)和伙伴發(fā)送心跳包,說(shuō)明自己工作正常,如果某個(gè)父節(jié)點(diǎn)在一定周期(如3個(gè)心跳周期)內(nèi)沒(méi)有收到其直接子節(jié)點(diǎn)正常的消息,則認(rèn)為其直接子節(jié)點(diǎn)己經(jīng)非正常離開(kāi)多播樹(shù),該父節(jié)點(diǎn)將回收服務(wù)該子節(jié)點(diǎn)的資源,如果某個(gè)子節(jié)點(diǎn)或伙伴在一定周期(如3個(gè)心跳周期)內(nèi)沒(méi)有收到其父節(jié)點(diǎn)或與其建立伙伴關(guān)系的超級(jí)樹(shù)節(jié)點(diǎn)正常的消息,則認(rèn)為其父節(jié)點(diǎn)或與其建立伙伴關(guān)系的超級(jí)樹(shù)節(jié)點(diǎn)己經(jīng)非正常離開(kāi)多播樹(shù),該子節(jié)點(diǎn)或伙伴重新恢復(fù)連接。所述子節(jié)點(diǎn)可以采用下列任一一種方式重新恢復(fù)連接(1)所述子節(jié)點(diǎn)重新申請(qǐng)入樹(shù);( 所述子節(jié)點(diǎn)取出其備用的父節(jié)點(diǎn)的IP地址及端口號(hào),請(qǐng)求與其建立連接成為其子節(jié)點(diǎn),所述備用的父節(jié)點(diǎn)接到該請(qǐng)求后,判斷是否有足夠的資源可提供服務(wù),如果是,則接管原父節(jié)點(diǎn)的工作,為該子節(jié)點(diǎn)提供服務(wù),該子節(jié)點(diǎn)再次申請(qǐng)備用的父節(jié)點(diǎn),如果否,該子節(jié)點(diǎn)重新申請(qǐng)入樹(shù);所述終端在加入多播樹(shù)后,向根節(jié)點(diǎn)申請(qǐng)備用的父節(jié)點(diǎn),并保留根節(jié)點(diǎn)反饋的備用的父節(jié)點(diǎn)的IP地址及端口號(hào);所述伙伴可以采用下列任一一種方式重新恢復(fù)連接(1)所述伙伴重新申請(qǐng)入樹(shù);(2)原伙伴關(guān)系中的各伙伴之間通過(guò)協(xié)商選擇其中資源狀況最好的伙伴替代原超級(jí)樹(shù)節(jié)點(diǎn),當(dāng)原伙伴關(guān)系中的伙伴只有一個(gè)時(shí),該伙伴直接替代原超級(jí)樹(shù)節(jié)點(diǎn)。由于隨時(shí)可能有節(jié)點(diǎn)入樹(shù)和離樹(shù),而且多播樹(shù)本身也進(jìn)行動(dòng)態(tài)調(diào)整,多播樹(shù)中的樹(shù)節(jié)點(diǎn)或超級(jí)樹(shù)節(jié)點(diǎn)的伙伴常常是變化的,伙伴之間數(shù)據(jù)的傳輸方向并不固定,伙伴之間根據(jù)各自的緩存的數(shù)據(jù)情況進(jìn)行數(shù)據(jù)交換,所以伙伴之間需要相互知道所緩存數(shù)據(jù)的內(nèi)容。媒體數(shù)據(jù)流可被分割成相同大小的片斷,片斷是否在緩存區(qū)內(nèi)存在可以用一個(gè)緩存映射BM(buffer map)來(lái)表示。伙伴間通過(guò)不斷交換BM來(lái)了解相互間的緩存情況。在具體實(shí)現(xiàn)中,每個(gè)片斷包含1秒的數(shù)據(jù),用一個(gè)滑動(dòng)窗口(Sliding window)來(lái)代表BM,大小為120 個(gè)片斷,正好對(duì)應(yīng)BM中120個(gè)比特,每個(gè)比特代表一個(gè)數(shù)據(jù)片斷,比特的值為1表示有這個(gè)片斷,0表示沒(méi)有這個(gè)片段。數(shù)據(jù)的調(diào)度方法對(duì)數(shù)據(jù)傳輸速率影響較大,本發(fā)明還公開(kāi)了一種新的數(shù)據(jù)調(diào)度算法在各個(gè)樹(shù)節(jié)點(diǎn)或超級(jí)樹(shù)節(jié)點(diǎn)的伙伴間調(diào)度數(shù)據(jù),所述數(shù)據(jù)調(diào)度算法采用下列規(guī)則中的一種或多種的組合(1)同一超級(jí)樹(shù)節(jié)點(diǎn)的伙伴關(guān)系中的各伙伴之間通過(guò)定時(shí)(如2秒)發(fā)送和接收通告包[電話號(hào)碼、機(jī)身ID、節(jié)目ID、節(jié)目授權(quán)串、數(shù)據(jù)片位圖、上行剩余帶寬]定期取得并保存伙伴的上下行帶寬及流媒體數(shù)據(jù)片信息,伙伴間相互交流傳輸流媒體數(shù)據(jù)片,當(dāng)發(fā)現(xiàn)有更新數(shù)據(jù)片的帶寬最優(yōu)的伙伴時(shí),選擇該伙伴并針對(duì)其進(jìn)行流媒體數(shù)據(jù)片的拉操作,此步驟逐漸建立與擴(kuò)大超級(jí)節(jié)點(diǎn),伙伴間相互通報(bào)與傳播流媒體數(shù)據(jù)。(2)規(guī)定每個(gè)數(shù)據(jù)包的有效時(shí)間(Deadline,如30秒),即每個(gè)數(shù)據(jù)包在源節(jié)點(diǎn)產(chǎn)生之后,必須在有效時(shí)間內(nèi)到達(dá)其他節(jié)點(diǎn),否則視為無(wú)效。在向伙伴或父節(jié)點(diǎn)獲取某個(gè)數(shù)據(jù)包之前,節(jié)點(diǎn)依照當(dāng)前的時(shí)間、所述數(shù)據(jù)包的時(shí)間戳以及必要的網(wǎng)絡(luò)延遲來(lái)決定所述數(shù)據(jù)包是否還有獲取的必要,如果所述數(shù)據(jù)包從產(chǎn)生到到達(dá)該節(jié)點(diǎn)的預(yù)計(jì)時(shí)間超過(guò)所述有效時(shí)間,則放棄獲取所述數(shù)據(jù)包。(3)稀少數(shù)據(jù)優(yōu)先策略在系統(tǒng)中,如果某個(gè)數(shù)據(jù)片段的提供者越少,就越難滿足播放時(shí)間Deadline的要求,因此,系統(tǒng)在每個(gè)數(shù)據(jù)調(diào)度周期,適當(dāng)優(yōu)先考慮獲取提供者數(shù)目較少的數(shù)據(jù)片段,如利用權(quán)重系數(shù)做到“適當(dāng)”。(4)數(shù)據(jù)片段的提供者為多個(gè)時(shí),可以在保證數(shù)據(jù)包的有效時(shí)間的前提下,系統(tǒng)選擇帶寬或者網(wǎng)絡(luò)狀況最好的提供者。(5)緩沖播放窗口滑動(dòng)策略系統(tǒng)預(yù)先定義一定大小的播放窗口,在每個(gè)數(shù)據(jù)調(diào)度周期來(lái)臨時(shí),節(jié)點(diǎn)根據(jù)當(dāng)前的數(shù)據(jù)流速度移動(dòng)播放窗口,當(dāng)播放窗口內(nèi)還存在沒(méi)有收到的數(shù)據(jù)包時(shí),將優(yōu)先請(qǐng)求這些數(shù)據(jù)。本發(fā)明的上述各種廣播方法中涉及的所述多媒體電話終端都可以優(yōu)選采用兩級(jí)緩存機(jī)制存儲(chǔ)所述多媒體電話終端接收的來(lái)自其他樹(shù)節(jié)點(diǎn)或伙伴的數(shù)據(jù)包,如圖2所示, 根據(jù)調(diào)度策略采取非順序接收數(shù)據(jù)包,保存在一級(jí)緩存里。一級(jí)緩存采用LRU(最近最少使用)替換策略,替換固定時(shí)問(wèn)內(nèi)訪問(wèn)次數(shù)最少的媒體塊包。一級(jí)緩存負(fù)責(zé)整個(gè)系統(tǒng)中數(shù)據(jù)包的傳輸和調(diào)度,用于多媒體電話終端同其他樹(shù)節(jié)點(diǎn)或伙伴進(jìn)行數(shù)據(jù)交換,有序的數(shù)據(jù)包保存到二級(jí)緩存里,主要負(fù)責(zé)提供給本地播放。所述數(shù)據(jù)可以先進(jìn)入一級(jí)緩存,再通過(guò)按流媒體時(shí)序先進(jìn)先出的數(shù)據(jù)進(jìn)出方式進(jìn)入二級(jí)緩存。在每個(gè)周期,樹(shù)節(jié)點(diǎn)/伙伴會(huì)將Bmap (本地?cái)?shù)據(jù)緩沖狀況)寫(xiě)入一張表內(nèi),表中記錄了每個(gè)片段在該節(jié)點(diǎn)本地保存的情況,節(jié)點(diǎn)之間就是通過(guò)這張表的傳遞以互相感知對(duì)方數(shù)據(jù)存儲(chǔ)的情況。調(diào)度的目的是根據(jù)樹(shù)節(jié)點(diǎn)/伙伴的BMap信息,盡快的從樹(shù)節(jié)點(diǎn)/伙伴上獲取媒體數(shù)據(jù)。數(shù)據(jù)緩沖及其管理是實(shí)現(xiàn)本發(fā)明的關(guān)鍵模塊之一,提高了數(shù)據(jù)分發(fā)的性能。本發(fā)明還提供了基于上述各種P2P流媒體廣播方法的多媒體電話P2P流媒體廣播系統(tǒng),其硬件部分包括多個(gè)多媒體電話終端和流媒體推送服務(wù)器。所述多媒體電話終端用于接收多媒體節(jié)目,建立從一個(gè)媒體源到若干多媒體電話終端的應(yīng)用層多播樹(shù)作為主要廣播路徑,所述媒體源為所述多播樹(shù)的根節(jié)點(diǎn),所述多播樹(shù)中的部分或全部樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn),所述超級(jí)樹(shù)節(jié)點(diǎn)與與其內(nèi)網(wǎng)相同的一個(gè)或多個(gè)節(jié)點(diǎn)組成伙伴關(guān)系,所述伙伴關(guān)系中的各節(jié)點(diǎn)采用P2P方式通信,所述各多媒體電話終端為多播樹(shù)中的一個(gè)樹(shù)節(jié)點(diǎn)或伙伴關(guān)系中的一個(gè)非超級(jí)樹(shù)節(jié)點(diǎn)的伙伴。所述多媒體電話終端優(yōu)選采用如下硬件配置CPU :DM642,閃存2GB,Linux操作系統(tǒng),視頻編碼標(biāo)準(zhǔn) JTU-H. 264,音頻編碼標(biāo)準(zhǔn):ITU-G. 722/G. 723. 1,流媒體標(biāo)準(zhǔn) Microsoft Streaming Media/MediaPlayer/Mpeg4,電話接口標(biāo)準(zhǔn):FXS/FX0,網(wǎng)絡(luò)接口 10M/100M 以太網(wǎng),DHCP、固定IP,視頻輸出RCA或VGA。所述流媒體推送服務(wù)器,用作媒體源,提供原始的流媒體數(shù)據(jù),維護(hù)和管理廣播路徑,優(yōu)選采用的硬件配置為CPU主頻2GHz以上,內(nèi)存4GB,Linux操作系統(tǒng),網(wǎng)絡(luò)接口 100M/1000M,硬盤(pán) 200GB。為了實(shí)現(xiàn)多媒體廣播,所述系統(tǒng)還包括媒體節(jié)目排播服務(wù)器和通信業(yè)務(wù)交換服務(wù)器,作為輔助硬件。所述媒體節(jié)目排播服務(wù)器,用于根據(jù)電話用戶的屬性分類(lèi),綜合各媒體客戶的播放時(shí)段、受眾要求,生成各多媒體電話終端的媒體排播表,并在通信業(yè)務(wù)交換服務(wù)器的協(xié)助下,分發(fā)到各所述多媒體電話終端執(zhí)行。所述通信業(yè)務(wù)交換服務(wù)器是整個(gè)多媒體可視電話業(yè)務(wù)的紐帶,主要用于輔助流媒體推送服務(wù)器和媒體節(jié)目排播服務(wù)器對(duì)多媒體電話終端進(jìn)行認(rèn)證與定位。此外,還可以從前臺(tái)業(yè)務(wù)支撐系統(tǒng)查取用戶信息,對(duì)終端進(jìn)行登錄認(rèn)證;接收終端的定時(shí)心跳包,維持服務(wù)器與終端間的內(nèi)外網(wǎng)通路,記憶所轄終端的通信及業(yè)務(wù)狀態(tài)信息,為各業(yè)務(wù)服務(wù)器和廣大終端提供通信及業(yè)務(wù)即時(shí)信息查詢;按電話號(hào)碼標(biāo)識(shí)與定位終端,分析與解釋電話號(hào)碼,動(dòng)態(tài)地映射到IP地址,為通信方提供終端的內(nèi)外網(wǎng)IP/端口 /掩碼信息,實(shí)現(xiàn)通信中介交換功能;傳送業(yè)務(wù)事件信息到業(yè)務(wù)統(tǒng)計(jì)/計(jì)費(fèi)服務(wù)器等。除上述硬件外,還設(shè)計(jì)有相應(yīng)的軟件以提供支持,優(yōu)選在流媒體推送服務(wù)器及多媒體電話終端上安裝Linux操作系統(tǒng),在Linux操作系統(tǒng)上,用C語(yǔ)言開(kāi)發(fā)的實(shí)現(xiàn)本發(fā)明上述協(xié)議過(guò)程的流媒體P2P廣播組件,主要包含三部分(1)節(jié)點(diǎn)管理負(fù)責(zé)維護(hù)系統(tǒng)中部分其它節(jié)點(diǎn)的視圖;(2)伙伴管理負(fù)責(zé)建立、維護(hù)和其它節(jié)點(diǎn)的伙伴關(guān)系;(3)數(shù)據(jù)調(diào)度負(fù)責(zé)動(dòng)態(tài)的和其它節(jié)點(diǎn)交換媒體數(shù)據(jù)。組件結(jié)構(gòu)關(guān)系如圖3所示。流媒體推送服務(wù)器端軟件主要完成兩大功能,其一是負(fù)責(zé)發(fā)送原始的流媒體數(shù)據(jù),其二是要維護(hù)和管理樹(shù)節(jié)點(diǎn)/伙伴信息。為簡(jiǎn)化設(shè)計(jì),基于開(kāi)源BNBT技術(shù)開(kāi)發(fā)流媒體推播服務(wù)器,服務(wù)器端系統(tǒng)采用一款開(kāi)源服務(wù)器軟件BNBT (RS BNBT Tracker VI.幻作為基礎(chǔ),并增加了媒體數(shù)據(jù)緩沖/管理模塊(此模塊也同樣應(yīng)用于客戶端軟件中)。實(shí)現(xiàn)本發(fā)明的流媒體推送服務(wù)器的軟件架構(gòu)如圖4所示。所述多媒體電話終端上實(shí)現(xiàn)本發(fā)明協(xié)議過(guò)程的流媒體P2P廣播組件是系統(tǒng)實(shí)現(xiàn)的重點(diǎn),終端軟件包括四大模塊(1)節(jié)點(diǎn)管理模塊向所述多媒體電話終端向廣播路徑中與其連接的其他節(jié)點(diǎn)發(fā)送心跳信息,并接收其它節(jié)點(diǎn)的心跳信息,動(dòng)態(tài)地維護(hù)系統(tǒng)中關(guān)系節(jié)點(diǎn)的視圖,了解各關(guān)系節(jié)點(diǎn)的帶寬能力,需要時(shí)進(jìn)行優(yōu)化調(diào)整協(xié)商;(2)伙伴管理模塊用于向其所在伙伴關(guān)系中的伙伴發(fā)送心跳信息,接收其它伙伴的心跳信息,動(dòng)態(tài)地維護(hù)系統(tǒng)中伙伴關(guān)系的視圖,建立伙伴關(guān)系內(nèi)的協(xié)作關(guān)系,并適時(shí)地維護(hù)與伙伴節(jié)點(diǎn)之間 BMap (本地?cái)?shù)據(jù)緩沖狀況),進(jìn)行信息交互,為數(shù)據(jù)緩沖/管理模塊提供鏈路支持。了解各伙伴的帶寬能力,需要時(shí)進(jìn)行優(yōu)化調(diào)整協(xié)商;(3)數(shù)據(jù)緩沖/管理模塊用于根據(jù)音視頻接口模塊以及與樹(shù)節(jié)點(diǎn)/伙伴的交互信息,動(dòng)態(tài)地與樹(shù)節(jié)點(diǎn)/伙伴進(jìn)行數(shù)據(jù)交換,并且維護(hù)著 BMap (本地?cái)?shù)據(jù)緩沖狀況);(4)音視頻接口模塊從緩沖/管理模塊中獲得媒體數(shù)據(jù),并且通過(guò)集成的媒體播放器播放。實(shí)現(xiàn)本發(fā)明的終端軟件架構(gòu)如圖5所示。超級(jí)樹(shù)節(jié)點(diǎn)與伙伴及伙伴之間數(shù)據(jù)的傳輸方向并不固定,伙伴之間根據(jù)各自的緩存的數(shù)據(jù)情況進(jìn)行數(shù)據(jù)交換,所以節(jié)點(diǎn)和伙伴需要相互知道所緩存數(shù)據(jù)的內(nèi)容。媒體數(shù)據(jù)流可被分割成相同大小的片斷,片斷是否在緩存區(qū)內(nèi)存在可以用一個(gè)緩存映射BM(buffer map)來(lái)表示。伙伴間通過(guò)不斷交換BM來(lái)了解相互間的緩存情況。在具體實(shí)現(xiàn)中,每個(gè)片斷包含1秒的數(shù)據(jù),用一個(gè)滑動(dòng)窗口(Sliding window)來(lái)代表BM,大小為120個(gè)片斷,正好對(duì)應(yīng)BM中120個(gè)比特,每個(gè)比特代表一個(gè)數(shù)據(jù)片斷,比特的值為1表示有這個(gè)片斷,0表示沒(méi)有這個(gè)片段。文中所述終端均為多媒體電話終端,所有終端都可以稱(chēng)為節(jié)點(diǎn);超級(jí)樹(shù)節(jié)點(diǎn)屬于樹(shù)節(jié)點(diǎn),其特殊性是同與其內(nèi)網(wǎng)相同的一個(gè)或多個(gè)節(jié)點(diǎn)可以組成伙伴關(guān)系,伙伴關(guān)系中的各節(jié)點(diǎn)采用P2P方式通信,互稱(chēng)伙伴,其中不直接參與多播樹(shù)數(shù)據(jù)流的伙伴(即不屬于多播樹(shù)樹(shù)節(jié)點(diǎn)的伙伴)可稱(chēng)為非超級(jí)樹(shù)節(jié)點(diǎn)的伙伴;樹(shù)節(jié)點(diǎn)之間的關(guān)系為非對(duì)等關(guān)系,用父節(jié)點(diǎn)和子節(jié)點(diǎn)加以區(qū)分;多媒體數(shù)據(jù)在樹(shù)節(jié)點(diǎn)之間的流動(dòng)方向只能從父節(jié)點(diǎn)到子節(jié)點(diǎn),通常, 一個(gè)子節(jié)點(diǎn)只有一個(gè)父節(jié)點(diǎn),而一個(gè)父節(jié)點(diǎn)可以有一個(gè)子節(jié)點(diǎn),也可以有多個(gè)子節(jié)點(diǎn)。
權(quán)利要求
1.一種多媒體電話P2P流媒體廣播方法,其特征在于建立從一個(gè)媒體源到若干多媒體電話終端的應(yīng)用層多播樹(shù)作為主要廣播路徑,所述媒體源為所述多播樹(shù)的根節(jié)點(diǎn),所述多播樹(shù)中的部分或全部樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn),所述超級(jí)樹(shù)節(jié)點(diǎn)同與其內(nèi)網(wǎng)相同的一個(gè)或多個(gè)節(jié)點(diǎn)組成伙伴關(guān)系,所述伙伴關(guān)系中的各節(jié)點(diǎn)采用P2P方式通信,請(qǐng)求流媒體服務(wù)的多媒體電話終端優(yōu)先加入與其內(nèi)網(wǎng)相同的超級(jí)樹(shù)節(jié)點(diǎn)的伙伴關(guān)系,或優(yōu)先以與其內(nèi)網(wǎng)相同的樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn)構(gòu)建新的伙伴關(guān)系,當(dāng)不存在能夠與其組成伙伴關(guān)系的樹(shù)節(jié)點(diǎn)時(shí),再加入所述多播樹(shù)成為多播樹(shù)中的樹(shù)節(jié)點(diǎn)。
2.根據(jù)權(quán)利要求1所述的多媒體電話廣播方法,其特征在于所述請(qǐng)求流媒體服務(wù)的多媒體電話終端加入多播樹(shù)的步驟為(1)所述多媒體電話終端將其電話號(hào)碼作為其標(biāo)識(shí),向流媒體推送服務(wù)器發(fā)送服務(wù)請(qǐng)求包;(2)所述流媒體推送服務(wù)器向通信業(yè)務(wù)交換服務(wù)器轉(zhuǎn)發(fā)所述服務(wù)請(qǐng)求包,所述通信業(yè)務(wù)交換服務(wù)器對(duì)所述多媒體電話終端進(jìn)行登陸認(rèn)證與伙伴查詢,返回給所述流媒體推送服務(wù)器一個(gè)含有認(rèn)證結(jié)果的認(rèn)證信息包,如果查詢到所述多媒體電話終端有伙伴,所述認(rèn)證信息包里應(yīng)包括伙伴的電話號(hào)碼信息;(3)所述流媒體推送服務(wù)器向通過(guò)認(rèn)證的所述多媒體電話終端返回含有節(jié)目授權(quán)串和伙伴信息的服務(wù)請(qǐng)求許可包;(4)所述多媒體電話終端收到服務(wù)請(qǐng)求許可包,從中取出伙伴信息列表,如果沒(méi)有伙伴信息,則向所述根節(jié)點(diǎn)請(qǐng)求入樹(shù),并成為所述多播樹(shù)的一個(gè)樹(shù)節(jié)點(diǎn),如果有伙伴信息,則向伙伴發(fā)送含有節(jié)目授權(quán)串的節(jié)目詢問(wèn)包,詢問(wèn)其是否已加入多播樹(shù)以及是否有足夠的資源為所述多媒體電話終端提供流媒體服務(wù),是則標(biāo)識(shí)所述多媒體電話終端為已加入多播樹(shù); 否則向所述根節(jié)點(diǎn)請(qǐng)求入樹(shù)并成為多播樹(shù)的一個(gè)樹(shù)節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求2所述的多媒體電話廣播方法,其特征在于所述多媒體電話終端向所述根節(jié)點(diǎn)請(qǐng)求入樹(shù)并成為所述多播樹(shù)的一個(gè)樹(shù)節(jié)點(diǎn)的過(guò)程為所述多媒體電話終端向所述流媒體推送服務(wù)器發(fā)送入樹(shù)請(qǐng)求包,所述流媒體推送服務(wù)器收到入樹(shù)請(qǐng)求包,如果有足夠的資源,則直接向所述多媒體電話終端提供流媒體服務(wù),由此使所述多媒體電話終端成為其一個(gè)直接的子節(jié)點(diǎn),否則,所述流媒體推送服務(wù)器將入樹(shù)請(qǐng)求包轉(zhuǎn)發(fā)給它的一個(gè)直接的子節(jié)點(diǎn);如果該子節(jié)點(diǎn)有伙伴,優(yōu)先將所述入樹(shù)請(qǐng)求轉(zhuǎn)發(fā)給它的一個(gè)有足夠資源的伙伴,否則由該子節(jié)點(diǎn)判斷自己是否有足夠的資源為所述多媒體電話終端提供流媒體服務(wù),是則由該直接的子節(jié)點(diǎn)為所述多媒體電話終端提供流媒體服務(wù);當(dāng)所述直接的子節(jié)點(diǎn)和其伙伴的資源情況均不允許提供流媒體服務(wù)時(shí),所述多媒體電話終端的請(qǐng)求重定向到所述流媒體推送服務(wù)器的其他直接的子節(jié)點(diǎn)進(jìn)行新一輪的上述過(guò)程或者由該直接的子節(jié)點(diǎn)轉(zhuǎn)發(fā)給其直接的子節(jié)點(diǎn)進(jìn)行在下一級(jí)子節(jié)點(diǎn)層次上的上述過(guò)程,以此類(lèi)推。
4.根據(jù)權(quán)利要求3所述的多媒體電話P2P流媒體廣播方法,其特征在于判斷一個(gè)節(jié)點(diǎn)或伙伴是否有足夠的資源的依據(jù)為該節(jié)點(diǎn)是否有所需的最近數(shù)據(jù)片和足夠的上行寬帶, 如果有,則判斷為有足夠的資源。
5.根據(jù)權(quán)利要求4所述的多媒體電話P2P流媒體廣播方法,其特征在于所述多播樹(shù)中的每個(gè)樹(shù)節(jié)點(diǎn)周期性地向其父節(jié)點(diǎn)和子節(jié)點(diǎn)發(fā)送心跳包,每個(gè)伙伴周期性地向其他伙伴發(fā)送心跳包,用以說(shuō)明本節(jié)點(diǎn)或伙伴工作正常,所述心跳包攜帶的信息包括電話號(hào)碼、機(jī)身ID、節(jié)目ID、節(jié)目授權(quán)串、數(shù)據(jù)片位圖和帶寬。
6.根據(jù)權(quán)利要求5所述的多媒體電話P2P流媒體廣播方法,其特征在于還包括對(duì)所述多播樹(shù)進(jìn)行優(yōu)化調(diào)整的節(jié)點(diǎn)調(diào)整方法,包括入樹(shù)節(jié)點(diǎn)調(diào)整方法和/或樹(shù)中節(jié)點(diǎn)調(diào)整方法,所述入樹(shù)節(jié)點(diǎn)調(diào)整方法為當(dāng)入樹(shù)請(qǐng)求被轉(zhuǎn)發(fā)給所述流媒體推送服務(wù)器的一個(gè)直接的子節(jié)點(diǎn)時(shí),如果所述多媒體電話終端的帶寬性能優(yōu)于該子節(jié)點(diǎn),則所述多媒體電話終端替代該子節(jié)點(diǎn),接管其節(jié)點(diǎn)任務(wù),該子節(jié)點(diǎn)重新請(qǐng)求入樹(shù)或成為所述多媒體電話終端的子節(jié)點(diǎn);當(dāng)入樹(shù)請(qǐng)求被轉(zhuǎn)發(fā)給某個(gè)被父節(jié)點(diǎn)選中的子節(jié)點(diǎn)時(shí),如果所述多媒體電話終端的帶寬性能優(yōu)于該子節(jié)點(diǎn),則所述多媒體電話終端替代該子節(jié)點(diǎn),接管其節(jié)點(diǎn)任務(wù),該子節(jié)點(diǎn)重新請(qǐng)求入樹(shù)或成為所述多媒體電話終端的子節(jié)點(diǎn);所述樹(shù)中節(jié)點(diǎn)調(diào)整方法為當(dāng)所述多播樹(shù)中的各個(gè)樹(shù)節(jié)點(diǎn)或超級(jí)樹(shù)節(jié)點(diǎn)的伙伴檢測(cè)或判斷到帶寬的較大變化時(shí), 通過(guò)心跳包將其帶寬性能數(shù)據(jù)通知給其父節(jié)點(diǎn)或作為伙伴的超級(jí)樹(shù)節(jié)點(diǎn),接收心跳包的樹(shù)節(jié)點(diǎn)獲得其各子節(jié)點(diǎn)或伙伴的帶寬性能數(shù)據(jù),按公式BBn= CiBlri+β B統(tǒng)計(jì)各子節(jié)點(diǎn)或伙伴的帶寬時(shí)段值,當(dāng)其某個(gè)子節(jié)點(diǎn)的帶寬時(shí)段值超過(guò)該樹(shù)節(jié)點(diǎn)一定值,或者其某個(gè)伙伴的帶寬時(shí)段值超過(guò)該樹(shù)節(jié)點(diǎn)一定值,則協(xié)商對(duì)換該樹(shù)節(jié)點(diǎn)與其子節(jié)點(diǎn)或者該樹(shù)節(jié)點(diǎn)與其伙伴在所述多播樹(shù)中的位置,上述公式中,Bn為收到第η個(gè)心跳的帶寬時(shí)段值,B為從第η個(gè)心跳包中取到的子節(jié)點(diǎn)或伙伴的帶寬值,α、β分別為權(quán)重系數(shù)。
7.根據(jù)權(quán)利要求6所述的多媒體電話Ρ2Ρ流媒體廣播方法,其特征在于采用數(shù)據(jù)調(diào)度算法在各個(gè)樹(shù)節(jié)點(diǎn)或超級(jí)樹(shù)節(jié)點(diǎn)的伙伴間調(diào)度數(shù)據(jù),所述數(shù)據(jù)調(diào)度算法采用下列規(guī)則中的一種或多種的組合(1)同一超級(jí)樹(shù)節(jié)點(diǎn)的伙伴關(guān)系中的各伙伴之間通過(guò)定時(shí)發(fā)送和接收通告包獲知其他伙伴的通信及數(shù)據(jù)片狀態(tài),發(fā)現(xiàn)并選擇有更新數(shù)據(jù)片的帶寬最優(yōu)的伙伴,針對(duì)其進(jìn)行流媒體數(shù)據(jù)片的拉操作;(2)規(guī)定每個(gè)數(shù)據(jù)包的有效時(shí)間,在向伙伴或父節(jié)點(diǎn)獲取某個(gè)數(shù)據(jù)包之前,節(jié)點(diǎn)依照當(dāng)前的時(shí)間、所述數(shù)據(jù)包的時(shí)間戳以及必要的網(wǎng)絡(luò)延遲來(lái)決定所述數(shù)據(jù)包是否還有獲取的必要,如果所述數(shù)據(jù)包從產(chǎn)生到到達(dá)的預(yù)計(jì)時(shí)間超過(guò)所述有效時(shí)間,則放棄獲取所述數(shù)據(jù)包;(3)在每個(gè)數(shù)據(jù)調(diào)度周期,適當(dāng)優(yōu)先考慮獲取提供者數(shù)目較少的數(shù)據(jù)片段;(4)數(shù)據(jù)片段的提供者為多個(gè)時(shí),在保證數(shù)據(jù)包的有效時(shí)間的前提下,選擇帶寬或者網(wǎng)絡(luò)狀況最好的提供者;(5)預(yù)先定義一定大小的播放窗口,在每個(gè)數(shù)據(jù)調(diào)度周期來(lái)臨時(shí),節(jié)點(diǎn)根據(jù)當(dāng)前的數(shù)據(jù)流速度移動(dòng)播放窗口,當(dāng)播放窗口內(nèi)還存在沒(méi)有收到的數(shù)據(jù)包時(shí),優(yōu)先請(qǐng)求相應(yīng)的數(shù)據(jù)。
8.根據(jù)權(quán)利要求1-7中任一權(quán)利要求所述的多媒體電話Ρ2Ρ流媒體廣播方法,其特征在于所述多媒體電話終端采用二級(jí)緩存機(jī)制存儲(chǔ)所述多媒體電話終端接收的來(lái)自其他樹(shù)節(jié)點(diǎn)或伙伴的數(shù)據(jù)包,一級(jí)緩存中存儲(chǔ)的數(shù)據(jù)包無(wú)序,用于多媒體電話終端同其他樹(shù)節(jié)點(diǎn)或伙伴進(jìn)行數(shù)據(jù)交換,所述一級(jí)緩存采用LRU替換策略,替換固定時(shí)間內(nèi)訪問(wèn)次數(shù)最少的數(shù)據(jù)包,所述二級(jí)緩存中存儲(chǔ)的數(shù)據(jù)包有序,主要用于本地的媒體播放,所述二級(jí)緩存依據(jù)流媒體的時(shí)序采用先進(jìn)先出的數(shù)據(jù)進(jìn)出方式。
9.根據(jù)權(quán)利要求8所述的多媒體電話P2P流媒體廣播方法,其特征在于所述多媒體電話終端采用下列正常離樹(shù)或非正常離樹(shù)的方式離開(kāi)多播樹(shù),所述正常離樹(shù)方式為樹(shù)節(jié)點(diǎn)正常離開(kāi)多播樹(shù)時(shí),通知其父節(jié)點(diǎn)收回資源,并且重定向其子節(jié)點(diǎn)的數(shù)據(jù)傳輸,通知其直接的子節(jié)點(diǎn)或伙伴重新恢復(fù)連接;所述非正常離樹(shù)的方式為每個(gè)樹(shù)節(jié)點(diǎn)周期性向其父節(jié)點(diǎn)以及可能有的直接子節(jié)點(diǎn)和伙伴發(fā)送心跳包,說(shuō)明自己工作正常,如果某個(gè)父節(jié)點(diǎn)在一定周期內(nèi)沒(méi)有收到其直接子節(jié)點(diǎn)正常的消息,則認(rèn)為其直接子節(jié)點(diǎn)己經(jīng)非正常離開(kāi)多播樹(shù),該父節(jié)點(diǎn)將回收服務(wù)該子節(jié)點(diǎn)的資源,如果某個(gè)子節(jié)點(diǎn)或伙伴在一定周期內(nèi)沒(méi)有收到其父節(jié)點(diǎn)或與其建立伙伴關(guān)系的超級(jí)樹(shù)節(jié)點(diǎn)正常的消息,則認(rèn)為其父節(jié)點(diǎn)或與其建立伙伴關(guān)系的超級(jí)樹(shù)節(jié)點(diǎn)己經(jīng)非正常離開(kāi)多播樹(shù),該子節(jié)點(diǎn)或伙伴重新恢復(fù)連接;所述子節(jié)點(diǎn)采用下列任一一種方式重新恢復(fù)連接(1)所述子節(jié)點(diǎn)重新申請(qǐng)入樹(shù);(2) 所述子節(jié)點(diǎn)取出其備用的父節(jié)點(diǎn)的IP地址及端口號(hào),請(qǐng)求與其建立連接成為其子節(jié)點(diǎn),所述備用的父節(jié)點(diǎn)接到該請(qǐng)求后,判斷是否有足夠的資源可提供服務(wù),如果是,則接管原父節(jié)點(diǎn)的工作,為該子節(jié)點(diǎn)提供服務(wù),該子節(jié)點(diǎn)再次申請(qǐng)備用的父節(jié)點(diǎn),如果否,該子節(jié)點(diǎn)重新申請(qǐng)入樹(shù);所述終端在加入多播樹(shù)后,向根節(jié)點(diǎn)申請(qǐng)備用的父節(jié)點(diǎn),并保留根節(jié)點(diǎn)反饋的備用的父節(jié)點(diǎn)的IP地址及端口號(hào);所述伙伴采用下列任一一種方式重新恢復(fù)連接(1)所述伙伴重新申請(qǐng)入樹(shù);( 原伙伴關(guān)系中的各伙伴之間通過(guò)協(xié)商選擇其中資源狀況最好的伙伴替代原超級(jí)樹(shù)節(jié)點(diǎn),當(dāng)原伙伴關(guān)系中的伙伴只有一個(gè)時(shí),該伙伴直接替代原超級(jí)樹(shù)節(jié)點(diǎn)。
10.一種采用權(quán)利要求1-9中任一一個(gè)權(quán)利要求所述多媒體電話P2P流媒體廣播方法的多媒體電話P2P流媒體廣播系統(tǒng),其特征在于包括多個(gè)多媒體電話終端,用于接收多媒體節(jié)目,建立從一個(gè)媒體源到若干多媒體電話終端的應(yīng)用層多播樹(shù)作為主要廣播路徑,所述媒體源為所述多播樹(shù)的根節(jié)點(diǎn),所述多播樹(shù)中的部分或全部樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn),所述超級(jí)樹(shù)節(jié)點(diǎn)與與其內(nèi)網(wǎng)相同的一個(gè)或多個(gè)節(jié)點(diǎn)組成伙伴關(guān)系,所述伙伴關(guān)系中的各節(jié)點(diǎn)采用P2P方式通信,所述各多媒體電話終端為多播樹(shù)中的一個(gè)樹(shù)節(jié)點(diǎn)或伙伴關(guān)系中的一個(gè)非超級(jí)樹(shù)節(jié)點(diǎn)的伙伴;流媒體推送服務(wù)器,用作媒體源,提供原始的流媒體數(shù)據(jù),維護(hù)和管理廣播路徑;媒體節(jié)目排播服務(wù)器,用于根據(jù)電話用戶的屬性分類(lèi),綜合各媒體客戶的播放時(shí)段、受眾要求,生成各多媒體電話終端的媒體排播表,并在通信業(yè)務(wù)交換服務(wù)器的協(xié)助下,分發(fā)到各所述多媒體電話終端執(zhí)行;以及通信業(yè)務(wù)交換服務(wù)器,主要輔助流媒體推送服務(wù)器和媒體節(jié)目排播服務(wù)器對(duì)多媒體電話終端進(jìn)行認(rèn)證與定位。
11.根據(jù)權(quán)利要求10所述的多媒體電話P2P廣播系統(tǒng),其特征在于所述多媒體電話終端設(shè)有流媒體P2P廣播組件,所述流媒體P2P廣播組件設(shè)有四大模塊(1)節(jié)點(diǎn)管理模塊,用于控制所述多媒體電話終端向廣播路徑中與其連接的其他節(jié)點(diǎn)發(fā)送心跳信息,并接收其他節(jié)點(diǎn)的心跳信息,動(dòng)態(tài)地維護(hù)系統(tǒng)中關(guān)系節(jié)點(diǎn)的視圖,了解各關(guān)系節(jié)點(diǎn)的帶寬能力,需要時(shí)進(jìn)行優(yōu)化調(diào)整協(xié)商;(2)伙伴管理模塊,用于向其所在伙伴關(guān)系中的伙伴發(fā)送心跳信息,接收其他伙伴的心跳信息,動(dòng)態(tài)地維護(hù)系統(tǒng)中伙伴關(guān)系的視圖,建立伙伴關(guān)系內(nèi)的協(xié)作關(guān)系,并適時(shí)地維護(hù)與伙伴之間的本地?cái)?shù)據(jù)緩沖狀況,進(jìn)行信息交互,為數(shù)據(jù)緩沖/管理模塊提供鏈路支持,了解各伙伴的帶寬能力,需要時(shí)進(jìn)行優(yōu)化調(diào)整協(xié)商;(3)數(shù)據(jù)緩沖/管理模塊,用于根據(jù)音視頻接口模塊以及與樹(shù)節(jié)點(diǎn)/伙伴的交互信息, 動(dòng)態(tài)地與樹(shù)節(jié)點(diǎn)/伙伴進(jìn)行數(shù)據(jù)交換,并維護(hù)本地?cái)?shù)據(jù)緩沖狀況;(4)音視頻接口模塊,用于從所述數(shù)據(jù)緩沖/管理模塊中獲得媒體數(shù)據(jù),并且通過(guò)集成的媒體播放器播放。
全文摘要
本發(fā)明涉及一種多媒體電話P2P流媒體廣播方法,建立從一個(gè)媒體源到若干多媒體電話終端的應(yīng)用層多播樹(shù)作為主要廣播路徑,所述媒體源為所述多播樹(shù)的根節(jié)點(diǎn),所述多播樹(shù)中的部分或全部樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn),所述超級(jí)樹(shù)節(jié)點(diǎn)同與其內(nèi)網(wǎng)相同的一個(gè)或多個(gè)節(jié)點(diǎn)組成伙伴關(guān)系,所述伙伴關(guān)系中的各節(jié)點(diǎn)采用P2P方式通信。請(qǐng)求服務(wù)的終端優(yōu)先加入與其內(nèi)網(wǎng)相同的超級(jí)樹(shù)節(jié)點(diǎn)的伙伴關(guān)系,或優(yōu)先以與其內(nèi)網(wǎng)相同的樹(shù)節(jié)點(diǎn)為超級(jí)樹(shù)節(jié)點(diǎn)構(gòu)建新的伙伴關(guān)系基于該方法的系統(tǒng)從軟硬件方面為實(shí)現(xiàn)上述方法提供了支持。采用本發(fā)明的方法或系統(tǒng),可以提高網(wǎng)絡(luò)路由效率、減輕骨干網(wǎng)絡(luò)壓力,是一種經(jīng)濟(jì)性好、綜合廣播性能好的可行的P2P多媒體廣播方案,易于推廣應(yīng)用。
文檔編號(hào)H04L29/06GK102307216SQ20111006340
公開(kāi)日2012年1月4日 申請(qǐng)日期2011年3月15日 優(yōu)先權(quán)日2011年3月15日
發(fā)明者廖永紅, 陳建國(guó) 申請(qǐng)人:廣州泛網(wǎng)視訊科技有限公司, 陳建國(guó)