日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

使用協(xié)作式并行http和前向糾錯(cuò)的增強(qiáng)型塊請求流送的制作方法

文檔序號:7913723閱讀:293來源:國知局
專利名稱:使用協(xié)作式并行http和前向糾錯(cuò)的增強(qiáng)型塊請求流送的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及改善的媒體流送系統(tǒng)和方法,尤其涉及自適應(yīng)于網(wǎng)絡(luò)和緩沖條件以使流送媒體的呈現(xiàn)最優(yōu)化并允許對流送媒體數(shù)據(jù)進(jìn)行高效的并發(fā)或時(shí)間分布式投遞的系統(tǒng)和方法。
背景技術(shù)
流送媒體投遞可能變得日益重要,因?yàn)樵谥T如因特網(wǎng)、蜂窩和無線網(wǎng)絡(luò)、輸電線網(wǎng)絡(luò)、以及其他類型的網(wǎng)絡(luò)之類的基于分組的網(wǎng)絡(luò)上投遞高質(zhì)量音頻和視頻變得越來越常見。所投遞的流送媒體能被呈現(xiàn)出的質(zhì)量可取決于數(shù)種因素,包括原始內(nèi)容的分辨率(或其他屬性)、原始內(nèi)容的編碼質(zhì)量、接收設(shè)備解碼和呈現(xiàn)媒體的能力、在接收機(jī)處接收到的信號的及時(shí)性和質(zhì)量等。為了產(chǎn)生感知到的良好的流送媒體體驗(yàn),在接收機(jī)處接收到的信號的傳輸和及時(shí)性可能尤其重要。良好的傳輸可以提供在接收機(jī)處接收到的流相對于發(fā)送方發(fā)送的流的保真度,而及時(shí)性可以代表接收機(jī)在初始請求內(nèi)容之后多快就能開始播出該內(nèi)容。媒體投遞系統(tǒng)可表征為具有媒體源、媒體目的地、以及將源和目的地分開的(時(shí)間和/或空間上的)信道的系統(tǒng)。典型地,源包括能訪問可電子地管理的形式的媒體的發(fā)射機(jī)、以及有能力電子地控制對媒體(或其近似物)的接收并將其提供給媒體消費(fèi)者(例如,具有以某種方式耦合到該接收機(jī)、存儲(chǔ)設(shè)備或元件、另一信道等的顯示設(shè)備的用戶)的接收機(jī)。雖然有許多變型是可能的,但在常見的示例中,媒體投遞系統(tǒng)具有能訪問電子形式的媒體內(nèi)容的一個(gè)或更多個(gè)服務(wù)器,并且一個(gè)或更多個(gè)客戶端系統(tǒng)或設(shè)備向服務(wù)器作出對媒體的請求,而服務(wù)器使用作為該服務(wù)器的一部分的向客戶端處的接收機(jī)進(jìn)行傳送的發(fā)射機(jī)來輸送該媒體,從而收到的媒體能由該客戶端以某種方式消費(fèi)。在簡單的示例中,對于給定的請求和響應(yīng)而言有一個(gè)服務(wù)器和一個(gè)客戶端,但并非必需如此。按傳統(tǒng),媒體投遞系統(tǒng)可表征為“下載”模型或“流送”模型?!跋螺d”模型可由媒體數(shù)據(jù)的投遞與該媒體向用戶或接收方設(shè)備的播出之間的時(shí)基獨(dú)立性來表征。作為示例,媒體在被需要或?qū)⒈皇褂弥氨幌螺d得足夠多,并且在該媒體被使用時(shí),在接收方處已有所需那么多的媒體可用。在下載的上下文中的投遞往往是使用諸如 HTTP、FTP或單向傳輸上的文件投遞(FLUTE)之類的文件傳輸協(xié)議來執(zhí)行的,且投遞速率可由下層的流量和/或擁塞控制協(xié)議(諸如TCP/IP)來決定。該流量或擁塞控制協(xié)議的操作可獨(dú)立于媒體向用戶或目的地設(shè)備的播出,而播出可與下載并發(fā)地發(fā)生或在其他某個(gè)時(shí)間發(fā)生?!傲魉汀蹦J娇捎擅襟w數(shù)據(jù)的投遞與該媒體向用戶或接收方設(shè)備的播出的時(shí)基之間的緊耦合來表征。在該上下文中的投遞往往是使用流送協(xié)議來執(zhí)行的,諸如用于控制的實(shí)時(shí)流送協(xié)議(RTSP)和用于媒體數(shù)據(jù)的實(shí)時(shí)傳輸協(xié)議(RTP)。投遞速率可由流送服務(wù)器決定,通常與數(shù)據(jù)的播出速率匹配。“下載”模型的一些缺點(diǎn)可能在于,由于投遞與播出之間的時(shí)基獨(dú)立性,要么在需要媒體數(shù)據(jù)供播出時(shí)該媒體數(shù)據(jù)可能不可用(例如,由于可用帶寬小于媒體數(shù)據(jù)率),導(dǎo)致播出暫時(shí)停止(“停滯”),而這造成不良的用戶體驗(yàn);要么可能要求提前在播出之前很久就下載媒體數(shù)據(jù)(例如,由于可用帶寬大于媒體數(shù)據(jù)率),從而消費(fèi)掉接收設(shè)備上可能稀缺的存儲(chǔ)資源,并且消費(fèi)寶貴的網(wǎng)絡(luò)資源進(jìn)行投遞,而這在內(nèi)容最終沒有被播出或以其他方式使用的情況下會(huì)被浪費(fèi)掉?!跋螺d”模型的優(yōu)點(diǎn)可在于執(zhí)行此類下載所需的技術(shù)(例如,HTTP)非常成熟、被廣泛部署且全面適用于很廣范圍的應(yīng)用。用于實(shí)現(xiàn)此類文件下載的大規(guī)??缮炜s性的下載服務(wù)器和解決方案(例如,HTTP Web服務(wù)器和內(nèi)容投遞網(wǎng)絡(luò))可能是現(xiàn)成可用的,從而使得基于該技術(shù)的服務(wù)部署簡單且成本低廉?!傲魉汀蹦P偷囊恍┤秉c(diǎn)可能在于,一般而言,媒體數(shù)據(jù)的投遞速率并不適配于從服務(wù)器到客戶端的連接上的可用帶寬,且需要提供帶寬和延遲擔(dān)保的專門的流送服務(wù)器或更復(fù)雜的網(wǎng)絡(luò)架構(gòu)。盡管存在支持根據(jù)可用帶寬來變化投遞數(shù)據(jù)率的流送系統(tǒng)(例如, Adobe Flash自適應(yīng)流送),但是這些系統(tǒng)在利用所有可用帶寬方面一般不如諸如TCP之類的下載傳輸流量控制協(xié)議那么高效。最近,已開發(fā)和部署了基于“流送”和“下載”模型的組合的新型媒體投遞系統(tǒng)。此類模型的示例在本文中被稱為“塊請求流送”模型,其中媒體客戶端使用諸如HTTP之類的下載協(xié)議來向服務(wù)基礎(chǔ)設(shè)施請求媒體數(shù)據(jù)塊。此類系統(tǒng)中的關(guān)注點(diǎn)可能是開始播出流的能力,例如使用個(gè)人計(jì)算機(jī)來解碼和渲染收到的音頻和視頻流并在計(jì)算機(jī)屏幕上顯示該視頻以及通過內(nèi)置揚(yáng)聲器來播放該音頻,或者作為另一示例,使用機(jī)頂盒來解碼和渲染收到的音頻和視頻流并在電視顯示設(shè)備上顯示該視頻以及通過立體聲系統(tǒng)來播放該音頻。諸如能夠足夠快地解碼源塊以跟上源流送速率、使解碼等待時(shí)間最小化以及減少對可用CPU資源的使用之類的其他關(guān)注點(diǎn)也是問題所在。另一關(guān)注點(diǎn)是提供穩(wěn)健和可伸縮的流送投遞解決方案,其允許系統(tǒng)的組件發(fā)生故障而不會(huì)不利地影響投遞給接收機(jī)的流的質(zhì)量。基于在呈現(xiàn)正被分發(fā)時(shí)關(guān)于該呈現(xiàn)的快速改變的信息,可能發(fā)生其他問題。因此,希望具有改善的過程和裝置。發(fā)明簡要概述一種塊請求流送系統(tǒng)典型地使用攝取系統(tǒng)來提供此類系統(tǒng)的用戶體驗(yàn)和帶寬效率的改善,該攝取系統(tǒng)生成將由常規(guī)文件服務(wù)器(例如,HTTP、FTP或類似服務(wù)器)供應(yīng)的形式的數(shù)據(jù),其中該攝取系統(tǒng)攝入內(nèi)容并將其制備為將由可包括或可不包括高速緩存的該文件服務(wù)器來供應(yīng)的文件或數(shù)據(jù)元素??蛻舳嗽O(shè)備可適配成利用攝取過程并且包括促成獨(dú)立于該攝取過程的更好呈現(xiàn)的改進(jìn)。在塊請求流送系統(tǒng)中,攝取系統(tǒng)根據(jù)擦除碼生成數(shù)據(jù), 并且客戶端設(shè)備通過對媒體數(shù)據(jù)和冗余數(shù)據(jù)的請求的各種選擇和時(shí)基控制能高效地解碼媒體以供呈現(xiàn)。以下詳細(xì)描述連同附圖將提供對本發(fā)明的本質(zhì)和優(yōu)點(diǎn)的更好理解。附圖簡述

