專利名稱:用于流媒體的稀少高速緩存的制作方法
背景技術(shù):
媒體流是用于經(jīng)諸如因特網(wǎng)或內(nèi)部網(wǎng)等網(wǎng)絡(luò)發(fā)送來自流媒體文件或從活動(dòng)的流體源的音頻/視頻呈現(xiàn)和其它數(shù)據(jù)從一個(gè)位置到另一個(gè)位置的處理過程,。典型的,媒體流包括從服務(wù)器發(fā)送流媒體文件到客戶,客戶那里可以使用媒體播放器呈現(xiàn)流媒體文件(觀看和/或收聽)。此外,媒體流也可以對等的被實(shí)現(xiàn)。不像非流媒體傳送技術(shù)那樣,在可以被呈現(xiàn)之前需要被傳送全部的媒體文件,媒體流允許呈現(xiàn)部分的流媒體文件,當(dāng)被發(fā)送或流到客戶時(shí)。
媒體流也可以是單路傳送通信,其中流媒體文件從服務(wù)器流動(dòng)到單個(gè)客戶,或者多址通信,其中流媒體文件從服務(wù)器流動(dòng)到多個(gè)客戶。此外,媒流體也可以是活動(dòng)的,其中包括表現(xiàn)活動(dòng)事件的數(shù)據(jù)的流媒體文件隨著它的出現(xiàn)流動(dòng),或是經(jīng)要求的,其中當(dāng)它被請求時(shí)流媒體文件被存儲(chǔ)在流媒體文件中和流動(dòng)。經(jīng)要求的媒體流是典型的單路傳送通信,具有發(fā)生在服務(wù)器和每個(gè)客戶之間的獨(dú)立的流動(dòng)事件。
基本的流媒體典型的包括至少兩個(gè)流視頻流和音頻流。更為復(fù)雜的流媒體文件將包括多個(gè)視頻和/或音頻流,每個(gè)流以不同的比特率進(jìn)行編碼(即多比特率編碼)。例如,視頻的給定的部分或流體被存儲(chǔ)在六個(gè)不同視頻流的多比特率編碼的流媒體文件中,每個(gè)流體在不同的比特率上進(jìn)行編碼。當(dāng)客戶從服務(wù)器請求流媒體文件時(shí),作出有關(guān)服務(wù)器和客戶之間進(jìn)行帶寬的鏈接的決定。然后,基于預(yù)定的帶寬標(biāo)準(zhǔn),六個(gè)視頻流的其中之一和一個(gè)音頻流被選擇用于傳輸?shù)娇蛻?。例如,可以選擇視頻和音頻流以便它們組合的比特率小于可用鏈接帶寬的預(yù)定的百分率。如果,在流體處理過程中的一些點(diǎn)上,服務(wù)器和客戶之間的鏈接帶寬增加或減少,則選擇音頻和視頻流的不同的組合以滿足預(yù)定的帶寬標(biāo)準(zhǔn)。這種基于可用帶寬的從多比特率編碼的流媒體文件中的“流體選擇”類型普遍被稱作“智能流體”。
在一些客戶系統(tǒng)中,通過在播放流體之前,在客戶上高速緩存一些或所有接收的流媒體文件,從而增強(qiáng)流過程(experience)。在播放它們之前的高速緩存流體減少了在客戶端中斷播放流媒體文件的網(wǎng)絡(luò)連接問題的可能性。而且,在一些系統(tǒng)中,利用高速緩存可以完成某些最小使用的流體導(dǎo)航(倒帶,重放)。
對于多比特率編碼和/或媒體流高速緩存來說,目前存在的一個(gè)問題是沒有一種方法在根本上針對被存儲(chǔ)的可變比特率的流體或非時(shí)間相鄰的流體,并接著以無縫方式被訪問。典型的,由于帶寬的改變,當(dāng)在流媒體文件中的媒體流之間作出切換時(shí),先前的流媒體文件的高速緩存部分被丟棄同時(shí)建立新的流體高速緩存。同樣的,當(dāng)在流媒體文件中的暫時(shí)的非相鄰位置之間作出轉(zhuǎn)移(jump)時(shí),比如搜索操作,丟棄任何先前高速緩存的流媒體文件的部分同時(shí)建立新的流高速緩存。
下面針對這些和其他的問題描述各種系統(tǒng),方法,和數(shù)據(jù)結(jié)構(gòu)。
發(fā)明概述在此描述的有關(guān)高速緩存流媒體文件方式中的各種系統(tǒng),方法,和數(shù)據(jù)結(jié)構(gòu)允許存儲(chǔ)和檢索時(shí)間非相鄰的和/或不同比特率上被編碼的流媒體文件部分。
根據(jù)一種實(shí)現(xiàn)方式,使用高速緩存機(jī)制,利用唯一的中間存儲(chǔ)機(jī)制,允許在高速緩存文件中存儲(chǔ)這樣的時(shí)間非相鄰的和/或各種流媒體文件的部分,并從其存取。根據(jù)另一種實(shí)現(xiàn)方式,使用唯一的高速緩存文件結(jié)構(gòu),允許在公用文件中存儲(chǔ)這樣的時(shí)間非相鄰的和/或各種流媒體文件的部分,并從其存取。
簡述附1示例了網(wǎng)絡(luò)環(huán)境,其中可以使用在此所述的各種系統(tǒng),方法,和數(shù)據(jù)結(jié)構(gòu)。
圖2示例了客戶和服務(wù)器裝置。
圖3示例了媒體流數(shù)據(jù)的安排和格式。
圖4示例了高速緩存文件的數(shù)據(jù)結(jié)構(gòu)。
圖5示例了包括各種用于記錄流媒體的操作流程圖。
圖6示例了包括各種用于播放流媒體的操作流程圖。
圖7示例了普通的計(jì)算機(jī)環(huán)境,能被用于實(shí)現(xiàn)在此所述的系統(tǒng),方法,和數(shù)據(jù)結(jié)構(gòu)。
詳述優(yōu)選實(shí)施例通常,在此描述的有關(guān)高速緩存流媒體文件方式中的各種系統(tǒng),方法,和數(shù)據(jù)結(jié)構(gòu)允許存儲(chǔ)和檢索時(shí)間非相鄰的和/或不同比特率上被編碼的流媒體文件部分。如將要描述的,客戶端高速緩存機(jī)制使用唯一的中間存儲(chǔ)機(jī)制和唯一的高速緩存文件結(jié)構(gòu),允許在高速緩存文件中存取這種“不同的(dissimilar)”流媒體文件部分。
示例環(huán)境
圖1示例了網(wǎng)絡(luò)環(huán)境100。在環(huán)境100中,多個(gè)(x)客戶裝置102(1),102(2),.....102(x)經(jīng)網(wǎng)絡(luò)106被耦合到多個(gè)(y)服務(wù)器裝置104(1),104(2),....104(y)。網(wǎng)絡(luò)106意在表示任何各種常規(guī)的網(wǎng)絡(luò)拓?fù)浜皖愋?包括有線和/或無線網(wǎng)絡(luò))。網(wǎng)絡(luò)106可以包括,例如,因特網(wǎng),內(nèi)部網(wǎng),廣域網(wǎng)(WAN),局域網(wǎng)(LAN),和/或任何這些或其他網(wǎng)絡(luò)的各種組合。
應(yīng)該理解,在此使用的服務(wù)器裝置可以是任何流媒體文件的源的裝置或處理過程,客戶裝置可以是任何接收流媒體文件的裝置或處理過程(例如在客戶裝置上展現(xiàn)給用戶)。例如,在對等網(wǎng)絡(luò)中,流媒體文件的源的裝置或處理過程可以被稱作服務(wù)器裝置,同時(shí)接收流媒體文件的裝置或處理過程可以被稱作客戶裝置。
根據(jù)在此所述的各種實(shí)施例,使用任何各種常規(guī)的通信協(xié)議(包括公共的和/或?qū)S玫膮f(xié)議),可以發(fā)生客戶裝置102和服務(wù)器裝置104之間的通信。在一個(gè)實(shí)施過程中,使用超文本傳輸協(xié)議(HTIP)版本發(fā)生裝置102和104之間的通信。在另一個(gè)實(shí)施過程中,使用實(shí)時(shí)流協(xié)議(RTSP)發(fā)生裝置102和104之間的通信。換言之,可以使用其他的協(xié)議,比如對話啟動(dòng)協(xié)議(SIP),簡單對象訪問協(xié)議(SOAP),等等。
每個(gè)裝置102和104都可以是任何常規(guī)的計(jì)算裝置,包括臺(tái)式PC,工作站,主機(jī),因特網(wǎng)裝置,游戲控制臺(tái),手提PC,蜂窩電話,個(gè)人數(shù)字助理(PDA),機(jī)頂盒等等。一個(gè)或多個(gè)裝置102和104可以是相同類型的裝置,或可替換的不同類型的裝置。
盡管未顯示,在客戶裝置102和服務(wù)器裝置104之間可以設(shè)置一個(gè)或多個(gè)附加的裝置(例如,防火墻,路由器,網(wǎng)關(guān),橋,多個(gè)代理服務(wù)器等等)。應(yīng)該注意的是,多個(gè)客戶裝置102可以訪問單一的服務(wù)器裝置104,并且單一的客戶裝置102可以訪問多個(gè)服務(wù)器裝置146。
圖2示例了服務(wù)器裝置104。如圖所示,服務(wù)器裝置104包括流體模塊216和一個(gè)或多個(gè)流媒體文件222。例如,服務(wù)器裝置104可以是圖1中的源服務(wù)器裝置104,或可替換的另一個(gè)裝置(例如,代理裝置)。通常,流體模塊220起到接收用于流媒體文件的請求的功能,或者一部分流媒體文件,比如從客戶裝置102,和流到流媒體文件222或一部分文件到請求者。
“媒體文件”包括可以由媒體播放機(jī)反映的一個(gè)或多個(gè)數(shù)字流信息。典型的,媒體文件將包括時(shí)間同步的兩個(gè)或多個(gè)流。媒體文件還可以包括獨(dú)立的其他的流體。媒體文件的內(nèi)容可能或不可能被壓縮。在此所用的術(shù)語“流媒體文件”表示經(jīng)網(wǎng)絡(luò)提供給客戶的媒體文件,并且在媒體文件以整體被傳送之前可以開始媒體文件的重放(例如根據(jù)所需要的基礎(chǔ)提供媒體文件而不是在重放之前以它的整體預(yù)傳輸數(shù)據(jù))。流媒體文件可以是公共可用的或者有限可替換的(例如,限制到只有確定的用戶,只有適當(dāng)?shù)母顿M(fèi)才可用等等)。流媒體文件可以是各種一個(gè)或多個(gè)類型的基于時(shí)間的媒體文件的任何一種,其中流媒體文件內(nèi)的信息規(guī)定整個(gè)重放過程中一些或所有文件的時(shí)間的展現(xiàn),比如音頻,視頻,時(shí)間的文本展現(xiàn),動(dòng)畫等等。進(jìn)一步的,流媒體文件可以是預(yù)記錄的或可替換的“存在(live)”(例如,當(dāng)音樂會(huì)表演時(shí)被捕獲的音樂會(huì)的數(shù)字表現(xiàn)以及在捕獲之后立刻產(chǎn)生可用的流)。
流媒體文件222可以根據(jù)各種不同的流媒體文件格式被存儲(chǔ)和/或流出。例如,流媒體文件可以被存儲(chǔ)成靜態(tài)的流媒體文件。換言之,從一個(gè)或多個(gè)流媒體源或發(fā)生器的媒體文件222可以是流出“活動(dòng)的”。在一個(gè)實(shí)施例中,媒體文件根據(jù)ASF格式(先進(jìn)的系統(tǒng)格式或先進(jìn)的流格式)被存儲(chǔ)和/或流出。有關(guān)ASF的附加的信息可以從Redmond,華盛頓的微軟公司獲得。相同的技術(shù)也可以被應(yīng)用于其它的格式,比如MPEG(運(yùn)動(dòng)圖象專家組)-1,MPEG-2,MPEG-4,Quicktime等等。
如圖所示,客戶裝置102包括流媒體播放器206,網(wǎng)絡(luò)模塊208,高速緩存模塊210,和一個(gè)或多個(gè)高速緩存文件216。包括在高速緩存模塊210中的是媒體高速緩存模塊212和字節(jié)高速緩存模塊214。如所示的,一個(gè)或多個(gè)高速緩存文件被存儲(chǔ)在客戶102上的數(shù)據(jù)存儲(chǔ)模塊218中。
通常,流媒體播放器206提供一個(gè)裝置,通過它可以由用戶選擇流媒體文件222以便在客戶裝置102上展現(xiàn)。根據(jù)一個(gè)實(shí)施例,流媒體播放器206是客戶裝置102上的處理器執(zhí)行的應(yīng)用程序或Java程序(applet)。流媒體播放器206是可操作的用于接收和解碼流媒體文件并把流媒體文件的內(nèi)容傳送到客戶裝置102上的適當(dāng)?shù)囊曨l和音頻輸出裝置。
通常,網(wǎng)絡(luò)模塊208起到是流媒體播放器206和各種流媒體文件源之間的一種“網(wǎng)關(guān)”類型的作用。在該容量上,網(wǎng)絡(luò)模塊208執(zhí)行許多有關(guān)建立流媒體播放器206和各種流媒體源之間的連接的功能。例如,根據(jù)一個(gè)實(shí)施例,網(wǎng)絡(luò)模塊208建立流媒體播放器206和服務(wù)器裝置104之間的網(wǎng)絡(luò)連接。網(wǎng)絡(luò)模塊208還建立流媒體播放器206和高速緩存模塊210之間的網(wǎng)絡(luò)連接。
此外,網(wǎng)絡(luò)模塊208執(zhí)行許多有關(guān)的功能,確定流媒體播放器206從許多可用流媒體源中的哪個(gè)接收數(shù)據(jù)。例如,根據(jù)一個(gè)實(shí)施例,對于所有或部分的特殊的流媒體呈現(xiàn),響應(yīng)于從流媒體播放器206接收的請求,通過從先前存儲(chǔ)的高速緩存文件216中檢索請求的數(shù)據(jù)網(wǎng)絡(luò)模塊208確定是否請求能被滿足,或是否需要從服務(wù)器裝置中檢索請求的數(shù)據(jù)。
根據(jù)一個(gè)實(shí)施例,基于各種不同的因素,網(wǎng)絡(luò)模塊208確定流模塊220和網(wǎng)絡(luò)模塊208之間的流媒體文件的流體率。這可以以任何各種常規(guī)的方式來確定,比如在裝置102和104之間發(fā)送測試消息,監(jiān)測在裝置102和104之間的連接狀態(tài),從流模塊220接收可用帶寬指示等等。給定當(dāng)前的可用帶寬,網(wǎng)絡(luò)模塊208開始請求流體率,它是小于當(dāng)前帶寬的特殊量。該特殊量可以是固定的(例如總是50kbps)或動(dòng)態(tài)的(例如當(dāng)前可用帶寬的15%,或當(dāng)前可用帶寬的5%和25%之間)。
根據(jù)一個(gè)實(shí)施例,網(wǎng)絡(luò)模塊208生成或示例了媒體高速緩存模塊212,如下所述。根據(jù)該實(shí)施例,網(wǎng)絡(luò)模塊可以生成或示例單一的網(wǎng)絡(luò)模塊或多個(gè)網(wǎng)絡(luò)模塊。由網(wǎng)絡(luò)模塊208執(zhí)行的其他的功能可以包括但沒有限制為,確定是否有關(guān)特殊流媒體呈現(xiàn)的高速緩存文件被存儲(chǔ)在數(shù)據(jù)存儲(chǔ)模塊中和在數(shù)據(jù)存儲(chǔ)模塊中生成高速緩存文件。作為客戶裝置102一部分的常規(guī)的元件可以有選擇地用于輔助網(wǎng)絡(luò)模塊208。例如,在一個(gè)實(shí)施例中,微軟因特網(wǎng)瀏覽器程序包括高速緩存管理功能性,比如監(jiān)視高速緩存中項(xiàng)目的終止和/或無用信息的收集,而且在執(zhí)行以上概述的網(wǎng)絡(luò)模塊的各種操作中網(wǎng)絡(luò)模塊208可以使用這種功能性。
根據(jù)一個(gè)實(shí)施例,數(shù)據(jù)存儲(chǔ)模塊218包括非易失性存儲(chǔ)器。例如,但并非限制,數(shù)據(jù)存儲(chǔ)模塊218可以由一個(gè)或多個(gè)非易失性存儲(chǔ)器裝置組成,比如磁的或光的存儲(chǔ)裝置,磁光存儲(chǔ)裝置,非易失性RAM,或其它類型的非易失性存儲(chǔ)裝置。根據(jù)另一個(gè)實(shí)施例,數(shù)據(jù)存儲(chǔ)模塊218包括一個(gè)或多個(gè)類型的易失性存儲(chǔ)裝置。
高速緩存模塊210提供一種機(jī)制,通過它流媒體文件可以被寫到數(shù)據(jù)存儲(chǔ)模塊218中的高速緩存文件216并從中讀取。如所示的,高速緩存模塊210包括媒體高速緩存模塊212和字節(jié)高速緩存模塊214。如下面所詳述的,媒體高速緩存模塊212和字節(jié)高速緩存模塊214的每個(gè)生成和/或管理一個(gè)或多個(gè)中間數(shù)據(jù)結(jié)構(gòu),其中存儲(chǔ)了接收的流媒體的各種部分和安排。
媒體高速緩存模塊212對接收的流媒體文件提供中間數(shù)據(jù)結(jié)構(gòu)。特別的是,媒體高速緩存模塊212生成一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)五種類型的數(shù)據(jù)結(jié)構(gòu),媒體高速緩存流,媒體高速緩存段,媒體高速緩存首部段,字節(jié)高速緩存索引段,和字節(jié)高速緩存數(shù)據(jù)段。在操作中,媒體高速緩存模塊212生成單一的媒體高速緩存首部段和許多媒體高速緩存流以及用于被接收的每個(gè)媒體文件的媒體高速緩存段。媒體高速緩存模塊212生成和管理用于每個(gè)不同類型的媒體高速緩存流和編碼通過客戶裝置102在流媒體文件中接收的流體的比特率。如在此所使用的,流的“類型”涉及流體的格式或功能(例如音頻或視頻)。應(yīng)該理解,流體的編碼比特率是一種比特率,其中流被原始地存儲(chǔ)在流媒體文件中。比如,如果媒體高速緩存模塊212從流媒體文件接收三個(gè)視頻流,每個(gè)具有不同的比特率,和兩個(gè)音頻流,每個(gè)具有不同的比特率,媒體高速緩存模塊212將產(chǎn)生五個(gè)不同的媒體高速緩存流。在操作中,媒體高速緩存模塊212將生成新的媒體高速緩存流,每次通過媒體高速緩存模塊212接收一個(gè)新的媒體流的類型或比特率。
當(dāng)通過媒體高速緩存模塊212接收流體時(shí),接收的流體內(nèi)的數(shù)據(jù)被存儲(chǔ)在相同類型和比特率的媒體高速緩存流內(nèi)的媒體高速緩存段中(例如邏輯相關(guān)的)而作為接收的流體。例如,如果通過媒體高速緩存模塊212接收在X比特率上被編碼的視頻流,來自接收流的數(shù)據(jù)將被存儲(chǔ)在“視頻”類型的媒體高速緩存流中,具有相關(guān)的X比特率。如果還沒有生成X比特率上被編碼的類型“視頻”的媒體高速緩存流,媒體高速緩存模塊212將生成這樣的媒體高速緩存流。一旦媒體高速緩存模塊212已經(jīng)生成了用于接收流的給定類型和比特率的媒體高速緩存流,媒體高速緩存模塊212將生成單獨(dú)的媒體高速緩存段來用于接收流的每個(gè)時(shí)間的非連續(xù)部分。在此所使用的,術(shù)語“時(shí)間非連續(xù)的”涉及接收流或流媒體文件的部分,在整個(gè)重放過程中,對于時(shí)間上展現(xiàn)它們的內(nèi)容來說,它們彼此不相鄰。同樣,媒體高速緩存模塊212將生成單獨(dú)的給定媒體高速緩存流中的媒體高速緩存段來及時(shí)用于不直接相鄰的接收流的每個(gè)部分,相對于接收流的時(shí)間結(jié)構(gòu),到給定媒體高速緩存流中的另一個(gè)媒體高速緩存流。
圖3示例了媒體高速緩存流的一種安排的展現(xiàn)300和對于假設(shè)的流媒體文件的通過媒體高速緩存模塊212生成的媒體高速緩存段。所示的媒體高速緩存流和段與時(shí)間軸340垂直對準(zhǔn),其中時(shí)間軸表示流媒體文件的播放時(shí)間。
如所示的,媒體高速緩存模塊212已經(jīng)生成了三個(gè)單獨(dú)的媒體高速緩存視頻流媒體高速緩存視頻流(1)310,媒體高速緩存視頻流(2)312,和媒體高速緩存視頻流(3)314,每個(gè)與不同的比特率相關(guān)。此外,媒體高速緩存模塊212已經(jīng)生成兩個(gè)單獨(dú)的媒體高速緩存音頻流媒體高速緩存音頻流(1)316,和媒體高速緩存音頻流(2)318,每個(gè)與不同的比特率相關(guān)。
如所示的,媒體高速緩存模塊212已經(jīng)生成媒體高速緩存視頻流(1)310內(nèi)的兩個(gè)時(shí)間非連續(xù)的媒體高速緩存視頻段320和326;媒體高速緩存視頻流(2)312內(nèi)的一個(gè)媒體高速緩存視頻段322;和媒體高速緩存視頻流(3)內(nèi)的一個(gè)媒體高速緩存視頻段324。另外,媒體高速緩存模塊212已經(jīng)生成媒體高速緩存音頻流(1)內(nèi)的一個(gè)媒體高速緩存音頻段328;和媒體高速緩存音頻流(2)內(nèi)的一個(gè)媒體高速緩存段330。
所注意的,對于每個(gè)接收的流媒體文件,媒體高速緩存模塊212還生成媒體高速緩存首部段數(shù)據(jù)結(jié)構(gòu)媒體高速緩存首部段,包括文件識別符字段,媒體高速緩存段計(jì)數(shù)字段,一個(gè)或多個(gè)媒體高速緩存段信息字段,和/或流媒體文件說明。
根據(jù)一個(gè)實(shí)施例,文件識別符字段包括識別高速緩存文件的全球唯一識別符(GUID),其中存儲(chǔ)給定流媒體文件的每個(gè)媒體高速緩存流和段的數(shù)據(jù)。媒體高速緩存段計(jì)數(shù)字段存儲(chǔ)一個(gè)數(shù),表示具有存儲(chǔ)在高速緩存文件中的數(shù)據(jù)的全部數(shù)量的媒體高速緩存段。針對具有存儲(chǔ)在高速緩存文件中的數(shù)據(jù)的每個(gè)媒體高速緩存段,每個(gè)媒體高速緩存段信息字段存儲(chǔ)媒體高速緩存段信息數(shù)據(jù)結(jié)構(gòu)。
媒體高速緩存段信息數(shù)據(jù)結(jié)構(gòu)包括諸字段,包含一些或全部有關(guān)具有高速緩存文件中的數(shù)據(jù)的單一的媒體高速緩存段的下列信息媒體高速緩存段的識別符;流識別符,規(guī)定包括媒體高速緩存段的媒體高速緩存流;段開始位置指示符,表明包括媒體高速緩存段的媒體高速緩存流中媒體高速緩存段的開始;段結(jié)束位置識別符,表明包括媒體高速緩存段的媒體高速緩存流中媒體高速緩存段的結(jié)束;流大小指示符,規(guī)定包括媒體高速緩存段的媒體高速緩存流的大??;先前段識別符,即使有的話,規(guī)定媒體高速緩存段直接在媒體高速緩存流中的媒體高速緩存段之前;下一個(gè)段識別符,即使有的話,規(guī)定媒體高速緩存段直接在媒體高速緩存流中的媒體高速緩存段之后,和段數(shù)據(jù)類型識別符,規(guī)定包括在媒體高速緩存段中的數(shù)據(jù)的類型(例如,音頻,視頻等等)。
包括在流媒體文件說明中的信息取決于流媒體文件的格式。然而,通常來說,流媒體文件說明可以包括諸如描述各種媒體文件的流體的信息,用于產(chǎn)生媒體文件內(nèi)容的編解碼器的說明,和/或有關(guān)內(nèi)容的其他的元數(shù)據(jù)。
在操作中,對于媒體高速緩存模塊生成的每個(gè)媒體高速緩存段,媒體高速緩存模塊212生成字節(jié)高速緩存索引段和相關(guān)的字節(jié)高速緩存數(shù)據(jù)段。根據(jù)一個(gè)實(shí)施例,并非限制的,每個(gè)字節(jié)高速緩存數(shù)據(jù)段包括從其生成的媒體高速緩存段的可展現(xiàn)的數(shù)據(jù)(例如,音頻或視頻數(shù)據(jù)等等)。根據(jù)一個(gè)實(shí)施例,并非限制的,每個(gè)字節(jié)高速緩存索引包括下列的有關(guān)數(shù)據(jù)的信息,該數(shù)據(jù)在它的相關(guān)的字節(jié)高速緩存數(shù)據(jù)段中;開始時(shí)間,持續(xù)時(shí)間,對字節(jié)高速緩存數(shù)據(jù)段中的數(shù)據(jù)的補(bǔ)償,和/或數(shù)據(jù)的大小。
根據(jù)一個(gè)實(shí)施例,媒體高速緩存模塊212生成或例示字節(jié)高速緩存模塊214,如下所述。根據(jù)該實(shí)施例,媒體高速緩存模塊212可以生成或示例單一的字節(jié)高速緩存模塊214或多個(gè)字節(jié)高速緩存模塊。
根據(jù)預(yù)定的高速緩存文件數(shù)據(jù)結(jié)構(gòu)格式,字節(jié)高速緩存模塊214尤其用來串行化和存儲(chǔ)來自高速緩存文件216中的字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段的數(shù)據(jù)。圖4示例了用于高速緩存文件216的高速緩存文件數(shù)據(jù)結(jié)構(gòu)格式的這樣一個(gè)例子。如圖所示,高速緩存文件216由許多頁面410組成。包括在這些頁面中的是首部頁412和許多數(shù)據(jù)頁面414-420。通常,數(shù)據(jù)頁面414-420包括通過媒體高速緩存模塊212生成的字節(jié)高速緩存索引和數(shù)據(jù)段,同時(shí)首部頁面412包括描述數(shù)據(jù)頁面一個(gè)或多個(gè)特性的信息。
如圖4所示,首部頁面412包括許多首部頁面數(shù)據(jù)字段422。包括在首部頁面數(shù)據(jù)字段422中的是高速緩存文件首部數(shù)據(jù)字段424和許多高速緩存文件控制記錄數(shù)據(jù)字段426-432。高速緩存文件首部數(shù)據(jù)字段424進(jìn)一步包括許多高速緩存首部字段436。包括在高速緩存首部字段436中的是高速緩存首部GUID字段438,標(biāo)志字段440,自由頁面記錄442,許多CFCR數(shù)據(jù)字段444,和外部塊ID字段446。高速緩存首部GUID字段438包括唯一的識別高速緩存文件216的全球唯一識別符。標(biāo)志字段440包括指示符標(biāo)志,規(guī)定是否高速緩存文件包括有效數(shù)據(jù)。
許多CFCR數(shù)據(jù)字段444包括識別符,規(guī)定包括在首部頁面數(shù)據(jù)字段422中的高速緩存文件控制記錄的數(shù)量。外部塊ID字段446包括指向高速緩存文件中的頁面的指示字,它包括附加的高速緩存文件控制記錄。外部塊ID字段446被用于例子中,其中高速緩存文件中所需要的高速緩存文件記錄數(shù)大于可以被包括在首部頁面412中的高速緩存文件控制記錄數(shù)。
自由頁面記錄442包括許多圖表記錄數(shù)據(jù)字段441,包括許多自由頁面數(shù)據(jù)字段443,第一外部塊ID字段445,和自由頁面記錄字段447。自由頁面數(shù)據(jù)字段443的數(shù)目包括指示高速緩存文件中自由頁面數(shù)目的識別符。自由頁面記錄字段447包括一個(gè)圖表,特別的識別高速緩存文件中各種自由數(shù)據(jù)頁面。在此情況下,自由數(shù)據(jù)頁面的數(shù)目超過自由頁面記錄字段447中能被規(guī)定的自由數(shù)據(jù)頁面的數(shù)目,第一外部塊ID包括指向包括識別附加自由數(shù)據(jù)頁面的數(shù)據(jù)結(jié)構(gòu)的頁面的指針(pointer)。
每個(gè)高速緩存文件控制記錄426-432與單一的字節(jié)高速緩存段相關(guān)。通常,每個(gè)高速緩存文件控制記錄426-432包括定義高速緩存文件216中有關(guān)字節(jié)高速緩存的它的位置的信息。如圖4所示,每個(gè)高速緩存文件控制記錄包括許多CFCR數(shù)據(jù)字段448。包括在CFCR數(shù)據(jù)字段448中的是CFCR GUID字段450,第一頁面索引字段452,第一頁面補(bǔ)償字段454,最后頁面補(bǔ)償字段456,和高速緩存頁面圖表記錄458。每個(gè)CFCR數(shù)據(jù)字段448,和它其中包含的信息可以說是與單一的字節(jié)高速緩存段相關(guān),與它們屬于的高速緩存文件控制記錄相關(guān)。
GUID字段450包括唯一識別包括高速緩存文件控制記錄的全球唯一的識別符。通常,第一頁面索引字段452,第一頁面補(bǔ)償字段454,和最后頁面補(bǔ)償字段456,包括定義窗口的地址或范圍的地址,其中存儲(chǔ)了來自字節(jié)高速緩存的數(shù)據(jù)。
根據(jù)一個(gè)實(shí)施例,第一頁面索引字段452包括數(shù)據(jù)頁面中第一頁面的地址,數(shù)據(jù)頁面包括它的相關(guān)的字節(jié)高速緩存字段。第一頁面補(bǔ)償字段454包括指向頁面中位置的字,相對于由第一頁面索引字段452指示的頁面的開始,它的相關(guān)的字節(jié)高速緩存段的數(shù)據(jù)的開始。最后頁面補(bǔ)償字段456包括指向頁面中位置的字,相對于第一頁面索引字段452指示的頁面的開始,它的相關(guān)的字節(jié)高速緩存段的數(shù)據(jù)的結(jié)束。
高速緩存頁面圖表記錄458包括許多圖表記錄數(shù)據(jù)字段460,包括許多頁面數(shù)據(jù)字段462,第一外部塊ID464,和高速緩存頁面記錄466。頁面數(shù)據(jù)字段462的數(shù)目包括指示數(shù)據(jù)頁面的數(shù)目的識別符,數(shù)據(jù)頁面包含來自它的相關(guān)字節(jié)高速緩存段的數(shù)據(jù)。高速緩存頁面記錄字段466包括圖表,識別各種數(shù)據(jù)頁面,數(shù)據(jù)頁面包括來自它的相關(guān)字節(jié)高速緩存段的數(shù)據(jù)。在此情況下,其中包括來自它的相關(guān)字節(jié)高速緩存段的數(shù)據(jù)頁面的數(shù)目超過高速緩存頁面記錄字段466中能被規(guī)定的數(shù)據(jù)頁面的數(shù)目,第一外部塊ID字段464包括指向包括識別附加數(shù)據(jù)頁面的數(shù)據(jù)結(jié)構(gòu)的頁面的指針,數(shù)據(jù)頁面包括來自它的相關(guān)字節(jié)高速緩存段的數(shù)據(jù)。
圖5示例了包括各種操作500的操作流程圖,用于接收和存儲(chǔ)流媒體文件。根據(jù)一個(gè)實(shí)施例,通過客戶裝置實(shí)現(xiàn)操作流程,比如圖2的客戶裝置102,并可以以軟件,固件,硬件,或它們的組合來執(zhí)行。
如圖5所示,在操作流程500的開始,針對所有或部分的指定的流媒體文件作出一個(gè)請求510。例如,根據(jù)一個(gè)實(shí)施例,針對特殊的流媒體文件作出請求到服務(wù)器裝置,比如圖2的服務(wù)器裝置104。跟隨著請求510,確定操作512確定是否請求的流媒體文件是可用的。如果確定請求的流媒體文件不是可用的,操作流程500結(jié)束。然而,如果確定請求的流媒體文件是可用的,生成高速緩存文件操作514接著生成用于存儲(chǔ)請求的流媒體文件的高速緩存文件。根據(jù)一個(gè)實(shí)施例,生成高速緩存文件操作514在數(shù)據(jù)存儲(chǔ)模塊中生成高速緩存文件,比如圖2的數(shù)據(jù)存儲(chǔ)模塊218。
高速緩存文件的生成之后緊接著請求說明操作516從服務(wù)器裝置請求流媒體文件的說明描述。存儲(chǔ)說明操作518接著在生成的高速緩存文件中接收和存儲(chǔ)媒體文件說明。接著,選擇流媒體文件流操作520從服務(wù)器裝置選擇媒體流以便傳送到客戶裝置。根據(jù)一個(gè)實(shí)施例,至少部分的基于客戶裝置和服務(wù)器裝置之間的當(dāng)前可用帶寬,選擇流媒體文件流操作520選擇用于傳送的流體。流確定操作522接著確定是否在高速緩存文件中存在用于選擇的流的相應(yīng)的媒體高速緩存流。就是說,流確定操作522確定是否在高速緩存文件中存在具有與選擇的流具有相同類型和比特率的媒體高速緩存流。
如果確定相應(yīng)的媒體高速緩存流不存在于用于所選流的高速緩存文件中,則生成媒體高速緩存流操作524生成高速緩存文件中相應(yīng)的媒體高速緩存流。接著相應(yīng)媒體高速緩存流的生成,生成媒體高速緩存段操作526生成相應(yīng)于選擇的流在操作524中生成的媒體高速緩存流中的媒體高速緩存段。返回到確定操作522,如果確定對于選擇的流在高速緩存文件中已經(jīng)存在于相應(yīng)的高速緩存流,操作流程旁路生成流媒體高速緩存流操作524,并前進(jìn)到生成媒體高速緩存段操作526,其中在相應(yīng)的媒體高速緩存流中生成媒體高速緩存段。接著生成媒體段操作,流操作528接著從選擇的流體流出數(shù)據(jù)到生成的媒體高速緩存段中。
隨著來自選擇流的數(shù)據(jù)正流入生成的媒體段高速緩存中,檢測搜索操作530確定是否搜索操作正被請求。如果確定搜索操作正被請求,操作流程回到選擇流媒體文件流操作。如果確定搜索操作沒有正在被請求,操作流程前進(jìn)到檢測帶寬操作中的改變532,確定是否由于執(zhí)行了選擇流媒體文件流操作而在客戶裝置和服務(wù)器裝置之間的帶寬已經(jīng)發(fā)生了改變。如果確定已經(jīng)出現(xiàn)了帶寬中的改變,操作流程返回到流確定操作522。如果確定沒有出現(xiàn)帶寬中的改變,操作流程前進(jìn)到流確定操作的末端,其中確定是否選擇流媒體文件流操作520中的選擇流的末端已經(jīng)到達(dá)。如果確定還沒有到達(dá)選擇流的末端,操作流程500前進(jìn)回到檢測搜索操作530。如果確定已經(jīng)到達(dá)了選擇流的末端,操作流程500前進(jìn)到請求的媒體文件完成確定操作536,其中確定是否在510上請求的媒體文件已經(jīng)完全地被存儲(chǔ)到高速緩存文件。根據(jù)一個(gè)實(shí)施例,如果在可接受的比特率上所有期望的流體已經(jīng)被完全下載,則確定請求的媒體文件完成。如果確定請求的媒體文件還沒有完全地被存儲(chǔ)到高速緩存文件,操作流程500返回到選擇的流媒體文件流操作520。然而,如果確定請求的媒體文件已經(jīng)完全地被存儲(chǔ)到高速緩存文件,操作流程500結(jié)束。
圖6示例了操作流程600,包括用于檢索和呈現(xiàn)流媒體的各種操作600。操作流程600包括用于選擇的檢索單一流體的操作,比如單一的視頻或音頻流,從高速緩存文件,比如高速緩存文件216。應(yīng)該理解,來自流媒體文件和/或高速緩存文件的多個(gè)流體可以根據(jù)操作流程600被檢索。根據(jù)一個(gè)實(shí)施例,通過客戶裝置實(shí)現(xiàn)操作流程600,比如圖2的客戶裝置102,可以以軟件,固件,硬件或它們的組合形式來執(zhí)行。
如圖6所示,在操作流程600的開始,從數(shù)據(jù)請求者(例如媒體播放器)接收請求以便在特殊類型的流中從期望的點(diǎn)播放數(shù)據(jù)。例如,對于存儲(chǔ)在服務(wù)器中特殊的流媒體文件,可以接收請求以便及時(shí)的從特殊點(diǎn)開始播放視頻流。然而,并非直接到服務(wù)器來服務(wù)請求,優(yōu)選的比特率操作612確定是否在優(yōu)選的比特率上請求的數(shù)據(jù)在高速緩存文件中是可用的。優(yōu)選的比特率可以設(shè)置或以許多方式來確定。例如,但并非限制的,根據(jù)一個(gè)實(shí)施例,使用數(shù)據(jù)分組技術(shù)來確定優(yōu)選的比特率。根據(jù)另一個(gè)實(shí)施例,用戶可以明確的規(guī)定優(yōu)選的比特率。
如果在優(yōu)選的比特率上請求的數(shù)據(jù)在高速緩存文件中是不可用的,服務(wù)器請求操作614則從服務(wù)器請求該請求的數(shù)據(jù)和在高速緩存文件中存儲(chǔ)請求的數(shù)據(jù)。接著服務(wù)器請求操作614,操作流程返回到優(yōu)選的比特率操作612。根據(jù)一個(gè)實(shí)施例,在作出許多未成功的嘗試以從服務(wù)器得到請求的數(shù)據(jù)之后,對于在低于優(yōu)選比特率的比特率上是否請求的數(shù)據(jù)在高速緩存文件中是可用的作出確定。如果是,從高速緩存文件可以訪問較低比特率上的請求的數(shù)據(jù)。
接著,開始點(diǎn)確定操作616確定高速緩存文件中的媒體高速緩存流包括請求的數(shù)據(jù)的開始點(diǎn)。數(shù)據(jù)可用操作618接著確定從開始點(diǎn)到流的末端是否請求的數(shù)據(jù)是可用的。換言之,數(shù)據(jù)可用操作618確定從開始點(diǎn)到流的末端在流的數(shù)據(jù)中是否具有任何時(shí)間上的斷續(xù)。如果確定從流的開始點(diǎn)到末端數(shù)據(jù)是可用的,操作流程前進(jìn)到確定高速緩存段操作622,確定在包括開始點(diǎn)的確定的媒體高速緩存流中的媒體高速緩存段。然而,如果確定從流的開始點(diǎn)到末端數(shù)據(jù)是不可用的,操作流程前進(jìn)到服務(wù)器數(shù)據(jù)請求操作620,從服務(wù)器請求需要完成該流體的任何數(shù)據(jù),以至于從流的開始點(diǎn)到末端沒有時(shí)間上的斷續(xù)。操作流程600接著前進(jìn)到確定高速緩存段操作622。應(yīng)該明白的是,在通過服務(wù)器數(shù)據(jù)請求操作620請求已經(jīng)被作出到服務(wù)器之后,操作流程繼續(xù)。就是說,操作流程不中止,直到操作620中請求的數(shù)據(jù)從服務(wù)器被接收和被存儲(chǔ)為止。
接著確定高速緩存段操作622,播放操作624把數(shù)據(jù)從確定的媒體高速緩存段運(yùn)送到數(shù)據(jù)請求者以便播放。當(dāng)確定的媒體高速緩存段被傳送到數(shù)據(jù)請求者時(shí),搜索確定操作626確定是否搜索已經(jīng)被請求到確定的媒體高速緩存流中的新的開始點(diǎn)。例如,這可以發(fā)生在通過數(shù)據(jù)請求者執(zhí)行搜索操作到確定的媒體高速緩存流中的另一個(gè)時(shí)間位置的時(shí)候。如果搜索確定操作626確定搜索已經(jīng)被請求,操作流程600返回到數(shù)據(jù)可用操作618。然而,如果搜索確定操作626確定搜索沒有被請求,并在來自確定的媒體高速緩存段的數(shù)據(jù)已經(jīng)完全被傳送到數(shù)據(jù)請求者之后,高速緩存流末端確定操作628確定是否確定的媒體高速緩存流的末端已經(jīng)到達(dá)。如果確定該確定的媒體高速緩存流的末端還沒有到達(dá),下一個(gè)高速緩存段操作630確定被訪問的確定的媒體高速緩存流中的下一個(gè)媒體高速緩存段。然而,如果確定該確定的媒體高速緩存流的末端已經(jīng)到達(dá),操作流程600前進(jìn)到文件的末端(EOF)確定操作632,其中確定是否高速緩存文件的末端已經(jīng)到達(dá)。如果確定高速緩存文件的末端還沒有到達(dá),操作流程600返回到高速緩存流末端確定操作628。然而,如果確定高速緩存文件的末端已經(jīng)到達(dá),操作流程600結(jié)束。
圖5和6已經(jīng)示例了各種操作流程。應(yīng)該注意的是,可以按所示的順序執(zhí)行圖中示例的操作,或采用不同的順序進(jìn)行的替換。
圖7示例了普通的計(jì)算機(jī)環(huán)境700,能用于實(shí)現(xiàn)在此所述的技術(shù)。計(jì)算機(jī)環(huán)境700只是計(jì)算環(huán)境的一個(gè)例子,對于計(jì)算機(jī)和網(wǎng)絡(luò)結(jié)構(gòu)體系的使用或功能性的范圍并不意味著構(gòu)成任何限制。對于例子計(jì)算機(jī)環(huán)境700所示例了的任何一個(gè)或元件的組合來說,也不能把計(jì)算機(jī)環(huán)境700解釋成具有任何的依賴性或要求。
計(jì)算機(jī)環(huán)境700包括以計(jì)算機(jī)702形式的通用計(jì)算裝置。例如,計(jì)算機(jī)702可以是圖1或2的客戶裝置102或服務(wù)器裝置104。計(jì)算機(jī)702的元件可以包括,但并非局限于,一個(gè)或多個(gè)處理器或處理單元704,系統(tǒng)存儲(chǔ)器706,和耦合包括處理器704-系統(tǒng)存儲(chǔ)器706的各種系統(tǒng)元件的系統(tǒng)總線708。
系統(tǒng)總線708表示一個(gè)或多個(gè)任何幾種類型的總線結(jié)構(gòu),包括存儲(chǔ)器總線或存儲(chǔ)器控制器,外圍裝置總線,圖像加速口,和使用任何各種總線結(jié)構(gòu)體系的處理器或局部總線。通過示例的方式,這樣的體系結(jié)構(gòu)可以包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線,微通道結(jié)構(gòu)總線(MCA),增強(qiáng)ISA總線(EISA),視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線,和周邊元件擴(kuò)展接口(PCI)總線以及熟知的的夾層(Mezzanine)總線。
計(jì)算機(jī)702典型的包括各種計(jì)算機(jī)可讀媒體。該媒體可以是計(jì)算機(jī)702可訪問的任何可用的媒體并包括易失性和非易失性媒體,可移動(dòng)的和不可移動(dòng)的媒體。
系統(tǒng)存儲(chǔ)器706包括易失性存儲(chǔ)器形式的計(jì)算機(jī)可讀媒體,比如隨機(jī)存取存儲(chǔ)器(RAM)710,和/或非易失性存儲(chǔ)器,比如只讀存儲(chǔ)器(ROM)712?;据斎?輸出系統(tǒng)(BIOS)714存儲(chǔ)在ROM712中,該系統(tǒng)包含諸如在啟動(dòng)期間,幫助計(jì)算機(jī)702內(nèi)的元件之間傳送信息的基本程序。RAM710典型的包含數(shù)據(jù)和/或程序模塊,被直接地訪問到和/或由處理單元704馬上操作。
計(jì)算機(jī)702還可以包括其他的可移動(dòng)/非移動(dòng),易失性/非易失性計(jì)算機(jī)存儲(chǔ)媒體。通過示例方式,圖7示例了硬盤驅(qū)動(dòng)器716,用于從非移動(dòng),非易失性磁媒體(未顯示)讀取和寫到它們,磁盤驅(qū)動(dòng)718用于從移動(dòng),非易失性磁媒體720(例如“軟盤”))讀取和寫到它們,和光盤驅(qū)動(dòng)722用于從移動(dòng)的,非易失性光盤724讀取和寫到它們,比如CD-ROM,DVD-ROM,或其他的光媒體。硬盤驅(qū)動(dòng)716,磁盤驅(qū)動(dòng)718,和光盤驅(qū)動(dòng)722通過一個(gè)或多個(gè)數(shù)據(jù)媒體接口726的每個(gè)被連接到系統(tǒng)總線708。換言之,硬盤驅(qū)動(dòng)716,磁盤驅(qū)動(dòng)718,和光盤驅(qū)動(dòng)722通過一個(gè)或多個(gè)接口(未顯示)可以被連接到系統(tǒng)總線708。
磁盤驅(qū)動(dòng)和它們相關(guān)的計(jì)算機(jī)可讀媒體提供非易失性存儲(chǔ)的計(jì)算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),程序模塊,和用于計(jì)算機(jī)702的其他的數(shù)據(jù)。盡管舉例示例了硬盤驅(qū)動(dòng)716,可移動(dòng)磁盤驅(qū)動(dòng)720,和可移動(dòng)光盤驅(qū)動(dòng)724,但應(yīng)該理解,可以是能存儲(chǔ)由計(jì)算機(jī)訪問的數(shù)據(jù)的其它類型的計(jì)算機(jī)可讀媒體,比如磁帶或其他的磁存儲(chǔ)裝置,閃存卡,CD-ROM,數(shù)字化視頻光盤(DVD),或者其他可選存儲(chǔ)器,隨機(jī)存儲(chǔ)器(RAM),只讀存儲(chǔ)器(ROM),電可擦除編程的只讀存儲(chǔ)器(EEPROM),等等,也能被利用來實(shí)現(xiàn)示例的計(jì)算機(jī)系統(tǒng)和環(huán)境。
許多程序模塊可以被存儲(chǔ)在硬盤716,磁盤720,光盤724,ROM712,和/或RAM710,包括示例的方式,操作系統(tǒng)726,一個(gè)或多個(gè)應(yīng)用程序728,其他的程序模塊730,和程序數(shù)據(jù)732。
用戶能經(jīng)輸入裝置輸入命令和信息到計(jì)算機(jī)702中,比如鍵盤734和指示裝置736(例如“鼠標(biāo)”)。其它的輸入裝置738(沒有特別的顯示)可以包括麥克風(fēng),控制桿,游戲手柄,衛(wèi)星盤,序列口,掃描儀等等。這些和其它的輸入裝置只能經(jīng)過被耦合到系統(tǒng)總線708的輸入/輸出接口740被連接到處理單元704,但可以通過其它的接口和總線結(jié)構(gòu)被連接,比如并行口,游戲口,或通用串行總線(USB)。
監(jiān)視器742或其它類型的顯示裝置經(jīng)接口也能被連接到系統(tǒng)總線708,比如視頻適配器744。除了監(jiān)視器742之外,包括諸如揚(yáng)聲器(未顯示)和打印機(jī)746的其他的輸出外部裝置經(jīng)輸入/輸出接口740被連接到計(jì)算機(jī)702。
利用邏輯連接到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),計(jì)算機(jī)702可以運(yùn)行在網(wǎng)絡(luò)環(huán)境中,比如遠(yuǎn)程計(jì)算裝置裝置748。通過示例的方式,遠(yuǎn)程計(jì)算裝置748可以是個(gè)人計(jì)算機(jī),便攜計(jì)算機(jī),服務(wù)器,路由器,網(wǎng)絡(luò)計(jì)算機(jī),同等裝置裝置或其他的公共網(wǎng)絡(luò)節(jié)點(diǎn)等等。遠(yuǎn)程計(jì)算裝置748被示例成便攜計(jì)算機(jī),并可以包括涉及計(jì)算機(jī)702的在此所述的許多或所有元件和特點(diǎn)。
計(jì)算機(jī)702和遠(yuǎn)程計(jì)算機(jī)748之間的邏輯連接被描述成局域網(wǎng)(LAN)750和普通的廣域網(wǎng)(WAN)752。這樣的網(wǎng)絡(luò)環(huán)境是辦公室中的公共場所,企業(yè)-廣域計(jì)算機(jī)網(wǎng)絡(luò),內(nèi)聯(lián)網(wǎng),和因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)時(shí),計(jì)算機(jī)702可以經(jīng)網(wǎng)絡(luò)接口或適配器754被連接到局域網(wǎng)750。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)時(shí),計(jì)算機(jī)702可以包括調(diào)制解調(diào)器756或其他的裝置以便經(jīng)廣域網(wǎng)絡(luò)752建立通信。可以是計(jì)算機(jī)702的內(nèi)部或外部的調(diào)制解調(diào)器756可以經(jīng)輸入/輸出接口740或其他適當(dāng)?shù)臋C(jī)制被連接到系統(tǒng)總線708。應(yīng)該理解的是,示例的網(wǎng)絡(luò)連接是示例性的,可以使用計(jì)算機(jī)702和748之間建立通信鏈接的其他的裝置。
在網(wǎng)絡(luò)環(huán)境中,比如示例的計(jì)算環(huán)境700,相對于計(jì)算機(jī)702所述的程序模塊,或其中的部分,可以被存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)裝置中。通過示例的方式,遠(yuǎn)程應(yīng)用程序758位于遠(yuǎn)程計(jì)算機(jī)748的存儲(chǔ)裝置上。出于示例的目的,諸如操作系統(tǒng)的應(yīng)用程序和其他的可執(zhí)行程序元件在被示例成離散塊,盡管這些程序和元件時(shí)被認(rèn)為??梢晕挥谟?jì)算裝置702的不同的存儲(chǔ)元件中,并通過計(jì)算機(jī)的數(shù)據(jù)處理器來執(zhí)行。
在計(jì)算機(jī)可執(zhí)行指令的這里所述一般前后關(guān)系中可以描述各種模塊和技術(shù),比如通過一個(gè)或多個(gè)計(jì)算機(jī)或其它裝置所執(zhí)行的程序模塊。通常,程序模塊包括例程,程序,對象,元件,數(shù)據(jù)結(jié)構(gòu)等等,執(zhí)行特殊的任務(wù)或?qū)崿F(xiàn)特殊的抽象數(shù)據(jù)類型。典型的,程序模塊的功能性可以以各個(gè)實(shí)施例所期望的形式被組合或分配。
這些模塊和技術(shù)的實(shí)現(xiàn)可以通過一些形式的計(jì)算機(jī)可讀媒體來存儲(chǔ)或傳輸。計(jì)算機(jī)可讀媒體可以是計(jì)算機(jī)可訪問的任何的可用媒體。通過示例的方式,但并非限制,計(jì)算機(jī)可讀媒體可以包括“計(jì)算機(jī)存儲(chǔ)媒體”和“通信媒體”。
“計(jì)算機(jī)存儲(chǔ)媒體”包括易失性的和非易失性的,可移動(dòng)的和不可移動(dòng)的媒體,以實(shí)現(xiàn)在任何方式或技術(shù)下的信息存儲(chǔ),比如計(jì)算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),程序模塊,或其他的數(shù)據(jù)。計(jì)算機(jī)存儲(chǔ)媒體包括,但不限制,RAM,ROM,EEPROM,閃存或其他的存儲(chǔ)器技術(shù),CD-ROM,數(shù)字化視頻光盤(DVD)或其他的光存儲(chǔ),磁帶,磁盤存儲(chǔ)或其他的磁存儲(chǔ)裝置,或任何其他的媒介,能用于存儲(chǔ)期望的信息和能被計(jì)算機(jī)所訪問。
“通信媒體”典型的具體實(shí)現(xiàn)為計(jì)算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),程序塊,或模塊的數(shù)據(jù)信號中的其他的數(shù)據(jù),比如載波或其它傳輸機(jī)制。通信媒體還可以包括任何信息傳送媒體。術(shù)語“已調(diào)制數(shù)據(jù)信號”意味著一種信號,具有一個(gè)或多個(gè)特征集或以以這種方式改變以便在信號中編碼信息。通過示例的方式,但不限制,通信媒體包括有線媒體,比如有線網(wǎng)絡(luò)或直達(dá)線路連接,和無線媒體,比如聲學(xué)的,RF,紅外線,和其他的無線媒體。上述的任何組合也可以被包括在計(jì)算機(jī)可讀媒體的范圍內(nèi)。
盡管上述使用了具體的結(jié)構(gòu)特征和/或方法動(dòng)作的語言,但應(yīng)該明白,所附權(quán)利要求中定義的系統(tǒng)和方法不限于具體的特征或所述的動(dòng)作。相反,具體的特征和動(dòng)作被公開作為實(shí)現(xiàn)本發(fā)明的示例形式。
權(quán)利要求
1.一種方法包括接收多個(gè)時(shí)間非連續(xù)的流媒體文件部分,至少第一和第二非連續(xù)部分以不同的比特率編碼;和在單一高速緩存文件中存儲(chǔ)多個(gè)時(shí)間非連續(xù)部分。
2.權(quán)利要求1定義的方法,其中第一和第二非連續(xù)部分包括視頻數(shù)據(jù)。
3.權(quán)利要求1定義的方法,其中第一和第二非連續(xù)部分包括視頻數(shù)據(jù)和其中第三非連續(xù)部分包括音頻數(shù)據(jù)。
4.權(quán)利要求1的方法,其中高速緩存文件被存儲(chǔ)在非易失性存儲(chǔ)器中。
5.權(quán)利要求1定義的方法,其中存儲(chǔ)的動(dòng)作包括生成多個(gè)媒體高速緩存流,每個(gè)媒體高速緩存流與唯一的比特率相關(guān);在與第一非連續(xù)部分的比特率相關(guān)的媒體高速緩存流中存儲(chǔ)第一非連續(xù)部分;在與第二非連續(xù)部分的比特率相關(guān)的媒體高速緩存流中存儲(chǔ)第二非連續(xù)部分;和在高速緩存文件中存儲(chǔ)媒體高速緩存流。
6.權(quán)利要求1定義的方法,其中存儲(chǔ)的動(dòng)作包括生成與第一非連續(xù)部分的比特率相關(guān)的第一媒體高速緩存流;在第一媒體段流的媒體高速緩存段中存儲(chǔ)第一非連續(xù)部分;生成與第二非連續(xù)部分的比特率相關(guān)的第二媒體高速緩存流;在第二媒體高速緩存流的媒體高速緩存段中存儲(chǔ)第二非連續(xù)部分;生成用于每個(gè)媒體高速緩存段的字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段;和在高速緩存文件中存儲(chǔ)字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段。
7.一種方法包括生成多個(gè)媒體高速緩存流,每個(gè)媒體高速緩存流與唯一比特率相關(guān);接收流媒體文件的多個(gè)部分,每個(gè)部分與流媒體文件的唯一的時(shí)間部分相關(guān);在與比特率相關(guān)的媒體高速緩存流的媒體高速緩存段中存儲(chǔ)每個(gè)部分,其中該部分被編碼,至少兩個(gè)部分被存儲(chǔ)在不同媒體高速緩存流的媒體高速緩存段中;在單一的高速緩存文件中存儲(chǔ)每個(gè)媒體高速緩存流。
8.權(quán)利要求7定義的方法,其中存儲(chǔ)的動(dòng)作包括生成用于每個(gè)媒體高速緩存段的字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段;和在高速緩存文件中存儲(chǔ)字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段。
9.權(quán)利要求7定義的方法,其中存儲(chǔ)的動(dòng)作包括生成用于每個(gè)段的字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段;和在高速緩存文件中串行化字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段。
10.權(quán)利要求7定義的方法,其中高速緩存文件以非易失性方式存儲(chǔ)。
11.一種系統(tǒng)包括數(shù)據(jù)存儲(chǔ)模塊;高速緩存模塊,可操作的接收和在數(shù)據(jù)存儲(chǔ)模塊的高速緩存文件中存儲(chǔ)流媒體文件的多個(gè)時(shí)間非連續(xù)的部分,多個(gè)時(shí)間非連續(xù)部分中的兩個(gè)或多個(gè)以不同的比特率編碼。
12.權(quán)利要求11定義的系統(tǒng),其中數(shù)據(jù)存儲(chǔ)模塊包括非易失性數(shù)據(jù)存儲(chǔ)裝置。
13.權(quán)利要求11定義的系統(tǒng),進(jìn)一步包括處理器;和其中高速緩存模塊包括處理器可執(zhí)行代碼。
14.權(quán)利要求11定義的系統(tǒng),其中高速緩存模塊包括可操作的媒體高速緩存模塊存儲(chǔ)多個(gè)時(shí)間非連續(xù)部分中的每個(gè)作為多個(gè)媒體高速緩存流中之一的媒體高速緩存段;和把每個(gè)媒體高速緩存段解析成字節(jié)索引段和字節(jié)高速緩存數(shù)據(jù)段。
15.權(quán)利要求11定義的系統(tǒng),其中高速緩存模塊包括可操作的媒體高速緩存模塊存儲(chǔ)多個(gè)時(shí)間非連續(xù)部分中的每個(gè)作為多個(gè)媒體高速緩存流中之一的媒體高速緩存段,每個(gè)媒體高速緩存流與不同的比特率相關(guān);和把每個(gè)媒體高速緩存段解析成字節(jié)索引段和字節(jié)高速緩存數(shù)據(jù)段;和字節(jié)高速緩存模塊可操作的在高速緩存文件中存儲(chǔ)字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段。
16.權(quán)利要求11定義的系統(tǒng),其中高速緩存模塊包括可操作的媒體高速緩存模塊生成多個(gè)媒體高速緩存流,每個(gè)媒體高速緩存流與唯一的比特率相關(guān);和在與比特率相關(guān)的媒體高速緩存流的媒體高速緩存段中存儲(chǔ)每個(gè)時(shí)間非連續(xù)部分,其中時(shí)間非連續(xù)部分被編碼;和把每個(gè)媒體高速緩存段解析成字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段;和可操作的高速緩存模塊在高速緩存文件中存儲(chǔ)字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段。
17.權(quán)利要求11定義的系統(tǒng),其中兩個(gè)或多個(gè)時(shí)間非連續(xù)部分包括以第一比特率編碼的第一視頻部分,以第二比特率編碼的第二視頻部分,和音頻部分,和其中第一視頻部分,第二視頻部分,以及音頻部分被存儲(chǔ)在不同的媒體高速緩存流中。
18.權(quán)利要求11定義的系統(tǒng),其中流媒體文件包括不同的數(shù)據(jù)類型;和高速緩存模塊是可操作生成多個(gè)媒體高速緩存流,每個(gè)媒體高速緩存流與流媒體數(shù)據(jù)類型以及流媒體編碼比特率相關(guān);在與時(shí)間非連續(xù)部分的流媒體數(shù)據(jù)類型和流媒體編碼比特率相關(guān)的媒體高速緩存流中存儲(chǔ)每個(gè)接收的流媒體數(shù)據(jù)的時(shí)間非連續(xù)部分;和在高速緩存文件中存儲(chǔ)媒體高速緩存流。
19.權(quán)利要求11定義的系統(tǒng),其中流媒體文件包括不同的數(shù)據(jù)類型;和高速緩存模塊是可操作生成多個(gè)媒體高速緩存流,每個(gè)媒體高速緩存流與流媒體數(shù)據(jù)類型以及流媒體編碼比特率相關(guān);和在與時(shí)間非連續(xù)部分的流媒體數(shù)據(jù)類型和流媒體編碼比特率相關(guān)的媒體高速緩存流中存儲(chǔ)每個(gè)接收的流媒體數(shù)據(jù)的時(shí)間非連續(xù)部分作為媒體高速緩存段;把每個(gè)媒體高速緩存段解析成字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段;和在高速緩存文件中存儲(chǔ)字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段。
20.權(quán)利要求11定義的系統(tǒng),其中高速緩存模塊是可操作存儲(chǔ)多個(gè)時(shí)間非連續(xù)部分中的每個(gè)作為多個(gè)媒體高速緩存流中之一的媒體高速緩存段;生成映射指定媒體高速緩存段和流體的段/流體圖,其中存儲(chǔ)了每個(gè)時(shí)間非連續(xù)部分;和把每個(gè)媒體高速緩存段解析成字節(jié)高速緩存索引段和字節(jié)高速緩存數(shù)據(jù)段。
21.一種具有用于執(zhí)行動(dòng)作的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒介,包括在客戶上,存儲(chǔ)從高速緩存文件中的流媒體源接收的流媒體文件的多個(gè)時(shí)間非連續(xù)部分,多個(gè)時(shí)間非連續(xù)部分中的每個(gè)以不同的比特率編碼。
22.權(quán)利要求21定的計(jì)算機(jī)可讀媒介,其中存儲(chǔ)的動(dòng)作包括接收以第一比特率編碼的流媒體文件的第一視頻部分;在與第一比特率相關(guān)的媒體高速緩存視頻流中存儲(chǔ)第一視頻部分;接收以第二比特率編碼的流媒體文件的第二視頻部分;在與第二比特率相關(guān)的媒體高速緩存視頻流中存儲(chǔ)第二視頻部分;接收流媒體文件的第一音頻部分;在媒體高速緩存音頻流中存儲(chǔ)第一音頻部分;和在高速緩存文件中存儲(chǔ)音頻和視頻媒體高速緩存流。
23.權(quán)利要求21定義的計(jì)算機(jī)可讀媒介,其中存儲(chǔ)的動(dòng)作包括接收以第一比特率編碼的流媒體文件的第一視頻部分;在與第一比特率相關(guān)的媒體高速緩存視頻流中存儲(chǔ)第一視頻部分;接收以第二比特率編碼的流媒體文件的第二視頻部分;在與第二比特率相關(guān)的媒體高速緩存視頻流中存儲(chǔ)第二視頻部分;接收以第一比特率編碼的流媒體文件的第三視頻部分,來自第一視頻部分的第三視頻部分是時(shí)間非連續(xù)的;在與第一比特率相關(guān)的媒體高速緩存視頻流中存儲(chǔ)第三視頻部分;接收流媒體文件的第一音頻部分;和在媒體高速緩存音頻流中存儲(chǔ)第一音頻部分;和在高速緩存文件中存儲(chǔ)音頻和視頻媒體高速緩存流。
24.權(quán)利要求21定義的計(jì)算機(jī)可讀媒介,其中存儲(chǔ)的動(dòng)作包括在唯一媒體高速緩存段中存儲(chǔ)每個(gè)時(shí)間非連續(xù)部分;形成來自每個(gè)媒體高速緩存段的至少兩個(gè)字節(jié)高速緩存段;和在高速緩存文件中存儲(chǔ)字節(jié)高速緩存段。
25.權(quán)利要求21定義的計(jì)算機(jī)可讀媒介,其中存儲(chǔ)的動(dòng)作包括在至少兩個(gè)字節(jié)高速緩存段中存儲(chǔ)每個(gè)時(shí)間非連續(xù)部分;和在高速緩存文件中存儲(chǔ)字節(jié)高速緩存段。
26.一種具有其上存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒介,包括多個(gè)數(shù)據(jù)頁面,包括表示從流媒體源接收的流媒體文件的多個(gè)時(shí)間非連續(xù)部分的數(shù)據(jù),至少兩個(gè)時(shí)間非連續(xù)部分以不同的比特率編碼。
27.一種具有其上存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒介,包括存儲(chǔ)一個(gè)或多個(gè)字節(jié)高速緩存段的多個(gè)數(shù)據(jù)頁面,根據(jù)流媒體文件的時(shí)間非連續(xù)部分導(dǎo)出每個(gè)字節(jié)高速緩存段,至少兩個(gè)時(shí)間非連續(xù)部分是以不同的比特率編碼;和首部頁面包括描述數(shù)據(jù)頁面的一個(gè)或多個(gè)特征的信息。
28.權(quán)利要求27定義的計(jì)算機(jī)可讀媒介,其中首部頁面包括多個(gè)高速緩存文件控制記錄,每個(gè)高速緩存文件控制記錄包括描述單一字節(jié)高速緩存段數(shù)據(jù)頁面的位置的信息。
29.權(quán)利要求27定義的計(jì)算機(jī)可讀媒介,其中首部頁面包括多個(gè)高速緩存文件控制記錄,每個(gè)高速緩存文件控制記錄包括描述數(shù)據(jù)頁面內(nèi)單一字節(jié)高速緩存段位置的信息和表示包括單一字節(jié)高速緩存記錄的頁面數(shù)目的信息。
30.權(quán)利要求27定義的計(jì)算機(jī)可讀媒介,其中首部頁面包括多個(gè)高速緩存文件控制記錄,每個(gè)高速緩存文件控制記錄包括描述數(shù)據(jù)頁面內(nèi)單一字節(jié)高速緩存段的開始和結(jié)束點(diǎn)的信息。
31.權(quán)利要求27的計(jì)算機(jī)可讀媒介,其中首部頁面包括多個(gè)高速緩存文件控制記錄;和至少一個(gè)高速緩存文件控制記錄包括一個(gè)陣列,包括高速緩存文件內(nèi)每個(gè)頁面的位置。
32.權(quán)利要求27定義的計(jì)算機(jī)可讀媒介,其中首部頁面包括多個(gè)高速緩存文件控制記錄;和至少一個(gè)高速緩存文件控制記錄包括表示包含單一字節(jié)高速緩存段的開始的頁面的信息和索引信息,指定頁面內(nèi)單一字節(jié)高速緩存段的開始。
33.權(quán)利要求27定義的計(jì)算機(jī)可讀媒介,其中首部頁面包括多個(gè)高速緩存文件控制記錄;和至少一個(gè)高速緩存文件控制記錄包括定義數(shù)據(jù)頁面中單一字節(jié)高速緩存段的開始和結(jié)束位置的信息。
34.權(quán)利要求27定義的計(jì)算機(jī)可讀媒介,其中首部頁面包括多個(gè)高速緩存文件控制記錄,每個(gè)高速緩存文件控制記錄與單一的字節(jié)高速緩存段相關(guān),每個(gè)高速緩存文件控制記錄識別預(yù)定的頁面數(shù),頁面至少包括與高速緩存文件控制記錄相關(guān)的字節(jié)高速緩存段的一部分,每個(gè)高速緩存文件控制記錄包括指向頁面的指針,該頁面包括識別除了包括至少一部分與相關(guān)的高速緩存文件相關(guān)的預(yù)定頁面數(shù)之外的預(yù)定頁面數(shù)的信息。
35.權(quán)利要求27的計(jì)算機(jī)可讀媒介,其中首部頁面包括預(yù)定數(shù)的高速緩存文件控制記錄,每個(gè)高速緩存文件控制記錄包括描述數(shù)據(jù)頁面中單一字節(jié)高速緩存段的位置的信息;和指向高速緩存文件控制記錄擴(kuò)展頁面的指針,擴(kuò)展頁面包括除了預(yù)訂數(shù)高速緩存文件控制記錄之外的高速緩存文件控制記錄。
36.一種系統(tǒng)包括裝置,用于接收流媒體文件的多個(gè)時(shí)間非連續(xù)部分,至少兩個(gè)時(shí)間非連續(xù)部分以不同的比特率被編碼;和裝置,用于在數(shù)據(jù)結(jié)構(gòu)中相關(guān)和存儲(chǔ)多個(gè)時(shí)間非連續(xù)部分。
全文摘要
描述了系統(tǒng),方法,和數(shù)據(jù)結(jié)構(gòu),允許一種方式的高速緩存流媒體文件,允許存儲(chǔ)和檢索流媒體文件的部分,它們是時(shí)間非連續(xù)的和/或以不同的比特率被編碼的。
文檔編號H04N7/16GK1692353SQ03801849
公開日2005年11月2日 申請日期2003年8月20日 優(yōu)先權(quán)日2003年8月1日
發(fā)明者A·V·格里格羅維齊, Y·喬伊, T·泡羅德卡瓦爾厚 申請人:微軟公司