專利名稱:視頻點(diǎn)播方法、系統(tǒng)、服務(wù)器和終端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的技術(shù)領(lǐng)域是音視頻網(wǎng)絡(luò)播放系統(tǒng)中的視頻點(diǎn)播功能,視頻點(diǎn)播是因特網(wǎng)數(shù)字電視(IPTV),個人電腦電視(PCTV)等領(lǐng)域中的最為重要的功能之一。視頻點(diǎn)播可以讓用戶通過視頻點(diǎn)播終端按照自己的需求隨意的選擇收視節(jié)目,隨時點(diǎn)播自己喜歡的節(jié)目進(jìn)行收看。目前的視頻點(diǎn)播功能主要實現(xiàn)分為兩種方式一是通過對每個點(diǎn)播在視頻點(diǎn)播服務(wù)器與視頻點(diǎn)播終端之間建立單播來發(fā)送節(jié)目數(shù)據(jù)實現(xiàn)點(diǎn)播功能。二是利用固定時間間隔的組播,讓用戶等待加入不同的組播組收視節(jié)目。這兩種方式都存在自己的不足,一是視頻點(diǎn)播服務(wù)器負(fù)載大,視頻點(diǎn)播服務(wù)器網(wǎng)絡(luò)帶寬要求高,二是響應(yīng)延遲時間較長,用戶體驗差。為描述方便,在本說明書中以下將視頻點(diǎn)播服務(wù)器簡稱為服務(wù)器,將視頻點(diǎn)播終端簡稱為終端。
為了實現(xiàn)真正的視頻點(diǎn)播(VOD)功能,及時地響應(yīng)用戶點(diǎn)播通常利用IP網(wǎng)的單播來實現(xiàn)。通過單播的方式實現(xiàn)VOD的主要流程如圖1所示,包括步驟步驟101、終端選擇一個節(jié)目,并向服務(wù)器發(fā)送點(diǎn)播請求;步驟102、服務(wù)器接收到上述點(diǎn)播請求,根據(jù)終端的IP地址和點(diǎn)播內(nèi)容利用單播方式向終端發(fā)送節(jié)目數(shù)據(jù);步驟103、終端接收服務(wù)器發(fā)送的節(jié)目數(shù)據(jù),解碼播放實現(xiàn)VOD。
這種采用IP網(wǎng)的單播發(fā)送節(jié)目數(shù)據(jù)的方法,可以快速的響應(yīng)用戶的點(diǎn)播,實現(xiàn)點(diǎn)播的即時響應(yīng),提供較好的用戶感受。
利用單播的方式實現(xiàn)VOD功能,針對每一個點(diǎn)播服務(wù)器都需要建立一個連接并發(fā)送數(shù)據(jù)。當(dāng)同一時刻大量的點(diǎn)播發(fā)生時,服務(wù)器的負(fù)荷將會很大,同時服務(wù)器將消耗大量的帶寬。在現(xiàn)有的服務(wù)器功能和網(wǎng)絡(luò)帶寬的情況下,大量發(fā)生的點(diǎn)播將會導(dǎo)致服務(wù)器的響應(yīng)緩慢,網(wǎng)絡(luò)堵塞。
針對利用單播方式下的實現(xiàn)VOD對服務(wù)器的功能和網(wǎng)絡(luò)要求都過高的缺點(diǎn),有相關(guān)技術(shù)人員提出了利用組播技術(shù)實現(xiàn)VOD功能的方法。通常利用組播技術(shù)實現(xiàn)VOD技術(shù)的方法是利用將節(jié)目分不同的時間發(fā)起多個組播。常用的方法就是每隔一段時間建立一個組播,并向整個網(wǎng)絡(luò)發(fā)送節(jié)目數(shù)據(jù)。當(dāng)終端點(diǎn)播節(jié)目后,服務(wù)器將該節(jié)目對應(yīng)的下一個組播地址發(fā)送給終端,通知終端加入下一個組播接收節(jié)目數(shù)據(jù);終端根據(jù)接收的組播地址接收服務(wù)器以組播方式發(fā)送的節(jié)目數(shù)據(jù)。
還有一種現(xiàn)有技術(shù)是針對一個節(jié)目固定建立多個組播,將每個節(jié)目按時間分成多個節(jié)目片,并將節(jié)目片按照一定的算法排序。組播中,按照節(jié)目片排序順序循環(huán)的播放。終端點(diǎn)播節(jié)目是就是同時加入多個組播,接收數(shù)據(jù)并存儲,當(dāng)接收到節(jié)目開始的第一個節(jié)目片時開始播放。具體的方法例子如下例如一個50分鐘的,節(jié)目流為1Mbps的原始節(jié)目文件。將節(jié)目分為51塊,分別附給從0到50的塊號,將節(jié)目塊按照以下順序進(jìn)行發(fā)送0,0,50,36,35,1,19;0,9,6,3,2,20,1;0,49,38,37,21,3,1;0,10,5,4,22,2,1;0,40,39,23,7,5,1;0,24,11,6,3,2,1;0,46,42,41,25,7,1;0,12,8,26,4,2,1;0,44,43,27,9,3,1;0,28,13,10,5,2,1;0,45,30,29,14,11,1;0,12,6,4,3,2,1;0,48,47,33,31,13,1;0,32,15,14,7,2,1;0,16,17,15,5,3,1;
0,34,18,8,4,2,1。
在以7Mbps的速度的發(fā)送情況下節(jié)目的點(diǎn)播響應(yīng)時間為60秒左右。要達(dá)到即時響應(yīng),即以兩秒為標(biāo)準(zhǔn)的話則需要以210Mbps的速率進(jìn)行組播。
通常的利用組播的方式發(fā)送節(jié)目來實現(xiàn)VOD功能的方法的響應(yīng)時間較長。響應(yīng)的時間與服務(wù)器負(fù)擔(dān)成反比,當(dāng)要求響應(yīng)節(jié)目時間為2秒時,一個2小時的節(jié)目在同一時間內(nèi)將要求3600個組播。在快速響應(yīng)的情況下,起不到降低服務(wù)器負(fù)擔(dān)的作用。
針對一個節(jié)目進(jìn)行分片排序組播的方法,分片的算法復(fù)雜。同時在以這種方法的響應(yīng)時間以服務(wù)器和終端之間的傳送速度為代價,響應(yīng)時間每減小一倍,傳送節(jié)目的速率要增大一倍,同時當(dāng)節(jié)目的長度增大一倍時,節(jié)目的傳送速率也將增大一倍。例如一個100分鐘的節(jié)目,節(jié)目碼流為1Mbps,那么2秒響應(yīng)時間的點(diǎn)播則要求終端的接收帶寬為7×30×2=420Mbps;這對終端的要求過高。
由此可見利用組播方式實現(xiàn)VOD功能的方法存在較長延遲時間的問題。這個問題的解決要么起不到降低服務(wù)器負(fù)擔(dān)的作用,要么對終端要求太高。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種視頻點(diǎn)播方法、一種視頻點(diǎn)播系統(tǒng)、一種視頻點(diǎn)播服務(wù)器和一種視頻點(diǎn)播終端,能夠解決現(xiàn)有技術(shù)中存在的組播時延長的問題,并能夠降低服務(wù)器負(fù)擔(dān),降低對終端的要求。
為了達(dá)到上述目的的第一個方面,本發(fā)明提供了一種視頻點(diǎn)播方法,該方法包含以下步驟A、視頻點(diǎn)播服務(wù)器接收到來自視頻點(diǎn)播終端的點(diǎn)播請求后,響應(yīng)該請求,以單播方式向視頻點(diǎn)播終端發(fā)送點(diǎn)播的節(jié)目數(shù)據(jù),視頻點(diǎn)播終端接收所述單播的節(jié)目數(shù)據(jù)并播放;B、視頻點(diǎn)播服務(wù)器為點(diǎn)播相同的所述節(jié)目數(shù)據(jù)的視頻點(diǎn)播終端建立組播,以組播方式發(fā)送所述節(jié)目數(shù)據(jù),并將所述組播信息通知給所述點(diǎn)播相同節(jié)目的視頻點(diǎn)播終端;C、接收到組播信息的視頻點(diǎn)播終端根據(jù)該組播信息接收所述組播的節(jié)目數(shù)據(jù)并存儲;D、當(dāng)視頻點(diǎn)播終端接收的所述單播的節(jié)目數(shù)據(jù)與該視頻點(diǎn)播終端中存儲的所述組播的節(jié)目數(shù)據(jù)重合后,視頻點(diǎn)播服務(wù)器停止以單播方式向視頻點(diǎn)播終端發(fā)送節(jié)目數(shù)據(jù),視頻點(diǎn)播終端讀取所述存儲的組播節(jié)目數(shù)據(jù)并播放。
較佳地,所述步驟B包括B1、視頻點(diǎn)播服務(wù)器判斷當(dāng)前是否存在發(fā)送所述節(jié)目數(shù)據(jù)的組播,如果是,執(zhí)行步驟B2;否則執(zhí)行所述步驟B3;B2、視頻點(diǎn)播服務(wù)器將所述組播的信息通知給該組播對應(yīng)的視頻點(diǎn)播終端;B3、視頻點(diǎn)播服務(wù)器建立組播發(fā)送所述節(jié)目數(shù)據(jù),然后執(zhí)行步驟B2。
較佳地,所述步驟B3中進(jìn)一步包括視頻點(diǎn)播服務(wù)器存儲所建立的組播信息;所述步驟B1中,視頻點(diǎn)播服務(wù)器根據(jù)存儲的組播信息執(zhí)行所述判斷步驟。
較佳地,所述存儲的組播信息包括包括節(jié)目的ID號、組播的時間標(biāo)記和組播地址;則所述步驟B2中,通知給視頻點(diǎn)播終端的組播信息為組播地址。
較佳地,所述組播的時間標(biāo)記為該組播所對應(yīng)單播中最早開始的單播的開始時間;或為在該組播所對應(yīng)單播中最早開始的單播的開始時間之后預(yù)先設(shè)定延遲時間的時刻。
較佳地,所述步驟B3之前進(jìn)一步包括B30、視頻點(diǎn)播服務(wù)器判斷是否可以建立組播,如果是執(zhí)行所述步驟B3;否則直接結(jié)束該流程。
步驟B1中所述的判斷步驟可以為
B11、視頻點(diǎn)播服務(wù)器判斷在該時刻之前預(yù)先設(shè)定的時間之內(nèi)是否存在發(fā)送所述節(jié)目數(shù)據(jù)的組播;步驟B30中所述的判斷步驟為B301、視頻點(diǎn)播服務(wù)器判斷在該時刻之前預(yù)先設(shè)定的時間之內(nèi)是否存在針對所述節(jié)目數(shù)據(jù)的單播,如果是,在步驟B3之后執(zhí)行的步驟B2中,所述的組播對應(yīng)的視頻點(diǎn)播終端為所述視頻點(diǎn)播終端和所述存在的針對所述節(jié)目數(shù)據(jù)的單播對應(yīng)的視頻點(diǎn)播終端。
步驟B1中所述的判斷步驟還可以為B12、視頻點(diǎn)播服務(wù)器判斷在該時刻所在的預(yù)先設(shè)定的時間跨度內(nèi),是否存在發(fā)送所述相同節(jié)目數(shù)據(jù)的組播;步驟B30中所述的判斷步驟為B302、視頻點(diǎn)播服務(wù)器判斷在該時刻所在的預(yù)先設(shè)定的時間跨度內(nèi),針對所述節(jié)目數(shù)據(jù)的單播數(shù)量是否達(dá)到或超過了預(yù)先設(shè)定的最小單播數(shù)量,如果是,在步驟B3之后執(zhí)行的步驟B2中,所述的組播對應(yīng)的視頻點(diǎn)播終端為所述視頻點(diǎn)播終端和所述針對所述節(jié)目數(shù)據(jù)的單播對應(yīng)的視頻點(diǎn)播終端。
較佳地,步驟A中進(jìn)一步包括視頻點(diǎn)播服務(wù)器記錄所述單播信息;則步驟B30中,視頻點(diǎn)播服務(wù)器根據(jù)所述記錄的單播信息判斷是否可以建立組播。
較佳地,所述步驟D為視頻點(diǎn)播終端確定出自身接收的所述單播的節(jié)目數(shù)據(jù)和自身中存儲的所述組播的節(jié)目數(shù)據(jù)重合后,向視頻點(diǎn)播服務(wù)器發(fā)送中止單播請求,然后讀取所述存儲的組播節(jié)目數(shù)據(jù)并播放。
較佳地,所述視頻點(diǎn)播終端確定自身接收的所述單播的節(jié)目數(shù)據(jù)和自身中存儲的所述組播的節(jié)目數(shù)據(jù)重合的方法為將節(jié)目數(shù)據(jù)劃分為塊,并為每塊設(shè)置塊號,當(dāng)視頻點(diǎn)播終端識別出所存儲的組播節(jié)目數(shù)據(jù)中存在與當(dāng)前接收的單播節(jié)目數(shù)據(jù)的塊號相同時,確定出自身接收的單播節(jié)目數(shù)據(jù)和自身中存儲的組播節(jié)目數(shù)據(jù)重合;或為所述節(jié)目數(shù)據(jù)中包括時間信息,當(dāng)視頻點(diǎn)播終端識別出所存儲的組播節(jié)目數(shù)據(jù)中存在與當(dāng)前接收的單播節(jié)目數(shù)據(jù)包括相同時間信息時,確定出自身接收的單播節(jié)目數(shù)據(jù)和自身中存儲的組播節(jié)目數(shù)據(jù)重合。
較佳地,所述步驟D為視頻點(diǎn)播服務(wù)器根據(jù)向視頻點(diǎn)播終端以單播形式和組播形式發(fā)送數(shù)據(jù)的時間,確定出視頻點(diǎn)播終端接收的單播節(jié)目數(shù)據(jù)和該視頻點(diǎn)播終端中存儲的組播節(jié)目數(shù)據(jù)重合后,停止所述的以單播方式向視頻點(diǎn)播終端發(fā)送節(jié)目數(shù)據(jù)。
為達(dá)到上述目的的第二個方面,本發(fā)明提供了一種視頻點(diǎn)播系統(tǒng),該系統(tǒng)包括該視頻點(diǎn)播系統(tǒng)包括視頻點(diǎn)播服務(wù)器和視頻點(diǎn)播終端;其中,視頻點(diǎn)播服務(wù)器用于根據(jù)來自視頻點(diǎn)播終端的點(diǎn)播請求向其以單播形式發(fā)送對應(yīng)節(jié)目數(shù)據(jù);和發(fā)送組播節(jié)目數(shù)據(jù),并將確定的所述視頻點(diǎn)播終端加入的組播信息發(fā)送給視頻點(diǎn)播終端;和根據(jù)接收單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)的視頻點(diǎn)播終端所接收的數(shù)據(jù)重合的信息,停止向視頻點(diǎn)播終端發(fā)送單播節(jié)目數(shù)據(jù);視頻點(diǎn)播終端用于根據(jù)用戶的點(diǎn)播請求向視頻點(diǎn)播服務(wù)器發(fā)送點(diǎn)播請求,接收并播放視頻點(diǎn)播服務(wù)器以單播方式發(fā)送的節(jié)目數(shù)據(jù);和根據(jù)來自視頻點(diǎn)播服務(wù)器的組播信息接收組播節(jié)目數(shù)據(jù);和根據(jù)自身以單播方式接收的節(jié)目數(shù)據(jù)和以組播方式接收的節(jié)目數(shù)據(jù)重合的信息,讀取存儲的組播節(jié)目數(shù)據(jù)并播放。
為達(dá)到上述目的的第三個方面,本發(fā)明提供了一種視頻點(diǎn)播服務(wù)器,該服務(wù)器包括通訊模塊、決策模塊和存儲模塊;其中,通訊模塊用于接收來自終端點(diǎn)播請求,響應(yīng)該請求讀取并以單播方式發(fā)送存儲模塊中的對應(yīng)節(jié)目數(shù)據(jù),并將點(diǎn)播請求傳送給決策模塊;和將來自決策模塊的組播信息發(fā)送給終端,并根據(jù)來自決策模塊的發(fā)起組播的信息從存儲模塊中讀取并以組播方式發(fā)送對應(yīng)的節(jié)目數(shù)據(jù),以及根據(jù)來自終端的中止請求停止讀取和發(fā)送對應(yīng)的節(jié)目數(shù)據(jù);決策模塊用于根據(jù)來自通訊模塊的點(diǎn)播請求確定是否將終端加入已有的組播,或是否需要發(fā)起組播,并根據(jù)確定出的將終端加入已有組播的信息或發(fā)起組播的信息,將組播信息發(fā)送給通訊模塊;和將發(fā)起的組播的信息存儲在存儲模塊;存儲模塊,用于存儲節(jié)目數(shù)據(jù)和組播信息。
進(jìn)一步地,所述決策模塊可以用于根據(jù)向同一視頻點(diǎn)播終端發(fā)送單播節(jié)目數(shù)據(jù)的時間和組播節(jié)目數(shù)據(jù)的時間,確定終端接收的單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)的視頻點(diǎn)播終端所接收的數(shù)據(jù)是否重合,并將確定出的重合的信息發(fā)送給通訊模塊;則所述通訊模塊進(jìn)一步用于接收來自決策模塊的所述重合的信息,并根據(jù)該重合的信息停止以單播方式發(fā)送存儲模塊中的對應(yīng)節(jié)目數(shù)據(jù)。
為達(dá)到上述目的的第四個方面,本發(fā)明提供了一種視頻點(diǎn)播終端,該終端包括通訊模塊、播放控制模塊和存儲模塊;其中,通訊模塊用于接收來自服務(wù)器的單播節(jié)目數(shù)據(jù)并將單播節(jié)目數(shù)據(jù)傳送給播放控制模塊,以及根據(jù)來自服務(wù)器的組播信息接收組播節(jié)目數(shù)據(jù)并存儲到存儲模塊中;并用于將用戶發(fā)起的點(diǎn)播請求和來自播放控制模塊的中止單播請求發(fā)送給服務(wù)器;播放控制模塊用于接收來自通訊模塊的單播節(jié)目數(shù)據(jù)并進(jìn)行解碼播放;或根據(jù)確定出的單播節(jié)目數(shù)據(jù)中止的信息讀取存儲模塊中存儲的組播節(jié)目數(shù)據(jù)并進(jìn)行節(jié)目播放;存儲模塊用于存儲組播節(jié)目數(shù)據(jù)。
所述終端中可以進(jìn)一步包括判斷模塊,用于判斷所的接收的單播節(jié)目數(shù)據(jù)和存儲模塊中存儲的組播節(jié)目數(shù)據(jù)是否重合,并將確定出的單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)重合的信息發(fā)送給播放控制模塊和通訊模塊;所述播放控制模塊進(jìn)一步用于根據(jù)來自判斷模塊的所述重合的信息停止播放所述單播節(jié)目數(shù)據(jù),讀取存儲模塊中存儲的組播節(jié)目數(shù)據(jù)并播放;所述通訊模塊進(jìn)一步用于根據(jù)來自判斷模塊的所述重合的信息向視頻點(diǎn)播服務(wù)器發(fā)送中止單播請求。
從以上方案可以看出,本發(fā)明中通過視頻點(diǎn)播服務(wù)器接收到來自視頻點(diǎn)播終端的點(diǎn)播請求后,以單播形式向終端發(fā)送所點(diǎn)播的節(jié)目數(shù)據(jù),達(dá)到了對終端點(diǎn)播請求的即時響應(yīng);此后,服務(wù)器為多個點(diǎn)播相同節(jié)目數(shù)據(jù)的終端建立組播組,并向所述多個終端以組播方式發(fā)送所述相同的節(jié)目數(shù)據(jù),終端接收以組播方式發(fā)送的節(jié)目數(shù)據(jù)并存儲;當(dāng)終端接收的服務(wù)器以單播方式發(fā)送的節(jié)目數(shù)據(jù)與終端存儲的服務(wù)器以組播方式發(fā)送的節(jié)目數(shù)據(jù)重合時,服務(wù)器停止以單播方式向終端發(fā)送節(jié)目數(shù)據(jù),從而又通過組播向多個終端發(fā)送數(shù)據(jù)而降低了對資源的占用。
圖1為現(xiàn)有技術(shù)的單播流程圖;圖2為本發(fā)明方法的總體流程圖;圖3為本發(fā)明方法第一實施例中服務(wù)器與終端交互的流程圖;圖4為本發(fā)明的系統(tǒng)組成示意圖;圖5為本發(fā)明方法第一實施例中服務(wù)器內(nèi)部處理流程圖;圖6為本發(fā)明方法第一實施例中終端內(nèi)部處理流程圖;圖7為本發(fā)明方法第一實施例一種案例的系統(tǒng)示意圖;圖8為本發(fā)明方法第二實施例中服務(wù)器與終端交互的流程圖;圖9為本發(fā)明方法第三實施例中服務(wù)器與終端交互的流程圖;圖10為本發(fā)明方法第四實施例中服務(wù)器內(nèi)部的處理流程圖;圖11為本發(fā)明方法第四實施例中終端內(nèi)部的處理流程圖;圖12為終端播放控制示意圖。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)描述。
本發(fā)明的主要思想是,視頻點(diǎn)播服務(wù)器,以下簡稱服務(wù)器,接收到來自視頻點(diǎn)播終端,以下簡稱終端,的點(diǎn)播請求后,立即以單播形式向終端發(fā)送所點(diǎn)播的節(jié)目數(shù)據(jù),以達(dá)到即時響應(yīng);此后,服務(wù)器為多個點(diǎn)播相同節(jié)目數(shù)據(jù)的終端建立組播組,并向所述多個終端以組播方式發(fā)送所述相同的節(jié)目數(shù)據(jù),終端接收以組播方式發(fā)送的節(jié)目數(shù)據(jù)并存儲;當(dāng)終端接收的服務(wù)器以單播方式發(fā)送的節(jié)目數(shù)據(jù)與終端存儲的服務(wù)器以組播方式發(fā)送的節(jié)目數(shù)據(jù)重合時,服務(wù)器停止以單播方式向終端發(fā)送節(jié)目數(shù)據(jù),從而又通過組播向多個終端發(fā)送數(shù)據(jù)而降低了對資源的占用。
本發(fā)明的總體流程如圖2所示,包括以下步驟步驟201、服務(wù)器接收到來自終端的點(diǎn)播請求后,響應(yīng)該請求,以單播方式向終端發(fā)送點(diǎn)播的節(jié)目數(shù)據(jù),終端接收所述單播的節(jié)目數(shù)據(jù)并播放;步驟202、服務(wù)器為點(diǎn)播相同的所述節(jié)目數(shù)據(jù)的終端建立組播,以組播方式發(fā)送所述節(jié)目數(shù)據(jù),并將所述組播信息通知給所述點(diǎn)播相同節(jié)目的終端;步驟203、接收到組播信息的終端根據(jù)該組播信息接收所述組播的節(jié)目數(shù)據(jù)并存儲;步驟204、當(dāng)終端接收的所述單播的節(jié)目數(shù)據(jù)與該終端中存儲的所述組播的節(jié)目數(shù)據(jù)重合后,服務(wù)器停止以單播方式向終端發(fā)送節(jié)目數(shù)據(jù),終端讀取所述存儲的組播節(jié)目數(shù)據(jù)并播放。
為了降低服務(wù)器的負(fù)擔(dān),在上述步驟202中,服務(wù)器可以根據(jù)預(yù)先設(shè)定的條件建立組播,該條件可以是在一定時間跨度T內(nèi)對同一節(jié)目發(fā)起單播達(dá)到或超過了最小單播數(shù)量N;該條件還可以是在當(dāng)前單播之前的T′時間內(nèi)沒有組播,但存在針對相同節(jié)目的單播;該條件也可以只是沒有針對相同節(jié)目的組播。
另外,為了保證終端在接收組播節(jié)目數(shù)據(jù)一段時間后,可以停止接收單播節(jié)目數(shù)據(jù),在建立組播后,以組播方式發(fā)送的節(jié)目數(shù)據(jù)進(jìn)度需要與該組播對應(yīng)的單播中最早開始的單播的進(jìn)度同步或稍快于該單播的進(jìn)度。
在步驟204中,確定終端接收的單播的節(jié)目數(shù)據(jù)與終端中存儲的組播的節(jié)目數(shù)據(jù)是否重合,可以由終端來執(zhí)行,則終端根據(jù)接收的節(jié)目數(shù)據(jù)信息確定出節(jié)目數(shù)據(jù)重合后,需要通知服務(wù)器停止以單播方式向該終端發(fā)送節(jié)目數(shù)據(jù);也可以是由服務(wù)器來執(zhí)行,則服務(wù)器根據(jù)發(fā)送的節(jié)目進(jìn)度確定出終端以兩種方式接收的節(jié)目數(shù)據(jù)重合后,停止以單播方式向該終端發(fā)送數(shù)據(jù)。
以下通過具體實施例對本發(fā)明進(jìn)行詳細(xì)說明。
在本發(fā)明的第一實施例中,服務(wù)器預(yù)先設(shè)定建立組播的時間跨度T和最小單播數(shù)量N。其中,時間跨度T可以根據(jù)服務(wù)器的能力、網(wǎng)絡(luò)狀況以及終端的存儲能力確定,如果服務(wù)器的能力較強(qiáng),網(wǎng)絡(luò)狀況較好,則可以將時間跨度設(shè)置的小一些,這樣對于終端存儲能力的要求就低;如果終端的存儲能力較強(qiáng),則可以將時間跨度設(shè)置的大一些。而最小單播數(shù)量N,則根據(jù)組播和單播的資源耗費(fèi)情況確定,最小單播數(shù)量應(yīng)該滿足在這個值N時,組播的代價和N個單播的代價近似相等,或組播的代價稍小于N個單播的代價,該值的范圍可以為10至100。
在確定了建立組播的時間跨度T和最小單播數(shù)量N后,本發(fā)明具體實施例中終端與服務(wù)器交互的流程如圖3所示,具體包括以下步驟步驟301、終端選擇節(jié)目后,利用IP網(wǎng)絡(luò)向服務(wù)器發(fā)送點(diǎn)播請求。
步驟302、服務(wù)器接收到點(diǎn)播請求后,響應(yīng)該請求,以單播方式向上述終端發(fā)送對應(yīng)節(jié)目數(shù)據(jù),并記錄該單播信息。
這里,在終端點(diǎn)播一個節(jié)目后,服務(wù)器可以通過幾個單播分別發(fā)送不同類型的數(shù)據(jù)內(nèi)容進(jìn)行響應(yīng),例如音頻和視頻分別通過兩個單播發(fā)送給用戶,此時可以將這幾個單播作為一個整體,本發(fā)明中所提及的單播都是針對這個整體而言;類似地,后續(xù)的組播,服務(wù)器也可以通過幾個組播分別發(fā)送不同類型的數(shù)據(jù)內(nèi)容,但本發(fā)明所提及的組播都是針對這幾個組播的整體而言。
本步驟中,記錄的單播信息包括節(jié)目的ID號,單播的時間標(biāo)記,單播的目的地址等。其中,單播的時間標(biāo)記可以是該單播開始的時間。
步驟303、服務(wù)器判斷當(dāng)前時間所在的時間跨度內(nèi)是否有對應(yīng)節(jié)目的組播存在,如果有則執(zhí)行步驟304;否則執(zhí)行步驟306;步驟304、服務(wù)器將該組播的地址發(fā)送給終端,通知終端加入該組播接收節(jié)目數(shù)據(jù),并在上述記錄的單播信息中將該單播標(biāo)識為已加入組播;步驟305、終端根據(jù)接收的組播地址加入對應(yīng)的組播接收組播節(jié)目數(shù)據(jù),然后執(zhí)行步驟308;步驟306、服務(wù)器判斷是否可以建立組播,即統(tǒng)計當(dāng)前時間所在的時間跨度內(nèi)所記錄的未被標(biāo)識為已加入組播的單播數(shù)量,并判斷該數(shù)量是否達(dá)到預(yù)先設(shè)定的最小單播數(shù)量N,如果是執(zhí)行步驟307;否則執(zhí)行步驟312;步驟307、服務(wù)器建立組播發(fā)送數(shù)據(jù),將該組播的地址發(fā)送給該時間跨度內(nèi)所記錄的未被標(biāo)識為已加入組播的單播對應(yīng)的終端,并記錄該組播信息,將加入該組播的單播標(biāo)識為已加入組播,然后執(zhí)行步驟305;本步驟中,服務(wù)器建立組播時,該組播所發(fā)送節(jié)目數(shù)據(jù)的起始點(diǎn)需要根據(jù)該組播中最早開始的單播的發(fā)送進(jìn)度確定,可以與該最早開始的單播發(fā)送進(jìn)度相同,也可以該最早開始的單播當(dāng)前所發(fā)送進(jìn)度之后預(yù)先設(shè)定的延遲時間t所對應(yīng)的節(jié)目數(shù)據(jù)開始發(fā)送。該延遲時間t的大小的設(shè)定可以根據(jù)網(wǎng)絡(luò)情況和響應(yīng)速度進(jìn)行,能夠保證終端接收的組播節(jié)目數(shù)據(jù)比同時接收的單播節(jié)目數(shù)據(jù)晚即可。
另外,本步驟中所記錄的組播信息包括節(jié)目的ID號、組播的時間標(biāo)記、和組播地址。其中,組播的時間標(biāo)記可以是該組播組中最早開始的單播的開始時間。
步驟308~309、終端識別出所接收的單播節(jié)目數(shù)據(jù)和最早接收并存儲的組播節(jié)目數(shù)據(jù)重合后,讀取存儲的對應(yīng)進(jìn)度的組播節(jié)目數(shù)據(jù)進(jìn)行播放,并向服務(wù)器發(fā)送中止單播請求。
本步驟中,終端識別單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)是否重合,可以有兩種方式,下面分別說明。
一種方式為將節(jié)目分塊的方式。該方式中,服務(wù)器將節(jié)目數(shù)據(jù)劃分成多塊,塊的大小以每塊能夠在較短時間內(nèi)傳輸完畢,保證用戶點(diǎn)播后,收看節(jié)目時等待第一塊傳輸完畢的時間較短,可以及時的響應(yīng)用戶點(diǎn)播請求為尺度,并將每一節(jié)目塊按順序連續(xù)地設(shè)置塊號,在發(fā)送節(jié)目數(shù)據(jù)時,將塊號設(shè)置在節(jié)目塊的頭部與節(jié)目塊一起發(fā)送。則終端在判斷出存儲的組播節(jié)目塊的塊號存在與當(dāng)前接收的單播節(jié)目塊的塊號相同時,確定出單播節(jié)目數(shù)據(jù)與組播節(jié)目數(shù)據(jù)重合。
另一種方式為根據(jù)音視頻數(shù)據(jù)編碼中的時間信息(time_code)識別的方式。該方式中,當(dāng)節(jié)目數(shù)據(jù)以MPEG-4或H.264編碼時,終端可以根據(jù)視頻對象組(GOP)頭中的time_code信息來確定單播節(jié)目數(shù)據(jù)與存儲的組播節(jié)目數(shù)據(jù)是否重合;當(dāng)節(jié)目數(shù)據(jù)以MPEG-2或AVS編碼時,終端可以根據(jù)圖組頭中的time_code信息來確定單播節(jié)目數(shù)據(jù)與存儲的組播節(jié)目數(shù)據(jù)是否重合。具體為當(dāng)終端確定出存儲的組播節(jié)目中存在time_code與當(dāng)前接收的單播節(jié)目的time_code相同的節(jié)目數(shù)據(jù)時,確定出單播節(jié)目數(shù)據(jù)與組播節(jié)目數(shù)據(jù)重合。
本步驟中讀取對應(yīng)進(jìn)度的組播節(jié)目數(shù)據(jù),可以是在識別出重合后,即讀取重合的組播節(jié)目數(shù)據(jù)開始播放;也可以是在完成當(dāng)前節(jié)目塊、或視頻對象組、或圖組的播放后,讀取存儲的組播節(jié)目數(shù)據(jù)中的下一個對應(yīng)的節(jié)目塊、或視頻對象組或圖組進(jìn)行播放,此后順序播放存儲的組播節(jié)目數(shù)據(jù)。
此外,如果在本步驟之前,終端識別出用戶中途停止播放,則停止播放單播節(jié)目數(shù)據(jù),通知服務(wù)器停止單播,并退出組播。服務(wù)器接收到停止單播通知后,停止以單播方式向終端發(fā)送節(jié)目數(shù)據(jù)。
步驟310、服務(wù)器接收到來自終端的中止單播請求后,停止向終端發(fā)送單播節(jié)目數(shù)據(jù),并刪除該單播信息,然后執(zhí)行步驟313。
步驟311、終端在用戶中途中止播放或完成所點(diǎn)播節(jié)目的播放后,退出組播。
步驟312、終端在用戶中途中止播放或完成所點(diǎn)播的節(jié)目數(shù)據(jù)的播放后,通知服務(wù)器停止單播,服務(wù)器接收到該通知后,停止向終端發(fā)送該單播節(jié)目數(shù)據(jù),并刪除該單播信息,然后結(jié)束該流程。
步驟313、服務(wù)器在完成組播節(jié)目數(shù)據(jù)的播放后,刪除該組播信息。
以上是本實施例中終端與服務(wù)器交互的流程,通過該流程交互的服務(wù)器和終端的內(nèi)部組成如圖4所示。在圖4中,服務(wù)器41與終端42之間通過IP網(wǎng)絡(luò)43進(jìn)行連接;服務(wù)器41中具體包括通信模塊411、決策模塊412和存儲模塊413;終端42中具體包括通訊模塊421、播放控制模塊422、存儲模塊423和判斷模塊424。
其中,服務(wù)器內(nèi)部各模塊之間交互的流程如圖5所示,包括以下步驟步驟501、服務(wù)器的通訊模塊接收到來自終端的點(diǎn)播請求后,將該請求傳送給決策模塊。
步驟502、決策模塊響應(yīng)該請求,以單播方式向上述終端發(fā)送對應(yīng)的節(jié)目數(shù)據(jù),并將該單播信息記錄在存儲模塊中。
步驟503、決策模塊查詢存儲模塊中是否存儲有在當(dāng)前時間所在的預(yù)先設(shè)定的時間跨度T內(nèi)針對該節(jié)目的組播,如果是執(zhí)行步驟504;否則執(zhí)行步驟505。
步驟504、決策模塊通過通訊模塊向終端發(fā)送消息通知上述終端加入該組播,并將存儲模塊中存儲的該單播信息標(biāo)記為已加入組播,然后執(zhí)行步驟508。
步驟505、決策模塊查詢存儲模塊中記錄的針對該節(jié)目未標(biāo)記為已加入組播的單播信息,并判斷這些單播的數(shù)量是否達(dá)到或超過預(yù)先設(shè)定的最小單播數(shù)量N,如果是則執(zhí)行步驟506;否則執(zhí)行步驟508。
步驟506、決策模塊建立組播,通過通訊模塊向上述未標(biāo)記為已加入組播的單播信息對應(yīng)的終端發(fā)送該組播地址,通知加入該組播接收節(jié)目數(shù)據(jù),并將這些單播信息標(biāo)記為已加入組播。
步驟507、決策模塊將該組播信息存儲到存儲模塊中。
步驟508、通訊模塊在接收到終端發(fā)送的中止單播的信息后,將該信息轉(zhuǎn)發(fā)給決策模塊。
步驟509、決策模塊根據(jù)接收的中止單播的信息停止向?qū)?yīng)終端發(fā)送單播節(jié)目數(shù)據(jù),并將該單播信息從存儲模塊中刪除。
步驟510、決策模塊在確定出單播或組播節(jié)目數(shù)據(jù)發(fā)送完成后,停止向?qū)?yīng)終端發(fā)送單播或組播節(jié)目數(shù)據(jù),并將對應(yīng)的單播或組播信息從存儲模塊中刪除。
終端內(nèi)部的處理流程如圖6所示,具體包括以下步驟步驟601、終端的判斷模塊接收到用戶的點(diǎn)播請求后向通訊模塊發(fā)送點(diǎn)播請求。
步驟602、通訊模塊將點(diǎn)播請求通過IP網(wǎng)絡(luò)發(fā)送給服務(wù)器。
步驟603、通訊模塊在接收到服務(wù)器以單播形式發(fā)送的節(jié)目數(shù)據(jù)后,將接收的節(jié)目數(shù)據(jù)傳送給播放控制模塊。
步驟604、播放控制模塊根據(jù)接收的單播形式的節(jié)目數(shù)據(jù)進(jìn)行播放。
步驟605、通訊模塊在接收到來自服務(wù)器的加入組播的通知后,加入對應(yīng)組播接收節(jié)目數(shù)據(jù),并將接收的組播節(jié)目數(shù)據(jù)存儲到存儲模塊中。
步驟606、判斷模塊判斷以單播形式接收的節(jié)目數(shù)據(jù)和以組播形式接收的節(jié)目數(shù)據(jù)是否重合,如果重合執(zhí)行步驟607;否則執(zhí)行步驟612。
步驟607、判斷模塊通過通訊模塊向服務(wù)器發(fā)送中止點(diǎn)播請求,并將上述重合的信息發(fā)送給播放控制模塊。
步驟608、播放控制模塊讀取存儲的組播節(jié)目數(shù)據(jù)并順序播放。
步驟609、播放控制模塊判斷是否接收到了用戶的中止播放請求,如果是,則執(zhí)行步驟611,退出組播,然后結(jié)束該流程;否則,執(zhí)行步驟610,判斷是否完成了節(jié)目的播放,如果是返回執(zhí)行步驟611;否則返回執(zhí)行步驟609。
步驟612、判斷模塊判斷是否接收到了用戶的中止播放請求,如果是執(zhí)行步驟613,通過通訊模塊向服務(wù)器發(fā)送中止單播請求,并通知播放控制模塊停止播放節(jié)目數(shù)據(jù),然后結(jié)束該流程;否則執(zhí)行步驟614,判斷是否完成了節(jié)目的播放,如果是返回執(zhí)行步驟613;否則返回執(zhí)行步驟612。
下面再以應(yīng)用本實施例的一種案例進(jìn)一步對本實施例進(jìn)行說明。
如圖7所示,本實施例的一種案例所基于的系統(tǒng)包括服務(wù)器41、IP網(wǎng)絡(luò)43、終端4201、4202......420n。其中,服務(wù)器中包括有CPU、硬盤、網(wǎng)卡、內(nèi)存和點(diǎn)播軟件服務(wù)端。終端中包括有CPU、硬盤、網(wǎng)卡、內(nèi)存和點(diǎn)播軟件客戶端,顯示卡等設(shè)備。服務(wù)器的網(wǎng)卡為通訊模塊,硬盤為存儲模塊,服務(wù)器點(diǎn)播軟件為決策模塊;CPU與內(nèi)存為運(yùn)行所需環(huán)境。終端的網(wǎng)卡作為通訊模塊,點(diǎn)播軟件客戶端為判斷模塊,硬盤為存儲模塊,顯示卡等顯示設(shè)備作為播放控制模塊。
假設(shè)一個節(jié)目時長100分鐘,預(yù)先設(shè)定的時間跨度T為10分鐘,最小單播數(shù)量N為10。終端1最先在10:00進(jìn)行節(jié)目點(diǎn)播,服務(wù)器向它發(fā)送單播節(jié)目數(shù)據(jù),并存儲這個單播的信息。終端1在不考慮延遲的情況下,等待時間為0。此后分別有8個終端加入點(diǎn)播同一個節(jié)目,他們的處理與終端1相同。終端10在10:03又點(diǎn)播了這個節(jié)目,服務(wù)器立即發(fā)送單播數(shù)據(jù)給它并存儲這個單播的信息,做到點(diǎn)播的立即響應(yīng)。然后點(diǎn)播軟件客戶端確定出此前10分鐘內(nèi)的點(diǎn)播節(jié)目數(shù)量已經(jīng)為10個,故建立組播發(fā)送數(shù)據(jù),并將這些點(diǎn)播終端對應(yīng)的單播信息標(biāo)記為已加入組播。發(fā)現(xiàn)這十個節(jié)目的點(diǎn)播最早的終端1已經(jīng)播放到3分鐘,由于考慮網(wǎng)絡(luò)延遲,從第四分鐘節(jié)目的內(nèi)容開始發(fā)送組播數(shù)據(jù),將組播信息記錄下來,其組播時間標(biāo)記為10:00即第一個單播的發(fā)起時間,并通知所有終端加入組播接收數(shù)據(jù)。考慮處理的延遲,假設(shè)終端1接收到的組播數(shù)據(jù)為從第4分10秒開始的節(jié)目數(shù)據(jù),終端1此后同時接收組播和單播數(shù)據(jù),并將接收到的組播數(shù)據(jù)存儲到硬盤中;當(dāng)?shù)?0:04:10時終端發(fā)現(xiàn)接收的單播節(jié)目數(shù)據(jù)與存儲的組播節(jié)目數(shù)據(jù)已經(jīng)重合,通知服務(wù)器不再發(fā)送單播節(jié)目數(shù)據(jù),服務(wù)器中止發(fā)網(wǎng)終端1的單播數(shù)據(jù)并將這個單播的信息從存儲模塊中刪除;而終端1開始從硬盤中讀取存儲的組播節(jié)目數(shù)據(jù)進(jìn)行播放。10:07:10時服務(wù)器發(fā)往所有的終端1到10的單播全部中止,所有點(diǎn)播節(jié)目通過一個組播發(fā)送。當(dāng)10:09有一個終端11點(diǎn)播節(jié)目時,服務(wù)器先通過單播發(fā)送數(shù)據(jù)到終端11并存儲這個單播的信息,同時服務(wù)器通知終端加入組播接收組播數(shù)據(jù),將這個單播的信息設(shè)置為已加入組播,終端11加入接收組播數(shù)據(jù)并將接收到的組播數(shù)據(jù)存儲到硬盤中。當(dāng)?shù)?0:13:10時終端11發(fā)現(xiàn)點(diǎn)單播數(shù)據(jù)與組播內(nèi)容重合通知服務(wù)器中止單播的發(fā)送數(shù)據(jù)并刪除這個單播的信息,然后該終端11開始從硬盤中讀取存儲的組播數(shù)據(jù),并播放。當(dāng)10:11終端12發(fā)起點(diǎn)播請求時,服務(wù)器立即響應(yīng)以單播方式向終端12發(fā)送節(jié)目數(shù)據(jù),同時查找10分鐘內(nèi)是否有組播,確定出沒有,同時查找10分鐘未標(biāo)記為已加入組播的單播的信息,此時也沒有,故服務(wù)器將不通知終端12加入組播,直到到達(dá)建立新組播的條件并且該終端滿足加入該新組播的條件為止。
表1表1通過上述應(yīng)用了本發(fā)明的情形與現(xiàn)有技術(shù)的單播、組播和分片組播的各種性能分析對比說明了本發(fā)明的有益效果。
從表1中可以看出利用傳統(tǒng)組播方式需要很長的響應(yīng)時間,若減小到兩秒則分別需1800倍個單播放速度組播或420倍播放速度組播,更可怕的時后者需要終端的接收帶寬為420倍的節(jié)目播放速度,即1Mbps的MPEG-4節(jié)目要420Mbps的帶寬。傳統(tǒng)單播的方式在多終端點(diǎn)播時對服務(wù)器的性能和帶寬要求過高。采用本發(fā)明的方法即實現(xiàn)了單播的即時響應(yīng),又克服了傳統(tǒng)單播實現(xiàn)VOD的對服務(wù)器過高的要求,同時也克服傳統(tǒng)組播方式在無人點(diǎn)播時還需占用大量帶寬和響應(yīng)速度慢的缺陷。
以上是對本發(fā)明方法第一實施例的說明,在第一實施例中,發(fā)起組播的條件為在一定的時間跨度T內(nèi)單播的數(shù)量達(dá)到或超過最小單播數(shù)量N個,并且由終端對接收的單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)是否重合進(jìn)行判決。在本發(fā)明中,發(fā)起組播的條件也可以是在當(dāng)前單播之前的建立組播時間門限T′時間內(nèi)沒有針對相同節(jié)目的組播,但存在針對相同節(jié)目的單播,下面通過第二實施例對這種情況進(jìn)行說明。
在本發(fā)明的第二實施例中,預(yù)先在服務(wù)器中設(shè)定建立組播時間門限T′的值,該值可以根據(jù)節(jié)目長度確定,例如可以為節(jié)目長度的1/20至1/5之間的值,或者可以為預(yù)先確定的值,例如為5至20之間的值。
本實施例中,服務(wù)器與終端交互的流程如圖8所示,該流程與第一實施例中服務(wù)器與終端的交互流程基本相同,區(qū)別僅在于在步驟803中,服務(wù)器根據(jù)存儲的組播信息判斷在當(dāng)前時間之前的T′時間內(nèi)是否有發(fā)送上述節(jié)目數(shù)據(jù)的組播,如果是執(zhí)行步驟804;否則執(zhí)行步驟806。在步驟806中,服務(wù)器根據(jù)存儲的單播信息判斷是否有與當(dāng)前單播針對相同節(jié)目數(shù)據(jù)的其他單播,如果是執(zhí)行步驟807;否則執(zhí)行步驟812。在步驟807中,服務(wù)器將組播地址發(fā)送給當(dāng)前單播和服務(wù)器中記錄的與當(dāng)前單播節(jié)目數(shù)據(jù)相同其他單播對應(yīng)的終端。
服務(wù)器內(nèi)部處理的流程與第一實施例中基本相同,區(qū)別僅在于上述服務(wù)器與終端交互流程中所提及的判斷內(nèi)容不同。而終端內(nèi)部處理的流程在本實施例中與第一實施例相同,這里不再詳細(xì)說明。
在本發(fā)明中,發(fā)起組播的條件也可以是在當(dāng)前單播之前沒有針對相同節(jié)目的組播,下面通過第三實施例對這種情況進(jìn)行說明。
本實施例中,服務(wù)器與終端交互的流程如圖9所示,該流程與第一實施例中服務(wù)器與終端的交互流程也基本相同,區(qū)別僅在于在步驟902中,可以不記錄單播信息;在步驟903中,服務(wù)器判斷是否已存在針對相同節(jié)目的組播,如果是執(zhí)行步驟904,由于在步驟902中可以不記錄單播信息,在步驟904中也可以不執(zhí)行標(biāo)記單播信息的步驟;否則直接執(zhí)行步驟906。在步驟906中,服務(wù)器建立組播,將該組播地址發(fā)送給終端,并記錄該組播信息,然后執(zhí)行步驟905,步驟905與步驟305相同。此后的步驟907至步驟912與步驟308至步驟313基本相同,區(qū)別在于,在步驟909和步驟911中可以不刪除單播信息。
在本實施例中,服務(wù)器內(nèi)部處理的流程與第一實施例中基本相同,區(qū)別僅在于上述服務(wù)器與終端交互流程中所提及的判斷內(nèi)容不同。而終端內(nèi)部處理的流程在本實施例中與第一實施例相同,這里不再詳細(xì)說明。
在本發(fā)明中,對以單播和組播兩種方式接收相同節(jié)目的終端在何時停止接收單播節(jié)目數(shù)據(jù),也可以由服務(wù)器控制來實現(xiàn)。下面通過第四實施例來詳細(xì)說明。
本發(fā)明的第四實施例可以基于上述第一至第三實施例中的任意一個,區(qū)別在于,在上述三個實施例的流程中,在通知終端加入組播的同時,即上述步驟304、307、804、807、904和步驟906中,服務(wù)器進(jìn)一步讀取該組播開始的時間Tg,該組播開始的時間為對應(yīng)所有單播中最早開始的時間,并讀取加入該組播的各個終端的單播開始時間Ts,服務(wù)器為每個終端計算停止發(fā)送單播節(jié)目數(shù)據(jù)時間Tstop,Tstop=Ts-Tg。則終端側(cè)不執(zhí)行判斷單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)是否重合的步驟,而只是根據(jù)來自服務(wù)器側(cè)的信息接收和存儲節(jié)目數(shù)據(jù),并在單播節(jié)目數(shù)據(jù)停止后讀取最先接收的組播節(jié)目數(shù)據(jù)播放。而在服務(wù)器側(cè)根據(jù)為終端計算的Tstop,在該時間到達(dá)后,停止向該終端發(fā)送單播節(jié)目數(shù)據(jù)。
本實施例中服務(wù)器內(nèi)部的處理流程如圖10所示,其中步驟1001和步驟1002與步驟501和步驟502相同。在步驟1003、決策模塊判斷是否已有終端可以加入的組播,如果是執(zhí)行步驟1004;否則執(zhí)行步驟1005。
步驟1004、決策模塊通過通訊模塊向終端發(fā)送消息通知上述終端加入該組播,并根據(jù)該組播的開始的時間和該終端單播開始的時間計算Tstop,然后執(zhí)行步驟1008。
步驟1005、決策模塊判斷是否可以建立組播,如果是則執(zhí)行步驟1006;否則執(zhí)行步驟1007。
步驟1006、決策模塊建立組播,將該組播信息存儲到存儲模塊中,通過通訊模塊發(fā)送組播節(jié)目數(shù)據(jù),并通知對應(yīng)終端加入該組播接收節(jié)目數(shù)據(jù),然后分別為這些終端計算Tstop。
步驟1007、決策模塊在達(dá)到了為終端計算的時間Tstop或在通過通訊模塊接收到了來自終端的中止單播請求后,停止向終端發(fā)送單播節(jié)目數(shù)據(jù),并刪除該單播信息。
步驟1008、決策模塊在確定出單播或組播節(jié)目數(shù)據(jù)發(fā)送完成后,停止向?qū)?yīng)終端發(fā)送單播或組播節(jié)目數(shù)據(jù),并將對應(yīng)的單播或組播信息從存儲模塊中刪除。
終端內(nèi)部的處理流程如圖11所示,其中步驟1101至步驟1105與圖6中的步驟601至步驟605相同。區(qū)別在于,在步驟1105后,執(zhí)行1106播放控制模塊判斷是否接收到了用戶的中止點(diǎn)播請求,如果是執(zhí)行步驟1107,通過通訊模塊向服務(wù)器發(fā)送中止點(diǎn)播請求,并停止播放,然后結(jié)束該流程;否則,執(zhí)行步驟1108,播放控制模塊在識別出單播節(jié)目數(shù)據(jù)已經(jīng)結(jié)束接收,并且節(jié)目未播放完成后,順序讀取存儲模塊中存儲的組播節(jié)目數(shù)據(jù)進(jìn)行播放。
在本實施例中,由于直接由服務(wù)器決定停止向終端發(fā)送單播節(jié)目數(shù)據(jù)的時機(jī),減少了終端與服務(wù)器之間的交互,節(jié)約了網(wǎng)絡(luò)資源,并降低了終端的負(fù)擔(dān)。
以上是對本發(fā)明方法具體實施例的詳細(xì)說明。下面再對本發(fā)明的系統(tǒng)、服務(wù)器和終端的各組成部分及連接關(guān)系進(jìn)行詳細(xì)說明。
圖4已經(jīng)示出了本發(fā)明的系統(tǒng),其中主要包括服務(wù)器41和終端42,在服務(wù)器41和終端42的通信過程中可以通過IP網(wǎng)絡(luò)43進(jìn)行。
其中,服務(wù)器41用于根據(jù)來自終端的點(diǎn)播請求向其以單播形式發(fā)送對應(yīng)節(jié)目數(shù)據(jù);和根據(jù)確定出的存在該終端可以加入的組播的信息,或根據(jù)確定出的為該單播建立對應(yīng)組播的信息,將對應(yīng)組播地址發(fā)送給終端;和根據(jù)確定的建立組播的信息發(fā)送組播節(jié)目數(shù)據(jù);和根據(jù)來自終端的中止單播信息,或根據(jù)確定出的同時接收單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)的終端所接收的數(shù)據(jù)重合的信息,停止向終端發(fā)送單播節(jié)目數(shù)據(jù)。
終端42用于根據(jù)用戶的點(diǎn)播請求向服務(wù)器發(fā)送點(diǎn)播請求,接收并播放服務(wù)器以單播方式發(fā)送的節(jié)目數(shù)據(jù);和根據(jù)來自服務(wù)器的組播地址接收和存儲服務(wù)器以組播方式發(fā)送的節(jié)目數(shù)據(jù);和根據(jù)用戶的中止播放請求或確定出的以單播方式接收的節(jié)目數(shù)據(jù)和以組播方式接收的節(jié)目數(shù)據(jù)重合的信息,向服務(wù)器發(fā)送中止單播信息;或進(jìn)一步根據(jù)確定出的以單播方式接收的節(jié)目數(shù)據(jù)和以組播方式接收的節(jié)目數(shù)據(jù)重合的信息,順序播放存儲的組播節(jié)目數(shù)據(jù)。
服務(wù)器41中具體又可以包括通訊模塊411、決策模塊412、存儲模塊413。
其中,通訊模塊411用于將服務(wù)器中的決策模塊412、存儲模塊413和IP網(wǎng)絡(luò)43連接,將通過IP網(wǎng)絡(luò)43接收的信息傳送給對應(yīng)的決策模塊412或存儲模塊413,以及將來自服務(wù)器中決策模塊412、存儲模塊413的信息通過IP網(wǎng)絡(luò)發(fā)送給終端。具體包括接收終端通過IP網(wǎng)絡(luò)43發(fā)送的點(diǎn)播請求,響應(yīng)該請求以單播方式讀取存儲模塊中的對應(yīng)節(jié)目數(shù)據(jù),將該單播信息記錄到存儲模塊中,并將點(diǎn)播請求傳送給決策模塊;和將來自決策模塊的組播信息通過IP網(wǎng)絡(luò)43發(fā)送給終端,并根據(jù)來自決策模塊412的發(fā)起組播的信息從存儲模塊413中讀取并以組播方式發(fā)送對應(yīng)的節(jié)目數(shù)據(jù),以及根據(jù)來自終端的中止請求或來自決策模塊的停止請求,停止讀取和發(fā)送對應(yīng)的節(jié)目數(shù)據(jù)。
決策模塊412用于根據(jù)來自通訊模塊412的點(diǎn)播請求確定是否將終端加入已有的組播,或是否需要發(fā)起組播,并根據(jù)確定出的將終端加入已有組播的信息或發(fā)起組播的信息,將組播信息發(fā)送給通訊模塊412;和將發(fā)起的組播的信息存儲在存儲模塊;或進(jìn)一步用于根據(jù)向每個用戶所發(fā)送的單播和組播的時間信息確定停止單播,并將確定的停止單播的停止請求發(fā)送給通訊模塊421。
存儲模塊413,用于存儲節(jié)目數(shù)據(jù)、單播信息及組播信息。
終端42中主要包括通訊模塊421、播放控制模塊422、存儲模塊423和判斷模塊424。
通訊模塊421用于接收來自服務(wù)器的單播節(jié)目數(shù)據(jù)并將單播節(jié)目數(shù)據(jù)傳送給播放控制模塊,以及根據(jù)來自服務(wù)器的組播信息接收組播節(jié)目數(shù)據(jù)并存儲到存儲模塊中;將用戶發(fā)起的點(diǎn)播請求發(fā)送給服務(wù)器;根據(jù)用戶發(fā)起的中止請求或根據(jù)來自判斷模塊的接收的單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)重合的信息向服務(wù)器發(fā)送中止單播請求;和根據(jù)來自用戶的中止點(diǎn)播請求停止接收組播數(shù)據(jù)。
播放控制模塊422用于接收來自通訊模塊的單播節(jié)目數(shù)據(jù)并進(jìn)行解碼播放;根據(jù)來自判斷模塊的單播節(jié)目數(shù)據(jù)與組播節(jié)目數(shù)據(jù)重合的信息停止播放單播節(jié)目數(shù)據(jù),并讀取存儲模塊中存儲的組播節(jié)目數(shù)據(jù)進(jìn)行解碼播放,或根據(jù)確定出的單播節(jié)目數(shù)據(jù)中止的信息讀取存儲模塊中存儲的組播節(jié)目數(shù)據(jù)并進(jìn)行節(jié)目播放。
存儲模塊423主要用于存儲組播節(jié)目數(shù)據(jù)。
判斷模塊424,用于確定所的接收的單播節(jié)目數(shù)據(jù)和存儲模塊中存儲的組播節(jié)目數(shù)據(jù)是否重合,并將確定出的單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)重合的信息發(fā)送給播放控制模塊和通訊模塊。當(dāng)由服務(wù)器確定停止向終端發(fā)送單播節(jié)目數(shù)據(jù)的情況下,終端中可以不包括判斷模塊424。
如圖12所示,為終端播放控制的示意圖,其中當(dāng)圖中所示開關(guān)121處于當(dāng)前位置時,表示播放控制模塊對單播節(jié)目數(shù)據(jù)進(jìn)行解碼播放,并將接收的組播節(jié)目數(shù)據(jù)存儲到存儲模塊中。當(dāng)圖中所示開關(guān)連接存儲模塊和播放控制模塊時,表示播放控制模塊停止接收單播節(jié)目數(shù)據(jù),而讀取存儲模塊中存儲的組播節(jié)目數(shù)據(jù)并解碼播放。
可以理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種視頻點(diǎn)播方法,其特征在于,該方法包括以下步驟A、視頻點(diǎn)播服務(wù)器接收到來自視頻點(diǎn)播終端的點(diǎn)播請求后,響應(yīng)該請求,以單播方式向視頻點(diǎn)播終端發(fā)送點(diǎn)播的節(jié)目數(shù)據(jù),視頻點(diǎn)播終端接收所述單播的節(jié)目數(shù)據(jù)并播放;B、視頻點(diǎn)播服務(wù)器為點(diǎn)播相同的所述節(jié)目數(shù)據(jù)的視頻點(diǎn)播終端建立組播,以組播方式發(fā)送所述節(jié)目數(shù)據(jù),并將所述組播信息通知給所述點(diǎn)播相同節(jié)目的視頻點(diǎn)播終端;C、接收到組播信息的視頻點(diǎn)播終端根據(jù)該組播信息接收所述組播的節(jié)目數(shù)據(jù)并存儲;D、當(dāng)視頻點(diǎn)播終端接收的所述單播的節(jié)目數(shù)據(jù)與該視頻點(diǎn)播終端中存儲的所述組播的節(jié)目數(shù)據(jù)重合后,視頻點(diǎn)播服務(wù)器停止以單播方式向視頻點(diǎn)播終端發(fā)送節(jié)目數(shù)據(jù),視頻點(diǎn)播終端讀取所述存儲的組播節(jié)目數(shù)據(jù)并播放。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B包括B1、視頻點(diǎn)播服務(wù)器判斷當(dāng)前是否存在發(fā)送所述節(jié)目數(shù)據(jù)的組播,如果是,執(zhí)行步驟B2;否則執(zhí)行所述步驟B3;B2、視頻點(diǎn)播服務(wù)器將所述組播的信息通知給該組播對應(yīng)的視頻點(diǎn)播終端;B3、視頻點(diǎn)播服務(wù)器建立組播發(fā)送所述節(jié)目數(shù)據(jù),然后執(zhí)行步驟B2。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟B3中進(jìn)一步包括視頻點(diǎn)播服務(wù)器存儲所建立的組播信息;所述步驟B1中,視頻點(diǎn)播服務(wù)器根據(jù)存儲的組播信息執(zhí)行所述判斷步驟。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述存儲的組播信息包括包括節(jié)目的ID號、組播的時間標(biāo)記和組播地址;則所述步驟B2中,通知給視頻點(diǎn)播終端的組播信息為組播地址。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述組播的時間標(biāo)記為該組播所對應(yīng)單播中最早開始的單播的開始時間;或為在該組播所對應(yīng)單播中最早開始的單播的開始時間之后預(yù)先設(shè)定延遲時間的時刻。
6.根據(jù)權(quán)利要求2至5中任一所述的方法,其特征在于,所述步驟B3之前進(jìn)一步包括B30、視頻點(diǎn)播服務(wù)器判斷是否可以建立組播,如果是執(zhí)行所述步驟B3;否則直接結(jié)束該流程。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟B1中所述的判斷步驟為B11、視頻點(diǎn)播服務(wù)器判斷在該時刻之前預(yù)先設(shè)定的時間之內(nèi)是否存在發(fā)送所述節(jié)目數(shù)據(jù)的組播;步驟B30中所述的判斷步驟為B301、視頻點(diǎn)播服務(wù)器判斷在該時刻之前預(yù)先設(shè)定的時間之內(nèi)是否存在針對所述節(jié)目數(shù)據(jù)的單播,如果是,在步驟B3之后執(zhí)行的步驟B2中,所述的組播對應(yīng)的視頻點(diǎn)播終端為所述視頻點(diǎn)播終端和所述存在的針對所述節(jié)目數(shù)據(jù)的單播對應(yīng)的視頻點(diǎn)播終端。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟B1中所述的判斷步驟為B12、視頻點(diǎn)播服務(wù)器判斷在該時刻所在的預(yù)先設(shè)定的時間跨度內(nèi),是否存在發(fā)送所述相同節(jié)目數(shù)據(jù)的組播;步驟B30中所述的判斷步驟為B302、視頻點(diǎn)播服務(wù)器判斷在該時刻所在的預(yù)先設(shè)定的時間跨度內(nèi),針對所述節(jié)目數(shù)據(jù)的單播數(shù)量是否達(dá)到或超過了預(yù)先設(shè)定的最小單播數(shù)量,如果是,在步驟B3之后執(zhí)行的步驟B2中,所述的組播對應(yīng)的視頻點(diǎn)播終端為所述視頻點(diǎn)播終端和所述針對所述節(jié)目數(shù)據(jù)的單播對應(yīng)的視頻點(diǎn)播終端。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟A中進(jìn)一步包括視頻點(diǎn)播服務(wù)器記錄所述單播信息;則步驟B30中,視頻點(diǎn)播服務(wù)器根據(jù)所述記錄的單播信息判斷是否可以建立組播。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟D為視頻點(diǎn)播終端確定出自身接收的所述單播的節(jié)目數(shù)據(jù)和自身中存儲的所述組播的節(jié)目數(shù)據(jù)重合后,向視頻點(diǎn)播服務(wù)器發(fā)送中止單播請求,然后讀取所述存儲的組播節(jié)目數(shù)據(jù)并播放。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述視頻點(diǎn)播終端確定自身接收的所述單播的節(jié)目數(shù)據(jù)和自身中存儲的所述組播的節(jié)目數(shù)據(jù)重合的方法為將節(jié)目數(shù)據(jù)劃分為塊,并為每塊設(shè)置塊號,當(dāng)視頻點(diǎn)播終端識別出所存儲的組播節(jié)目數(shù)據(jù)中存在與當(dāng)前接收的單播節(jié)目數(shù)據(jù)的塊號相同時,確定出自身接收的單播節(jié)目數(shù)據(jù)和自身中存儲的組播節(jié)目數(shù)據(jù)重合;或為所述節(jié)目數(shù)據(jù)中包括時間信息,當(dāng)視頻點(diǎn)播終端識別出所存儲的組播節(jié)目數(shù)據(jù)中存在與當(dāng)前接收的單播節(jié)目數(shù)據(jù)包括相同時間信息時,確定出自身接收的單播節(jié)目數(shù)據(jù)和自身中存儲的組播節(jié)目數(shù)據(jù)重合。
12.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟D為視頻點(diǎn)播服務(wù)器根據(jù)向視頻點(diǎn)播終端以單播形式和組播形式發(fā)送數(shù)據(jù)的時間,確定出視頻點(diǎn)播終端接收的單播節(jié)目數(shù)據(jù)和該視頻點(diǎn)播終端中存儲的組播節(jié)目數(shù)據(jù)重合后,停止所述的以單播方式向視頻點(diǎn)播終端發(fā)送節(jié)目數(shù)據(jù)。
13.一種視頻點(diǎn)播系統(tǒng),其特征在于,該視頻點(diǎn)播系統(tǒng)包括視頻點(diǎn)播服務(wù)器和視頻點(diǎn)播終端;其中,視頻點(diǎn)播服務(wù)器用于根據(jù)來自視頻點(diǎn)播終端的點(diǎn)播請求向其以單播形式發(fā)送對應(yīng)節(jié)目數(shù)據(jù);和發(fā)送組播節(jié)目數(shù)據(jù),并將確定的所述視頻點(diǎn)播終端加入的組播信息發(fā)送給視頻點(diǎn)播終端;和根據(jù)接收單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)的視頻點(diǎn)播終端所接收的數(shù)據(jù)重合的信息,停止向視頻點(diǎn)播終端發(fā)送單播節(jié)目數(shù)據(jù);視頻點(diǎn)播終端用于根據(jù)用戶的點(diǎn)播請求向視頻點(diǎn)播服務(wù)器發(fā)送點(diǎn)播請求,接收并播放視頻點(diǎn)播服務(wù)器以單播方式發(fā)送的節(jié)目數(shù)據(jù);和根據(jù)來自視頻點(diǎn)播服務(wù)器的組播信息接收組播節(jié)目數(shù)據(jù);和根據(jù)自身以單播方式接收的節(jié)目數(shù)據(jù)和以組播方式接收的節(jié)目數(shù)據(jù)重合的信息,讀取存儲的組播節(jié)目數(shù)據(jù)并播放。
14.一種視頻點(diǎn)播服務(wù)器,其特征在于,該服務(wù)器包括通訊模塊、決策模塊和存儲模塊;其中,通訊模塊用于接收來自終端點(diǎn)播請求,響應(yīng)該請求讀取并以單播方式發(fā)送存儲模塊中的對應(yīng)節(jié)目數(shù)據(jù),并將點(diǎn)播請求傳送給決策模塊;和將來自決策模塊的組播信息發(fā)送給終端,并根據(jù)來自決策模塊的發(fā)起組播的信息從存儲模塊中讀取并以組播方式發(fā)送對應(yīng)的節(jié)目數(shù)據(jù),以及根據(jù)來自終端的中止請求停止讀取和發(fā)送對應(yīng)的節(jié)目數(shù)據(jù);決策模塊用于根據(jù)來自通訊模塊的點(diǎn)播請求確定是否將終端加入已有的組播,或是否需要發(fā)起組播,并根據(jù)確定出的將終端加入已有組播的信息或發(fā)起組播的信息,將組播信息發(fā)送給通訊模塊;和將發(fā)起的組播的信息存儲在存儲模塊;存儲模塊,用于存儲節(jié)目數(shù)據(jù)和組播信息。
15.根據(jù)權(quán)利要求14所述的視頻點(diǎn)播服務(wù)器,其特征在于,所述決策模塊進(jìn)一步用于根據(jù)向同一視頻點(diǎn)播終端發(fā)送單播節(jié)目數(shù)據(jù)的時間和組播節(jié)目數(shù)據(jù)的時間,確定終端接收的單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)的視頻點(diǎn)播終端所接收的數(shù)據(jù)是否重合,并將確定出的重合的信息發(fā)送給通訊模塊;則所述通訊模塊進(jìn)一步用于接收來自決策模塊的所述重合的信息,并根據(jù)該重合的信息停止以單播方式發(fā)送存儲模塊中的對應(yīng)節(jié)目數(shù)據(jù)。
16.一種視頻點(diǎn)播終端,其特征在于,該終端包括通訊模塊、播放控制模塊和存儲模塊;其中,通訊模塊用于接收來自服務(wù)器的單播節(jié)目數(shù)據(jù)并將單播節(jié)目數(shù)據(jù)傳送給播放控制模塊,以及根據(jù)來自服務(wù)器的組播信息接收組播節(jié)目數(shù)據(jù)并存儲到存儲模塊中;并用于將用戶發(fā)起的點(diǎn)播請求和來自播放控制模塊的中止單播請求發(fā)送給服務(wù)器;播放控制模塊用于接收來自通訊模塊的單播節(jié)目數(shù)據(jù)并進(jìn)行解碼播放;或根據(jù)確定出的單播節(jié)目數(shù)據(jù)中止的信息讀取存儲模塊中存儲的組播節(jié)目數(shù)據(jù)并進(jìn)行節(jié)目播放;存儲模塊用于存儲組播節(jié)目數(shù)據(jù)。
17.根據(jù)權(quán)利要求16所述的視頻點(diǎn)播終端,其特征在于,所述終端中進(jìn)一步包括判斷模塊,用于判斷所的接收的單播節(jié)目數(shù)據(jù)和存儲模塊中存儲的組播節(jié)目數(shù)據(jù)是否重合,并將確定出的單播節(jié)目數(shù)據(jù)和組播節(jié)目數(shù)據(jù)重合的信息發(fā)送給播放控制模塊和通訊模塊;所述播放控制模塊進(jìn)一步用于根據(jù)來自判斷模塊的所述重合的信息停止播放所述單播節(jié)目數(shù)據(jù),讀取存儲模塊中存儲的組播節(jié)目數(shù)據(jù)并播放;所述通訊模塊進(jìn)一步用于根據(jù)來自判斷模塊的所述重合的信息向視頻點(diǎn)播服務(wù)器發(fā)送中止單播請求。
全文摘要
本發(fā)明公開了一種視頻點(diǎn)播方法,該方法包括服務(wù)器接收到來自終端的點(diǎn)播請求后,響應(yīng)該請求,以單播方式向終端發(fā)送點(diǎn)播的節(jié)目數(shù)據(jù),終端接收所述單播的節(jié)目數(shù)據(jù)并播放;服務(wù)器為點(diǎn)播相同的所述節(jié)目數(shù)據(jù)的終端建立組播,以組播方式發(fā)送所述節(jié)目數(shù)據(jù),并將所述組播信息通知給所述點(diǎn)播相同節(jié)目的終端;接收到組播信息的終端根據(jù)該組播信息接收所述組播的節(jié)目數(shù)據(jù)并存儲;當(dāng)終端接收的所述單播的節(jié)目數(shù)據(jù)與該終端中存儲的所述組播的節(jié)目數(shù)據(jù)重合后,服務(wù)器停止以單播方式向終端發(fā)送節(jié)目數(shù)據(jù),終端讀取所述存儲的組播節(jié)目數(shù)據(jù)并播放。本發(fā)明還公開了一種視頻點(diǎn)播系統(tǒng)、一種視頻點(diǎn)播服務(wù)器和一種視頻點(diǎn)播終端。
文檔編號H04N7/173GK1859562SQ20061005703
公開日2006年11月8日 申請日期2006年3月13日 優(yōu)先權(quán)日2006年3月13日
發(fā)明者馬偉, 高磊 申請人:華為技術(shù)有限公司