專利名稱:用于視頻流式傳輸?shù)臒o(wú)縫倒回和回放的服務(wù)器側(cè)支持的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及通過(guò)諸如因特網(wǎng)之類的電信網(wǎng)絡(luò)來(lái)流式傳輸視頻內(nèi)容,并且更具體地涉及用于提供對(duì)此類直播視頻流的無(wú)縫倒回和回放的服務(wù)器側(cè)支持的方法。
背景技術(shù):
視頻流式傳輸系統(tǒng)能夠通過(guò)基于因特網(wǎng)的廣播類服務(wù)向大量用戶遞送直播視頻流。傳統(tǒng)視頻流式傳輸系統(tǒng)為用戶提供在客戶端機(jī)器上運(yùn)行的視頻播放器。該視頻播放器接收并緩沖客戶端機(jī)器的本地存儲(chǔ)器中的直播視頻流。響應(yīng)于對(duì)于直播視頻流的倒回并繼而回放的用戶請(qǐng)求,視頻播放器從本地存儲(chǔ)器訪問(wèn)緩沖的視頻。對(duì)倒回視頻流的此類客戶端側(cè)支持需要大量的客戶端側(cè)計(jì)算資源,諸如快速中央處理器(CPU)、充足的存儲(chǔ)器和盤空間,用于存儲(chǔ)從流式傳輸服務(wù)器接收的視頻流、在繼續(xù)接收后續(xù)流式傳輸數(shù)據(jù)分組時(shí)針對(duì)倒回計(jì)算定時(shí)需求。結(jié)果,用戶通常不得不遭受處理延遲并且體驗(yàn)降級(jí)的流式傳輸服務(wù)。對(duì)倒回直播視頻流的客戶端側(cè)支持的現(xiàn)有實(shí)現(xiàn)所面臨的另一問(wèn)題是視頻流式傳輸系統(tǒng)缺乏可伸縮性。通常向數(shù)千以及潛在的數(shù)百萬(wàn)觀看者同時(shí)廣播直播視頻流。視頻流式傳輸系統(tǒng)經(jīng)常包括大量子系統(tǒng),每個(gè)子系統(tǒng)可以包括多個(gè)傳入流式傳輸服務(wù)器,以接收直播視頻/音頻源(feed);多個(gè)流處理器(stream hander),以處理直播視頻流;和多個(gè)視頻流式傳輸服務(wù)器,以向觀看者提供請(qǐng)求的視頻流??缍鄠€(gè)子系統(tǒng)進(jìn)行歸檔并且獲取,而不使用戶體驗(yàn)降級(jí)需要視頻流式傳輸系統(tǒng)的服務(wù)器側(cè)處的更有效的視頻流歸檔/獲取和伸縮性支持。
發(fā)明內(nèi)容
一種方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品提供對(duì)于視頻流的無(wú)縫倒回和回放的服務(wù)器側(cè)支持。視頻流式傳輸計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施方式包括多個(gè)流式傳輸數(shù)據(jù)中心計(jì)算機(jī)系統(tǒng)。流式傳輸數(shù)據(jù)中心計(jì)算機(jī)系統(tǒng)包括傳入流式傳輸服務(wù)器計(jì)算機(jī)系統(tǒng)、一個(gè)或多個(gè)流處理器、流歸檔數(shù)據(jù)庫(kù)系統(tǒng)、本地索引數(shù)據(jù)庫(kù)系統(tǒng)和一個(gè)或多個(gè)流式傳輸服務(wù)器系統(tǒng)。流式傳輸數(shù)據(jù)中心計(jì)算機(jī)系統(tǒng)經(jīng)由網(wǎng)絡(luò)連接從各種視頻源收集傳入視頻/音頻流,并且向流處理器分發(fā)視頻流以便歸檔和編索引。流式傳輸數(shù)據(jù)中心還從用戶客戶端設(shè)備接收流式傳輸請(qǐng)求,并且向用戶提供請(qǐng)求的服務(wù)。流式傳輸歸檔數(shù)據(jù)庫(kù)系統(tǒng)存儲(chǔ)由流式傳輸數(shù)據(jù)中心貢獻(xiàn)的視頻流編索引信息。在一個(gè)實(shí)施方式中,對(duì)于來(lái)自于流式傳輸數(shù)據(jù)中心的每個(gè)視頻流,存在GOP級(jí)索引文件,該索引文件存儲(chǔ)視頻流的每個(gè)GOP的索引。在另一實(shí)施方式中,對(duì)于每個(gè)視頻流,存在幀級(jí)索引文件,該索引文件存儲(chǔ)視頻流的每個(gè)內(nèi)幀的索引。方法的一個(gè)實(shí)施方式包括從客戶端設(shè)備接收流式傳輸請(qǐng)求,并且標(biāo)識(shí)流處理器以供應(yīng)該請(qǐng)求。響應(yīng)于正在廣播視頻流時(shí)的倒回請(qǐng)求,該方法包括提取倒回時(shí)間需求、計(jì)算對(duì)應(yīng)于倒回時(shí)間需求的文件偏移并且流式傳輸請(qǐng)求的視頻流。相對(duì)于視頻廣播的開始,從倒回請(qǐng)求確定該時(shí)間需求。針對(duì)對(duì)應(yīng)于時(shí)間的視頻部分,從索引確定視頻中的偏移,并且獲取并且向客戶端設(shè)備流式傳輸對(duì)應(yīng)于該視頻部分的數(shù)據(jù)。說(shuō)明書中描述的特征和優(yōu)勢(shì)并不是全包括的,并且具體地,根據(jù)附圖、說(shuō)明書和權(quán)利要求書,很多附加特征和優(yōu)勢(shì)對(duì)于本領(lǐng)域技術(shù)人員而言將變得明顯。而且,應(yīng)該指出,已經(jīng)出于易讀性和指導(dǎo)性目的在大體上選擇了說(shuō)明書中所使用的語(yǔ)言,并且該語(yǔ)言可能沒(méi)有被選擇用于記述或限制所公開的主題。
圖1是示出了具有流式傳輸系統(tǒng)的環(huán)境的框圖,該流式傳輸系統(tǒng)用于對(duì)直播視頻流式傳輸?shù)臒o(wú)縫倒回和回放的服務(wù)器側(cè)支持。圖2A是示出了用于直播視頻流式傳輸?shù)臒o(wú)縫倒回和回放的流式傳輸數(shù)據(jù)中心的框圖。圖2B是用于處理訂閱視頻流的流式傳輸請(qǐng)求的流式傳輸數(shù)據(jù)中心的框圖。圖3是傳入流式傳輸中心的框圖。圖4是用于直播視頻流式傳輸?shù)臒o(wú)縫倒回和回放的流處理器的框圖。圖5是流式傳輸數(shù)據(jù)中心處理視頻流的流程圖。圖6是流式傳輸數(shù)據(jù)中心供應(yīng)流式傳輸請(qǐng)求的流程圖。圖7是跨越具有增強(qiáng)伸縮性的多個(gè)流式傳輸數(shù)據(jù)中心的供應(yīng)視頻流式傳輸請(qǐng)求的流程圖。僅出于示范的目的,附圖示出了本發(fā)明的各個(gè)實(shí)施方式,并且本發(fā)明不限于這些示出的實(shí)施方式。本領(lǐng)域技術(shù)人員將容易地從以下討論中認(rèn)識(shí)到,在不脫離此處所述本發(fā)明的原理的情況下,可以采用此處所示的結(jié)構(gòu)和方法的備選是實(shí)施方式。
具體實(shí)施例方式圖1是示出了根據(jù)一個(gè)實(shí)施方式的、具有流式傳輸系統(tǒng)100的環(huán)境的框圖,該流式傳輸系統(tǒng)100從客戶端110接收流式傳輸請(qǐng)求,并且向客戶端110發(fā)送請(qǐng)求的流式傳輸數(shù)據(jù)。系統(tǒng)100包括數(shù)據(jù)中心分配器計(jì)算機(jī)系統(tǒng)114( “數(shù)據(jù)中心分配器114”)、共享索引數(shù)據(jù)庫(kù)計(jì)算機(jī)系統(tǒng)118( “共享索引數(shù)據(jù)庫(kù)118”)和一個(gè)或多個(gè)流式傳輸數(shù)據(jù)中心計(jì)算機(jī)系統(tǒng)200A-N( “流式傳輸數(shù)據(jù)中心200”)。這些計(jì)算機(jī)系統(tǒng)中的每個(gè)包括一個(gè)或多個(gè)計(jì)算機(jī), 優(yōu)選地是服務(wù)器級(jí)計(jì)算機(jī),該計(jì)算機(jī)具有一個(gè)或多個(gè)處理器、大量高性能盤存儲(chǔ)陣列(例如,ITb)和可用存儲(chǔ)器(例如,IGb)??蛻舳?10和流式傳輸數(shù)據(jù)中心200經(jīng)由計(jì)算機(jī)網(wǎng)絡(luò)112(諸如因特網(wǎng))互連。數(shù)據(jù)中心分配器114與客戶端110和流式傳輸數(shù)據(jù)中心200 通信。每個(gè)流式傳輸數(shù)據(jù)中心200通過(guò)如下處理多個(gè)視頻流向共享索引數(shù)據(jù)庫(kù)118寫入視頻流編索引信息、從共享索引數(shù)據(jù)庫(kù)118獲取視頻流編索引信息、以及向客戶端110中的一個(gè)或多個(gè)提供每個(gè)視頻流來(lái)處理多個(gè)視頻流。為了簡(jiǎn)化并且澄清附圖,在圖1中僅示出了兩個(gè)客戶端110和四個(gè)流式傳輸中心200,但是實(shí)際上,在操作中可以包括更多的客戶端 110和流式傳輸數(shù)據(jù)中心200。示出的環(huán)境表示典型的情況,在該情況中,多個(gè)用戶/觀看者訂閱由流式傳輸數(shù)據(jù)中心200提供的視頻流式傳輸服務(wù)。在該情況中,用戶使用客戶端110來(lái)通過(guò)數(shù)據(jù)中心分配器114向流式傳輸數(shù)據(jù)中心200發(fā)送視頻流式傳輸服務(wù)請(qǐng)求,并且直接(即,沒(méi)有通過(guò)數(shù)據(jù)中心分配器114)從流式傳輸數(shù)據(jù)中心200接收請(qǐng)求的服務(wù)。數(shù)據(jù)中心分配器114基于某些標(biāo)準(zhǔn)(諸如,每個(gè)流式傳輸數(shù)據(jù)中心的負(fù)載)來(lái)向流式傳輸數(shù)據(jù)中心200中的一個(gè)分配流式傳輸服務(wù)請(qǐng)求。數(shù)據(jù)中心分配器114選擇的流式傳輸數(shù)據(jù)中心200從客戶端接收流式傳輸服務(wù)請(qǐng)求并且經(jīng)由網(wǎng)絡(luò)112向客戶端110提供請(qǐng)求的服務(wù)。返回到圖1上示出的獨(dú)立實(shí)體,每個(gè)客戶端110由用戶用于請(qǐng)求視頻流式傳輸服務(wù)。例如,用戶使用客戶端110來(lái)發(fā)送請(qǐng)求以便訂閱廣播的視頻流、播放視頻流、暫停視頻流或在仍舊正在廣播視頻時(shí)將視頻流倒回到指定的時(shí)間點(diǎn)??蛻舳?10可以是任何類型的計(jì)算機(jī)設(shè)備,諸如個(gè)人計(jì)算機(jī)(例如,臺(tái)式、筆記本、膝上型)計(jì)算機(jī)、以及諸如移動(dòng)電話、 個(gè)人數(shù)字助理、支持IP的視頻播放器之類的設(shè)備。客戶端110通常包括處理器、顯示設(shè)備 (或去往顯示設(shè)備的輸出)、本地存儲(chǔ),諸如硬盤驅(qū)動(dòng)器或閃存設(shè)備,客戶端110向其存儲(chǔ)用戶在執(zhí)行任務(wù)時(shí)使用的數(shù)據(jù),以及用于經(jīng)由網(wǎng)絡(luò)112耦合至系統(tǒng)100的網(wǎng)絡(luò)接口。客戶端110還具有用于播放視頻流的視頻播放器120(例如,來(lái)自于Adobe Systems公司的Flash 播放器或?qū)S貌シ牌?。視頻播放器120可以是單獨(dú)的應(yīng)用,或諸如網(wǎng)絡(luò)瀏覽器的另一應(yīng)用的插件。如果客戶端110是通用設(shè)備(例如,臺(tái)式計(jì)算機(jī)、移動(dòng)電話),則播放器120通常實(shí)現(xiàn)為由計(jì)算機(jī)執(zhí)行的軟件。如果客戶端110是專用設(shè)備(例如, 專用視頻播放器),則播放器120可以以硬件或硬件和軟件的組合實(shí)現(xiàn)。所有這些實(shí)現(xiàn)關(guān)于本發(fā)明而言在功能上是等同的。播放器120包括用于選擇視頻源、啟動(dòng)、停止和倒回視頻源的用戶接口控制(和相應(yīng)的應(yīng)用編程接口)。而且,播放器120可以在其用戶接口中包括時(shí)間線滑塊,該時(shí)間線滑塊被配置為指示視頻流式傳輸?shù)倪M(jìn)程,例如相對(duì)于視頻流的總時(shí)間(如果知道的話)的回放的當(dāng)前時(shí)間。時(shí)間線滑塊還將被配置用于在用戶接口中直接操縱,通過(guò)該用戶接口,用戶可以移動(dòng)該時(shí)間線滑塊來(lái)指定他/她希望將視頻流倒回多少(例如,以分鐘為單位)以觀看之前廣播的視頻流部分。也可以將其他類型的用戶接口控制(例如,按鈕、鍵盤控制)用于控制播放器120的回放和倒回功能。網(wǎng)絡(luò)112支持客戶端110與流式傳輸數(shù)據(jù)中心200之間的通信。在一個(gè)實(shí)施方式中,網(wǎng)絡(luò)112是因特網(wǎng),并且使用現(xiàn)在已知或后續(xù)開發(fā)的標(biāo)準(zhǔn)化的聯(lián)網(wǎng)通信技術(shù)和協(xié)議,它們使客戶端110能夠與流式傳輸數(shù)據(jù)中心200通信。出于該描述的目的,視頻流是來(lái)自于直播視頻源的視頻流,直播視頻源諸如是流式傳輸數(shù)據(jù)媒體內(nèi)容提供商通過(guò)因特網(wǎng)廣播的直播體育、音樂(lè)、新聞和娛樂(lè)。視頻流還包括來(lái)自于錄制源的視頻流,錄制源諸如是流式傳輸數(shù)據(jù)媒體內(nèi)容提供商通過(guò)因特網(wǎng)重新廣播的錄制的直播內(nèi)容、TV表演或電影。每個(gè)視頻流都由流標(biāo)識(shí)(ID)標(biāo)識(shí)。取決于編解碼器, 視頻流包括多個(gè)內(nèi)幀(I幀)、預(yù)測(cè)幀(P幀)并且可以具有雙向預(yù)測(cè)的幀(B幀)??梢詫⒁曨l流的多個(gè)視頻幀進(jìn)一步分組為圖片組(GOP),其中每個(gè)GOP包括至少一個(gè)內(nèi)幀。將視頻流作為一個(gè)或多個(gè)相關(guān)文件存儲(chǔ)在網(wǎng)絡(luò)存儲(chǔ)中,每個(gè)相關(guān)文件包括多個(gè)音頻/視頻數(shù)據(jù)分組。視頻的源/來(lái)源(諸如TV廣播臺(tái)、或基于因特網(wǎng)的視頻流提供商)連接至編碼器。編碼器負(fù)責(zé)捕獲并且數(shù)字化接收的視頻流、對(duì)其進(jìn)行壓縮并且將所得數(shù)據(jù)向視頻服務(wù)器傳送以便進(jìn)一步處理。數(shù)據(jù)中心分配器114通常在從客戶端110發(fā)送的用戶流請(qǐng)求需要域名服務(wù)器 (DNS)查找時(shí)使用。例如,用戶請(qǐng)求的流位于“http://host.com/stream_id”。客戶端110代表用戶與數(shù)據(jù)分配器114通信以找到主控流“streamed”的主機(jī)服務(wù)器“host, com"的因特網(wǎng)協(xié)議(IP)地址。數(shù)據(jù)中心分配器114基于某些標(biāo)準(zhǔn)(諸如流式傳輸數(shù)據(jù)中心中每個(gè)的負(fù)載)向流式傳輸數(shù)據(jù)中心200之一分配流式傳輸服務(wù)請(qǐng)求??梢曰诿總€(gè)數(shù)據(jù)中心的帶寬使用和分配給每個(gè)流式傳輸數(shù)據(jù)中心的帶寬容量值,來(lái)計(jì)算流式傳輸數(shù)據(jù)中心中每個(gè)的負(fù)載。數(shù)據(jù)中心分配器114通過(guò)避免向其帶寬使用接近于其全容量的流式傳輸數(shù)據(jù)中心發(fā)送流式傳輸請(qǐng)求來(lái)平衡負(fù)載。本領(lǐng)域技術(shù)人員可容易地獲得其他負(fù)載平衡機(jī)制。共享索引數(shù)據(jù)庫(kù)118存儲(chǔ)由流式傳輸數(shù)據(jù)中心200貢獻(xiàn)的視頻流編索引信息以便倒回廣播視頻流。在一個(gè)實(shí)施方式中,對(duì)于來(lái)自于流式傳輸數(shù)據(jù)中心200的每個(gè)視頻流而言,存在存儲(chǔ)視頻流每個(gè)GOP的索引的GOP級(jí)索引文件。具體地,該GOP級(jí)索引文件將每個(gè) GOP第一內(nèi)幀的索引保持在元組(stream_ID,file_offset, time_stamp)中。在另一實(shí)施方式中,對(duì)于每個(gè)視頻流,存在存儲(chǔ)視頻流每個(gè)內(nèi)幀的索引的幀級(jí)索引文件。索引針對(duì)每個(gè)內(nèi)幀存儲(chǔ)元組(stream_ID,file_offset,time_stamp)?!?、tream_ID”標(biāo)識(shí)內(nèi)幀所屬于的視頻流。“file_0ffSet”按照視頻流文件的字節(jié)指示內(nèi)幀從何處開始。該“file_0ffSet”值是從歸檔文件的開始(即,字節(jié)0)計(jì)數(shù)的絕對(duì)數(shù)值。“time_Stamp”指示在視頻流的歸檔文件中內(nèi)幀何時(shí)開始。該“time_Stamp”值是從視頻流開始播放時(shí)間(即,0毫秒)計(jì)數(shù)的絕對(duì)數(shù)值。在一個(gè)實(shí)施方式中,編索引信息作為全局視頻流編索引文件存儲(chǔ)。全局視頻流索引文件包括由流式傳輸數(shù)據(jù)中心200處理的每個(gè)視頻流的索引。來(lái)自于特定流式傳輸數(shù)據(jù)中心200的索引可以進(jìn)一步由流式傳輸數(shù)據(jù)中心標(biāo)識(shí)來(lái)標(biāo)識(shí)。該編索引信息由流式傳輸數(shù)據(jù)中心200共享,以便在具有伸縮性的多個(gè)流式傳輸數(shù)據(jù)中心200中對(duì)用戶流式傳輸請(qǐng)求進(jìn)行供應(yīng)。在下面關(guān)于圖3和圖4進(jìn)一步地描述流式傳輸數(shù)據(jù)中心200和共享視頻流編索引數(shù)據(jù)庫(kù)118的實(shí)施方式。圖2A是示出了根據(jù)一個(gè)實(shí)施方式的、用于視頻流式傳輸?shù)臒o(wú)縫倒回和回放的服務(wù)器側(cè)支持的流式傳輸數(shù)據(jù)中心200的框圖。流式傳輸數(shù)據(jù)中心200包括傳入流式傳輸服務(wù)器210、一個(gè)或多個(gè)流處理器220、流歸檔數(shù)據(jù)庫(kù)230、作為圖1中共享數(shù)據(jù)庫(kù)118的本地副本的本地索引數(shù)據(jù)庫(kù)M0、以及一個(gè)或多個(gè)流式傳輸服務(wù)器250。如圖2A中示出,傳入服務(wù)器210具有耦合到它的多個(gè)流處理器220 ;每個(gè)流處理器220具有流處理器ID。對(duì)于每個(gè)傳入視頻流,傳入服務(wù)器210選擇流處理器220的一個(gè), 并且將該傳入視頻流的所有數(shù)據(jù)分組引導(dǎo)到選擇的流處理器220。流式傳輸數(shù)據(jù)中心200還包括多個(gè)流式傳輸服務(wù)器250,以處理來(lái)自于客戶端的流式傳輸請(qǐng)求。流式傳輸服務(wù)器250處理兩種類型的流式傳輸請(qǐng)求訂閱廣播視頻流的請(qǐng)求和倒回廣播流的請(qǐng)求。訂閱廣播視頻流的流式傳輸請(qǐng)求(訂閱請(qǐng)求)不包括用于倒回的定時(shí)信息。倒回廣播流的流式傳輸請(qǐng)求(倒回請(qǐng)求)包括定時(shí)信息,該定時(shí)信息關(guān)于正在廣播視頻流時(shí)倒回視頻流的期望量/偏移。因此,流式傳輸服務(wù)器250通過(guò)定時(shí)信息是否出現(xiàn)在請(qǐng)求中來(lái)在請(qǐng)求之間進(jìn)行區(qū)分;無(wú)需其他形式語(yǔ)義。響應(yīng)于倒回請(qǐng)求,流式傳輸服務(wù)器250通過(guò)檢查本地索引數(shù)據(jù)庫(kù)240來(lái)找到對(duì)應(yīng)于請(qǐng)求中定時(shí)信息的文件偏移,并且讀取從存儲(chǔ)在流式傳輸歸檔數(shù)據(jù)庫(kù)230中的視頻流文件偏移開始的所請(qǐng)求視頻流的數(shù)據(jù)分組。例如,客戶端110的播放器120為其用戶提供正被廣播的視頻流的時(shí)間線視圖。該
9用戶可以利用鼠標(biāo)選擇時(shí)間線滑塊中的位置。播放器120將時(shí)間線滑塊上選擇的位置映射到相應(yīng)的定時(shí)信息。例如,假設(shè)直播廣播視頻是2小時(shí)長(zhǎng)度,并且用戶在時(shí)間線滑塊上選擇處于起始和結(jié)束之間中途點(diǎn)處的位置,然后將該位置映射到1:00。該定時(shí)信息包括在視頻流式傳輸請(qǐng)求中并且被發(fā)送到流式傳輸服務(wù)器以便處理。示例性倒回請(qǐng)求是 URL 的形式,諸如 http://www. hostserver. com/play ? id = StreamlD&time = timestamp,其中streamID是所請(qǐng)求流的流ID,并且timestamp是表示開始時(shí)間的時(shí)間值的數(shù)值,該開始時(shí)間相對(duì)于相對(duì)于視頻流的開始。例如,用戶可以利用URL 發(fā)出針對(duì)視頻流的請(qǐng)求,比如“http://www. hostserver. com/lplay ? id = Streaml2&time =600”,其請(qǐng)求由其流ID“Mreaml2”標(biāo)識(shí)的視頻流,并且將該視頻流倒回到第600秒(即, 第10分鐘的末尾)。定時(shí)信息(例如,時(shí)間戳值)指示用戶倒回請(qǐng)求而不論視頻流來(lái)自于直播視頻源(例如,直播廣播)還是來(lái)自于錄制的視頻源(例如,對(duì)錄制的直播事件的重新廣播)。在一個(gè)實(shí)施方式中,不支持快進(jìn)請(qǐng)求。為了進(jìn)一步示出上述流式傳輸請(qǐng)求和響應(yīng),以下的偽代碼表示存儲(chǔ)用于流式傳輸請(qǐng)求/響應(yīng)的數(shù)據(jù)的流式傳輸服務(wù)器250使用的數(shù)據(jù)結(jié)構(gòu)
//視頻流式傳輸請(qǐng)求示例Il Message LiveAchieveRequest {
required m ess age < Strea mID > stream;
required int64 start_time; //相對(duì)時(shí)間值 } _
//視頻流式傳輸響應(yīng)示例// Message LiveAchieveResponse { enum Status { OK = 0;
ERROR_STREAM_NOT_EXIST = 1;
ERROR_INVALID_TIME = 2;
}
required Status status = 1; byte_offset: 9000; //開始介入流文件
data_source <filepath: /home/storage/HD/archive—1234>; } “ —用于訂閱廣播視頻流的訂閱請(qǐng)求不包括定時(shí)信息。每個(gè)流式傳輸服務(wù)器250可以直接與多個(gè)流處理器220通信。來(lái)自于客戶端的流式傳輸請(qǐng)求包括流ID。給定流ID,流式傳輸服務(wù)器250通過(guò)針對(duì)流ID檢查本地索引數(shù)據(jù)庫(kù)240來(lái)找到哪個(gè)流處理器220負(fù)責(zé)請(qǐng)求的視頻流、向標(biāo)識(shí)的流處理器220進(jìn)行訂閱以及請(qǐng)求從視頻流起始開始的所請(qǐng)求視頻流的數(shù)據(jù)分組。圖2B是示出了根據(jù)上面描述的、用于直接從流處理器流式傳輸所請(qǐng)求視頻的流式傳輸數(shù)據(jù)中心?,F(xiàn)在回到圖3,在一個(gè)實(shí)施方式中,流式傳輸數(shù)據(jù)中心200的傳入流式傳輸服務(wù)器 210包括協(xié)議解釋模塊212、數(shù)據(jù)提取模塊214和負(fù)載平衡器216。傳入流式傳輸服務(wù)器210從視頻流源310接收視頻流、模塊212、214和216對(duì)視頻流進(jìn)行處理,并且向選擇的流處理器220發(fā)送處理后的視頻流數(shù)據(jù)320以便進(jìn)一步地編索引并歸檔。傳入流式傳輸服務(wù)器 210可以是流式傳輸服務(wù)器,例如W0WZA Media Server或者Adobe Flash Media Server。 傳入流式傳輸服務(wù)器210可以使用標(biāo)準(zhǔn)視頻流式傳輸協(xié)議或?qū)S脜f(xié)議來(lái)接受視頻流,該標(biāo)準(zhǔn)視頻流式傳輸協(xié)議諸如實(shí)時(shí)流式傳輸協(xié)議(RTSP),該專用協(xié)議諸如由Adobe System 開發(fā)用于通過(guò)因特網(wǎng)在Flash播放器與流式傳輸服務(wù)器之間流式傳輸音頻/視頻數(shù)據(jù)的實(shí)時(shí)消息傳送協(xié)議(RTMP)。協(xié)議解釋模塊212通過(guò)標(biāo)識(shí)視頻流中使用的流式傳輸協(xié)議來(lái)處理從視頻流源310 接收的視頻流。例如,傳入流式傳輸服務(wù)器210是流式傳輸服務(wù)器,其使用RTMP協(xié)議接受視頻流并且允許flash播放器以RTMP協(xié)議播放視頻流。協(xié)議解釋模塊212標(biāo)識(shí)所接收視頻流中的RTMP流式傳輸協(xié)議,并且向流處理器220中的一個(gè)或多個(gè)發(fā)送作為視頻流信息的一部分的協(xié)議信息。數(shù)據(jù)提取模塊214從接收的視頻源提取音頻/視頻數(shù)據(jù)、將提取的音頻/視頻數(shù)據(jù)形成為音頻/視頻數(shù)據(jù)分組、以及向流處理器220中的一個(gè)或多個(gè)發(fā)送提取的音頻/視頻數(shù)據(jù)分組。在一個(gè)實(shí)施方式中,音頻/視頻分組是將使用用戶數(shù)據(jù)報(bào)協(xié)議(UDP)向流處理器220傳輸?shù)臉?biāo)準(zhǔn)網(wǎng)絡(luò)數(shù)據(jù)分組。其他實(shí)施方式可以使用其他因特網(wǎng)協(xié)議提取接收的視頻流到網(wǎng)絡(luò)分組中。對(duì)于傳入視頻流而言,負(fù)載平衡器216確定流處理器220中的哪一個(gè)接收視頻流用于使用負(fù)載平衡算法來(lái)歸檔和編索引。在一個(gè)實(shí)施方式中,負(fù)載平衡器216基于每個(gè)流處理器220的業(yè)務(wù)負(fù)載在多個(gè)流處理器220中選擇流處理器220用于視頻流。負(fù)載平衡器 216可以選擇具有最輕業(yè)務(wù)負(fù)載的流處理器220來(lái)處理接收的視頻流。其他實(shí)施方式可以允許負(fù)載平衡器包括其他確定因子,諸如不同流的數(shù)量、處理器利用率或分組處理率的測(cè)量值,以選擇流處理器220用于處理接收的視頻流。流處理器220接收從傳入流式傳輸服務(wù)器210發(fā)送的視頻流的多個(gè)音頻/視頻數(shù)據(jù)分組以便進(jìn)一步處理。圖4是圖2A示出的流處理器220的框圖。流處理器220包括流歸檔模塊222和請(qǐng)求處理模塊224。流歸檔模塊222將流編索引信息420寫入共享索引數(shù)據(jù)庫(kù)118,并且將接收的音頻/視頻數(shù)據(jù)分組歸檔/存儲(chǔ)在流歸檔數(shù)據(jù)庫(kù)230中。對(duì)于倒回請(qǐng)求,請(qǐng)求處理模塊2M基于倒回請(qǐng)求中的定時(shí)信息從本地索引數(shù)據(jù)庫(kù)240獲取文件偏移信息,并且向流式傳輸服務(wù)器250發(fā)送文件偏移信息。對(duì)于訂閱視頻流的流式傳輸請(qǐng)求,處理模塊224向流式傳輸服務(wù)器250直接發(fā)送從傳入流式傳輸服務(wù)器210接收的所請(qǐng)求視頻流的數(shù)據(jù)分組。流歸檔模塊222接收視頻流和/或視頻流信息(例如,視頻流式傳輸協(xié)議)的多個(gè)音頻/視頻數(shù)據(jù)分組,并且將數(shù)據(jù)分組存儲(chǔ)在流歸檔數(shù)據(jù)庫(kù)230中。在一個(gè)實(shí)施方式中, 整個(gè)視頻流作為一個(gè)歸檔文件存儲(chǔ)在流歸檔數(shù)據(jù)庫(kù)230中??梢越?jīng)由流ID從流歸檔數(shù)據(jù)庫(kù)230獲取歸檔的視頻流。出于歸檔和獲取目的,屬于給定視頻流的所有數(shù)據(jù)分組共享相同的流ID。流歸檔模塊222向共享索引數(shù)據(jù)庫(kù)118寫入歸檔文件的編索引信息。為了對(duì)歸檔的視頻流編索引,在一個(gè)實(shí)施方式中,歸檔模塊222在索引文件中存儲(chǔ)視頻流每個(gè)內(nèi)幀的索引。該索引針對(duì)每個(gè)內(nèi)幀存儲(chǔ)元組(stream_ID,file_offset,time_stamp)。例如,對(duì)于位于字節(jié)123處并且在21,000毫秒處開始播放的內(nèi)幀而言,內(nèi)幀的索引是索引文件中的 (streaml2U23,21000)。類似地,對(duì)于位于字節(jié)345處并且在24,000毫秒處開始播放的相同視頻流的另一內(nèi)幀而言,索引是(streaml2、345、24000)。整個(gè)視頻流的索引文件是索引的列表,其中每個(gè)對(duì)應(yīng)于視頻流的內(nèi)幀。根據(jù)視頻流內(nèi)幀的處理順序?qū)λ饕判?。為了加速向共享索引?shù)據(jù)庫(kù)118寫入編索引信息,在另一實(shí)施方式中,流歸檔模塊222在索引文件中保持視頻流每個(gè)GOP的索引。具體地,流歸檔模塊222以(streamJD, file_offset, time_stamp)的格式保持每個(gè)GOP的第一內(nèi)幀的索引。例如,對(duì)于具有5個(gè) GOP并且每個(gè)GOP由其第一內(nèi)幀來(lái)表示的視頻流而言,在下表中示出了該視頻流的索引文件表I:G0P級(jí)編索引
GOP第一內(nèi)幀流ID編索引 (stream—id, flle_offset, timestamp)1InS12(S12,123, 21000)2I21S12(S12,345, 48000)3I31S12(S12,456, 96000)4I41S12(S12, 789,130000)5I51S12(S12,1200, 256000)視頻流生成將存儲(chǔ)在歸檔數(shù)據(jù)庫(kù)中的多個(gè)相關(guān)文件并且每個(gè)相關(guān)文件對(duì)應(yīng)于該視頻流的一部分是可能的,在該事件中,多個(gè)相關(guān)文件將共享相同的流ID。為了使針對(duì)視頻流生成的多個(gè)文件相關(guān),每個(gè)文件可以進(jìn)一步由時(shí)間戳標(biāo)記,該時(shí)間戳指示該部分視頻流的時(shí)間偏移,從而從視頻流的第一數(shù)據(jù)分組的起始連續(xù)計(jì)數(shù)(例如,視頻流中的10分鐘)。為了支持視頻流在視頻流正在廣播時(shí)倒回到用戶指定的時(shí)間點(diǎn),對(duì)視頻流編索引對(duì)于歸檔和獲取而言需要是有效的。流歸檔模塊222保持每個(gè)視頻流的編索引信息用于數(shù)據(jù)獲取。在一個(gè)實(shí)施方式中,流式傳輸歸檔模塊222包括所存儲(chǔ)視頻文件的頭部中的視頻流的編索引信息。這允許流式傳輸歸檔模塊222基于流ID首先訪問(wèn)存儲(chǔ)的文件,并且繼而從該頭部讀取以針對(duì)用戶請(qǐng)求的相應(yīng)時(shí)間點(diǎn)來(lái)訪問(wèn)文件中期望的偏移。在另一實(shí)施方式中,歸檔模塊222向由多個(gè)流式傳輸數(shù)據(jù)中心200共享的全局存儲(chǔ)設(shè)備(例如,圖1中的共享索引數(shù)據(jù)庫(kù)118)寫入存儲(chǔ)在歸檔數(shù)據(jù)庫(kù)230中的每個(gè)視頻流的編索引信息。共享索引數(shù)據(jù)庫(kù)118通過(guò)流式傳輸中心標(biāo)識(shí)來(lái)標(biāo)識(shí)來(lái)自于特定流式傳輸數(shù)據(jù)中心的每個(gè)編索引信息。由流式傳輸中心處理的視頻流的幀級(jí)編索引信息是視頻流每個(gè)內(nèi)幀的索引列表。索引可以具有元組(DC_ID,stream_ID,file_offset,time_stamp),其中 “DC_ID”標(biāo)識(shí)流式傳輸數(shù)據(jù)中心。響應(yīng)于針對(duì)流式傳輸數(shù)據(jù)中心200接收的新的編索引信息,周期性地或按需更新共享索引數(shù)據(jù)庫(kù)118中的編索引信息。每個(gè)流式傳輸數(shù)據(jù)中心200 存儲(chǔ)在共享索引數(shù)據(jù)庫(kù)118中存儲(chǔ)的編索引信息的副本,使得每個(gè)流式傳輸數(shù)據(jù)中心具有關(guān)于什么視頻流歸檔在其他流式傳輸數(shù)據(jù)中心中的知識(shí)。
共享編索引信息提供了針對(duì)跨多個(gè)流式傳輸數(shù)據(jù)中心200的可伸縮視頻流式傳輸?shù)母鞣N益處。共享編索引信息允許流式傳輸系統(tǒng)基于多個(gè)因素有效地分發(fā)視頻流。例如, 流式傳輸系統(tǒng)可以指定特定的流式傳輸數(shù)據(jù)中心200來(lái)處理不流行的(即,低數(shù)量的客戶端請(qǐng)求)視頻流,并且僅將不流行的視頻流歸檔在指定的流式傳輸中心200中。通過(guò)這樣做,其他流式傳輸數(shù)據(jù)中心可以將它們的計(jì)算資源投入用于處理更高需求的視頻流,同時(shí)具有響應(yīng)于用戶請(qǐng)求而到何處取得該不流行視頻流的必要信息。視頻流的流行性確定是設(shè)計(jì)參數(shù)。例如,視頻流的流行性可以基于用戶訂閱的數(shù)量來(lái)確定。多個(gè)流式傳輸數(shù)據(jù)中心200共享編索引信息還提供了流式傳輸數(shù)據(jù)中心200的改進(jìn)性能。流式傳輸數(shù)據(jù)中心200具有對(duì)哪個(gè)視頻流進(jìn)行歸檔并且在其他流式傳輸數(shù)據(jù)中心中可獲得哪個(gè)視頻流的靈活性。當(dāng)流式傳輸數(shù)據(jù)中心200(供應(yīng)流式傳輸數(shù)據(jù)中心)從客戶端接收針對(duì)不是本地歸檔的視頻流的倒回請(qǐng)求時(shí),供應(yīng)流式傳輸數(shù)據(jù)中心根據(jù)共享編索引信息的其本地副本,來(lái)確定其他哪個(gè)流式傳輸數(shù)據(jù)中心(源流式傳輸數(shù)據(jù)中心)正在處理該被請(qǐng)求的視頻流。代替從源流式傳輸數(shù)據(jù)中心向供應(yīng)流式傳輸中心、繼而向客戶端流式傳輸所請(qǐng)求的流,供應(yīng)流式傳輸數(shù)據(jù)中心本地高速緩存視頻流,并且從本地高速緩存向客戶端發(fā)送視頻流。因此,減少了在數(shù)據(jù)中心之間的多個(gè)跨越流式傳輸,從而使得總體性能改進(jìn)。參考圖4,請(qǐng)求處理模塊2M從視頻流式傳輸服務(wù)器250接收流式傳輸請(qǐng)求,處理流式傳輸請(qǐng)求,并且獲取所請(qǐng)求的視頻流,并且向該視頻流式傳輸服務(wù)器發(fā)送所請(qǐng)求的視頻流。如關(guān)于圖2B的流式傳輸服務(wù)器250在上面描述的,訂閱請(qǐng)求不具有定時(shí)信息,其向流式傳輸服務(wù)器250指示客戶端正在請(qǐng)求視頻流的初始訂閱。流式傳輸服務(wù)器250檢查本地索引數(shù)據(jù)庫(kù)對(duì)0,以標(biāo)識(shí)哪個(gè)流處理器220將處理該請(qǐng)求,并且向所標(biāo)識(shí)的流處理器 220傳送該請(qǐng)求。標(biāo)識(shí)的流處理器的請(qǐng)求處理模塊2M開始連續(xù)地向流式傳輸服務(wù)器250 發(fā)送從傳入流式傳輸服務(wù)器210接收的所請(qǐng)求流的數(shù)據(jù)分組。響應(yīng)于倒回請(qǐng)求,流式傳輸服務(wù)器250確定是否需要倒回。在一個(gè)實(shí)施方式中,流式傳輸服務(wù)器250從該請(qǐng)求提取定時(shí)信息并且檢查該請(qǐng)求中所請(qǐng)求開始時(shí)間的值。流式傳輸服務(wù)器250向處理模塊2 發(fā)送請(qǐng)求的開始時(shí)間和流ID以便進(jìn)一步處理。因而,處理模塊2M基于提取的定時(shí)信息來(lái)計(jì)算文件偏移。在一個(gè)實(shí)施方式中,處理模塊2M通過(guò)檢查本地索引文件來(lái)找到最接近于相對(duì)開始時(shí)間的time_Stamp值,而將相對(duì)開始時(shí)間映射到其相應(yīng)的文件偏移。備選地,流式傳輸服務(wù)器250還可以將來(lái)自于請(qǐng)求的相對(duì)開始時(shí)間值轉(zhuǎn)換到相對(duì)于當(dāng)前時(shí)鐘時(shí)間的絕對(duì)開始時(shí)間值,在該情況中,處理模塊2M將該絕對(duì)開始時(shí)間值映射到其相應(yīng)的文件偏移。這里,流式傳輸服務(wù)器250通過(guò)從由流式傳輸服務(wù)器 250使用的當(dāng)前始終時(shí)間中減去相對(duì)開始時(shí)間,來(lái)計(jì)算絕對(duì)時(shí)間值。處理模塊2M基于計(jì)算的絕對(duì)時(shí)間值來(lái)檢查本地索引文件以找到time_Stamp值。流式傳輸服務(wù)器250在最接近 time_stamp的文件偏移處獲取內(nèi)幀,并且向客戶端120發(fā)送內(nèi)幀的數(shù)據(jù)分組。例如,流處理器220的請(qǐng)求處理模塊2 從視頻流式傳輸服務(wù)器250接收URL中的流式傳輸請(qǐng)求,該 URL 如"http //www. hostserver. com/play ? id = Streaml2&time = 600000”。該請(qǐng)求包含相對(duì)開始時(shí)間信息,即“time = 600000”。請(qǐng)求的開始時(shí)間是相對(duì)開始時(shí)間值600,000毫秒(即,距視頻的開始10分鐘)。處理模塊2M檢查本地索引數(shù)據(jù)庫(kù)240并且找到具有最接近匹配時(shí)間值的索引記錄,例如(Mreaml2,900,600000)。這里的“900”值指示相對(duì)于視頻流的開始、對(duì)應(yīng)于時(shí)間值600,000毫秒的內(nèi)幀的字節(jié)偏移。備選地,流式傳輸服務(wù)器250將相對(duì)開始時(shí)間值6000,000的相對(duì)開始時(shí)間值轉(zhuǎn)換到相對(duì)于當(dāng)前時(shí)鐘時(shí)間的絕對(duì)時(shí)間值。假設(shè)視頻流之前廣播了 1,800,000毫秒(即,30分鐘),則流式傳輸服務(wù)器250確定從當(dāng)前時(shí)鐘時(shí)間倒回到的絕對(duì)時(shí)間是1,200,000毫秒(20分鐘)。 處理模塊2M檢查本地索引數(shù)據(jù)庫(kù)M0,并且找到具有最接近匹配時(shí)間值的索引記錄,例如 (Streaml2,900,600000)。流式傳輸服務(wù)器250獲取起始于歸檔流的文件偏移900的內(nèi)幀數(shù)據(jù)分組并且開始從該文件偏移向客戶端120發(fā)送數(shù)據(jù)分組。在另一實(shí)施方式中,客戶端110將用戶請(qǐng)求中的定時(shí)信息轉(zhuǎn)換到絕對(duì)time_ stamp,并且向流式傳輸服務(wù)器250發(fā)送該time_Stamp連同流標(biāo)識(shí)。處理模塊2 檢查本地索引文件來(lái)找到最接近接收的絕對(duì)time_Stamp值的time_Stamp值。處理模塊2M在最接近該time_Stamp的文件偏移處獲取內(nèi)幀并且發(fā)送該內(nèi)幀的數(shù)據(jù)分組。圖5是用于處理直播流的流式傳輸數(shù)據(jù)中心200的操作的流程圖。初始,流式傳輸數(shù)據(jù)中心200的傳入流式傳輸服務(wù)器210從直播源接收510視頻流。傳入流式傳輸服務(wù)器 210通過(guò)協(xié)議解釋模塊212解釋512視頻流中的流式傳輸協(xié)議、并且通過(guò)數(shù)據(jù)提取模塊214 從視頻流提取514音頻/視頻數(shù)據(jù)。傳入流式傳輸服務(wù)器210還標(biāo)識(shí)516流處理器220以進(jìn)一步處理視頻流,并且向流處理器220分發(fā)518提取的流數(shù)據(jù)以便歸檔和編索引。圖6是供應(yīng)來(lái)自于客戶端設(shè)備的服務(wù)流式傳輸請(qǐng)求的流式傳輸數(shù)據(jù)中心的操作的流程圖。初始,流式傳輸數(shù)據(jù)中心200的流式傳輸服務(wù)器250中的一個(gè)從用戶的客戶端設(shè)備接收610流式傳輸請(qǐng)求。該流式傳輸請(qǐng)求至少包括標(biāo)識(shí)由用戶請(qǐng)求的視頻流的流ID。 響應(yīng)于請(qǐng)求不包含定時(shí)信息,流式傳輸服務(wù)器250通過(guò)針對(duì)本地索引數(shù)據(jù)庫(kù)240檢查流ID, 來(lái)標(biāo)識(shí)612哪個(gè)流處理器220具有請(qǐng)求的視頻流,并且獲取從當(dāng)前時(shí)間開始的所請(qǐng)求流的數(shù)據(jù)分組。響應(yīng)于請(qǐng)求包含定時(shí)信息,流處理器220確定該請(qǐng)求是否針對(duì)倒回視頻流。如果該請(qǐng)求是倒回請(qǐng)求,則流式傳輸服務(wù)器250從該請(qǐng)求提取614定時(shí)信息,并且處理模塊2M 計(jì)算616對(duì)應(yīng)于該定時(shí)信息的文件偏移。流式傳輸服務(wù)器250獲取618所請(qǐng)求的流,并且向客戶端120發(fā)送620從獲得的文件偏移開始的視頻流。分發(fā)視頻流式傳輸系統(tǒng)的典型實(shí)現(xiàn)將包括如圖1所述的多個(gè)流式傳輸數(shù)據(jù)中心。 在圖6中進(jìn)一步示出了對(duì)正在廣播流時(shí)的視頻流無(wú)縫倒回的服務(wù)器側(cè)支持、和跨多個(gè)流式傳輸數(shù)據(jù)中心200的可伸縮系統(tǒng)性能。圖7是用于跨多個(gè)流式傳輸數(shù)據(jù)中心200供應(yīng)視頻流式傳輸請(qǐng)求,因此提供增強(qiáng)的伸縮性的操作的流程圖。初始,數(shù)據(jù)中心分配器114從客戶端接收710流式傳輸請(qǐng)求。分配器114基于一個(gè)或多個(gè)確定因素(諸如可用流式傳輸數(shù)據(jù)中心200的業(yè)務(wù)負(fù)載)向流式傳輸數(shù)據(jù)中心200中的一個(gè)分配712請(qǐng)求。選擇的流式傳輸數(shù)據(jù)中心200基于請(qǐng)求的流ID檢查本地索引數(shù)據(jù)庫(kù)。響應(yīng)于在選擇的數(shù)據(jù)中心230的本地歸檔數(shù)據(jù)庫(kù)230中可獲得請(qǐng)求的數(shù)據(jù),流式傳輸數(shù)據(jù)中心200如結(jié)合圖2至圖4描述在上面描述的那樣處理720流式傳輸請(qǐng)求。響應(yīng)于請(qǐng)求的數(shù)據(jù)不可本地獲得,流式傳輸數(shù)據(jù)中心200檢查本地索引數(shù)據(jù)庫(kù)MO,該本地索引數(shù)據(jù)庫(kù)MO包含由所有流式傳輸數(shù)據(jù)中心共享的全局編索引文件的副本。基于全局編索引文件,流式傳輸數(shù)據(jù)中心200標(biāo)識(shí)716其他哪個(gè)流式傳輸數(shù)據(jù)中心200具有請(qǐng)求的流。如果流式傳輸請(qǐng)求是倒回請(qǐng)求,則流式傳輸數(shù)據(jù)中心200獲得所請(qǐng)求流的副本并且存儲(chǔ)在本地高速緩存中718。流式傳輸數(shù)據(jù)中心200繼續(xù)處理720該流式傳輸請(qǐng)求。對(duì)該流式傳輸請(qǐng)求的處理包括圖6中描述的處理步驟,諸如標(biāo)識(shí)612流處理器、提取614倒回時(shí)間需求、計(jì)算616歸檔文件偏移和流式傳輸618請(qǐng)求的視頻流。如果流式傳輸請(qǐng)求是訂閱請(qǐng)求,則流式傳輸數(shù)據(jù)中心200將該請(qǐng)求重定向到標(biāo)識(shí)的流式傳輸數(shù)據(jù)中心。該標(biāo)識(shí)的流式傳輸數(shù)據(jù)中心檢查其本地索引數(shù)據(jù)庫(kù)MO以找到哪個(gè)流處理器220將處理所請(qǐng)求流的數(shù)據(jù)分組,并且發(fā)送來(lái)自于該標(biāo)識(shí)的流處理器220的所請(qǐng)求流的數(shù)據(jù)分組。包括上面的描述用于示出優(yōu)選實(shí)施方式的操作并且不意味著限制本發(fā)明的范圍。 本發(fā)明的范圍僅由以下權(quán)利要求書限制。根據(jù)上面的討論,相關(guān)領(lǐng)域中技術(shù)人員將明白很多變型,這些變型仍舊由本發(fā)明的精神和范圍包含。已經(jīng)關(guān)于一個(gè)可能的實(shí)施方式特別詳細(xì)地描述了本發(fā)明。本領(lǐng)域技術(shù)人員將理解本發(fā)明可以在其他實(shí)施方式中實(shí)現(xiàn)。首先,組件的特別命名、大寫形式、屬性、數(shù)據(jù)結(jié)構(gòu)或任何其他編程或結(jié)構(gòu)方面不是強(qiáng)制或重要的,并且實(shí)現(xiàn)本發(fā)明或其特征的機(jī)制可以具有不同的名稱、形式或協(xié)議。而且,可以經(jīng)由如上所述的硬件和軟件的組合或全部以硬件元素來(lái)實(shí)現(xiàn)系統(tǒng)。而且,在此描述的各種系統(tǒng)組件之間的功能的特定劃分僅是示例性的而不是強(qiáng)制的;單個(gè)系統(tǒng)組件執(zhí)行的功能可以替代地由多個(gè)組件執(zhí)行,并且由多個(gè)組件執(zhí)行的功能可以替代地由單個(gè)組件執(zhí)行。上面描述的某些部分呈現(xiàn)了按照對(duì)信息的操作算法和的符號(hào)化表示的本發(fā)明的特征。這些算法描述和表示是數(shù)據(jù)處理領(lǐng)域中技術(shù)人員用于向本領(lǐng)域中其他技術(shù)人員最有效地傳遞其工作實(shí)質(zhì)的手段。這些操作雖然被功能地或邏輯地進(jìn)行了描述,但是應(yīng)該被理解為由計(jì)算機(jī)程序?qū)崿F(xiàn)。此外,還已經(jīng)多次證明了將操作的這些布置表示為模塊或按照功能名稱描述而不失一般性的方便性。除非特別指出,否則根據(jù)上面的討論明顯得出,應(yīng)該理解,貫穿描述,利用術(shù)語(yǔ)諸如“處理”或“計(jì)算”或“確定”或“顯示”等的討論表示計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算設(shè)備的動(dòng)作,該動(dòng)作操縱并變換該計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器或其他此類信息存儲(chǔ)設(shè)備、傳輸或顯示設(shè)備內(nèi)表示為物理(電子)量得數(shù)據(jù)。本發(fā)明的某些方面包括以算法形式在此描述的處理步驟和指令。應(yīng)該指出,本發(fā)明的處理步驟和指令可以以軟件、固件或硬件實(shí)現(xiàn),并且當(dāng)以軟件實(shí)現(xiàn)時(shí),可以被下載以駐留在由實(shí)時(shí)網(wǎng)絡(luò)操作系統(tǒng)使用的不同平臺(tái)上并且從其操縱。本發(fā)明還涉及用于執(zhí)行此處操縱的裝置。該裝置可以針對(duì)所需目的而具體構(gòu)建, 或其可以包括通用計(jì)算機(jī),該通用計(jì)算機(jī)由存儲(chǔ)在可由計(jì)算機(jī)訪問(wèn)的計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序選擇性激活或重新配置。此類計(jì)算機(jī)程序可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上, 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)諸如但不限于任何類型的盤,包括軟盤、光盤、CD-ROM、磁光盤、只讀存儲(chǔ)器(ROM)、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、EPROM、EEPR0M、磁或光卡、專用集成電路(ASIC)、或適合存儲(chǔ)電子指令的任何類型的介質(zhì),并且每個(gè)介質(zhì)耦合至計(jì)算機(jī)系統(tǒng)總線。此外,在本說(shuō)明書中提及的計(jì)算機(jī)可以包括單個(gè)處理器或可以是采用多處理器涉及來(lái)增加計(jì)算能力的架構(gòu)。在此提供的算法和操縱并不固有地涉及任何特定計(jì)算機(jī)或其他裝置。根據(jù)此處的教導(dǎo),各種通用系統(tǒng)還可以與程序一起使用,或構(gòu)建更專用的裝置來(lái)執(zhí)行所需的方法步驟被證明是方便的。各種這些系統(tǒng)所需的結(jié)構(gòu)連同等同物變型對(duì)于本領(lǐng)域技術(shù)人員而言是明顯的。此外,沒(méi)有參考任何特定的編程語(yǔ)言來(lái)描述本發(fā)明。應(yīng)該理解,各種編程語(yǔ)言可以用于實(shí)現(xiàn)如上所述的本發(fā)明的教導(dǎo),并且為了本發(fā)明的實(shí)施和最佳模式的公開而提供對(duì)具體語(yǔ)言的任何參考。本發(fā)明通多個(gè)拓?fù)鋵⒑芎玫剡m應(yīng)各種計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)。在該領(lǐng)域內(nèi),大型網(wǎng)絡(luò)的配置和管理包括存儲(chǔ)設(shè)備和計(jì)算機(jī),它們通過(guò)諸如因特網(wǎng)之類的網(wǎng)絡(luò)通信地耦合至不相似的計(jì)算機(jī)和存儲(chǔ)設(shè)備。最終,應(yīng)該指出,已經(jīng)出于易讀性和指導(dǎo)性目的在大體上選擇了說(shuō)明書中所使用的語(yǔ)言,并且該語(yǔ)言可能沒(méi)有被選擇用于記述或限制本發(fā)明的主題。因而,本發(fā)明的公開旨在示出但不限制本發(fā)明的范圍,本發(fā)明的范圍記載在以下的權(quán)利要求書中。
權(quán)利要求
1.一種用于對(duì)由客戶端接收的廣播視頻流提供倒回的方法,所述方法包括從所述客戶端接收針對(duì)倒回廣播視頻流的請(qǐng)求,所述請(qǐng)求包括指示將被倒回的所述視頻流一部分的流標(biāo)識(shí)和定時(shí)信息;確定對(duì)應(yīng)于所述請(qǐng)求中所述定時(shí)信息的文件偏移;以及向所述客戶端流式傳輸從確定的文件偏移開始的所請(qǐng)求的視頻流。
2.根據(jù)權(quán)利要求1所述的方法,還包括從視頻源接收所述視頻流。
3.根據(jù)權(quán)利要求2所述的方法,其中所述視頻源來(lái)自于直播源。
4.根據(jù)權(quán)利要求2所述的方法,其中所述視頻源來(lái)自于錄制的視頻流。
5.根據(jù)權(quán)利要求1所述的方法,還包括將所述視頻流歸檔在網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中,其中歸檔的視頻流由所述流標(biāo)識(shí)來(lái)標(biāo)識(shí)。
6.根據(jù)權(quán)利要求5所述的方法,其中歸檔所述視頻流還包括存儲(chǔ)所述視頻流的每個(gè)內(nèi)幀的索引,其中所述索引包括所述流標(biāo)識(shí)、指示所述內(nèi)幀位于所述視頻流中何處的文件偏移以及指示在所述視頻流中所述內(nèi)幀何時(shí)開始播放的時(shí)間戳。
7.根據(jù)權(quán)利要求6所述的方法,其中歸檔所述視頻流還包括存儲(chǔ)所述視頻流圖片組的每個(gè)第一內(nèi)幀的索引,其中所述索引包括所述流標(biāo)識(shí)、文件偏移和時(shí)間戳。
8.根據(jù)權(quán)利要求1所述的方法,其中確定對(duì)應(yīng)于所述請(qǐng)求中所述定時(shí)信息的所述文件偏移還包括選擇索引,所述索引具有最接近于所述定時(shí)信息中時(shí)間值的時(shí)間戳。
9.根據(jù)權(quán)利要求1所述的方法,其中流式傳輸所述所請(qǐng)求的視頻流還包括獲取內(nèi)幀, 所述內(nèi)幀的文件偏移對(duì)應(yīng)于所選索引的文件偏移。
10.一種用于從流式傳輸數(shù)據(jù)中心流式傳輸廣播視頻流的方法,其中每個(gè)流式傳輸數(shù)據(jù)中心處理至少一個(gè)視頻流,所述方法包括從客戶端接收針對(duì)廣播視頻流的請(qǐng)求,其中所述視頻流由流標(biāo)識(shí)來(lái)標(biāo)識(shí); 基于多個(gè)分發(fā)標(biāo)準(zhǔn)來(lái)選擇多個(gè)流式傳輸數(shù)據(jù)中心中的一個(gè)以供應(yīng)所述請(qǐng)求,其中所述流式傳輸數(shù)據(jù)中心可以從本地存儲(chǔ)系統(tǒng)或從另一流式傳輸數(shù)據(jù)中心來(lái)供應(yīng)請(qǐng)求;響應(yīng)于選擇的流式傳輸數(shù)據(jù)中心處理來(lái)自于本地存儲(chǔ)系統(tǒng)的視頻流,向所述客戶端流式傳輸所述請(qǐng)求的廣播視頻流;響應(yīng)于選擇的流式傳輸數(shù)據(jù)中心沒(méi)有處理來(lái)自于所述本地存儲(chǔ)系統(tǒng)的所述視頻流 確定其他哪個(gè)流式傳輸數(shù)據(jù)中心正在處理所述請(qǐng)求的視頻流; 從確定的流式傳輸數(shù)據(jù)中心獲得所述請(qǐng)求的視頻流,并且將所述請(qǐng)求的視頻流存儲(chǔ)在所述選擇的流式傳輸數(shù)據(jù)中心的所述本地存儲(chǔ)系統(tǒng)中;以及從所述選擇的流式傳輸數(shù)據(jù)中心向所述客戶端流式傳輸所述請(qǐng)求的視頻流。
11.根據(jù)權(quán)利要求9所述的方法,其中所述多個(gè)分發(fā)標(biāo)準(zhǔn)至少包括每個(gè)流式傳輸數(shù)據(jù)中心的負(fù)載。
12.根據(jù)權(quán)利要求9所述的方法,其中確定其他哪個(gè)流式傳輸中心正在處理所述請(qǐng)求的視頻流包括,確定所述請(qǐng)求的視頻流是否存儲(chǔ)在所述選擇的流式傳輸數(shù)據(jù)中心處的本地索引數(shù)據(jù)庫(kù)中。
13.一種具有計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有記錄在其上的可執(zhí)行計(jì)算機(jī)程序指令,用于提供對(duì)廣播視頻流的倒回,所述計(jì)算機(jī)程序指令配置計(jì)算機(jī)系統(tǒng)以包括流式傳輸服務(wù)器,被配置為從客戶端接收針對(duì)倒回廣播視頻流的請(qǐng)求,所述請(qǐng)求包括指示將被倒回的所述視頻流一部分的流標(biāo)識(shí)和定時(shí)信息;流處理器,被配置為確定對(duì)應(yīng)于所述請(qǐng)求中所述定時(shí)信息的文件偏移;以及所述流式傳輸服務(wù)器還被配置為向所述客戶端流式傳輸從確定的文件偏移開始的所請(qǐng)求的視頻流。
14.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,還包括傳入流式傳輸服務(wù)器,被配置為從視頻源接收所述視頻流。
15.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)程序產(chǎn)品,其中所述視頻源來(lái)自于直播源。
16.根據(jù)權(quán)利要求14所述的計(jì)算機(jī)程序產(chǎn)品,其中所述視頻源來(lái)自于錄制的視頻流。
17.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中所述流處理器還被配置為將所述視頻流歸檔在網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中,其中歸檔的視頻流由所述流標(biāo)識(shí)來(lái)標(biāo)識(shí)。
18.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述流處理器還被配置為存儲(chǔ)所述視頻流的每個(gè)內(nèi)幀的索引,其中所述索引包括所述流標(biāo)識(shí)、指示所述內(nèi)幀位于所述視頻流中何處的文件偏移以及指示在所述視頻流中所述內(nèi)幀何時(shí)開始播放的時(shí)間戳。
19.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)程序產(chǎn)品,其中所述流處理器還被配置為存儲(chǔ)所述視頻流圖片組的每個(gè)第一內(nèi)幀的索引,其中所述索引包括所述流標(biāo)識(shí)、文件偏移和時(shí)間戳。
20.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中所述流處理器還被配置為選擇索引,所述索引具有最接近于所述定時(shí)信息中時(shí)間值的時(shí)間戳。
21.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中流式傳輸服務(wù)器還被配置為獲取內(nèi)幀,所述內(nèi)幀的文件偏移對(duì)應(yīng)于所選索引的文件偏移。
22.—種具有計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有記錄在其上的可執(zhí)行計(jì)算機(jī)程序指令,所述計(jì)算機(jī)程序指令配置計(jì)算機(jī)系統(tǒng)以包括流式傳輸數(shù)據(jù)中心分配器,被配置為從客戶端接收針對(duì)廣播視頻流的請(qǐng)求,其中所述視頻流由流標(biāo)識(shí)來(lái)標(biāo)識(shí); 基于多個(gè)分發(fā)標(biāo)準(zhǔn)來(lái)選擇多個(gè)流式傳輸數(shù)據(jù)中心中的一個(gè)以供應(yīng)所述請(qǐng)求,其中所述流式傳輸數(shù)據(jù)中心可以從本地存儲(chǔ)系統(tǒng)或從另一流式傳輸數(shù)據(jù)中心來(lái)供應(yīng)請(qǐng)求; 選擇的流式傳輸數(shù)據(jù)中心,被配置為 確定哪個(gè)流式傳輸其他數(shù)據(jù)中心正在處理請(qǐng)求的視頻流; 從確定的流式傳輸數(shù)據(jù)中心獲得所述請(qǐng)求的視頻流;以及向所述客戶端流式傳輸所述請(qǐng)求的視頻流。
23.根據(jù)權(quán)利要求22所述的計(jì)算機(jī)程序產(chǎn)品,其中所述多個(gè)分發(fā)標(biāo)準(zhǔn)至少包括每個(gè)流式傳輸數(shù)據(jù)中心的負(fù)載。
24.根據(jù)權(quán)利要求22所述的計(jì)算機(jī)程序產(chǎn)品,其中所述選擇的流式傳輸數(shù)據(jù)中心還被配置為確定所述請(qǐng)求的視頻流是否存儲(chǔ)在所述選擇的流式傳輸數(shù)據(jù)中心處的本地索引數(shù)據(jù)庫(kù)中。
25.一種用于提供對(duì)廣播視頻流進(jìn)行倒回的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括 處理器;以及存儲(chǔ)處理器可執(zhí)行程序指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述處理器可執(zhí)行程序指令包括流式傳輸服務(wù)器,被配置為從客戶端接收針對(duì)倒回廣播視頻流的請(qǐng)求,所述請(qǐng)求包括指示將被倒回的所述視頻流一部分的流標(biāo)識(shí)和定時(shí)信息;流處理器,被配置為確定對(duì)應(yīng)于所述請(qǐng)求中所述定時(shí)信息的文件偏移;以及所述流式傳輸服務(wù)器還被配置為向所述客戶端流式傳輸從確定的文件偏移開始的所請(qǐng)求的視頻流。
26.根據(jù)權(quán)利要求25所述的系統(tǒng),還包括傳入流式傳輸服務(wù)器,被配置為從視頻源接收所述視頻流。
27.根據(jù)權(quán)利要求沈所述的系統(tǒng),其中所述視頻源來(lái)自于直播源。
28.根據(jù)權(quán)利要求沈所述的系統(tǒng),其中所述視頻源來(lái)自于錄制的視頻流。
29.根據(jù)權(quán)利要求25所述的系統(tǒng),其中所述流處理器還被配置為將所述視頻流歸檔在網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中,其中歸檔的視頻流由所述流標(biāo)識(shí)來(lái)標(biāo)識(shí)。
30.根據(jù)權(quán)利要求四所述的系統(tǒng),其中所述流處理器還被配置為存儲(chǔ)所述視頻流的每個(gè)內(nèi)幀的索引,其中所述索引包括所述流標(biāo)識(shí)、指示所述內(nèi)幀位于所述視頻流中何處的文件偏移以及指示在所述視頻流中所述內(nèi)幀何時(shí)開始播放的時(shí)間戳。
31.根據(jù)權(quán)利要求30所述的系統(tǒng),其中所述流處理器還被配置為存儲(chǔ)所述視頻流圖片組的每個(gè)第一內(nèi)幀的索引,其中所述索引包括所述流標(biāo)識(shí)、文件偏移和時(shí)間戳。
32.根據(jù)權(quán)利要求25所述的系統(tǒng),其中所述流處理器還被配置為選擇索引,所述索引具有最接近于所述定時(shí)信息中時(shí)間值的時(shí)間戳。
33.根據(jù)權(quán)利要求25所述的系統(tǒng),其中流式傳輸服務(wù)器還被配置為獲取內(nèi)幀,所述內(nèi)幀的文件偏移對(duì)應(yīng)于所選索引的文件偏移。
34.一種用于從流式傳輸數(shù)據(jù)中心流式傳輸廣播視頻流的計(jì)算機(jī)系統(tǒng),其中每個(gè)流式傳輸數(shù)據(jù)中心處理至少一個(gè)視頻流,所述計(jì)算機(jī)系統(tǒng)包括處理器;以及存儲(chǔ)處理器可執(zhí)行程序指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述處理器可執(zhí)行程序指令包括流式傳輸數(shù)據(jù)中心分配器,被配置為從客戶端接收針對(duì)廣播視頻流的請(qǐng)求,其中所述視頻流由流標(biāo)識(shí)來(lái)標(biāo)識(shí); 基于多個(gè)分發(fā)標(biāo)準(zhǔn)來(lái)選擇多個(gè)流式傳輸數(shù)據(jù)中心中的一個(gè)以供應(yīng)所述請(qǐng)求,其中所述流式傳輸數(shù)據(jù)中心可以從本地存儲(chǔ)系統(tǒng)或從另一流式傳輸數(shù)據(jù)中心來(lái)供應(yīng)請(qǐng)求; 選擇的流式傳輸數(shù)據(jù)中心,被配置為 確定哪個(gè)流式傳輸其他數(shù)據(jù)中心正在處理請(qǐng)求的視頻流; 從確定的流式傳輸數(shù)據(jù)中心獲得所述請(qǐng)求的視頻流;以及向所述客戶端流式傳輸所述請(qǐng)求的視頻流。
35.根據(jù)權(quán)利要求34所述的系統(tǒng),其中所述多個(gè)分發(fā)標(biāo)準(zhǔn)至少包括每個(gè)流式傳輸數(shù)據(jù)中心的負(fù)載。
36.根據(jù)權(quán)利要求35所述的系統(tǒng),其中所述選擇的流式傳輸數(shù)據(jù)中心還被配置為確定所述請(qǐng)求的視頻流是否存儲(chǔ)在所述選擇的流式傳輸數(shù)據(jù)中心處的本地索引數(shù)據(jù)庫(kù)中。
37. 一種具有計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)用于提供對(duì)廣播視頻流的倒回的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包括用于從客戶端接收針對(duì)倒回廣播視頻流的請(qǐng)求的程序代碼,所述請(qǐng)求包括指示將被倒回的所述視頻流一部分的流標(biāo)識(shí)和定時(shí)信息;用于確定對(duì)應(yīng)于所述請(qǐng)求中所述定時(shí)信息的文件偏移的程序代碼;以及用于向所述客戶端流式傳輸從確定的文件偏移開始的所請(qǐng)求的視頻流的程序代碼。
全文摘要
一種系統(tǒng)和方法提供了對(duì)于視頻流的無(wú)縫可伸縮倒回和回放的服務(wù)器側(cè)支持。在網(wǎng)絡(luò)存儲(chǔ)地點(diǎn)位置中存儲(chǔ)視頻流并對(duì)其編索引??梢栽趲?jí)別對(duì)視頻流編索引,其中視頻流的每個(gè)內(nèi)幀具有指示視頻流中該內(nèi)幀的文件偏移和時(shí)間戳的索引。通過(guò)從用戶請(qǐng)求提取倒回時(shí)間需求,來(lái)處理正在廣播視頻流時(shí)對(duì)于視頻流倒回的用戶請(qǐng)求。提取的倒回時(shí)間值用于計(jì)算請(qǐng)求的文件偏移。根據(jù)用戶請(qǐng)求獲取并且回放開始于所請(qǐng)求時(shí)間的視頻流。該系統(tǒng)還提供對(duì)視頻流的無(wú)縫回放的服務(wù)器側(cè)支持和跨多個(gè)流式傳輸數(shù)據(jù)中心的可伸縮的系統(tǒng)性能。
文檔編號(hào)H04N21/643GK102356644SQ201080012757
公開日2012年2月15日 申請(qǐng)日期2010年2月4日 優(yōu)先權(quán)日2009年2月4日
發(fā)明者C·D·本茲爾, K·卡克里賈恩, L·鄭 申請(qǐng)人:谷歌公司