圖1描繪了根據(jù)本發(fā)明的實(shí)施例的塊請求流送系統(tǒng)的元素。圖2解說圖1的塊請求流送系統(tǒng),示出了耦合到塊供應(yīng)基礎(chǔ)設(shè)施(“BSI”)以接收由內(nèi)容攝取系統(tǒng)處理的數(shù)據(jù)的客戶端系統(tǒng)的元素中的更多細(xì)節(jié)。圖3解說了攝取系統(tǒng)的硬件/軟件實(shí)現(xiàn)。圖4解說了客戶端系統(tǒng)的硬件/軟件實(shí)現(xiàn)。圖5解說了圖1中所示的內(nèi)容存儲(chǔ)的可能結(jié)構(gòu),包括段和媒體呈現(xiàn)描述符(“MPD”) 文件,以及MPD文件內(nèi)的段分解、時(shí)基和其他結(jié)構(gòu)。圖6解說了如可存儲(chǔ)在圖1和5中解說的內(nèi)容存儲(chǔ)中的典型源段的細(xì)節(jié)。圖7a和7b解說了文件內(nèi)的簡單索引和階層式索引。圖8 (a)解說了在媒體流的多個(gè)版本上具有對準(zhǔn)的查找點(diǎn)的可變塊大小控制。圖8(b)解說了在媒體流的多個(gè)版本上具有非對準(zhǔn)的查找點(diǎn)的可變塊大小控制。圖9 (a)解說了元數(shù)據(jù)表。圖9 (b)解說了從服務(wù)器向客戶端傳輸塊和元數(shù)據(jù)表。圖10解說了獨(dú)立于RAP邊界的塊。
圖11解說了跨段的連續(xù)時(shí)基和不連續(xù)時(shí)基。圖12是示出可伸縮塊的一方面的圖。圖13描繪了塊請求流送系統(tǒng)內(nèi)的某些變量隨時(shí)間演進(jìn)的圖形表示。圖14描繪了塊請求流送系統(tǒng)內(nèi)的某些變量隨時(shí)間演進(jìn)的另一圖形表示。圖15描述了作為閾值的函數(shù)的狀態(tài)的單元柵格。圖16是可在接收機(jī)中執(zhí)行的每請求能請求單個(gè)塊以及多個(gè)塊的過程的流程圖。圖17是靈活管線過程的流程圖。圖18解說了在某個(gè)時(shí)間的一組候選請求、其優(yōu)先級、以及在哪些連接上能發(fā)出這些請求的示例。圖19解說了已隨時(shí)間變遷而演進(jìn)的一組候選請求、其優(yōu)先級、以及在哪些連接上能發(fā)出這些請求的示例。圖20是基于文件標(biāo)識(shí)符的一致性高速緩存服務(wù)器代理選擇的流程圖。圖21解說了對合適的表達(dá)式語言的句法定義。圖22解說了合適的散列函數(shù)的示例。圖23解說了文件標(biāo)識(shí)符構(gòu)造規(guī)則的示例。圖M(a)_(e)解說了 TCP連接的帶寬波動(dòng)。圖25解說了對源數(shù)據(jù)和修復(fù)數(shù)據(jù)的多個(gè)HTTP請求。圖沈解說了帶FEC和不帶FEC的示例頻道換臺(tái)時(shí)間。圖27解說了作為圖1中所示的攝取系統(tǒng)一部分的從源段和控制參數(shù)生成修復(fù)段的修復(fù)段生成器的詳情。圖觀解說了源塊與修復(fù)塊之間的關(guān)系。圖四解說了在客戶端處不同時(shí)間的實(shí)況服務(wù)的規(guī)程。在附圖中,相似的項(xiàng)目用相似的標(biāo)號來引述且在括號中提供副標(biāo)以指示相似或相同項(xiàng)目的多個(gè)實(shí)例。除非另行指出,否則最后的副標(biāo)(例如,“N”或“M”)并非意在限定于任何特定值,且一個(gè)項(xiàng)目的實(shí)例數(shù)目可與另一項(xiàng)目的實(shí)例數(shù)目不同,即使在解說了相同的標(biāo)號且重復(fù)使用了副標(biāo)時(shí)亦然。發(fā)明詳細(xì)描述如本文中所描述的,流送系統(tǒng)的目標(biāo)是將媒體從其存儲(chǔ)位置(或正生成該媒體的位置)移到正消費(fèi)該媒體的位置,即呈現(xiàn)給用戶或以其他方式被人類或電子消費(fèi)者“用盡”。理想情況下,流送系統(tǒng)可在接收端提供不間斷的回放(或更一般而言,不間斷的“消費(fèi)”),且在用戶請求了流或流集合之后不久就能開始播放這個(gè)或這些流。出于效率原因,還希望每個(gè)流在一旦用戶指示不再需要該流時(shí),諸如當(dāng)用戶正從一個(gè)流切換到另一個(gè)流或者其服從例如“字幕”流之類的流的呈現(xiàn)時(shí)就被停下。若諸如視頻之類的媒體分量繼續(xù)被呈現(xiàn),但選擇了不同的流來呈現(xiàn)該媒體分量,則往往優(yōu)選令新的流占用有限的帶寬并停止舊的流。根據(jù)本文中描述的實(shí)施例的塊請求流送系統(tǒng)提供許多益處。應(yīng)理解,可行的系統(tǒng)無需包括本文中描述的所有特征,因?yàn)橐恍?yīng)用可用不足本文中描述的特征全體的特征來提供令人滿意程度適宜的體驗(yàn)。HTTP 流送
HTTP流送是一種具體的流送類型。在HTTP流送下,源可以是標(biāo)準(zhǔn)web服務(wù)器和內(nèi)容投遞網(wǎng)絡(luò)(CDN)并且可使用標(biāo)準(zhǔn)HTTP。該技術(shù)可涉及流分段以及使用多個(gè)流,所有這些皆落在標(biāo)準(zhǔn)化HTTP請求的上下文中。諸如視頻之類的媒體可以用多個(gè)比特率來編碼以構(gòu)成不同的版本或表示。術(shù)語“版本”和“表示”在本文中同義地使用。每個(gè)版本或表示可被分解成較小的片以構(gòu)成段,片可能在幾秒的量級。每個(gè)段隨后可作為單獨(dú)的文件被存儲(chǔ)在 web服務(wù)器或⑶N上。在客戶端一側(cè),隨后可使用HTTP作出對個(gè)體段的請求,這些個(gè)體段由客戶端無縫地拼接在一起??蛻舳丝苫诳捎脦捛袚Q到不同的數(shù)據(jù)率??蛻舳诉€可請求多個(gè)表示, 每個(gè)表示呈現(xiàn)不同的媒體分量,并且可聯(lián)合且同步地呈現(xiàn)這些表示中的媒體。切換的觸發(fā)可包括例如緩沖器占用率和網(wǎng)絡(luò)測量。當(dāng)在穩(wěn)態(tài)下操作時(shí),客戶端可調(diào)整向服務(wù)器請求的步調(diào)以維持目標(biāo)緩沖器占用率。HTTP流送的優(yōu)點(diǎn)可包括比特率自適應(yīng)、快速啟動(dòng)和查找、以及最小程度的不必要投遞。這些優(yōu)點(diǎn)源于將投遞控制成僅比播出提前很短時(shí)間、對可用帶寬作出最大程度的使用(通過可變比特率媒體)、以及優(yōu)化流分段和智能客戶端規(guī)程。媒體呈現(xiàn)描述可被提供給HTTP流送客戶端,以使得客戶端能使用文件(例如以 3GPP規(guī)定的格式,在本文中稱為3gp段)的集合來向用戶提供流送服務(wù)。媒體呈現(xiàn)描述以及可能還有該媒體呈現(xiàn)描述的更新描述了實(shí)為結(jié)構(gòu)化的段集合的媒體呈現(xiàn),每個(gè)段包含媒體分量以使得客戶端能以同步方式呈現(xiàn)所包括的媒體并且能提供高級特征,諸如查找、切換比特率、以及聯(lián)合呈現(xiàn)不同表示中的媒體分量??蛻舳丝砂床煌绞绞褂妹襟w呈現(xiàn)描述信息來得到服務(wù)的供給。具體而言,根據(jù)媒體呈現(xiàn)描述,HTTP流送客戶端可確定能訪問該集合中的哪些段,從而流送服務(wù)內(nèi)的數(shù)據(jù)對于客戶端能力以及用戶而言是有用的。在一些實(shí)施例中,媒體呈現(xiàn)描述可以是靜態(tài)的,但段可以是動(dòng)態(tài)地創(chuàng)建的。媒體呈現(xiàn)描述可以盡可能緊湊以使該服務(wù)的訪問和下載時(shí)間最小化。其他專用服務(wù)器連通性可被最小化,例如客戶端與服務(wù)器之間常規(guī)或頻繁的時(shí)基同步??梢詫⒚襟w呈現(xiàn)構(gòu)造成允許被具有不同能力——諸如接入不同的接入網(wǎng)類型、不同的當(dāng)前網(wǎng)絡(luò)條件、顯示器大小、訪問比特率和編解碼器支持——的終端訪問??蛻舳穗S后可提取恰適的信息以向用戶提供流送服務(wù)。媒體呈現(xiàn)描述還可根據(jù)要求允許部署靈活性以及緊湊性。在最簡單的情形中,每個(gè)替換表示可被存儲(chǔ)在單個(gè)3GP文件中,即遵照如3GPP TS26. 244中的定義的文件、或遵照如IS0/IEC 14496-12或衍生規(guī)范中定義的ISO基媒體文件格式(諸如3GPP技術(shù)規(guī)范26. 244中描述的3GP文件格式)的任何其他文件。在本文檔的其余部分中,在引述3GP文件時(shí),應(yīng)理解IS0/IEC 14496-12和衍生規(guī)范可將所有所描述的特征映射到如IS0/IEC 14496-12或任何衍生規(guī)范中定義的更一般性的ISO基媒體文件格式。客戶端隨后可請求文件的初始部分以獲悉媒體元數(shù)據(jù)(其典型地被存儲(chǔ)在也被稱為 “moov”包的電影頭部包中)連同電影片斷時(shí)間和字節(jié)偏移量??蛻舳穗S后可發(fā)出HTTP部分獲取請求以獲得所要求的電影片斷。在一些實(shí)施例中,可能希望將每個(gè)表示拆分成若干段,其中這些段。在段格式基于 3GP文件格式的情形中,則段包含電影片斷的非交迭時(shí)間片,稱為“按時(shí)間拆分”。這些段中的每一個(gè)可包含多個(gè)電影片斷且每個(gè)段本身可以是有效3GP文件。在另一實(shí)施例中,表示被拆分成包含元數(shù)據(jù)的初始段(典型情況下為電影頭部“moov”包)以及一組媒體段,每個(gè)媒體段包含媒體數(shù)據(jù),并且初始段與任何媒體段的級聯(lián)構(gòu)成有效的3GP文件,而且一個(gè)表示的初始段和所有媒體段的級聯(lián)也構(gòu)成有效的3GP文件。通過依次播出每個(gè)段、根據(jù)每個(gè)表示的起始時(shí)間將文件內(nèi)的局部時(shí)戳映射到全局呈現(xiàn)時(shí)間便可構(gòu)成整個(gè)呈現(xiàn)。應(yīng)注意,貫穿本說明書對“段”的引述應(yīng)被理解為包括作為文件下載協(xié)議請求(包括例如HTTP請求)的結(jié)果完全或部分地從存儲(chǔ)介質(zhì)構(gòu)造或讀取或者以其他方式獲得的任何數(shù)據(jù)對象。例如,在HTTP的情形中,數(shù)據(jù)對象可被存儲(chǔ)在駐留于連接到HTTP服務(wù)器或構(gòu)成HTTP服務(wù)器一部分的盤或其他存儲(chǔ)介質(zhì)上的實(shí)際文件中,或者數(shù)據(jù)對象可由響應(yīng)于 HTTP請求而執(zhí)行的CGI腳本或其他動(dòng)態(tài)地執(zhí)行的程序來構(gòu)造。除非另行指出,否則術(shù)語“文件”和“段”在本文中同義地使用。在HTTP的情形中,段可被視為HTTP請求響應(yīng)的實(shí)體主體。術(shù)語“呈現(xiàn)”和“內(nèi)容項(xiàng)”在本文中同義地使用。在許多示例中,呈現(xiàn)是具有定義的“播出”時(shí)間的音頻、視頻或其他媒體呈現(xiàn),但其他變型也是可能的。除非另行指出,否則術(shù)語“塊”和“片斷”在本文中同義地使用且一般指代有索引的最小的數(shù)據(jù)聚集。基于可用的索引法,客戶端可在不同的HTTP請求中請求片斷的不同部分,或者可在一個(gè)HTTP請求中請求一個(gè)或更多個(gè)連貫片斷或片斷部分。在其中使用基于 ISO基媒體文件格式的段或基于3GP文件格式的段的情形中,片斷典型地指代定義為電影片斷頭部(‘moof’ )包和媒體數(shù)據(jù)(‘mdat’ )包的組合的電影片斷。在本文中,為了簡化本文中的描述而假定攜帶數(shù)據(jù)的網(wǎng)絡(luò)是基于分組的,在閱讀本公開之后應(yīng)認(rèn)識(shí)到,本領(lǐng)域技術(shù)人員能將本文中描述的本發(fā)明的實(shí)施例應(yīng)用于其他類型的傳輸網(wǎng)絡(luò),諸如連續(xù)比特流網(wǎng)絡(luò)。在本文中,為了簡化本文中的描述而假定由FEC碼提供對抗數(shù)據(jù)投遞時(shí)間長且可變這一問題的保護(hù),在閱讀本公開之后應(yīng)認(rèn)識(shí)到,本領(lǐng)域技術(shù)人員能將本發(fā)明的實(shí)施例應(yīng)用于其他類型的數(shù)據(jù)傳輸問題,諸如數(shù)據(jù)的比特翻轉(zhuǎn)訛誤。例如,在沒有FEC的情況下,若所請求片斷的最后部分比該片斷的先前部分晚到很久或者其抵達(dá)時(shí)間有很大變動(dòng),則內(nèi)容換臺(tái)時(shí)間可能是長且可變的,而在使用FEC和并行請求的情況下,僅需要針對片斷所請求的數(shù)據(jù)的大半抵達(dá)后就能恢復(fù)該片斷,藉此減少了內(nèi)容換臺(tái)時(shí)間以及內(nèi)容換臺(tái)時(shí)間上的可變性。在本描述中,可假定待編碼數(shù)據(jù)(即,源數(shù)據(jù))已被分解成可以具有有任何長度(小至單個(gè)比特)的等長“碼元”,但對于數(shù)據(jù)的不同部分而言,碼元可以具有不同長度,例如, 可對不同的數(shù)據(jù)塊使用不同的碼元大小。在本描述中,為了簡化本文中的描述,假定每次向數(shù)據(jù)“塊”或“片斷”應(yīng)用FEC,即 “塊”是用于FEC編碼和解碼目的的“源塊”。客戶端設(shè)備可使用本文中描述的段索引法來幫助確定段的源塊結(jié)構(gòu)。本領(lǐng)域技術(shù)人員可將本發(fā)明的實(shí)施例應(yīng)用于其他類型的源塊結(jié)構(gòu), 例如源塊可以是片斷的一部分,或者可涵蓋一個(gè)或更多個(gè)片斷或片斷部分??紤]與塊請求流送聯(lián)用的FEC碼典型情況下是系統(tǒng)FEC碼,即源塊的源碼元可作為該源塊的編碼的一部分被包括,并且因此源碼元被傳送。如本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到的, 本文中描述的實(shí)施例也等同地適用于非系統(tǒng)的FEC碼。系統(tǒng)FEC編碼器從由源碼元構(gòu)成的源塊生成一定數(shù)目的修復(fù)碼元,且源碼元和修復(fù)碼元中的至少一些的組合便是在信道上發(fā)送的表示源塊的經(jīng)編碼碼元。一些FEC碼對于高效地生成如所需的那么多的修復(fù)碼元而言可能是有用的,諸如“信息加性碼”或“噴泉碼”,且這些碼的示例包括“鏈?zhǔn)椒磻?yīng)碼”和“多級鏈?zhǔn)椒磻?yīng)碼”。諸如Reed-Solomon碼之類的其他FEC碼可能實(shí)際上僅為每個(gè)源塊生成有限數(shù)目的修復(fù)碼元。在這些示例中的許多示例中假定客戶端耦合到媒體服務(wù)器或多個(gè)媒體服務(wù)器,且客戶端在信道或多個(gè)信道上向該媒體服務(wù)器或該多個(gè)媒體服務(wù)器請求流送媒體。然而,更復(fù)雜的安排也是可能的。益處示例通過塊請求流送,媒體客戶端維護(hù)這些塊請求的時(shí)基與向用戶進(jìn)行媒體播出的時(shí)基之間的耦合。該模型可留存以上描述的“下載”模型的優(yōu)點(diǎn),同時(shí)避免源于媒體播出與媒體投遞之間通常為解耦的一些缺點(diǎn)。該塊請求流送模型利用諸如TCP之類的傳輸協(xié)議中可用的速率和擁塞控制機(jī)制來確保最大可用帶寬被用于媒體數(shù)據(jù)。另外,將媒體呈現(xiàn)分成塊允許從一組多種可用編碼中選擇每個(gè)經(jīng)編碼媒體數(shù)據(jù)塊。該選擇可基于任何數(shù)目個(gè)準(zhǔn)則,包括媒體數(shù)據(jù)率與可用帶寬的匹配——即使在可用帶寬隨時(shí)間改變時(shí)亦然,媒體分辨率或解碼復(fù)雜性與客戶端能力或配置的匹配,或者與諸如語言之類的用戶偏好的匹配。該選擇還可包括對輔助分量的下載和呈現(xiàn),諸如可訪問性分量、隱藏字幕、字幕、手語視頻等。使用塊請求流送模型的現(xiàn)有系統(tǒng)的示例包括移動(dòng)網(wǎng)絡(luò)(Move Network )、微軟流暢流送(Microsoft Smooth Streaming)以及蘋果 iPhone 流送協(xié)議。通常,每個(gè)媒體數(shù)據(jù)塊可作為個(gè)體文件存儲(chǔ)在服務(wù)器上,且隨后使用諸如HTTP之類的協(xié)議協(xié)同在服務(wù)器上執(zhí)行的HTTP服務(wù)器軟件將該文件作為單位來請求。典型地,向客戶端提供元數(shù)據(jù)文件,元數(shù)據(jù)文件例如可以為可擴(kuò)展標(biāo)記語言(XML)格式或播放列表文本格式或二進(jìn)制格式,元數(shù)據(jù)文件描述了在本文檔中通常稱為“表示”的媒體呈現(xiàn)的特征, 諸如可用編碼(例如,要求的帶寬、分辨率、編碼參數(shù)、媒體類型、語言),以及將編碼劃分成塊的方式。例如,元數(shù)據(jù)可包括每個(gè)塊的統(tǒng)一資源定位符(URL)。URL本身可提供諸如以串“http://”來前綴以指示將用于訪問此記載的資源的協(xié)議是HTTP的方案。另一示例是 “ftp://”以指示將使用的協(xié)議是FTP。在其他系統(tǒng)中,例如可由服務(wù)器響應(yīng)于來自客戶端的以時(shí)間指示媒體呈現(xiàn)中被請求的部分的請求“在運(yùn)行中”構(gòu)造媒體塊。例如,在使用方案“http://”的HTTP情形中,對該URL的請求的執(zhí)行提供請求響應(yīng),在該請求響應(yīng)的實(shí)體主體中包含一些特定數(shù)據(jù)。在網(wǎng)絡(luò)中關(guān)于如何生成該請求響應(yīng)的實(shí)現(xiàn)可能是十分不同的,這取決于服務(wù)此類請求的服務(wù)器的實(shí)現(xiàn)。典型地,每個(gè)塊可以是能獨(dú)立解碼的。例如,在視頻媒體的情形中,每個(gè)塊可始于 “查找點(diǎn)”。在一些編碼方案中,查找點(diǎn)被稱為“隨機(jī)訪問點(diǎn)”或即“RAP”,盡管并非所有RAP 都會(huì)被指定為查找點(diǎn)。類似地,在其他編碼方案中,查找點(diǎn)在H. 264視頻編碼的情形中始于 “獨(dú)立數(shù)據(jù)刷新”巾貞或即“IDR”,盡管并非所有IDR都會(huì)被指定為查找點(diǎn)。查找點(diǎn)是視頻(或其他)媒體中解碼器不需要關(guān)于先前幀或數(shù)據(jù)或樣本的任何數(shù)據(jù)就能開始解碼的位置,而正被解碼的幀或樣本不是以自立方式而是例如作為當(dāng)前幀與先前幀之間的差異來編碼的情形可能就是需要關(guān)于先前幀或數(shù)據(jù)或樣本的數(shù)據(jù)的情形。此類系統(tǒng)中的關(guān)注點(diǎn)可能是開始播出流的能力,例如使用個(gè)人計(jì)算機(jī)來解碼和渲染收到的音頻和視頻流并在計(jì)算機(jī)屏幕上顯示該視頻以及通過內(nèi)置揚(yáng)聲器播放該音頻,或者作為另一示例,使用機(jī)頂盒來解碼和渲染收到的音頻和視頻流并在電視顯示設(shè)備上顯示該視頻以及通過立體聲系統(tǒng)播放該音頻。主要關(guān)注點(diǎn)可能是使在用戶決定觀看作為流來投遞的新內(nèi)容并采取表達(dá)該決定的行動(dòng)(例如,用戶點(diǎn)擊瀏覽器窗口內(nèi)的鏈接或遙控設(shè)備上的播放按鈕)的時(shí)間與內(nèi)容開始在用戶的屏幕上播放的時(shí)間之間的延遲(下文中稱為“內(nèi)容換臺(tái)時(shí)間”)最小化。這些關(guān)注點(diǎn)中的每一個(gè)均可由本文中描述的增強(qiáng)型系統(tǒng)的元素來解決。內(nèi)容換臺(tái)的示例是用戶正觀看經(jīng)由第一流來投遞的第一內(nèi)容,并且隨后該用戶決定觀看經(jīng)由第二流來投遞的第二內(nèi)容并發(fā)起開始觀看第二內(nèi)容的行動(dòng)。第二流可以是從與第一流相同或不同的一組服務(wù)器發(fā)送的。內(nèi)容換臺(tái)的另一示例是用戶正訪問網(wǎng)站并通過點(diǎn)擊瀏覽器窗口內(nèi)的鏈接來決定開始觀看經(jīng)由第一流投遞的第一內(nèi)容。以類似方式,用戶可能決定并非從頭,而是從流內(nèi)的某個(gè)時(shí)間開始播放內(nèi)容。用戶指示其客戶端設(shè)備查找時(shí)間位置并且用戶可能期望所選擇的時(shí)間被立刻渲染。使內(nèi)容換臺(tái)時(shí)間最小化對于視頻觀看而言是重要的,其允許用戶在搜索和取樣很廣范圍的可用內(nèi)容時(shí)獲得高質(zhì)量的快速內(nèi)容沖浪體驗(yàn)。近期,考慮使用前向糾錯(cuò)(FEC)碼在傳輸期間保護(hù)流送媒體已成為慣例。當(dāng)在分組網(wǎng)絡(luò)(其示例包括因特網(wǎng)和諸如由諸如3GPP、3GPP2和DVB之類的群體標(biāo)準(zhǔn)化的那些無線網(wǎng)絡(luò))上發(fā)送時(shí),源流在被生成或變?yōu)榭捎脮r(shí)被放入分組中,且因此這些分組可用來將源或內(nèi)容流按其被生成或變?yōu)榭捎玫拇涡驍y至接收機(jī)。在向這些類型的場景應(yīng)用FEC碼的典型情形中,編碼器可使用FEC碼來創(chuàng)建修復(fù)分組,隨后將這些修復(fù)分組作為包含源流的原始源分組的補(bǔ)充來發(fā)送。修復(fù)分組具有以下性質(zhì)當(dāng)發(fā)生源分組丟失時(shí),可使用接收到的修復(fù)分組來恢復(fù)丟失的源分組中包含的數(shù)據(jù)。 修復(fù)分組可被用來恢復(fù)完全丟失的丟失源分組的內(nèi)容,但也可被用來從部分分組丟失中恢復(fù),這些恢復(fù)或者是從完全接收到的修復(fù)分組或者甚至是從部分接收到的修復(fù)分組來進(jìn)行的。因此,可以使用整體或部分接收到的修復(fù)分組來恢復(fù)整體或部分丟失的源分組。在其他示例中,所發(fā)送的數(shù)據(jù)可能發(fā)生其他類型的訛誤,例如比特值可能翻轉(zhuǎn),并且因此修復(fù)分組可被用來糾正此類訛誤并提供對源分組盡可能準(zhǔn)確的恢復(fù)。在其他示例中,源流不一定以分立的分組來發(fā)送,而是可代之以例如作為連續(xù)比特流來發(fā)送。存在可用于提供對源流的保護(hù)的FEC碼的許多示例。Reed-Solomon碼是公知的用于在通信系統(tǒng)中進(jìn)行差錯(cuò)和擦除糾正的碼。對于例如分組數(shù)據(jù)網(wǎng)絡(luò)上的擦除糾正, Reed-Solomon 碼的公知高效實(shí)現(xiàn)使用如在 L. Rizzo 的 “Effective Erasure Codes for Reliable Computer Communication Protocols (用于可靠的計(jì)算機(jī)通信協(xié)議的有效擦除碼)”,計(jì)算機(jī)通信評論27 O):對-36(1997年4月)(下文稱為“Rizzo”)以及Bloemer等人的“An XOR-Based Erasure-Resilient Coding Scheme (基于異或的擦除回彈編碼方案)”, 技術(shù)報(bào)告TR-95-48,國際計(jì)算機(jī)科學(xué)協(xié)會(huì),加利福尼亞州伯克利市(1995年)(下文稱為 "XOR-Reed-Solomon")中或別處描述的柯西(Cauchy)或范德蒙(Vandermonde)矩陣。FEC碼的其他示例包括LDPC碼、諸如Luby I中描述的那些之類的鏈?zhǔn)椒磻?yīng)碼、以及諸如Siokrollahi I中的多級鏈?zhǔn)椒磻?yīng)碼。用于Reed-Solomon碼的變體的FEC解碼過程的示例在Rizzo和XOR-Reed-Solomon中描述。在那些示例中,解碼可在已接收到充分的源數(shù)據(jù)分組和修復(fù)數(shù)據(jù)分組之后應(yīng)用。解碼過程可能是計(jì)算密集的,且取決于可用的CPU資源,解碼過程可能要花費(fèi)與塊中的媒體所跨越的時(shí)間長度成比例的相當(dāng)多的時(shí)間來完成。接收機(jī)在演算開始接收媒體流與播出該媒體之間所需的延遲時(shí)可以計(jì)及解碼所需的該時(shí)間長度。由于解碼造成的該延遲被用戶感知為其對特定媒體流的請求與開始回放之間的延遲。因此希望使該延遲最小化。在許多應(yīng)用中,分組可被進(jìn)一步細(xì)分成對其應(yīng)用FEC過程的碼元。分組可包含一個(gè)或更多個(gè)碼元(或者不足一個(gè)碼元,但通常碼元不會(huì)被跨分組群拆分,除非已知分組群之間的差錯(cuò)條件是高度相關(guān)的)。碼元可具有任何大小,但碼元的大小往往至多等于分組的大小。源碼元是編碼要傳送的數(shù)據(jù)的那些碼元。修復(fù)碼元是直接或間接地從源碼元生成的作為源碼元的補(bǔ)充的碼元(即,若全部源碼元都可用且沒有任何修復(fù)碼元可用,也能完全恢復(fù)出要傳送的數(shù)據(jù))。一些FEC碼可以是基于塊的,因?yàn)榫幋a操作取決于塊中的碼元并且可獨(dú)立于不在該塊中的碼元。通過基于塊的編碼,F(xiàn)EC編碼器可從塊中的源碼元生成該塊的修復(fù)碼元,隨后繼續(xù)前往下一個(gè)塊且無需參考除了正被編碼的當(dāng)前塊的源碼元以外的其他源碼元。在傳輸中,包括源碼元的源塊可由包括經(jīng)編碼碼元(其可以是一些源碼元、一些修復(fù)碼元或兩者)的經(jīng)編碼塊來表示。在存在修復(fù)碼元的情況下,在每個(gè)經(jīng)編碼塊中,并非所有源碼元都是需要的。對于一些FEC碼,特別是Reed-Solomon碼,編碼和解碼時(shí)間可能會(huì)隨著每源塊的經(jīng)編碼碼元數(shù)目的增長而增長到不切實(shí)際的地步。因此,在實(shí)踐中,每源塊能生成的經(jīng)編碼碼元總數(shù)往往存在切合實(shí)際的上限0 是一些應(yīng)用的大致的切合實(shí)際的上限),尤其是在由定制硬件執(zhí)行Reed-Solomon編碼或解碼過程的典型情形中,例如,使用作為DVB-H標(biāo)準(zhǔn)的一部分被包括的Reed-Solomon碼來保護(hù)流以對抗分組丟失的MPE-FEC過程是在蜂窩電話內(nèi)的專門硬件中實(shí)現(xiàn)的,其限于每源塊總共有255個(gè)Reed-Solomon經(jīng)編碼碼元。由于往往要求將碼元放入分開的分組有效載荷中,因此這對正被編碼的源塊的最大長度設(shè)置了切合實(shí)際的上限。例如,若分組有效載荷限于IOM字節(jié)或更少且每個(gè)分組攜帶一個(gè)經(jīng)編碼碼元,則經(jīng)編碼源塊可至多為255千字節(jié),并且這對于源塊本身的大小當(dāng)然也是上限。諸如能夠足夠快地解碼源塊以跟上源流送速率、使由FEC解碼引入的解碼等待時(shí)間最小化、以及在FEC解碼期間的任何時(shí)間點(diǎn)僅使用接收設(shè)備上可用CPU的一小部分等其他關(guān)注點(diǎn)由本文中描述的元素來解決和應(yīng)付。需要提供穩(wěn)健和可伸縮的流送投遞解決方案,其允許系統(tǒng)的組件發(fā)生故障而不會(huì)不利地影響投遞給接收機(jī)的流的質(zhì)量。塊請求流送系統(tǒng)需要支持對呈現(xiàn)的結(jié)構(gòu)或元數(shù)據(jù)的改變,例如對可用媒體編碼的數(shù)目的改變或是對媒體編碼的參數(shù)(諸如比特率、分辨率、縱橫比、音頻或視頻編解碼器或編解碼參數(shù))的改變,或是對諸如URL之類的與內(nèi)容文件相關(guān)聯(lián)的其他元數(shù)據(jù)的改變。此類改變可能是出于多個(gè)原因而必需的,包括將較大呈現(xiàn)的諸如廣告或不同段之類的來自不同源的內(nèi)容編輯在一起,作為例如由于配置改變、裝備故障或從裝備故障恢復(fù)或其他原因造成的服務(wù)基礎(chǔ)設(shè)施改變的結(jié)果而變得必要的對URL或其他參數(shù)的修改。存在可由持續(xù)更新的播放列表文件來控制呈現(xiàn)的方法。由于該文件被持續(xù)更新,因此以上描述的至少一些改變能在這些更新中作出。常規(guī)方法的缺點(diǎn)在于客戶端設(shè)備必須不斷地檢索(也稱為“輪詢”)播放列表文件,從而對服務(wù)基礎(chǔ)設(shè)施造成負(fù)荷,并且該文件可能沒有被高速緩存得比更新間隔更久,從而使得服務(wù)基礎(chǔ)設(shè)施的任務(wù)困難得多。這由本文中的元素來解決,從而在無需由客戶端對元數(shù)據(jù)文件進(jìn)行不斷輪詢的情況下提供以上描述的這種的更新。典型地從廣播分發(fā)中知曉的尤其存在于實(shí)況服務(wù)中的另一問題是缺乏供用戶觀看在比用戶加入節(jié)目的時(shí)間早時(shí)廣播的內(nèi)容的能力。典型地,本地個(gè)人錄制消耗不必要的本地存儲(chǔ),或者在客戶端沒有調(diào)諧到該節(jié)目或受到內(nèi)容保護(hù)條例禁止時(shí)不可能進(jìn)行本地個(gè)人錄制。網(wǎng)絡(luò)錄制和時(shí)移觀看是優(yōu)選的,但要求用戶與服務(wù)器的個(gè)體連接以及與實(shí)況服務(wù)分開的投遞協(xié)議和基礎(chǔ)設(shè)施,從而造成重復(fù)的基礎(chǔ)設(shè)施和顯著的服務(wù)器成本。這也由本文中描述的元素來解決。系統(tǒng)概覽參照圖1描述本發(fā)明的一個(gè)實(shí)施例,圖1示出了實(shí)施本發(fā)明的塊請求流送系統(tǒng)的簡化圖。在圖1中,解說了塊流送系統(tǒng)100,其包括塊供應(yīng)基礎(chǔ)設(shè)施(“BSI”)101,BSI 101 又包括攝取系統(tǒng)103,其用于攝取內(nèi)容102、制備該內(nèi)容并將其打包以通過將其存儲(chǔ)在攝取系統(tǒng)103和HTTP流送服務(wù)器104兩者均可訪問的內(nèi)容存儲(chǔ)110中來由HTTP流送服務(wù)器 104供應(yīng)。如圖所示,系統(tǒng)100還可包括HTTP高速緩存106。在操作中,諸如HTTP流送客戶端之類的客戶端108向HTTP流送服務(wù)器104發(fā)送請求112并從HTTP流送服務(wù)器104或 HTTP高速緩存106接收響應(yīng)114。在每種情形中,圖1中所示的元素可至少部分地在軟件中實(shí)現(xiàn),其中包括在處理器或其他電子器件上執(zhí)行的程序代碼。內(nèi)容可包括電影、音頻、2D平面視頻、3D視頻、其他類型的視頻、圖像、定時(shí)文本、 定時(shí)元數(shù)據(jù)或類似物。一些內(nèi)容可涉及要以定時(shí)方式呈現(xiàn)或消費(fèi)的數(shù)據(jù),諸如用于隨正被播出的其他媒體一起呈現(xiàn)輔助信息(臺(tái)標(biāo)識(shí)、廣告、股價(jià)、Flash 序列等)的數(shù)據(jù)。也可以使用組合其他媒體和/或超越僅音頻和視頻的其他混合呈現(xiàn)。如圖2中所示,媒體塊可被存儲(chǔ)在塊供應(yīng)基礎(chǔ)設(shè)施101 (1)內(nèi),其可以是例如HTTP 服務(wù)器、內(nèi)容投遞網(wǎng)絡(luò)設(shè)備、HTTP代理、FTP代理或服務(wù)器、或其他某種媒體服務(wù)器或系統(tǒng)。 塊供應(yīng)基礎(chǔ)設(shè)施101 (1)連接到網(wǎng)絡(luò)122,網(wǎng)絡(luò)122可以是例如諸如因特網(wǎng)之類的網(wǎng)際協(xié)議 (“IP”)網(wǎng)絡(luò)。塊請求流送系統(tǒng)客戶端被示為具有6個(gè)功能組件,即塊選擇器123,其被提供以上描述的元數(shù)據(jù)并執(zhí)行從由該元數(shù)據(jù)指示的多個(gè)可用塊之中選擇要請求的塊或部分塊的功能;塊請求器124,其接收來自塊選擇器123的請求指令并執(zhí)行在網(wǎng)絡(luò)122上向塊供應(yīng)基礎(chǔ)設(shè)施101(1)發(fā)送對指定塊、塊的部分、或多個(gè)塊的請求以及接收包括該塊的數(shù)據(jù)作為回復(fù)所必要的操作;以及塊緩沖器125 ;緩沖監(jiān)視器126 ;媒體解碼器127 ;以及促成媒體消費(fèi)的一個(gè)或更多個(gè)媒體換能器128。由塊請求器IM接收到的塊數(shù)據(jù)被傳遞到存儲(chǔ)媒體數(shù)據(jù)的塊緩沖器125進(jìn)行臨時(shí)存儲(chǔ)。替換地,接收到的塊數(shù)據(jù)可如圖1中所示地被直接存儲(chǔ)到塊緩沖器125中。媒體解碼器127由塊緩沖器125來提供媒體數(shù)據(jù)并對該數(shù)據(jù)執(zhí)行向媒體換能器1 提供合適的輸入所必要的變換,媒體換能器128以適合用戶或其他消費(fèi)的形式來渲染該媒體。媒體換能器的示例包括諸如存在于移動(dòng)電話、計(jì)算機(jī)系統(tǒng)或電視中的那些之類的視覺顯示設(shè)備,并且還可包括諸如揚(yáng)聲器或頭戴式送受話器之類的音頻渲染設(shè)備。媒體解碼器的示例可以是將在H. 264視頻編碼標(biāo)準(zhǔn)中描述的格式的數(shù)據(jù)變換成視頻幀的模擬或數(shù)字表示(諸如每一幀或樣本有相關(guān)聯(lián)的呈現(xiàn)時(shí)戳的YUV格式像素映射) 的功能。緩沖監(jiān)視器1 接收關(guān)于塊緩沖器125的內(nèi)容的信息,并且基于該信息以及可能還有其他信息向塊選擇器123提供輸入,該輸入被用來確定對要請求的塊的選擇,如本文中所描述的。在本文中使用的術(shù)語中,每個(gè)塊具有“播出時(shí)間”或“歷時(shí)”,其表示接收機(jī)以正常速度播放該塊中所包括的媒體要花的時(shí)間量。在一些情形中,塊內(nèi)的媒體的播出可能依賴于已接收到來自先前塊的數(shù)據(jù)。在罕見的情形中,塊中的一些媒體的播出可能依賴于后續(xù)塊,在這種情形中,塊的播出時(shí)間是參照該塊內(nèi)不參照后續(xù)塊就能播出的媒體來定義的,且后續(xù)塊的播出時(shí)間增大該塊內(nèi)只能在已接收到該后續(xù)塊之后才能播出的媒體的播出時(shí)間。 由于在塊中包括依賴于后續(xù)塊的媒體是罕見的情形,因此在本公開的其余部分中,假定一個(gè)塊中的媒體不依賴于后續(xù)塊,但是應(yīng)注意,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到這種變形可被輕易地添加到以下描述的實(shí)施例。接收機(jī)可具有諸如“暫?!?、“快進(jìn)”、“倒退”等控制,這些控制可導(dǎo)致塊通過以不同速率播放來被消費(fèi),但是若接收機(jī)能獲得并解碼每個(gè)連貫的塊序列的集總時(shí)間等于或少于排除該序列中的最末塊情況下的集總播放時(shí)間,則接收機(jī)能不停滯地向用戶呈現(xiàn)該媒體。 在本文中的一些描述中,媒體流中的特定位置被稱為該媒體中的特定“時(shí)間”,其對應(yīng)于媒體播出的開始與到達(dá)視頻流中的該特定位置的時(shí)間之間會(huì)流逝的時(shí)間。媒體流中的時(shí)間或位置是常規(guī)概念。例如,在視頻流包括M幀每秒的場合,第一幀可以被稱為具有t = 0. 0 秒的位置或時(shí)間,且第241幀可被稱為具有t = 10.0秒的位置或時(shí)間。自然,在基于幀的視頻流中,位置或時(shí)間無需是連續(xù)的,因?yàn)樵摿髦袕牡?41幀的第一比特直至第242幀的第一比特之前的每個(gè)比特可以全都具有相同的時(shí)間值。采用以上術(shù)語,塊請求流送系統(tǒng)(BRSQ包括向一個(gè)或更多個(gè)內(nèi)容服務(wù)器(例如, HTTP服務(wù)器、FTP服務(wù)器等)作出請求的一個(gè)或更多個(gè)客戶端。攝取系統(tǒng)包括一個(gè)或更多個(gè)攝取處理器,其中攝取處理器(實(shí)時(shí)地或非實(shí)時(shí)地)接收內(nèi)容,處理該內(nèi)容以供BRSS使用并將該內(nèi)容以及可能還連同由攝取處理器生成的元數(shù)據(jù)一起存儲(chǔ)在內(nèi)容服務(wù)器可訪問的存儲(chǔ)中。BRSS還可包含與內(nèi)容服務(wù)器協(xié)作的內(nèi)容高速緩存。內(nèi)容服務(wù)器和內(nèi)容高速緩存可以是常規(guī)的HTTP服務(wù)器和HTTP高速緩存,它們接收包括URL的HTTP請求形式的對文件或段的請求,并且這些請求還可包括字節(jié)范圍以請求不足由該URL指示的文件或段的全部。 客戶端可包括常規(guī)的HTTP客戶端,其作出對HTTP服務(wù)器的請求并且處置對這些請求的響應(yīng),其中HTTP客戶端由編制請求、將它們傳遞給HTTP客戶端、獲取來自HTTP客戶端的響應(yīng)并處理這些響應(yīng)(或存儲(chǔ)、變換等)以將它們提供給呈現(xiàn)播放器供客戶端設(shè)備播出的新穎客戶端系統(tǒng)驅(qū)動(dòng)。典型地,客戶端系統(tǒng)事先并不知道將需要什么媒體(因?yàn)樵撔枰赡苋Q于用戶輸入、用戶輸入的改變等),因此其被稱為“流送”系統(tǒng),因?yàn)槊襟w是一旦被接收到或此后不久就被“消費(fèi)”的。結(jié)果,響應(yīng)延遲和帶寬約束可能導(dǎo)致呈現(xiàn)的延遲,諸如當(dāng)流追趕用戶正消費(fèi)該呈現(xiàn)時(shí)所在之處時(shí)造成呈現(xiàn)的暫停。
為了提供被感知為有良好質(zhì)量的呈現(xiàn),可在BRSS中在客戶端或在攝取端或在這兩者處實(shí)現(xiàn)多個(gè)細(xì)節(jié)。在一些情形中,所實(shí)現(xiàn)的細(xì)節(jié)是考慮并為應(yīng)對網(wǎng)絡(luò)上的客戶端-服務(wù)器接口來進(jìn)行的。在一些實(shí)施例中,客戶端系統(tǒng)和攝取系統(tǒng)兩者皆知曉該增強(qiáng),而在其他實(shí)施例中,僅一側(cè)知曉該增強(qiáng)。在此類實(shí)施例中,即使一側(cè)并不知曉該增強(qiáng),整個(gè)系統(tǒng)也會(huì)受益于該增強(qiáng),而在其他實(shí)施例中,該效益僅在兩側(cè)皆知曉該增強(qiáng)的情況下才發(fā)生,但在一側(cè)不知曉時(shí),其仍無故障地操作。如圖3中解說的,根據(jù)各種實(shí)施例,攝取系統(tǒng)可實(shí)現(xiàn)為硬件與軟件組件的組合。攝取系統(tǒng)可包括可被執(zhí)行以導(dǎo)致系統(tǒng)執(zhí)行本文中討論的任何一種或更多種方法的指令集。該系統(tǒng)可實(shí)現(xiàn)為計(jì)算機(jī)形式的專門機(jī)器。該系統(tǒng)可以是服務(wù)器計(jì)算機(jī)、個(gè)人計(jì)算機(jī)(PC)、或能夠執(zhí)行指定要由該系統(tǒng)采取的行動(dòng)的指令集(順序或以其他方式)的任何系統(tǒng)。此外,雖然僅示出了單個(gè)系統(tǒng),但是術(shù)語“系統(tǒng)”還應(yīng)被視為包括任何系統(tǒng)集合,這些系統(tǒng)個(gè)體地或聯(lián)合地執(zhí)行指令集(或多個(gè)指令集)以執(zhí)行本文中所討論的任何一種或更多種方法。攝取系統(tǒng)可包括攝取處理器302(例如,中央處理單元(CPU))、可存儲(chǔ)執(zhí)行期間的程序代碼的存儲(chǔ)器304、以及盤存儲(chǔ)306,所有這些均經(jīng)由總線300彼此通信。該系統(tǒng)可進(jìn)一步包括視頻顯示單元308(例如,液晶顯示器(LCD)或陰極射線管(CRT))。該系統(tǒng)還可包括字母數(shù)字輸入設(shè)備310(例如,鍵盤)、以及用于接收內(nèi)容源并投遞內(nèi)容存儲(chǔ)的網(wǎng)絡(luò)接口設(shè)備312。盤存儲(chǔ)單元306可包括其上可存儲(chǔ)實(shí)施本文中所描述的任何一個(gè)或更多個(gè)方法或功能的一個(gè)或更多個(gè)指令集(例如,軟件)的機(jī)器可讀介質(zhì)。這些指令在其被系統(tǒng)執(zhí)行期間還可完全或至少部分地駐留在存儲(chǔ)器304內(nèi)和/或攝取處理器302內(nèi),其中存儲(chǔ)器304 和攝取處理器302也構(gòu)成機(jī)器可讀介質(zhì)。如圖4中解說的,根據(jù)各種實(shí)施例,客戶端系統(tǒng)可實(shí)現(xiàn)為硬件與軟件組件的組合。 客戶端系統(tǒng)可包括能被執(zhí)行以導(dǎo)致系統(tǒng)執(zhí)行本文中討論的任何一種或更多種方法的指令集。該系統(tǒng)可實(shí)現(xiàn)為計(jì)算機(jī)形式的專門機(jī)器。該系統(tǒng)可以是服務(wù)器計(jì)算機(jī)、個(gè)人計(jì)算機(jī) (PC)、或能夠執(zhí)行指定要由該系統(tǒng)采取的行動(dòng)的指令集(順序或以其他方式)的任何系統(tǒng)。 此外,雖然僅示出了單個(gè)系統(tǒng),但是術(shù)語“系統(tǒng)”還應(yīng)被視為包括任何系統(tǒng)集合,這些系統(tǒng)個(gè)體地或聯(lián)合地執(zhí)行指令集(或多個(gè)指令集)以執(zhí)行本文中所討論的任何一種或更多種方法??蛻舳讼到y(tǒng)可包括客戶端處理器402(例如,中央處理單元(CPU))、可存儲(chǔ)執(zhí)行期間的程序代碼的存儲(chǔ)器404、以及盤存儲(chǔ)406,所有這些均經(jīng)由總線400彼此通信。該系統(tǒng)可進(jìn)一步包括視頻顯示單元408(例如,液晶顯示器(LCD)或陰極射線管(CRT))。該系統(tǒng)還可包括字母數(shù)字輸入設(shè)備410(例如,鍵盤)、以及用于發(fā)送請求并接收響應(yīng)的網(wǎng)絡(luò)接口設(shè)備 412。盤存儲(chǔ)單元406可包括其上可存儲(chǔ)實(shí)施本文中所描述的任何一個(gè)或更多個(gè)方法或功能的一個(gè)或更多個(gè)指令集(例如,軟件)的機(jī)器可讀介質(zhì)。這些指令在其被系統(tǒng)執(zhí)行期間還可完全或至少部分地駐留在存儲(chǔ)器404內(nèi)和/或客戶端處理器402內(nèi),其中存儲(chǔ)器 404和客戶端處理器402也構(gòu)成機(jī)器可讀介質(zhì)。3GPP文件格式的使用3GPP文件格式或基于ISO基媒體文件格式(諸如MP4文件格式或3GPP2文件格式)的任何其他文件可被用作具有以下特征的用于HTTP流送的容器格式。每個(gè)段中可包括段索引以信令通知時(shí)間偏移量和字節(jié)范圍,以使得客戶端能下載如所需的恰適文件片或媒體段。整個(gè)媒體呈現(xiàn)的全局呈現(xiàn)時(shí)基和每個(gè)3GP文件或媒體段內(nèi)的局部時(shí)基可準(zhǔn)確地對準(zhǔn)。一個(gè)3GP文件或媒體段內(nèi)的各個(gè)軌跡可被準(zhǔn)確地對準(zhǔn)??绺鱾€(gè)表示的各個(gè)軌跡也可通過將它們之中的每個(gè)指派到全局時(shí)間線來對準(zhǔn),以使得跨表示的切換可以是無縫的,并且不同表示中的媒體分量的聯(lián)合呈現(xiàn)可以同步。文件格式可包含具有以下性質(zhì)的用于自適應(yīng)流送的簡檔。所有電影數(shù)據(jù)可被包含在電影片斷中——“moov”包可以不包含任何樣本信息。音頻和視頻樣本數(shù)據(jù)可以按與如 TS26. 244中規(guī)定的對漸進(jìn)式下載簡檔的要求類似的要求來被交織。“moov”包可被放在文件開頭處,繼之以也被稱為段索引的片斷偏移量數(shù)據(jù),其包含該包容段中的每個(gè)片斷或者至少片斷子集的時(shí)間偏移量信息以及字節(jié)范圍。還有可能使媒體呈現(xiàn)描述引用跟隨在存在的漸進(jìn)式下載簡檔之后的文件。在這種情形中,客戶端可使用媒體呈現(xiàn)描述簡單地從多個(gè)可用版本之中選擇恰適的替換版本??蛻舳艘部蓪槕?yīng)于漸進(jìn)式下載簡檔的文件使用HTTP部分獲取請求以請求每個(gè)替換版本的子集并藉此實(shí)現(xiàn)效率略低的形式的自適應(yīng)流送。在這種情形中,包含漸進(jìn)式下載簡檔中的媒體的不同表示仍可遵守共同的全局時(shí)間線以使得能夠進(jìn)行跨表示的無縫切換。高級方法概覽在以下小節(jié)中,描述了用于改進(jìn)的塊請求流送系統(tǒng)的方法。應(yīng)理解,這些改進(jìn)中的一些改進(jìn)可在有或沒有這些改進(jìn)中的其他改進(jìn)的情況下使用,這取決于應(yīng)用的需要。在一般操作中,接收機(jī)向服務(wù)器或其他發(fā)射機(jī)作出對特定數(shù)據(jù)塊或數(shù)據(jù)塊部分的請求。也被稱為段的文件可包含多個(gè)塊并且與媒體呈現(xiàn)的一個(gè)表示相關(guān)聯(lián)。優(yōu)選地,生成也被稱為“段索引”或“段映射”的索引信息,其提供從播出或解碼時(shí)間至段內(nèi)相應(yīng)的塊或片斷的字節(jié)偏移量的映射。該段索引可被包括在段內(nèi),典型地在段開頭處(至少一些段映射在開頭處)且往往很小。段索引也可被設(shè)在單獨(dú)的索引段或文件中。尤其是在段索引被包含在該段中的情形中,接收機(jī)可迅速下載此段映射的一些或全部, 并隨后將其用來確定時(shí)間偏移量與文件內(nèi)同這些時(shí)間偏移量相關(guān)聯(lián)的片斷的相應(yīng)字節(jié)位置之間的映射。接收機(jī)可使用字節(jié)偏移量來請求來自與特定時(shí)間偏移量相關(guān)聯(lián)的片斷的數(shù)據(jù),而不必下載與同感興趣的時(shí)間偏移量無關(guān)聯(lián)的其他片斷相關(guān)聯(lián)的全部數(shù)據(jù)。以此方式,段映射或段索引能極大地增進(jìn)接收機(jī)直接訪問段中與感興趣的當(dāng)前時(shí)間偏移量有關(guān)的部分的能力,其效益包括改善的內(nèi)容換臺(tái)時(shí)間、在網(wǎng)絡(luò)條件變化時(shí)從一個(gè)表示迅速換到另一表示的能力、以及減少浪費(fèi)網(wǎng)絡(luò)資源來下載沒有在接收機(jī)處播出的媒體。在考慮從一個(gè)表示(本文中稱為“切換自,,的表示)切換到另一表示(本文中稱為“切換到”的表示)的情形中,還可使用段索引來標(biāo)識(shí)“切換到”的表示中的隨機(jī)訪問點(diǎn)的開始時(shí)間,從而標(biāo)識(shí)在“切換自,,的表示中要請求以確保無縫切換的數(shù)據(jù)量,此無縫切換的意義是指“切換自,,的表示中的媒體被下載到直至使得對“切換到”的表示的播出能從該隨機(jī)訪問點(diǎn)無縫地開始的呈現(xiàn)時(shí)間。這些塊代表請求方接收機(jī)為了生成給該接收機(jī)的用戶的輸出所需要的視頻媒體或其他媒體的段。媒體的接收機(jī)可以是客戶端設(shè)備,諸如當(dāng)接收機(jī)從傳送內(nèi)容的服務(wù)器接收內(nèi)容時(shí)。示例包括機(jī)頂盒、計(jì)算機(jī)、游戲機(jī)、特殊裝備的電視、手持設(shè)備、特殊裝備的移動(dòng)電話、或其他客戶端接收機(jī)。本文中描述了許多高級的緩沖管理方法。例如,緩沖管理方法使得客戶端能請求可及時(shí)接收以連續(xù)播出的具有最高媒體質(zhì)量的塊??勺儔K大小特征提高了壓縮效率。具有多個(gè)連接以用于向請求方設(shè)備傳送塊而同時(shí)限制請求頻度的能力提供了改善的傳輸性能。 部分收到的數(shù)據(jù)塊可被用來繼續(xù)媒體呈現(xiàn)??梢詾槎鄠€(gè)塊重用連接而不必在一開始就承諾由該連接負(fù)責(zé)特定的一組塊。改善了由多個(gè)客戶端從多個(gè)可能的服務(wù)器之中選擇服務(wù)器的一致性,這減少了近旁服務(wù)器中內(nèi)容重復(fù)的頻度并且提高了服務(wù)器包含整個(gè)文件的概率。 客戶端可基于嵌入在關(guān)于包含媒體塊的文件的URL中的元數(shù)據(jù)(諸如可用媒體編碼)來請求這些媒體塊。系統(tǒng)可提供對在能開始內(nèi)容播而不會(huì)在媒體播出中招致后續(xù)暫停之前所需的緩沖時(shí)間量的演算和最小化??梢栽诙鄠€(gè)媒體塊之間共享可用帶寬,隨著每個(gè)塊的播出時(shí)間逼近而進(jìn)行調(diào)節(jié),從而在必要的情況下較大份額的可用帶寬可有傾向性地被分配給具有最接近播出時(shí)間的塊。HTTP流送可采用元數(shù)據(jù)。呈現(xiàn)級元數(shù)據(jù)包括例如流歷時(shí)、可用編碼(比特率、編解碼器、空間分辨率、幀率、語言、媒體類型)、指向每種編碼的流元數(shù)據(jù)的指針、以及內(nèi)容保護(hù) (數(shù)字版權(quán)管理(DRM)信息)。流元數(shù)據(jù)可以是關(guān)于段文件的URL。段元數(shù)據(jù)可包括字節(jié)范圍對時(shí)間信息以用于段內(nèi)請求以及標(biāo)識(shí)隨機(jī)訪問點(diǎn)(RAP) 或其他查找點(diǎn),其中該信息中的一些或全部可以是段索引或段映射的一部分。流可包括對相同內(nèi)容的多種編碼。每種包括隨后可被分解成段,其中每一段對應(yīng)于存儲(chǔ)單位或文件。在HTTP的情形中,段典型地是能由URL引用的資源,并且對此類URL的請求導(dǎo)致返回該段作為請求響應(yīng)消息的實(shí)體主體。段可包括多個(gè)畫面群(GoP)。每個(gè)GoP 可進(jìn)一步包括多個(gè)片斷,其中段索引提供關(guān)于每個(gè)片斷的時(shí)間/字節(jié)偏移量信息,即索引的單位是片斷??赏ㄟ^并行的TCP連接來請求片斷或片斷部分以提高吞吐量。這可以緩解在共享瓶頸鏈路上的連接時(shí)或者在連接由于擁塞而丟失時(shí)產(chǎn)生的問題,由此提高投遞的總體速度和可靠性,這能明顯改善內(nèi)容換臺(tái)時(shí)間的速度和可靠性??梢越逵蛇^度請求用帶寬換等待時(shí)間,但是應(yīng)注意避免作出對太遠(yuǎn)的將來的請求,這會(huì)增加匱乏風(fēng)險(xiǎn)。對相同服務(wù)器上的段的多個(gè)請求可被管線化(在當(dāng)前請求完成之前作出下一請求)以避免反復(fù)的TCP啟動(dòng)延遲。對連貫片斷的請求可被聚集成一個(gè)請求。一些CDN偏好大文件并且可在首次看到范圍請求時(shí)觸發(fā)從原始服務(wù)器來后臺(tái)取回整個(gè)文件。然而,絕大多數(shù)CDN將從高速緩存來服務(wù)范圍請求——若數(shù)據(jù)可用。因此,使客戶端請求的某個(gè)部分針對整個(gè)段文件可能是有利的。若有必要,這些請求可在以后被取消。有效切換點(diǎn)可以是目標(biāo)流中的查找點(diǎn),具體而言例如是RAP。不同的實(shí)現(xiàn)是可能的,諸如固定GoP結(jié)構(gòu)或跨流的RAP對準(zhǔn)(基于媒體的開頭或基于GoP)。在一個(gè)實(shí)施例中,段和GoP可跨不同速率的流對準(zhǔn)。在該實(shí)施例中,GoP可具有可變大小并且可包含多個(gè)片斷,但片斷在這些不同速率的流之間并不對準(zhǔn)。在一些實(shí)施例中,可有利地采用文件冗余性。在這些實(shí)施例中,對每個(gè)片斷應(yīng)用擦除碼以生成該數(shù)據(jù)的冗余版本。優(yōu)選地,源格式化不因使用FEC而改變,且可作為攝取系統(tǒng)中的附加步驟生成包含F(xiàn)EC修復(fù)數(shù)據(jù)的例如作為源表示的從屬表示的附加修復(fù)段并使其可用。僅使用片斷的源數(shù)據(jù)就能夠重構(gòu)該片斷的客戶端可僅向服務(wù)器請求該段內(nèi)的該片斷的源數(shù)據(jù)。若服務(wù)器不可用或者與服務(wù)器的連接較慢——這可能是在請求源數(shù)據(jù)之前或之后確定的,則可請求來自修復(fù)段的關(guān)于該片斷的附加修復(fù)數(shù)據(jù),這減少了用于可靠地投遞足以恢復(fù)該片斷的數(shù)據(jù)的時(shí)間,從而有可能使用FEC解碼以使用收到的源數(shù)據(jù)和修復(fù)數(shù)據(jù)的組合來恢復(fù)該片斷的源數(shù)據(jù)。此外,若片斷變得緊急,即其播出時(shí)間變得迫近,則可以請求附加修復(fù)數(shù)據(jù)以允許恢復(fù)該片斷,這增加了鏈路上用于該片斷的數(shù)據(jù)份額,但比關(guān)掉該鏈路上的其他連接以釋放帶寬更高效。這還可以緩解由于使用并行連接造成的匱乏風(fēng)險(xiǎn)。片斷格式可以是存儲(chǔ)著的具有通過實(shí)時(shí)傳輸控制協(xié)議RTCP達(dá)成的音頻/視頻同步的實(shí)時(shí)傳輸協(xié)議(RTP)分組流。段格式也可以是存儲(chǔ)著的具有通過MPEG-2TS內(nèi)部時(shí)基達(dá)成的音頻/視頻同步的 MPEG-2TS分組流。使用信令和/或塊創(chuàng)津來使流送更高效在塊請求流送系統(tǒng)中可以使用或不使用數(shù)種特征以提供改善的性能。性能可涉及不停滯地播出呈現(xiàn)、在帶寬約束內(nèi)獲得媒體數(shù)據(jù)、和/或在客戶端、服務(wù)器和/或攝取系統(tǒng)處有限的處理器資源內(nèi)這樣做的能力?,F(xiàn)在將描述這些特征中的一些。段內(nèi)的索引為了編制對電影片斷的部分獲取請求,可向客戶端告知文件或段內(nèi)的片斷中所包含的所有媒體分量在解碼或呈現(xiàn)時(shí)間的字節(jié)偏移量和開始時(shí)間、以及還有哪些片斷始于或包含隨機(jī)訪問點(diǎn)(且因此適合用作替換表示之間的切換點(diǎn)),其中該信息往往被稱為段索引或段映射。在解碼或呈現(xiàn)時(shí)間的開始時(shí)間可直接表達(dá)或者可表達(dá)為相對于參考時(shí)間的 Δ。該時(shí)間和字節(jié)偏移量索引信息可能每電影片斷需要至少8字節(jié)數(shù)據(jù)。作為示例, 對于具有500ms電影片斷的單個(gè)文件內(nèi)所包含的2小時(shí)電影,這將會(huì)是總共約112千字節(jié)數(shù)據(jù)。在開始呈現(xiàn)時(shí)下載該數(shù)據(jù)的全部可能導(dǎo)致顯著的附加啟動(dòng)延遲。然而,該時(shí)間和字節(jié)偏移量數(shù)據(jù)可被階層式編碼,從而客戶端能迅速找到與呈現(xiàn)中希望開始的點(diǎn)有關(guān)的小時(shí)間塊和偏移量數(shù)據(jù)。該信息也可分布在段內(nèi),以使得對段索引的某種細(xì)化可與媒體數(shù)據(jù)交織地放置。注意,若表示是按時(shí)間分段成多個(gè)段的,則使用該階層式編碼可能是不必要的,因?yàn)槊總€(gè)段的完整的時(shí)間和偏移量數(shù)據(jù)可能已經(jīng)十分小。例如,若段是一分鐘而非以上示例中的2小時(shí),則時(shí)間-字節(jié)偏移量索引信息約為1千字節(jié)數(shù)據(jù),其通??裳b進(jìn)單個(gè)TCP/IP 分組內(nèi)。有不同選項(xiàng)可能用于向3GPP文件添加片斷時(shí)間和字節(jié)偏移量數(shù)據(jù)首先,可出于此目的使用電影片斷隨機(jī)訪問包(“MFRA”)。MFRA提供表,其可輔助讀者使用電影片斷來尋找文件中的隨機(jī)訪問點(diǎn)。為支持該功能,MFRA順帶地包含帶有隨機(jī)訪問點(diǎn)的MFRA包的字節(jié)偏移量。MFRA可被放在文件末尾處或附近,但并非必需如此。通過從文件末尾掃描電影片斷隨機(jī)訪問偏移量包并使用其中的大小信息,就能夠定位到電影片斷隨機(jī)訪問包的開頭。然而,將MFRA放在末尾來進(jìn)行HTTP流送典型地需要至少3到4個(gè) HTTP請求來訪問合意數(shù)據(jù)至少一個(gè)用于從文件末尾請求MFRA,一個(gè)用于獲得MFRA并且最后一個(gè)用于獲得該文件中的合意片斷。因此,放在開頭可能是可取的,因?yàn)檫@樣就可在單個(gè)請求中與第一媒體數(shù)據(jù)一起下載mfra。另外,對HTTP流送使用MFRA可能是效率不高的,因?yàn)椤癕FRA”中除了時(shí)間和moof偏移量以外的其他任何信息都是不需要的,且指定偏移量而非長度可能需要更多比特。其次,可以使用項(xiàng)定位包(ILOC)。“IL0C”通過定位元數(shù)據(jù)資源的包容文件、它們在該文件內(nèi)的偏移量及其長度來提供該文件或其他文件中的元數(shù)據(jù)資源的目錄。例如,系統(tǒng)可將所有被外部引用的元數(shù)據(jù)資源整合到一個(gè)文件中,相應(yīng)地重新調(diào)整文件偏移量和文件引用。然而,“IL0C”旨在給出元數(shù)據(jù)的位置,因此可能很難使其與真正的元數(shù)據(jù)共存。最后且可能最適合的是規(guī)定稱為時(shí)間索引包(“TIDX”)的新包,其專用于以高效方式提供確切的片斷時(shí)間或歷時(shí)以及字節(jié)偏移量。這在下節(jié)中更詳細(xì)地描述。具有相同功能性的替換包可以是段索引包(“SIDX”)。在本文中,除非另行指出,否則這兩者可以是可互換的,因?yàn)閮煞N包皆提供了以高效方式提供確切的片斷時(shí)間或歷時(shí)以及字節(jié)偏移量的能力。以下提供TIDX與SIDX之間的差異。如何互換TIDX包和SIDX包應(yīng)當(dāng)是明顯的,因?yàn)檫@兩種包均實(shí)現(xiàn)段索引。段索引段具有標(biāo)識(shí)出的開始時(shí)間和標(biāo)識(shí)出的字節(jié)數(shù)。多個(gè)片斷可被級聯(lián)成單個(gè)段,且客戶端可發(fā)出標(biāo)識(shí)該段內(nèi)與所請求的片斷或片斷子集相對應(yīng)的具體字節(jié)范圍的請求。例如, 在使用HTTP作為請求協(xié)議時(shí),HTTP范圍頭部可用于此目的。該辦法要求客戶端能訪問該段的“段索引”,其指定不同片斷在該段內(nèi)的位置。該“段索引”可作為元數(shù)據(jù)的一部分來提供。該辦法具有以下結(jié)果與在每個(gè)塊被保持在單獨(dú)的文件中的辦法相比,需要?jiǎng)?chuàng)建和管理的文件少得多。對創(chuàng)建、傳遞和存儲(chǔ)非常大量的文件(比如說對于1小時(shí)呈現(xiàn),其可延伸到好幾千個(gè)文件)的管理可能是復(fù)雜的且容易出錯(cuò),因此減少文件數(shù)量代表著優(yōu)點(diǎn)。若客戶端僅知曉段的較小部分的合意開始時(shí)間,則它可請求整個(gè)文件,隨后從頭至尾讀取該文件以確定恰適的播出起始位置。為了提高帶寬利用率,段可包括索引文件作為元數(shù)據(jù),其中索引文件映射個(gè)體塊的字節(jié)范圍與這些塊所對應(yīng)的時(shí)間范圍,稱為段索引或段映射。該元數(shù)據(jù)可被格式化為XML數(shù)據(jù)或者它們可以是二進(jìn)制的,例如遵循3GPP文件格式的原子和包結(jié)構(gòu)。索引可以是簡單的,其中每個(gè)塊的時(shí)間和字節(jié)范圍相對于文件的開始是絕對的,或者它們可以是階層式的,其中一些塊被編組成父塊(且這些父塊被編組成祖父塊,等等)且給定塊的時(shí)間和字節(jié)范圍是相對于該塊的父塊的時(shí)間和/或字節(jié)范圍來表達(dá)的。示例索引映射結(jié)構(gòu)在一個(gè)實(shí)施例中,媒體流的一個(gè)表示的原始源數(shù)據(jù)可被包含在一個(gè)或更多個(gè)在本文中被稱為“媒體段”的媒體文件中,其中每個(gè)媒體段包含用于回放該媒體的連續(xù)時(shí)間段的媒體數(shù)據(jù),例如5分鐘的媒體回放。圖6示出了媒體段的示例整體結(jié)構(gòu)。在每個(gè)段內(nèi),在源段開頭或遍布整個(gè)源段,還可存在包括時(shí)間/字節(jié)偏移量段映射的索引信息。一個(gè)實(shí)施例中的時(shí)間/字節(jié)偏移量段映射可以是時(shí)間/字節(jié)偏移量對的列表(τ (0) ,Β(Ο)), (T (1),B (1))、…、(T⑴,B⑴)、…、 (T(n),B(n)),其中T(i-l)代表該段內(nèi)相對于該媒體在所有媒體段中的初始開始時(shí)間用于回放第i個(gè)媒體片斷的開始時(shí)間,T(i)代表第i個(gè)片斷的結(jié)束時(shí)間(且因此代表下一片斷的開始時(shí)間),并且字節(jié)偏移量B(i-l)是該源段內(nèi)相對于該源段開頭第i個(gè)媒體片斷開始之處的數(shù)據(jù)的開頭的相應(yīng)字節(jié)索引,且B(i)是第i個(gè)片斷的相應(yīng)結(jié)束字節(jié)索引(且因此是下一片斷的首個(gè)字節(jié)的索引)。若段包含多個(gè)媒體分量,則可以絕對方式為該段中的每個(gè)分量提供T(i)和B (i),或者它們可相對于用作參考媒體分量的另一媒體分量來表達(dá)。在該實(shí)施例中,源段中的片斷數(shù)目為n,其中η在段與段之間可有所不同。在另一實(shí)施例中,段索引中關(guān)于每個(gè)片斷的時(shí)間偏移量可以用第一片斷的絕對開始時(shí)間以及每個(gè)片斷的歷時(shí)來確定。在這種情形中,段索引可以記載第一片斷的開始時(shí)間以及該段中所包括的所有片斷的歷時(shí)。段索引還可以僅記載片斷子集。在該情形中,段索引記載被定義為一個(gè)或更多個(gè)連貫片斷的子段的歷時(shí),該子段在包容段的末尾或在下一子段的開頭處結(jié)束。對于每個(gè)片斷,還可以有指示該片斷是否始于或包含查找點(diǎn)的值,即在某點(diǎn)處,該點(diǎn)之后的媒體皆不依賴于該點(diǎn)之前的任何媒體,且因此自該片斷前行的媒體能獨(dú)立于先前片斷地播出。查找點(diǎn)一般而言是媒體中能獨(dú)立于所有先前的媒體地開始播出之處的點(diǎn)。圖 6還示出了源段的可能段索引的簡單示例。在該示例中,時(shí)間偏移量值以毫秒為單位,且因此該源段的首個(gè)片斷自該媒體開頭20秒處開始,且首個(gè)片斷具有485毫秒的播出時(shí)間。 首個(gè)片斷的開始的字節(jié)偏移量為0,且首個(gè)片斷的末尾/第二片斷的開始的字節(jié)偏移量為 50,Μ5,且因此首個(gè)片斷的大小為50,245字節(jié)。若片斷或子段并非始于隨機(jī)訪問點(diǎn),但該片斷或子段中包含隨機(jī)訪問點(diǎn),則可以給出開始時(shí)間與實(shí)際RAP時(shí)間之間的解碼時(shí)間或呈現(xiàn)時(shí)間差。這使得在切換到該媒體段的情形中客戶端能準(zhǔn)確地知曉“切換自”的表示需要一直被呈現(xiàn)到的時(shí)間。補(bǔ)充地或代替地,可以使用簡單的或階層式的索引、雛菊鏈索引和/或混合索引。由于不同軌跡的樣本歷時(shí)可能不是相同的(例如,視頻樣本可能播放33ms,而音頻樣本可能持續(xù)80ms),因此電影片斷中的不同軌跡可能不是在正好相同的時(shí)間開始和結(jié)束的,即,音頻可能比視頻略早或略遲開始,而在前一片斷中可能正好是相反情形以作為補(bǔ)償。為避免多義性,在時(shí)間和字節(jié)偏移量數(shù)據(jù)中指定的時(shí)戳可相對于特定軌跡來指定,且此軌跡對于每個(gè)表示可以是相同的軌跡。通常這將是視頻軌跡。這允許客戶端在切換表示時(shí)能確切地標(biāo)識(shí)下一視頻幀。盡管有上述問題,但在呈現(xiàn)期間可注意維持軌跡時(shí)標(biāo)與呈現(xiàn)時(shí)間之間的嚴(yán)格關(guān)系,以確保流暢播出以及維持音頻/視頻同步。圖7解說了一些示例,諸如簡單索引700和階層式索引702。以下提供包含段映射的包的兩個(gè)具體示例,一個(gè)稱為時(shí)間索引包(‘TIDX’’)且一個(gè)稱為(‘SIDX’’)。該定義遵循根據(jù)ISO基媒體文件格式的包結(jié)構(gòu)。用于此類包以定義類似句法且具有相同語義和功能性的其他設(shè)計(jì)對于讀者應(yīng)當(dāng)是明顯的。時(shí)間索引包定義包類型‘tidx,容器文件強(qiáng)制性的否數(shù)量任何數(shù)目0或1
時(shí)間索引包可提供將文件的某些區(qū)域與呈現(xiàn)的某些時(shí)間區(qū)間相關(guān)聯(lián)的一組時(shí)間和字節(jié)偏移量索引。時(shí)間索引包可包括目標(biāo)類型(targettype)字段,其指示所引用的數(shù)據(jù)的類型。例如,具有目標(biāo)類型“moof”的時(shí)間索引包提供在時(shí)間和字節(jié)偏移量兩者意義上對文件中所包含的媒體片斷的索引。具有目標(biāo)類型“時(shí)間索引包(Time Index Box) ”的時(shí)間索引包可被用來構(gòu)造階層式時(shí)間索引,從而允許文件的用戶迅速導(dǎo)航至該索引的所需部分。段索引可例如包含以下句法
aligned(8) class TimeIndexBox extends FullB ox('frai') { unsigned int(32) targettype; unsigned int(32) time—reference_track_ID; unsigned int(32) number—of—elements; unsigned int(64) first一element—offset; unsigned int(64) first—element—time;
for(i=l; i <= number—of—elements; i++) {
bit (1) random_access_flag; unsigned int(31) length; unsigned int(32) deltaT;
}
}語義targettype (目標(biāo)類型)為該時(shí)間索引包引用的包數(shù)據(jù)的類型。它可以是電影片斷頭部("moof")或時(shí)間索引包(“tidx”)。time-reference_track_id(時(shí)間參考軌跡id)指示指定該索引中的時(shí)間偏移量時(shí)參照的軌跡。number_0f_elementS (元素?cái)?shù)目)由該時(shí)間索引包索引的元素的數(shù)目。firstjiementjffset (首個(gè)元素偏移量)首個(gè)被索引的元素自該文件的開始起的字節(jié)偏移量。firSt_element_time (首個(gè)元素時(shí)間)首個(gè)被索引的元素的開始時(shí)間,使用由 “時(shí)間參考軌跡id”標(biāo)識(shí)的軌跡的媒體頭部包中指定的時(shí)標(biāo)。random_access_flag(隨機(jī)訪問標(biāo)志)若元素的開始時(shí)間是隨機(jī)訪問點(diǎn)則為1。 否則為0。length(長度)被索引的元素以字節(jié)計(jì)的長度。deltaT ( Δ T)該元素的開始時(shí)間與下一元素的開始時(shí)間之間的差量,該時(shí)間差是由“時(shí)間參考軌跡id”標(biāo)識(shí)的軌跡的媒體頭部包中指定的時(shí)標(biāo)的形式。段索引包段索引包(‘sidx’)提供對段中的電影片斷和其他段索引包的緊湊索引。段索引包中有兩個(gè)循環(huán)結(jié)構(gòu)。第一循環(huán)記載子段的第一樣本,即由第二循環(huán)引用的第一電影片斷中的樣本。第二循環(huán)提供該子段的索引?!畇idx’包的容器是該文件或直接是段。句法
aligned(8) class SegmentIndexBox extends FullBox('sidx', version, 0) { unsigned int(32) reference—track—ID; unsigned int(16) track_count; unsigned int(16) reference—count;
for (i=l; i<= track count; i++) {
unsigned int(32) track ID;
if (version==0) {
unsigned int(32) decoding_time;
} else {
unsigned int(64) decoding—time;
}
}
for(i=l; i <= reference_count; i++) {
bit (1)reference—type;
unsigned int(31) reference—offset; unsigned int(32) subsegment duration; bit(l)contains—RAP;
unsigned int(31) RAP_delta_time;
}
}語義:
reference_track_ID(參考軌跡ID)提供參考軌跡的軌跡ID。traCk_Coimt (軌跡計(jì)數(shù))接下來的循環(huán)中被索引的軌跡的數(shù)目(1或更大);reference_c0imt (參考計(jì)數(shù))由第二循環(huán)索引的元素的數(shù)目(1或更大);track_ID(軌跡ID)其軌跡片斷被包括在由該索引標(biāo)識(shí)的首個(gè)電影片斷中的那個(gè)軌跡的ID ;該循環(huán)中有恰好一個(gè)“軌跡ID”等于“參考軌跡ID”。decodingjime (解碼時(shí)間)由第二循環(huán)中的第一項(xiàng)引用的電影片斷中由“軌跡 ID”標(biāo)識(shí)的軌跡中的首個(gè)樣本的解碼時(shí)間,以該軌跡的時(shí)標(biāo)來表達(dá)(如在該軌跡的媒體頭部包的時(shí)標(biāo)字段中記載的);referencejype (引用類型)在設(shè)為0時(shí)指示該引用是對電影片斷(‘moof’)包的引用;在設(shè)為1時(shí)指示該引用是對段索引(‘sidx’ )包的引用;referendoffset (引用偏移量)從繼包容段索引包之后的首個(gè)字節(jié)至被引用包的首個(gè)字節(jié)的以字節(jié)計(jì)的距離;subsegmentduration (子段歷時(shí))當(dāng)引用是對段索引包的引用時(shí),該字段攜帶該包的第二循環(huán)中的“子段歷時(shí)”字段的總和;當(dāng)引用是對電影片斷的引用時(shí),該字段攜帶參考軌跡中、所指示的電影片斷以及直至該循環(huán)中的下一條目記載的首個(gè)電影片斷或該子段末尾(取較早者)的后續(xù)電影片斷中的樣本的樣本歷時(shí)總和;該歷時(shí)以該軌跡的時(shí)標(biāo)來表達(dá)(如在該軌跡的媒體頭部包的時(shí)標(biāo)字段中記載的);COntainS_RAP(包含RAP):當(dāng)引用是對電影片斷的引用時(shí),則若該電影片斷內(nèi)“軌跡ID”等于“參考軌跡ID”的那個(gè)軌跡的的軌跡片斷包含至少一個(gè)隨機(jī)訪問點(diǎn),那么該比特可為1,否則該比特設(shè)為0;當(dāng)引用是對段索引的引用時(shí),則僅在該段索引中的任何引用的該比特被設(shè)為1時(shí)該比特才被設(shè)為1,否則設(shè)為0 ;RAP_de 1 ta_time (RAP_ Δ時(shí)間)若“包含RAP ”為1,則提供隨機(jī)訪問點(diǎn)(RAP)的呈現(xiàn)(合成)時(shí)間,;若“包含RAP”為0則保留值0。該時(shí)間表達(dá)為在由該條目記載的子段的首個(gè)樣本的解碼時(shí)間與“軌跡ID”等于“參考軌跡ID”的軌跡中隨機(jī)訪問點(diǎn)的呈現(xiàn)(合成)時(shí)間之間的差量。TIDX與SIDX之間的差異SIDX和SIDX就索引而言提供相同的功能性。SIDX的第一循環(huán)作為補(bǔ)充還提供首個(gè)電影片斷的全局時(shí)基,但該全局時(shí)基也可被包含在該電影片斷自身中,其或者是絕對的或者是相對于參考軌跡的。SIDX的第二循環(huán)實(shí)現(xiàn)TIDX的功能性。具體地,SIDX準(zhǔn)許具有由“引用類型”所指的每個(gè)索引的引用的目標(biāo)的混合,而TIDX僅僅是要么只引用IDX要么只引用MOOF。TIDX中的“元素?cái)?shù)目”對應(yīng)于SIDX中的“引用計(jì)數(shù)”,TIDX中的“時(shí)間參考軌跡ID”對應(yīng)于SIDX中的“參考軌跡ID”,TIDX中的“首個(gè)元素偏移量”對應(yīng)于第二循環(huán)的首個(gè)條目中的“引用偏移量”,TIDX中的“首個(gè)元素時(shí)間”對應(yīng)于第一循環(huán)中的“參考軌跡”的“解碼時(shí)間”,TIDX中的 “隨機(jī)訪問標(biāo)志”對應(yīng)于SIDX中的“包含RAP”,后者還具有額外的自由——在SIDX中,RAP 可以不一定要放在片斷開始處,且因此需要“RAP Δ時(shí)間”,TIDX中的“長度”對應(yīng)于SIDX中的“引用偏移量”,并且最后TIDX中的ΔΤ對應(yīng)于SIDX中的“子段歷時(shí)”。因此,這兩個(gè)包的功能性是等效的??勺儔K大小控制和子GoP塊
對于視頻媒體而言,視頻編碼結(jié)構(gòu)與供請求的塊結(jié)構(gòu)之間的關(guān)系可能是重要的。 例如,若每個(gè)塊始于諸如隨機(jī)訪問點(diǎn)(“RAP”)之類的查找點(diǎn)且每個(gè)塊代表相等的視頻時(shí)間段,則視頻媒體中的至少一些查找點(diǎn)的定位是固定的且查找點(diǎn)在視頻編碼內(nèi)將以有規(guī)律的間隔出現(xiàn)。如視頻編碼領(lǐng)域中的技術(shù)人員公知的,若查找點(diǎn)是根據(jù)視頻幀之間的關(guān)系來放置的,并且具體而言若它們被放置在與先前幀幾乎沒有多少共性的幀處,則壓縮效率可得以提高。由此要各塊代表等量時(shí)間的要求對視頻編碼構(gòu)成了約束,從而使得壓縮可能是未臻最優(yōu)的。希望允許視頻呈現(xiàn)內(nèi)的查找點(diǎn)的位置由視頻編碼系統(tǒng)來選取,而非要求查找點(diǎn)位于固定位置。允許視頻編碼系統(tǒng)選取查找點(diǎn)得到改善的視頻壓縮,并且因此使用給定的可用帶寬能提供更高的視頻媒體質(zhì)量,從而得到改善的用戶體驗(yàn)。當(dāng)前的塊請求流送系統(tǒng)可能要求所有塊具有相同的歷時(shí)(以視頻時(shí)間計(jì)),且每個(gè)塊必須始于查找點(diǎn)且這因此是現(xiàn)有系統(tǒng)的缺點(diǎn)。現(xiàn)在描述提供勝于上述系統(tǒng)的優(yōu)點(diǎn)的新穎的塊請求流送系統(tǒng)。在一個(gè)實(shí)施例中, 視頻分量的第一版本的視頻編碼過程可被配置成選取查找點(diǎn)的位置以力圖優(yōu)化壓縮效率, 但要求對查找點(diǎn)之間的歷時(shí)有最大限度。后一個(gè)要求的確限制了編碼過程對查找點(diǎn)的選取且因此降低了壓縮效率。然而,倘若查找點(diǎn)之間的歷時(shí)的最大限度不是太小(例如,大于約 1秒),則壓縮效率的降低與假如查找點(diǎn)要求有規(guī)律的固定位置所招致的壓縮效率降低相比是微小的。此外,若對查找點(diǎn)之間的歷時(shí)的最大限度是幾秒,則該壓縮效率的降低與查找點(diǎn)的完全自由定位相比一般是微乎其微的。在包括本實(shí)施例的許多實(shí)施例中,可能有一些RAP不是查找點(diǎn),即可能有幀是兩個(gè)連貫查找點(diǎn)之間的沒有被選取為查找點(diǎn)的RAP,例如由于該RAP在時(shí)間上太接近周圍的查找點(diǎn),或者由于該RAP之前或之后的查找點(diǎn)與該RAP之間的媒體數(shù)據(jù)量太少。媒體呈現(xiàn)的所有其他版本內(nèi)的查找點(diǎn)的位置可被約束成與第一(例如,最高媒體數(shù)據(jù)率)版本中的查找點(diǎn)相同。與允許編碼器自由選取查找點(diǎn)相比,這的確降低了這些其他版本的壓縮效率。使用查找點(diǎn)典型地要求幀是能獨(dú)立解碼的,這一般導(dǎo)致該幀的低壓縮效率。不被要求能獨(dú)立解碼的幀可參考其他幀中的數(shù)據(jù)來編碼,這一般而言將使該幀的壓縮效率提高達(dá)取決于待編碼幀與參考幀之間的共性量的量。對查找點(diǎn)定位的高效選取優(yōu)先選取與先前幀具有低共性的幀作為查找點(diǎn)幀,并藉此使得由于以能獨(dú)立解碼的方式編碼該幀招致的壓縮效率懲罰最小化。然而,幀與潛在可能的參考幀之間的共性的程度是跨該內(nèi)容的不同表示而高度相關(guān)的,因?yàn)樵純?nèi)容是相同的。因此,令其他變體中的查找點(diǎn)與第一變體中的查找點(diǎn)具有相同位置的約束對于壓縮效率而言并沒有帶來很大差別。查找點(diǎn)結(jié)構(gòu)優(yōu)選被用來決定塊結(jié)構(gòu)。優(yōu)選地,每個(gè)查找點(diǎn)決定塊的開始,且可能存在涵蓋兩個(gè)連貫查找點(diǎn)之間的數(shù)據(jù)的一個(gè)或更多個(gè)塊。由于為以良好壓縮進(jìn)行編碼的目的使得查找點(diǎn)之間的歷時(shí)不是固定的,因此不要求所有塊都具有相同的播出歷時(shí)。在一些實(shí)施例中,塊在內(nèi)容的各版本之間是對準(zhǔn)的——即,若在內(nèi)容的一個(gè)版本中有跨越特定幀群的塊,則在該內(nèi)容的另一版本中也有跨越相同的幀群的塊。內(nèi)容的給定版本的各塊不交迭, 且內(nèi)容的每個(gè)幀被包含在每個(gè)版本的恰好一個(gè)塊內(nèi)。
使得能允許高效利用查找點(diǎn)之間的可變歷時(shí)以及因此的可變歷時(shí)GoP的特征是可被包括在段中或通過其他手段提供給客戶端的段索引或段映射,即,這是可被提供的與該表示中的此段相關(guān)聯(lián)的包括該呈現(xiàn)的每個(gè)塊的開始時(shí)間和歷時(shí)的元數(shù)據(jù)。當(dāng)用戶已請求該呈現(xiàn)在段內(nèi)的特定點(diǎn)開始時(shí),客戶端可在確定要在哪個(gè)塊開始該呈現(xiàn)時(shí)使用該段索引數(shù)據(jù)。若沒有提供此類元數(shù)據(jù),則呈現(xiàn)僅能在內(nèi)容開頭或在接近合意點(diǎn)的隨機(jī)或近似點(diǎn)開始 (例如,通過將所請求的起始點(diǎn)(以時(shí)間計(jì))除以平均塊歷時(shí)以給出起始塊的索引來選取起始塊)。在一個(gè)實(shí)施例中,每個(gè)塊可作為單獨(dú)的文件來提供。在另一個(gè)實(shí)施例中,多個(gè)連貫塊可被聚集成單個(gè)文件以構(gòu)成段。在該第二實(shí)施例中,可以提供每個(gè)版本的元數(shù)據(jù),其包括每個(gè)塊的開始時(shí)間和歷時(shí)以及該塊在此文件內(nèi)開始處的字節(jié)偏移量。該元數(shù)據(jù)可響應(yīng)于初始協(xié)議請求而提供,即可與段或文件分開地獲得,或者可被包含在與塊本身相同的文件或段內(nèi),例如位于文件開頭處。如對于本領(lǐng)域技術(shù)人員將清楚的,該元數(shù)據(jù)可以諸如gzip或 Δ編碼之類的壓縮形式或以二進(jìn)制形式來編碼,以減少向客戶端傳輸該元數(shù)據(jù)所需的網(wǎng)絡(luò)資源。圖6示出了段索引的示例,其中塊具有可變大小,且其中塊的范疇是部分GoPdP 一個(gè)RAP與下一個(gè)RAP之間的媒體數(shù)據(jù)的部分量。在該示例中,查找點(diǎn)由RAP指示符來指示,其中RAP指示符值1指示該塊始于或包含RAP或查找點(diǎn),并且其中RAP指示符O指示該塊不包含RAP或查找點(diǎn)。在該示例中,頭三個(gè)塊即字節(jié)O到157,033構(gòu)成第一 GoP,其具有 1. 623秒的呈現(xiàn)歷時(shí),其呈現(xiàn)時(shí)間從進(jìn)入內(nèi)容中的20秒走到21. 623秒。在該示例中,頭三個(gè)塊中的第一塊包括0. 485秒的呈現(xiàn)時(shí)間,且包括該段中的媒體數(shù)據(jù)的頭50,245字節(jié)。在該示例中,塊4、5和6構(gòu)成第二 GoP,塊7和8構(gòu)成第三GoP,并且塊9、10和11構(gòu)成第四 GoP0注意,媒體數(shù)據(jù)中可能存在沒有被指定為查找點(diǎn)、且因此在段映射中沒有作為RAP被信令的其他RAP。再次參照圖6,若客戶端或接收機(jī)想要訪問始于進(jìn)入媒體呈現(xiàn)中約22秒的時(shí)間偏移量處的內(nèi)容,則客戶端可首先使用諸如以下更詳細(xì)地描述的MPD之類的其他信息來首先確定該相關(guān)媒體數(shù)據(jù)的確在該段內(nèi)??蛻舳丝衫缡褂肏TTP字節(jié)范圍請求來下載該段的第一部分以獲得段索引,其在本例中只有幾個(gè)字節(jié)。使用該段索引,客戶端可確定自己應(yīng)當(dāng)下載的第一塊是時(shí)間偏移量至多為22秒且始于RAP、即實(shí)為查找點(diǎn)的首個(gè)塊。在該示例中, 盡管塊5具有小于22秒的時(shí)間偏移量,即其時(shí)間偏移量為21. 965秒,但段索引指示塊5并非始于RAP,且由此基于段索引,客戶端改為選擇下載塊4,因?yàn)槠溟_始時(shí)間至多為22秒,即其時(shí)間偏移量為21. 623秒,且其始于RAP。因此,基于段索引,客戶端將作出始于字節(jié)偏移量157,034的HTTP范圍請求。假使段索引不可用,則客戶端可能不得不在下載該數(shù)據(jù)之前先下載所有之前的 157,034字節(jié)的數(shù)據(jù),導(dǎo)致啟動(dòng)時(shí)間或頻道換臺(tái)時(shí)間長得多,以及浪費(fèi)地下載了無用的數(shù)據(jù)。替換地,假使段索引不可用,則客戶端可近似出合意數(shù)據(jù)在該段內(nèi)的開始之處,但該近似可能是不良的并且它可能錯(cuò)過恰適的時(shí)間且隨后需要后退,這再次增加了啟動(dòng)延遲。一般而言,每個(gè)塊涵蓋媒體數(shù)據(jù)的一部分,該部分連同先前各塊一起可由媒體播放器播出。因此,這種成塊結(jié)構(gòu)以及向客戶端信令通知段索引成塊結(jié)構(gòu)(無論包含在段內(nèi)還是通過其他手段提供給客戶端)的機(jī)制能顯著改善客戶端提供快速頻道換臺(tái)、以及在面臨網(wǎng)絡(luò)變動(dòng)和中斷時(shí)的無縫播出的能力。如由段索引實(shí)現(xiàn)的對可變歷時(shí)塊以及僅涵蓋GoP 的部分的塊的支持能顯著改善流送體驗(yàn)。例如,再次參照圖6以及以上描述的其中客戶端想要在進(jìn)入呈現(xiàn)中約22秒處開始播出的示例,客戶端可通過一個(gè)或更多個(gè)請求來請求塊 4內(nèi)的數(shù)據(jù)并隨后一旦該塊可用就將其饋送給媒體播放器以開始回放。因此,在該示例中, 一旦在客戶端處接收到塊4的42,011字節(jié),播出就開始,由此實(shí)現(xiàn)快速的頻道換臺(tái)時(shí)間。 若相反在播放將要起動(dòng)之前需要客戶端先請求整個(gè)GoP,則頻道換臺(tái)時(shí)間將較長,因?yàn)橛?144,211字節(jié)的數(shù)據(jù)。在其他實(shí)施例中,RAP或查找點(diǎn)也可出現(xiàn)在塊當(dāng)中,且段索引中可以有指示該RAP 或查找點(diǎn)在塊或片斷內(nèi)何處的數(shù)據(jù)。在其他實(shí)施例中,時(shí)間偏移量可以是塊內(nèi)的第一幀的解碼時(shí)間,而非塊內(nèi)的第一幀的呈現(xiàn)時(shí)間。圖8(a)和8 (b)解說了對跨多個(gè)版本或表示對準(zhǔn)的查找點(diǎn)結(jié)構(gòu)的可變塊大小控制的示例;圖8(a)解說了在媒體流的多個(gè)版本上有對準(zhǔn)的查找點(diǎn)的可變塊大小控制,而圖 8(b)解說了在媒體流的多個(gè)版本上有非對準(zhǔn)的查找點(diǎn)的可變塊大小控制??珥敳恳悦胧境鰰r(shí)間,且這兩個(gè)表示的兩個(gè)段的塊和查找點(diǎn)以其相對于該時(shí)間線的時(shí)基的形式從左到右示出,并且因此所示的每個(gè)塊的長度與其播出時(shí)間成比例而不是與塊中的字節(jié)數(shù)目成比例。在該示例中,這兩個(gè)表示的兩個(gè)段的段索引對于查找點(diǎn)將具有相同的時(shí)間偏移量,但查找點(diǎn)之間具有潛在不同數(shù)目的塊或片斷,且由于每個(gè)塊中的媒體數(shù)據(jù)量不同,因此塊有不同的字節(jié)偏移量。在該示例中,若客戶端想要在約23秒的呈現(xiàn)時(shí)間處從表示1切換到表示2,則客戶端可請求直至表示1的段中的塊1. 2,并自塊2. 2起開始請求表示2的段,且因此切換將發(fā)生在與表示1中的查找點(diǎn)1. 2重合的呈現(xiàn)處,其與表示2 中的查找點(diǎn)2. 2位于相同的時(shí)間。如從前述內(nèi)容應(yīng)當(dāng)清楚的,所描述的塊請求流送系統(tǒng)并不約束視頻編碼要將查找點(diǎn)放置在內(nèi)容內(nèi)的特定位置處,并且這緩解了現(xiàn)有系統(tǒng)的問題之一。在以上描述的實(shí)施例中,組織成使得相同內(nèi)容呈現(xiàn)的各種表示的查找點(diǎn)被對準(zhǔn)。 然而,在許多情形中,優(yōu)選放寬該對準(zhǔn)要求。例如,有時(shí)是這種情形已使用編碼工具生成不具有生成查找點(diǎn)對準(zhǔn)的表示的能力的表示。作為另一示例,內(nèi)容呈現(xiàn)可被獨(dú)立地編碼成不同的表示,而不同的表示之間沒有查找點(diǎn)對準(zhǔn)。作為另一示例,表示在其具有低速率且更普遍需要切換或者在其包含切換點(diǎn)以支持諸如快進(jìn)或倒帶或快速查找之類的特技模式時(shí)可包含較多查找點(diǎn)。因此,希望提供使得塊請求流送系統(tǒng)能高效且無縫地應(yīng)對跨內(nèi)容呈現(xiàn)的各種表示非對準(zhǔn)的查找點(diǎn)的方法。在該實(shí)施例中,跨表示的查找點(diǎn)的位置可能并不對準(zhǔn)。塊被構(gòu)造成使得新塊始于每個(gè)查找點(diǎn),且因此在呈現(xiàn)的不同版本的塊之間可能沒有對準(zhǔn)。此類不同表示之間非對準(zhǔn)的查找點(diǎn)結(jié)構(gòu)的示例在圖8(b)中示出??珥敳恳悦胧境鰰r(shí)間,且這兩個(gè)表示的兩個(gè)段的塊和查找點(diǎn)以其相對于該時(shí)間線的時(shí)基的形式從左到右示出,且因此所示的每個(gè)塊的長度與其播出時(shí)間成比例而不是與塊中的字節(jié)數(shù)目成比例。在該示例中,這兩個(gè)表示的兩個(gè)段的段索引對于查找點(diǎn)將具有潛在不同的時(shí)間偏移量,并且查找點(diǎn)之間也具有潛在不同數(shù)目的塊或片斷,且由于每個(gè)塊中的媒體數(shù)據(jù)量不同,因此塊有不同的字節(jié)偏移量。在該示例中, 若客戶端想要在約25秒的呈現(xiàn)時(shí)間處從表示1切換到表示2,則客戶端可請求直至表示1 的段中的塊1. 3,并自塊2. 3起開始請求表示2的段,且因此切換將發(fā)生在與表示2中的查找點(diǎn)2. 3重合的呈現(xiàn)處,其位于表示1中塊1. 3的播出當(dāng)中,且因此塊1. 2的媒體中的一些將不被播出(盡管塊1. 3的沒被播出的幀的媒體數(shù)據(jù)可能已被加載到接收機(jī)緩沖器中以用于塊1. 3的其他被播出的幀的解碼)。在該實(shí)施例中,塊選擇器123的操作可被修改以使得每當(dāng)它被要求從不同于先前所選版本的表示選擇塊時(shí),其第一幀不晚于上次所選塊的最末幀之后的幀的最晚塊被選取。該最近描述的實(shí)施例可消除約束除第一版本以外的其他版本內(nèi)的查找點(diǎn)位置的要求,且因此提高了這些版本的壓縮效率,從而對于給定的可用帶寬得到更高質(zhì)量的呈現(xiàn)并且這是改善的用戶體驗(yàn)。進(jìn)一步的考慮是執(zhí)行跨內(nèi)容的多個(gè)編碼(版本)的查找點(diǎn)對準(zhǔn)功能的視頻編碼工具可能并非普遍可用,因此該最近描述的實(shí)施例的優(yōu)點(diǎn)在于可以使用目前可用的視頻編碼工具。另一優(yōu)點(diǎn)在于內(nèi)容的不同版本的編碼可并行進(jìn)行而完全無需不同版本的編碼過程之間的協(xié)調(diào)。另一優(yōu)點(diǎn)在于內(nèi)容的附加版本可在稍后的時(shí)間被編碼并被添加到呈現(xiàn),而不必向編碼工具提供具體查找點(diǎn)位置的列表。一般而言,在畫面被編碼為畫面群(GoP)的場合,序列中的第一畫面可以是查找點(diǎn),但并非總是必需如此。最優(yōu)塊劃分塊請求流送系統(tǒng)中的一個(gè)關(guān)注問題是例如視頻媒體之類的經(jīng)編碼媒體的結(jié)構(gòu)與用于塊請求的塊結(jié)構(gòu)之間的交互。如視頻編碼領(lǐng)域中的技術(shù)人員將知曉的,往往是這種情形每個(gè)視頻幀的經(jīng)編碼表示所需的比特?cái)?shù)目有時(shí)實(shí)際上逐幀變化。因此,收到數(shù)據(jù)量與由該數(shù)據(jù)編碼的媒體歷時(shí)之間的關(guān)系可能不是直截了當(dāng)?shù)?。此外,在塊請求流送系統(tǒng)內(nèi)將媒體數(shù)據(jù)分成塊增加了進(jìn)一維的復(fù)雜性。具體而言,在一些系統(tǒng)中,塊的媒體數(shù)據(jù)可能在整個(gè)塊被接收到之前不會(huì)被播出,例如,使用擦除碼的塊內(nèi)的媒體數(shù)據(jù)布局或者塊內(nèi)的媒體樣本之間的依存性就可能導(dǎo)致這種性質(zhì)。由于塊大小與塊歷時(shí)之間的這些復(fù)雜交互以及可能需要在開始播出之前接收整個(gè)塊,因此客戶端系統(tǒng)通常采納保守辦法,其中在播出開始之前緩沖媒體數(shù)據(jù)。此類緩沖導(dǎo)致頻道換臺(tái)時(shí)間很長并且因此用戶體驗(yàn)不良。I^kzad描述了“塊劃分方法”,這些方法是基于數(shù)據(jù)流的底層結(jié)構(gòu)來決定如何將數(shù)據(jù)流劃分成毗連塊的新穎且高效的方法,且I^akzad進(jìn)一步描述了這些方法在流送系統(tǒng)的上下文中的若干優(yōu)點(diǎn)。現(xiàn)在描述本發(fā)明將I^akzad的塊劃分方法應(yīng)用于塊請求流送系統(tǒng)的進(jìn)一步實(shí)施例。該方法可包括將待呈現(xiàn)媒體數(shù)據(jù)安排成大致的呈現(xiàn)時(shí)間次序,以使得媒體數(shù)據(jù)的任何給定元素(例如,視頻幀或音頻樣本)的播出時(shí)間與任何毗鄰媒體數(shù)據(jù)元素的播出時(shí)間相差小于所設(shè)閾值。如此排序的媒體數(shù)據(jù)按I^akzad的話來說可被視為數(shù)據(jù)流,且應(yīng)用于該數(shù)據(jù)流的任何I^akzad方法標(biāo)識(shí)該數(shù)據(jù)流的塊邊界。任一對毗鄰塊邊界之間的數(shù)據(jù)按本公開的話來說被視為“塊”,且本公開的方法被應(yīng)用以提供該媒體數(shù)據(jù)在塊請求流送系統(tǒng)內(nèi)的呈現(xiàn)。如本領(lǐng)域技術(shù)人員在閱讀本公開之際將清楚的,Pakzad中公開的方法的若干優(yōu)點(diǎn)由此可在塊請求流送系統(tǒng)的上下文中實(shí)現(xiàn)。如I^akzad中描述的,對段的塊結(jié)構(gòu)(包括涵蓋部分GoP或涵蓋一個(gè)以上GoP的部分的塊)的確定會(huì)影響客戶端實(shí)現(xiàn)快速頻道換臺(tái)時(shí)間的能力。在I^kzad中,提供了在給出目標(biāo)啟動(dòng)時(shí)間的情況下將提供塊結(jié)構(gòu)和目標(biāo)下載速率的方法,該塊結(jié)構(gòu)和目標(biāo)下載速率將確保若客戶端在任何查找點(diǎn)開始下載表示并在該目標(biāo)啟動(dòng)時(shí)間已流逝之后開始播出,則只CN 102549999 A
要在每個(gè)時(shí)間點(diǎn)該客戶端已下載的數(shù)據(jù)量至少為目標(biāo)下載速率乘以自下載開始以來流逝的時(shí)間,那么播出就將無縫地繼續(xù)。有利的是使客戶端能訪問目標(biāo)啟動(dòng)時(shí)間和目標(biāo)下載速率,因?yàn)檫@向客戶端提供了確定何時(shí)開始在最早的時(shí)間點(diǎn)播出該表示的手段,并且只要下載滿足上述條件就允許客戶端繼續(xù)播出該表示。因此,稍后描述的方法提供了用于在媒體呈現(xiàn)描述內(nèi)包括目標(biāo)啟動(dòng)時(shí)間和目標(biāo)下載速率的手段,從而其可被用于上述目的。媒體旱.現(xiàn)數(shù)據(jù)樽型圖5解說了圖1中所示的內(nèi)容存儲(chǔ)的可能結(jié)構(gòu),包括段和媒體呈現(xiàn)描述(“MPD”) 文件,以及MPD文件內(nèi)的段分解、時(shí)基和其他結(jié)構(gòu)?,F(xiàn)在將描述MPD結(jié)構(gòu)或文件的可能實(shí)現(xiàn)的細(xì)節(jié)。在許多示例中,MPD被描述為文件,但也可以使用非文件結(jié)構(gòu)。如其中解說的,內(nèi)容存儲(chǔ)110裝有多個(gè)源段510、MPD 500和修復(fù)段512。MPD可包括時(shí)段記錄501,時(shí)段記錄501又可包括表示記錄502,表示記錄502包含諸如對初始化段 504和媒體段505的引用之類的段信息503。圖9 (a)解說了示例元數(shù)據(jù)表900,而圖9 (b)解說了 HTTP流送客戶端902如何在與HTTP流送服務(wù)器906的連接上獲得元數(shù)據(jù)表900和媒體塊904的示例。在本文中描述的方法中,提供包括關(guān)于客戶端可用的媒體呈現(xiàn)的表示的信息的 “媒體呈現(xiàn)描述”。表示可以是替換性的,替換性的意義是指客戶端選出不同替換項(xiàng)之一,或者它們可以是互補(bǔ)性的,互補(bǔ)性的意義是指客戶端選擇其中若干個(gè)表示、每個(gè)表示可能也來自一組替換項(xiàng),并且聯(lián)合地呈現(xiàn)這些表示。表示可有利地被指派到群,其中客戶端被編程或配置成理解對于一群中的表示,它們各自是彼此的替換項(xiàng),而來自不同群的表示使得能聯(lián)合地呈現(xiàn)一個(gè)以上表示。換言之,若群中有一個(gè)以上表示,則客戶端從該群挑選一個(gè)表示,從下一群挑選一個(gè)表示等等以構(gòu)成呈現(xiàn)。描述表示的信息可有利地包括所應(yīng)用的媒體編解碼器的詳情,包括解碼該表示所需的那些編解碼器的簡檔和等級、視頻幀率、視頻分辨率以及數(shù)據(jù)率。接收媒體呈現(xiàn)描述的客戶端可使用該信息來事先確定表示是否適合解碼或呈現(xiàn)。這代表了優(yōu)點(diǎn),因?yàn)槿魠^(qū)別信息將僅被包含在表示的二進(jìn)制數(shù)據(jù)中,則將必需請求來自所有表示的二進(jìn)制數(shù)據(jù)并解析和提取相關(guān)信息才能發(fā)現(xiàn)關(guān)于其適用性的信息。這多個(gè)請求以及對數(shù)據(jù)的解析并附提取可能要花一些時(shí)間,這會(huì)導(dǎo)致啟動(dòng)時(shí)間很長并且因此用戶體驗(yàn)不良。此外,媒體呈現(xiàn)描述可包括基于時(shí)辰來限制客戶端請求的信息。例如對于實(shí)況服務(wù),客戶端可被限于請求呈現(xiàn)中接近“當(dāng)前廣播時(shí)間”的部分。這代表了優(yōu)點(diǎn),因?yàn)閷τ趯?shí)況廣播,可能希望從服務(wù)基礎(chǔ)設(shè)施中清空比當(dāng)前廣播時(shí)間早所設(shè)閾值以上廣播的內(nèi)容的數(shù)據(jù)。這對于服務(wù)基礎(chǔ)設(shè)施內(nèi)的存儲(chǔ)資源的重復(fù)使用而言是可取的。這還可能取決于所提供的服務(wù)類型而變?yōu)榭扇〉模?,在一些情形中,由于接收客戶端設(shè)備的某個(gè)訂閱模型,可使得呈現(xiàn)僅有實(shí)況可用,而可使得其他媒體呈現(xiàn)有實(shí)況和點(diǎn)播可用,并可使得其他呈現(xiàn)對于第一類客戶端設(shè)備僅有實(shí)況可用,對于第二類客戶端設(shè)備僅有點(diǎn)播可用,以及對于第三類客戶端設(shè)備有實(shí)況或點(diǎn)播的組合可用。(下文)“媒體呈現(xiàn)數(shù)據(jù)模型”小節(jié)中描述的方法允許向客戶端通知此類策略,從而客戶端對于服務(wù)基礎(chǔ)設(shè)施中可能不可用的數(shù)據(jù)可避免作出請求并調(diào)節(jié)對用戶的供應(yīng)。作為替換方案,例如,客戶端可向用戶呈現(xiàn)該數(shù)據(jù)不可用的通知。在本發(fā)明的進(jìn)一步實(shí)施例中,媒體段可順應(yīng)于IS0/IEC 14496-12或衍生規(guī)范中描述的ISO基媒體文件格式(諸如3GPP技術(shù)規(guī)范26. 244中描述的3GP文件格式)。(上文)“3GPP文件格式的使用”這一小節(jié)描述了對ISO基媒體文件格式的新穎增強(qiáng),從而準(zhǔn)許在塊請求流送系統(tǒng)內(nèi)高效地使用該文件格式的數(shù)據(jù)結(jié)構(gòu)。如該參考文獻(xiàn)中描述的,可在文件內(nèi)提供信息從而準(zhǔn)許媒體呈現(xiàn)的時(shí)間段與文件內(nèi)的字節(jié)范圍之間快速且高效的映射。 媒體數(shù)據(jù)本身可根據(jù)IS0/IEC14496-12中定義的電影片斷構(gòu)造來結(jié)構(gòu)化。提供時(shí)間和字節(jié)偏移量的該信息可被階層式地結(jié)構(gòu)化或被結(jié)構(gòu)化為單個(gè)信息塊。該信息可在文件開始處提供。使用如“3GPP文件格式的使用”這一小節(jié)中描述的高效編碼來提供該信息導(dǎo)致客戶端能迅速檢索該信息,例如在塊請求流送系統(tǒng)使用的文件下載協(xié)議是HTTP的情形中使用 HTTP部分獲取請求來迅速檢索該信息,這導(dǎo)致很短的啟動(dòng)、查找或流切換時(shí)間且因此導(dǎo)致改善的用戶體驗(yàn)。媒體呈現(xiàn)中的表示是同步在全局時(shí)間線上的,以確保跨表示(典型地為替換項(xiàng)) 的無縫切換,并且確保兩個(gè)或更多個(gè)表示的同步呈現(xiàn)。因此,自適應(yīng)HTTP流送媒體呈現(xiàn)內(nèi)的各表示中所包含的媒體的樣本時(shí)基可跨多個(gè)段與連續(xù)的全局時(shí)間線相關(guān)。包含多種類型的媒體(例如,音頻和視頻)的經(jīng)編碼媒體塊對于不同類型的媒體可具有不同的呈現(xiàn)結(jié)束時(shí)間。在塊請求流送系統(tǒng)中,此類媒體塊可按使每種媒體類型被連續(xù)地播放的方式來連貫播出,且因此來自一個(gè)塊的一種類型的媒體樣本可能在前一塊的另一類型的媒體樣本之前播出,這在本文中被稱為“連續(xù)塊拼接”。作為替換,此類媒體塊可按以下方式播放一個(gè)塊的任何類型的最早樣本在前一塊的任何類型的最晚樣本之后播放, 這在本文中被稱為“非連續(xù)塊拼接”。當(dāng)這兩個(gè)塊包含來自相同內(nèi)容項(xiàng)和相同表示的按順序編碼的媒體時(shí)或在其他情形中,連續(xù)塊拼接可能是恰適的。典型地,在一個(gè)表示內(nèi),在拼接兩個(gè)塊時(shí)可以應(yīng)用連續(xù)塊拼接。這是有利的,因?yàn)榭梢詰?yīng)用現(xiàn)有編碼,且可以在無需使媒體軌跡在塊邊界處對準(zhǔn)的情況下進(jìn)行分段。這在圖10中解說,其中視頻流1000包括塊1202 和其他塊,帶有諸如RAP 1204之類的RAP。媒體呈現(xiàn)描述媒體呈現(xiàn)可被視為HTTP流送服務(wù)器上的結(jié)構(gòu)化的文件集合。HTTP流送客戶端可下載充分的信息以向用戶呈現(xiàn)流送服務(wù)。替換表示可包括一個(gè)或更多個(gè)3GP文件或3GP文件的部分,其中這些3GP文件遵循3GPP文件格式或至少遵照一組定義明確的能容易地轉(zhuǎn)換自或轉(zhuǎn)換成3GP文件的數(shù)據(jù)結(jié)構(gòu)。媒體呈現(xiàn)可由媒體呈現(xiàn)描述來描述。媒體呈現(xiàn)描述(MPD)可包含元數(shù)據(jù),客戶端能使用該元數(shù)據(jù)來構(gòu)造恰適的文件請求,例如HTTP獲取請求,以在恰適的時(shí)間訪問處該數(shù)據(jù)并向用戶提供流送服務(wù)。媒體呈現(xiàn)描述可提供充分的信息以供HTTP流送客戶端選擇恰適的3GPP文件和文件片。信令通知客戶端可訪問的單位被稱為段。媒體呈現(xiàn)描述尤其可包含如下元素和屬性等。媒體呈現(xiàn)描述(MediaPresentationDescription)元素封裝供HTTP流送客戶端用來向最終用戶提供流送服務(wù)的元數(shù)據(jù)的元素?!懊襟w呈現(xiàn)描述”元素可包含以下屬性和元素中的一個(gè)或更多個(gè)。版本協(xié)議的版本號以確??蓴U(kuò)展性。呈現(xiàn)標(biāo)識(shí)符(PresentationIdentifier)使得該呈現(xiàn)可在其他呈現(xiàn)之中被唯一性地標(biāo)識(shí)出來的信息。也可包含私有字段或名稱。
更新頻率(UpdateFrequency):媒體呈現(xiàn)描述的更新頻率,即客戶端可多頻繁地重新加載實(shí)際的媒體呈現(xiàn)描述。若該元素不出現(xiàn),則媒體呈現(xiàn)可以是靜態(tài)的。更新媒體呈現(xiàn)可意味著媒體呈現(xiàn)不能被高速緩存。媒體呈現(xiàn)描述URI (MediaPresentationDescriptionURL)用于約定媒體呈現(xiàn)描述的URI。流(Stream)描述流或媒體呈現(xiàn)的類型視頻、音頻或文本。視頻流類型可包含音頻并且可包含文本。服務(wù)(Service)描述具有附加屬性的服務(wù)類型。服務(wù)類型可以是實(shí)況或點(diǎn)播。這可以用來通知客戶端超出某個(gè)當(dāng)前時(shí)間的查找和訪問是不被準(zhǔn)許的。最大客戶端預(yù)緩沖時(shí)間(MaximumClientPreBufferTime)客戶端可預(yù)緩沖媒體流的最大時(shí)間量。該時(shí)基可將流送與客戶端被限于下載超出該最大預(yù)緩沖時(shí)間的漸進(jìn)式下載區(qū)別開。該值可以不出現(xiàn),指示沒有預(yù)緩沖意義上的限制可應(yīng)用。安全保護(hù)區(qū)間實(shí)況服務(wù)(&ifetyGuardIntervalLiveService)關(guān)于服務(wù)器上的實(shí)況服務(wù)的最大周轉(zhuǎn)時(shí)間的信息。向客戶端提供了在當(dāng)前時(shí)間有哪些信息已可訪問的指示。若預(yù)期客戶端和服務(wù)器按UTC時(shí)間操作且不提供緊密的時(shí)間同步,則該信息可能是必需的。時(shí)移緩沖器深度(TimeShiftBufferD印th)關(guān)于客戶端在實(shí)況服務(wù)中kel相對于當(dāng)前時(shí)間回移多遠(yuǎn)的信息。藉由該深度的擴(kuò)展,無需在服務(wù)供應(yīng)中作出特定改變也可準(zhǔn)許時(shí)移觀看和追看服務(wù)。準(zhǔn)許本地高速緩存(LocalCachingPermitted)該標(biāo)志指示HTTP客戶端在已播放所下載的數(shù)據(jù)之后是否能本地高速緩存該數(shù)據(jù)。實(shí)況呈現(xiàn)區(qū)間(LivePresentationlnverval)通過指定開始時(shí)間(MartTimes) 和結(jié)束時(shí)間(EndTimes)來包含其間呈現(xiàn)可用的時(shí)間區(qū)間?!伴_始時(shí)間”指示服務(wù)的開始時(shí)間而“結(jié)束時(shí)間”指示服務(wù)的結(jié)束時(shí)間。若沒有指定結(jié)束時(shí)間,則結(jié)束時(shí)間在當(dāng)前時(shí)間是未知的,且“更新頻率”可確??蛻舳四茉诜?wù)的實(shí)際結(jié)束時(shí)間之前訪問到結(jié)束時(shí)間。點(diǎn)播可用性區(qū)間(OnDemandAvailabilityInterval)該呈現(xiàn)區(qū)間指示該服務(wù)在網(wǎng)絡(luò)上的可用性??梢蕴峁┒鄠€(gè)呈現(xiàn)區(qū)間。HTTP客戶端在任何指定時(shí)間窗以外可能不能訪問該服務(wù)。通過提供“點(diǎn)播區(qū)間”,可指定額外的時(shí)移觀看。對于實(shí)況服務(wù),該屬性也可出現(xiàn)。倘若對于實(shí)況服務(wù)該屬性出現(xiàn),則服務(wù)器可確保在所有所提供的可用性區(qū)間期間,客戶端能以點(diǎn)播服務(wù)的形式來訪問該服務(wù)。因此,“實(shí)況呈現(xiàn)區(qū)間”不可與任何“點(diǎn)播可用性區(qū)間”交迭。MPD文件信息動(dòng)態(tài)(MPDFiIeInfoDynamic)描述媒體呈現(xiàn)中的文件的默認(rèn)動(dòng)態(tài)構(gòu)造。更多細(xì)節(jié)在下文中提供。若對若干或所有替換表示使用相同規(guī)則,則在MPD等級上的默認(rèn)指定可以節(jié)省不必要的重復(fù)。MPD編解碼器描述(MPDCodecDescription)描述媒體呈現(xiàn)中的主默認(rèn)編解碼器。 更多細(xì)節(jié)在下文中提供。若對若干或所有表示使用相同的編解碼器,則在MPD等級上的默認(rèn)指定可以節(jié)省不必要的重復(fù)。MPD 移動(dòng)包頭部大小不變(MPDMoveBoxHeaderSizeDoexNotChange)指示移動(dòng)包頭部的大小在整個(gè)媒體呈現(xiàn)內(nèi)各個(gè)體文件之間是否改變的標(biāo)志。該標(biāo)志可用來優(yōu)化下載并且可以僅在特定段格式(尤其是其段包含moov頭部的那些段格式)的情形中才出現(xiàn)。FileURI模式(FileURII^attern)客戶端用來生成對媒體呈現(xiàn)內(nèi)的文件的請求消息的模式。不同屬性準(zhǔn)許為媒體呈現(xiàn)內(nèi)的每個(gè)文件生成唯一性的URI?;鵘RI可以是HTTP URI。替換表示描述表示列表。(AlternativeRepresentation) “ jt^.封裝一個(gè)表示的所有元數(shù)據(jù)的XML元素。“替換表示”元素可包含以下屬性和元素。表示ID(ItepresentationID)媒體呈現(xiàn)內(nèi)該特定替換表示的唯一性ID。靜態(tài)文件信息(Fileshfc^tatic)提供一個(gè)替換呈現(xiàn)的所有文件的起始時(shí)間和 URI的顯式列表。文件列表的該靜態(tài)提供可提供對媒體呈現(xiàn)有確切時(shí)基描述的優(yōu)點(diǎn),但可能不夠緊湊,尤其是如果替換表示包含許多文件。另外,這些文件名稱可具有任意的名稱。動(dòng)態(tài)文件信息(FilesInfoDynamic)提供構(gòu)造一個(gè)替換呈現(xiàn)的起始時(shí)間和URI的列表的隱式方式。該文件列表的動(dòng)態(tài)提供可提供具有更緊湊表示的優(yōu)點(diǎn)。若僅提供了起始時(shí)間序列,則此處時(shí)基優(yōu)點(diǎn)也成立,但文件名稱將基于文件模式URI(FileI^tternURI)來動(dòng)態(tài)地構(gòu)造。若僅提供每個(gè)段的歷時(shí),則表示是緊湊的并且可適合用在實(shí)況服務(wù)內(nèi),但文件的生成可由全局時(shí)基來掌管。AP移動(dòng)包頭部大小不變(APMoveBoxHeaderSizeDoesNotChange)指示移動(dòng)包頭部的大小在替換描述內(nèi)各個(gè)體文件之間是否改變的標(biāo)志。該標(biāo)志可用來優(yōu)化下載并且可以僅在特定段格式(尤其是其段包含moov頭部的那些段格式)的情形中才出現(xiàn)。AP編解碼器描述(APCodecDescription)描述替換呈現(xiàn)中的文件的主編解碼器。媒體描述元素媒體描述(MediaDescription)可封裝該表示中所包含的媒體的所有元數(shù)據(jù)的元素。具體而言,它可包含關(guān)于該替換呈現(xiàn)中的軌跡以及推薦的軌跡編組(若適用)的信息?!懊襟w描述”屬性包含以下屬性軌跡描述(TrackDescription)封裝該表示中所包含的媒體的所有元數(shù)據(jù)的XML 屬性?!败壽E描述”屬性包含以下屬性軌跡ID(TrackID)替換表示內(nèi)的軌跡的唯一性ID。這可以用在軌跡是編組描述的一部分的情形中。比特率(Bitrate)軌跡的比特率。軌跡編解碼器描述(TrackCodecDescription)包含關(guān)于該軌跡中使用的編解碼器的所有屬性的XML屬性?!败壽E編解碼器描述”屬性包含以下屬性媒體名稱(MediaName)定義媒體類型的屬性。媒體類型包括“音頻”、“視頻”、“文本”、“應(yīng)用”和“消息”。編解碼器(Codec):包括簡檔和等級的編解碼器類型。語言標(biāo)記(LanguageiTag)語言標(biāo)記(若適用)。最大寬度(MaxWidth)、最大高度(MaxHeight)對于視頻而言,是指被包含的視頻以像素計(jì)的高度和寬度。采樣率(SamplingRate)對于音頻而言的采樣率。
群描述(GroupDescription)基于不同參數(shù)向客戶端提供對恰適編組的推薦的屬性。群類型(GroupType)基于該類型,客戶端可決定如何編組軌跡。媒體呈現(xiàn)描述中的信息有利地被HTTP流送客戶端用來在恰適的時(shí)間執(zhí)行對文件 /段或其部分的請求,以選擇來自例如在接入帶寬、顯示能力、編解碼器能力等等以及諸如語言等用戶偏好的意義上匹配其能力的勝任表示的段。此外,由于“媒體呈現(xiàn)描述”描述了時(shí)間對準(zhǔn)且被映射到全局時(shí)間線的表示,因此客戶端在正在進(jìn)行的媒體呈現(xiàn)期間還可以使用MPD中的信息來發(fā)起恰適的行動(dòng)以跨表示進(jìn)行切換、聯(lián)合地呈現(xiàn)各表示、或在媒體呈現(xiàn)內(nèi)進(jìn)行查找。信令通知段開始時(shí)間表示可按時(shí)間被拆分成多個(gè)段。一個(gè)段的最后片斷與下一段的下一片斷之間存在軌跡間時(shí)基問題。此外,在使用有恒定歷時(shí)的段的情形中,存在另一個(gè)時(shí)基問題。對每個(gè)段使用相同歷時(shí)可具有MPD既緊湊又呈靜態(tài)的優(yōu)點(diǎn)。然而,每個(gè)段可能仍始于隨機(jī)訪問點(diǎn)。因此,要么可將視頻編碼約束成在這些特定點(diǎn)提供隨機(jī)訪問點(diǎn),要么實(shí)際的段歷時(shí)可能沒有像在MPD中指定的那樣精確。可能希望流送系統(tǒng)對視頻編碼過程不施加不必要的限制,且因此第二選項(xiàng)可能是優(yōu)選的。具體而言,若在MPD中將文件歷時(shí)指定為d秒,則第η個(gè)文件可始于時(shí)間(n-l)d 處或緊隨其后的隨機(jī)訪問點(diǎn)。在該辦法中,每個(gè)文件可包括關(guān)于該段的在全局呈現(xiàn)時(shí)間意義上的確切開始時(shí)間的信息。信令通知這一點(diǎn)的三種可能方式包括(1)第一,將每個(gè)段的開始時(shí)間限制成如在MPD中指定的確切時(shí)基。但由此媒體編碼器對于IDR幀的放置可能不具有任何靈活性且文件流送可能要求特殊編碼。(2)第二,為每個(gè)段向MPD添加確切開始時(shí)間。對于點(diǎn)播情形,MPD的緊湊性可能降低。對于實(shí)況情形,這可能要求對MPD的定期更新,這會(huì)降低可伸縮性。(3)第三,在MPD中向段添加全局時(shí)間或相對于該表示的宣稱開始時(shí)間或該段的宣稱開始時(shí)間的確切開始時(shí)間,向段添加的意義是指段包含該信息。它可被添加至專用于自適應(yīng)流送的新包。該包還可包括如由“TIDX”或“SIDX”包所提供的信息。該第三辦法的結(jié)果是在查找這些段之一的開頭附近的特定位置時(shí),客戶端可以基于MPD來選取包含所請求的查找點(diǎn)的那個(gè)段的后續(xù)段。該情形中的簡單反應(yīng)可以是將查找點(diǎn)前向移至檢索到的段的開始(即,移至查找點(diǎn)之后的下一個(gè)隨機(jī)訪問點(diǎn))。通常,至少每幾秒就提供隨機(jī)訪問點(diǎn) (且使得它們更不頻繁往往幾乎獲得不到多少編碼增益)且因此在最差情形中,查找點(diǎn)可被移到比指定處晚幾秒。替換地,客戶端在檢索該段的頭部信息時(shí)可確定所請求查找點(diǎn)實(shí)際上是在前一段中并改為請求該段。這可能導(dǎo)致不時(shí)地增加執(zhí)行查找操作所需的時(shí)間??稍L問段的列表媒體呈現(xiàn)包括一組表示,每個(gè)表示提供對原始媒體內(nèi)容的某個(gè)不同版本的編碼。 這些表示本身有利地包含關(guān)于該表示相比于其他參數(shù)的區(qū)別參數(shù)的信息。它們還顯式地或隱式地包含可訪問段的列表。段可被區(qū)別為僅包含元數(shù)據(jù)的不受時(shí)間影響的段和主要包含媒體數(shù)據(jù)的媒體段。 媒體呈現(xiàn)描述(“MPD”)有利地標(biāo)識(shí)每個(gè)段并向每個(gè)段指派不同的屬性,要么隱式地要么顯式地進(jìn)行。有利地指派給每個(gè)段的屬性包括期間段可訪問的時(shí)段、藉以可訪問段的資源和協(xié)議。此外,媒體段被有利地指派諸如該段在媒體呈現(xiàn)中的開始時(shí)間、以及該段在媒體呈現(xiàn)中的歷時(shí)之類的屬性。在媒體呈現(xiàn)如有利地由媒體呈現(xiàn)描述中的屬性(諸如點(diǎn)播可用性區(qū)間)指示的那樣為“點(diǎn)播”類型的場合,則媒體呈現(xiàn)描述典型地描述整個(gè)段并且還提供這些段何時(shí)可訪問以及這些段何時(shí)不可訪問的指示。段的開始時(shí)間有利地相對于媒體呈現(xiàn)的開始來表達(dá),以使得在不同時(shí)間開始回放相同媒體呈現(xiàn)的兩個(gè)客戶端能使用相同的媒體呈現(xiàn)描述以及相同的媒體段。這有利地提高了高速緩存這些段的能力。在媒體呈現(xiàn)如有利地由媒體呈現(xiàn)描述中的屬性(諸如“服務(wù)”屬性)指示的那樣為“實(shí)況”類型的場合,則包括媒體呈現(xiàn)的超出實(shí)際時(shí)辰的部分的段一般不被生成或者至少不可訪問,盡管這些段在MPD中作了完整描述。然而,有了媒體呈現(xiàn)服務(wù)為“實(shí)況”類型的指示,客戶端可基于MPD中包含的信息以及MPD的下載時(shí)間來產(chǎn)生對以壁鐘時(shí)間計(jì)的客戶端內(nèi)部時(shí)間“現(xiàn)在”而言可訪問的段連同時(shí)基屬性的列表。服務(wù)器有利地在使得資源可訪問從而在壁鐘時(shí)間“現(xiàn)在”用MPD的實(shí)例操作的參考客戶端能訪問該資源的意義上操作。具體地,參考客戶端基于MPD中包含的信息以及MPD的下載時(shí)間產(chǎn)生對以壁鐘時(shí)間計(jì)的客戶端內(nèi)部時(shí)間“現(xiàn)在”而言可訪問的段連同時(shí)基屬性的列表。隨著時(shí)間前進(jìn),客戶端將使用相同的MPD并且將創(chuàng)建能用來連續(xù)地播出該媒體呈現(xiàn)的新的可訪問段列表。因此,服務(wù)器可在段實(shí)際上能訪問之前在MPD中宣告這些段。這是有利的,因?yàn)槠錅p少了對 MPD的頻繁更新和下載。假定通過諸如“靜態(tài)文件信息”之類的元素中的播放列表顯式地描述了或者通過使用諸如“動(dòng)態(tài)文件信息”之類的元素隱式地描述了各自具有開始時(shí)間tS的段的列表。以下描述使用“動(dòng)態(tài)文件信息”來生成段列表的有利方法。基于該構(gòu)造規(guī)則,客戶端能訪問每個(gè)表示r的URI的列表(在本文中稱為FileURI (r,i))以及索引為i的每個(gè)段的開始時(shí)間
tS(r, i) ο使用MPD中的信息來創(chuàng)建段的可訪問時(shí)間窗可使用以下規(guī)則來執(zhí)行。對于如有利地由諸如“服務(wù)”之類的屬性指示的那樣類型為“點(diǎn)播”的服務(wù),若在客戶端處的當(dāng)前壁鐘時(shí)間“現(xiàn)在”落在如有利地由諸如“點(diǎn)播可用性區(qū)間”之類的MPD元素表達(dá)的任何可用性范圍內(nèi),則該點(diǎn)播呈現(xiàn)的所有被描述的段皆是可訪問的。若在客戶端處的當(dāng)前壁鐘時(shí)間“現(xiàn)在”落在任何可用性范圍之外,則該點(diǎn)播呈現(xiàn)的被描述段皆是不可訪問的。對于如有利地由諸如“服務(wù)”之類的屬性指示的那樣類型為“實(shí)況”的服務(wù),開始時(shí)間tS(r,i)有利地以壁鐘時(shí)間來表達(dá)可用性時(shí)間。可用性開始時(shí)間可推導(dǎo)為是事件的實(shí)況服務(wù)時(shí)間與服務(wù)器處用于捕捉、編碼和發(fā)布的一些周轉(zhuǎn)時(shí)間的組合。該過程的時(shí)間可例如在MPD中指定,例如使用在MPD中指定為“安全保護(hù)區(qū)間實(shí)況服務(wù)”的安全保護(hù)區(qū)間tG來指定。這將提供UTC時(shí)間與HTTP流送服務(wù)器上的數(shù)據(jù)可用性之間的最小差異。在另一實(shí)施例中,MPD顯式地指定MPD中的段的可用性時(shí)間而不提供作為事件實(shí)況時(shí)間與周轉(zhuǎn)時(shí)間之差的周轉(zhuǎn)時(shí)間。在以下描述中,假定任何全局時(shí)間被指定為可用性時(shí)間。實(shí)況媒體廣播領(lǐng)域中的普通技術(shù)人員在閱讀本描述之后可從媒體呈現(xiàn)描述中的合適信息推導(dǎo)出該信息。若在客戶端處的當(dāng)前壁鐘時(shí)間“現(xiàn)在”落在有利地由諸如“實(shí)況呈現(xiàn)區(qū)間”之類的MPD元素表達(dá)的實(shí)況呈現(xiàn)區(qū)間的任何范圍之外,則該實(shí)況呈現(xiàn)的被描述的段皆是不可訪問的,若在客戶端處的當(dāng)前壁鐘時(shí)間“現(xiàn)在”落在實(shí)況呈現(xiàn)區(qū)間內(nèi),則該實(shí)況呈現(xiàn)的被描述的段中的至少某些段可能是可訪問的。對可訪問段的限制由以下值來掌管壁鐘時(shí)間“現(xiàn)在”(如客戶端可用的)。例如在媒體呈現(xiàn)描述中指定為“時(shí)移緩沖器深度”的所準(zhǔn)許的時(shí)移緩沖器深度 tTSBo客戶端在相對事件時(shí)間、可能僅被允許請求開始時(shí)間tS(r,i)落在(現(xiàn)在-tTSB) 至“現(xiàn)在”的區(qū)間中或者落在使得歷時(shí)為d的段的結(jié)束時(shí)間也被包括(從而得到區(qū)間(現(xiàn)在-tTSB-d)至“現(xiàn)在”)的區(qū)間中的段。更新 MPD在一些實(shí)施例中,服務(wù)器事先并不知道段的文件或段定位符以及開始時(shí)間,因?yàn)槔绶?wù)器位置將改變,或者媒體呈現(xiàn)包括來自不同服務(wù)器的一些廣告,或者媒體呈現(xiàn)的歷時(shí)是未知的,或者服務(wù)器想要混淆后繼段的定位符。在此類實(shí)施例中,服務(wù)器可能僅描述已經(jīng)可訪問或者在發(fā)布了 MPD的該實(shí)例之后不久便可訪問的段。此外,在一些實(shí)施例中,客戶端有利地消費(fèi)接近MPD中描述的媒體的那些媒體,以使得用戶體驗(yàn)到所包含的與媒體內(nèi)容的生成盡可能接近的媒體節(jié)目。一旦客戶端預(yù)計(jì)自己到達(dá)MPD中所描述的媒體段的末尾,它就有利地在服務(wù)器已發(fā)布描述新媒體段的新MPD的預(yù)期下請求MPD的新實(shí)例以繼續(xù)連續(xù)播出。服務(wù)器有利地生成MPD的新實(shí)例并更新MPD以使得客戶端能依賴該規(guī)程進(jìn)行連續(xù)更新。服務(wù)器可使自己的MPD更新規(guī)程連同段生成和發(fā)布適配于其行為舉止如普通客戶端可能的行為舉止的參考客戶端的規(guī)程。若MPD的新實(shí)例僅描述很短的時(shí)間提前量,則客戶端需要頻繁地請求MPD的新實(shí)例。這可能由于不必要的頻繁請求而導(dǎo)致可伸縮性問題以及不必要的上行鏈路和下行鏈路話務(wù)。因此,有關(guān)系的是,一方面要描述盡可能遠(yuǎn)地進(jìn)入將來的段而不必使它們已可訪問,另一方面要使MPD中未預(yù)見的更新能表達(dá)新服務(wù)器位置、準(zhǔn)許插入諸如廣告之類的新內(nèi)容或提供編解碼器參數(shù)的改變。此外,在一些實(shí)施例中,媒體段的歷時(shí)可能很小,諸如在幾秒的范圍中。媒體段的歷時(shí)有利地是靈活的,以便調(diào)節(jié)到可針對投遞或高速緩存性質(zhì)來優(yōu)化的合適段大小、補(bǔ)償實(shí)況服務(wù)中的端對端延遲或應(yīng)對段存儲(chǔ)或投遞的其他方面、或出于其他原因。尤其是在段與媒體呈現(xiàn)歷時(shí)相比很小的情形中,則需要在媒體呈現(xiàn)描述中描述顯著量的媒體段資源和開始時(shí)間。結(jié)果,媒體呈現(xiàn)描述的大小可能很大,這會(huì)不利地影響媒體呈現(xiàn)描述的下載時(shí)間且因此影響媒體呈現(xiàn)的啟動(dòng)延遲以及還有接入鏈路上的帶寬使用。因此,有利的是不僅準(zhǔn)許使用播放列表來描述媒體段列表,且還準(zhǔn)許通過使用模板或URL構(gòu)造規(guī)則來進(jìn)行描述。 模板和URL規(guī)則規(guī)則在本描述中同義地使用。此外,模板可有利地被用來在實(shí)況情形中描述超出當(dāng)前時(shí)間的段定位符。在此類情形中,對MPD的更新本身不是必需的,因?yàn)槎ㄎ环约岸瘟斜硎怯赡0迕枋龅?。然而,可能仍?huì)發(fā)生未預(yù)見的事件,這要求對表示或段的描述進(jìn)行改變。當(dāng)來自多個(gè)不同源的內(nèi)容被拼接在一起時(shí),例如在插入了廣告時(shí),可能需要自適應(yīng)HTTP流送媒體呈現(xiàn)描述上的改變。來自不同源的內(nèi)容可能在各種方面有所不同。實(shí)況呈現(xiàn)期間的另一個(gè)原因在于可能有必要改變用于內(nèi)容文件的URL以提供從一個(gè)實(shí)況發(fā)源服務(wù)器故障轉(zhuǎn)移到另一個(gè)。在一些實(shí)施例中,有利的是若MPD被更新,則對MPD的更新被執(zhí)行以使得經(jīng)更新的 MPD與先前MPD兼容,兼容的意義是指對于直至先前MPD的有效時(shí)間為止的任何時(shí)間,參考客戶端以及因此任何所實(shí)現(xiàn)的客戶端從經(jīng)更新的MPD生成的可訪問段列表與其從MPD的該先前實(shí)例會(huì)生成的可訪問段列表等同地起效。該要求確保了(a)客戶端可立即開始使用新MPD而無需與舊MPD同步,因?yàn)樾翸PD在更新時(shí)間之前就與舊MPD兼容;以及(b)更新時(shí)間無需與對MPD的實(shí)際改變發(fā)生的時(shí)間同步。換言之,對MPD的更新可事先被廣告,并且一旦有新信息可用,服務(wù)器就能替換掉MPD的舊實(shí)例而不必維護(hù)MPD的不同版本。對跨用于一組表示或所有表示的MPD更新的媒體時(shí)基可存在兩種可能性。(a)現(xiàn)有全局時(shí)間線跨該MPD更新而延續(xù)(在本文中被稱為“連續(xù)MPD更新”),或(b)當(dāng)前時(shí)間線結(jié)束并且新時(shí)間線從繼該改變之后的段開始(在本文中被稱為“非連續(xù)MPD更新”)。在考慮到媒體片斷的軌跡以及因此段的軌跡由于跨各軌跡的樣本粒度有所不同故而一般并不在相同的時(shí)間開始和結(jié)束的情況下,這些選項(xiàng)之間的差異可能是明顯的。在正常呈現(xiàn)期間,片斷的一個(gè)軌跡的樣本可能在先前片斷的另一軌跡的一些樣本之前被渲染,即片斷之間可能存在某種交迭,盡管單個(gè)軌跡內(nèi)可能沒有交迭。(a)與(b)之間的差異在于是否可允許跨MPD更新實(shí)現(xiàn)此類交迭。當(dāng)MPD更新是由于完全分開的內(nèi)容的拼接時(shí),此類交迭一般是難以達(dá)成的,因?yàn)樾聝?nèi)容需要新編碼才能與先前內(nèi)容拼接。因此有利的是提供通過為某些段重啟時(shí)間線來非連續(xù)地更新媒體呈現(xiàn)、 以及有可能還在更新之后定義一組新的表示的能力。而且,若內(nèi)容已被獨(dú)立地編碼和分段, 則還避免要將時(shí)戳調(diào)節(jié)成擬合在先前內(nèi)容片的全局時(shí)間線內(nèi)。在更新是出于次要原因,諸如僅僅是向所描述媒體段的列表添加新媒體段時(shí),或者若URL的位置被改變,則交迭和連續(xù)更新可被允許。在非連續(xù)MPD更新的情形中,先前表示的最末段的時(shí)間線在該段中任何樣本的最晚呈現(xiàn)結(jié)束時(shí)間處結(jié)束。下一表示的時(shí)間線(或更準(zhǔn)確而言,媒體呈現(xiàn)的新部分的第一個(gè)媒體段的首次呈現(xiàn)時(shí)間,也被稱為新時(shí)段)典型地且有利地始于與上一時(shí)段的呈現(xiàn)的結(jié)束相同的該時(shí)刻,以確保無縫和連續(xù)播出。這兩種情形在圖11中解說。優(yōu)選且有利的是將MPD更新限制于段邊界。將此類改變或更新限制于段邊界的基本原理如下。首先,對每個(gè)表示的二進(jìn)制元數(shù)據(jù)(典型情況下為電影頭部)的改變至少可在段邊界處發(fā)生。其次,媒體呈現(xiàn)描述可包含指向段的指針(URL)。在某種意義上,MPD是將與媒體呈現(xiàn)相關(guān)聯(lián)的所有段文件編組在一起的“傘”數(shù)據(jù)結(jié)構(gòu)。為了維護(hù)該包容關(guān)系,每個(gè)段可被單個(gè)MPD引用,且當(dāng)該MPD被更新時(shí),有利的是僅在段邊界處更新該MPD。一般不要求段邊界對準(zhǔn),然而對于從不同源拼接的內(nèi)容的情形以及普遍對于非連續(xù)MPD更新,使段邊界對準(zhǔn)是有意義的(具體而言,每個(gè)表示的最末段可在相同的視頻幀結(jié)束并且不可包含呈現(xiàn)開始時(shí)間晚于該幀的呈現(xiàn)時(shí)間的音頻樣本)。非連續(xù)更新隨后可在共同的時(shí)刻(稱為時(shí)段)開始一組新的表示。該組新的表示的有效性的開始時(shí)間例如由時(shí)段開始時(shí)間來提供。每個(gè)表示的相對開始時(shí)間被復(fù)位為0且該時(shí)段的開始時(shí)間將該新時(shí)段中的該組表示放在全局媒體呈現(xiàn)時(shí)間線中。
對于連續(xù)MPD更新,不要求段邊界對準(zhǔn)。每個(gè)替換表示的每個(gè)段可由單個(gè)媒體呈現(xiàn)描述來掌管,且因此對該媒體呈現(xiàn)描述的新實(shí)例的更新請求(其一般因預(yù)計(jì)沒有更多的媒體段在此工作MPD中被描述而被觸發(fā))取決于所消費(fèi)的這一組表示可發(fā)生在不同時(shí)間, 其中該組表示包括預(yù)計(jì)要消非的這組表示。為了支持更一般化情形中MPD元素和屬性的更新,不僅是表示或一組表示,而是可將任何元素與有效性時(shí)間相關(guān)聯(lián)。因此,若MDP的某些元素需要更新,例如在表示的數(shù)目改變了或URL構(gòu)造規(guī)則改變了的場合,則通過為元素的多個(gè)副本提供不相交的有效性時(shí)間,這些元素各自可在指定時(shí)間被分別更新。有效性有利地與全局媒體時(shí)間相關(guān)聯(lián),以使得與有效性時(shí)間相關(guān)聯(lián)的被描述元素在媒體呈現(xiàn)的全局時(shí)間線的時(shí)段里有效。如以上所討論的,在一個(gè)實(shí)施例中,有效性時(shí)間僅被添加到全組表示。每個(gè)全組則構(gòu)成時(shí)段。有效性時(shí)間隨后構(gòu)成該時(shí)段的開始時(shí)間。換言之,在使用有效性元素的具體情形中,全組表示可在由一組表示的全局有效性時(shí)間指示的時(shí)間段里有效。一組表示的有效性時(shí)間被稱為時(shí)段。在新時(shí)段的開始,前一組表示的有效性過期且新一組表示有效。再次注意,有效性時(shí)間段優(yōu)選是不相交的。如上所述,對媒體呈現(xiàn)描述的改變發(fā)生在段邊界處,且因此對于每個(gè)表示,元素改變實(shí)際上發(fā)生在下一段邊界處??蛻舳穗S后可構(gòu)成有效MPD,其包括媒體的呈現(xiàn)時(shí)間內(nèi)的每個(gè)時(shí)刻的段列表。在其中塊包含來自不同表示或來自不同內(nèi)容(例如,來自內(nèi)容段和廣告)的媒體數(shù)據(jù)的情形中或在其他情形中,非連續(xù)塊拼接可能是恰適的。在塊請求流送系統(tǒng)中可能要求對呈現(xiàn)元數(shù)據(jù)的改變僅發(fā)生在塊邊界處。這出于實(shí)現(xiàn)原因可能是有利的,因?yàn)樵趬K內(nèi)更新媒體解碼器參數(shù)可能比僅在塊之間更新這些參數(shù)更加復(fù)雜。在該情形中,可有利地指定如上所描述的有效性區(qū)間可被解釋成近似的,以使得元素被視為從不早于所指定的有效性區(qū)間的開始的第一個(gè)塊邊界至不早于所指定的有效性區(qū)間的末尾的第一個(gè)塊邊界是有效的。以上描述的對塊請求流送系統(tǒng)的新穎增強(qiáng)的示例實(shí)施例在稍后給出的為“對媒體呈現(xiàn)的改變”的小節(jié)中描述。段歷時(shí)信令非連續(xù)更新有效地將呈現(xiàn)分成一系列不相交的稱為時(shí)段的區(qū)間。每個(gè)時(shí)段具有其自己的時(shí)間線用于媒體樣本時(shí)基。時(shí)段內(nèi)的表示的媒體時(shí)基可有利地通過指定每個(gè)時(shí)段或時(shí)段中的每個(gè)表示的段歷時(shí)的單獨(dú)的緊湊列表來指示。與MPD內(nèi)的元素相關(guān)聯(lián)的例如稱為時(shí)段開始時(shí)間之類的屬性可指定媒體呈現(xiàn)時(shí)間內(nèi)的某些元素的有效性時(shí)間。該屬性可被添加到MPD的任何元素(可對元素?fù)Q上可被指派有效性的屬性)。對于非連續(xù)MPD更新,所有表示的段可在非連續(xù)點(diǎn)結(jié)束。這一般至少意味著該非連續(xù)點(diǎn)之前的最末段與先前各段具有不同歷時(shí)。信令通知段歷時(shí)可涉及指示所有段具有相同的歷時(shí)或者為每個(gè)段指示單獨(dú)的歷時(shí)。可能希望具有關(guān)于段歷時(shí)列表的緊湊表示,這在有許多段具有相同歷時(shí)的情形中是高效的。一個(gè)表示或一組表示中的每個(gè)段的歷時(shí)可有利地用單個(gè)串來實(shí)現(xiàn),該串指定了從非連續(xù)更新的開始(即該時(shí)段的開始)直至MPD中描述的最末媒體段為止的單個(gè)區(qū)間的所有段歷時(shí)。在一個(gè)實(shí)施例中,該元素的格式是與包含段歷時(shí)條目列表的產(chǎn)生式相符的文本串,其中每個(gè)條目包含歷時(shí)屬性dur以及該屬性的可任選的乘數(shù)mult,該乘數(shù)指示該表示包含第一條目的<mult>個(gè)其歷時(shí)為第一條目的<dur>的段,隨后是第二條目的<mult>個(gè)其歷時(shí)為第二條目的<dur>的段,依此類推。每個(gè)歷時(shí)條目指定一個(gè)或更多個(gè)段的歷時(shí)。若<dur>值后面跟有“*”字符和數(shù)字, 則該數(shù)字指定具有該歷時(shí)(以秒計(jì))的連貫段的數(shù)目。若不存在乘數(shù)符號“*”,則段數(shù)目為 1。若存在“*”而沒有后繼數(shù)字,則所有后續(xù)段具有所指定的歷時(shí)且該列表中可能沒有進(jìn)一步的條目。例如,串“30*”意味著所有段具有30秒的歷時(shí)。串“30*12 10.5”指示有12個(gè)歷時(shí)30秒的段,繼以一個(gè)歷時(shí)為10. 5秒的段。若針對每個(gè)替換表示分開地指定段歷時(shí),則每個(gè)區(qū)間內(nèi)的段歷時(shí)的總和對于每個(gè)表示而言可以是相同的。在視頻軌跡的情形中,該區(qū)間在每個(gè)替換表示中可結(jié)束于相同的幀。本領(lǐng)域普通技術(shù)人員在閱讀本公開之際可發(fā)現(xiàn)以緊湊方式來表達(dá)段歷時(shí)的類似和等效途徑。在另一實(shí)施例中,由信號“歷時(shí)屬性 < 歷時(shí) >”來信令通知除了最后一個(gè)段以外,對于該表示中的所有段而言段的歷時(shí)是恒定的。非連續(xù)更新之前的最末段的歷時(shí)可以較短, 只要提供了下一非連續(xù)更新的開始點(diǎn)或新時(shí)段的開始即可,而這則意味著最末段的歷時(shí)延及下一時(shí)段的開始。對表示元數(shù)據(jù)的改變和更新指示諸如電影頭部“moov”改變之類的經(jīng)二進(jìn)制編碼的表示元數(shù)據(jù)的改變可按不同方式來完成(a)在MPD中引用的單獨(dú)文件中可以對所有表示有一個(gè)moov包,(b)在每個(gè)替換表示中引用的單獨(dú)文件中可以對每個(gè)替換表示有一個(gè)moov包,(c)每個(gè)段可包含moov 包且因此是自含式的,(d)在與MPD—起的一個(gè)3GP文件中可以有用于所有表示的moov包。注意在(a)和(b)的情形中,可有利地將單個(gè)“moov”與來自上文的有效性概念相組合,組合的意義是指在MPD中可以引用更多的“moov”包,只要其有效性不相交即可。例如,有了時(shí)段邊界的定義,舊時(shí)段中的‘moov’的有效性可隨著新時(shí)段的開始而過期。在選項(xiàng)(a)的情形中,對單個(gè)moov包的引用可被指派有效性元素??稍试S多個(gè)呈現(xiàn)頭部,但每個(gè)時(shí)間僅可有一個(gè)呈現(xiàn)頭部有效。在另一實(shí)施例中,如以上定義的時(shí)段中的整組表示或整個(gè)時(shí)段的有效性時(shí)間可被用作該表示元數(shù)據(jù)的有效性時(shí)間,典型地作為moov 頭部來提供。在選項(xiàng)(b)的情形中,對每個(gè)表示的moov包的引用可被指派有效性元素??稍试S多個(gè)表示頭部,但每個(gè)時(shí)間僅可有一個(gè)表示頭部有效。在另一實(shí)施例中,如以上定義的整個(gè)表示或整個(gè)時(shí)段的有效性時(shí)間可被用作該表示元數(shù)據(jù)的有效性時(shí)間,典型地作為moov頭部來提供。在選項(xiàng)(c)的情形中,可以不在MPD中添加信令,但可在媒體流中添加附加信令以指示moov包對于任何即將到來的段是否將改變。這在下文“信令通知段元數(shù)據(jù)內(nèi)的更新” 這一小節(jié)的上下文中進(jìn)一步解釋。信令通知段元數(shù)據(jù)內(nèi)的更新
為了避免頻繁更新媒體呈現(xiàn)描述以獲得關(guān)于潛在更新的知識(shí),有利的是連同媒體段一起信令通知任何此類更新。在媒體段本身內(nèi)可提供附加的一個(gè)或多個(gè)元素,其可指示有經(jīng)更新的元數(shù)據(jù)(諸如媒體呈現(xiàn)描述)可用并且必須在某個(gè)時(shí)間量內(nèi)被訪問才能成功地繼續(xù)創(chuàng)建可訪問段列表。此外,對于經(jīng)更新的元數(shù)據(jù)文件,此類元素可提供文件標(biāo)識(shí)符(諸如URL)或可用來構(gòu)造文件標(biāo)識(shí)符的信息。經(jīng)更新元數(shù)據(jù)文件可包括等于將與該呈現(xiàn)的原始元數(shù)據(jù)文件中提供的元數(shù)據(jù)修改成指示有效性區(qū)間的元數(shù)據(jù)、連同也伴隨著有效性區(qū)間的附加元數(shù)據(jù)。此類指示可在媒體呈現(xiàn)的所有可用表示的媒體段中提供。訪問塊請求流送系統(tǒng)的客戶端在檢測到媒體塊內(nèi)的此類指示之際可使用文件下載協(xié)議或其他手段來檢索經(jīng)更新元數(shù)據(jù)文件。藉此為客戶端提供了關(guān)于媒體呈現(xiàn)描述中的改變以及這些改變將發(fā)生或已發(fā)生的時(shí)間的信息。有利地,每個(gè)客戶端僅在此類改變發(fā)生時(shí)請求經(jīng)更新媒體呈現(xiàn)描述一次,而非“輪詢”并接收該文件許多次以獲得可能的更新或改變。改變的示例包括表示的添加或移除,對一個(gè)或更多個(gè)表示的改變,諸如比特率、分辨率、縱橫比、所包括的軌跡或編解碼器參數(shù)的改變,以及對URL構(gòu)造規(guī)則的改變,例如用于廣告的不同發(fā)源服務(wù)器。一些改變可能僅影響與表示相關(guān)聯(lián)的初始化段,諸如電影頭部 ("moov")原子,而其他改變可能影響媒體呈現(xiàn)描述(MPD)。在點(diǎn)播內(nèi)容的情形中,這些改變及其時(shí)基可以事先知曉且可在媒體呈現(xiàn)描述中信令通知。對于實(shí)況內(nèi)容,改變可能在它們發(fā)生的時(shí)間點(diǎn)之前是未知的。一個(gè)解決方案是允許在特定URL處可用的媒體呈現(xiàn)描述被動(dòng)態(tài)地更新并且要求客戶端定期地請求該MPD以便檢測改變。該解決方案在可伸縮性(發(fā)源服務(wù)器負(fù)荷以及高速緩存效率)意義上有缺點(diǎn)。 在具有大量觀眾的場景中,高速緩存可能在MPD的先前版本已從高速緩存過期之后并在新版本被接收到之前接收到許多對MPD的請求,且所有這些請求可能被轉(zhuǎn)發(fā)給發(fā)源服務(wù)器。 發(fā)源服務(wù)器可能需要不斷地處理來自高速緩存的對MPD的每個(gè)經(jīng)更新版本的請求。而且, 這些更新可能不容易與媒體呈現(xiàn)中的改變在時(shí)間上對準(zhǔn)。由于HTTP流送的優(yōu)點(diǎn)之一在于利用標(biāo)準(zhǔn)web基礎(chǔ)設(shè)施和服務(wù)以獲得可伸縮性的能力,因此優(yōu)選的解決方案可僅涉及“靜態(tài)”(即,可高速緩存的)文件而不依賴于客戶端 “輪詢”文件以查看它們是否已改變。討論并提議了用于解決包括媒體呈現(xiàn)描述和二進(jìn)制表示元數(shù)據(jù)(諸如自適應(yīng) HTTP流送媒體呈現(xiàn)中的“moov”原子)的元數(shù)據(jù)的更新的解決方案。對于實(shí)況內(nèi)容的情形,在構(gòu)造MPD時(shí)可能不知道MPD或“moov”可能發(fā)生改變的時(shí)間點(diǎn)。由于出于帶寬和可伸縮性原因一般應(yīng)當(dāng)避免頻繁“輪詢IPD以檢查更新,因此對MPD 的更新可在段文件自身中“帶內(nèi)”地指示,即每個(gè)媒體段可具有指示更新的選項(xiàng)。取決于上文的段格式(a)到(c),可信令通知不同的更新。一般而言,可有利地在段內(nèi)的信號中提供以下指示MPD可能在請求該表示內(nèi)的下一段或其開始時(shí)間大于當(dāng)前段的開始時(shí)間的任何下一段之前被更新的指示符。更新可事先被宣告,以指示該更新只需要在晚于該下一段的任何段發(fā)生。在媒體段的定位符改變了的情形中,該MPD更新還可用來更新二進(jìn)制表示元數(shù)據(jù),諸如電影頭部。另一信號可指示在該段完成時(shí),不應(yīng)再請求更多將時(shí)間提前的段。在段是根據(jù)段格式(C)來格式化,即每個(gè)媒體段可包含諸如電影頭部之類的自初始化元數(shù)據(jù)的情形中,則可添加另一信號,以指示后續(xù)段包含經(jīng)更新的電影頭部(moov)。這有利地允許將電影頭部包括在段中,但該電影頭部僅在若先前段指示電影頭部更新的情況下或在當(dāng)切換表示時(shí)進(jìn)行查找或隨機(jī)訪問的情形中才需要被客戶端請求。在其他情形中, 客戶端可發(fā)出對段的字節(jié)范圍請求,其排除電影頭部的下載,因此有利地節(jié)省了帶寬。在另一實(shí)施例中,若信令通知了 MPD更新指示,則該信號還可包含關(guān)于經(jīng)更新的媒體呈現(xiàn)描述的諸如URL之類的定位符。在非連續(xù)更新的情形中,經(jīng)更新的MPD可使用諸如新時(shí)段和舊時(shí)段之類的有效性屬性來描述更新前后的呈現(xiàn)。這可以有利地被用來準(zhǔn)許如以下進(jìn)一步描述的時(shí)移觀看,但還有利地允許MPD更新在其所包含的改變生效之前任何時(shí)間被信令通知??蛻舳丝闪⒓聪螺d新MPD并將其應(yīng)用于正在進(jìn)行的呈現(xiàn)。在具體實(shí)現(xiàn)中,對媒體呈現(xiàn)描述、moov頭部或呈現(xiàn)結(jié)束的任何改變的信令通知可被包含在遵循使用ISO基媒體文件格式的包結(jié)構(gòu)的段格式的規(guī)則來格式化的流送信息包中。該包可為任何不同更新提供專門信號。流送信息包定義包類型‘sinf,容器無強(qiáng)制性的否數(shù)量0或 1。流送信息包包含關(guān)于文件是哪個(gè)流送呈現(xiàn)的一部分的信息。句法
aligned(8) class StreamingInformationBox extends FullBox('sinf) { unsigned int(32) streaming—information_flags;
III以下是可任選字段
string mpdlocation
}SXstreaming_information_flags (流送信息標(biāo)志)包含以下各項(xiàng)中的O個(gè)或更多個(gè)的邏輯或0x00000001后續(xù)有電影頭部更新0x00000002呈現(xiàn)描述更新0x00000004 呈現(xiàn)結(jié)束當(dāng)且僅當(dāng)呈現(xiàn)描述更新(!Presentation Description update)標(biāo)志被置位時(shí)mpd_ location (mpd位置)出現(xiàn),并且其提供關(guān)于新的媒體呈現(xiàn)描述的統(tǒng)一資源定位符。實(shí)況服各的MPD更新的示例使用情形假設(shè)服務(wù)提供方想要使用本文中描述的增強(qiáng)型塊請求流送來提供實(shí)況足球比賽。 或許幾百萬用戶可能想要訪問該比賽的呈現(xiàn)。該實(shí)況事件被請求暫停時(shí)的休息或該行動(dòng)中的其他間歇偶發(fā)地打斷,在此期間可加插廣告。典型情況下,對于休息的確切時(shí)基完全或幾乎沒有事先通知。服務(wù)提供方可能需要提供冗余的基礎(chǔ)設(shè)施(例如,編碼器和服務(wù)器)以在實(shí)況比賽期間有任何組件故障情形中能進(jìn)行無縫轉(zhuǎn)切。假設(shè)用戶Arma在公交車上用她的移動(dòng)設(shè)備訪問該服務(wù)并且該服務(wù)立即可用。她旁邊坐著另一用戶Paul,Paul在他的膝上型設(shè)備上觀看該比賽。進(jìn)了球且兩個(gè)人在相同的時(shí)間慶祝該事件。Paul告訴Anna該比賽中的第一個(gè)球甚至更激動(dòng)人心并且Anna使用該服務(wù)從而她能回看30分鐘前的比賽。在看了該進(jìn)球之后,她回到實(shí)況比賽。為了解決該使用情形,服務(wù)提供方應(yīng)當(dāng)能夠更新MPD,向客戶端信令通知有經(jīng)更新的MPD可用,并準(zhǔn)許客戶端訪問流送服務(wù)以使得其能接近實(shí)時(shí)地呈現(xiàn)該數(shù)據(jù)。按與段投遞異步的方式對MPD進(jìn)行更新是可行的,如本文中別處所解釋的。服務(wù)器可向接收機(jī)提供MPD在一定時(shí)間里不更新的擔(dān)保。服務(wù)器可依賴于當(dāng)前MPD。然而,當(dāng) MPD在某個(gè)最小更新期之前就被更新時(shí)無需任何顯式信令。完全同步的播出是幾乎難以達(dá)成的,因?yàn)榭蛻舳丝赡茉趯Σ煌腗PD更新實(shí)例進(jìn)行操作因此客戶端可能有漂移。使用MPD更新,服務(wù)器可傳達(dá)改變并且客戶端可被提醒有改變,即使在呈現(xiàn)期間亦然。逐段基礎(chǔ)上的帶內(nèi)信令可被用來指示MPD的更新,因此更新可能被限于段邊界,但在絕大多數(shù)應(yīng)用中這應(yīng)當(dāng)是可接受的??梢蕴砑尤缦碌腗PD元素,其提供MPD的以壁鐘時(shí)間計(jì)的發(fā)布時(shí)間以及添加在段開頭以信令通知要求MPD更新的可任選MPD更新包。該更新可如同MPD那樣階層式地進(jìn)行。MPD “發(fā)布時(shí)間”提供MPD的唯一性標(biāo)識(shí)符以及MPD何時(shí)發(fā)出。它還提供用于更新規(guī)程的錨。MPD更新包可存在于MPD中的“styp”包之后,并且由包類型="mupe"定義,不需要容器、不是強(qiáng)制性的且具有數(shù)量0或1。MPD更新包包含關(guān)于段是哪個(gè)媒體呈現(xiàn)的一部分的信息。示例句法如下
aligned(8) class MPDUpdateBox extends FullBox('mupe') { unsigned int(3) mpd information flags; unsigned int(l) new location flag; unsigned int(28) latest_mpd—update time; m以下是可任選字段
string mpd一location }MPDUpdateBox (MPD更新包)類的各種對象的語義可如下mpd_information_flags(mpd信息標(biāo)志)以下各項(xiàng)中的O個(gè)或更多個(gè)的邏輯或OxOO現(xiàn)在的媒體呈現(xiàn)描述更新
0x01將來的媒體呈現(xiàn)描述更新0x02呈現(xiàn)結(jié)束0x03 0x07 保留new_location flag(新位置標(biāo)志)若置為 1,則在 mpd_location (mpd 位置)中指定的新位置處有新的媒體呈現(xiàn)描述可用。latest_mpd_update time (最新mpd更新時(shí)間)指定相對于最新MPD的MPD發(fā)出時(shí)間最晚必需進(jìn)行MPD更新的時(shí)間(以ms計(jì))??蛻舳丝蛇x擇在其與現(xiàn)在之間的任何時(shí)間更新MPD。mpd_l0Cati0n(mpd位置)當(dāng)且僅當(dāng)“新位置標(biāo)志”被置位時(shí)出現(xiàn),且若如此,則 “mpd位置”提供關(guān)于新的媒體呈現(xiàn)描述的統(tǒng)一資源定位符。若更新所使用的帶寬成問題,則服務(wù)器可供應(yīng)針對某些設(shè)備能力的MPD以使得只有這些部分被更新。時(shí)移觀看和網(wǎng)絡(luò)PVR在時(shí)移觀看得到支持時(shí),可能在該會(huì)話的壽命時(shí)間里碰巧有兩個(gè)或更多個(gè)MPD或電影頭部是有效的。在這種情形中,通過在必要時(shí)更新MPD,但添加有效性機(jī)制或時(shí)段概念, 便可對整個(gè)時(shí)間窗都有有效的MPD存在。這意味著服務(wù)器可確保任何MPD和電影頭部在落在用于時(shí)移觀看的有效時(shí)間窗內(nèi)的任何時(shí)間段上都是被宣告的。由客戶端來確保其當(dāng)前呈現(xiàn)時(shí)間的可用MPD和元數(shù)據(jù)是有效的。還可支持僅使用少量的MPD更新來將實(shí)況會(huì)話遷移到網(wǎng)絡(luò)PVR會(huì)話。特殊媒體段當(dāng)在塊請求流送系統(tǒng)內(nèi)使用IS0/IEC 14496-12的文件格式時(shí)的問題在于,如上文描述的,將呈現(xiàn)的單個(gè)版本的媒體數(shù)據(jù)存儲(chǔ)在按連貫時(shí)間段安排的多個(gè)文件中可能是有利的。此外,將每個(gè)文件安排成始于隨機(jī)訪問點(diǎn)可能是有利的。此外,可能有利的是在視頻編碼過程期間選取查找點(diǎn)的位置并基于在編碼過程期間作出的對查找點(diǎn)的選取來將呈現(xiàn)分段成各自始于查找點(diǎn)的多個(gè)文件,其中每個(gè)隨機(jī)訪問點(diǎn)可以置于文件開頭也可以不置于文件開頭,但其中每個(gè)文件始于隨機(jī)訪問點(diǎn)。在具有上述性質(zhì)的一個(gè)實(shí)施例中,呈現(xiàn)元數(shù)據(jù)或媒體呈現(xiàn)描述可包含每個(gè)文件的確切歷時(shí),其中歷時(shí)例如被認(rèn)為表示文件的視頻媒體的開始時(shí)間與下一文件的視頻媒體的開始時(shí)間之差。基于呈現(xiàn)元數(shù)據(jù)中的該信息,客戶端能夠構(gòu)造媒體呈現(xiàn)的全局時(shí)間線與每個(gè)文件內(nèi)的媒體的局部時(shí)間線之間的映射。在另一實(shí)施例中,通過改為指定每個(gè)文件或段具有相同歷時(shí)可有利地減小呈現(xiàn)元數(shù)據(jù)的大小。然而,在這種情形中并且在根據(jù)上述方法來構(gòu)造媒體文件的場合,每個(gè)文件的歷時(shí)可能并不嚴(yán)格等于在媒體呈現(xiàn)描述中指定的歷時(shí),因?yàn)樵谧栽撐募_始起恰好過了該指定歷時(shí)的點(diǎn)處可能并無隨機(jī)訪問點(diǎn)存在?,F(xiàn)在描述本發(fā)明的又一實(shí)施例,用于在即使有以上提及的矛盾的情況下也能實(shí)現(xiàn)塊請求流送系統(tǒng)的正確操作。在該方法中,可在每個(gè)文件內(nèi)提供如下的元素,該元素指定該文件內(nèi)的媒體的局部時(shí)間線(其指根據(jù)IS0/IEC 14496-12的從時(shí)戳0開始的、可供對照著來指定該文件中的媒體樣本的解碼和合成時(shí)戳的時(shí)間線)向全局呈現(xiàn)時(shí)間線的映射。該映射信息可包括全局呈現(xiàn)時(shí)間中的與局部文件時(shí)間線中的0時(shí)戳相對應(yīng)的單個(gè)時(shí)戳。該映射信息可替換地包括偏移值,其根據(jù)呈現(xiàn)元數(shù)據(jù)中提供的信息來指定與局部文件時(shí)間線中的0時(shí)戳相對應(yīng)的全局呈現(xiàn)時(shí)間與同文件開始相對應(yīng)的全局呈現(xiàn)時(shí)間之間的差量。此類包的示例可例如是軌跡片斷解碼時(shí)間(‘tfdt’ )包或軌跡片斷調(diào)整包 (Hfad')連同軌跡片斷媒體調(diào)整(‘tfma’ )包。包括段列表牛成的示例客戶端現(xiàn)在將描述示例客戶端。它可被用作服務(wù)器用來確保MPD的恰當(dāng)生成和更新的參考客戶端。HTTP流送客戶端由MPD中提供的信息來指導(dǎo)。假定客戶端能訪問其在時(shí)間T(即它能成功接收MPD的時(shí)間)接收到的MPD。確定成功接收可包括客戶端獲得經(jīng)更新的MPD 或客戶端驗(yàn)證出該MPD自先前的成功接收以來尚未被更新過。以下介紹示例客戶端行為。為了向用戶提供連續(xù)流送服務(wù),客戶端首先解析MPD 并且在計(jì)及如以下詳述的可能使用播放列表或使用URL構(gòu)造規(guī)則的段列表生成規(guī)程的情況下為每個(gè)表示創(chuàng)建在當(dāng)前系統(tǒng)時(shí)間的客戶端本地時(shí)間可訪問的段的列表。隨后,客戶端基于表示屬性中的信息以及其他信息(例如可用帶寬和客戶端能力)選擇一個(gè)或多個(gè)表示。取決于編組,表示可自立呈現(xiàn)或與其他表示聯(lián)合呈現(xiàn)。對于每個(gè)表示,客戶端獲取諸如該表示的“moov”頭部之類的二進(jìn)制元數(shù)據(jù)(若有)、以及所選表示的媒體段??蛻舳送ㄟ^可能使用段列表之類以請求段或段的字節(jié)范圍來訪問媒體內(nèi)容??蛻舳丝稍陂_始該呈現(xiàn)之前初始地緩沖媒體,并且一旦該呈現(xiàn)已開始,客戶端就通過在計(jì)及MPD更新規(guī)程的情況下不斷請求段或段部分來繼續(xù)消費(fèi)該媒體內(nèi)容??蛻舳丝稍谟?jì)及經(jīng)更新的MPD信息和/或來自其環(huán)境的經(jīng)更新信息(例如,可用帶寬的改變)的情況下切換表示。以對包含隨機(jī)訪問點(diǎn)的媒體段的任何請求,客戶端就可切換到不同的表示。在前移,即當(dāng)前系統(tǒng)時(shí)間(稱為“現(xiàn)在時(shí)間”,用于表示相對于呈現(xiàn)的時(shí)間)前進(jìn)時(shí),客戶端消費(fèi)可訪問的段。隨著“現(xiàn)在時(shí)間”中的每次前進(jìn),客戶端有可能根據(jù)本文中指定的規(guī)程擴(kuò)展每個(gè)表示的可訪問段的列表。若尚未到達(dá)媒體呈現(xiàn)結(jié)束且若當(dāng)前回放時(shí)間落在客戶端預(yù)計(jì)會(huì)用盡任何正在消費(fèi)或?qū)⒁M(fèi)的表示的MPD中所描述的媒體中的媒體的閾值以內(nèi),則客戶端可請求MPD的更新,其帶有新的取回時(shí)間“接收時(shí)間T”。一旦接收到,客戶端隨后計(jì)及有可能經(jīng)更新的 MPD和新時(shí)間T來生成可訪問段列表。圖四解說了在客戶端處不同時(shí)間的實(shí)況服務(wù)的規(guī)程。可訪問段列表生成假定HTTP流送客戶端能訪問MPD并且可能想要生成對于壁鐘時(shí)間“現(xiàn)在”而言可訪問的段的列表。客戶端以某個(gè)精度同步到全局時(shí)間基準(zhǔn),但有利地不要求直接同步到 HTTP流送服務(wù)器。每個(gè)表示的可訪問段列表優(yōu)選定義為段開始時(shí)間和段定位符的列表對,其中不失一般性,段開始時(shí)間可定義為是相對于表示的開始而言的。表示的開始可與時(shí)段的開始對準(zhǔn)(若應(yīng)用該概念)。否則,表示開始可在媒體呈現(xiàn)的開始處??蛻舳耸褂美绫疚闹羞M(jìn)一步定義的URL構(gòu)造規(guī)則和時(shí)基。一旦獲得了所描述段的列表,該列表被進(jìn)一步限于可訪問的段,它們可以是完整媒體呈現(xiàn)的段的子集。該構(gòu)造由時(shí)鐘在客戶端“現(xiàn)在”時(shí)間的當(dāng)前值來掌管。一般而言,段僅在一組可用性時(shí)間以內(nèi)的任何 “現(xiàn)在”時(shí)間可用。對于落在該窗口以外的“現(xiàn)在”時(shí)間,則沒有段可用。此外,對于實(shí)況服務(wù),假定某個(gè)時(shí)間“檢查時(shí)間(checktime) ”提供關(guān)于將此媒體描述到進(jìn)入將來多遠(yuǎn)的信息。 “檢查時(shí)間”是在MPD記載的媒體時(shí)間軸上定義的;當(dāng)客戶端的回放時(shí)間到達(dá)檢查時(shí)間時(shí), 其有利地請求新MPD。;當(dāng)客戶端的回放時(shí)間到達(dá)檢查時(shí)間時(shí),其有利地請求新MPD。
隨后,段列表由檢查時(shí)間連同MPD屬性TimeSiiftBufferD^th (時(shí)移緩沖器深度) 進(jìn)一步限制,以使得可用媒體段僅有媒體段的開始時(shí)間與表示開始時(shí)間之和落入“現(xiàn)在”減去時(shí)移緩沖器深度減去上個(gè)被描述的段的歷時(shí)與檢查時(shí)間或“現(xiàn)在”中的較小值之間的區(qū)間的那些段。可伸縮塊有時(shí),可用帶寬下降得如此之低,從而接收機(jī)處當(dāng)前正在接收的一個(gè)或多個(gè)塊變得不大可能被及時(shí)完全接收以供不暫停呈現(xiàn)地播出。接收機(jī)可能事先檢測到此類情形。例如,接收機(jī)可確定自己正在接收每6單位的時(shí)間編碼5單位的媒體的塊,并且具有4單位的媒體的緩沖器,因此接收機(jī)可能預(yù)期不得不將該呈現(xiàn)停滯或暫停到大約M單位的時(shí)間以后。在充分注意到此點(diǎn)的情況下,接收機(jī)可通過例如放棄當(dāng)前的塊流之類來對此類情形作出反應(yīng)并開始請求來自該內(nèi)容的不同表示(諸如每單位播出時(shí)間使用較少帶寬的表示)的一個(gè)或多個(gè)塊。例如,若接收機(jī)切換到其中對于相同大小的塊而言,塊所編碼的視頻時(shí)間至少多了 20%的表示,則接收機(jī)可能能夠消除停滯直至帶寬情形得到改善的需要。然而,使接收機(jī)完全丟棄已從被放棄的表示接收到的數(shù)據(jù)可能是浪費(fèi)的。在本文中描述的塊流送系統(tǒng)的實(shí)施例中,每個(gè)塊內(nèi)的數(shù)據(jù)可按以下方式來編碼和安排塊內(nèi)的數(shù)據(jù)的某些前綴可被用來在尚未接收到該塊的其余部分的情況下繼續(xù)該呈現(xiàn)。例如,可使用可伸縮視頻編碼的公知技術(shù)。此類視頻編碼方法的示例包括H. 264可伸縮視頻編碼(SVC) 或H. 264高級視頻編碼(AVC)的時(shí)間可伸縮性。有利地,該方法允許呈現(xiàn)基于塊中已接收到的部分來繼續(xù)進(jìn)行,即使對一個(gè)或多個(gè)塊的接收例如由于可用帶寬的改變而可能被放棄。 另一優(yōu)點(diǎn)在于單個(gè)數(shù)據(jù)文件可被用作該內(nèi)容的多個(gè)不同表示的源。這是可能的,例如通過利用選擇塊中與所要求的表示相對應(yīng)的子集的HTTP部分獲取請求來實(shí)現(xiàn)。本文中詳述的一種改進(jìn)是增強(qiáng)型段可伸縮段映射。該可伸縮段映射包含段中不同層的位置,以使得客戶端能相應(yīng)地訪問這些段的各部分并提取各層。在另一實(shí)施例中,段中的媒體數(shù)據(jù)被排序,以使得在從段開頭逐漸下載數(shù)據(jù)的同時(shí)段的質(zhì)量也在提高。在另一實(shí)施例中,質(zhì)量的逐漸提高被應(yīng)用于段中包含的每個(gè)塊或片斷,以使得能進(jìn)行片斷請求來解決可伸縮辦法。圖12是示出可伸縮塊的一方面的圖。在該圖中,發(fā)射機(jī)1200輸出元數(shù)據(jù)1202、 可伸縮層1 (1204)、可伸縮層2 (1206)、以及可伸縮層3 (1208),其中后者被延誤了。接收機(jī)1210隨后可使用元數(shù)據(jù)1202、可伸縮層1(1204)和可伸縮層2(1206)來呈現(xiàn)媒體呈現(xiàn) 1212。獨(dú)立可伸縮性層如以上所解釋的,不希望塊請求流送系統(tǒng)在接收機(jī)不能及時(shí)接收到媒體數(shù)據(jù)的特定表示的所請求塊供其播出時(shí)不得不停滯,因?yàn)檫@往往造成不良用戶體驗(yàn)。通過將所選取的表示的數(shù)據(jù)率限制成比可用帶寬小得多以使該呈現(xiàn)不太可能有任何給定部分不會(huì)被及時(shí)接收到,就能夠避免、減少或緩解停滯,但該策略具有媒體質(zhì)量必然比可用帶寬原則上能支持的媒體質(zhì)量低得多。比可能達(dá)到的質(zhì)量低的呈現(xiàn)也可能被解釋為不良用戶體驗(yàn)。因此, 塊請求流送系統(tǒng)的設(shè)計(jì)者在設(shè)計(jì)客戶端規(guī)程、客戶端編程或硬件配置時(shí)面臨著以下選擇 要么請求具有比可用帶寬低得多的數(shù)據(jù)率的內(nèi)容版本,在這種情形中用戶可能遭受不良媒體質(zhì)量;要么請求具有接近可用帶寬的數(shù)據(jù)率的內(nèi)容版本,在這種情形中用戶在呈現(xiàn)期間隨著可用帶寬改變有高概率會(huì)遭受暫停。為了處置此類情形,本文中描述的塊流送系統(tǒng)可被配置成獨(dú)立地處置多個(gè)可伸縮性層,以使得接收機(jī)能作出分層請求并且發(fā)射機(jī)能響應(yīng)于分層請求。在此類實(shí)施例中,每個(gè)塊的經(jīng)編碼媒體數(shù)據(jù)可被劃分成多個(gè)不相交的片(在本文中被稱為“層”),以使得層組合構(gòu)成塊的整個(gè)媒體數(shù)據(jù)并且使得已接收到這些層的某些子集的客戶端可執(zhí)行對該內(nèi)容的表示的解碼和呈現(xiàn)。在該辦法中,流中的數(shù)據(jù)的排序使得毗連范圍在質(zhì)量上呈遞增且元數(shù)據(jù)反映這一點(diǎn)。可用來生成具有上述性質(zhì)的層的技術(shù)的示例是例如ITU-T標(biāo)準(zhǔn)H. ^4/SVC中描述的可伸縮視頻編碼技術(shù)。可用來生成具有上述性質(zhì)的層的技術(shù)的另一示例是如ITU-T標(biāo)準(zhǔn) H. 264/AVC中提供的時(shí)間可伸縮性層技術(shù)。在這些實(shí)施例中,元數(shù)據(jù)可在MPD中或在段自身中提供,從而使得能構(gòu)造對任何給定塊的個(gè)體層和/或?qū)咏M合和/或多個(gè)塊的給定層和/或多個(gè)塊的層組合的請求。例如,構(gòu)成塊的層可被存儲(chǔ)在單個(gè)文件內(nèi)且可提供指定該文件內(nèi)與個(gè)體層相對應(yīng)的字節(jié)范圍的元數(shù)據(jù)。能夠指定字節(jié)范圍的文件下載協(xié)議(例如HTTP 1. 1)可被用來請求個(gè)體層或多個(gè)層。此外,如本領(lǐng)域技術(shù)人員在查閱本公開之際將清楚的,以上描述的涉及可變大小的塊及可變的塊組合的構(gòu)造、請求和下載的技術(shù)也可應(yīng)用于本上下文。MA現(xiàn)在描述數(shù)個(gè)實(shí)施例,它們可有利地由塊請求流送客戶端采用以通過使用如以上描述地劃分成層的媒體數(shù)據(jù)來達(dá)成相比于現(xiàn)有技術(shù)在用戶體驗(yàn)上的改善和/或在服務(wù)基礎(chǔ)設(shè)施容量要求上的減少。在第一實(shí)施例中,可應(yīng)用塊請求流送系統(tǒng)的已知技術(shù),其修改在于內(nèi)容的不同版本在一些情形中層的不同組合所取代。這就是說在現(xiàn)有系統(tǒng)可提供內(nèi)容的兩種相異表示的場合,此處描述的增強(qiáng)型系統(tǒng)便可提供兩個(gè)層,其中現(xiàn)有系統(tǒng)中內(nèi)容的一個(gè)表示在比特率、 質(zhì)量以及可能還有其他度量方面類似于增強(qiáng)型系統(tǒng)中的第一層,而現(xiàn)有系統(tǒng)中內(nèi)容的第二表示在比特率、質(zhì)量以及可能還有其他度量方面類似于增強(qiáng)型系統(tǒng)中這兩個(gè)層的組合。因此,該增強(qiáng)型系統(tǒng)內(nèi)要求的存儲(chǔ)容量相比于現(xiàn)有系統(tǒng)中要求的存儲(chǔ)容量得以減小。此外,現(xiàn)有系統(tǒng)的客戶端可發(fā)出對一個(gè)表示或另一表示的塊的請求,而該增強(qiáng)型系統(tǒng)的客戶端可發(fā)出對塊的第一層或兩層的請求。因此,這兩個(gè)系統(tǒng)中的用戶體驗(yàn)是相似的。此外,提供了改善的高速緩存,因?yàn)榧词故菍τ诓煌馁|(zhì)量,使用的也是共用的段,由此段被高速緩存的似然性更高。在第二實(shí)施例中,采用現(xiàn)在描述的層方法的增強(qiáng)型塊請求流送系統(tǒng)中的客戶端可為媒體編碼的若干層中的每一層維護(hù)分開的數(shù)據(jù)緩沖器。如對于客戶端設(shè)備內(nèi)的數(shù)據(jù)管理的領(lǐng)域中的技術(shù)人員而言將清楚的,這些“分開的”緩沖器可通過為這些分開的緩沖器分配物理上或邏輯上分開的存儲(chǔ)器區(qū)域或通過其他技術(shù)來實(shí)現(xiàn),其中所緩沖的數(shù)據(jù)被存儲(chǔ)在單個(gè)或多個(gè)存儲(chǔ)器區(qū)域中且來自不同層的數(shù)據(jù)的分開是通過使用包含對來自分開的層的數(shù)據(jù)的存儲(chǔ)位置的引用的數(shù)據(jù)結(jié)構(gòu)來邏輯地達(dá)成的,且因此在下文中,術(shù)語“分開的緩沖器” 應(yīng)當(dāng)被理解為包括其中相異層的數(shù)據(jù)可被分開標(biāo)識(shí)的任何方法??蛻舳嘶诿總€(gè)緩沖器的占用率發(fā)出對每個(gè)塊的個(gè)體層的請求,例如這些層可按優(yōu)先級次序排序以使得對來自一個(gè)層的數(shù)據(jù)的請求在優(yōu)先級次序上較低的層的任何緩沖器的占用率低于該較低層的閾值的情況下不會(huì)被發(fā)出。在該方法中,對接收來自優(yōu)先級次序上較低的層的數(shù)據(jù)給予優(yōu)先,以使得若可用帶寬降至比還接收優(yōu)先級次序上較高的層所要求的帶寬低,則僅請求這些較低層。此外,與不同層相關(guān)聯(lián)的閾值可以不同,以使得例如較低層具有較高閾值。在可用帶寬改變以使得較高層的數(shù)據(jù)不能在塊的播出時(shí)間之前被接收到的情形中,那么較低層的數(shù)據(jù)將必然已被接收到且因此呈現(xiàn)能單單用這些較低層來繼續(xù)進(jìn)行。緩沖器占用率的閾值可按數(shù)據(jù)字節(jié)、緩沖器中包含的數(shù)據(jù)的播出歷時(shí)、塊數(shù)目或任何其他合適的度量的形式來定義。在第三實(shí)施例中,第一和第二實(shí)施例的方法可被組合以使得提供多個(gè)媒體表示, 每個(gè)媒體表示包括層的子集(如同第一實(shí)施例中一樣)并且第二實(shí)施例被應(yīng)用于表示內(nèi)的層的子集。在第四實(shí)施例中,第一、第二和/或第三實(shí)施例的方法可與其中提供內(nèi)容的多個(gè)獨(dú)立表示的實(shí)施例相組合,以使得例如這些獨(dú)立表示中的至少一個(gè)獨(dú)立表示包括應(yīng)用第一、第二和/或第三實(shí)施例的技術(shù)的多個(gè)層。高級緩沖管理器與緩沖監(jiān)視器126(參見圖2、相組合,可使用高級緩沖管理器來優(yōu)化客戶端方的緩沖器。塊請求流送系統(tǒng)想要確保媒體播出能迅速開始并平滑地繼續(xù),與此同時(shí)向用戶或目的地設(shè)備提供最大程度的媒體質(zhì)量。這可能要求客戶端請求具有最高媒體質(zhì)量、但也能迅速開始并在此后被及時(shí)接收以便在不會(huì)迫使呈現(xiàn)中發(fā)生暫停的情況下播出的塊。在使用高級緩沖管理器的實(shí)施例中,該管理器決定要請求媒體數(shù)據(jù)的哪些塊以及何時(shí)作出這些請求??衫缦蚋呒壘彌_管理器提供要呈現(xiàn)的內(nèi)容的元數(shù)據(jù)集,該元數(shù)據(jù)包括內(nèi)容可用的表示列表以及每個(gè)表示的元數(shù)據(jù)。表示的元數(shù)據(jù)可包括關(guān)于表示的數(shù)據(jù)率以及其他參數(shù)的信息,諸如視頻、音頻或其他編解碼器和編解碼參數(shù)、視頻分辨率、解碼復(fù)雜性、音頻語言以及會(huì)影響客戶端處對表示的選取的任何其他參數(shù)。表示的元數(shù)據(jù)還可包括該表示已被分段成的塊的標(biāo)識(shí)符,這些標(biāo)識(shí)符提供客戶端請求塊所需的信息。例如,在請求協(xié)議是HTTP的場合,該標(biāo)識(shí)符可以是HTTP URL可能還連同附加信息,該附加信息標(biāo)識(shí)由該URL所標(biāo)識(shí)的文件內(nèi)的字節(jié)范圍或時(shí)間跨度,該字節(jié)范圍或時(shí)間跨度標(biāo)識(shí)由該URL所標(biāo)識(shí)的文件內(nèi)的特定塊。在具體實(shí)現(xiàn)中,高級緩沖管理器決定接收機(jī)何時(shí)作出對新塊的請求并且其自身可能處置該請求的發(fā)送。在新穎的方面,高級緩沖管理器根據(jù)在使用過多帶寬與流送播出期間用盡媒體之間進(jìn)行平衡的平衡比的值來對新塊作出請求。緩沖監(jiān)視器1 從塊緩沖器125接收到的信息可包括對何時(shí)接收到媒體數(shù)據(jù)、已接收到多少、對媒體數(shù)據(jù)的播出何時(shí)已開始或停止、以及媒體播出的速度等的每個(gè)事件的指示?;谠撔畔?,緩沖監(jiān)視器126可演算代表當(dāng)前緩沖器大小的變量Bsti。在這些示例中,Bsti代表客戶端或其他一個(gè)或多個(gè)設(shè)備緩沖器中包含的媒體量并且可以時(shí)間單位來度量,從而Bsti代表假使不再接收更多的塊或部分塊那么播出該一個(gè)或多個(gè)緩沖器中所存儲(chǔ)的塊或部分塊所表示的所有媒體將花費(fèi)的時(shí)間量。因此,Bsti代表客戶端處可用但尚未播放的媒體數(shù)據(jù)按正常播出速度的“播出歷時(shí)”。隨著時(shí)間流逝,Bsti的值將隨著媒體被播出而減小并且會(huì)在每次接收到塊的新數(shù)據(jù)時(shí)增大。注意,出于本解釋的目的,假定塊是在該塊的全部數(shù)據(jù)在塊請求器IM處可用時(shí)被接收的,但也可以改為使用其他措施以例如計(jì)及部分塊的接收。在實(shí)踐中,對塊的接收可發(fā)生在時(shí)段上。圖13解說了在媒體被播出并且塊被接收時(shí)Bsti的值隨時(shí)間的變化。如圖13中所示,對于小于、的時(shí)間,B 的值為0,指示尚未接收到數(shù)據(jù)。在、,第一塊被接收并且B ati 的值增大到等于所接收的塊的播放歷時(shí)。此時(shí),播出尚未開始且因此Bsti的值保持恒定直至?xí)r間t1;此時(shí)第二塊抵達(dá)并且B增大該第二塊的大小。此時(shí),播出開始并且B的值開始線性減小直至?xí)r間t2,此時(shí)第三塊抵達(dá)。Bsti的累進(jìn)以此“鋸齒”方式繼續(xù),每次接收到塊時(shí)階躍地增大(在時(shí)間t2、t3、t4、 、和、)并在其間隨著數(shù)據(jù)被播出而平滑地減小。注意,在該示例中,播出是以該內(nèi)容的正常播出速率來進(jìn)行的,并且因此塊接收之間的曲線斜率恰好為-1,意味著對于流逝的每一秒真正時(shí)間,有一秒的媒體數(shù)據(jù)被播放。在基于幀的媒體以給定幀數(shù)每秒(例如M幀每秒)播出時(shí),斜率-ι將由指示每個(gè)個(gè)體數(shù)據(jù)幀的播出的小階躍函數(shù)來近似,例如每幀播出時(shí)-1Λ4秒的步長。圖14示出了 Bsti隨時(shí)間演進(jìn)的另一個(gè)示例。在該示例中,第一塊在、抵達(dá)并且播出立即開始。塊抵達(dá)和播出繼續(xù)直至?xí)r間t3,此時(shí)Bsti的值到達(dá)0。在這種情況發(fā)生時(shí), 沒有更多媒體數(shù)據(jù)可供播出,從而迫使媒體呈現(xiàn)暫停。在時(shí)間t4,第四塊被接收并且播放可恢復(fù)。該示例因此示出了其中對第四塊的接收晚于所需從而導(dǎo)致播出暫停以及因此導(dǎo)致不良用戶體驗(yàn)的情形。因此,高級緩沖管理器及其他特征的目標(biāo)是降低該事件的概率,與此同時(shí)維持高媒體質(zhì)量。緩沖監(jiān)視器1 還可演算另一度量Btw (t),其為給定時(shí)間段中接收到的媒體與該時(shí)間段的長度之比。更具體而言,Btw (t)等于Tfts/(Ta4-t),其中Tfts是在自t直至當(dāng)前時(shí)間1 4的該時(shí)間段中接收到的媒體量(以其播出時(shí)間來度量),t是比的當(dāng)前時(shí)間早的某個(gè)時(shí)間。Btw (t)可用于衡量Bsti的變化率。Btw(t) =0是其中自時(shí)間t起尚未接收到數(shù)據(jù)的情形;假定媒體正在播出,則B·自該時(shí)間起將減少了(Titt-t)。B_(t) = 1是其中對于時(shí)間(Ta4_t)而言接收到的媒體的量與正在播出的量相同的情形;Bsti在時(shí)間Ta 4將具有與時(shí)間t時(shí)相同的值。Btw (t) > 1是其中對于時(shí)間(Ta4-t)而言接收到的數(shù)據(jù)比播出所需的多的情形;Bsti從時(shí)間t到時(shí)間Ta4將有所增大。緩沖監(jiān)視器1 進(jìn)一步演算“Mate (狀態(tài))”值,其可取離散數(shù)目個(gè)值。緩沖監(jiān)視器1 進(jìn)一步裝備有函數(shù)NewState (B·,B比率),在給定B當(dāng)前的當(dāng)前值和B比率對于t < T現(xiàn) 4的值的情況下該函數(shù)提供新“狀態(tài)”值作為輸出。每當(dāng)Bsti和Btw導(dǎo)致該函數(shù)返回不同于 “狀態(tài)”的當(dāng)前值的值時(shí),該新值就被指派給“狀態(tài)”并且向塊選擇器123指示該新狀態(tài)值。函數(shù)NewState可參照(B_,B_ (Ta4-Tx))對的所有可能值的空間來求值,其中 Tx可以是固定(配置)值,或者可例如由從Bsti的值映射到?。坏闹档呐渲帽韽腂sti推導(dǎo)出, 或者可取決于“狀態(tài)”的先前值。向緩沖監(jiān)視器126供應(yīng)該空間的一個(gè)或更多個(gè)劃分,其中每個(gè)劃分包括不相交區(qū)域的集合,每個(gè)區(qū)域用“狀態(tài)”值來標(biāo)注。對函數(shù)“NewState”的求值由此包括標(biāo)識(shí)劃分并確定(BstJ,Btw (Ta4-Tx))對所落在的區(qū)域的操作。返回值由此是與該區(qū)域相關(guān)聯(lián)的標(biāo)注。在簡單情形中,只提供一個(gè)劃分。在更復(fù)雜的情形中,劃分可取決于前一次對NewState函數(shù)求值時(shí)的(B當(dāng)前,B比率(Ta4-Tx))對或取決于其他因素。在具體實(shí)施例中,以上描述的劃分可基于包含Bsti的數(shù)個(gè)閾值以及Btw的數(shù)個(gè)閾值的配置表。具體而言,令 Bati的閾值_ (0) = 0、Β_ (1)、···、Β_ (Ii1)、B_ (ni+l)=-, 其中Ii1是B當(dāng)前的非零閾值的數(shù)目。令B比率的閾值為B比率閾(0) = 0, Btww (1),…、B比率閾 (n2)、B比率w (n2+l) =^ ,其中1!2是8比率的閾值的數(shù)目。這些閾值定義了包括(n^l)χ(n2+l) 的單元柵格的劃分,其中第j行的第i個(gè)單元對應(yīng)于其中Bw (i-1) <=BatJ<Bw (i)且 B比率_(j-l) <=B_<B_w(j)的區(qū)域。以上描述的柵格的每個(gè)單元格諸如通過與存儲(chǔ)在存儲(chǔ)器中的特定值相關(guān)聯(lián)之類而被標(biāo)注以狀態(tài)值,并且函數(shù)NewMate (新狀態(tài))隨后返回與由值Bst^PBtw (Ta4-Tx)指示的單元格相關(guān)聯(lián)的狀態(tài)值。在另一實(shí)施例中,可令遲滯值與每個(gè)閾值相關(guān)聯(lián)。在該增強(qiáng)型方法中,對函數(shù) NewState的求值可基于使用一組臨時(shí)修改的閾值如下構(gòu)造的臨時(shí)劃分。對于小于與在對 NewState的上次求值時(shí)所選取的單元格相對應(yīng)的B 范圍的每個(gè)B 閾值,通過減去與該閾值相關(guān)聯(lián)的遲滯值來減小該閾值。對于大于與在對NewState的上次求值時(shí)所選取的單元格相對應(yīng)的B·范圍的每個(gè)B·閾值,通過加上與該閾值相關(guān)聯(lián)的遲滯值來增大該閾值。 對于小于與在對NewState的上次求值時(shí)所選取的單元格相對應(yīng)的B tw范圍的每個(gè)B tt率閾值,通過減去與該閾值相關(guān)聯(lián)的遲滯值來減小該閾值。對于大于與在對NewState的上次求值時(shí)所選取的單元格相對應(yīng)的Btw范圍的每個(gè)Btw閾值,通過加上與該閾值相關(guān)聯(lián)的遲滯值來增大該閾值。經(jīng)修改的閾值被用來對NewState的值進(jìn)行求值并且隨后這些閾值返回其原始值。在閱讀本公開之際,定義空間的劃分的其他方式對于本領(lǐng)域技術(shù)人員將變得明顯。例如,劃分可通過使用基于Btw和Bsti的線性組合的不等式,例如α0、α1和α 2為實(shí)數(shù)值的al*Btw + a2*Bsti彡a 0形式的線性不等式閾值來定義,以定義整個(gè)空間內(nèi)的半空間以及將每個(gè)不相交集合定義為數(shù)個(gè)此類半空間的交集。以上描述是為了解說基本過程。如實(shí)時(shí)編程領(lǐng)域的技術(shù)人員在閱讀本公開之際將清楚的,高效實(shí)現(xiàn)是可能的。例如,每次將新信息提供給緩沖監(jiān)視器126時(shí),就有可能演算若例如不接收塊的進(jìn)一步的數(shù)據(jù)則NewState將轉(zhuǎn)移到新值的將來時(shí)間。隨后為該時(shí)間設(shè)置定時(shí)器并且在沒有進(jìn)一步的輸入的情況下,該定時(shí)器的期滿將導(dǎo)致新的狀態(tài)值被發(fā)送給塊選擇器123。因此,只需要在有新信息被提供給緩沖監(jiān)視器1 時(shí)或者在定時(shí)器期滿時(shí)執(zhí)行計(jì)算,而無需連續(xù)地執(zhí)行。狀態(tài)的合適值可為“低”、“穩(wěn)定”和“滿”。合適的閾值集合和所得單元柵格的示例在圖15中示出。在圖15中,Bsti閾值以毫秒在橫軸上示出,遲滯值在其下方以“+/_值”形式示出。 B 閾值以千分率(即,乘以1000)在縱軸上示出,遲滯值在其下方以“+/_值”形式示出。 “低”、“穩(wěn)定”和“滿”狀態(tài)值分別在柵格單元中被標(biāo)注為“L”、“S”和“F”。每當(dāng)有機(jī)會(huì)請求新塊時(shí),塊選擇器123就接收到來自塊請求器124的通知。如以上所描述的,向塊選擇器123提供關(guān)于可用的這多個(gè)塊的信息以及這些塊的元數(shù)據(jù),包括例如關(guān)于每個(gè)塊的媒體數(shù)據(jù)率的信息。關(guān)于塊的媒體數(shù)據(jù)率的信息可包括該特定塊的實(shí)際媒體數(shù)據(jù)率(S卩,以字節(jié)計(jì)的塊大小除以以秒計(jì)的播出時(shí)間)、塊所屬的表示的平均媒體數(shù)據(jù)率、或?yàn)榱瞬粫和5夭コ鲈搲K所屬的表示在維系的基礎(chǔ)上需要的可用帶寬的度量、或以上的組合。塊選擇器123基于緩沖監(jiān)視器1 最新指示的狀態(tài)值來選擇塊。在該狀態(tài)值為 “穩(wěn)定”時(shí),塊選擇器123從與先前所選塊相同的表示選擇塊。所選擇的塊是包含該呈現(xiàn)中先前未曾請求過其媒體數(shù)據(jù)的時(shí)段的媒體數(shù)據(jù)的第一塊(按播出次序)。在該狀態(tài)值為“低”時(shí),塊選擇器123從具有比先前所選塊的媒體數(shù)據(jù)率低的媒體數(shù)據(jù)率的表示選擇塊。數(shù)個(gè)因素會(huì)影響該情形中對表示的確切選取。例如,塊選擇器123 可被提供對傳入數(shù)據(jù)的聚集速率的指示并且可選取具有小于該值的媒體數(shù)據(jù)率的表示。在該狀態(tài)值為“滿”時(shí),塊選擇器123從具有比先前所選塊的媒體數(shù)據(jù)率高的媒體數(shù)據(jù)率的表示選擇塊。數(shù)個(gè)因素會(huì)影響該情形中對表示的確切選取。例如,塊選擇器123 可被提供對傳入數(shù)據(jù)的聚集速率的指示并且可選取具有不高于該值的媒體數(shù)據(jù)率的表示。數(shù)個(gè)附加因素可能進(jìn)一步影響塊選擇器123的操作。具體而言,可限制增大所選塊的媒體數(shù)據(jù)率的頻度,即使緩沖監(jiān)視器126持續(xù)指示“滿”狀態(tài)亦然。此外,塊選擇器123 有可能接收到“滿”狀態(tài)指示但沒有更高媒體數(shù)據(jù)率的塊可用(例如,由于上次所選的塊已經(jīng)對應(yīng)最高可用媒體數(shù)據(jù)率)。在這種情形中,塊選擇器123可將下一塊的選擇延遲某個(gè)時(shí)間,該時(shí)間被選取為使得在塊緩沖器125中緩沖的媒體數(shù)據(jù)總量是上有界的。附加因素可能影響在選擇過程期間考慮的塊集合。例如,可用塊可被限于來自其編碼分辨率落在提供給塊選擇器123的特定范圍以內(nèi)的那些表示的塊。塊選擇器123還可接收來自監(jiān)視系統(tǒng)的其他方面的其他組件的輸入,所監(jiān)視的方面諸如是用于媒體解碼的計(jì)算資源的可用性。若此類資源變得稀缺,則塊選擇器123可在元數(shù)據(jù)內(nèi)指示其解碼的計(jì)算復(fù)雜性較低的塊(例如,具有較低分辨率或幀率的表示一般具有較低解碼復(fù)雜性)。以上描述的實(shí)施例帶來的實(shí)質(zhì)優(yōu)點(diǎn)在于,在緩沖監(jiān)視器126內(nèi)對NewState函數(shù)求值時(shí)使用值Btw與僅考慮Bsti的方法相比允許在呈現(xiàn)開始時(shí)質(zhì)量更快地上升。在不考慮B
的情況下,可能在累積了大量緩沖的數(shù)據(jù)后系統(tǒng)才能選擇具有更高媒體數(shù)據(jù)率以及因此具有更高質(zhì)量的塊。然而,當(dāng)Btw值很大時(shí),這指示可用帶寬遠(yuǎn)高于先前接收到的塊的媒體數(shù)據(jù)率且即使緩沖的數(shù)據(jù)相對較少(即,Bsti的值很低),請求有更高媒體數(shù)據(jù)率以及因此有更高質(zhì)量的塊仍是安全的。同樣地,若Btw值很低(例如< 1),這指示可用帶寬已降至先前所請求的塊的媒體數(shù)據(jù)率之下且因此即使Bsti很高,系統(tǒng)仍將切換到較低的媒體數(shù)據(jù)率以及因此較低的質(zhì)量,以例如避免到達(dá)B·= 0且媒體的播出停滯的點(diǎn)。這種改善的行為在其中網(wǎng)絡(luò)條件以及因此投遞速度可能快速且動(dòng)態(tài)地變化(例如用戶向移動(dòng)設(shè)備流送) 的環(huán)境中可能尤其重要。使用配置數(shù)據(jù)來指定(Β·,Β_)的值空間的劃分帶來了另一優(yōu)點(diǎn)。此類配置數(shù)據(jù)可作為呈現(xiàn)元數(shù)據(jù)的一部分或通過其他動(dòng)態(tài)手段被提供給緩沖監(jiān)視器126。在實(shí)踐部署中,由于用戶網(wǎng)絡(luò)連接的行為在各用戶之間以及對于單個(gè)用戶而言隨時(shí)間推移而可能高度可變,因此可能很難預(yù)測對于所有用戶都將工作良好的劃分。動(dòng)態(tài)地向用戶提供此類配置信息的可能性允許隨時(shí)間推移根據(jù)累積的經(jīng)驗(yàn)來開發(fā)良好的配置設(shè)置。
可變請求大小控制若每個(gè)請求針對單個(gè)塊且若每個(gè)塊編碼短媒體段,則可能需要高頻度的請求。若媒體塊很短,則視頻播出迅速地在塊間移動(dòng),這為接收機(jī)提供了更頻繁的通過改變表示來調(diào)整或改變其所選數(shù)據(jù)率的機(jī)會(huì),從而提高了播出能不停滯地繼續(xù)的可能性。然而,高頻度的請求的不利方面在于它們在其中客戶端至服務(wù)器網(wǎng)絡(luò)中的可用帶寬受約束的某些網(wǎng)絡(luò)上可能是不能維系的,例如在諸如3G和4G無線WAN之類的無線WAN網(wǎng)絡(luò)中,其中從客戶端至網(wǎng)絡(luò)的數(shù)據(jù)鏈路的容量是受限制的或者會(huì)由于無線電條件的改變而變?yōu)樵诨蚨袒蜷L的時(shí)間段上受限制。高頻度的請求還意味著服務(wù)基礎(chǔ)設(shè)施的高負(fù)荷,這帶來容量要求方面的關(guān)聯(lián)成本。因此,將希望有高頻度請求的一些效益而沒有所有這些缺點(diǎn)。在塊流送系統(tǒng)的一些實(shí)施例中,將高請求頻度的靈活性與低頻度請求相組合。在該實(shí)施例中,塊可以如上所描述地構(gòu)造并且同樣如以上所描述地被聚集成包含多個(gè)塊的段。在呈現(xiàn)的開頭,應(yīng)用以上所描述的其中每個(gè)請求引用單個(gè)塊或者作出多個(gè)并發(fā)請求以請求塊的各部分的過程以確保在呈現(xiàn)的開始有快速的頻道換臺(tái)時(shí)間并且因此有良好的用戶體驗(yàn)。隨后,當(dāng)滿足將在以下描述的某個(gè)條件時(shí),客戶端可發(fā)出在單個(gè)請求中涵蓋多個(gè)塊的請求。這是可能的,因?yàn)檫@些塊已被聚集成較大文件或段并且可使用字節(jié)或時(shí)間范圍來請求。連貫的字節(jié)或時(shí)間范圍可被聚集成單個(gè)較大的字節(jié)或時(shí)間范圍,從而導(dǎo)致單個(gè)請求針對多個(gè)塊,并且甚至能在一個(gè)請求中請求非連續(xù)的塊??捎蓻Q定是請求單個(gè)塊(或部分塊)還是請求多個(gè)連貫塊來驅(qū)使的一個(gè)基本配置是使該決定基于所請求塊是否很可能被播出。例如,若很可能不久將需要換到另一表示,則客戶端最好作出針對單個(gè)塊即少量媒體數(shù)據(jù)的請求。此舉的一個(gè)原因在于,若在可能即將要切換至另一表示時(shí)作出針對多個(gè)塊的請求,那么該切換可能在該請求的最后幾個(gè)塊被播出之前作出。因此,對這最后幾個(gè)塊的下載可能延遲了對所切換到的表示的媒體數(shù)據(jù)的投遞,這可能導(dǎo)致媒體播出停滯。然而,針對單個(gè)塊的請求的確導(dǎo)致更高頻度的請求。另一方面,若不大可能不久將需要換到另一表示,則可能優(yōu)選作出針對多個(gè)塊的請求,因?yàn)樗羞@些塊很可能將被播出, 并且這導(dǎo)致較低頻度的請求,從而可以大量上降低請求開銷,典型地在表示中沒有即將來臨的改變的情況下尤其如此。在常規(guī)的塊聚集系統(tǒng)中,每個(gè)請求中所請求的量不是動(dòng)態(tài)地調(diào)整的,即典型地每個(gè)請求針對整個(gè)文件,或者每個(gè)請求針對與表示的文件大致相同的量(有時(shí)以時(shí)間度量, 有時(shí)以字節(jié)度量)。因此,若所有請求都較小,則請求開銷較高,而若所有請求都較大,則這增加了媒體停滯事件的機(jī)會(huì)和/或在選取了較低質(zhì)量表示以避免不得不隨著網(wǎng)絡(luò)條件變化而迅速改變表示的情況下增加了提供較低質(zhì)量媒體播出的機(jī)會(huì)。在被滿足時(shí)可導(dǎo)致后續(xù)請求引用多個(gè)塊的條件的示例是對緩沖器大小Bsti的閾值。若Bsti低于該閾值,則發(fā)出的每個(gè)請求引用單個(gè)塊。若Bsti大于或等于該閾值,則發(fā)出的每個(gè)請求引用多個(gè)塊。若發(fā)出引用多個(gè)塊的請求,則每單個(gè)請求中所請求的塊數(shù)目可按若干種可能方式之一來決定。例如,該數(shù)目可以是常數(shù),例如2。替換地,單個(gè)請求中所請求的塊數(shù)目可取決于緩沖器狀態(tài)并且尤其是取決于Bsti。例如,可以設(shè)置數(shù)個(gè)閾值,其中單個(gè)請求中所請求的塊數(shù)目是從小于B·的多個(gè)閾值中的最高閾值來推導(dǎo)的。
在被滿足時(shí)可導(dǎo)致請求引用多個(gè)塊的條件的另一示例是以上描述的“狀態(tài)”值變量。例如,當(dāng)狀態(tài)為“穩(wěn)定”或“滿”時(shí),則可發(fā)出針對多個(gè)塊的請求,但當(dāng)狀態(tài)為“低”時(shí),則所有請求可針對一個(gè)塊。另一實(shí)施例在圖16中示出。在該實(shí)施例中,當(dāng)將發(fā)出下一請求時(shí)(在步驟1300中決定),使用當(dāng)前狀態(tài)值和Bsti來決定下一請求的大小。若當(dāng)前狀態(tài)值為“低”、或當(dāng)前狀態(tài)值為“滿”且當(dāng)前表示不是最高可用的表示(在步驟1310中確定,答案為“是”),則下一請求被選取為短請求,例如僅針對下一塊(在步驟1320中確定塊并作出請求)。此舉背后的基本原理在于,這些條件是其中很可能很快將有表示改變的條件。若當(dāng)前狀態(tài)值為“穩(wěn)定”、 或當(dāng)前狀態(tài)值為“滿”且當(dāng)前表示是最高可用的表示(在步驟1310中確定,答案為“否”), 則下一請求中所請求的連貫塊的歷時(shí)對于某個(gè)固定的α <1被選取為與Bsti的α分?jǐn)?shù)成比例(在步驟1330中確定塊,在步驟1340中作出請求),例如對于α = 0.4,若Bsti = 5 秒,則下一請求可針對約2秒的塊,而若Bsti= 10秒,則下一請求可針對約4秒的塊。此舉背后的一個(gè)基本原理在于在這些條件下,在與Bsti成比例的時(shí)間量里將不大可能作出向新表示的切換。靈活管線仆,塊流送系統(tǒng)可使用具有例如TCP/IP之類的特定底層傳輸協(xié)議的文件請求協(xié)議。 在TCP/IP或其他傳輸協(xié)議連接的開頭,可能要花某個(gè)相當(dāng)長的時(shí)間來達(dá)成對全部可用帶寬的利用。這可能導(dǎo)致在每次開始新連接時(shí)都有“連接啟動(dòng)懲罰”。例如,在TCP/IP的情形中,連接啟動(dòng)懲罰由于初始TCP握手建立連接所花的時(shí)間以及擁塞控制協(xié)議達(dá)成對可用帶寬的完全利用所花的時(shí)間兩者而發(fā)生。在該情形中,可能希望使用單個(gè)連接來發(fā)出多個(gè)請求,以降低招致連接啟動(dòng)懲罰的頻度。然而,例如HTTP之類的一些文件傳輸協(xié)議不提供并非將傳輸層連接完全關(guān)閉而是取消請求的機(jī)制,并且因此在建立新連接來代替舊連接時(shí)招致連接啟動(dòng)懲罰。若確定可用帶寬已改變并且改為要求不同的媒體數(shù)據(jù)率,即決定切換到不同的表示,則發(fā)出的請求可能需要被取消。取消發(fā)出的請求的另一原因可能是用戶已請求結(jié)束媒體呈現(xiàn)并且開始新呈現(xiàn)(或許是在該呈現(xiàn)的不同點(diǎn)的相同內(nèi)容項(xiàng)、或者或許是新內(nèi)容項(xiàng))。如已知的,可通過保持連接打開并對后續(xù)請求重用相同的連接來避免連接啟動(dòng)懲罰,并且如同樣已知的,若在相同的連接上同時(shí)發(fā)出多個(gè)請求(在HTTP的上下文中被稱為 “管線化”的技術(shù)),則連接可保持充分利用。然而,同時(shí)地或者更一般地以使得連接上有多個(gè)請求在先前請求完成之前發(fā)出的方式發(fā)出多個(gè)請求的缺點(diǎn)可能在于,該連接隨后要負(fù)責(zé)攜帶對這些請求的響應(yīng)并且因此若希望改變應(yīng)當(dāng)發(fā)出的請求,則該連接可能會(huì)被關(guān)閉—— 若需要取消已發(fā)出但不再想要的請求。所發(fā)出的請求需要被取消的概率可部分地取決于發(fā)出該請求與所請求塊的播出時(shí)間之間的時(shí)間區(qū)間的歷時(shí),部分取決于的意義是指當(dāng)該時(shí)間區(qū)間大時(shí),所發(fā)出的請求需要被取消的概率也高(因?yàn)樵谠搮^(qū)間期間可用帶寬很可能改變了)。如已知的,一些文件下載協(xié)議具有單個(gè)底層傳輸層連接可有利地被用于多個(gè)下載請求的性質(zhì)。例如,HTTP具有該性質(zhì),因?yàn)閷蝹€(gè)連接重用于多個(gè)請求對于除第一個(gè)請求以外的其他請求避免了以上描述的“連接啟動(dòng)懲罰”。然而,該辦法的缺點(diǎn)在于該連接要負(fù)責(zé)傳輸每個(gè)所發(fā)出請求中所請求的數(shù)據(jù),且因此若一個(gè)或多個(gè)請求需要被取消,則要么該連接可能被關(guān)閉,從而在建立取代連接時(shí)招致連接啟動(dòng)懲罰,要么客戶端可能等待接收不再需要的數(shù)據(jù),從而在接收后續(xù)數(shù)據(jù)時(shí)招致延遲?,F(xiàn)在描述留存連接重用的優(yōu)點(diǎn)而不招致該缺點(diǎn)并且還附加地提高連接能被重用的頻度的實(shí)施例。本文中描述的塊流送系統(tǒng)的實(shí)施例被配置成對多個(gè)請求重用連接而不必一開始就承諾由該連接負(fù)責(zé)特定的一組請求。實(shí)質(zhì)上,在現(xiàn)有連接上的已發(fā)出的請求尚未完成但接近完成時(shí)在該連接上發(fā)出新請求。不等待直至現(xiàn)有請求完成的一個(gè)原因在于,若先前的請求完成則連接速度可能降級,即,底層TCP會(huì)話可能進(jìn)入空閑狀態(tài)或者TCP cwnd變量可能被顯著地減小,藉此顯著降低該連接上發(fā)出的新請求的初始下載速度。在發(fā)出額外請求之前等待直至接近完成的一個(gè)原因在于,因?yàn)槿粜抡埱笫窃谙惹罢埱笸瓿芍昂芫镁桶l(fā)出的,則新發(fā)出的請求可能甚至在某個(gè)很長時(shí)間段內(nèi)不開動(dòng),并且有可能在新發(fā)出的請求開動(dòng)之前的該時(shí)間段期間,作出新請求的決定不再有效,例如由于決定切換表示而導(dǎo)致上述情形。因此,實(shí)現(xiàn)該技術(shù)的客戶端的實(shí)施例將在不減慢連接的下載能力的情況下盡可能晚地在該連接上發(fā)出新請求。該方法包括監(jiān)視響應(yīng)于在連接上發(fā)出的最晚請求在該連接上接收到的字節(jié)數(shù)目并對該數(shù)目應(yīng)用測試。這可以通過使接收機(jī)(或發(fā)射機(jī),若適用)配置成進(jìn)行監(jiān)視和測試來進(jìn)行。若測試通過,則可在該連接上發(fā)出另一請求。合適的測試的一個(gè)示例是接收到的字節(jié)數(shù)目是否大于所請求數(shù)據(jù)的大小的固定分?jǐn)?shù)。例如,該分?jǐn)?shù)可以為80%。合適的測試的另一示例基于以下演算,如圖17中所解說的。在該演算中,令R為對該連接的數(shù)據(jù)率的估計(jì),T為對往返行程時(shí)間(“RTT”)的估計(jì),并且X為例如可以是設(shè)為0. 5與2之間的值的常數(shù)的數(shù)值因子,其中對R和T的估計(jì)在定期的基礎(chǔ)上更新(在步驟1410中更新)。令 S為最晚請求中所請求的數(shù)據(jù)的大小,B為所請求的數(shù)據(jù)中接收到的字節(jié)數(shù)目(在步驟1420 中演算)。合適的測試將是使接收機(jī)(或發(fā)射機(jī),若適用)執(zhí)行評估不等式(S-B) <X-R-T 的例程(在步驟1430中測試),并且若“是”則采取行動(dòng)。例如,可作出測試以查看是否有另一個(gè)請求準(zhǔn)備好要在該連接上發(fā)出(在步驟1440中測試),并且若“是”則向該連接發(fā)出該請求(步驟1450)并且若“否”則本過程返回步驟1410以繼續(xù)更新和測試。若步驟1430 中的測試的結(jié)果是“否”,則本過程返回步驟1410以繼續(xù)更新和測試。步驟1430中的不等式測試(例如由恰適地編程的元件來執(zhí)行)導(dǎo)致在待接收的剩余數(shù)據(jù)量等于X乘以在一個(gè)RTT內(nèi)以當(dāng)前估計(jì)的接收速率能接收的數(shù)據(jù)量時(shí)發(fā)出每個(gè)后續(xù)請求。數(shù)種在步驟1410中估計(jì)數(shù)據(jù)率R的方法是本領(lǐng)域已知的。例如,數(shù)據(jù)率可估計(jì)為 Dt/t,其中Dt是在之前t秒中接收到的比特?cái)?shù)目并且其中t可以是例如1秒或0. 5秒或其他某個(gè)區(qū)間。另一種方法是對傳入數(shù)據(jù)率的指數(shù)加權(quán)平均或一階無限沖激響應(yīng)(IIR)濾波。數(shù)種在步驟1410中估計(jì)RTT “T”的方法是本領(lǐng)域已知的。步驟1430中的測試可應(yīng)用于接口上所有活躍連接的聚集,如以下更詳細(xì)地解釋的。該方法進(jìn)一步包括構(gòu)造候選請求列表,將每個(gè)候選請求與可向其作出該請求的一組合適服務(wù)器相關(guān)聯(lián),并且按優(yōu)先級次序排序該候選請求列表。候選請求列表中的一些條目可具有相同的優(yōu)先級。與每個(gè)候選請求相關(guān)聯(lián)的合適服務(wù)器列表中的服務(wù)器由主機(jī)名來標(biāo)識(shí)。每個(gè)主機(jī)名對應(yīng)于可從域名系統(tǒng)獲得的一組網(wǎng)際協(xié)議地址,這是公知的。因此,候選請求列表上的每個(gè)可能的請求與一組網(wǎng)際協(xié)議地址相關(guān)聯(lián),具體而言是與該候選請求的關(guān)聯(lián)服務(wù)器的關(guān)聯(lián)主機(jī)名的關(guān)聯(lián)的各組網(wǎng)際協(xié)議地址的并集相關(guān)聯(lián)。每當(dāng)連接滿足步驟1430 中描述的測試并且該連接上尚未發(fā)出新請求時(shí),就選取候選請求列表上與該連接的目的地的網(wǎng)際協(xié)議地址相關(guān)聯(lián)的最高優(yōu)先級請求,并且在該連接上發(fā)出該請求。還將該請求從候選請求列表中移除。候選請求可從候選請求列表移除(取消),具有高于候選列表上的已有請求的優(yōu)先級的新請求可被添加到候選列表,并且候選列表上的現(xiàn)有請求的優(yōu)先級可改變。有哪些請求在候選請求列表上這一動(dòng)態(tài)本質(zhì)以及其在候選列表上的優(yōu)先級這一動(dòng)態(tài)本質(zhì)可取決于何時(shí)滿足步驟1430中描述的類型的測試而更改接下來可發(fā)出哪些請求。例如,有可能若在某個(gè)時(shí)間t對步驟1430中描述的測試的回答為“是”,則發(fā)出的下一請求將為請求A,而若對步驟1430中描述的測試的回答并非為“是”直至某個(gè)時(shí)間t' > t,則發(fā)出的下一請求將改為是請求B,因?yàn)檎埱驛在時(shí)間t與t'之間從候選請求列表被移除,或者由于在時(shí)間t與t ‘之間優(yōu)先級比請求A高的請求B被添加到候選請求列表,或者由于請求B在時(shí)間t時(shí)已在該候選列表上但優(yōu)先級比請求A低,并且在時(shí)間t與t'之間,請求B的優(yōu)先級被改為高于請求A的優(yōu)先級。圖18解說了候選請求列表上的請求列表的示例。在該示例中,有三個(gè)連接,并且候選列表上有6個(gè)請求,標(biāo)示為A、B、C、D、E和F。候選列表上的每個(gè)請求可在如所指示的連接子集上發(fā)出,例如請求A可在連接1上發(fā)出,而請求F可在連接2或連接3上發(fā)出。每個(gè)請求的優(yōu)先級也在圖18中標(biāo)示,并且較低的優(yōu)先級值指示請求有較高優(yōu)先級。因此,具有優(yōu)先級0的請求A和B是最高優(yōu)先級請求,而具有優(yōu)先級值3的請求F是候選列表上的請求中的最低優(yōu)先級。若在該時(shí)間點(diǎn)t,連接1通過了步驟1430中描述的測試,則在連接1上發(fā)出請求A 或請求B。若改為是連接3在該時(shí)間t通過了步驟1430中描述的測試,則在連接3上發(fā)出請求D,因?yàn)檎埱驞是能在連接3上發(fā)出的具有最高優(yōu)先級的請求。假設(shè)對于所有連接,從時(shí)間t到某個(gè)稍后的時(shí)間t'對步驟1430中描述的測試的答案皆為“否”,并且在時(shí)間t與t'之間,請求A的優(yōu)先級從0改變?yōu)?,請求B從候選列表被移除,并且具有優(yōu)先級0的新請求G被添加到該候選列表。隨后,在時(shí)間t',新候選列表可如圖19中所示。若在時(shí)間t'連接1通過了步驟1430中描述的測試,則在連接1上發(fā)出優(yōu)先級為 4的請求C,因?yàn)樗呛蜻x列表上在該時(shí)間點(diǎn)能在連接1上發(fā)出的的最高優(yōu)先級請求。假設(shè)在該相同的情形中改為在時(shí)間t在連接1上本來發(fā)出了請求A(其為如圖18 中所示的在時(shí)間t對連接1而言兩個(gè)最高優(yōu)先級選擇之一)。由于從時(shí)間t到某個(gè)稍后的時(shí)間t'對于所有連接而言步驟1430中描述的測試的答案皆為“否”,因此連接1仍為在時(shí)間t之前發(fā)出的請求投遞數(shù)據(jù)直到至少時(shí)間t',且因此請求A在至少時(shí)間t'之前將不會(huì)開動(dòng)。在時(shí)間t'發(fā)出請求C是比本來在時(shí)間t發(fā)出請求A更好的決定,因?yàn)檎埱驝在t' 之后與請求A本來將開動(dòng)的時(shí)間相同的時(shí)間開動(dòng),并且因?yàn)榻刂猎摃r(shí)間,請求C比請求A具有更高優(yōu)先級。
作為另一替換方案,若步驟1430中描述的類型的測試應(yīng)用于活躍連接的聚集,則可選取其目的地的網(wǎng)際協(xié)議地址與候選請求列表上的第一個(gè)請求或同所述第一個(gè)請求具有相同優(yōu)先級的另一請求相關(guān)聯(lián)的連接。有數(shù)種方法可用于構(gòu)造候選請求列表。例如,候選列表可包含代表對呈現(xiàn)的當(dāng)前表示按時(shí)間順序次序的接下來η個(gè)數(shù)據(jù)部分的請求的η個(gè)請求,其中對最早數(shù)據(jù)部分的請求具有最高優(yōu)先級而對最晚數(shù)據(jù)部分的請求具有最低優(yōu)先級。在一些情形中,η可以為1。 η的值可取決于緩沖器大小Bsti,或狀態(tài)變量或客戶端緩沖器占用率的狀態(tài)的其他度量。例如,可為B 設(shè)置數(shù)個(gè)閾,并且有值與每個(gè)閾相關(guān)聯(lián),隨后將η的值取為與小于B 的最高閾相關(guān)聯(lián)的值。以上描述的實(shí)施例確保了靈活地將請求分配給連接,從而確保向重用現(xiàn)有連接給予優(yōu)待,即使最高優(yōu)先級請求不適合該連接(因?yàn)樵撨B接的目的地IP地址不是分配給與該請求相關(guān)聯(lián)的任何主機(jī)名的那一 IP地址)亦然。η對Bsti或客戶端緩沖器占用率的狀態(tài)或其他度量的依存性確保了在客戶端亟需發(fā)出和完成與按時(shí)間順序要播出的下一數(shù)據(jù)部分相關(guān)聯(lián)的請求時(shí),此類“脫離優(yōu)先級次序”的請求不被發(fā)出。這些方法可有利地與協(xié)作式HTTP和FEC相組合。一致件的服各器詵擇如公知的,將使用文件下載協(xié)議來下載的文件通常由包括主機(jī)名和文件名的標(biāo)識(shí)符來標(biāo)識(shí)。例如,HTTP協(xié)議就是這種情形,在該情形中,標(biāo)識(shí)符是統(tǒng)一資源標(biāo)識(shí)符(URI)。 主機(jī)名可對應(yīng)于由各網(wǎng)際協(xié)議地址標(biāo)識(shí)的多個(gè)主機(jī)。例如,這是跨多個(gè)物理機(jī)器分?jǐn)倎碜远鄠€(gè)客戶端的請求負(fù)荷的常見方法。具體而言,該辦法常被內(nèi)容投遞網(wǎng)絡(luò)(CDN)采用。在這種情形中,在連接上向任何物理主機(jī)發(fā)出的請求預(yù)期將成功。已知有多種可供客戶端用來從與主機(jī)名相關(guān)聯(lián)的各網(wǎng)際協(xié)議地址中進(jìn)行選擇的方法。例如,這些地址通常經(jīng)由域名系統(tǒng)提供給客戶端并按優(yōu)先級次序提供??蛻舳穗S后可選取最高優(yōu)先級(第一)網(wǎng)際協(xié)議地址。然而,一般而言,客戶端之間就如何作出該選取并沒有協(xié)調(diào),因此不同客戶端可能向不同服務(wù)器請求相同的文件。這可能導(dǎo)致相同的文件被存儲(chǔ)在近旁多個(gè)服務(wù)器的高速緩存中,這降低了高速緩存基礎(chǔ)設(shè)施的效率。這可以由有利地增加請求相同塊的兩個(gè)客戶端將向相同服務(wù)器請求該塊的概率的系統(tǒng)來處置。此處描述的新穎方法包括以由要請求的文件的標(biāo)識(shí)符來決定的方式并以使得被呈示了相同或相似的網(wǎng)際協(xié)議地址和文件標(biāo)識(shí)符選擇的不同客戶端將作出相同選取的方式從可用網(wǎng)際協(xié)議地址中進(jìn)行選擇。參考圖20來描述該方法的第一實(shí)施例。客戶端首先獲得一組網(wǎng)際協(xié)議地址IPp IP2、…、IPn,如步驟1710中所示。若如步驟1720中確定的有要針對其發(fā)出請求的文件, 則客戶端決定用哪個(gè)網(wǎng)際協(xié)議地址來發(fā)出對該文件的請求,如步驟1730-1770中所決定的。給定一組網(wǎng)際協(xié)議地址和要請求的文件的標(biāo)識(shí)符,該方法包括以由該文件標(biāo)識(shí)符所決定的方式排序這些網(wǎng)際協(xié)議地址。例如,對于每個(gè)網(wǎng)際協(xié)議地址,構(gòu)造出包括該網(wǎng)際協(xié)議地址與該文件標(biāo)識(shí)符的級聯(lián)的字節(jié)串,如步驟1730中所示。向該字節(jié)串應(yīng)用散列函數(shù),如步驟1740中所示,并且根據(jù)固定排序,例如數(shù)值升序,來排列所得的散列值,如步驟1750中所示,從而引起網(wǎng)際協(xié)議地址的排序。相同散列函數(shù)可被所有客戶端使用,因此保證對于所有客戶端的給定輸入,該散列函數(shù)產(chǎn)生相同的結(jié)果。該散列函數(shù)可被靜態(tài)地配置到客戶端集合中的所有客戶端中,或者客戶端集合中的所有客戶端可在這些客戶端獲得網(wǎng)際協(xié)議地址列表時(shí)獲得該散列函數(shù)的部分或完整描述,或者客戶端集合中的所有客戶端可在這些客戶端獲得文件標(biāo)識(shí)符時(shí)獲得該散列函數(shù)的部分或完整描述,或者該散列函數(shù)可由其他手段確定。該排序中的首個(gè)網(wǎng)際協(xié)議地址被選取并且該地址隨后被用來建立連接并發(fā)出對該文件的全部或部分的請求,如步驟1760和1770中所示。以上方法可在建立新連接以請求文件時(shí)應(yīng)用。它還可在有多個(gè)建成的連接可用時(shí)應(yīng)用,并且這些連接中的一個(gè)可被選取來發(fā)出新請求。此外,當(dāng)有建成的連接可用并且可從具有相等優(yōu)先級的候選請求的集合中選取請求時(shí),例如通過以上描述的相同的散列值方法引起對候選請求的排序,并且該排序中首個(gè)出現(xiàn)的候選請求被選取。這些方法可被組合以從一組連接和具有相等優(yōu)先級的請求中同樣通過計(jì)算連接與請求的每個(gè)組合的散列、根據(jù)固定排序?qū)@些散列值進(jìn)行排序、并選取對請求與連接的組合的集合引起的排序中首個(gè)出現(xiàn)的組合來選擇連接和候選請求兩者。該方法出于以下原因具有優(yōu)點(diǎn)諸如圖1(BSI 101)或圖2(BSI 101)中所示的塊供應(yīng)基礎(chǔ)設(shè)施采取的典型辦法、尤其是CDN通常采取的辦法是提供多個(gè)接收客戶端請求的高速緩存代理服務(wù)器。高速緩存代理服務(wù)器可能并未裝有給定請求中所請求的文件并且在這種情形中,此類服務(wù)器典型地將該請求轉(zhuǎn)發(fā)給另一服務(wù)器,接收來自該服務(wù)器的響應(yīng) (典型地包括所請求的文件),并將該響應(yīng)轉(zhuǎn)發(fā)給客戶端。高速緩存代理服務(wù)器也可存儲(chǔ) (高速緩存)所請求的文件,從而它能立即響應(yīng)對該文件的后續(xù)請求。以上描述的常用辦法具有以下性質(zhì)存儲(chǔ)在給定高速緩存代理服務(wù)器上的文件集很大程度上是由該高速緩存代理服務(wù)器已接收到的請求集合來決定的。以上描述的方法具有以下優(yōu)點(diǎn)。若客戶端集合中的所有客戶端被提供相同的網(wǎng)際協(xié)議地址列表,則這些客戶端將對針對相同文件發(fā)出的所有請求使用相同的網(wǎng)際協(xié)議地址。若存在兩個(gè)不同的網(wǎng)際協(xié)議地址列表并且每個(gè)客戶端被提供這兩個(gè)列表之一,則客戶端對針對相同文件發(fā)出的所有請求將使用至多兩個(gè)不同的網(wǎng)際協(xié)議地址。一般而言,若提供給客戶端的網(wǎng)際協(xié)議地址列表是相似的,則這些客戶端將對針對相同文件發(fā)出的所有請求使用所提供的網(wǎng)際協(xié)議地址的小集合。由于近程的客戶端傾向于被提供相似的網(wǎng)際協(xié)議地址列表,因此很可能近程客戶端會(huì)向這些客戶端可用的高速緩存代理服務(wù)器的僅小部分發(fā)出對文件的請求。因此,將只有很小分?jǐn)?shù)的高速緩存代理服務(wù)器高速緩存該文件,這有利地使用于高速緩存該文件的高速緩存資源量最小化。優(yōu)選地,散列函數(shù)具有以下性質(zhì)很小分?jǐn)?shù)的不同輸入被映射到相同的輸出,且不同輸入被映射到本質(zhì)上隨機(jī)的輸出,以確保對于給定的網(wǎng)際協(xié)議地址集合,使網(wǎng)際協(xié)議地址中給定的一個(gè)地址在由步驟1750產(chǎn)生的經(jīng)分序列表中為首個(gè)地址的文件比例對于該列表中的所有網(wǎng)際協(xié)議地址大致相同。另一方面,重要的是該散列函數(shù)是確定性的,確定性的意義是指對于給定輸入,該散列函數(shù)的輸出對于所有客戶端都相同。以上描述的方法的另一優(yōu)點(diǎn)如下。假設(shè)客戶端集合中的所有客戶端被提供相同的網(wǎng)際協(xié)議地址列表。由于該散列函數(shù)的剛才描述的這些性質(zhì),很可能來自這些客戶端的對不同文件的請求將均勻地跨該組網(wǎng)際協(xié)議地址分?jǐn)偅@進(jìn)而意味著這些請求將跨高速緩存代理服務(wù)器均勻分?jǐn)?。因此,用于存?chǔ)這些文件的高速緩存資源跨高速緩存代理服務(wù)器均勻分?jǐn)?,且對文件的請求跨這些高速緩存代理服務(wù)器均勻分?jǐn)偂R虼?,該方法提供跨高速緩存基礎(chǔ)設(shè)施的存儲(chǔ)平衡和負(fù)荷平衡兩者。以上描述的辦法的多種變形為本領(lǐng)域技術(shù)人員所知的,并且在許多情形中,這些變形留存了存儲(chǔ)在給定代理上的文件集是至少部分地由該高速緩存代理服務(wù)器已接收到的請求集合決定這一性質(zhì)。在其中給定主機(jī)名解析到多個(gè)物理高速緩存代理服務(wù)器的常見情形中,所有這些服務(wù)器將最終存儲(chǔ)任何被頻繁請求的給定文件的副本將會(huì)是很常見的。 此類重復(fù)可能是不可取的,因?yàn)楦咚倬彺娲矸?wù)器上的存儲(chǔ)資源是有限的,且因此文件有時(shí)可能會(huì)從高速緩存被移除(清空)。此處描述的新穎方法確保了對給定文件的請求以減少這種重復(fù)的方式被定向到高速緩存代理服務(wù)器,藉此減少從高速緩存移除文件的需要并且藉此增大任何給定文件存在于該代理高速緩存中(即,尚未從其清空)的可能性。當(dāng)文件存在于代理高速緩存中時(shí),向客戶端發(fā)送的響應(yīng)更快,這具有減少所請求的文件晚到的概率的優(yōu)點(diǎn),所請求文件晚到會(huì)導(dǎo)致媒體播出的暫停并且因此導(dǎo)致不良的用戶體驗(yàn)。此外,當(dāng)文件不存在于代理高速緩存中時(shí),該請求可被發(fā)送給另一服務(wù)器,從而既造成服務(wù)基礎(chǔ)設(shè)施上又造成服務(wù)器之間的網(wǎng)絡(luò)連接上的額外負(fù)荷。在許多情形中,請求所發(fā)往的服務(wù)器可能位于遙遠(yuǎn)位置并且從該服務(wù)器向高速緩存代理服務(wù)器回傳該文件可能招致傳輸成本。因此,此處描述的新穎方法使得這些傳輸成本能得以減少。概率件全文件請求將HTTP協(xié)議與范圍請求聯(lián)用的情形中特別的關(guān)注點(diǎn)是通常用來提供服務(wù)基礎(chǔ)設(shè)施中的可伸縮性的高速緩存服務(wù)器的行為。雖然HTTP高速緩存服務(wù)器支持HTTP范圍頭部可能是常見的,但不同HTTP高速緩存服務(wù)器的確切行為因?qū)崿F(xiàn)而變化。大多數(shù)高速緩存服務(wù)器實(shí)現(xiàn)在文件在高速緩存中可用的情形中從該高速緩存來服務(wù)范圍請求。HTTP高速緩存服務(wù)器的常用實(shí)現(xiàn)總是將包含范圍頭部的下游HTTP請求轉(zhuǎn)發(fā)給上游節(jié)點(diǎn),除非該高速緩存服務(wù)器具有該文件的副本(高速緩存服務(wù)器或原始服務(wù)器)。在一些實(shí)現(xiàn)中,對該范圍請求的上游響應(yīng)是整個(gè)文件,并且該整個(gè)文件被高速緩存且從該文件提取對下游范圍請求的響應(yīng)并發(fā)送該響應(yīng)。然而,在至少一種實(shí)現(xiàn)中,對范圍請求的上游響應(yīng)只是范圍請求本身中的數(shù)據(jù)字節(jié),且這些數(shù)據(jù)字節(jié)不被高速緩存而是只作為對下游范圍請求的響應(yīng)被發(fā)送。因此,客戶端使用范圍頭部可能的后果是文件本身從不被放入高速緩存且網(wǎng)絡(luò)的可取的可伸縮性性質(zhì)將會(huì)丟失。在上述內(nèi)容中,描述了高速緩存代理服務(wù)器的操作,并且還描述了從作為多個(gè)塊的聚集的文件來請求塊的方法。例如,這可以通過使用HTTP范圍請求頭部來達(dá)成。此類請求在下文被稱為“部分請求”。現(xiàn)在描述另一實(shí)施例,其在塊供應(yīng)基礎(chǔ)設(shè)施101不提供對 HTTP范圍頭部的完全支持的情形中具有優(yōu)點(diǎn)。通常,塊供應(yīng)基礎(chǔ)設(shè)施內(nèi)的服務(wù)器例如內(nèi)容投遞網(wǎng)絡(luò)支持部分請求,但可能不在本地存儲(chǔ)(高速緩存)中存儲(chǔ)對部分請求的響應(yīng)。此類服務(wù)器可通過將請求轉(zhuǎn)發(fā)給另一服務(wù)器來履行部分請求,除非完整文件被存儲(chǔ)在本地存儲(chǔ)中,在后一種情形中可在不將請求轉(zhuǎn)發(fā)給另一服務(wù)器的情況下發(fā)送響應(yīng)。利用以上描述的對塊聚集的新穎增強(qiáng)的塊請求流送系統(tǒng)在塊供應(yīng)基礎(chǔ)設(shè)施顯現(xiàn)該行為的情況下可能性能不良,因?yàn)閷?shí)為部分請求的所有請求將被轉(zhuǎn)發(fā)給另一服務(wù)器并且沒有任何請求將由高速緩存代理服務(wù)器來服務(wù),這首先就使提供高速緩存代理服務(wù)器所為的目的落空。在如上描述的塊請求流送過程期間,客戶端可能在某個(gè)時(shí)刻請求處在文件開頭的塊。
根據(jù)此處描述的新穎方法,每當(dāng)滿足某個(gè)條件時(shí),便可將此類請求從對文件中的首個(gè)塊的請求轉(zhuǎn)換成對整個(gè)文件的請求。當(dāng)高速緩存代理服務(wù)器接收到對整個(gè)文件的請求時(shí),該代理服務(wù)器通常存儲(chǔ)響應(yīng)。因此,這些請求的使用使得文件被放入本地高速緩存代理服務(wù)器的高速緩存中,以使得后續(xù)請求無論是針對全文件的還是部分請求均可直接由該高速緩存代理服務(wù)器來服務(wù)。該條件可以是使得在與給定文件相關(guān)聯(lián)的請求集合(例如由觀看所議的內(nèi)容項(xiàng)的一組客戶端生成的請求的集合)中,該條件至少對于這些請求中的規(guī)定的分?jǐn)?shù)而言將是滿足的。合適條件的示例是隨機(jī)選取的數(shù)字高于所規(guī)定的閾值。該閾值可被設(shè)置成使得將單塊請求轉(zhuǎn)換成全文件請求的這種轉(zhuǎn)換平均而言對這些請求中規(guī)定的分?jǐn)?shù)發(fā)生,例如10 個(gè)請求里面發(fā)生一次(在這種情形中,可從區(qū)間
選取該隨機(jī)數(shù)并且閾值可為0. 9)。合適條件的另一示例是對與塊相關(guān)聯(lián)的一些信息以及與客戶端相關(guān)聯(lián)的一些信息演算出的散列函數(shù)取所規(guī)定的值集合中的一個(gè)值。該方法具有以下優(yōu)點(diǎn)對于被頻繁請求的文件,該文件將被放入本地高速緩存代理服務(wù)器的高速緩存中,然而塊請求流送系統(tǒng)的操作與其中每個(gè)請求針對單個(gè)塊的標(biāo)準(zhǔn)操作相比沒有明顯更改。在許多情形中,在發(fā)生將請求從單塊請求轉(zhuǎn)換成全文件請求的場合,客戶端規(guī)程本將接著請求該文件內(nèi)的其他塊。如果是這種情形,則此類請求可被抑制,因?yàn)樗h的塊無論如何都將作為全文件請求的結(jié)果被接收到。URL構(gòu)造以及段列表牛成和杳找段列表生成應(yīng)對客戶端在特定的客戶端本地時(shí)間“現(xiàn)在”如何從MPD來為始于某個(gè)開始時(shí)間“starttime”的特定表示生成段列表的問題,其中該開始時(shí)間“starttime”對于點(diǎn)播情形而言是相對于媒體呈現(xiàn)的開始而言的,或者是以壁鐘時(shí)間來表達(dá)的。段列表可包括定位符,例如指向可任選的初始表示元數(shù)據(jù)的URL,以及媒體段列表。每個(gè)媒體段可能已被指派開始時(shí)間、歷時(shí)和定位符。開始時(shí)間典型地表達(dá)段中所包含媒體的媒體時(shí)間的近似,但不一定是樣本準(zhǔn)確時(shí)間。開始時(shí)間被HTTP流送客戶端用來在恰適的時(shí)間發(fā)出下載請求。段列表(包括每個(gè)段的開始時(shí)間)的生成可按不同方式進(jìn)行。URL可作為播放列表提供,或者URL構(gòu)造規(guī)則可被有利地用于段列表的緊湊表示??衫鐖?zhí)行基于URL的段列表構(gòu)造——若MPD通過諸如文件動(dòng)態(tài)信息 (FileDynamicInfo)或等效信號之類的特定屬性或元素來信令通知這一點(diǎn)。以下在“URL構(gòu)造概覽”小節(jié)中提供從URL構(gòu)造創(chuàng)建段列表的普適方式。基于播放列表的構(gòu)造可例如由不同信號來信令通知。本上下文中還有利地實(shí)現(xiàn)在段列表中查找以及到達(dá)準(zhǔn)確的媒體時(shí)間的功能。URL構(gòu)造器概覽如先前描述的,在本發(fā)明的一個(gè)實(shí)施例中,可提供包含URL構(gòu)造規(guī)則的元數(shù)據(jù)文件,這些URL構(gòu)造規(guī)則允許客戶端設(shè)備構(gòu)造呈現(xiàn)的塊的文件標(biāo)識(shí)符?,F(xiàn)在描述對塊請求流送系統(tǒng)的進(jìn)一步新穎增強(qiáng),其提供元數(shù)據(jù)文件的改變,包括URL構(gòu)造規(guī)則的改變、可用編碼的數(shù)目的改變、與可用編碼相關(guān)聯(lián)的元數(shù)據(jù)諸如比特率、縱橫比、分辨率、音頻或視頻編解碼器或編解碼參數(shù)或其他參數(shù)的改變。在該新穎增強(qiáng)中,可提供與元數(shù)據(jù)文件的每個(gè)元素相關(guān)聯(lián)的指示在整個(gè)呈現(xiàn)內(nèi)的時(shí)間區(qū)間的附加數(shù)據(jù)。在該時(shí)間區(qū)間內(nèi),該元素可被視為有效,而除該時(shí)間區(qū)間以外,該元素可被忽略。此外,可增強(qiáng)元數(shù)據(jù)的句法,以使得先前允許出現(xiàn)僅一次或至多一次的元素可出現(xiàn)多次。在這種情形中可應(yīng)用附加限制,其規(guī)定對于此類元素,指定的時(shí)間區(qū)間必須不相交。在任何給定時(shí)刻,僅考慮其時(shí)間區(qū)間包含此給定時(shí)刻的元素就將得到與原始元數(shù)據(jù)句法相一致的元數(shù)據(jù)文件。將此類時(shí)間區(qū)間稱為有效性區(qū)間。該方法因此提供了在單個(gè)元數(shù)據(jù)文件內(nèi)信令通知上述種類的改變的手段。有利地,此類方法可用來提供在呈現(xiàn)內(nèi)的指定點(diǎn)支持所描述的種類的改變的媒體呈現(xiàn)。URL構(gòu)造器如本文中所描述的,塊請求流送系統(tǒng)的常見特征是需要向客戶端提供“元數(shù)據(jù)”, 元數(shù)據(jù)標(biāo)識(shí)可用媒體編碼并提供客戶端請求來自這些編碼的塊所需的信息。例如,在HTTP 的情形中,該信息可包括包含媒體塊的文件的URL??商峁┎シ帕斜砦募?,其列出給定編碼的塊的URL。提供多個(gè)播放列表文件,每個(gè)文件針對一種編碼,連同列出與不同編碼相對應(yīng)的播放列表的“關(guān)于播放列表的主播放列表”。該系統(tǒng)的缺點(diǎn)在于元數(shù)據(jù)可能變得相當(dāng)大, 且因此在客戶端開始流時(shí)要花一定時(shí)間來請求元數(shù)據(jù)。該系統(tǒng)的另一缺點(diǎn)在實(shí)況內(nèi)容的情形中是明顯的,此時(shí)與媒體數(shù)據(jù)塊相對應(yīng)的文件是從正被實(shí)時(shí)地(實(shí)況)捕捉的媒體流 (例如實(shí)況體育比賽或新聞節(jié)目)“在運(yùn)行中”生成的。在這種情形中,可在每次有新塊可用時(shí)(例如,每幾秒)更新播放列表文件??蛻舳嗽O(shè)備可重復(fù)地取回該播放列表文件以確定是否有新塊可用并獲得其URL。這可能對服務(wù)基礎(chǔ)設(shè)施造成顯著負(fù)荷,并且尤其意味著元數(shù)據(jù)文件不能被高速緩存比更新間隔更久的時(shí)間,更新間隔等于通常為幾秒的量級的塊大小。塊請求流送系統(tǒng)的一個(gè)重要方面是用于向客戶端通知應(yīng)當(dāng)與文件下載協(xié)議一起用來請求塊的文件標(biāo)識(shí)符(例如URL)的方法。例如,其中對于呈現(xiàn)的每個(gè)表示都提供播放列表文件的方法,該播放列表文件列出包含媒體數(shù)據(jù)塊的文件的URL。該方法的缺點(diǎn)在于播放列表文件本身的至少一些需要被下載后播出才能開始,這增加了頻道換臺(tái)時(shí)間并且因此導(dǎo)致不良用戶體驗(yàn)。對于具有若干或許多表示的長媒體呈現(xiàn),文件URL的列表可能很大,并且因此播放列表文件可能很大,這進(jìn)一步增加了頻道換臺(tái)時(shí)間。該方法的另一缺點(diǎn)發(fā)生在實(shí)況內(nèi)容的情形中。在這種情形中,不會(huì)事先就有完整的URL列表可用,且播放列表文件隨著有新塊變?yōu)榭捎枚恢芷谛缘馗?,并且客戶端周期性地請求該播放列表文件以接收?jīng)更新版本。由于該文件被頻繁更新,因此其不能被長時(shí)間存儲(chǔ)在高速緩存代理服務(wù)器內(nèi)。這意味著對該文件的很多請求將被轉(zhuǎn)發(fā)給其他服務(wù)器并最終轉(zhuǎn)發(fā)給生成該文件的服務(wù)器。在受歡迎的媒體呈現(xiàn)的情形中,這可能對該服務(wù)器以及網(wǎng)絡(luò)造成高負(fù)荷,進(jìn)而可能導(dǎo)致響應(yīng)時(shí)間很慢并因此導(dǎo)致頻道換臺(tái)時(shí)間很長且用戶體驗(yàn)不良。在最差情形中,服務(wù)器變得過載,并且這導(dǎo)致一些用戶不能觀看該呈現(xiàn)。在塊請求流送系統(tǒng)的設(shè)計(jì)中希望避免對可使用的文件標(biāo)識(shí)符的形式加以限制。這是由于多種考慮可能激發(fā)使用特定形式的標(biāo)識(shí)符的動(dòng)機(jī)。例如,在塊供應(yīng)基礎(chǔ)設(shè)施是內(nèi)容投遞網(wǎng)絡(luò)的情形中,可能存在與跨網(wǎng)絡(luò)分布存儲(chǔ)或服務(wù)負(fù)荷的愿望或其他要求相關(guān)的文件命名或存儲(chǔ)慣例,這導(dǎo)致在系統(tǒng)設(shè)計(jì)時(shí)不能預(yù)測的特定形式的文件標(biāo)識(shí)符?,F(xiàn)在描述另一實(shí)施例,其緩解了上述缺點(diǎn)而同時(shí)留存選取恰適文件標(biāo)識(shí)慣例的靈活性。在該方法中,可為媒體呈現(xiàn)的每個(gè)表示提供包括文件標(biāo)識(shí)符構(gòu)造規(guī)則的元數(shù)據(jù)。文件標(biāo)識(shí)符構(gòu)造規(guī)則可例如包括文本串。為了確定呈現(xiàn)的給定塊的文件標(biāo)識(shí)符,可提供解讀文件標(biāo)識(shí)符構(gòu)造規(guī)則的方法,該方法包括確定輸入?yún)?shù)以及將文件標(biāo)識(shí)構(gòu)造規(guī)則連同這些輸入?yún)?shù)一起求值。輸入?yún)?shù)可例如包括要標(biāo)識(shí)的文件的索引,其中第一文件具有索引0, 第二文件具有索引1,第三文件具有索引2,依此類推。例如,在每個(gè)文件跨越相同時(shí)間歷時(shí) (或大致相同的時(shí)間歷時(shí))的情形中,則與呈現(xiàn)內(nèi)任何給定時(shí)間相關(guān)聯(lián)的文件的索引可容易地確定。替換地,呈現(xiàn)內(nèi)由每個(gè)文件跨越的時(shí)間可在呈現(xiàn)或版本元數(shù)據(jù)內(nèi)提供。在一個(gè)實(shí)施例中,文件標(biāo)識(shí)符構(gòu)造規(guī)則可包括文本串,該文本串可包含與輸入?yún)?shù)相對應(yīng)的某些特殊標(biāo)識(shí)符。文件標(biāo)識(shí)符構(gòu)造規(guī)則的求值方法包括確定這些特殊標(biāo)識(shí)符在該文本串內(nèi)的位置,以及用相應(yīng)的輸入?yún)?shù)的值的串表示來取代每個(gè)此類特殊標(biāo)識(shí)符。在另一實(shí)施例中,文件標(biāo)識(shí)符構(gòu)造規(guī)則可包括遵循表達(dá)語言的文本串。表達(dá)語言包括該語言的表達(dá)可遵循的句法的定義以及用于對遵循該句法的串求值的規(guī)則集?,F(xiàn)在將參照圖21及下列等等來描述具體示例。圖21中示出對以增廣巴科斯-諾爾范式(Augmented Backus Naur Form)定義的合適表達(dá)式語言的句法定義的示例。用于對遵循圖21中的 < 表達(dá)式 > 產(chǎn)生式的串的規(guī)則求值的示例包括如下將遵循 < 表達(dá)式 > 產(chǎn)生式的串(< 表達(dá)式 >)遞歸地變換成遵循 < 字面 > 產(chǎn)生式的串遵循 < 字面 > 產(chǎn)生式的 < 表達(dá)式 > 不變。遵循 < 變量 > 產(chǎn)生式的 < 表達(dá)式 > 用由該〈變量〉產(chǎn)生式的 < 令牌 > 串標(biāo)識(shí)的變量的值來替代。遵循 < 函數(shù) > 產(chǎn)生式的 < 表達(dá)式 > 通過如下描述地根據(jù)這些規(guī)則來對其每個(gè)自變量求值并向這些自變量應(yīng)用取決于 < 函數(shù) > 產(chǎn)生式的 < 令牌 > 元素的變換來求值。遵循 < 表達(dá)式 > 產(chǎn)生式的最后選項(xiàng)的 < 表達(dá)式 > 通過如下描述地對這兩個(gè) < 表達(dá)式 > 元素求值并向這些自變量應(yīng)用取決于 < 表達(dá)式 > 產(chǎn)生式的此最后選項(xiàng)的 < 運(yùn)算符 > 元素的運(yùn)算來求值。在以上描述的方法中,假定求值發(fā)生在其中可定義多個(gè)變量的上下文中。變量是 (名稱,值)對,其中“名稱”是遵循〈令牌〉產(chǎn)生式的串,而“值”是遵循〈字面〉產(chǎn)生式的串。一些變量可在求值開始前在求值過程外部定義。其他變量可在求值過程本身內(nèi)部定義。 所有變量都是“全局”的,“全局”的意義是指對于每個(gè)可能的“名稱”僅存在一個(gè)變量。函數(shù)的示例是“printf”函數(shù)。該函數(shù)接受一個(gè)或更多個(gè)自變量。第一自變量可遵循〈串〉產(chǎn)生式(下文稱為“串”)。printf函數(shù)求值得到其第一自變量的經(jīng)變換版本。 所應(yīng)用的變換與C標(biāo)準(zhǔn)庫的“printf ”函數(shù)相同,其中〈函數(shù)〉產(chǎn)生式中包括的附加自變量供應(yīng)C標(biāo)準(zhǔn)庫printf函數(shù)預(yù)期的附加自變量。函數(shù)的另一示例是“hash (散列)”函數(shù)。該函數(shù)接受兩個(gè)自變量,其中第一個(gè)自變量可以是串,而第二個(gè)自變量可遵循〈數(shù)字〉產(chǎn)生式(下文稱為“數(shù)字”)?!癶ash”函數(shù)向第一自變量應(yīng)用散列算法并返回為小于第二自變量的非負(fù)整數(shù)結(jié)果。合適散列函數(shù)的示例在圖22中所示的C函數(shù)中給出,其自變量為輸入串(排除包封的引號)以及數(shù)值輸入值。 散列函數(shù)的其他示例對本領(lǐng)域技術(shù)人員是公知的。函數(shù)的另一示例是取一個(gè)、兩個(gè)或三個(gè)串自變量的“Subst”函數(shù)。在供應(yīng)一個(gè)自變量的情形中,“Subst”函數(shù)的結(jié)果是第一自變量。在供應(yīng)兩個(gè)自變量的情形中,則“Subst” 函數(shù)的結(jié)果通過在第一自變量內(nèi)擦除第二自變量(排除包封的引號)的任何出現(xiàn)并返回經(jīng)如此修改的第一自變量來計(jì)算。在供應(yīng)三個(gè)自變量的情形中,則“Subst”函數(shù)的結(jié)果通過在第一自變量內(nèi)用第三自變量(排除包封的引號)來替代第二自變量(排除包封的引號)的任何出現(xiàn)并返回經(jīng)如此修改的第一自變量來計(jì)算。運(yùn)算符的一些示例是加、減、除、乘和模運(yùn)算符,分別由〈運(yùn)算符〉產(chǎn)生式‘ + ’、‘_’、 ‘/’、‘*’、‘ % ’標(biāo)識(shí)。這些運(yùn)算符要求 < 運(yùn)算符 > 產(chǎn)生式任一側(cè)的 < 表達(dá)式 > 產(chǎn)生式求值均得到數(shù)字。運(yùn)算符的求值包括以常規(guī)方式向這兩個(gè)數(shù)字應(yīng)用恰適的算術(shù)運(yùn)算(分別為加、 減、除、乘和模)并返回遵循〈數(shù)字〉產(chǎn)生式的形式的結(jié)果。運(yùn)算符的另一示例是賦值運(yùn)算符,由 < 運(yùn)算符 > 產(chǎn)生式‘=’標(biāo)識(shí)。該運(yùn)算符要求左邊的自變量求值得到串,其內(nèi)容遵循〈令牌〉產(chǎn)生式。串的內(nèi)容被定義為包封的引號內(nèi)的字符串。等于運(yùn)算符導(dǎo)致其名稱為等于左邊自變量的內(nèi)容的〈令牌〉的變量被賦于等于對右邊自變量求值的結(jié)果的值。該值也是對該運(yùn)算符表達(dá)式求值的結(jié)果。運(yùn)算符的另一示例是順序運(yùn)算符,由 < 運(yùn)算符 > 產(chǎn)生式‘;,標(biāo)識(shí)。對該運(yùn)算符求值的結(jié)果是右邊的自變量。注意,與所有運(yùn)算符一樣,兩個(gè)自變量均被求值并且左邊的自變量先被求值。在本發(fā)明的一個(gè)實(shí)施例中,文件的標(biāo)識(shí)符可通過根據(jù)以上規(guī)則用標(biāo)識(shí)所要求的文件的特定的一組輸入變量對文件標(biāo)識(shí)符構(gòu)造規(guī)則求值來獲得。輸入變量的示例是名稱為 “index(索引)”且值等于該文件在呈現(xiàn)內(nèi)的數(shù)值索引的變量。輸入變量的另一示例是名稱為“bitrate (比特率),,且值等于呈現(xiàn)的所要求版本的平均比特率的變量。圖23解說了文件標(biāo)識(shí)符構(gòu)造規(guī)則的一些示例,其中輸入變量是給出想要的呈現(xiàn)的表示的標(biāo)識(shí)符的“id”以及給出文件的序列號的“seq”。如本領(lǐng)域技術(shù)人員在閱讀本公開之際將清楚的,以上方法的許多變形是可能的。 例如,可以并非提供以上描述的函數(shù)和運(yùn)算符的全部,或者可提供外加的函數(shù)或運(yùn)算符。URL構(gòu)造規(guī)則和時(shí)基本節(jié)提供基本URI構(gòu)造規(guī)則,以指派文件或段URI以及每個(gè)段在表示和媒體呈現(xiàn)內(nèi)的開始時(shí)間。對于本條,假定客戶端處有媒體呈現(xiàn)描述可用。假定HTTP流送客戶端正在播出在媒體呈現(xiàn)內(nèi)下載的媒體。HTTP客戶端的實(shí)際呈現(xiàn)時(shí)間可用呈現(xiàn)時(shí)間相對于呈現(xiàn)開始在何處來定義。在初始化時(shí),可假定呈現(xiàn)時(shí)間t = 0。在任何點(diǎn)t,HTTP客戶端可下載播放時(shí)間tP (也是相對于呈現(xiàn)的開始而言的)比實(shí)際呈現(xiàn)時(shí)間t提前至多“MaximumClientfreBufferTime (最大客戶端預(yù)緩沖時(shí)間)”的任何數(shù)據(jù)、以及由于用戶交互(例如,查找、快進(jìn)等)而需要的任何數(shù)據(jù)。在一些實(shí)施例中, “最大客戶端預(yù)緩沖時(shí)間”甚至可以不被指定,不被指定的意義是指客戶端能無限制地下載比當(dāng)前播放時(shí)間提前(tP)的數(shù)據(jù)。HTTP客戶端可避免下載不必要的數(shù)據(jù),例如,來自預(yù)期不會(huì)播出的表示的任何段可能典型地不被下載。提供流送服務(wù)的基本過程可以是通過生成下載整個(gè)文件/段或文件/段子集的恰適請求,例如通過使用HTTP獲取請求或HTTP部分獲取請求來下載數(shù)據(jù)。本描述解決了如何訪問特定播出時(shí)間tP的數(shù)據(jù),但一般而言,客戶端可下載更大時(shí)間范圍的播放時(shí)間的數(shù)據(jù)以避免低效率請求。HTTP客戶端可使得在提供流送服務(wù)時(shí)的HTTP請求的數(shù)目/頻度最小化。為了訪問特定表示中在播放時(shí)間tP或至少接近播放時(shí)間tP的媒體數(shù)據(jù),客戶端確定指向包含該播放時(shí)間的文件的URL并且另外確定該文件中用于訪問該播放時(shí)間的字節(jié)范圍。媒體呈現(xiàn)描述可例如通過使用R印resentationID (表示ID)屬性向每個(gè)表示指派表示id “r”。換言之,MPD的該內(nèi)容在由攝取系統(tǒng)寫時(shí)或在被客戶端讀時(shí)將被解讀成存在指派。為了下載id為r的特定表示的特定播放時(shí)間tP的數(shù)據(jù),客戶端可構(gòu)造針對文件的恰適URI。媒體呈現(xiàn)描述可向每個(gè)表示r的每個(gè)文件或段指派以下屬性(a)表示r內(nèi)的文件的序號i,其中i = 1,2,-,Nr, (b)表示id為r且文件索引為i的文件相對于呈現(xiàn)時(shí)間而言的相對開始時(shí)間,定義為ts (r, i),(c)表示id為r且文件索引為i的文件/段的文件URI,記為FileURI (r,i)。在一個(gè)實(shí)施例中,可顯式地為表示提供文件的開始時(shí)間和文件URI。在另一實(shí)施例中,可顯式地提供文件URI列表,其中每個(gè)文件URI根據(jù)在該列表中的位置被固有地指派索引i,并且段的開始時(shí)間是作為從1到i_l的段的所有段歷時(shí)之和來推導(dǎo)的。每個(gè)段的歷時(shí)可根據(jù)以上討論的任何規(guī)則來提供。例如,懂基礎(chǔ)數(shù)學(xué)的任何人員可使用其他方法來推導(dǎo)用于從單個(gè)元素或?qū)傩砸约拔募RI在表示中的位置/索引來容易地推導(dǎo)開始時(shí)間的方法。若MPD中提供動(dòng)態(tài)URI構(gòu)造規(guī)則,則每個(gè)文件的開始時(shí)間以及每個(gè)文件URI可通過使用構(gòu)造規(guī)則、所請求的文件的索引、以及潛在可能還使用在媒體呈現(xiàn)描述中提供的一些附加參數(shù)來動(dòng)態(tài)地構(gòu)造。該信息例如可在諸如文件URI模式(FileURII^attern)和動(dòng)態(tài)文件信息(FilelnfoDynamic)等MPD屬性及元素中提供。文件URI模式提供關(guān)于如何基于文件索引序號i和表示ID r來構(gòu)造URI的信息。文件URI格式(FileURIi^rmat)構(gòu)造為文件URI 格式=sprintf ( "% s% s% s% s% s. % s,,,基 URI,基文件名稱,表示ID格式,分隔符格式,文件序列ID格式,文件擴(kuò)展名);并且FileURI (r, i)構(gòu)造為FileURI (r,i) = sprintf (文件 URI 格式,r,i);每個(gè)文件/段的相對開始時(shí)間ts(r,i)可由MPD中包含的描述該表示中的段的歷時(shí)的某個(gè)屬性來推導(dǎo),例如“動(dòng)態(tài)文件信息”屬性。MPD還可包含對媒體呈現(xiàn)中的所有表示或以如上指定的相同方式至少在時(shí)段中對所有表示而言為全局的“動(dòng)態(tài)文件信息”屬性序列。若表示r中的特定播放時(shí)間tP的媒體數(shù)據(jù)被請求,則相應(yīng)的索引i(r,tP)可被推導(dǎo)為 i(r, tp),以使得該索引的播放時(shí)間落在開始時(shí)間ts(r,i(r, tP))與ts(r,i (r, tP)+l)的區(qū)間中。段訪問可進(jìn)一步被以上情形限制,例如段是不可訪問的。一旦獲得相應(yīng)段的索引和URI,訪問確切的播放時(shí)間tP就取決于實(shí)際段格式。在該示例中,不失一般性,假定媒體段具有始于0的局部時(shí)間線。為了訪問和呈現(xiàn)播放時(shí)間tP 的數(shù)據(jù),客戶端可從能通過其中i = i(r,tp)的URIFileURI (r,i)訪問的文件/段下載與局部時(shí)間相對應(yīng)的數(shù)據(jù)?!愣?,客戶端可下載整個(gè)文件并且隨后可訪問播放時(shí)間tP。然而,不一定3GP 文件的所有信息都需要被下載,因?yàn)?GP文件提供將局部時(shí)基映射到字節(jié)范圍的結(jié)構(gòu)。因此,只要有充分的隨機(jī)訪問信息可用,僅訪問播放時(shí)間tP的特定字節(jié)范圍就足以播放媒體。同樣,在段的初始部分中可例如使用段索引之類來提供關(guān)于媒體段的字節(jié)范圍和局部時(shí)基的結(jié)構(gòu)和映射的充分信息。通過能訪問段的初始的例如1200個(gè)字節(jié),客戶端就可具有充分的信息以直接訪問播放時(shí)間tP所需的字節(jié)范圍。在另一示例中,假定段索引(可能在下文指定為“tidx”包)可被用于標(biāo)識(shí)所要求的一個(gè)或多個(gè)片斷的字節(jié)偏移量??舍槍λ蟮囊粋€(gè)或多個(gè)片斷形成部分獲取請求。還存在其他替換方案,例如,客戶端可發(fā)出對文件的標(biāo)準(zhǔn)請求并在已接收到第一個(gè)“tidx”包時(shí)取消該請求。^^客戶端可嘗試查找到表示中的特定呈現(xiàn)時(shí)間tp?;贛PD,客戶端能訪問表示中的每個(gè)段的媒體段開始時(shí)間和媒體段URL??蛻舳丝色@取開始時(shí)間tS(r,i)小于或等于呈現(xiàn)時(shí)間tp的最大段索引i作為最有可能包含呈現(xiàn)時(shí)間tp的媒體樣本的段的段索引 segment_index,即段索引=max{i |tS(r,i) <=tp}。獲得段 URL 為 FileURI (r,i)。注意,由于與隨機(jī)訪問點(diǎn)的放置、媒體軌跡的對準(zhǔn)以及媒體時(shí)基漂移有關(guān)的問題, MPD中的時(shí)基信息可能是近似的。因此,由以上規(guī)程所標(biāo)識(shí)出的段可能始于比tp稍晚的時(shí)間,并且呈現(xiàn)時(shí)間tp的媒體數(shù)據(jù)可能位于先前媒體段中。在查找的情形中,可將查找時(shí)間更新成等于檢索到的文件的首個(gè)樣本時(shí)間,或者可代之以檢索前一文件。然而應(yīng)注意,在連續(xù)播出期間,包括在替換表示/版本之間切換的情形中,tp與檢索到的段的開始之間的時(shí)間的媒體數(shù)據(jù)仍是可用的。為了準(zhǔn)確地查找到呈現(xiàn)時(shí)間tp,HTTP流送客戶端需要訪問隨機(jī)訪問點(diǎn)(RAP)。 為了在3GPP自適應(yīng)HTTP流送的情形中確定媒體段中的隨機(jī)訪問點(diǎn),客戶端可例如使用 ‘tidx’或‘sidx’包(若存在)中的信息來定位媒體呈現(xiàn)中的隨機(jī)訪問點(diǎn)以及相應(yīng)的呈現(xiàn)時(shí)間。在段為3GPP電影片斷的情形中,也可能由客戶端使用‘moof’和‘mdat’包內(nèi)的信息來例如定位RAP并從電影片斷中的信息和從MPD推導(dǎo)出的段開始時(shí)間來獲得必需的呈現(xiàn)時(shí)間。若沒有呈現(xiàn)時(shí)間在所請求的呈現(xiàn)時(shí)間tp之前的RAP可用,則客戶端可訪問先前段或者可僅僅使用首個(gè)隨機(jī)訪問點(diǎn)作為查找結(jié)果。當(dāng)媒體段始于RAP時(shí),這些規(guī)程是簡單的。同樣應(yīng)注意,媒體段的所有信息未必都需要被下載才能訪問呈現(xiàn)時(shí)間tp。客戶端可以例如首先使用字節(jié)范圍請求從媒體段的開頭請求‘tidx’或‘sidx’包。通過使用 ‘tidx’或‘sidx’包,段時(shí)基可被映射到段的字節(jié)范圍。通過連續(xù)使用部分HTTP請求,僅媒體段中有關(guān)系的部分需要被訪問,從而得到改善的用戶體驗(yàn)以及低啟動(dòng)延遲。段列表生成如本文中所描述的,如何實(shí)現(xiàn)使用由MPD提供的信息來為具有信令通知的大致段歷時(shí)dur的表示創(chuàng)建段列表的簡單直接的HTTP流送客戶端應(yīng)當(dāng)是明了的。在一些實(shí)施例中,客戶端可向表示內(nèi)的媒體段指派連貫索引i = 1,2,3,…,即第一個(gè)媒體段被指派索引 i = 1,第二個(gè)媒體段被指派索引i = 2,依此類推。那么,具有段索引i的媒體段的列表被指派startTime[i](開始時(shí)間[i]),并且例如如下生成URL[i]。首先,將索引i設(shè)為1。獲得第一個(gè)媒體段的開始時(shí)間為0,即startTime[l] = 0。獲得媒體段i的URL即URL[i]為 FileURI (r,i)。該過程針對具有索引i的所有被描述的媒體段繼續(xù),并且獲得媒體段i的 startTime [i]為(i_l) *dur,并且獲得 URL[i]為 FileURI (r,i)。并發(fā)HTTP/TCP 請求
塊請求流送系統(tǒng)中一關(guān)注點(diǎn)是希望總是請求能被及時(shí)地完整接收以供播出的最高質(zhì)量塊。然而,數(shù)據(jù)抵達(dá)率可能不是事先已知的,且因此可能碰巧所請求的塊沒有及時(shí)抵達(dá)以供播出。這導(dǎo)致需要暫停媒體播出,從而導(dǎo)致不良用戶體驗(yàn)。該問題可通過對要請求的塊的選擇采取保守辦法的客戶端算法來緩解,此保守辦法請求更有可能即便在塊的接收期間數(shù)據(jù)抵達(dá)率下降亦能被及時(shí)接收到的較低質(zhì)量(因此有較小大小)的塊。然而,該保守辦法具有可能向用戶或目的地設(shè)備投遞較低質(zhì)量播出這一缺點(diǎn),這也是不良用戶體驗(yàn)。當(dāng)同時(shí)使用多個(gè)HTTP連接來下載不同塊時(shí)該問題可能放大,如以下所描述的,因?yàn)榭捎镁W(wǎng)絡(luò)資源跨連接被共享,且因此被同時(shí)用于具有不同播出時(shí)間的塊??蛻舳瞬l(fā)地發(fā)出對多個(gè)塊的請求可能是有利的,其中在本上下文中,“并發(fā)地” 表示對請求的響應(yīng)發(fā)生在交迭的時(shí)間區(qū)間中,且這些請求不一定是在精確或甚至大致相同的時(shí)間作出的。在HTTP協(xié)議的情形中,該辦法由于TCP協(xié)議的行為(這是公知的)故而可改善對可用帶寬的利用率。這對于改善內(nèi)容換臺(tái)時(shí)間可能是尤為重要的,因?yàn)樵谛聝?nèi)容首次被請求時(shí),藉以請求這些塊的數(shù)據(jù)的相應(yīng)HTTP/TCP連接可能起動(dòng)很慢,并且因此在此時(shí)使用若干HTTP/TCP連接能極大地加速第一批塊的數(shù)據(jù)投遞時(shí)間。然而,在不同HTTP/TCP 連接上請求不同塊或片斷也可能導(dǎo)致性能降級,因?yàn)閷⒁炔コ龅膲K的請求正在與對后續(xù)塊的請求競爭,競爭的各HTTP/TCP下載在其投遞速度方面大為不同,并且因此該請求的完成時(shí)間可能高度可變,且一般不可能控制哪些HTTP/TCP連接將迅速完成而哪些將較慢, 因此很有可能至少一些時(shí)候頭幾個(gè)塊的HTTP/TCP下載將最后完成,因此導(dǎo)致很大且可變的頻道換臺(tái)時(shí)間。假設(shè)段的每個(gè)塊或片斷是在單獨(dú)的HTTP/TCP連接上下載的,并且并行連接的數(shù)量為η且每個(gè)塊的播出歷時(shí)為t秒,并且與該段相關(guān)聯(lián)的內(nèi)容的流送率為S。當(dāng)客戶端最初開始流送該內(nèi)容時(shí),可發(fā)出對頭η個(gè)塊的請求,這代表n*t秒的媒體數(shù)據(jù)。如本領(lǐng)域技術(shù)人員已知的,TCP連接的數(shù)據(jù)率有很大變動(dòng)。然而,為了簡化本討論, 假設(shè)理想情況下所有連接都并行地進(jìn)行,從而第一個(gè)塊將在與其他n-1個(gè)請求的塊大約相同的時(shí)間被完全接收。為了進(jìn)一步簡化本討論,假設(shè)這η個(gè)下載連接所利用的聚集帶寬在該下載的整個(gè)歷時(shí)期間固定為值B,并且流送率S在整個(gè)表示期間是恒定的。進(jìn)一步假設(shè)媒體數(shù)據(jù)結(jié)構(gòu)使得塊的播出在整個(gè)塊在客戶端處可用時(shí)才能進(jìn)行,即塊的播出只能在接收到整個(gè)塊之后開始,例如由于底層視頻編碼的結(jié)構(gòu)或者由于采用了加密來單獨(dú)加密每個(gè)片斷或塊,且因此整個(gè)片斷或塊需要先被接收到才能被解密。因此,為了簡化以下的討論,假定在塊的任何部分能被播出之前,需要接收到整個(gè)塊。那么,在第一個(gè)塊抵達(dá)并且能被播出之前所需的時(shí)間約為n*t*S/B。由于希望使內(nèi)容換臺(tái)時(shí)間最小化,因此使n*t*S/B最小化是可取的。t的值可由諸如底層視頻編碼結(jié)構(gòu)以及如何利用攝取方法等因素決定,且因此t可以適度地小,但非常小的t值導(dǎo)致過度復(fù)雜的段映射,并且可能與高效視頻編碼和解密(若使用)不兼容。η 的值也可能影響B(tài)的值,即B對于較大的連接數(shù)量η可能較大,且因此減少連接數(shù)量η具有潛在地減少所利用的可用帶寬量B的負(fù)面效應(yīng),因此對于達(dá)成減少內(nèi)容換臺(tái)時(shí)間的目標(biāo)可能不是有效的。S的值取決于選取下載和播出哪個(gè)表示,且理想情況下S應(yīng)當(dāng)盡可能接近B 以使給定網(wǎng)絡(luò)條件下媒體的播出質(zhì)量最大化。因此,為了簡化本討論,假定S約等于B。那么,頻道換臺(tái)時(shí)間與n*t成比例。因此,若各連接利用的聚集帶寬與連接數(shù)量呈亞線性比例(通常就是這種情形),則利用較多連接來下載不同片斷會(huì)使頻道換臺(tái)時(shí)間降級。作為示例,假設(shè)t = 1秒,且n= 1時(shí)B的值= 500Kbps,n = 2時(shí)B的值= 700Kbps, 且η = 3時(shí)B的值=800Kbps。假設(shè)選取了 S = 700Kbps的表示。那么,在η = 1時(shí),第一塊的下載時(shí)間為1*700/500 = 1. 4秒,在η = 2時(shí),第一塊的下載時(shí)間為2*700/700 = 2秒, 在η = 3時(shí),第一塊的下載時(shí)間為3*700/800 = 2. 625秒,此外,隨著連接數(shù)量增加,各連接的個(gè)體下載速度的可變性很可能增加(盡管即使在一個(gè)連接的情況下,也很可能有某個(gè)明顯的可變性)。因此,在該示例中,頻道換臺(tái)時(shí)間和頻道換臺(tái)時(shí)間可變性隨連接數(shù)量的增加而增加。直觀上,正被投遞的塊具有不同優(yōu)先級,即第一個(gè)塊具有最早投遞期限,第二個(gè)塊具有次最早期限等等,而正藉以投遞這些塊的各下載連接正在投遞期間競爭網(wǎng)絡(luò)資源, 且因此具有最早期限的塊隨著有越來越多的競爭塊被請求而越加延遲。另一方面,即使在該情形中,最終使用一個(gè)以上下載連接也允許支持可維系的較高流送率,例如在三個(gè)連接的情況下,在該示例中能支持最高達(dá)800Kbps的流送率,而在一個(gè)連接的情況下僅能支持 500Kbps 的流。在實(shí)踐中,如上所述,連接的數(shù)據(jù)率在相同連接內(nèi)隨著時(shí)間推移以及在不同連接之間都可能高度可變,并且因此,η個(gè)所請求的塊一般不在同時(shí)完成,且事實(shí)上通??赡苁且粋€(gè)塊可能在另一塊的一半時(shí)間里就完成了。該效應(yīng)導(dǎo)致不可預(yù)測的行為,因?yàn)樵谝恍┣樾沃校谝粋€(gè)塊可能比其他塊完成得快得多,而在其他情形中,第一個(gè)塊可能比其他塊完成得晚得多,且因此播出的開始在一些情形中可能相對迅速地發(fā)生而在其他情形中可能發(fā)生得很慢。這種不可預(yù)測的行為對于用戶來說可能是令人沮喪的,并且因此可能被視為不良用戶體驗(yàn)。因此,需要能利用多個(gè)TCP連接來改善頻道換臺(tái)時(shí)間和頻道換臺(tái)時(shí)間可變性而同時(shí)支持可能的良好質(zhì)量流送率的方法。還需要允許隨著塊的播出時(shí)間的逼近調(diào)節(jié)分配給每個(gè)塊的可用帶寬的份額、從而在必要的情況下較大份額的可用帶寬能有傾向性地被分配給具有最迫近的播放時(shí)間的塊的方法。協(xié)作式HTTP/TCP請求現(xiàn)在描述以協(xié)作式方式使用并發(fā)HTTP/TCP請求的方法。接收機(jī)可采用多個(gè)并發(fā)的協(xié)作式HTTP/TCP請求,例如使用多個(gè)HTTP字節(jié)范圍請求,其中每個(gè)此類請求針對源段中的片斷的一部分、或源段的片斷的全部、或修復(fù)段的一部分或修復(fù)片斷、或針對修復(fù)段的修復(fù)片段的全部。協(xié)作式HTTP/TCP請求連同使用FEC修復(fù)數(shù)據(jù)的優(yōu)點(diǎn)對于提供一貫快速的頻道換臺(tái)時(shí)間可能尤為重要。例如,在頻道換臺(tái)時(shí)間,TCP連接很可能剛剛起動(dòng)或者已空閑了一段時(shí)間,在這種情形中擁塞窗Cwnd對于這些連接位于其最小值,且因此這些TCP連接的投遞速度將花若干往返行程時(shí)間(RTT)來斜坡上升,且在該斜坡上升時(shí)間期間不同TCP連接上的投遞速度將具有高度可變性。現(xiàn)在描述無FEC方法的概覽,無FEC方法是協(xié)作式HTTP/TCP請求方法,其中使用多個(gè)并發(fā)HTTP/TCP連接來僅請求源塊的媒體數(shù)據(jù),即不請求FEC修復(fù)數(shù)據(jù)。通過該無FEC 方法,在不同連接上請求相同片斷的各部分,例如使用針對該片斷的各部分的HTTP字節(jié)范圍請求,且因此例如每個(gè)HTTP字節(jié)范圍請求針對該片斷的段映射中指示的字節(jié)范圍的一部分??赡苁沁@種情形個(gè)體HTTP/TCP的投遞速度在若干RTT (往返行程時(shí)間)上斜坡上升以完全利用可用帶寬,且因此在相對長的時(shí)間段里投遞速度小于可用帶寬,因此若使用單個(gè)HTTP/TCP連接來下載例如要播出的內(nèi)容的第一個(gè)片斷,則頻道換臺(tái)時(shí)間可能很大。使用無FEC方法,在不同HTTP/TCP連接上下載相同片斷的不同部分就能顯著減小頻道換臺(tái)時(shí)間。現(xiàn)在描述FEC方法的概覽,F(xiàn)EC方法是協(xié)作式HTTP/TCP請求方法,其中使用多個(gè)并發(fā)HTTP/TCP連接來請求源段的媒體數(shù)據(jù)以及從該媒體數(shù)據(jù)生成的FEC修復(fù)數(shù)據(jù)。通過該FEC方法,使用針對片斷的各部分的HTTP字節(jié)范圍請求在不同連接上請求相同片斷的各部分以及從該片斷生成的FEC修復(fù)數(shù)據(jù),且因此例如每個(gè)HTTP字節(jié)范圍請求針對該片斷的段映射中指示的字節(jié)范圍的一部分??赡苁沁@種情形個(gè)體HTTP/TCP請求的投遞速度在若干RTT(往返行程時(shí)間)上斜坡上升以完全利用可用帶寬,因此在相對長的時(shí)間段里投遞速度小于可用帶寬,因此若使用單個(gè)HTTP/TCP連接來下載例如要播出的內(nèi)容的第一個(gè)片斷, 則頻道換臺(tái)時(shí)間可能很大。使用FEC方法具有與無FEC方法相同的優(yōu)點(diǎn),且具有并非所有所請求數(shù)據(jù)都需要在能恢復(fù)該片斷之前抵達(dá)的額外優(yōu)點(diǎn),因此進(jìn)一步減小了頻道換臺(tái)時(shí)間以及頻道換臺(tái)時(shí)間可變性。通過在不同TCP連接上作出請求、以及在其中至少一條連接上還請求FEC修復(fù)數(shù)據(jù)的溢額請求,投遞例如足以恢復(fù)使得媒體播出能開始的第一個(gè)所請求片斷的數(shù)據(jù)量要花的時(shí)間量可被極大地減少,并能使之比不使用協(xié)作式TCP連接和FEC修復(fù)數(shù)據(jù)的情況下更加一致。圖M(a)_(e)示出在從仿真的演進(jìn)數(shù)據(jù)優(yōu)化(EVDO)網(wǎng)絡(luò)上的相同HTTPweb服務(wù)器至相同客戶端的相同鏈路上運(yùn)行的5個(gè)TCP連接的投遞率波動(dòng)的示例。在圖M(a)_(e) 中,X軸示出以秒計(jì)的時(shí)間,并且Y軸示出客戶端處在這5個(gè)TCP連接中的每一個(gè)連接上接收比特的速率,每個(gè)連接上的速率是針在1秒的區(qū)間上測量的。在該特定仿真中,在該鏈路上總共有12個(gè)TCP連接在運(yùn)行,且因此網(wǎng)絡(luò)在所示時(shí)間期間是相對有負(fù)荷的,這在有一個(gè)以上客戶端正在移動(dòng)網(wǎng)絡(luò)的相同蜂窩小區(qū)內(nèi)進(jìn)行流送時(shí)是典型的。注意,盡管投遞率隨著時(shí)間推移來看在一定程度上是相關(guān)的,但這5個(gè)連接的投遞率在許多時(shí)間點(diǎn)是有巨大差異的。圖25示出針對大小為250,000比特(約為31. 25千字節(jié))的片斷的可能請求結(jié)構(gòu),其中對該片斷的不同部分并行地作出4個(gè)HTTP字節(jié)范圍請求,即第一 HTTP連接請求頭50,000比特,第二 HTTP連接請求接下來的50,000比特,第三HTTP連接請求接下來的 50,000比特,而第四HTTP連接請求接下來的50,000比特。若不使用FEC,即無FEC方法, 則在該示例中對該片斷只有4個(gè)請求。若使用FEC,即FEC方法,則在該示例中,有一個(gè)附加的HTTP請求,用于請求從該片斷生成的修復(fù)段的額外50,000比特FEC修復(fù)數(shù)據(jù)。圖沈是圖M (a)-(e)中所示的5個(gè)TCP連接的頭幾秒的放大,其中在圖沈中,X 軸以100毫秒的間隔示出時(shí)間,并且Y軸示出客戶端處在這5個(gè)TCP連接中的每一個(gè)連接上接收比特的速率,該速率是在100毫秒?yún)^(qū)間上測量的。一條線示出在客戶端處已從頭4 個(gè)HTTP連接(排除藉以請求FEC數(shù)據(jù)的那個(gè)HTTP連接)為該片斷接收到的聚集比特量, 即,使用無FEC方法抵達(dá)的聚集比特量。另一條線示出在客戶端出已從所有這5個(gè)HTTP連接(包括藉以請求FEC數(shù)據(jù)的那個(gè)HTTP連接)為該片斷接收到的聚集比特量,即,使用FEC 方法抵達(dá)的聚集比特量。對于FEC方法,假定該片斷從接收到250,000個(gè)所請求比特中的任何200,000比特時(shí)起能被FEC解碼,這在例如使用Reed-Solomon FEC碼的情況下就能實(shí)現(xiàn),且在例如使用Luby IV中描述的RaptorQ碼的情況下則本質(zhì)上能實(shí)現(xiàn)。對于該示例中的FEC方法,在1秒后接收到足以使用FEC解碼來恢復(fù)該片斷的數(shù)據(jù),從而允許1秒的頻道換臺(tái)時(shí)間(假定在第一個(gè)片斷被完全播出之前能請求并接收后續(xù)片斷的數(shù)據(jù))。對于該示例中的無FEC方法,在能恢復(fù)該片斷之前不得不接收這4個(gè)請求的所有數(shù)據(jù),這在1. 7秒之后發(fā)生,從而得到1. 7秒的頻道換臺(tái)時(shí)間。因此,在圖沈中所示的示例中,無FEC方法在頻道換臺(tái)時(shí)間的意義上比FEC方法差70%。該示例中的FEC方法表現(xiàn)出的優(yōu)點(diǎn)的一個(gè)原因在于,對于FEC方法,接收到所請求的數(shù)據(jù)中的任何80%就允許恢復(fù)該片斷,而對于無FEC 方法,要求接收到所請求的數(shù)據(jù)的100%。因此,無FEC方法不得不等待最慢的TCP連接完成投遞,且由于TCP投遞率的自然變動(dòng),最慢TCP連接的投遞速度與平均TCP連接相比可能動(dòng)輒有很大方差。在該示例中的FEC方法下,一個(gè)慢TCP連接不會(huì)決定該片斷何時(shí)能恢復(fù)。 相反,對于FEC方法,足夠數(shù)據(jù)的投遞更多地取決于平均TCP投遞率而非最差情形TCP投遞率。存在以上描述的無FEC方法和FEC方法的許多變形。例如,協(xié)作式HTTP/TCP請求可被用于發(fā)生頻道換臺(tái)后的僅頭幾個(gè)片斷,且此后僅使用單個(gè)HTTP/TCP請求來下載進(jìn)一步的片斷、多個(gè)片斷或整個(gè)段。作為另一示例,所使用的協(xié)作式HTTP/TCP連接的數(shù)量可以是正在請求的片斷的緊急性(即,這些片斷的播出時(shí)間有多迫切)以及當(dāng)前網(wǎng)絡(luò)條件的函數(shù)。在一些變形中,可使用多個(gè)HTTP連接來請求來自修復(fù)段的修復(fù)數(shù)據(jù)。在其他變形中,可在不同的HTTP連接上請求不同的數(shù)據(jù)量,例如取決于媒體緩沖器的當(dāng)前大小以及客戶端處的數(shù)據(jù)接收速率。在另一變形中,各源表示彼此并不獨(dú)立,而是代表分層媒體編碼, 其中例如增強(qiáng)型源表示可取決于基源表示。在這種情形中,可以有與基源表示相對應(yīng)的修復(fù)表示、以及與基和增強(qiáng)源表示的組合相對應(yīng)的另一修復(fù)表示。附加的全部元件增進(jìn)了可由以上公開的方法實(shí)現(xiàn)的優(yōu)點(diǎn)。例如,所使用的HTTP 連接的數(shù)量可取決于媒體緩沖器中的當(dāng)前媒體量、和/或向媒體緩沖器中接收的速率而變化。在媒體緩沖器相對較空時(shí)可進(jìn)取性地使用利用FEC的協(xié)作式HTTP請求,即以上描述的FEC方法及該方法的變形,例如對第一片斷的不同部分并行地作出較多的協(xié)作式HTTP請求,請求源片斷的全部以及來自相應(yīng)的修復(fù)片段的相對大分?jǐn)?shù)的修復(fù)數(shù)據(jù),并隨后隨著媒體緩沖器增長,轉(zhuǎn)換到數(shù)量減少的并發(fā)HTTP請求,每請求皆請求更大部分的媒體數(shù)據(jù),以及請求較小分?jǐn)?shù)的修復(fù)數(shù)據(jù),例如,轉(zhuǎn)換到1、2或3個(gè)并發(fā)HTTP請求,轉(zhuǎn)換到每請求對滿量的片斷或多個(gè)連貫片斷作出請求,以及轉(zhuǎn)換到不請求修復(fù)數(shù)據(jù)。作為另一示例,F(xiàn)EC修復(fù)數(shù)據(jù)的量可作為媒體緩沖器大小的函數(shù)而變化,即,當(dāng)媒體緩沖器小時(shí),則可請求較多FEC修復(fù)數(shù)據(jù),并且隨著媒體緩沖器增長,則可逐漸減少所請求的FEC修復(fù)數(shù)據(jù)的量,以及在媒體緩沖器充分大時(shí)的某個(gè)時(shí)間點(diǎn),可以不請求FEC修復(fù)數(shù)據(jù),僅請求來自源表示的源段的數(shù)據(jù)。此類增強(qiáng)型方法的益處在于它們可允許更快和更一致的頻道換臺(tái)時(shí)間、以及更強(qiáng)的抗?jié)撛诿襟w不流暢或停滯的回彈性,同時(shí)通過減少請求消息話務(wù)和FEC修復(fù)數(shù)據(jù)兩者使所使用的超過只投遞源段中的媒體本應(yīng)消費(fèi)的量的額外帶寬量最小化,同時(shí)又使得能支持給定網(wǎng)絡(luò)條件下最高的可能媒體速率。使用并發(fā)HTTP連接時(shí)的附加增強(qiáng)若滿足合適的條件則可放棄HTTP/TCP請求并且可作出另一 HTTP/TCP請求以下載可替代在被放棄的請求中所請求的數(shù)據(jù)的數(shù)據(jù),其中第二 HTTP/TCP請求可請求與原始請求中完全相同的數(shù)據(jù),例如源數(shù)據(jù);或交迭數(shù)據(jù),例如相同源數(shù)據(jù)和修復(fù)數(shù)據(jù)中在第一請求中尚未請求的一些;或者完全不相交的數(shù)據(jù),例如第一請求中尚未請求的修復(fù)數(shù)據(jù)。合適條件的示例是請求因在所規(guī)定時(shí)間內(nèi)沒有來自塊服務(wù)器基礎(chǔ)設(shè)施(BSI)的響應(yīng)、或者在建立與BSI的傳輸連接時(shí)發(fā)生故障、或接收到來自服務(wù)器的顯式故障消息、或其他故障條件而失敗。合適條件的另一示例是根據(jù)將連接速度的度量(響應(yīng)于所議請求的數(shù)據(jù)抵達(dá)率) 與預(yù)期連接速度、或與在響應(yīng)中包含的媒體數(shù)據(jù)的播出時(shí)間或取決于該時(shí)間的其他時(shí)間之前接收該響應(yīng)所需的連接速度的估計(jì)作比較,數(shù)據(jù)的接收進(jìn)行得異常慢。該辦法在BSI有時(shí)顯現(xiàn)故障或不良性能的情形中具有優(yōu)點(diǎn)。在這種情形中,上述辦法提高了即使BSI內(nèi)有故障或不良性能該客戶端仍能繼續(xù)可靠地播出媒體數(shù)據(jù)的概率。 注意,在一些情形中,以BSI有時(shí)的確顯現(xiàn)出此類故障或不良性能的方式來設(shè)計(jì)BSI可能存在優(yōu)點(diǎn),例如此類設(shè)計(jì)可具有比不顯現(xiàn)出此類故障或不良性能或不那么頻繁地顯現(xiàn)出此類故障或不良性能的替換設(shè)計(jì)低的成本。在這種情形中,本文中描述的方法具有進(jìn)一步優(yōu)點(diǎn), 因?yàn)槠湓试S對BSI利用此類較低成本設(shè)計(jì)而不會(huì)導(dǎo)致用戶體驗(yàn)降級的后果。在另一實(shí)施例中,對與給定塊相對應(yīng)的數(shù)據(jù)發(fā)出的請求的數(shù)目可取決于是否滿足關(guān)于該塊的合適條件。若不滿足該條件,則假使對該塊的所有目前未完成的數(shù)據(jù)請求的成功完成將允許以高概率恢復(fù)出該塊,客戶端可被禁止對該塊作出進(jìn)一步請求。若滿足該條件,則可發(fā)出對該塊的更大量請求,即,以上的禁止不適用。合適條件的示例是截至該塊的調(diào)度播出時(shí)間為止的時(shí)間或取決于該時(shí)間的其他時(shí)間落在所規(guī)定的閾值之下。該方法具有優(yōu)點(diǎn),這是由于對塊的數(shù)據(jù)的附加請求是在對塊的接收因包括該塊的媒體數(shù)據(jù)的播出時(shí)間迫近而變得更急迫之后發(fā)出的。在諸如HTTP/TCP之類的常見傳輸協(xié)議的情形中,這些附加請求具有增加專用于對所議塊的接收有貢獻(xiàn)的數(shù)據(jù)的可用帶寬的份額的效應(yīng)。這減少了完成足以恢復(fù)該塊的數(shù)據(jù)的接收所需的時(shí)間,并因此減少該塊不能在包括該塊的媒體數(shù)據(jù)的調(diào)度播出時(shí)間之前被恢復(fù)的概率。如以上所描述的,若該塊不能在包括該塊的媒體數(shù)據(jù)的調(diào)度播出時(shí)間之前被恢復(fù),則播出會(huì)暫停,從而導(dǎo)致不良用戶體驗(yàn),因此這里描述的方法有利地減少了這種不良用戶體驗(yàn)的概率。應(yīng)理解,貫穿本說明書對塊的調(diào)度播出時(shí)間的引述是指包括該塊的經(jīng)編碼媒體數(shù)據(jù)最初可在客戶端處可用以達(dá)成該呈現(xiàn)的無暫停播出的時(shí)間。如對于媒體呈現(xiàn)系統(tǒng)領(lǐng)域的技術(shù)人員將清楚的,該時(shí)間實(shí)際上比包括該塊的媒體出現(xiàn)在用于播出的物理換能器(屏幕、揚(yáng)聲器等)處的實(shí)際時(shí)間稍早,因?yàn)榭赡苄枰獙Πㄔ搲K的媒體數(shù)據(jù)應(yīng)用若干變換功能以實(shí)現(xiàn)對該塊的實(shí)際播出并且這些功能可能要花一定量的時(shí)間來完成。例如,媒體數(shù)據(jù)一般是以壓縮形式傳輸?shù)牟⑶铱蓱?yīng)用解壓變換。用于生成支持協(xié)作式HTTP/FEC方法的文件結(jié)構(gòu)的方法現(xiàn)在描述用于生成可有利地被采用協(xié)作式HTTP/FEC方法的客戶端使用的文件結(jié)構(gòu)的實(shí)施例。在該實(shí)施例中,對于每個(gè)源段,存在如下生成的相應(yīng)修復(fù)段。參數(shù)R指示對于源段中的源數(shù)據(jù)而言平均生成多少FEC修復(fù)數(shù)據(jù)。例如,R = 0. 33指示若源段包含1,000 千字節(jié)的數(shù)據(jù),則相應(yīng)的修復(fù)段包含約330千字節(jié)的修復(fù)數(shù)據(jù)。參數(shù)S指示用于FEC編碼和解碼的以字節(jié)計(jì)的碼元大小。例如,S = 64指示源數(shù)據(jù)和修復(fù)數(shù)據(jù)包括各自用于FEC編碼和解碼目的的大小為64字節(jié)的碼元??扇缦聻樵炊紊尚迯?fù)段。源段的每個(gè)片斷被視為用于FEC編碼目的的源塊,且因此每個(gè)片斷被當(dāng)作據(jù)以生成修復(fù)碼元的源塊的源碼元序列。為頭i個(gè)片斷生成的修復(fù)碼元總數(shù)演算為TNRS(i) = ceiling(R*B(i)/S),其中ceilingOO是用于輸出值至少為χ的最小整數(shù)的函數(shù)。因此,為片斷i生成的修復(fù)碼元數(shù)目為NRS (i) = TNRS (i)-TNRS (i-1)。修復(fù)段包括關(guān)于這些片斷的修復(fù)碼元的級聯(lián),其中修復(fù)段內(nèi)的修復(fù)碼元的次序按據(jù)以生成這些修復(fù)碼元的片斷的次序,且在片斷內(nèi),修復(fù)碼元按其編碼碼元標(biāo)識(shí)符(ESI) 的次序。與源段結(jié)構(gòu)相對應(yīng)的修復(fù)段結(jié)構(gòu)在圖27中示出,包括修復(fù)段生成器2700。注意,通過如上所述地定義關(guān)于片斷的修復(fù)碼元數(shù)目,關(guān)于所有先前片斷的修復(fù)碼元總數(shù)以及因此修復(fù)段的字節(jié)索引僅取決于R、S、B(i-l)和B(i),而不取決于源段內(nèi)的片斷的任何先前或后續(xù)結(jié)構(gòu)。這是有利的,因?yàn)槠湓试S客戶端僅使用關(guān)于據(jù)以生成修復(fù)塊的源段的相應(yīng)片斷的結(jié)構(gòu)的局部信息來迅速計(jì)算修復(fù)段內(nèi)的修復(fù)塊開始的位置,并且還迅速計(jì)算該修復(fù)塊內(nèi)的修復(fù)碼元數(shù)目。因此,若客戶端決定從源段中間開始下載和播出片斷, 則它還能從相應(yīng)的修復(fù)段內(nèi)迅速生成和訪問相應(yīng)的修復(fù)塊。與片斷i相對應(yīng)的源塊中的源碼元數(shù)目演算為NSS(i)= ceiling((B(i)-B(i-l))/S)0若B(i)_B(i_l)不是S的倍數(shù),則最后的源碼元出于FEC編碼和解碼目的被填充“0”字節(jié),即,最后的源碼元被填充“0”字節(jié)從而其大小為S字節(jié)以用于FEC編碼和解碼目的,但這些“0”填充字節(jié)不被存儲(chǔ)為源段的一部分。在該實(shí)施例中,源碼元的ESI為0、1、…、NSS (i)-l,并且修復(fù)碼元的ESI為NSS⑴、…、NSS (i)+NRS (i)-1。在該實(shí)施例中,可通過簡單地向源段的URL添加后綴“.r印air”來從相應(yīng)的源段的URL生成修復(fù)段的URL。修復(fù)段的修復(fù)索引信息和FEC信息由相應(yīng)的源段的索引信息以及從R和S 的值隱式地定義,如本文中所描述的。時(shí)間偏移量和包括修復(fù)段的片斷結(jié)構(gòu)由相應(yīng)的源段的時(shí)間偏移量和結(jié)構(gòu)決定。至與片斷i相對應(yīng)的修復(fù)段中的修復(fù)碼元末尾的字節(jié)偏移量可被演算為RB(i) = S*Ceiling(R*B(i)/S)。與片斷i相對應(yīng)的修復(fù)段中的字節(jié)數(shù)目則為RB(i)-RB(i-l),且因此與片斷i相對應(yīng)的修復(fù)碼元數(shù)目被演算為NRS⑴=(RB⑴-RB(i-1))/S。與片斷i相對應(yīng)的源碼元數(shù)目可演算為NSS(i)= ceiling((B(i)-B(i-1))/S)。因此,在該實(shí)施例中,修復(fù)段內(nèi)的修復(fù)塊的修復(fù)索引信息和相應(yīng)的FEC信息可從R、S以及相應(yīng)源段的相應(yīng)片斷的索引信息隱式地推導(dǎo)出。作為示例,考慮圖觀中所示的示例,其示出始于字節(jié)偏移量B(I) =6,410并止于字節(jié)偏移量B (2) = 6,770的片斷2。在該示例中,碼元大小為S = 64字節(jié),且虛豎線示出源段內(nèi)與S的倍數(shù)相對應(yīng)的字節(jié)偏移量。作為源段大小的分?jǐn)?shù)的總修復(fù)段大小在該示例中被設(shè)為R = 0. 5。片斷2的源塊中的源碼元數(shù)目演算為NSS (2) =ceiling( (6,770-6,410) /64) =ceil (5. 625) = 6,且這6個(gè)源碼元分別具有ESI 0、···、5,其中第一個(gè)源碼元為片斷2的始于該源段內(nèi)的字節(jié)索引6,410處的頭64個(gè)字節(jié),第二個(gè)源碼元為片斷2的始于源段內(nèi)的字節(jié)索引6,474處的接下來64個(gè)字節(jié),等等。與片斷2相對應(yīng)的修復(fù)塊的末尾字節(jié)偏移量演算為 RB(2) = 64*ceiling(0. 5*6,770/64) = 64*ceiling(52. 89…)=64*53 = 3,392, 且與片斷2相對應(yīng)的修復(fù)塊的開始字節(jié)偏移量演算為RB(I) =64*ceiling(0. 5*6,410/64) =64*ceiling(50. 07…)=64*51 = 3,沈4,因此在該示例中,在與片斷2相對應(yīng)的修復(fù)塊中具有ESI分別為6和7的兩個(gè)修復(fù)碼元,始于修復(fù)段內(nèi)字節(jié)偏移量3,264處并止于字節(jié)偏移量3,392。注意,在圖28中所示的示例中,盡管R = 0. 5且存在與片斷2相對應(yīng)的6個(gè)源碼元,修復(fù)碼元的數(shù)目也不是如簡單地使用源碼元數(shù)目來演算修復(fù)碼元數(shù)目的情況下可預(yù)期的3個(gè),而是根據(jù)本文中所描述的方法解出其為2。與簡單地使用片斷的源碼元數(shù)目來確定修復(fù)碼元數(shù)目不同,以上描述的實(shí)施例使得能夠單單從與相應(yīng)源段的相應(yīng)源塊相關(guān)聯(lián)的索引信息來演算修復(fù)段內(nèi)的修復(fù)塊的定位。此外,隨著源塊中源碼元數(shù)目K增長,相應(yīng)修復(fù)塊的修復(fù)碼元數(shù)目KR緊密近似為K*R,因?yàn)橐话愣訩R至多為ceil (K*R)且KR至少為 floor ((K-I) *R),其中floor (χ)是最多為χ的最大整數(shù)。存在以上用于生成可有利地被采用協(xié)作式HTTP/FEC方法的客戶端使用的文件結(jié)構(gòu)的實(shí)施例的許多變形,如本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到的。作為替換實(shí)施例的示例,表示的原始段可被劃分成N > 1個(gè)并行段,其中對于i = 1,…,N,原始段的指定分?jǐn)?shù)Fi被包含在第 i個(gè)并行段中,且其中i = 1,…,N的&之和等于1。在該實(shí)施例中,可存在被用于推導(dǎo)所有并行段的段映射的一個(gè)主段映射,類似于在以上描述的實(shí)施例中如何從源段映射推導(dǎo)出修復(fù)段映射。例如,若并非所有源媒體數(shù)據(jù)都被劃分成并行段而是改為被包含在一個(gè)原始段中,則主段映射可指示片斷結(jié)構(gòu),并且隨后第i個(gè)并行段的段映射可如下從主段映射推導(dǎo)出演算若原始段的片斷的第一前綴中的媒體數(shù)據(jù)量為L字節(jié),則頭i個(gè)并行段中該前綴聚集的字節(jié)總數(shù)為Ceil(L*Gi),其中Gi為!^在j = 1,…,i上的和。作為替換實(shí)施例的另一示例,段可包括每個(gè)段的原始源媒體數(shù)據(jù)其后緊隨著該片斷的修復(fù)數(shù)據(jù)的組合,從而得到包含源媒體數(shù)據(jù)與使用FEC碼從該源媒體數(shù)據(jù)生成的修復(fù)數(shù)據(jù)的混合的段。作為替換實(shí)施例的另一示例,包含源媒體數(shù)據(jù)和修復(fù)數(shù)據(jù)的混合的段可被劃分成多個(gè)包含源媒體數(shù)據(jù)和修復(fù)數(shù)據(jù)的混合的并行段。本領(lǐng)域普通技術(shù)人員在閱讀本公開之后可以預(yù)見其他實(shí)施例。在其他實(shí)施例中, 可有利地作出以上所公開的發(fā)明的組合或子組合。組件的示例安排是出于解說目的示出的,應(yīng)理解,在本發(fā)明的替換實(shí)施例中構(gòu)想了組合、添加、重新安排、及類似方案。因此,盡管本發(fā)明是參照示例性實(shí)施例描述的,但是本領(lǐng)域技術(shù)人員將意識(shí)到許多修改是可能的。例如,本文中描述的過程可使用硬件組件、軟件組件和/或其任何組合來實(shí)現(xiàn)。在這些情形中,軟件組件可在有形的非瞬態(tài)介質(zhì)上提供以在設(shè)有該介質(zhì)或與該介質(zhì)分開的硬件上執(zhí)行。因此,本說明書和附圖被認(rèn)為是解說性的而非限制性的。然而,顯然可對其作出各種修改和變更而不會(huì)脫離所附權(quán)利要求中所闡述的本發(fā)明的更寬泛的精神和范圍,且本發(fā)明旨在涵蓋落在所附權(quán)利要求的范圍內(nèi)的所有修改和等效技術(shù)方案。
權(quán)利要求
1.一種在其中客戶端設(shè)備向媒體攝取系統(tǒng)請求媒體文件的通信系統(tǒng)中的方法,包括 在所述媒體攝取系統(tǒng)處構(gòu)造與媒體塊中的數(shù)據(jù)相對應(yīng)的前向糾錯(cuò)(FEC)塊;以及使用所述媒體攝取系統(tǒng)來命名多個(gè)文件,以使得包含媒體塊的媒體文件和包含F(xiàn)EC塊的FEC文件根據(jù)能在客戶端設(shè)備處可推導(dǎo)出的可推導(dǎo)模式來命名,藉此允許客戶端設(shè)備基于所述客戶端設(shè)備需要的媒體塊來推導(dǎo)相應(yīng)FEC文件的名稱以作出對這些FEC文件的請求。
2.一種適配成經(jīng)由響應(yīng)于文件請求的文件服務(wù)器從媒體攝取系統(tǒng)接收媒體塊的客戶端設(shè)備,所述客戶端設(shè)備包括處理器以及非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)中的程序代碼,包括用于確定合意呈現(xiàn)需要哪些媒體塊的程序代碼; 用于請求所述合意呈現(xiàn)所需要的媒體塊的程序代碼;用于確定哪些前向糾錯(cuò)(FEC)塊能用于填補(bǔ)所需要的媒體塊中的缺失數(shù)據(jù)的程序代碼;用于基于所述缺失數(shù)據(jù)或所述所需要的媒體塊來確定包含能使用的FEC塊的FEC文件的文件名的程序代碼;以及用于請求所確定的FEC文件的程序代碼。
全文摘要
一種塊請求流送系統(tǒng)典型地使用攝取系統(tǒng)來提供此類系統(tǒng)的用戶體驗(yàn)和帶寬效率的改善,該攝取系統(tǒng)生成將由常規(guī)文件服務(wù)器(例如,HTTP、FTP或類似服務(wù)器)供應(yīng)的形式的數(shù)據(jù),其中攝取系統(tǒng)攝入內(nèi)容并將其制備為要由文件服務(wù)器來供應(yīng)的文件或數(shù)據(jù)元素,該文件服務(wù)器可以包括也可以不包括高速緩存。客戶端設(shè)備可適配成利用攝取過程并且包括促成獨(dú)立于該攝取過程的更好呈現(xiàn)的改進(jìn)。在塊請求流送系統(tǒng)中,攝取系統(tǒng)根據(jù)擦除碼生成數(shù)據(jù),并且客戶端設(shè)備通過對媒體數(shù)據(jù)和冗余數(shù)據(jù)的請求的各種選擇和時(shí)基控制能高效地解碼媒體以供呈現(xiàn)。
文檔編號H04N21/442GK102549999SQ201080042984
公開日2012年7月4日 申請日期2010年9月22日 優(yōu)先權(quán)日2009年9月22日
發(fā)明者B·王, L·威茨薩諾, M·G·路比, M·沃森, P·帕克扎得 申請人:高通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1