專利名稱:視頻點播系統(tǒng)的信道合并方法
技術領域:
本發(fā)明一般地涉及信道合并方法,更具體地涉及在通信網(wǎng)絡中利用傳送視頻流的多個信道的合并向多個客戶端進行優(yōu)化的組播(multicast)傳送。
背景技術:
隨著互聯(lián)網(wǎng)使用的爆炸性增長和計算機能力的不斷增加,人們對所謂的視頻點播(video-on-demand)的應用的興趣也極大地增長了,其中客戶可以在任意時間請求媒體文件(視頻、音頻、數(shù)據(jù)等),用于即時觀看或?qū)碛^看。但是,視頻點播也提出了新的挑戰(zhàn),即服務器帶寬和網(wǎng)絡帶寬的巨大消耗。一般地,每個請求都由一個專用的單播(unicast)流來支持,并且基于單播的視頻點播系統(tǒng)的開銷非常龐大。信道合并技術的出現(xiàn)為視頻點播服務創(chuàng)造了一個全新的模式,其目標就是通過使客戶端同時接收兩個或更多的視頻流來減少滿足請求特定視頻對象的各客戶端所需要的服務器帶寬。當客戶端為了立即觀看的目的而接收數(shù)據(jù)并且同時進行存儲時,服務器可以通過組播的方式使一個視頻對象服務于多個用戶,并因此既減少了網(wǎng)絡帶寬,又減少了服務器帶寬。
現(xiàn)有的信道合并方法可以分為三類靜態(tài)廣播方法、合并樹結構方法、和事件驅(qū)動(event driven)方法。由摩天樓(Skyscraper)代表的靜態(tài)廣播方法用指定的時段和長度、在幾個信道中廣播多段被請求的對象。靜態(tài)廣播的優(yōu)點是在非常繁忙的環(huán)境中具有其簡易性和相對高的效率。但是,當系統(tǒng)的負載不高,或由于其不靈活的資源分配而使不同視頻節(jié)目的普及度較分散時,靜態(tài)廣播的性能很差。對于由Dyadic代表的合并樹結構方法,當有新的用戶加入時,該合并樹結構用表示信道的樹節(jié)點動態(tài)地構建合并樹,在用戶真正需要信道之前不實際分配信道。這種方法通過消除閑置信道資源的浪費而克服了靜態(tài)廣播的缺陷。但是,當合并樹僅由新用戶的加入時間來確定時,它就不直接支持諸如VCR(盒帶錄象機)功能,即任意停止、暫停、快進/倒退等。對于由SRMT(Simple Reachable Merge Target,簡單可到達合并目標)和CT(Closest Target,最近目標)代表的事件驅(qū)動方法,當客戶向服務器表示要進行播放、停止、跳轉(zhuǎn)或合并操作時,該方法動態(tài)地確定一組該客戶應該使用的信道。因為每個客戶的合并路徑根據(jù)用戶的交互作用而得到動態(tài)地調(diào)整,所以該方法可以支持VCR功能。
下面將結合圖1、圖2和圖3對兩個信道進行合并的方法說明如下第一步,視頻服務器1從客戶端A接收播放視頻的請求,并根據(jù)該請求,用信道S6向客戶端4發(fā)送被請求的視頻節(jié)目。
第二步,當在一段時間(T)后從客戶端B接收與所述客戶端A相同的視頻點播請求時,該視頻服務器1建立信道S11,并通知客戶端B準備在信道S11和信道S6兩個信道上從該視頻服務器1接收該視頻節(jié)目。
第三步,該視頻服務器1利用信道S11從該視頻節(jié)目的開始點(a)向客戶端B發(fā)送該視頻節(jié)目,并且客戶端B進行接收,同時客戶端B在信道S6上與客戶端A同步接收并存儲從該視頻服務器1繼續(xù)發(fā)送的隨后所述視頻節(jié)目。
第四步,視頻服務器1將信道S6作為信道S11的父信道(即信道S11將要并入的信道),當客戶端B在信道S11上接收的視頻節(jié)目達到其在信道S6上接收并存儲的視頻節(jié)目的起始點(b)時,即又經(jīng)過了時間T時,將信道S11并入信道S6,并且該視頻服務器1將關閉信道S11,并停止在信道S11上向客戶端B發(fā)送該視頻節(jié)目。此時,客戶端B中已經(jīng)存儲了從點(b)到點(c)的視頻節(jié)目。該信道S11(子視頻流)與其父信道S6合并后,如果沒有其它的客戶端正在使用子信道S11(即正在使用信道S11的子信道),那么這個子信道S11將被停止。
第五步,在將信道S11并入信道S6后,客戶端B在用所述信道S6繼續(xù)從點(c)接收并存儲從視頻服務器1發(fā)送的隨后所述視頻節(jié)目的同時,以先進先出的方式從點(b)讀取并播放已經(jīng)存儲在其本地存儲器中的該視頻節(jié)目,使得該視頻節(jié)目在客戶端B上的播放能夠連續(xù)進行。
盡管用于信道合并的事件驅(qū)動方法是控制組播信道的最靈活的方法,但是這種類型的現(xiàn)有方法卻存在明顯的缺點如果在上述第四步,一個信道當與其父信道合并而被刪除或由于停止或跳轉(zhuǎn)事件而被取消,則那些正在使用這個被刪除的信道的子信道的客戶不得不改變它們正在使用的信道。例如,CT方案簡單地選擇仍在系統(tǒng)中的較早視頻流中的最近時間的視頻流信道作為下一個合并目標,而即使沒有新的子信道被建立,CT計算的該合并目標也不一定是可到達的,原因是該目標流信道本身在被其后續(xù)信道追上以前可能已經(jīng)與該目標信道的目標信道進行了合并。當這種情況發(fā)生時,后續(xù)流信道必須再次使用CT算法選擇一個新的合并目標。另外,目標流信道的任意停止、暫停、快進/后退等操作都可能使后續(xù)流信道的合并不能發(fā)生,并迫使它們重新選擇新的父信道。
為了將合并樹的改變通知給受到影響的客戶,視頻服務器必須主動地向這些客戶中的每一個發(fā)送通知。這可能導致以下幾種負面影象1.由于通知的數(shù)量與受到影響的客戶端的數(shù)量和未預料到的信道停止事件的頻率成正比,從視頻服務器到客戶端的反向通知大大地增加了視頻服務器的負載。
2.客戶必須準備接收來自于互聯(lián)網(wǎng)的未知區(qū)域的進入連接,而這增加了客戶端受其它意外影響的可能性。
3.該反向通知可能不能通過具有一定配置的防火墻。例如,如果防火墻內(nèi)的客戶試圖觀看存儲于該防火墻外的視頻服務器中的一段視頻片段,則該服務器永遠都不會向客戶端傳送通知。
發(fā)明內(nèi)容
為了解決上述問題,通過使用響應于開始、跳轉(zhuǎn)、合并和停止事件而決定合并路徑的準則,本發(fā)明提供一種視頻點播系統(tǒng)中的信道合并方法,所述方法包括步驟(1)響應于多個客戶對某一視頻節(jié)目的請求,建立一根信道(S1)和至少一個子信道(S11),所述根信道(S1)根據(jù)最早發(fā)出請求的客戶機的請求而建立,所述多個子信道(S11)中的每個對應于一較晚發(fā)出請求的客戶機的請求而建立;以及(2)對于所建立的每一個信道,監(jiān)測使用該信道的客戶機的數(shù)目變化,如果使用被監(jiān)測信道的客戶機數(shù)目不為零,則維持該信道,如果使用被監(jiān)測信道的客戶機數(shù)目為零,則關閉該信道。
本發(fā)明還提供一種用于視頻點播系統(tǒng)的信道合并裝置,所述信道合并裝置配置于所述視頻點播系統(tǒng)中的視頻服務器中或與其可操作地連接,其中所述信道合并裝置包括信道選擇單元,用于響應多個客戶端對某一視頻節(jié)目的請求,建立一根信道(S1)和至少一子信道(S11),所述根信道(S1)根據(jù)最早發(fā)出請求的客戶端的請求而建立,所述多個子信道(S11)中的每一個對應于一較晚發(fā)出請求的客戶端的請求而建立;信道控制單元,用于對所建立的每一個信道,監(jiān)測使用該信道的客戶端的數(shù)目變化,如果使用被監(jiān)測信道的客戶端數(shù)目不為零,則維持該信道,如果使用被監(jiān)測信道的客戶端數(shù)目為零,則關閉該信道。
在本發(fā)明中,所有的信道“合并事件”都是從最次級子信道向根信道的方向進行的,因此不會發(fā)生客戶端正在使用的信道被移除的情況。即使直接發(fā)生停止事件,在使用某個信道的所有客戶端(以該信道的子信道的方式)明確地釋放該信道之前,該信道也不會被移除。所以避免了反向通知,從而一個客戶端的行為不會影響其它的客戶端,并減小了視頻服務器和網(wǎng)絡的負載。同時,因為當客戶端觸發(fā)的事件發(fā)生時動態(tài)地構建和調(diào)整合并樹,而每個客戶端的合并路徑是基于合并樹而進行動態(tài)調(diào)整的,所以這種方法固有地支持諸如播放、停止、搜索(快進/后退)等的VCR功能。
本發(fā)明的另一個主要優(yōu)點是控制視頻服務器的方法與HTTP(超文本傳輸協(xié)議)的請求/響應模式兼容,因此可以容易地在HTTP上實現(xiàn)。HTTP是在互聯(lián)網(wǎng)上交換應用數(shù)據(jù)的主流協(xié)議,并且網(wǎng)絡服務的出現(xiàn)進一步強化了基于互聯(lián)網(wǎng)的應用在數(shù)據(jù)傳輸方面應該盡可能依賴HTTP的趨勢。另外,大多數(shù)防火墻在允許一般數(shù)據(jù)流量的通過方面是難于處理的,而不是HTTP。
通過結合附圖對本發(fā)明進行的詳細描述,將使本發(fā)明的上述優(yōu)點和其它特點變得更加清楚。
圖1是示出具有視頻服務器和多個客戶端的組播網(wǎng)絡。
圖2是示出進行信道合并的視頻節(jié)目流的示意圖。
圖3是示出信道合并樹的示意圖。
圖4是在圖1的視頻服務器和客戶端之間發(fā)生的請求/應答的時序圖。
圖5是根據(jù)本發(fā)明配置于視頻服務器中的信道合并裝置的結構圖。
圖6是根據(jù)本發(fā)明發(fā)生“開始事件”時視頻服務器的處理的流程圖。
圖7是根據(jù)本發(fā)明發(fā)生“跳轉(zhuǎn)事件”時視頻服務器的處理的流程圖。
圖8是根據(jù)本發(fā)明發(fā)生“合并事件”時視頻服務器的處理的流程圖。
圖9是根據(jù)本發(fā)明發(fā)生“停止事件”時視頻服務器的處理的流程圖。
具體實施例方式
下面將結合附圖對本發(fā)明進行詳細地描述。
除非特別說明,在本說明書的下文中涉及到的開始、停止、跳轉(zhuǎn)、和合并等操作均是對于播放相同視頻節(jié)目(對象)的各個信道進行的。
圖1是具有服務器1和多個客戶端4的組播網(wǎng)絡。該組播網(wǎng)絡包括視頻服務器1、互聯(lián)網(wǎng)2、防火墻3和多個客戶端4,其中視頻服務器1與客戶端4通過互聯(lián)網(wǎng)2和防火墻3進行通信。在本發(fā)明中,客戶端4通過防火墻3和互聯(lián)網(wǎng)2向視頻服務器1發(fā)出請求,請求對某段視頻節(jié)目進行播放、停止、暫停、快進/后退等諸如VCR功能的操作。
下面參考圖4說明圖1中的視頻服務器1和客戶端4之間所發(fā)生的請求/應答操作。
圖4是在視頻服務器1和客戶端4之間發(fā)生的請求/應答的時序圖。
在圖4中,每個消息都包含要執(zhí)行的動作的消息類型,該消息類型由一列參數(shù)來指定。這里定義了五種消息類型打開(OPEN)、播放(PLAY)、暫停(PAUSE)、合并(MERGE)、和關閉(CLOSE)。對于由客戶端發(fā)送的每個消息,服務器都會發(fā)送回應答(RESPONSE)消息。
在步驟(1)中,通過發(fā)送OPEN消息給視頻服務器1,客戶端4與視頻服務器1建立一個會話,該OPEN消息包含唯一識別視頻服務器1上所請求的視頻文件(視頻節(jié)目)的視頻標識(Video ID)。如果成功地建立了該會話,則視頻服務器1將會發(fā)送回包含信道信息的RESPONSE給客戶端4,該信道信息例如是組播地址和端口號,客戶機4可以根據(jù)該信道信息接收所請求的視頻節(jié)目。
在步驟(2)中,客戶端4發(fā)送一個PLAY消息,以請求開始播放該視頻節(jié)目,或從暫停狀態(tài)進行恢復,在該PLAY消息中可以指定一個偏移參數(shù),以搜索該視頻節(jié)目的指定位置。在該RESPONSE消息中可以包含給客戶端4的附加信息,如指示客戶機4接收所請求的節(jié)目等的信息。
在步驟(3)中,當客戶端4檢測到發(fā)生了信道合并時,發(fā)送MERGE消息給視頻服務器1(當然,視頻服務器1也可以通過自己的諸如信道控制單元20的部件對信道進行計算而得出信道合并事件的發(fā)生)。該視頻服務器1將關閉不再使用的信道,并發(fā)送回指示客戶端4應加入的附加信道。
在步驟(4)中,客戶端4可以發(fā)送PAUSE消息給視頻服務器1,以在播放視頻節(jié)目時暫時停止數(shù)據(jù)傳輸,并且視頻服務器1進行相應的響應。
在步驟(5)中,客戶端4可以發(fā)送CLOSE消息給視頻服務器1,以關閉與視頻服務器1的會話,并且視頻服務器1進行相應的響應。
如果我們將上述所有的請求和通知消息都模型化為各個事件,則在視頻服務器1中共有四種事件即“開始事件”、“跳轉(zhuǎn)事件”、“停止事件”、和“合并事件”。這些事件都可以通過上述五種消息類型,即打開(OPEN)、播放(PLAY)、暫停(PAUSE)、合并(MERGE)、和關閉(CLOSE)進行操作。
當客戶端4發(fā)送關于對象(視頻節(jié)目)的請求時發(fā)生“開始事件”,即客戶端4在時刻t請求播放一段視頻節(jié)目(用PLAY消息);當客戶端4發(fā)送關于對象的快進或后退請求時發(fā)生“跳轉(zhuǎn)事件”,當發(fā)生“跳轉(zhuǎn)事件”時,相當于客戶端4向視頻服務器1發(fā)送了從時刻t+s或t-s播放該視頻節(jié)目的請求,其中s是跳轉(zhuǎn)的對象(即所請求的視頻節(jié)目其它部分)相對于在時刻t的偏移時間),這時,視頻服務器1建立一個新的信道以從時刻t-s播放該視頻節(jié)目(用PLAY消息),同時關閉從時刻t開始播放該視頻節(jié)目的信道(用CLOSE消息,對此操作將在下文中進行詳細的說明);當客戶端4不再需要一個對象時發(fā)生“停止事件”,即關閉發(fā)送該視頻節(jié)目的信道(用CLOSE消息);當客戶端4到達該客戶端4正在收看的最后信道對(channel pair)已經(jīng)成功合并的合并點時,發(fā)生“合并事件”(用MERGE消息和CLOSE消息),如在本發(fā)明背景技術中所述的合并方法中所述的情況,即圖2中的啟始點(b)為該合并點。
為了實現(xiàn)上述對某段視頻節(jié)目進行播放、停止、暫停、快進/后退等諸如VCR功能的操作,本發(fā)明提供了信道合并裝置40。
下面結合圖5說明根據(jù)本發(fā)明的信道合并裝置40的具體結構。
圖5是根據(jù)本發(fā)明的信道合并裝置40的結構圖。
本發(fā)明的信道合并裝置40配置于視頻服務器1的內(nèi)部,包括信道選擇單元10,用于接收多個客戶端對某一視頻節(jié)目的請求,并響應該請求建立一根信道(S1)和至少一子信道(S11),所述根信道(S1)根據(jù)最早發(fā)出請求的客戶端的請求而建立,所述多個子信道(S11)中的每一個對應于一較晚發(fā)出請求的客戶端的請求而建立,并且該信道選擇單元10還在信道合并過程中為一子信道尋找滿足后面將描述的條件表達式(1)和(2)的父信道;和信道控制單元20,用于根據(jù)客戶端4的請求和信道選擇單元10的選擇結果等執(zhí)行信道的建立、合并和關閉等操作。
另外,上述信道合并裝置40可以與視頻服務器1可操作地連接在一起,而不必要配置在視頻服務器1的內(nèi)部。同時,信道選擇單元10和信道控制單元20還可以是同一個單元,例如可以是計算機中的CPU(中央控制單元),用于執(zhí)行存儲于該計算機中的ROM或RAM或其它存儲介質(zhì)(未示出)中的可執(zhí)行程序,以實現(xiàn)與信道選擇單元10和信道控制單元20相應的功能。
該信道控制單元20還包括一計數(shù)單元22,該計數(shù)單元22用一計數(shù)參數(shù)(ref_num)來標記使用每個信道的客戶端4的數(shù)量,以實現(xiàn)信道控制單元20的控制功能。當所述每個信道及其子信道發(fā)生合并、跳轉(zhuǎn)、或停止事件時,所述計數(shù)單元22減小計數(shù)參數(shù)的值,并且如果計數(shù)參數(shù)的值等于零,則在視頻服務器1側(cè)關閉其計數(shù)值等于零的信道。
如果該計數(shù)參數(shù)的值不等于零,則在服務器端1保持該信道,而執(zhí)行了合并、跳轉(zhuǎn)、或停止事件的所述客戶端則不再接收該信道播放的節(jié)目。
在本發(fā)明中,視頻服務器1中的信道選擇單元10響應于多個客戶機4對某一視頻節(jié)目的請求,如圖3所示,建立一根信道S1和至少一個子信道(S11),該根信道(S1)是根據(jù)最早發(fā)出請求的客戶機(例如A)的請求而建立的,而該多個子信道S11(如還有S5和S6等)中的每個是對應于一較晚發(fā)出請求的客戶機的請求而建立的,該根信道S1與多個子信道S11(和S5和S6等)形成樹結構。當然,上述請求都是滿足視頻點播條件的請求。
所有上述信道都傳送基于客戶端4的請求而來自視頻服務器1的組播流,并且每個信道的組播流都可以由所有的客戶端4接收到。每個客戶端4最多可同時接收兩個信道,其中一個信道是為該客戶端4本身而發(fā)起的,而另一個信道則是為之前的客戶端而發(fā)起的較早的信道,例如,請求對象(視頻節(jié)目)的第一個客戶端只從信道s1(如圖3所示)接收視頻流,而第二個客戶端同時從信道s1和s2接收該視頻流,其中s1被選擇作為s2的父信道(如圖3所示)。每個客戶端都必須能夠在本地存儲器(未示出)上存儲所接收的視頻流。對于所建立的每一個信道,視頻服務器1通過本發(fā)明的信道控制單元20監(jiān)測使用該信道的客戶機4的數(shù)目變化,如果使用被監(jiān)測信道的客戶機4數(shù)目不為零,則維持該信道,如果使用被監(jiān)測信道的客戶機4數(shù)目為零,即已經(jīng)沒有客戶機4在使用該信道了,則視頻服務器1通過本發(fā)明的信道控制單元20關閉該信道。
這里,視頻服務器1中的信道控制單元20是通過自己的計算或通過接收來自發(fā)生信道合并的客戶端4的消息來檢測兩個信道(視頻流)的合并的。并且,該合并過程一直持續(xù)到所有的子信道都合并進根信道(對于同一視頻節(jié)目所建立的第一個信道)為止。這里假設視頻節(jié)目的長度是無限的。
下面參考附圖詳細說明根據(jù)本發(fā)明的信道合并的方法。
還參考圖3,圖3是示出信道合并樹的示意圖。其中的每個節(jié)點都表示一個信道,在這里將對某一視頻節(jié)目第一個建立的信道定義為根信道,將較高一級的信道定義為較低一級的信道的父信道,相反,將較低一級的信道定義為較高一級的信道的子信道。如圖3所示,S1是根信道,S6是S11的父信道,而S11是S6的子信道,同時,S6、S10、S11、和S12是S5的子孫信道的集合。
如果視頻服務器1中的信道控制單元20在客戶端4的請求(信道的開始、跳轉(zhuǎn))下建立了一個新的信道,我們假設它是信道S11,則信道選擇單元10立即為該信道S11尋找其父信道S6。如果找到了父信道S6,則返回該父信道S6;否則,返回“找不到父信道”的消息。
上述操作執(zhí)行的方法如下步驟1通過下列表達式(1),從信道S11可能并入的活動根信道的集合中找到一個最近的根信道,如S1,即min(S11.start_time-S1.start_time)<object_length/2 (1)其中,min(S11.start_time-S1.start_time)表示信道S11的開始時間(S11.start_time)與根信道集合中的各個根信道的開始時間(S1.start_time)的差值中的最小值,object_length/2表示所播放的視頻節(jié)目的總長度(總時間)的1/2。其中,開始時間(start_time)表示該信道開始的時刻。因此,上述表達式的含義是信道S11的開始時刻與根信道集合中的某個根信道S1的開始時刻的差值中的最小值要小于所播放的視頻節(jié)目的總長度(總時間)的1/2。在這種情況下,我們認為該根信道S1是可以被其子信道S11追上的,可以作為信道S11的根信道S1;否則,如果上述開始時刻的差值大于所播放的視頻節(jié)目的總長度(總時間)的1/2,我們就認為這個根信道是不可以達到的,從而返回“不能找到根信道”的消息,并將該信道S11作為一個新的根信道。
如果用上述條件找到了有效的根信道S1,則前進到下面的步驟2。
步驟2如果將根信道S1的子孫信道的集合定義為S,這里所述的子孫信道包括其直接父信道就是根信道S1的子信道S5和信道S5的子信道S6,這里定義信道S11是信道S6的子信道,同時可知信道S11也是信道S5的孫信道,依次類推。通過下述條件表達式(2)在集合S中找出信道S6(其中信道S6是信道S11的父信道,而信道S6和信道S11均在子孫信道集合S中,且為根信道S1的子孫信道)min(S11.start_time-S6.start_time)<S6.start_time-S5.start_time (2)上述表達式的含義為為信道S11找一個其將要并入的父信道S6,而這個父信道S6要滿足一個條件,該條件就是該信道S11的開始時刻與待選父信道S6的開始時刻的差值中的最小值應該小于該父信道S6的開始時刻與該父信道S6的父信道S5的開始時刻的差值。
如果滿足上述條件的信道S6存在,則將信道S6返回作為信道S11在下一輪合并中的父信道。否則,如果找不到滿足上述條件的任何信道,則將根信道S1返回作為信道S11的父信道。
很明顯,只要滿足上述條件,也就保證了在信道S11并入其父信道S6之前,該父信道S6不會并入該父信道S6的父信道S5。
也就是說,在一個信道S6合并進其父信道S5的時刻,該信道S6的各個子信道,如S10和S11,均已經(jīng)合并進其父信道S6。因此,從通過計算或通過接收來自客戶端4的消息而得知該信道S6合并進其父信道S5的時刻起,視頻服務器1關閉該信道S6,從而不會影響其它客戶端的使用,因為該信道S6的選擇如果滿足上述條件,在這個時刻已經(jīng)沒有其它客戶端在使用該信道S6了,即滿足上述條件的信道S10和S11均已經(jīng)合并進入信道S6了。這樣就保證了所有的信道合并都從最次級子信道向根信道的方向進行的,即在使用某個信道的所有客戶端4(以該信道的子信道的方式)明確地釋放該信道之前不移除該信道。
下面結合圖6、圖7、圖8、和圖9說明響應于開始、跳轉(zhuǎn)、合并、和停止這四種類型的事件,視頻服務器1及其中的各單元的工作情況。
首先說明響應于開始事件,視頻服務器1及其中的各單元的工作情況。
如圖6所示,當客戶端4在時刻t調(diào)用“開始事件”(即客戶端選擇播放某一段視頻節(jié)目)時
在步驟100,信道選擇單元10創(chuàng)建一個新的信道S11播放該視頻節(jié)目,并在該信道S11中設置start_time=t,object_offset=0(對象偏移時間表示該信道開始時視頻節(jié)目的偏移時間,即該信道的開始時間相對于在時刻t開始的信道的偏移時間),ref_num=1(參考數(shù)值表示客戶端的數(shù)量);這里start_time=t表示該信道是從時刻t開始的,objec t_offset=0表示該信道沒有偏移,ref_num=1表示只有一個客戶端正在使用該信道。
在步驟102,通過信道選擇單元10查找該信道S11的父信道。
在步驟103,判斷是否存在該父信道。
在步驟104,如果沒有找到其父信道,則信道合并單元20將這個信道S11作為新的根信道(即設置root_flag=1(根標志表示該信道是否是根信道的標志)),并且這個信道S11是客戶端4應該收看的唯一信道。
否則,在步驟105,如果找到了父信道S6,則該客戶端4必須同時收看該信道S11和它的父信道S6。
在步驟106,向客戶端4發(fā)送上述操作信息,以響應客戶端4觸發(fā)的開始請求。
下面說明響應于跳轉(zhuǎn)事件,視頻服務器1及其中的各單元的工作情況。
如圖7所示,當客戶端4在相對于時刻t的對象偏移時間s調(diào)用“跳轉(zhuǎn)事件”(即客戶端4在t-s的時刻進行了相當于VCR功能的快進或后退的操作)時在步驟200,信道選擇單元10創(chuàng)建一個新的信道S11以播放在時刻t-s開始的該視頻節(jié)目,并在該信道S11中設置start_time=t-s,object_offset=s,ref_num=1;這里start_time=t-s表示該信道是從時刻t-s開始的,object_offset=s表示該信道的開始時間相對于在時刻t開始的信道的偏移時間為s,ref_num=1表示只有一個客戶端正在使用該信道。
在步驟202,假設在時刻t開始的信道為S4,則減少信道S4的計數(shù)參數(shù)的值,即由于客戶端4剛才使用的信道S4已經(jīng)被執(zhí)行了停止操作,因此目前正在使用信道S4的客戶端的數(shù)量減少了一個。這時,如果信道S4的計數(shù)參數(shù)為零,表示目前已經(jīng)沒有客戶端在使用該信道S4了,則信道控制單元20關閉該信道S4;相反,如果這時信道S4的計數(shù)參數(shù)不為零,表示目前還有客戶端4在使用該信道S4,則不能關閉該信道S4,以供正在使用該信道S4的其它客戶端(如S8和S9)繼續(xù)使用,但是調(diào)用“跳轉(zhuǎn)事件”的該客戶端4則不再使用該信道S4,而轉(zhuǎn)向信道S11收看該視頻節(jié)目了。
在步驟203,通過信道選擇單元10查找該新的信道S11的父信道。
在步驟204,判斷是否存在該父信道。
在步驟205,如果沒有找到父信道,那么這個信道S11就作為新的根信道(即設置root_flag=1),并且這個信道S11是客戶端4應該收看的唯一信道。
否則,在步驟206,如果找到了父信道S6,則該客戶端4必須同時收看該信道S11和它的父信道S6;在步驟208,向客戶端4發(fā)送上述操作信息,以響應客戶端4觸發(fā)的跳轉(zhuǎn)請求。
下面說明響應于合并事件,視頻服務器1及其中的各單元的工作情況。
如圖8所示,當客戶端4觸發(fā)了“合并事件”(即發(fā)生子信道S11到父信道S6的合并)時在步驟300,信道控制單元20減少子信道S11的計數(shù)參數(shù)的值,即由于客戶端4正在使用的信道S11已經(jīng)合并入其父信道S6,因此目前正在使用信道S11的客戶端的數(shù)量減少了一個。這時,如果信道S11的計數(shù)參數(shù)為零,表示目前已經(jīng)沒有客戶端在使用該信道S11了,則視頻服務器1關閉該信道S11;相反,如果這時信道S11的計數(shù)參數(shù)不為零,表示目前還有客戶端在使用該信道S11,則不能關閉該信道S11,以供正在使用該信道S11的其它客戶端繼續(xù)使用,但是調(diào)用“合并事件”的該客戶端4則不再使用該信道S11,而是轉(zhuǎn)向了信道S6收看該視頻節(jié)目了。信道S11的計數(shù)參數(shù)的值就是正在使用該信道S11的客戶端4的數(shù)目,例如,如果計數(shù)參數(shù)是1(即ref_num=1),表示有一個客戶端4正在使用該信道S11,如果計數(shù)參數(shù)是5(即ref_num=5),則表示還有五個客戶端4正在使用該信道,而這些信道均是信道S11的次級子信道。
在步驟302,通過信道選擇單元10查找該信道S6的父信道。
在步驟303,判斷是否存在該父信道。
在步驟304,如果沒有找到該信道S6的父信道,那么這個信道S6就作為新的根信道(即設置root_flag=1),并且這個信道S6是客戶端4應該收看的唯一信道。
否則,在步驟305,如果找到了信道S6的父信道S5,則該客戶端4必須同時收看該信道S6和其新認定的父信道S5。
在步驟306,向客戶端4發(fā)送上述操作信息,以響應客戶端4觸發(fā)的合并請求。
下面說明響應于停止事件,視頻服務器1及其中的各單元的工作情況。
如圖9所示,當客戶端4調(diào)用“停止事件”(即客戶端執(zhí)行了相當于VCR功能的停止操作)或?qū)ο?視頻節(jié)目)到達終點(即結束)時假設客戶端正在使用信道S11觀看一視頻節(jié)目,則在步驟400,判斷該視頻節(jié)目是否已經(jīng)到達終點,即是否已經(jīng)結束。
如果對象(視頻節(jié)目)已經(jīng)到達終點,則信道控制單元20在步驟402關閉客戶端4正在使用的信道S11,并直接釋放該信道的所有資源。
如果該視頻節(jié)目未到達終點,則在步驟404,則信道控制單元20如上所述減少信道S11的參考數(shù)值的值。如果信道S11的參考數(shù)值為零,則關閉該信道S11并釋放該信道的所有資源;相反,如果信道S11的參考數(shù)值不為零,則信道控制單元20不關閉該信道S11,以供正在使用該信道S11的其它客戶端繼續(xù)使用,而調(diào)用“停止事件”的客戶端則不再使用該信道S11。
本發(fā)明上述控制視頻服務器的方法與HTTP(超文本傳輸協(xié)議)的請求/響應模式兼容,因此可以容易地在HTTP上實現(xiàn)。HTTP是在互聯(lián)網(wǎng)上交換應用數(shù)據(jù)的主流協(xié)議,并且網(wǎng)絡服務的出現(xiàn)進一步強化了基于互聯(lián)網(wǎng)的應用在數(shù)據(jù)傳輸方面應該盡可能依賴HTTP的趨勢。另外,大多數(shù)防火墻在允許一般數(shù)據(jù)流量的通過方面是難于處理的,但是對于HTTP來說,則不存在這個問題。
上面對本發(fā)明的實施例進行了詳細地說明。本領域的普通技術人員應該明白,按照本發(fā)明的精神及指導思想對本發(fā)明做出的各種修改都在本發(fā)明后附的權利要求書所要求保護的范圍內(nèi)。
權利要求
1.一種用于視頻點播系統(tǒng)的信道合并方法,其特征在于所述方法包括步驟(1)響應于多個客戶端對桌一視頻節(jié)目的請求,建立一根信道(S1)和至少一子信道(S11),所述根信道(S1)根據(jù)最早發(fā)出請求的客戶端的請求而建立,所述多個子信道(S11)中的每一個對應于一較晚發(fā)出請求的客戶端的請求而建立;(2)對于所建立的每一個信道,監(jiān)測使用該信道的客戶端的數(shù)目變化,如果使用被監(jiān)測信道的客戶端數(shù)目不為零,則維持該信道,如果使用被監(jiān)測信道的客戶端數(shù)目為零,則關閉該信道。
2.如權利要求1所述的信道合并方法,其特征在于所述根信道(S1)和每個子信道(S11)的建立是響應于客戶端的播放開始請求或節(jié)目跳轉(zhuǎn)請求。
3.如權利要求1所述的信道合并方法,其特征在于所述根信道與多個子信道形成樹結構。
4.如權利要求1所述的信道合并方法,其特征在于所述步驟(2)包括(2-1)用一計數(shù)參數(shù)標記使用每個信道的客戶端的數(shù)量;(2-2)響應于所述每個信道及其子信道的合并、跳轉(zhuǎn)、或停止事件的發(fā)生,減小所述計數(shù)參數(shù)的值;(2-3)如果所述計數(shù)參數(shù)的值等于零,則在服務器端關閉所述信道。
5.如權利要求4所述的信道合并方法,其特征在于如果所述計數(shù)參數(shù)的值不等于零,則在服務器端保持所述信道,而執(zhí)行了合并、跳轉(zhuǎn)、或停止事件的所述客戶端則不再接收所述信道播放的節(jié)目。
6.如權利要求1所述的信道合并方法,其特征在于步驟(1)包括步驟(1-1)從所述子信道(S11)可能并入的根信道(S1)的集合中搜索一根信道(S1),所述根信道(S1)滿足條件min(S11.start_time-S1.start_time)<object_length/2,其中,min(S11.start_time-S1.start_time)表示所述子信道(S11)的開始時刻(S11.start_time)與待選根信道集合中的各個根信道的開始時刻(S1.start_time)的差值中的最小值,object_length/2表示所播放的視頻節(jié)目的總長度的1/2;(1-2)如果所述根信道(S1)存在,則在所述根信道(S1)的子孫信道的集合中為所述子信道(S11)搜索一個其將要并入的父信道(S6),所述父信道滿足條件min(S11.start_time-S6.start_time)<S6.start_time-S5.start_time,其中,S6.start_time表示所述父信道(S6)的開始時刻,S5.start_time表示所述父信道(S6)的父信道(S5)的開始時刻;
7.如權利要求6所述的信道合并方法,其特征在于如果在步驟(1-1)中未找到所述根信道(S1),則將所述子信道(S11)設置為新的根信道,并將它的根信道參數(shù)設置為1,并且所述子信道(S11)是所述客戶端收看的唯一信道。
8.如權利要求6所述的信道合并方法,其特征在于如果在步驟(1-2)中找到了所述父信道,則所述客戶端同時收看所述子信道(S11)及所述父信道的視頻節(jié)目。
9.如權利要求6所述的信道合并方法,其特征在于如果在步驟(1-2)中未找到所述父信道,則將所搜索到的根信道做為所述子信道(S11)的父信道,并且所述客戶端同時收看所述子信道(S11)及所述根信道的視頻節(jié)目。
10.如權利要求2所述的信道合并方法,其特征在于如果所述客戶端在時刻t的請求是開始請求,則在子信道(S11)中將一開始時間參數(shù)設置為t、將一對象偏移參數(shù)設置為零。
11.如權利要求2所述的信道合并方法,其特征在于如果所述客戶端在時刻t的請求是跳轉(zhuǎn)請求,且所述跳轉(zhuǎn)的對象偏移時間為s,則在所述子信道(S11)中將一開始時間參數(shù)設置為t、將一對象偏移參數(shù)設置為s,同時對所述客戶端在之前時間接收的從時刻t開始播放的所述視頻節(jié)目的信道執(zhí)行停止操作。
12.如權利要求5所述的信道合并方法,其特征在于如果所述停止操作是所述視頻節(jié)目已經(jīng)結束,則直接關閉所述子信道并釋放所述子信道的全部資源。
13.如權利要求6所述的信道合并方法,其特征在于在建立所述子信道(S11)的次級子信道時,重復步驟(1-1)和(1-2)以將所述子信道(S11)確定為該次級子信道的父信道,并將所述子信道(S11)的計數(shù)參數(shù)的值加1。
14.一種用于視頻點播系統(tǒng)的信道合并裝置,所述信道合并裝置配置于所述視頻點播系統(tǒng)中的視頻服務器中或與其可操作地連接,其特征在于所述信道合并裝置包括信道選擇單元,用于響應多個客戶端對某一視頻節(jié)目的請求,建立一根信道(S1)和至少一子信道(S11),所述根信道(S1)根據(jù)最早發(fā)出請求的客戶端的請求而建立,所述多個子信道(S11)中的每一個對應于一較晚發(fā)出請求的客戶端的請求而建立;信道控制單元,用于對所建立的每一個信道,監(jiān)測使用該信道的客戶端的數(shù)目變化,如果使用被監(jiān)測信道的客戶端數(shù)目不為零,則維持該信道,如果使用被監(jiān)測信道的客戶端數(shù)目為零,則關閉該信道。
15.如權利要求14所述的信道合并裝置,其特征在于所述信道控制單元還包括計數(shù)單元,用一計數(shù)參數(shù)標記使用每個信道的客戶端的數(shù)量;其中當所述每個信道及其子信道發(fā)生合并、跳轉(zhuǎn)、或停止事件時,所述計數(shù)單元減小所述計數(shù)參數(shù)的值;并且如果所述計數(shù)參數(shù)的值等于零,則在服務器端關閉所述信道。
16.如權利要求15所述的信道合并裝置,其特征在于如果所述計數(shù)參數(shù)的值不等于零,則在服務器端保持所述信道,而執(zhí)行了合并、跳轉(zhuǎn)、或停止事件的所述客戶端則不再接收所述信道播放的節(jié)目。
全文摘要
一種用于視頻點播系統(tǒng)的信道合并方法,其特征在于所述方法包括步驟響應于多個客戶端對某一視頻節(jié)目的請求,建立一根信道(S1)和至少一子信道(S11),所述根信道(S1)根據(jù)最早發(fā)出請求的客戶端的請求而建立,所述多個子信道(S11)中的每一個對應于一較晚發(fā)出請求的客戶端的請求而建立;和對于所建立的每一個信道,監(jiān)測使用該信道的客戶端的數(shù)目變化,如果使用被監(jiān)測信道的客戶端數(shù)目不為零,則維持該信道,如果使用被監(jiān)測信道的客戶端數(shù)目為零,則關閉該信道。
文檔編號H04N7/173GK1505401SQ0215400
公開日2004年6月16日 申請日期2002年12月5日 優(yōu)先權日2002年12月5日
發(fā)明者裴云彰, 邵凌, 謝東 申請人:國際商業(yè)機器公司