国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      通過(guò)非流化協(xié)議流化多媒體數(shù)據(jù)的方法

      文檔序號(hào):7890381閱讀:141來(lái)源:國(guó)知局
      專利名稱:通過(guò)非流化協(xié)議流化多媒體數(shù)據(jù)的方法
      技術(shù)領(lǐng)域
      本發(fā)明的實(shí)施例涉及數(shù)據(jù)傳輸技術(shù)。更特別地,本發(fā)明的實(shí)施例涉及允許利用非流化協(xié)議,諸如,例如超文本傳輸協(xié)議(HTTP),對(duì)數(shù)據(jù)進(jìn)行流化的技術(shù)。
      背景技術(shù)
      內(nèi)容的流化通常指恒定地從服務(wù)器設(shè)備發(fā)送并由客戶端設(shè)備接收的多媒體內(nèi)容。 該內(nèi)容通常在其正在被流化服務(wù)器傳送的同時(shí)被呈現(xiàn)給終端用戶。這個(gè)名稱指媒體的傳送方法,而不是媒體本身。當(dāng)前的流化服務(wù)通常需要專用服務(wù)器來(lái)向終端用戶分發(fā)“實(shí)況”內(nèi)容。在任何大規(guī)模部署中,這都會(huì)導(dǎo)致高成本,并且需要專業(yè)技能來(lái)設(shè)置和運(yùn)行。這導(dǎo)致比期望的可用于流化的內(nèi)容庫(kù)少的內(nèi)容庫(kù)。

      發(fā)明內(nèi)容
      在一個(gè)實(shí)施例中,服務(wù)器設(shè)備存儲(chǔ)至少一部分要被流化的內(nèi)容。該內(nèi)容一般是基于時(shí)間的圖象或音頻(例如,聲音或音樂)流或者二者兼有基于時(shí)間的流的一個(gè)例子是電影,其中圖象的次序和呈現(xiàn)是基于時(shí)間的,并且因此可以看作是基于時(shí)間的流。服務(wù)器包括分段器代理和索引器代理,所述分段器代理將要被流化的內(nèi)容分解成要按照網(wǎng)絡(luò)協(xié)議通過(guò)分組來(lái)發(fā)送的片段,所述索引器代理生成一個(gè)或多個(gè)可以方便客戶端呈現(xiàn)分段的用戶數(shù)據(jù)的播放列表文件的。客戶端設(shè)備經(jīng)網(wǎng)絡(luò)與服務(wù)器設(shè)備(或者存儲(chǔ)片段和播放列表并發(fā)送它們但不生成它們的另一個(gè)服務(wù)器)耦合??蛻舳嗽O(shè)備具有組裝器代理,所述組裝器代理接收所述一個(gè)或多個(gè)播放列表文件并方便根據(jù)該一個(gè)或多個(gè)播放列表文件將分段的媒體文件恢復(fù)成內(nèi)容??蛻舳嗽O(shè)備還可以具有經(jīng)該客戶端設(shè)備的一個(gè)或多個(gè)輸出部件而輸出內(nèi)容的輸出生成器代理。在一個(gè)實(shí)施例中,服務(wù)器設(shè)備獲得要發(fā)送到客戶端設(shè)備的數(shù)據(jù)。服務(wù)器設(shè)備利用分段器代理將要發(fā)送的數(shù)據(jù)分成多個(gè)媒體文件。該服務(wù)器設(shè)備還將所述多個(gè)片段作為多個(gè)單個(gè)媒體文件存儲(chǔ)在存儲(chǔ)器中。服務(wù)器設(shè)備還生成具有對(duì)所述多個(gè)媒體文件的引用的一個(gè)或多個(gè)播放列表文件。響應(yīng)來(lái)自客戶端設(shè)備的對(duì)數(shù)據(jù)的請(qǐng)求,該服務(wù)器設(shè)備(或者另一個(gè)服務(wù)器設(shè)備)經(jīng)網(wǎng)絡(luò)向客戶端設(shè)備發(fā)送所述一個(gè)或多個(gè)播放列表文件和所述多個(gè)媒體文件的至少一個(gè)子集。多個(gè)媒體文件可以響應(yīng)來(lái)自客戶端設(shè)備的請(qǐng)求而利用非流化傳輸協(xié)議發(fā)送;所述協(xié)議可以是例如HTTP。在一個(gè)實(shí)施例中,客戶端設(shè)備可以接收并存儲(chǔ)所述一個(gè)或多個(gè)播放列表文件。然后,客戶端可以請(qǐng)求在播放列表文件(一個(gè)或多個(gè))中所識(shí)別的分段媒體文件并下載鏈接的媒體文件。然后,該客戶端設(shè)備(或者另一個(gè)客戶端設(shè)備)可以生成代表該內(nèi)容流的音頻和/或視頻輸出。在一個(gè)實(shí)施例中,更新的播放列表可以由服務(wù)器動(dòng)態(tài)生成,然后由客戶端檢索。更新的播放列表除包括原始播放列表中的節(jié)目之外,還可以包括所顯示的輔助材料(例如, 小工具條(sidebar)用戶界面中的廣告、相關(guān)內(nèi)容、可選版本,等等),或者更新的播放列表可以包括節(jié)目的附加部分(例如,除在原始播放列表中識(shí)別的第一半之外的節(jié)目的后一半)。在一種實(shí)現(xiàn)中,服務(wù)器可以使用在此所述的滾動(dòng)方法,來(lái)更新隨后作為更新播放列表由客戶端檢索的播放列表。在一個(gè)實(shí)施例中,播放列表可以指定代表相同內(nèi)容的多個(gè)可選的流;這些可選的流可以是以不同的視覺分辨率發(fā)送(并由此以不同的位速率發(fā)送)或者具有其它不同屬性的同一節(jié)目。服務(wù)器可以生成多個(gè)播放列表,每個(gè)可選的流一個(gè)播放列表,而且可以生成指出或者以別的方式指定可選流的變體播放列表。然后,該服務(wù)器(或者另一個(gè)服務(wù)器) 可以將該變體播放列表發(fā)送到客戶端設(shè)備,而且客戶端設(shè)備可以根據(jù)當(dāng)前的網(wǎng)絡(luò)條件(例如,用于傳輸媒體文件的網(wǎng)絡(luò)的當(dāng)前吞吐率)決定從變體播放列表中選擇哪個(gè)播放列表, 而且客戶端設(shè)備可以下載所選的播放列表(并進(jìn)一步下載由該所選播放列表指定的媒體文件)。在一個(gè)實(shí)施例中,客戶端設(shè)備可以在接收并呈現(xiàn)內(nèi)容的同時(shí)從變體播放列表中的第一播放列表切換到該變體播放列表中的第二播放列表。例如,客戶端設(shè)備可以利用第一播放列表和第一位速率接收節(jié)目,并且可以通過(guò)對(duì)網(wǎng)絡(luò)吞吐率的測(cè)量確定它可以以更高的第二位速率接收同一節(jié)目的內(nèi)容,其中該內(nèi)容是由第二播放列表指定的。在這種情況下,客戶端設(shè)備可以在繼續(xù)呈現(xiàn)由第一播放列表指定的內(nèi)容的同時(shí)請(qǐng)求第二播放列表,接收該第二播放列表并開始檢索在該第二播放列表中指定的媒體文件??蛻舳嗽O(shè)備可以在緩沖器中存儲(chǔ)這兩個(gè)播放列表的媒體文件和所得到的解壓內(nèi)容,而且客戶端設(shè)備可以執(zhí)行確定何時(shí)和如何在內(nèi)容的兩個(gè)版本之間切換或過(guò)渡的自動(dòng)操作。例如,客戶端設(shè)備可以利用內(nèi)容的兩個(gè)版本中音頻內(nèi)容的模式匹配來(lái)找出兩個(gè)版本中的匹配點(diǎn),然后在識(shí)別出來(lái)自第二播放列表的新內(nèi)容中的過(guò)渡之后進(jìn)行切換。在一個(gè)實(shí)施例中,一種方法包括利用可選的流提供用于向客戶端設(shè)備提供媒體內(nèi)容的多個(gè)冗余位置。為了實(shí)現(xiàn)故障轉(zhuǎn)移保護(hù),第一服務(wù)器設(shè)備或者第一內(nèi)容分發(fā)服務(wù)產(chǎn)生流或者多個(gè)可選的帶寬流并生成播放列表文件(一個(gè)或多個(gè))。第二服務(wù)器設(shè)備或者第二內(nèi)容分發(fā)服務(wù)產(chǎn)生并行流或者流的集合??蛻舳藝L試?yán)门c第一服務(wù)器設(shè)備或者第一內(nèi)容分發(fā)服務(wù)關(guān)聯(lián)的第一流從第一統(tǒng)一資源定位符(URL)下載播放列表(一個(gè)或多個(gè))。如果客戶端不能夠從第一 URL下載播放列表(一個(gè)或多個(gè)),則客戶端嘗試切換到與另一個(gè)URL 關(guān)聯(lián)的可選流。在一個(gè)實(shí)施例中,一種方法包括提供對(duì)播放列表的請(qǐng)求并在請(qǐng)求中指定播放列表可以被壓縮,并且,如果服務(wù)器可以提供壓縮形式的播放列表的話,就響應(yīng)該請(qǐng)求而接收壓縮形式的播放列表(否則,播放列表可以由服務(wù)器以非壓縮格式提供)。播放列表可以利用由現(xiàn)有HTTP標(biāo)準(zhǔn)壓縮技術(shù)所支持的壓縮技術(shù)或格式,例如deflate或gzip,來(lái)壓縮(也稱為編碼)。壓縮格式的播放列表的發(fā)送和接收可以顯著減少所發(fā)送和接收的數(shù)據(jù)大小,尤其是當(dāng)播放列表隨著時(shí)間而增長(zhǎng)時(shí)(例如,播放列表是用于長(zhǎng)時(shí)間的棒球比賽)。在一個(gè)實(shí)施例中,對(duì)播放列表使用壓縮對(duì)于客戶端(請(qǐng)求播放列表的系統(tǒng))和服務(wù)器(通過(guò)發(fā)送播放列表來(lái)響應(yīng)請(qǐng)求的系統(tǒng))可以都是可選的。作為HTTP標(biāo)準(zhǔn)一部分的壓縮技術(shù)或格式的使用允許任何兼容的網(wǎng)絡(luò)服務(wù)器都能夠支持壓縮的播放列表,而且任何兼容的客戶端也都將能夠解壓和使用該播放列表。


      在附圖中,本發(fā)明是通過(guò)例子但不是作為限制來(lái)說(shuō)明的,其中附圖中相似的標(biāo)號(hào)指類似的元件。圖I是可以發(fā)送和接收實(shí)時(shí)或者接近實(shí)時(shí)的內(nèi)容的服務(wù)器和客戶端的一種實(shí)施方式的框圖。圖2A是讓一個(gè)或多個(gè)服務(wù)器設(shè)備利用非流化協(xié)議支持媒體內(nèi)容的技術(shù)的一種實(shí)施方式的流程圖。圖2B是讓一個(gè)或多個(gè)服務(wù)器設(shè)備向一個(gè)或多個(gè)客戶端設(shè)備提供動(dòng)態(tài)更新的播放列表的技術(shù)的一種實(shí)施方式的流程圖。圖2C是讓一個(gè)或多個(gè)服務(wù)器設(shè)備利用多個(gè)位速率向客戶端設(shè)備提供媒體內(nèi)容的技術(shù)的一種實(shí)施方式的流程圖。圖3A是讓客戶端設(shè)備利用非流化協(xié)議支持內(nèi)容的流化的技術(shù)的一種實(shí)施方式的流程圖。圖3B是讓客戶端設(shè)備利用多個(gè)位速率支持內(nèi)容的流化的技術(shù)的一種實(shí)施方式的流程圖。圖4是服務(wù)器流代理的一種實(shí)施方式的框圖。圖5是客戶端流代理的一種實(shí)施方式的框圖。
      圖6說(shuō)明了具有多個(gè)標(biāo)簽的播放列表文件的一種實(shí)施方式。圖7是在此所述的用于組裝流的重放技術(shù)的一種實(shí)施方式的流程圖。圖8是電子系統(tǒng)的一種實(shí)施方式的流程圖。圖9A是顯示客戶端設(shè)備如何可以在變體播放列表中的可選內(nèi)容之間切換的例子的流程圖。圖9B是顯示客戶端設(shè)備如何可以在兩個(gè)播放列表的內(nèi)容之間切換的另一個(gè)流程圖。圖9C是顯示客戶端設(shè)備如何可以利用音頻模式匹配在內(nèi)容之間切換的例子的另一個(gè)流程圖。圖9D以圖解形式示出了圖9C的方法是如何利用音頻模式匹配來(lái)實(shí)現(xiàn)的。圖10是用于提供多個(gè)冗余位置的技術(shù)的一種實(shí)施方式的流程圖,其中多個(gè)冗余位置用于利用可選的流向客戶端設(shè)備提供媒體內(nèi)容。圖11說(shuō)明了根據(jù)一種實(shí)施方式的一種網(wǎng)絡(luò),其中客戶端1102與一個(gè)或多個(gè)URL 雙向通信。
      具體實(shí)施例方式在以下描述中,闡述了各種特定細(xì)節(jié)。但是,本發(fā)明的實(shí)施例可以沒有這些特定細(xì)節(jié)來(lái)實(shí)踐。在其它情況下,為了不模糊對(duì)本發(fā)明描述的理解,眾所周知的電路、結(jié)構(gòu)和技術(shù)沒有被具體示出。本描述包括受版權(quán)保護(hù)的材料,諸如圖形用戶界面圖象的說(shuō)明。版權(quán)的所有者,包括本發(fā)明的受讓人,由此來(lái)保護(hù)他們?cè)谶@些材料中的權(quán)利,包括版權(quán)。就象在專利和商標(biāo)局文件或檔案中出現(xiàn)的那樣,版權(quán)所有者不反對(duì)由該專利文檔或該專利公開內(nèi)容中任何一個(gè)的精確復(fù)制,但是無(wú)論如何也要保護(hù)所有版權(quán)。版權(quán)Apple公司2009。在一個(gè)實(shí)施例中,在此所述的技術(shù)和部件可以包括用于利用非流化協(xié)議(例如, HTTP)和其它技術(shù)(例如,運(yùn)動(dòng)圖片專家組(MPEG)流)傳送流化體驗(yàn)的機(jī)制。例如,接近實(shí)時(shí)的流化體驗(yàn)可以利用HTTP來(lái)提供,以便廣播“實(shí)況”音樂或體育賽事、實(shí)況新聞、網(wǎng)絡(luò)照相機(jī)反饋等等。在一個(gè)實(shí)施例中,一種協(xié)議可以將進(jìn)入的媒體數(shù)據(jù)分成多個(gè)媒體文件并將那些分段的媒體文件存儲(chǔ)在服務(wù)器上。該協(xié)議還可以構(gòu)建包括統(tǒng)一資源標(biāo)識(shí)符(URI)的播放列表文件,該URI將客戶端指引到存儲(chǔ)在服務(wù)器上的分段媒體文件。當(dāng)分段的媒體文件根據(jù)播放列表文件(一個(gè)或多個(gè))被重放時(shí),客戶端可以為用戶提供“實(shí)況”事件的接近實(shí)時(shí)的廣播。預(yù)先記錄的內(nèi)容可以以類似的方式提供。在一個(gè)實(shí)施例中,服務(wù)器可以動(dòng)態(tài)地將輔助的或者可選的媒體內(nèi)容(例如,廣告、 關(guān)于體育賽事的統(tǒng)計(jì)數(shù)據(jù)、到主要呈現(xiàn)的附加媒體內(nèi)容)引入到廣播事件。例如,在客戶端重放媒體事件時(shí),服務(wù)器可以向播放列表文件添加附加的URI,該URI可以識(shí)別客戶端可以從其下載輔助媒體文件的位置??梢灾甘究蛻舳酥芷谛缘貜姆?wù)器檢索一個(gè)或多個(gè)更新的播放列表文件(一個(gè)或多個(gè)),以便訪問(wèn)該服務(wù)器已經(jīng)引入的任何輔助或附加(或者兩者兼有)的媒體內(nèi)容。在一種實(shí)施例中,服務(wù)器可以累積模式或者滾動(dòng)模式運(yùn)行。在累積模式,服務(wù)器可以創(chuàng)建播放列表文件并將媒體文件標(biāo)識(shí)符附加到該播放列表文件的末端。然后,當(dāng)下載時(shí),客戶端根據(jù)單個(gè)播放列表文件訪問(wèn)流的所有部分(例如,用戶可以在演出的中間開始)。在滾動(dòng)模式,服務(wù)器可以通過(guò)根據(jù)滾動(dòng)從播放列表文件的開始去除媒體文件標(biāo)識(shí)符來(lái)限制媒體文件的可用性,由此提供客戶端設(shè)備可訪問(wèn)的媒體內(nèi)容的滑動(dòng)窗口。在滾動(dòng)模式,服務(wù)器也可以向播放列表末端添加媒體文件標(biāo)識(shí)符而且服務(wù)器可以將媒體文件的可用性限制到那些最近被添加到播放列表的媒體文件。然后,客戶端重復(fù)地下載播放列表文件的更新拷貝,來(lái)繼續(xù)觀看。當(dāng)內(nèi)容的時(shí)間潛在地不受限制的時(shí)候(例如,來(lái)自持續(xù)運(yùn)行的網(wǎng)絡(luò)照相機(jī)的內(nèi)容),用于播放列表下載的滾動(dòng)基礎(chǔ)可以是有用的。在滾動(dòng)模式,客戶可以持續(xù)重復(fù)地請(qǐng)求播放列表,直到找到播放列表中的結(jié)束標(biāo)簽。在一種實(shí)施例中,通過(guò)提供同一呈現(xiàn)的變體流,該機(jī)制支持位速率切換。例如,要提供的呈現(xiàn)的幾個(gè)版本可以存儲(chǔ)在服務(wù)器上。每個(gè)版本都可以具有基本上相同但是以不同的位速率編碼的內(nèi)容。這可以允許客戶端設(shè)備依賴于例如可用帶寬的檢測(cè)而在位速率之間切換,而不危及重放的持續(xù)性。在一種實(shí)施例中,可以提供用于保護(hù)內(nèi)容不被未授權(quán)使用的保護(hù)特征。例如,非連續(xù)的媒體文件編號(hào)可以用于防止預(yù)測(cè)??梢允褂妹襟w文件的加密??梢允褂貌糠置襟w文件列表。附加的和/或不同的保護(hù)特征也可以被提供。圖I是可以發(fā)送和接收實(shí)時(shí)或者接近實(shí)時(shí)的內(nèi)容的服務(wù)器和客戶端的一種實(shí)施方式的框圖。圖I的例子提供了簡(jiǎn)單的服務(wù)器-客戶端連接,兩個(gè)客戶端經(jīng)網(wǎng)絡(luò)與服務(wù)器耦合。利用在此所述的技術(shù)和機(jī)制,可以支持任何數(shù)量的客戶端。此外,根據(jù)在此所述的技術(shù)和機(jī)制,多個(gè)服務(wù)器可以提供內(nèi)容和/或可以一起操作來(lái)提供內(nèi)容。例如,一個(gè)服務(wù)器可以創(chuàng)建內(nèi)容、創(chuàng)建播放列表并創(chuàng)建多個(gè)媒體(例如,文件),而其它服務(wù)器存儲(chǔ)并發(fā)送所創(chuàng)建的內(nèi)容。網(wǎng)絡(luò)110可以是任何類型的網(wǎng)絡(luò),有線的、無(wú)線的(例如,IEEE802. 11,802. 16)或者其任意組合。例如,網(wǎng)絡(luò)110可以是互聯(lián)網(wǎng)或者內(nèi)聯(lián)網(wǎng)。作為另一個(gè)例子,網(wǎng)絡(luò)110可以是蜂窩網(wǎng)絡(luò)(例如,3G、CDMA)。在一種實(shí)施例中,客戶端設(shè)備150和180可能能夠經(jīng)多種網(wǎng)絡(luò)類型通信(例如,每個(gè)設(shè)備都可以經(jīng)由WiFi無(wú)線LAN而且還可以經(jīng)由無(wú)線蜂窩電話網(wǎng)絡(luò)進(jìn)行通信)。例如,客戶端設(shè)備150和180可以是可以經(jīng)由蜂窩無(wú)線電話網(wǎng)絡(luò)及數(shù)據(jù)網(wǎng)絡(luò)進(jìn)行通信的智能電話或者蜂窩使能的個(gè)人數(shù)字助理。這些設(shè)備可能能夠經(jīng)任何一種類型的網(wǎng)絡(luò)利用在此所述的流化機(jī)制或者甚至根據(jù)需要在網(wǎng)絡(luò)之間切換。服務(wù)器120可以以本領(lǐng)域中任何已知的方式作為HTTP服務(wù)器運(yùn)行。即,服務(wù)器120 包括利用HTTP協(xié)議提供內(nèi)容的HTTP服務(wù)器代理145。盡管圖I的例子是關(guān)于HTTP描述的,但也可以類似的方式使用其它協(xié)議。分段器130和索引器135是駐留在服務(wù)器120 (或者多個(gè)服務(wù)器)上、利用在此所述的播放列表文件提供媒體文件中的內(nèi)容的代理。這些媒體文件和播放列表文件可以利用HTTP協(xié)議經(jīng)HTTP服務(wù)器代理145 (或者經(jīng)其它服務(wù)器) 在網(wǎng)絡(luò)110上提供。如在此所討論的,代理可以被實(shí)現(xiàn)為硬件、軟件、固件或者其組合。分段器130可以用來(lái)將媒體數(shù)據(jù)的流分成可以經(jīng)HTTP協(xié)議發(fā)送的多個(gè)媒體文件。 索引器135可以用來(lái)創(chuàng)建對(duì)應(yīng)于分段的媒體文件的播放列表文件,以使得客戶端設(shè)備可以重新組裝媒體文件來(lái)提供由服務(wù)器120提供的內(nèi)容的實(shí)時(shí)或接近實(shí)時(shí)的傳輸。響應(yīng)來(lái)自客戶端設(shè)備的一個(gè)或多個(gè)請(qǐng)求,HTTP服務(wù)器代理145(或者其它服務(wù)器)可以發(fā)送由索引器 135生成的一個(gè)或多個(gè)播放列表文件和由分段器130生成的內(nèi)容的媒體文件。服務(wù)器120還可以包括可選的用于提供在此所討論的安全功能(例如,加密)中的一個(gè)或多個(gè)的安全代理140。服務(wù)器120還可以包括未在圖I中說(shuō)明的附加部件??蛻舳嗽O(shè)備150和180可以經(jīng)網(wǎng)絡(luò)110從服務(wù)器120接收播放列表文件和媒體文件??蛻舳嗽O(shè)備可以是能夠接收在網(wǎng)絡(luò)上發(fā)送的數(shù)據(jù)并利用經(jīng)網(wǎng)絡(luò)接收的數(shù)據(jù)來(lái)生成輸出的任何類型的電子設(shè)備,例如無(wú)線移動(dòng)設(shè)備、PDA、娛樂設(shè)備、消費(fèi)電子設(shè)備,等等。輸出可以是任何媒體類型或者媒體類型的組合,包括例如音頻、視頻或者其任意組合??蛻舳嗽O(shè)備150可以包括組裝器代理160和輸出生成器代理165。類似地,客戶端設(shè)備180可以包括組裝器代理190和輸出生成器代理195。組裝器代理160和190從服務(wù)器120接收播放列表文件并使用該播放列表文件來(lái)從服務(wù)器120訪問(wèn)和下載媒體文件。 輸出生成器代理165和195使用下載的媒體文件分別從客戶端設(shè)備150和160生成輸出。 輸出可以由一個(gè)或多個(gè)揚(yáng)聲器、一個(gè)或多個(gè)顯不器屏幕、揚(yáng)聲器和顯不器屏幕的組合或者任何其它輸入或輸出設(shè)備來(lái)提供。客戶端設(shè)備還可以包括存儲(chǔ)器(例如,閃存存儲(chǔ)器或者 DRAM,等等),其在接收到媒體文件的時(shí)候充當(dāng)存儲(chǔ)該媒體文件(例如,壓縮的媒體文件或解壓的媒體文件)的緩沖器;緩沖器還可以提供超出當(dāng)前所呈現(xiàn)內(nèi)容的時(shí)間許多秒的可呈現(xiàn)內(nèi)容,以使得緩沖的內(nèi)容可以隨后在下載新內(nèi)容的同時(shí)被顯示。這種緩沖可以在客戶端設(shè)備正嘗試通過(guò)斷斷續(xù)續(xù)的慢速網(wǎng)絡(luò)連接來(lái)檢索內(nèi)容的同時(shí)提供可呈現(xiàn)的內(nèi)容,由此該緩沖可以隱藏網(wǎng)絡(luò)等待時(shí)間或者連接問(wèn)題??蛻舳嗽O(shè)備150和180還可以包括可選的安全代理170和185,其分別提供在此所討論的安全功能中的一個(gè)或多個(gè)??蛻舳嗽O(shè)備150和180還可以包括未在圖I中說(shuō)明的附加部件。在一種實(shí)施例中,本申請(qǐng)中所述的技術(shù)可以用于經(jīng)非流化協(xié)議(例如,HTTP)發(fā)送無(wú)限制的多媒體數(shù)據(jù)流。各實(shí)施例還可以包括媒體數(shù)據(jù)的加密和/或流的可選版本的提供 (例如,提供交替的位速率)。因?yàn)槊襟w數(shù)據(jù)可以在創(chuàng)建之后很快被發(fā)送,所以數(shù)據(jù)可以接近實(shí)時(shí)地被接收。提供了用于文件及要由多媒體數(shù)據(jù)流的服務(wù)器(發(fā)送者)和客戶端(接收者)所采取的動(dòng)作的示例數(shù)據(jù)格式;但是,也可以支持其它格式??梢宰鳛槟M的實(shí)時(shí)流(或者接近實(shí)時(shí)的流)發(fā)送的媒體呈現(xiàn)是由指示播放列表文件的統(tǒng)一資源指示符(URI)指定的。在一種實(shí)施例中,播放列表文件是附加URI的有序列表。播放列表文件中的每個(gè)URI指作為流的一個(gè)片段的媒體文件,其中流可以是用于特定節(jié)目的媒體數(shù)據(jù)的單個(gè)連續(xù)流。為了播放媒體數(shù)據(jù)的流,客戶端設(shè)備從服務(wù)器獲得播放列表文件??蛻舳诉€獲得并播放由播放列表文件指示的每個(gè)媒體數(shù)據(jù)文件。在一種實(shí)施例中,客戶端可以動(dòng)態(tài)或者重復(fù)地重新加載播放列表文件,來(lái)發(fā)現(xiàn)附加的和/或不同的媒體片段。播放列表文件可以是例如擴(kuò)展M3U播放列表文件。在一種實(shí)施例中,可以使用有效地?cái)U(kuò)展M3U格式的附加標(biāo)簽。M3U指運(yùn)動(dòng)圖片專家組音頻層3統(tǒng)一資源定位符(MP3URL) 而且是一種用于存儲(chǔ)多媒體播放列表的格式。M3U文件是包含讓媒體播放器播放的一個(gè)或多個(gè)媒體文件的位置的文本文件。在一種實(shí)施例中,播放列表文件是包括多個(gè)單行的擴(kuò)展M3U格式文本文件。這些行可以由單個(gè)LF字符或者由CR字符后面跟著LF字符來(lái)終止。每一行都可以是URI、空行或者以注釋字符(例如,“#”)開始。URI識(shí)別要播放的媒體文件??招锌梢员缓雎浴?br> 以注釋字符開始的行可以是注釋或者是標(biāo)簽。標(biāo)簽可以以#EXT開始,而注釋行可以以#開始。注釋行通常被服務(wù)器和客戶端忽略。在一種實(shí)施例中,播放列表文件是以 UTF-8格式編碼的。UTF-8 (8位Unicode變換格式)是一種可變長(zhǎng)度的字符編碼格式。在可選實(shí)施例中,可以使用其它字符編碼格式。在以下的例子中,使用包括兩個(gè)標(biāo)簽EXTM3U和EXTINF的擴(kuò)展M3U格式。擴(kuò)展M3U 文件可以通過(guò)包括“#EXTM3U”的第一行而與基本M3U文件區(qū)分開。EXTINF是描述由跟在該標(biāo)簽之后的URI識(shí)別的媒體文件的記錄標(biāo)記。在一種實(shí)施例中,每個(gè)媒體文件URI前面都有EXTINF標(biāo)簽,例如#EXTINF <持續(xù)時(shí)間 >、< 標(biāo)題 > 其中,“持續(xù)時(shí)間”指示媒體文件的持續(xù)時(shí)間,而 “標(biāo)題”是目標(biāo)媒體文件的標(biāo)題。在一種實(shí)施例中,以下標(biāo)簽可以用于管理媒體文件的傳輸和重放EXT-X-TARGETDURATIONEXT-X-MEDIA-SEQUENCEEXT-X-KEYEXT-X-PROGRAM-DATE-TIMEEXT-X-ALLOW-CACHEEXT-X-STREAM-INFEXT-X-ENDLIST這些標(biāo)簽中的每個(gè)都將在下面更具體地描述。盡管關(guān)于每個(gè)新標(biāo)簽描述了特定的格式和屬性,但是可選實(shí)施例也可以支持不同的屬性、名字、格式,等等。EXT-X-TARGETDURATION標(biāo)簽可以指示將被添加到呈現(xiàn)的下一個(gè)媒體文件的大致持續(xù)時(shí)間。它可以包括在重放文件中而且格式可以是#EXT-X-TARGETDURATION :〈秒〉其中,“秒”指示媒體文件的持續(xù)時(shí)間。在一種實(shí)施例中,實(shí)際持續(xù)時(shí)間可以與由該標(biāo)簽指示的目標(biāo)持續(xù)時(shí)間稍有不同。在一種實(shí)施例中,指示片段的每個(gè)URI將與該片段的大致持續(xù)時(shí)間關(guān)聯(lián);例如,用于一個(gè)片段的URI可以用指示該片段的大致持續(xù)時(shí)間的標(biāo)簽作為前綴。播放列表文件中的每個(gè)媒體文件URI都可以具有唯一的序列號(hào)。在一種實(shí)施例中, 如果存在的話,URI的該序列號(hào)等于其前面一個(gè)URI的序列號(hào)加一。EXT-X-MEDIA-SEQUENCE 標(biāo)簽可以指示出現(xiàn)在播放列表文件中的第一個(gè)URI的序列號(hào)而且格式可以是#EXT-X-MEDIA-SEQUENCE :〈編號(hào)〉其中,“編號(hào)”是URI的序列號(hào)。如果播放列表文件不包括#EXT-X-MEDIA-SEQUENCE 標(biāo)簽,則播放列表中第一個(gè)URI的序列號(hào)可以認(rèn)為是I。在一種實(shí)施例中,序列號(hào)可以不是順序的;例如,諸如1、5、7、17等的非順序的序列號(hào)會(huì)使得難以預(yù)測(cè)序列中的下一個(gè)編號(hào), 這有助于保護(hù)內(nèi)容不被盜取。幫助保護(hù)內(nèi)容的另一個(gè)選項(xiàng)是在任何給定時(shí)候都只顯示播放列表的部分。有些媒體文件可以被加密。EXT-X-KEY標(biāo)簽提供了可以用于解密跟在其后面的媒體文件的信息,而且其格式可以是#EXT-X-KEY:METHOD = < 方法 >[,URI = " <URI>"]。
      METHOD參數(shù)指示加密方法,而URI參數(shù),如果存在的話,指示如何獲得密鑰。為NONE的加密方法指示沒有加密。各種加密方法都可以使用,例如AES-128,其指示加密使用了具有128位密鑰和PKCS7填充符的高級(jí)加密標(biāo)準(zhǔn)加密[參見RFC3852]。新 EXT-X-KEY標(biāo)簽取代了任何先前的EXT-X-KEY標(biāo)簽。具有URI參數(shù)的EXT-X-KEY標(biāo)簽識(shí)別密鑰文件。密鑰文件可以包含要用于解密在播放列表文件中列出的后續(xù)媒體文件的密碼密鑰。例如,AES-128加密方法使用16個(gè)八位字節(jié)密鑰。密鑰文件的格式可以是打包的二進(jìn)制格式的16個(gè)八位字節(jié)陣列。AES-128的使用通常需要在加密和解密時(shí)提供相同的16個(gè)八位字節(jié)初始化向量 (IV)。改變IV可以用于增加密碼的強(qiáng)度。當(dāng)使用AES-128加密時(shí),媒體文件的序列號(hào)可以用作在加密或解密媒體文件時(shí)的IV。EXT-X-PROGRAM-DATE-TIME標(biāo)簽可以將下一個(gè)媒體文件的開始與絕對(duì)日期和/ 或時(shí)間關(guān)聯(lián),并且可以包括或者指示時(shí)區(qū)。在一種實(shí)施例中,日期/時(shí)間表示是IS0/IEC 8601 2004o標(biāo)簽格式可以是EXT-X-PROGRAM-DATE-TIME <YYYY-MM-DDThh:mm:ssZ>EXT-X-ALLOW-CACHE標(biāo)簽可以用于指示客戶端是否可以高速緩沖下載的媒體文件,用于以后重放。標(biāo)簽格式可以是 EXT-X-ALLOW-CACHE 〈YES|NO〉在一種實(shí)施例中,EXT-X-ENDLIST標(biāo)簽指示沒有更多的媒體文件將被添加到播放列表文件。標(biāo)簽格式可以是EXT-X-ENDLIST在一種實(shí)施例中,如果播放列表包含最后的片段或者媒體文件,則該播放列表將具有 EXT-X-ENDLIST 標(biāo)簽。EXT-X-STREAM-INF標(biāo)簽可以用于指示播放列表文件中的下一個(gè)URI識(shí)別另一個(gè)播放列表文件。在一種實(shí)施例中,標(biāo)簽格式可以是EXT-X-STREAM-INF :[屬性=值][,屬性=值]* <URI>其中可以使用以下屬性。屬性BANDWIDTH = <n>是表示為每秒位數(shù)的流位速率的大致上限。屬性PR0GRAM-ID = <i>是唯一地識(shí)別播放列表文件范圍中的特定呈現(xiàn)的編號(hào)。播放列表文件可以包括多個(gè)具有相同PR0GRAM-ID的EXT-X-STREAM-INF URI,用來(lái)描述相同呈現(xiàn)的變體流。變體流和變體播放列表在本公開內(nèi)容中被進(jìn)一步描述(例如,見圖 9A-9D)。前面所述的標(biāo)簽和屬性可以由服務(wù)器設(shè)備用于組織、發(fā)送和處理代表原始媒體內(nèi)容的媒體文件??蛻舳嗽O(shè)備使用這種信息重新組裝并以向客戶端設(shè)備的用戶提供實(shí)時(shí)或者接近實(shí)時(shí)的流化體驗(yàn)(例如,觀看諸如音樂或體育賽事的實(shí)況廣播)的方式呈現(xiàn)該媒體文件。播放列表文件中的每個(gè)媒體文件URI識(shí)別作為原始呈現(xiàn)(即,原始媒體內(nèi)容)的一個(gè)片段的媒體文件。在一種實(shí)施例中,每個(gè)媒體文件都格式化為MPEG-2傳送流、MPEG-2 程序流或者M(jìn)PEG-2音頻基本流。格式可以通過(guò)指定CODEC來(lái)指定,而且播放列表可以通過(guò)指定CODEC來(lái)指定格式。在一種實(shí)施例中,一個(gè)呈現(xiàn)中的所有媒體文件都具有相同的格式;但是,在其它實(shí)施例中,可以支持多種格式。在一種實(shí)施例中,傳送流文件應(yīng)當(dāng)包含單個(gè)
      1MPEG-2節(jié)目,而且在每個(gè)文件的開始應(yīng)當(dāng)有節(jié)目關(guān)聯(lián)表和節(jié)目映射表。包含視頻的文件應(yīng)當(dāng)具有至少一個(gè)關(guān)鍵幀和足夠的信息來(lái)完全初始化視頻解碼器??蛻魬?yīng)當(dāng)準(zhǔn)備好通過(guò)選擇合理的子集來(lái)處理特定類型(例如,音頻或者視頻)的多個(gè)軌跡。在一種實(shí)施例中,客戶端應(yīng)當(dāng)忽略傳送流中他們不認(rèn)識(shí)的私有流。用于媒體文件中的流中的樣本和在跨多個(gè)媒體文件的對(duì)應(yīng)流之間的樣本的編碼參數(shù)應(yīng)當(dāng)保持一致。但是,客戶應(yīng)當(dāng)在遇到的時(shí)候處理編碼變化,例如通過(guò)縮放視頻內(nèi)容來(lái)適應(yīng)分辨率變化。圖2A是讓一個(gè)或多個(gè)服務(wù)器設(shè)備利用非流化協(xié)議支持媒體內(nèi)容的技術(shù)的一種實(shí)施方式的流程圖。圖2A的例子是關(guān)于HTTP提供的;但是,其它非流化協(xié)議也可以以類似的方式使用。圖2A的例子是關(guān)于執(zhí)行某些任務(wù)的單個(gè)服務(wù)器提供的。但是,都可以使用任何個(gè)數(shù)的服務(wù)器。例如,向客戶端設(shè)備提供媒體文件的服務(wù)器可以是與將內(nèi)容分成多個(gè)媒體文件的服務(wù)器不同的設(shè)備。在操作200中,服務(wù)器設(shè)備接收要提供的內(nèi)容。該內(nèi)容可以代表實(shí)況音頻和/或視頻(例如,體育賽事、實(shí)況新聞、網(wǎng)絡(luò)照相機(jī)饋送)。內(nèi)容還可以代表預(yù)先錄制的內(nèi)容(例如,已經(jīng)錄制的音樂會(huì)、培訓(xùn)會(huì)議,等等)。內(nèi)容可以由服務(wù)器根據(jù)本領(lǐng)域中已知的任何格式和協(xié)議——流化或者未流化——來(lái)接收。在一種實(shí)施例中,內(nèi)容是由服務(wù)器以MPEG-2流的形式接收的;但是,也可以支持其它格式。然后,在操作210中,服務(wù)器可以臨時(shí)存儲(chǔ)至少部分內(nèi)容。內(nèi)容或者內(nèi)容的至少部分可以臨時(shí)存儲(chǔ)在例如存儲(chǔ)設(shè)備(例如,存儲(chǔ)區(qū)域網(wǎng)絡(luò)中的硬盤,等等)上或者內(nèi)存中??蛇x地,內(nèi)容可以經(jīng)存儲(chǔ)介質(zhì)(例如,光盤、閃存驅(qū)動(dòng)器)接收,其中內(nèi)容可以從該存儲(chǔ)介質(zhì)傳送到存儲(chǔ)設(shè)備或者內(nèi)存。在一種實(shí)施例中,服務(wù)器具有編碼器,如果必要的話,該編碼器將內(nèi)容轉(zhuǎn)換成一個(gè)或多個(gè)流(例如,MPEG-2)。這種轉(zhuǎn)換可以在不永久性存儲(chǔ)所接收內(nèi)容的情況下發(fā)生,而且,在有些實(shí)施例中,存儲(chǔ)操作210可以被忽略或者在其它實(shí)施例中可以是更長(zhǎng)期的存儲(chǔ)(例如,歸檔存儲(chǔ))。在操作220中,要提供的內(nèi)容被分成多個(gè)媒體文件。在一種實(shí)施例中,服務(wù)器將一個(gè)流轉(zhuǎn)換成單獨(dú)且不同的媒體文件(即,片段),這些媒體文件可以利用標(biāo)準(zhǔn)的網(wǎng)絡(luò)服務(wù)器進(jìn)行分發(fā)。在一種實(shí)施例中,服務(wù)器在支持對(duì)單個(gè)媒體文件的有效解碼的點(diǎn)(例如,在分組和密鑰幀邊界上,諸如在PES分組邊界和i幀邊界上)將媒體流分段。媒體文件可以是原始流中具有大致相等持續(xù)時(shí)間的部分。服務(wù)器還為每個(gè)媒體文件創(chuàng)建URI。這些URI允許客戶端設(shè)備訪問(wèn)媒體文件。因?yàn)槠问抢霉逃械貍魉驼麄€(gè)文件的HTTP服務(wù)器提供的,所以該服務(wù)器應(yīng)當(dāng)具有在可以被提供給客戶端之前可用的完整的分段媒體文件。因此,客戶端可以(在時(shí)間上)推后廣播至少一個(gè)媒體文件的長(zhǎng)度。在一種實(shí)施例中,媒體文件的大小是基于推后時(shí)間和具有太多文件之間的平衡。在一種實(shí)施例中,支持兩種會(huì)話類型(實(shí)況會(huì)話和事件會(huì)話)。對(duì)于實(shí)況會(huì)話,只有固定大小的流部分被保存。在一種實(shí)施例中,過(guò)時(shí)的內(nèi)容媒體文件從節(jié)目播放列表文件中去除,而且可以從服務(wù)器中去除。第二種類型的會(huì)話是事件會(huì)話,其中客戶端可以調(diào)諧到廣播的任何點(diǎn)(例如,從起點(diǎn)開始,從中點(diǎn)開始)。這種類型的會(huì)話可以用于例如轉(zhuǎn)播。在操作230中,媒體文件存儲(chǔ)在服務(wù)器的內(nèi)存中。在操作230中存儲(chǔ)文件之前,媒體文件可以由安全特征(諸如加密)保護(hù)。媒體文件被存儲(chǔ)為準(zhǔn)備好利用由服務(wù)器設(shè)備上網(wǎng)絡(luò)服務(wù)器應(yīng)用所支持的(或者由進(jìn)行傳輸?shù)牧硪粋€(gè)設(shè)備支持的)網(wǎng)絡(luò)協(xié)議(例如,HTTP 或者HTTPS)發(fā)送的文件。在操作240中,生成一個(gè)或多個(gè)播放列表文件以指示為了重建原始內(nèi)容應(yīng)當(dāng)按其組裝媒體文件的次序。播放列表文件(一個(gè)或多個(gè))可以利用擴(kuò)展M3U標(biāo)簽和在此所述的標(biāo)簽來(lái)為客戶端設(shè)備提供訪問(wèn)和重新組裝媒體文件以便在客戶端設(shè)備上提供流化體驗(yàn)的信息。用于每個(gè)媒體文件的URI以媒體文件要被播放的次序而被包括在播放列表文件(一個(gè)或多個(gè))中。服務(wù)器還可以創(chuàng)建用于播放列表(一個(gè)或多個(gè))的一個(gè)或多個(gè)URI,以便允許客戶端設(shè)備訪問(wèn)播放列表文件(一個(gè)或多個(gè))。在操作250中,播放列表文件(一個(gè)或多個(gè))可以被存儲(chǔ)在服務(wù)器上。盡管在圖 2A中媒體文件和播放列表文件(一個(gè)或多個(gè))的創(chuàng)建與存儲(chǔ)是以特定次序給出的,但是也可以使用不同的次序。例如,播放列表文件(一個(gè)或多個(gè))可以在媒體文件被創(chuàng)建或存儲(chǔ)之前被創(chuàng)建。作為另一個(gè)例子,播放列表文件(一個(gè)或多個(gè))和媒體文件可以在任何一方被存儲(chǔ)之前被創(chuàng)建。如果媒體文件要加密,則播放列表文件(一個(gè)或多個(gè))可以定義允許授權(quán)客戶端設(shè)備獲得包含用于解密媒體文件的加密密鑰的密鑰文件的URI。加密密鑰可以利用安全連接(例如,HTTPS)發(fā)送。作為另一個(gè)例子,播放列表文件(一個(gè)或多個(gè))可以利用HTTPS發(fā)送。作為再一個(gè)例子,媒體文件可以以不可預(yù)測(cè)的次序排列,以使得客戶端在沒有播放列表文件(一個(gè)或多個(gè))的情況下不能重建流。如果加密方法是AES-128,則例如AES-128 CBC加密可以應(yīng)用到單個(gè)的媒體文件。 在一種實(shí)施例中,整個(gè)文件都加密了。在一種實(shí)施例中,通常不跨媒體文件應(yīng)用密碼塊鏈。 如上所述,媒體文件的序列用作IV。在一種實(shí)施例中,服務(wù)器將具有密鑰URI的EXT-X-KEY 標(biāo)簽添加到播放列表文件的末端。然后,服務(wù)器利用那個(gè)密鑰加密所有后續(xù)的媒體文件,直到對(duì)加密配置進(jìn)行了改變。為了切換到新的加密密鑰,服務(wù)器可以使新密鑰經(jīng)新的URI可用,該新的URI與呈現(xiàn)中所使用的所有先前的密鑰URI都是不同的。服務(wù)器還將具有新密鑰URI的EXT-X-KEY 標(biāo)簽添加到播放列表文件的末端并利用該新密鑰加密所有后續(xù)的媒體文件。為了結(jié)束加密,服務(wù)器可以將具有加密方法NONE的EXT-X-KEY標(biāo)簽添加到播放列表文件的末端。在一種實(shí)施例中,該標(biāo)簽(具有“NONE”作為方法)不包括URI參數(shù)。所有后續(xù)的媒體文件都不加密,直到如上所述對(duì)加密配置進(jìn)行了改變。如果播放列表文件包含到利用那個(gè)密鑰加密的媒體文件的URI,則服務(wù)器不從播放列表文件中去除EXT-X-KEY標(biāo)簽。在操作270中,服務(wù)器可以響應(yīng)客戶端請(qǐng)求而在網(wǎng)絡(luò)上發(fā)送播放列表文件(一個(gè)或多個(gè))和媒體文件,如參考圖3A更具體描述的那樣。在一種實(shí)施例中,服務(wù)器響應(yīng)從客戶端設(shè)備接收到對(duì)播放列表文件的請(qǐng)求而向客戶端設(shè)備發(fā)送該播放列表文件??蛻舳嗽O(shè)備可以利用已經(jīng)提供給該客戶端設(shè)備的URI來(lái)訪問(wèn)/請(qǐng)求該播放列表文件。該URI指示播放列表文件在服務(wù)器上的位置。作為響應(yīng),服務(wù)器可以向客戶端設(shè)備提供該播放列表文件??蛻舳嗽O(shè)備可以利用該播放列表文件中的標(biāo)簽和URI (或者其它標(biāo)識(shí)符)來(lái)訪問(wèn)多個(gè)媒體文件。在一種實(shí)施例中,服務(wù)器可以將媒體文件的可用性限定到那些最近添加到播放列表文件(一個(gè)或多個(gè))的媒體文件。為此,每個(gè)播放列表文件都可以只包括一個(gè)EXT-X-MEDI A-SEQUENCE標(biāo)簽而且對(duì)于從播放列表文件中去除的每個(gè)媒體文件URI,值可以遞增一。媒體文件URI可以以添加它們的次序從播放列表文件(一個(gè)或多個(gè))中去除。在一種實(shí)施例中,當(dāng)服務(wù)器從播放列表文件(一個(gè)或多個(gè))中去除媒體文件URI時(shí),在等于媒體文件的持續(xù)時(shí)間加上該媒體文件在其中出現(xiàn)的最長(zhǎng)播放列表文件的持續(xù)時(shí)間的時(shí)間段內(nèi)媒體文件仍保持讓客戶端可以獲得。播放列表文件的持續(xù)時(shí)間是該播放列表文件中媒體文件的持續(xù)時(shí)間的總和。還可以使用其它持續(xù)時(shí)間。在一種實(shí)施例中,服務(wù)器可以在播放列表中一直維持至少三個(gè)主要呈現(xiàn)媒體文件,直到給出EXT-X-ENDLIST標(biāo)簽。圖2B是讓一個(gè)或多個(gè)服務(wù)器設(shè)備向一個(gè)或多個(gè)客戶端設(shè)備提供動(dòng)態(tài)更新的播放列表的技術(shù)的一種實(shí)施方式的流程圖。如在此所述的,播放列表可以利用累積模式或者滾動(dòng)模式來(lái)更新。圖2B的例子是關(guān)于HTTP提供的;但是,也可以以類似的方式使用其它非流化協(xié)議(例如,HTTPS,等等)。圖2B的例子是關(guān)于執(zhí)行某些任何的一個(gè)服務(wù)器提供的。但是,可以使用任何個(gè)數(shù)的服務(wù)器。例如,向客戶端設(shè)備提供媒體文件的服務(wù)器可以是與將內(nèi)容分成多個(gè)媒體文件的服務(wù)器不同的設(shè)備。在操作205中,服務(wù)器設(shè)備接收要提供的內(nèi)容。然后,在操作215中,服務(wù)器可以臨時(shí)存儲(chǔ)內(nèi)容的至少部分。操作215可以類似于圖2A中的操作210。在操作225中,要提供的內(nèi)容被分成多個(gè)媒體文件。在操作235中,媒體文件存儲(chǔ)在服務(wù)器的內(nèi)存中。在操作 235中存儲(chǔ)文件之前,媒體文件可以由安全特征(例如,加密)保護(hù)。在操作245中,生成一個(gè)或多個(gè)播放列表文件以指示為了重建原始內(nèi)容應(yīng)當(dāng)按其組裝媒體文件的次序。在操作255中,播放列表文件(一個(gè)或多個(gè))可以存儲(chǔ)到服務(wù)器上。 盡管在圖2B中媒體文件和播放列表文件(一個(gè)或多個(gè))的創(chuàng)建與存儲(chǔ)是以特定次序給出的,但是也可以使用不同的次序。在操作275中,該服務(wù)器(或者另一個(gè)服務(wù)器)可以響應(yīng)客戶端請(qǐng)求而在網(wǎng)絡(luò)上發(fā)送播放列表文件(一個(gè)或多個(gè))和媒體文件,如參考圖3A-3B更具體描述的那樣。服務(wù)器可以出于各種原因而更新播放列表文件(一個(gè)或多個(gè))。在操作285中, 服務(wù)器可以接收要提供給客戶端設(shè)備的附加數(shù)據(jù)。在操作255中存儲(chǔ)播放列表文件(一個(gè)或多個(gè))之后可以接收該附加數(shù)據(jù)。該附加數(shù)據(jù)可以是例如實(shí)況呈現(xiàn)的附加部分或者現(xiàn)有呈現(xiàn)的附加信息。附加數(shù)據(jù)可以包括廣告或者統(tǒng)計(jì)數(shù)據(jù)(例如,關(guān)于體育賽事的得分或者數(shù)據(jù))。附加數(shù)據(jù)可以(半透明地)疊加到呈現(xiàn)上或者呈現(xiàn)在側(cè)邊工具條用戶界面中。附加數(shù)據(jù)可以與原始接收數(shù)據(jù)相同的方式被分段。如果附加數(shù)據(jù)構(gòu)成廣告或者要插入到要由播放列表表示的節(jié)目中的其它內(nèi)容,則該附加數(shù)據(jù)可以在操作215中(至少臨時(shí)地)被存儲(chǔ)、在操作225中被分段并在操作235中被存儲(chǔ);在分段的附加數(shù)據(jù)被存儲(chǔ)之前,附加數(shù)據(jù)的片段可以被加密。于是,在操作245中,將生成更新后的播放列表,包括節(jié)目和附加數(shù)據(jù)。 播放列表是基于附加數(shù)據(jù)更新的并且在操作255中被再次存儲(chǔ)。從客戶端設(shè)備的角度,應(yīng)當(dāng)極小地(atomically)進(jìn)行播放列表文件(一個(gè)或多個(gè))的改變。在一種實(shí)施例中,更新后的播放列表代替先前的播放列表。如以下更具體討論的,客戶端設(shè)備可以多次請(qǐng)求播放列表。這些請(qǐng)求使客戶端設(shè)備能夠利用最近的播放列表。在一種實(shí)施例中,附加數(shù)據(jù)可以是元數(shù)據(jù);在這種情況下,播放列表不需要更新,但是片段可以被更新以包括元數(shù)據(jù)。例如, 元數(shù)據(jù)可以包含可以與片段中的時(shí)間戳匹配的時(shí)間戳,而且元數(shù)據(jù)可以被添加到具有匹配時(shí)間戳的片段。更新后的播放列表還可能導(dǎo)致媒體文件的去除。在一種實(shí)施例中,服務(wù)器應(yīng)當(dāng)以媒體文件被添加到播放列表中的次序從播放列表去除用于媒體文件的URI。在一種實(shí)施例中,如果服務(wù)器去除整個(gè)呈現(xiàn),則它使客戶端設(shè)備不能獲得該播放列表文件(一個(gè)或多個(gè))。在一種實(shí)施例中,服務(wù)器在包含要去除的媒體文件的最長(zhǎng)播放列表文件(一個(gè)或多個(gè))的持續(xù)時(shí)間內(nèi)維持媒體文件和播放列表文件(一個(gè)或多個(gè)),以便允許當(dāng)前的客戶端設(shè)備完成訪問(wèn)該呈現(xiàn)。相應(yīng)地,播放列表文件中的每個(gè)媒體文件URI都可以以 EXT-X-STREAM-INF標(biāo)簽作為前綴,以便指示由該播放列表文件指示的媒體文件的大致累積持續(xù)時(shí)間。在可選實(shí)施例中,可以立刻去除媒體文件和播放列表文件(一個(gè)或多個(gè))。在操作275中,從客戶端設(shè)備對(duì)播放列表的后續(xù)請(qǐng)求導(dǎo)致服務(wù)器提供更新的播放列表。在一種實(shí)施例中,播放列表是定期一例如與目標(biāo)持續(xù)時(shí)間有關(guān)的時(shí)段一更新的。 播放列表文件的周期性更新允許服務(wù)器提供對(duì)服務(wù)器動(dòng)態(tài)變化的呈現(xiàn)的訪問(wèn)。圖2C是讓一個(gè)或多個(gè)服務(wù)器設(shè)備利用多個(gè)位速率向客戶端設(shè)備提供媒體內(nèi)容的技術(shù)的一種實(shí)施方式的流程圖,其是可選流的一種使用形式。圖2C的例子是關(guān)于HTTP提供的;但是,也可以以類似的方式使用其它非流化協(xié)議。圖2C的例子是關(guān)于執(zhí)行某些任務(wù)的一個(gè)服務(wù)器提供的。但是,可以使用任何個(gè)數(shù)的服務(wù)器。例如,向客戶端設(shè)備提供媒體文件的服務(wù)器可以是與將內(nèi)容分成多個(gè)媒體文件的服務(wù)器不同的設(shè)備。在一種實(shí)施例中,服務(wù)器可以提供多個(gè)播放列表文件或者具有在單個(gè)播放列表文件中多個(gè)媒體文件列表的單個(gè)播放列表文件,來(lái)提供相同呈現(xiàn)的不同編碼。如果提供了不同的編碼,則播放列表文件(一個(gè)或多個(gè))可以包括提供不同位速率的每個(gè)變體流, 以便允許客戶端設(shè)備在編碼之間動(dòng)態(tài)切換(這結(jié)合圖9A-9D進(jìn)一步描述)。具有變體流的播放列表文件可以為每個(gè)變體流包括EXT-X-STREAM-INF標(biāo)簽。用于相同呈現(xiàn)的每個(gè) EXT-X-STREAM-INF標(biāo)簽可以具有相同的PR0GRAM-ID屬性值。用于每個(gè)呈現(xiàn)的PR0GRAM-ID 值在該變體流中是唯一的。在一種實(shí)施例中,當(dāng)提供變體流時(shí),服務(wù)器滿足以下約束。每個(gè)變體流可以由包括不是主要呈現(xiàn)的一部分的可選內(nèi)容的同一內(nèi)容組成。服務(wù)器可以使同一時(shí)段的內(nèi)容在流的最小目標(biāo)持續(xù)時(shí)間的準(zhǔn)確度內(nèi)對(duì)于所有變體流是可用的。在一種實(shí)施例中,變體流的媒體文件是MPEG-2傳輸流或者M(jìn)PEG-2程序流,其具有對(duì)于所有變體流中的對(duì)應(yīng)內(nèi)容都匹配的樣本時(shí)間戳。而且,在一種實(shí)施例中,所有變體流都應(yīng)當(dāng)包含相同的音頻編碼。這允許客戶端設(shè)備在變體流之間切換,而不損失內(nèi)容。參考圖2C,在操作202中,服務(wù)器設(shè)備接收要提供的內(nèi)容。然后,在操作212中,服務(wù)器可以至少臨時(shí)地存儲(chǔ)該內(nèi)容。在操作222中,要提供的內(nèi)容被分成多個(gè)媒體文件。在操作232中,每個(gè)媒體文件都被編碼以獲得所選的位速率(或者其它編碼參數(shù)的所選值), 并將其存儲(chǔ)到服務(wù)器上。例如,媒體文件可以以高帶寬連接、中帶寬連接和低帶寬連接為目標(biāo)。媒體文件可以在存儲(chǔ)之前進(jìn)行加密。以各種類型連接為目標(biāo)的媒體文件的編碼可以被選擇來(lái)提供在目標(biāo)帶寬等級(jí)的流化體驗(yàn)。在一種實(shí)施例中,在操作242中生成具有如在此所述的指示各種編碼等級(jí)的標(biāo)簽的變體播放列表。該標(biāo)簽可以包括例如用于每個(gè)編碼等級(jí)的EXT-X-STREAM-INF標(biāo)簽,其中該標(biāo)簽具有到對(duì)應(yīng)媒體播放列表文件的URI。
      這種變體播放列表可以包括到用于各種編碼等級(jí)的媒體播放列表文件的URI。因此,客戶端設(shè)備可以從在指示編碼等級(jí)的變體播放列表中提供的可選方案中選擇目標(biāo)位速率并檢索對(duì)應(yīng)的播放列表文件。在一種實(shí)施例中,客戶端設(shè)備可以在重放過(guò)程中在位速率之間改變(例如,參考圖9A-9D所描述的)。在操作252中,指示各種編碼等級(jí)的變體播放列表存儲(chǔ)到服務(wù)器上。在操作242中,還可以生成在變體播放列表中引用的每個(gè)播放列表, 并在操作252中將其存儲(chǔ)。響應(yīng)來(lái)自客戶端設(shè)備的請(qǐng)求,服務(wù)器可以在操作272中發(fā)送指示各種編碼等級(jí)的變體播放列表。在操作282中,服務(wù)器可以接收對(duì)與所選位速率對(duì)應(yīng)的變體播放列表中指定的媒體播放列表之一的請(qǐng)求。響應(yīng)該請(qǐng)求,在操作292中,服務(wù)器發(fā)送對(duì)應(yīng)于來(lái)自客戶端設(shè)備的請(qǐng)求的媒體播放列表。然后,客戶端設(shè)備可以使用該媒體播放列表從服務(wù)器請(qǐng)求媒體文件。在操作297中,服務(wù)器響應(yīng)該請(qǐng)求而向客戶端設(shè)備提供媒體文件。圖3A是讓客戶端設(shè)備利用非流化協(xié)議支持內(nèi)容流化的技術(shù)的一種實(shí)施方式的流程圖。圖3A的例子是關(guān)于HTTP提供的;但是,也可以以類似的方式使用其它非流化協(xié)議。 圖3A-3B中所示的方法可以由一個(gè)客戶端設(shè)備或者由幾個(gè)單獨(dú)的客戶端設(shè)備執(zhí)行。例如, 在這些方法中任何一個(gè)的情況下,單個(gè)客戶端設(shè)備可以執(zhí)行所有操作(例如,請(qǐng)求播放列表文件、利用播放列表文件中的URI請(qǐng)求媒體文件、組裝媒體文件來(lái)生成并提供呈現(xiàn)/輸出),或者幾個(gè)不同的客戶端設(shè)備可以執(zhí)行一些但不是全部操作(例如,第一客戶端設(shè)備可以請(qǐng)求播放列表文件并利用播放列表文件中的URI請(qǐng)求媒體文件,并且可以存儲(chǔ)那些媒體文件,以供可以處理該媒體文件來(lái)生成并提供呈現(xiàn)/輸出的第二客戶端設(shè)備使用)。在操作300中,客戶端設(shè)備可以從服務(wù)器請(qǐng)求播放列表文件。在一種實(shí)施例中, 請(qǐng)求是根據(jù)HTTP兼容協(xié)議做出的。該請(qǐng)求利用到存儲(chǔ)在服務(wù)器上的初始播放列表文件的URI。在可選實(shí)施例中,可以支持其它非流化協(xié)議。響應(yīng)該請(qǐng)求,服務(wù)器將經(jīng)網(wǎng)絡(luò)將對(duì)應(yīng)的播放列表文件發(fā)送到客戶端。如以上所討論的,網(wǎng)絡(luò)可以是有線的或者無(wú)線的而且可以是有線或無(wú)線網(wǎng)絡(luò)的任意組合。此外,網(wǎng)絡(luò)還可以是數(shù)據(jù)網(wǎng)絡(luò)(例如,IEEE802. 11、IEEE 802. 16)或者蜂窩電話網(wǎng)絡(luò)(例如,3G)。在操作310中,客戶端設(shè)備可以接收播放列表文件。在操作320中,播放列表文件可以存儲(chǔ)在客戶端設(shè)備的存儲(chǔ)器中。該存儲(chǔ)器可以是例如硬盤、閃存存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器。在一種實(shí)施例中,每次當(dāng)從播放列表URI加載或者重新加載播放列表文件時(shí),客戶端都進(jìn)行檢查以確定播放列表文件以#EXTM3U標(biāo)簽開始而且,如果沒有該標(biāo)簽,就不繼續(xù)。如以上所討論的,播放列表文件包括一個(gè)或多個(gè)標(biāo)簽及一個(gè)或多個(gè)到媒體文件的URI??蛻舳嗽O(shè)備可以包括組裝器代理,該組裝器代理在操作330中通過(guò)請(qǐng)求由播放列表文件中URI指示的媒體文件,使用播放列表文件重新組裝原始內(nèi)容。在一種實(shí)施例中,組裝器代理是作為標(biāo)準(zhǔn)網(wǎng)絡(luò)瀏覽器應(yīng)用的一部分的插件模塊。在另一種實(shí)施例中,組裝器代理可以是與網(wǎng)絡(luò)瀏覽器交互來(lái)利用播放列表文件(一個(gè)或多個(gè))接收并組裝媒體文件的獨(dú)立應(yīng)用。作為再一個(gè)例子,組裝器代理可以是嵌入到客戶端設(shè)備中的專用硬件或者固件部件。該組裝器使得來(lái)自播放列表文件的媒體文件從URI所指示的服務(wù)器被下載。如果播放列表文件包含EXT-X-ENDLIST標(biāo)簽,則可以首先播放由播放列表文件所指示的任何媒體文件。如果EXT-X-ENDLIST標(biāo)簽不存在,則可以首先播放除最后一個(gè)和倒數(shù)第二個(gè)媒體文件之外的任何媒體文件。在一種實(shí)施例中,一旦選擇了要播放的第一個(gè)媒體文件,就以它們?cè)诓シ帕斜砦募谐霈F(xiàn)的次序加載播放列表文件中的后續(xù)媒體文件(否則就會(huì)無(wú)序地呈現(xiàn)內(nèi)容)。在一種實(shí)施例中,客戶端設(shè)備嘗試在媒體文件被需要之前就加載該媒體文件 (并將它們存儲(chǔ)在緩沖器中)以便提供不中斷的重放并補(bǔ)償網(wǎng)絡(luò)等待時(shí)間和吞吐率的臨時(shí)變化。在操作340中,所下載的媒體文件(一個(gè)或多個(gè))可以被存儲(chǔ)到客戶端設(shè)備上的存儲(chǔ)器中。其中可以存儲(chǔ)內(nèi)容的存儲(chǔ)器可以是客戶端設(shè)備上任何類型的存儲(chǔ)器,例如,隨機(jī)存取存儲(chǔ)器、硬盤或者視頻緩沖器。存儲(chǔ)可以是臨時(shí)的以便允許重放,或者也可以是永久的。如果播放列表文件包含EXT-X-ALLOW-CACHE標(biāo)簽并且其值為NO,則客戶端在播放之后不存儲(chǔ)下載的媒體文件。如果播放列表文件包含EXT-X-ALLOW-CACHE標(biāo)簽并且其值為YES,則客戶端設(shè)備可以無(wú)限期地存儲(chǔ)該媒體文件以供以后重放??蛻舳嗽O(shè)備可以使用 EXT-X-PROGRAM-DATE-TIME標(biāo)簽的值來(lái)向用戶顯示節(jié)目起點(diǎn)的時(shí)間。在一種實(shí)施例中,客戶端可以緩沖多個(gè)媒體文件,以使得其不易受網(wǎng)絡(luò)抖動(dòng)的影響,以便提供更好的用戶體驗(yàn)。在一種實(shí)施例中,如果解密方法是AES-128,則AES-128 CBC解密被應(yīng)用到單個(gè)的媒體文件。整個(gè)文件被解密。在一種實(shí)施例中,不跨媒體文件應(yīng)用密碼塊鏈。如上所述,媒體文件的序列號(hào)可以用作為初始化向量。在操作350中,內(nèi)容可以從客戶端設(shè)備的存儲(chǔ)器中輸出。該輸出或者呈現(xiàn)可以是例如經(jīng)內(nèi)置揚(yáng)聲器或者耳機(jī)的音頻輸出。輸出可以包括從客戶端設(shè)備經(jīng)屏幕輸出或者投影的視頻。本領(lǐng)域中已知的任何類型的輸出都可以使用。在操作351中,客戶端設(shè)備確定在存儲(chǔ)的當(dāng)前播放列表中是否有任何還未播放或者呈現(xiàn)的媒體文件。如果存在這種媒體文件 (而且如果它們還沒有被請(qǐng)求),則處理返回操作330,其中請(qǐng)求一個(gè)或多個(gè)媒體文件而且過(guò)程重復(fù)。如果不存在這種媒體文件(即,當(dāng)前播放列表中的所有媒體文件都已經(jīng)播放完了),則處理繼續(xù)到操作352,該操作確定播放列表文件是否包括結(jié)束標(biāo)簽。在操作352中,如果播放列表包括結(jié)束標(biāo)簽(例如,EXT-X-ENDLIST),則當(dāng)由該播放列表文件指示的媒體文件都播放完之后,重放停止。如果播放列表中沒有結(jié)束標(biāo)簽,則客戶端設(shè)備從服務(wù)器再次請(qǐng)求播放列表并返回操作300,來(lái)獲得該節(jié)目的進(jìn)一步或者更新后的播放列表。如參考圖2B更具體討論的,服務(wù)器可以更新播放列表文件,來(lái)引入輔助內(nèi)容(例如,對(duì)應(yīng)于實(shí)況廣播中附加媒體內(nèi)容的附加媒體文件標(biāo)識(shí)符)或者附加內(nèi)容(例如,順流而下的進(jìn)一步內(nèi)容)。為了訪問(wèn)該輔助內(nèi)容或者附加內(nèi)容,客戶端可以從服務(wù)器重新加載更新的播放列表。這可以提供一種機(jī)制,即使在與播放列表文件關(guān)聯(lián)的媒體內(nèi)容的重放過(guò)程中, 播放列表文件也可以通過(guò)該機(jī)制被動(dòng)態(tài)地更新。客戶端可以基于多個(gè)觸發(fā)器來(lái)請(qǐng)求播放列表文件的重新加載。結(jié)束標(biāo)簽的缺乏是一種此類的觸發(fā)器。在一種實(shí)施例中,客戶端設(shè)備周期性地重新加載播放列表文件(一個(gè)或多個(gè)),除非播放列表文件包含EXT-X-ENDLIST標(biāo)簽。當(dāng)客戶端設(shè)備第一次加載播放列表文件或者重新加載播放列表文件并發(fā)現(xiàn)播放列表文件自上次加載之后已經(jīng)發(fā)生變化的時(shí)候,客戶端可以在嘗試再次重新加載播放列表文件之前等待一段時(shí)間。這個(gè)時(shí)期稱為初始最小重新加載延遲。它是從客戶端開始加載播放列表文件的時(shí)間開始測(cè)量的。在一種實(shí)施例中,初始最小重新加載延遲是播放列表文件中最后一個(gè)媒體文件的持續(xù)時(shí)間或者目標(biāo)持續(xù)時(shí)間的三倍,這兩者中較小的一個(gè)。媒體文件持續(xù)時(shí)間是由EXTINF 標(biāo)簽指定的。如果客戶端重新加載播放列表文件并發(fā)現(xiàn)其沒有改變,則客戶端可以在重試之前等待一段時(shí)間。在一種實(shí)施例中,最小延遲是目標(biāo)持續(xù)時(shí)間的三倍或者初始最小重新加載延遲的倍數(shù),這兩者中較小的一個(gè)。在一種實(shí)施例中,對(duì)于第一次嘗試,這個(gè)倍數(shù)是 O. 5,對(duì)于第二次嘗試是I. 5,對(duì)于后續(xù)嘗試是3. O ;但是,也可以使用其它倍數(shù)。每次當(dāng)播放列表文件被加載或者重新加載時(shí),客戶端設(shè)備都檢查播放列表文件以確定要加載的下一個(gè)媒體文件。如上所述,要加載的第一個(gè)文件是被選擇來(lái)首先播放的媒體文件。如果要播放的第一個(gè)媒體文件已經(jīng)被加載而且播放列表文件不包含 EXT-X-MEDI A-SEQUENCE標(biāo)簽,則客戶端可以驗(yàn)證當(dāng)前播放列表文件在其被初始找到的偏移處包含上次加載的媒體文件的URI,如果沒有找到該文件,則暫停重放。要加載的下一個(gè)媒體文件可以是播放列表文件中上次加載的URI之后的第一個(gè)媒體文件URI。如果要播放的第一個(gè)媒體文件已經(jīng)被加載而且播放列表文件包含 EXT-X-MEDI A-SEQUENCE標(biāo)簽,則要加載的下一個(gè)媒體文件可以是具有大于所加載的上一個(gè)媒體文件的序列號(hào)的最小序列號(hào)的媒體文件。如果播放列表文件包含指定密鑰文件URI 的EXT-X-KEY標(biāo)簽,則客戶端設(shè)備獲得該密鑰文件并利用該密鑰文件中的密鑰解密跟在 EXT-X-KEY標(biāo)簽之后的媒體文件,直到遇到另一個(gè)EXT-X-KEY標(biāo)簽。在一種實(shí)施例中,客戶端設(shè)備利用與前面所使用的相同的URI來(lái)下載播放列表文件。因此,如果對(duì)播放列表文件進(jìn)行了改變,則客戶端設(shè)備可以使用更新后的播放列表文件來(lái)檢索媒體文件并基于該媒體文件提供輸出。對(duì)播放列表文件的改變可以包括例如刪除到媒體文件的URI、添加到新媒體文件的URI、代替到代替媒體文件的URI。當(dāng)對(duì)播放列表文件進(jìn)行了改變時(shí),一個(gè)或多個(gè)標(biāo)簽可以被更新,以便反映這些改變(一個(gè)或多個(gè))。例如,如果對(duì)媒體文件的改變導(dǎo)致對(duì)由播放列表文件所指示的媒體文件的重放的持續(xù)時(shí)間的改變,則可以更新持續(xù)時(shí)間標(biāo)簽。圖3B是讓客戶端設(shè)備利用多個(gè)位速率支持內(nèi)容流化的技術(shù)的一種實(shí)施例的流程圖,其是可選流的一種形式。圖3B的例子是關(guān)于HTTP提供的;但是,也可以以類似的方式使用其它非流化協(xié)議。在操作370中,客戶端設(shè)備可以請(qǐng)求播放列表文件。如以上所討論的,播放列表文件可以利用提供給客戶端設(shè)備的URI來(lái)檢索。在一種實(shí)施例中,播放列表文件包括媒體文件變體流的列表,以便以不同的位速率提供相同的內(nèi)容;換句話說(shuō),單個(gè)播放列表文件包括用于每個(gè)變體流的媒體文件的URI。圖3B中所示的例子使用這種實(shí)施例。在另一種實(shí)施例中,變體流可以由單獨(dú)提供給客戶端的多個(gè)不同的播放列表文件來(lái)表示,所述多個(gè)不同的播放列表文件中的每一個(gè)以不同的位速率提供相同的內(nèi)容,而且變體播放列表可以提供用于每個(gè)不同播放列表文件的URI。這允許客戶端設(shè)備基于客戶端條件來(lái)選擇位速率。在操作375中,可以由客戶端設(shè)備檢索播放列表文件(一個(gè)或多個(gè))。在操作380 中,播放列表文件(一個(gè)或多個(gè))可以存儲(chǔ)到客戶端設(shè)備的存儲(chǔ)器中。在操作385中,客戶端設(shè)備可以基于當(dāng)前的網(wǎng)絡(luò)連接速度選擇要使用的位速率。在操作390中,利用包括在對(duì)應(yīng)于所選位速率的URI的播放列表文件中的從服務(wù)器請(qǐng)求媒體文件。檢索出的媒體文件可以存儲(chǔ)到客戶端設(shè)備的存儲(chǔ)器中。在操作394中,由客戶端設(shè)備利用媒體文件提供輸出,而且客戶端設(shè)備確定是否改變位速率。
      在一種實(shí)施例中,客戶端設(shè)備最初選擇最低可用的位速率。在播放媒體的同時(shí),客戶端設(shè)備可以監(jiān)視可用帶寬(例如,當(dāng)前的網(wǎng)絡(luò)連接位速率),以確定該可用帶寬是否可以支持更高位速率用于重放。如果可以,則客戶端設(shè)備可以選擇更高的位速率并訪問(wèn)由該更高位速率媒體播放列表文件指示的媒體文件。反過(guò)來(lái)也是可以支持的。如果重放消耗太多帶寬,則客戶端設(shè)備可以選擇較低的位速率并訪問(wèn)由該較低位速率媒體播放列表文件指示的媒體文件。在操作394中,如果客戶端設(shè)備例如響應(yīng)可用帶寬的變化或者響應(yīng)用戶輸入而改變位速率,則在操作385中客戶端設(shè)備可以選擇不同的位速率。在一種實(shí)施例中,為了選擇不同的位速率,客戶端設(shè)備可以利用包括在對(duì)應(yīng)于新選定位速率的播放列表文件中的URI 的不同列表。在一種實(shí)施例中,客戶端設(shè)備可以在訪問(wèn)播放列表中媒體文件的過(guò)程中改變位速率。如果在操作394中位速率沒有改變,則客戶端設(shè)備確定在當(dāng)前播放列表中是否還有任何未被檢索和給出的未播放媒體文件。如果存在這種媒體文件,則處理返回操作390, 并且利用用于播放列表中那些文件的URI檢索一個(gè)或多個(gè)媒體文件。如果不存在這種媒體文件(即,當(dāng)前播放列表中的所有媒體文件都已經(jīng)播放完了),則處理前進(jìn)到操作396,其中確定播放列表是否包括結(jié)束標(biāo)簽。如果包括,則節(jié)目的重放已經(jīng)結(jié)束而且過(guò)程已經(jīng)完成;如果不包括,則處理返回操作370,而且客戶端設(shè)備請(qǐng)求重新加載節(jié)目的播放列表,而且過(guò)程重復(fù)通過(guò)圖3B中所示的方法。圖4是服務(wù)器流代理的一種實(shí)施方式的框圖。應(yīng)當(dāng)理解,服務(wù)器流代理400的元件可以分布在幾個(gè)服務(wù)器設(shè)備上。例如,第一服務(wù)器設(shè)備可以包括分段器430、索引器440 和安全部件450,但沒有文件服務(wù)器460,而第二服務(wù)器設(shè)備可以包括文件服務(wù)器460而沒有分段器430、索引器440和安全部件450。在這個(gè)例子中,第一服務(wù)器設(shè)備將準(zhǔn)備播放列表和媒體文件但是不將它們發(fā)送到客戶端設(shè)備,而一個(gè)或多個(gè)第二服務(wù)器設(shè)備將接收并可選地存儲(chǔ)播放列表和媒體文件并將該播放列表和媒體文件發(fā)送到客戶端設(shè)備。服務(wù)器流代理400包括控制邏輯410,其實(shí)現(xiàn)指示服務(wù)器流代理400操作的邏輯功能控制,和與指示服務(wù)器流代理400操作關(guān)聯(lián)的硬件。邏輯可以是硬件邏輯電路或者軟件例程或者固件。在一種實(shí)施例中,服務(wù)器流代理400包括一個(gè)或多個(gè)應(yīng)用412,這些應(yīng)用412代表提供指令給控制邏輯410的代碼序列和/或程序。服務(wù)器流代理400包括存儲(chǔ)器414,存儲(chǔ)器414代表存儲(chǔ)器設(shè)備或者對(duì)用于存儲(chǔ)數(shù)據(jù)或指令的存儲(chǔ)器資源的訪問(wèn)。存儲(chǔ)器414可以包括服務(wù)器流代理400本地的存儲(chǔ)器以及或者可選地,包括服務(wù)器流代理400在其上駐留的主機(jī)系統(tǒng)的存儲(chǔ)器。服務(wù)器流代理400 還包括一個(gè)或多個(gè)接口 416,這些接口代表服務(wù)器流代理400外部的實(shí)體(電子設(shè)備或者人)對(duì)服務(wù)器流代理400和/或服務(wù)器流代理400對(duì)所述實(shí)體的訪問(wèn)接口(輸入/輸出接 Π )。服務(wù)器流代理400還可以包括服務(wù)器流弓丨擎420,該引擎420代表使服務(wù)器流代理 400能夠提供如在此所述的實(shí)時(shí)或者接近實(shí)時(shí)的流化的一個(gè)或多個(gè)功能。圖4的例子提供了可以包括在服務(wù)器流引擎420中的幾個(gè)部件;但是,也可以包括不同的或者附加的部件。 在提供流化環(huán)境中可能涉及到的示例部件包括分段器430、索引器440、安全部件450和文件服務(wù)器460。這些部件中的每一個(gè)都可以進(jìn)一步包括提供其它功能的其它部件。如在此所使用的,部件指例程、子系統(tǒng)等,不管其是以硬件、軟件、固件還是其某種組合實(shí)現(xiàn)的。分段器430將要提供的內(nèi)容分成可以作為文件利用網(wǎng)絡(luò)服務(wù)器協(xié)議(例如,HTTP) 發(fā)送的媒體文件。例如,分段器430可以將內(nèi)容以預(yù)定的文件格式分成預(yù)定的固定大小的數(shù)據(jù)塊。索引器440可以提供一個(gè)或多個(gè)播放列表文件,這些播放列表文件提供到由分段器430創(chuàng)建的媒體文件的地址或者URI。索引器440可以例如創(chuàng)建具有與分段器430所創(chuàng)建的每個(gè)文件對(duì)應(yīng)的標(biāo)識(shí)符的次序列表的一個(gè)或多個(gè)文件。該標(biāo)識(shí)符可以由分段器430或者索引器440創(chuàng)建或者分配。索引器440還可以在播放列表文件中包括一個(gè)或多個(gè)標(biāo)簽, 來(lái)支持媒體文件的訪問(wèn)和/或利用。安全部件450可以提供諸如以上所討論的那些的安全特征(例如,加密)。網(wǎng)絡(luò)服務(wù)器460可以提供關(guān)于向遠(yuǎn)端客戶端設(shè)備提供主機(jī)系統(tǒng)上所存儲(chǔ)的文件的網(wǎng)絡(luò)服務(wù)器功能。網(wǎng)絡(luò)服務(wù)器460可以支持例如HTTP兼容協(xié)議。圖5是客戶端流代理的一種實(shí)施方式的框圖。應(yīng)當(dāng)理解,客戶端流代理的元件可以分布在幾個(gè)客戶端設(shè)備上。例如,第一客戶端設(shè)備可以包括組裝器530和安全部件550 而且可以向第二客戶端設(shè)備提供解密的媒體文件流,而第二客戶端設(shè)備包括輸出生成器 540 (但不包括組裝器530和安全部件550)。在另一個(gè)例子中,主客戶端設(shè)備可以檢索播放列表并將它們提供給次客戶端設(shè)備,而次客戶端設(shè)備可以檢索在播放列表中指定的媒體文件并生成呈現(xiàn)這些媒體文件的輸出??蛻舳肆鞔?00包括控制邏輯510,其實(shí)現(xiàn)指示客戶端流代理500操作的邏輯功能性控制,和與指示客戶端流代理500操作關(guān)聯(lián)的硬件。邏輯可以是硬件邏輯電路或者軟件例程或者固件。在一種實(shí)施例中,客戶端流代理500包括一個(gè)或多個(gè)應(yīng)用512,這些應(yīng)用512代表提供指令給控制邏輯510的代碼序列或者程序??蛻舳肆鞔?00包括存儲(chǔ)器514,該存儲(chǔ)器514代表存儲(chǔ)器設(shè)備或者對(duì)用于存儲(chǔ)數(shù)據(jù)和/或指令的存儲(chǔ)器資源的訪問(wèn)。存儲(chǔ)器514可以包括客戶端流代理500本地的存儲(chǔ)器,以及或者可選地,包括客戶端流代理500在其上駐留的主機(jī)系統(tǒng)的存儲(chǔ)器??蛻舳肆鞔?00還包括一個(gè)或多個(gè)接口 516,這些接口代表服務(wù)器流代理500外部的實(shí)體(電子設(shè)備或者人)對(duì)服務(wù)器流代理500和/或服務(wù)器流代理500對(duì)所述實(shí)體的訪問(wèn)接口(輸入/輸出接口)??蛻舳肆鞔?00還可以包括客戶端流引擎520,該引擎代表使客戶端流代理500 能夠提供如在此所述的實(shí)時(shí)或者接近實(shí)時(shí)的流化的一個(gè)或多個(gè)功能。圖5的例子提供了可以包括在客戶端流引擎520中的幾個(gè)部件;但是,也可以包括不同的或者附加的部件。在提供流化環(huán)境中可能涉及到的示例部件包括組裝器530、輸出生成器540和安全部件550。這些部件中的每一個(gè)都可以進(jìn)一步包括提供其它功能的其它部件。如在此所使用的,部件指例程、子系統(tǒng)等,不管其是以硬件、軟件、固件還是其某種組合實(shí)現(xiàn)的。組裝器530可以利用從服務(wù)器接收的播放列表文件來(lái)經(jīng)網(wǎng)絡(luò)服務(wù)器協(xié)議(例如, HTTP)從服務(wù)器訪問(wèn)媒體文件。在一種實(shí)施例中,組裝器530可以使得下載由播放列表文件中URI指示的媒體文件。組裝器530可以響應(yīng)播放列表文件中所包括的標(biāo)簽。輸出生成器540可以在主機(jī)系統(tǒng)上提供所接收到的媒體文件作為音頻或者視頻輸出(或者同時(shí)有音頻和視頻)。輸出生成器540可以例如使得音頻輸出到一個(gè)或多個(gè)揚(yáng)聲器和使得視頻輸出到顯示設(shè)備。安全部件550可以提供諸如以上所討論的那些的安全特征。圖6說(shuō)明了具有多個(gè)標(biāo)簽的播放列表文件的一種實(shí)施例。圖6的不例播放列表包括特定個(gè)數(shù)和次序的標(biāo)簽。這僅僅是為了描述的目的而提供的。有些播放列表文件可以包括更多、更少或者不同組合的標(biāo)簽而且這些標(biāo)簽可以以與圖6所示的次序不同的次序排列。開始標(biāo)簽610可以指示播放列表文件的開始。在一種實(shí)施例中,開始標(biāo)簽 610是#EXTM3U標(biāo)簽。持續(xù)時(shí)間標(biāo)簽620可以指示重放列表的持續(xù)時(shí)間。S卩,由重放列表600指示的媒體文件的重放的持續(xù)時(shí)間。在一種實(shí)施例中,持續(xù)時(shí)間標(biāo)簽620是 EXT-X-TARGETDURATION標(biāo)簽;但是,也可以使用其它標(biāo)簽。日期/時(shí)間標(biāo)簽625可以提供關(guān)于由播放列表文件600所指示的媒體文件所提供的內(nèi)容的日期和時(shí)間的信息。在一種實(shí)施例中,日期/時(shí)間標(biāo)簽625是 EXT-X-PROGRAM-DATE-TIME標(biāo)簽;但是,也可以使用其它標(biāo)簽。序列標(biāo)簽630可以指示播放列表序列中播放列表文件600的順序。在一種實(shí)施例中,序列標(biāo)簽630是 EXT-X-MEDI A-SEQUENCE標(biāo)簽,但是,也可以使用其它標(biāo)簽。安全標(biāo)簽640可以提供關(guān)于施加到由播放列表文件600所指示的媒體文件的安全和/或加密的信息。例如,安全標(biāo)簽640可以指定要解密由媒體文件指示符所指定的文件的解密密鑰。在一種實(shí)施例中,安全標(biāo)簽640是EXT-X-KEY標(biāo)簽;但是,也可以使用其它標(biāo)簽。變體列表標(biāo)簽645可以指示變體流是否由播放列表文件600提供及關(guān)于變體流的信息 (例如,多少、位速率)。在一種實(shí)施例中,變體列表標(biāo)簽645是EXT-X-STREAM-INF標(biāo)簽。媒體文件指示符650可以提供關(guān)于要播放的媒體文件的信息。在一種實(shí)施例中, 媒體文件指示符650包括到要播放的多個(gè)媒體文件的URI。在一種實(shí)施例中,播放列表文件600中URI的次序?qū)?yīng)于媒體文件應(yīng)當(dāng)被訪問(wèn)和/或播放的次序。后續(xù)播放列表指示符 660可以提供關(guān)于在播放列表文件600之后要使用的一個(gè)或多個(gè)重放文件的信息。在一種實(shí)施例中,后續(xù)播放列表指示符660可以包括到在播放列表文件600的媒體文件已經(jīng)被播放之后要使用的一個(gè)或多個(gè)播放列表文件的URI。存儲(chǔ)器標(biāo)簽670可以指示在媒體文件內(nèi)容的重放之后客戶端設(shè)備是否可以存儲(chǔ)媒體文件和/或可以存儲(chǔ)媒體文件多長(zhǎng)時(shí)間。在一種實(shí)施例中,存儲(chǔ)器標(biāo)簽670是 EXT-X-ALLOW-CACHE標(biāo)簽。結(jié)束標(biāo)簽680指示播放列表文件600是否是用于呈現(xiàn)的最后一個(gè)播放列表文件。在一種實(shí)施例中,結(jié)束標(biāo)簽680是EXT-X-ENDLIST標(biāo)簽。以下部分包含了根據(jù)一種實(shí)施例的幾個(gè)示例播放列表文件。簡(jiǎn)單的播放列表文件#EXTM3U#EXT-X-TARGETDURATION 10#EXTINF 5220,http: //media, example, com/entire, ts#EXT-X-ENDLIST_滑動(dòng)窗口播放列表,利用HTTPS#EXTM3U
      #EXT-X-TARGETDURATION 8#EXT-X-MEDIA-SEQUENCE :2680#EXTINF 8,https://priv. example, com/fileSeguence2680.ts#EXTINF 8,https://priv. example, com/fileSeguence2681.ts#EXTINF 8,https://priv. example, com/fileSeguence2682.ts_具有加密媒體文件的播放列表文件#EXTM3U#EXT-X-MEDIA-SEQUENCE :7794#EXT-X-TARGETDURATION 15#EXT-X-KEY:METHOD = AES-128, URI ="https://priv. example, com/key, php r = 52"#EXTINF 15,http://media, example, com/fileSeguence7794.ts#EXTINF 15,http://media, example, com/fileSeguence7795.ts#EXTINF 15,http://media, example, com/fileSequence7796.ts#EXT-X-KEY:METHOD = AES-128, URI ="https: //priv. example, com/key, php r = 53"#EXTINF 15,http://media, example, com/fileSequence7797.ts_變體播放列表文件#EXTM3U#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 1280000http://example, com/low. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 2560000http: //example, com/mid. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = I, BANDWIDTH = 7680000http: //example, com/hi. m3u8#EXT-X-STREAM-INF: PROGRAM-ID = 1,BANDWIDTH = 65000,CODECS ="mp4a. 40. 5 "http://example, com/audio-only. m3u8_圖7是在此所述的用于組裝的流的重放技術(shù)的一種實(shí)施方式的流程圖。在一種實(shí)施例中,所接收到的媒體文件的重放可以由用戶控制,來(lái)開始、停止、倒轉(zhuǎn)等等。在操作700 中,播放列表文件由客戶端設(shè)備接收。在操作710中,由該播放列表文件指示的媒體文件被檢索。在操作720中,基于所接收到的媒體文件生成輸出。接收媒體文件并基于媒體文件生成輸出可以如上所述來(lái)實(shí)現(xiàn)。如果在操作730中檢測(cè)到控制輸入,則在操作740中客戶端設(shè)備可以確定輸入是否指示停止。如果輸入是停止,則過(guò)程結(jié)束且重放停止。如果在操作750中輸入指示倒轉(zhuǎn)或者快進(jìn)請(qǐng)求,則在操作760中客戶端設(shè)備可以基于仍然存儲(chǔ)在存儲(chǔ)器中的、先前播放的媒體文件生成輸出。如果這些文件不再在高速緩沖存儲(chǔ)器中,則處理返回操作710,以檢索媒體文件并重復(fù)該過(guò)程。在可選實(shí)施例中,重放可以支持暫停特征,對(duì)于停止輸入,該暫停特征中斷重放但不結(jié)束重放。進(jìn)一步參考圖9A-9D描述用于從一個(gè)流過(guò)渡到另一個(gè)流的方法。一個(gè)客戶端設(shè)備可以執(zhí)行這些方法中的每一個(gè),或者這些方法中每一個(gè)的操作可以分布在多個(gè)客戶端設(shè)備上,如在此所描述的那樣;例如,在分布式情況下,一個(gè)客戶端設(shè)備可以檢索變體播放列表和兩個(gè)媒體播放列表,并將那些提供給另一個(gè)客戶端設(shè)備,該另一個(gè)客戶端設(shè)備檢索由這兩個(gè)媒體播放列表指定的媒體文件并在由所檢索到的媒體文件提供的兩個(gè)流之間切換。還應(yīng)當(dāng)理解,在可選實(shí)施例中,所示操作的次序可以被修改或者可以有比這些圖中所示的操作更多或更少的操作。所述方法可以使用變體播放列表來(lái)選擇不同的流。變體播放列表可以在操作901中檢索并處理,以確定用于節(jié)目(例如,體育賽事)的可用流。操作901可以由客戶端設(shè)備進(jìn)行。第一個(gè)流可以在操作903中從變體播放列表中選擇,然后客戶端設(shè)備可以檢索用于該第一個(gè)流的媒體播放列表。客戶端設(shè)備可以在操作905中處理用于該第一個(gè)流的媒體播放列表而且還在操作907中測(cè)量或以別的方式確定用于該第一個(gè)流的網(wǎng)絡(luò)連接的位速率。應(yīng)當(dāng)認(rèn)識(shí)到,操作序列可以以不同于圖9A中所示的次序執(zhí)行;例如,操作 907可以在操作903執(zhí)行的過(guò)程中執(zhí)行,等等。在操作911中,客戶端設(shè)備基于從操作907 測(cè)量到的位速率從變體播放列表中選擇可選媒體播放列表;這個(gè)可選媒體播放列表可以具有大于第一個(gè)流的現(xiàn)有位速率的第二位速率。這一般意味著該可選流將具有比第一個(gè)流更高的分辨率?;诋?dāng)前條件(例如,操作907中所測(cè)量的位速率),如果可選媒體播放列表是比用于第一個(gè)流的當(dāng)前播放列表更好的匹配,則可以選擇該可選媒體播放列表。在操作 913中,用于可選流的該可選媒體播放列表被檢索并處理。這一般意味著客戶端設(shè)備可以接收并處理第一個(gè)流和該可選的流,因此,這兩個(gè)流都可以用于呈現(xiàn);一個(gè)流被呈現(xiàn),而另一個(gè)流準(zhǔn)備好被呈現(xiàn)。然后,客戶端設(shè)備選擇過(guò)渡點(diǎn)來(lái)在操作915中流的版本之間進(jìn)行切換并且停止呈現(xiàn)第一個(gè)流而開始呈現(xiàn)可選的流。這種切換如何實(shí)現(xiàn)的例子結(jié)合圖9B-9D來(lái)提供。在有些實(shí)施例中,客戶端設(shè)備可以在進(jìn)行切換之前停止接收第一個(gè)流。圖9B顯示在操作921和923中客戶端設(shè)備檢索、存儲(chǔ)并呈現(xiàn)由第一個(gè)媒體播放列表所指定的內(nèi)容(例如,第一個(gè)流),而且在正呈現(xiàn)由第一個(gè)播放列表所指定的內(nèi)容的同時(shí),客戶端設(shè)備還在操作925中檢索并存儲(chǔ)由第二個(gè)媒體播放列表指定的內(nèi)容(例如,第二個(gè)流)。在呈現(xiàn)從第一個(gè)媒體播放列表所獲得的內(nèi)容的同時(shí)由第二個(gè)媒體播放列表所指定的內(nèi)容(例如,在臨時(shí)緩沖器中的內(nèi)容)的檢索和存儲(chǔ)創(chuàng)建了節(jié)目?jī)?nèi)容在時(shí)間上的重疊 (圖9D中所示),這允許客戶端設(shè)備在節(jié)目的版本之間進(jìn)行切換,而沒有節(jié)目的實(shí)質(zhì)性中斷。以這種方式,節(jié)目版本之間的切換可以在許多情況下實(shí)現(xiàn),而用戶不會(huì)注意到切換已經(jīng)發(fā)生了(盡管在有些情況下用戶可能注意到在切換之后分辨率更高的圖象)或者而沒有節(jié)目的呈現(xiàn)中的實(shí)質(zhì)性中斷。在操作927中,客戶端設(shè)備確定了過(guò)渡點(diǎn),在這個(gè)點(diǎn)從由第一個(gè)媒體播放列表指定的內(nèi)容切換到由第二個(gè)媒體播放列表指定的內(nèi)容;過(guò)渡點(diǎn)的例子(過(guò)渡點(diǎn)959)在圖9D中示出。然后,在切換之后,由第二個(gè)媒體播放列表指定的內(nèi)容在操作931 中被呈現(xiàn)。圖9C和9D中所不的方法代表用于確定過(guò)渡點(diǎn)的一種實(shí)施方式;這種實(shí)施方式依賴于對(duì)來(lái)自兩個(gè)流951和953的音頻樣本的模式匹配來(lái)確定過(guò)渡點(diǎn)。應(yīng)當(dāng)認(rèn)識(shí)到,可選實(shí)施例可以使用對(duì)視頻樣本的模式匹配或者可以使用兩個(gè)流中的時(shí)間戳等來(lái)確定過(guò)渡點(diǎn)。該方法可以包括在操作941中將由第一個(gè)媒體播放列表指定的內(nèi)容(例如,流951)存儲(chǔ)到緩沖器中;該緩沖器可以用于內(nèi)容的呈現(xiàn)而且還可以用于模式匹配操作。流951同時(shí)包括音頻樣本951A和視頻樣本951B。視頻樣本可以使用壓縮技術(shù),該壓縮技術(shù)依賴于具有顯示單個(gè)視頻幀所需的所有內(nèi)容的i幀或者關(guān)鍵幀。流951中的內(nèi)容可以包括指定時(shí)間(例如,從節(jié)目開始以來(lái)所經(jīng)過(guò)的時(shí)間)的時(shí)間戳,而且這些時(shí)間戳可以標(biāo)志每個(gè)樣本的開始(例如, 每個(gè)音頻樣本951A的開始和每個(gè)視頻樣本951B的開始)。在有些情況下,兩個(gè)流之間時(shí)間戳的比較對(duì)于確定過(guò)渡點(diǎn)可能是沒有用的,因?yàn)樗鼈兛赡懿粔蚓_或者因?yàn)閮蓚€(gè)流中樣本邊界的不同;但是,時(shí)間戳范圍的比較可以用于驗(yàn)證在兩個(gè)流之間存在時(shí)間上的重疊955。 在操作943中,客戶端設(shè)備在緩沖器中存儲(chǔ)由第二個(gè)媒體播放列表指定的內(nèi)容;這個(gè)內(nèi)容用于與從第一個(gè)媒體播放列表所獲得的內(nèi)容相同的節(jié)目而且它也可以包括時(shí)間戳。在一種實(shí)施例中,如果在一個(gè)流中不存在時(shí)間戳,則該時(shí)間戳可以被添加到用于流的播放列表;例如,在一種實(shí)施例中,包括一個(gè)或多個(gè)時(shí)間戳的ID3標(biāo)簽可以被加到播放列表中的條目,所述播放列表諸如是變體播放列表或者媒體播放列表。條目可以是例如用于音頻流的第一樣本的URI。圖9D示出了從第二個(gè)媒體播放列表中獲得的內(nèi)容953的例子,其包括音頻樣本 953A和視頻樣本953B。在操作945中,客戶端設(shè)備可以對(duì)兩個(gè)流951和953中的音頻樣本執(zhí)行模式匹配,來(lái)從重疊955中選擇過(guò)渡點(diǎn)959,在一種實(shí)施例中,過(guò)渡點(diǎn)959可以是在匹配的音頻片段(例如,片段957)之后的下一個(gè)自包含視頻幀(例如,i-幀961)。從i-幀 961 (及其相關(guān)聯(lián)的音頻樣本)開始,節(jié)目的呈現(xiàn)使用從第二個(gè)媒體播放列表獲得的第二個(gè)流。在一種實(shí)施例中,以上方法可以既用于從較慢位速率到較快位速率的變化,又可以用于從較快位速率到較慢位速率的變化,但是在另一種實(shí)施例中,該方法只能用于從較慢位速率到較快位速率的變化,而另一種方法(例如,不嘗試定位過(guò)渡點(diǎn)而是嘗試盡可能快地存儲(chǔ)并呈現(xiàn)來(lái)自較慢位速率的內(nèi)容)可以用于從較快位速率到較慢位速率的變化。圖10是用于提供多個(gè)冗余位置的技術(shù)的一種實(shí)施方式的流程圖,其中多個(gè)冗余位置用于利用可選的流向客戶端設(shè)備提供播放列表或媒體內(nèi)容或這二者。如果播放列表包含如上所討論的可選流,則該可選流可以不僅操作作為帶寬或者設(shè)備替換物,而且可以操作作為故障降級(jí)(failure fallback)。例如,如果客戶端不能重新加載用于流的播放列表文件(例如,由于404錯(cuò)誤或者網(wǎng)絡(luò)連接錯(cuò)誤),則客戶端可以嘗試切換到該可選的流。參考圖10,為了實(shí)現(xiàn)故障保護(hù),第一服務(wù)器設(shè)備或者第一內(nèi)容分發(fā)服務(wù)被配置成在操作1002 中創(chuàng)建流或者多個(gè)可選帶寬流,如結(jié)合圖2C的描述所討論過(guò)的。在操作1004,第一服務(wù)器設(shè)備或者第一內(nèi)容分發(fā)服務(wù)根據(jù)操作1002中生成的流(一個(gè)或多個(gè)),生成播放列表文件 (一個(gè)或多個(gè))。在操作1006中,第二服務(wù)器設(shè)備或者第二內(nèi)容分發(fā)服務(wù)可以創(chuàng)建并行的流或者流的集合,并且也創(chuàng)建播放列表。這些并行的流(一個(gè)或多個(gè))可以看作備份流。接下來(lái),在操作1008中,備份流的列表被加到播放列表文件(一個(gè)或多個(gè)),因此,每個(gè)帶寬的備份流(一個(gè)或多個(gè))都在主流之后被列出。例如,如果主流來(lái)自服務(wù)器ALPHA而備份流在服務(wù)器BETA上,則播放列表文件可能如下所示#EXTM3U#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 200000http://ALPHA, mycompany. com/low/prog index. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 200000http://BETA, mycompany. com/low/prog index. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 500000http://ALPHA, mycompany. com/mid/prog index. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 500000http://BETA, mycompany. com/mid/prog index. m3u8應(yīng)當(dāng)指出,備份流在播放列表中與主流混合在一起,每個(gè)帶寬的備份都在該帶寬的主流之后被列出??蛻舳瞬幌抻趩蝹€(gè)備份流集合。例如,在以上的例子中,ALPHA和BETA 后面可以跟著GAMMA。類似地,不一定要提供完整的并行流集合。例如,可以在備份服務(wù)器上提供單個(gè)低帶寬流。在操作1010中,客戶端嘗試從第一個(gè)URL利用與第一服務(wù)器設(shè)備或者第一內(nèi)容分發(fā)服務(wù)關(guān)聯(lián)的第一個(gè)流下載播放列表文件(一個(gè)或多個(gè))。圖11說(shuō)明了根據(jù)一種實(shí)施方式的一種網(wǎng)絡(luò),其中客戶端1102與一個(gè)或多個(gè)URL、服務(wù)器設(shè)備或內(nèi)容分發(fā)服務(wù)雙向通信。在操作1012中,播放列表文件(一個(gè)或多個(gè))可以從第一個(gè)URL、服務(wù)器設(shè)備或者內(nèi)容分發(fā)服務(wù)發(fā)送到客戶端1102。如果客戶端不能夠從第一個(gè)URL、服務(wù)器設(shè)備或者內(nèi)容分發(fā)服務(wù)下載播放列表文件(一個(gè)或多個(gè))(例如,由于重新加載用于流的索引文件時(shí)的錯(cuò)誤),則客戶端嘗試切換到可選的流。在一個(gè)流發(fā)生故障(例如,索引加載故障)(例如,操作1010)的情況下,客戶端在操作1014中選擇網(wǎng)絡(luò)連接支持的最高帶寬的可選流。如果在相同的帶寬上有多個(gè)可選流,則客戶端以播放列表中所列出的次序在它們中間進(jìn)行選擇。例如,如果客戶端1102不能成功地從URL I下載,則它可以從URL 2或者另一個(gè)URL下載,在這種情況下,將播放列表文件(一個(gè)或多個(gè))從該可選的URL發(fā)送到客戶端。這個(gè)特征提供了冗余流,這就允許即使在嚴(yán)重本地故障,諸如服務(wù)器崩潰或者內(nèi)容分發(fā)節(jié)點(diǎn)停機(jī),的情況下媒體也能到達(dá)客戶端。故障保護(hù)提供了提供多個(gè)冗余位置的能力,客戶端可以從這些位置檢索播放列表和媒體文件。因此,如果客戶端不能從第一個(gè)位置檢索到流,它就可以嘗試從次級(jí)、第三級(jí)等的位置訪問(wèn)流。在一種實(shí)施例中,為了指示客戶端可以從其檢索播放列表的附加位置,將為相同的變體播放列表標(biāo)簽提供相同的帶寬,但提供冗余位置的新URI。客戶端最初可以嘗試訪問(wèn)與期望帶寬關(guān)聯(lián)的第一 URL。如果它不能從該第一 URL下載播放列表,它就可嘗試訪問(wèn)為該帶寬給出的下一個(gè)URL,等等,直到其耗盡了所有的可能性。以下例子包括用于2560000帶寬的I個(gè)冗余位置和用于7680000帶寬的2個(gè)冗余位置。
      #EXTM3U#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 1280000http://example, com/low. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 2560000http: //example, com/mid. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 2560000http://exampleI. com/mid~redundant2. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 7680000http: //example, com/hi. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 7680000http://exampIe2. com/hi-redudant2. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 7680000http://exampIe3. com/hi-redudant3. m3u8#EXT-X-STREAM-INF: PROGRAM-ID = 1,BANDWIDTH = 65000,CODECS ="mp4a. 40. 5 "http://example, com/audio-only. m3u8應(yīng)當(dāng)指出,在這個(gè)例子中,文件名(例如,mid_redundant2. m3u8)和實(shí)際的URL(例如,http ://example2. com<http://exampIe2. com/>, http ://example3.com<http:// examp I e3. com/ 都可以改變。但是,在一種實(shí)施例中,冗余位置可以只對(duì)文件名或者只對(duì)網(wǎng)址進(jìn)行改變。在一種實(shí)施例中,播放列表可以由服務(wù)器設(shè)備壓縮并以壓縮形式發(fā)送到客戶端設(shè)備。壓縮的播放列表比未壓縮的播放列表通常需要更少的用來(lái)表示播放列表的位,而且因此,當(dāng)被發(fā)送或接收時(shí),壓縮的播放列表使用更少的諸如無(wú)線蜂窩電話網(wǎng)絡(luò)之類的網(wǎng)絡(luò)的可用帶寬。在一種實(shí)施例中,播放列表可以由網(wǎng)絡(luò)服務(wù)器根據(jù)內(nèi)置的壓縮技術(shù)或者網(wǎng)絡(luò)服務(wù)器使用的工具來(lái)壓縮,其中該壓縮技術(shù)與諸如HTTP I. I標(biāo)準(zhǔn)協(xié)議之類的傳輸協(xié)議兼容或者可以與其兼容;這種壓縮技術(shù)或者工具的例子是HTTP I. I的deflate或者gzip壓縮工具?;谄渌鼧?biāo)準(zhǔn)的、作為基于標(biāo)準(zhǔn)的傳輸協(xié)議的一部分的壓縮工具可以在其它實(shí)施例中使用。在一種實(shí)施例中,壓縮的播放列表的使用可以是服務(wù)器設(shè)備和客戶端設(shè)備的可選特征。在一種實(shí)施例中,播放列表可以是文本內(nèi)容(例如,文本文件),而且可以由基于標(biāo)準(zhǔn)的網(wǎng)絡(luò)服務(wù)器利用deflate或者gzip來(lái)有效地壓縮,然后由客戶端設(shè)備自動(dòng)解壓。一個(gè)版本的gzip壓縮工具的描述可以在www. ietf. orR/rfc/rfcl952. txt找到;一個(gè)版本的 deflate壓縮工具可以在www. ietf. orR/rfc/rfcl951. txt找到。許多網(wǎng)絡(luò)服務(wù)器和客戶端設(shè)備上的許多網(wǎng)絡(luò)瀏覽器都可以自動(dòng)地支持deflate或者gzip工具。在一種實(shí)施例中,客戶端設(shè)備可以周期性地請(qǐng)求更新的播放列表;例如,客戶端可以每幾秒鐘(例如,每10、20或者30秒或者某個(gè)其它時(shí)段)從服務(wù)器請(qǐng)求更新的播放列表。不斷增長(zhǎng)的播放列表,諸如用于正在實(shí)況進(jìn)行的棒球比賽的播放列表,可能變得足夠大而使得當(dāng)不斷增長(zhǎng)的播放列表通過(guò)網(wǎng)絡(luò)重復(fù)發(fā)送時(shí)壓縮的使用可以限制網(wǎng)絡(luò)帶寬的消耗, 其中不斷增長(zhǎng)的播放列表允許客戶在實(shí)況比賽期間的任何時(shí)刻從實(shí)況比賽的開始觀看。在一種實(shí)施例中,客戶端設(shè)備可以可選地在其請(qǐng)求播放列表(諸如更新的播放列表)時(shí)指定它可以支持什么壓縮技術(shù)(諸如deflate或者gzip);對(duì)這些技術(shù)的支持意味著客戶端設(shè)備可以解壓或者解碼壓縮或者編碼的內(nèi)容。帶有對(duì)壓縮技術(shù)的可選指定的客戶端設(shè)備對(duì)播放列表的請(qǐng)求由網(wǎng)絡(luò)服務(wù)器接收,在一種實(shí)施例中,該網(wǎng)絡(luò)服務(wù)器不需要支持用于播放列表的壓縮技術(shù)而是可以發(fā)送未壓縮的播放列表。網(wǎng)絡(luò)服務(wù)器可以通過(guò)向客戶端設(shè)備發(fā)送未壓縮的播放列表或者利用在客戶端設(shè)備對(duì)播放列表的請(qǐng)求中所指定的壓縮技術(shù)之一壓縮的播放列表來(lái)響應(yīng)客戶端設(shè)備的請(qǐng)求??蛻舳嗽O(shè)備接收該播放列表并如在此所述的那樣使用它;如果該播放列表是壓縮的,則在客戶端設(shè)備上利用解碼器(諸如,客戶端設(shè)備上網(wǎng)絡(luò)瀏覽器中的解碼器)來(lái)解碼。圖8是電子系統(tǒng)的一種實(shí)施方式的框圖。圖8中所說(shuō)明的電子系統(tǒng)是要代表一個(gè)范圍內(nèi)的電子系統(tǒng)(有線的或者無(wú)線的),包括例如桌面計(jì)算機(jī)系統(tǒng)、膝上計(jì)算機(jī)系統(tǒng)、蜂窩電話、包括蜂窩使能的PDA在內(nèi)的個(gè)人數(shù)字助理(PDA)、機(jī)頂盒、娛樂系統(tǒng)或者其它消費(fèi)電子設(shè)備??蛇x的電子系統(tǒng)可以包括更多、更少和/或不同的部件。圖8的電子系統(tǒng)可以用于提供客戶端設(shè)備和/或服務(wù)器設(shè)備。電子系統(tǒng)800包括總線805或者用于傳送信息的其它通信設(shè)備及耦合到總線805 的可以處理信息的處理器810。盡管電子系統(tǒng)800被說(shuō)明為具有單個(gè)處理器,但是電子系統(tǒng) 800也可以包括多個(gè)處理器和/或協(xié)處理器。電子系統(tǒng)800還可以包括耦合到總線805并且可以存儲(chǔ)信息和可以由處理器810執(zhí)行的指令的隨機(jī)存取存儲(chǔ)器(RAM)或者其它動(dòng)態(tài)存儲(chǔ)設(shè)備820 (稱為主存儲(chǔ)器)。主存儲(chǔ)器820還可以用于存儲(chǔ)臨時(shí)變量或者處理器810執(zhí)行指令過(guò)程中的其它中間信息。電子系統(tǒng)800還可以包括耦合到總線805的可以存儲(chǔ)靜態(tài)信息和用于處理器810 的指令的只讀存儲(chǔ)器(ROM)和/或其它靜態(tài)存儲(chǔ)設(shè)備830。數(shù)據(jù)存儲(chǔ)設(shè)備840可以耦合到總線805,來(lái)存儲(chǔ)信息和指令。諸如閃存存儲(chǔ)器或者磁盤或者光盤的數(shù)據(jù)存儲(chǔ)設(shè)備840及對(duì)應(yīng)的驅(qū)動(dòng)器可以耦合到電子系統(tǒng)800。電子系統(tǒng)800還可以經(jīng)總線805耦合到顯示設(shè)備850,諸如陰極射線管(CRT)或者液晶顯示器(LCD),來(lái)向用戶顯示信息。電子系統(tǒng)800還可以包括字母數(shù)字輸入設(shè)備860, 其包括字母數(shù)字和其它鍵,該輸入設(shè)備860可以耦合到總線805,以便向處理器810傳送信息和命令選擇。另一種類型的用戶輸入設(shè)備是光標(biāo)控制部件870,諸如觸摸板、鼠標(biāo)、軌跡球或者光標(biāo)方向鍵,用來(lái)向處理器810傳送方向信息和命令選擇并控制顯不器850上的光標(biāo)運(yùn)動(dòng)。電子系統(tǒng)800還可以包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口 880,來(lái)提供對(duì)諸如局域網(wǎng)之類的網(wǎng)絡(luò)的訪問(wèn)。網(wǎng)絡(luò)接口(一個(gè)或多個(gè))880可以包括例如具有天線885的無(wú)線網(wǎng)絡(luò)接口, 其中天線885可以代表一個(gè)或多個(gè)天線。電子系統(tǒng)800可以包括多個(gè)無(wú)線網(wǎng)絡(luò)接口,諸如 WiFi、藍(lán)牙和蜂窩電話接口的組合。網(wǎng)絡(luò)接口(一個(gè)或多個(gè))880還可以包括例如有線網(wǎng)絡(luò)接口,以便經(jīng)網(wǎng)絡(luò)電纜887與遠(yuǎn)端設(shè)備通信,其中網(wǎng)絡(luò)電纜887可以是例如以太電纜、同軸電纜、光纖電纜、串行電纜或者并行電纜。在一種實(shí)施例中,例如通過(guò)遵循IEEE 802. Ilb和/或IEEE 802. I Ig標(biāo)準(zhǔn),網(wǎng)絡(luò)接口( 一個(gè)或多個(gè))880可以提供對(duì)局域網(wǎng)的訪問(wèn),和/或例如通過(guò)遵循藍(lán)牙標(biāo)準(zhǔn),無(wú)線網(wǎng)絡(luò)接口可以提供對(duì)私域網(wǎng)的訪問(wèn)。也可以支持其它無(wú)線網(wǎng)絡(luò)接口和/或協(xié)議。 除經(jīng)無(wú)線LAN標(biāo)準(zhǔn)的通信之外或者代替該通信,網(wǎng)絡(luò)接口( 一個(gè)或多個(gè))880可以利用例如時(shí)分多址(TDMA)協(xié)議、全球移動(dòng)通信系統(tǒng)(GSM)協(xié)議、碼分多址(CDMA)協(xié)議和/ 或其它類型的無(wú)線通信協(xié)議來(lái)提供無(wú)線通信。本說(shuō)明書中對(duì)“一種實(shí)施例”或者“實(shí)施例”的引用意味著結(jié)合該實(shí)施例所描述的特定特征、結(jié)構(gòu)或者特性包括在本發(fā)明的至少一種實(shí)施例中。本說(shuō)明書各個(gè)位置出現(xiàn)的術(shù)語(yǔ)“在一種實(shí)施例中”不一定全指的是同一實(shí)施例。在以上的說(shuō)明中,已經(jīng)參考本發(fā)明的特定實(shí)施例描述本發(fā)明。但是,很顯然,在不背離本發(fā)明更廣泛的主旨與范圍的情況下,可以對(duì)其進(jìn)行各種修改與變化。說(shuō)明書與附圖相應(yīng)地應(yīng)該從說(shuō)明性的意義而不是約束性的意義上看待。附錄以下附錄是根據(jù)本發(fā)明的特定實(shí)施方式的協(xié)議的草稿規(guī)范。應(yīng)當(dāng)理解,本附錄中某些關(guān)鍵詞(例如,必須、不準(zhǔn)、將、不將,等等)的使用適用于這種特定實(shí)施方式而不適用于本公開內(nèi)容中所描述的其它實(shí)施方式。摘要本文檔描述了用于經(jīng)由HTTP發(fā)送無(wú)限制的多媒體數(shù)據(jù)流的一種協(xié)議。它規(guī)定了文件的數(shù)據(jù)格式和流的服務(wù)器(發(fā)送方)與客戶端(接收方)要采取的動(dòng)作。本文檔描述了這種協(xié)議的I. O版本。內(nèi)容列表
      I.介紹
      2.概述
      3.播放列表文件
      3.I新標(biāo)簽
      3.I.I EXT-X-TARGETDURATION
      3.I.2 EXT-X-MEDIA-SEQUENCE
      3.I.3 EXT-X-KEY
      3.I.4 EXT-X-PROGRAM-DATE-TIME
      3.I.5 EXT-X-ALLOff-CACHE
      3.I.6 EXT-X-ENDLIST
      3.I.7 EXT-X-STREAM-INF
      3.I.8 EXT-X-DISCONTINUITY
      4.媒體文件
      5.密鑰文件
      5.I 用于 AES-128 的 IV
      6.客戶端/服務(wù)器動(dòng)作
      6. I服務(wù)器處理過(guò)程
      6. I. I滑動(dòng)窗口播放列表
      6. I. 2加密媒體文件
      6. 1.3提供變體流
      6. 2客戶端處理過(guò)程
      6. 2. I加載播放列表文件
      6. 2. 2播放播放列表文件
      6.2.3重新加載播放列表文件
      6. 2. 4確定要加載的下一個(gè)文件
      6. 2. 5播放加密的媒體文件
      7.例子
      7. I簡(jiǎn)單的播放列表文件
      7. 2滑動(dòng)窗口播放列表,利用HTTPS
      7. 3具有加密媒體文件的播放列表文件
      7. 4變體播放列表文件
      8.安全考慮
      9.參考
      引用標(biāo)準(zhǔn)
      引用信息
      I.介紹
      本文檔描述了用于經(jīng)HTTP發(fā)送無(wú)限制的多媒體數(shù)據(jù)流的一種協(xié)議[RFC2616]。該協(xié)議支持媒體數(shù)據(jù)的加密,及流的替換版本(例如,位速率)的提供。媒體文件可以在其被創(chuàng)建之后很快發(fā)送,以便允許其接近實(shí)時(shí)地被接收。
      描述諸如HTTP之類的相關(guān)標(biāo)準(zhǔn)的外部參考在第9部分中列出。
      2.概述
      多媒體呈現(xiàn)是由到播放列表文件的URL[RFC3986]指定的,該播放列表文件是附加URI的有序列表。播放列表文件中的每個(gè)URI都指示作為單個(gè)連續(xù)流的一個(gè)片段的媒體文件。
      為了播放流,客戶端首先獲得播放列表文件,然后獲得并播放該播放列表中的每個(gè)媒體文件。如在本文檔中所描述的那樣,它重新加載播放列表文件,以便發(fā)現(xiàn)附加的片段。
      本文檔中的關(guān)鍵字“必須”、“不準(zhǔn)”、“所請(qǐng)求的”、“將”、“不將”、“應(yīng)當(dāng)”、“不應(yīng)當(dāng)”、“推薦的’“可以”和“可選的”要如在RFC2119[RFC2119]中所描述的那樣來(lái)解釋。
      3.播放列表文件
      播放列表必須是擴(kuò)展的M3U播放列表文件[M3U]。本文檔通過(guò)定義附加的標(biāo)簽來(lái)擴(kuò)展M3U文件格式。
      M3U播放列表是包括多個(gè)單行的文本文件。行由單個(gè)LF字符或者CR字符后面跟著LF字符來(lái)終止。每一行都是URI、空行或者以注釋字符開始。URI識(shí)別要播放的媒體文件。空行被忽略。
      以注釋字符“#”開始的行是注釋或者標(biāo)簽。標(biāo)簽以#EXT開始。所有其它以“#”
      開始的行都是注釋而且應(yīng)當(dāng)被忽略。其名字以.m3u8結(jié)尾和/或具有HTTP內(nèi)容類型“application/vnd. apple, mpegurl”的M3U播放列表文件是以UTF-8編碼的[RFC3629]。其名字以.m3u結(jié)尾和/或具有 HTTP 內(nèi)容類型 “audio/mpegurl” [RFC2616]的文件是以 US-ASCII 編碼的[US_ASCII]。實(shí)現(xiàn)應(yīng)當(dāng)產(chǎn)生其名字以.m3u8結(jié)尾或者,如果經(jīng)HTTP發(fā)送的話,具有內(nèi)容類型“application/vnd. apple, mpegurl”的播放列表文件。為了兼容,實(shí)現(xiàn)可以產(chǎn)生其名字以.m3u結(jié)尾和/或具有HTTP內(nèi)容類型“audio/mpegurl”的播放列表文件。擴(kuò)展M3U文件格式定義了兩個(gè)標(biāo)簽EXTM3U和EXTINF。擴(kuò)展M3U文件與基本M3U 文件通過(guò)其第一行區(qū)分開,擴(kuò)展M3U文件的第一行必須是#EXTM3U。EXTINF是描述由跟在其后面的URI識(shí)別的媒體文件的記錄標(biāo)記。每個(gè)媒體文件 URI前面必須是EXTINF標(biāo)簽。其格式為#EXTINF:〈持續(xù)時(shí)間〉,〈標(biāo)題〉“持續(xù)時(shí)間”是以秒為單位的指定媒體文件的持續(xù)時(shí)間的整數(shù)。持續(xù)時(shí)間應(yīng)當(dāng)近似到最接近的整數(shù)。逗號(hào)之后行的剩余部分是媒體文件的標(biāo)題。3. I新標(biāo)簽本文檔定義了七個(gè)新標(biāo)簽EXT-X-TARGETDURATION、EXT-X-MEDIA-SEQUENCE, EXT-X-KEY、EXT-X-PROGRAM-DATE-TIME、EXT-X-ALLOW-CACHE、EXT-X-STREAM-INF 和 EXT-X-ENDLIST。3. I. I EXT-X-TARGETDURAT I ONEXT-X-TARGETDURATION標(biāo)簽指示將添加到主呈現(xiàn)的下一個(gè)媒體文件的近似持續(xù)時(shí)間。它必須出現(xiàn)在播放列表文件中。其格式為#EXT-X-TARGETDURAT I ON :〈秒〉媒體文件的實(shí)際持續(xù)時(shí)間可以與目標(biāo)持續(xù)時(shí)間稍有不同。3. I. 2 EXT-X-MEDIA-SEQUENCE播放列表中的每個(gè)媒體文件URI都具有唯一的序列號(hào)。URI的序列號(hào)等于其前面的URI的序列號(hào)加一。EXT-X-MEDIA-SEQUENCE標(biāo)簽指示出現(xiàn)在播放列表文件中的第一個(gè) URI的序列號(hào)。其格式為#EXT-X-MEDIA-SEQUENCE :〈編號(hào)〉如果播放列表文件不包含EXT-X-MEDIA-SEQUENCE標(biāo)簽,則播放列表中第一個(gè)URI 的序列號(hào)應(yīng)當(dāng)被認(rèn)為是I。關(guān)于處理EXT-X-MEDIA-SEQUENCE標(biāo)簽的信息,見部分6. 2. I和部分6. 2. 4。3. I. 3 EXT-X-KEY媒體文件可以被加密。EXT-X-KEY標(biāo)簽提供了解密跟在其后面的媒體文件所必需的信息。其格式為#EXT-X-KEY:METHOD = < 方法 >[,URI = " <URI>"]METHOD參數(shù)指定了加密方法。URI參數(shù),如果存在的話,指定如何獲得密鑰。本協(xié)議的I. O版本定義了兩種加密方法Ν0ΝΕ和AES-128。為NONE的加密方法意味著媒體文件不加密。AES-128的加密方法意味著媒體文件是利用具有128位密鑰和PKCS7填充符的高級(jí)加密標(biāo)準(zhǔn)[AES_128]加密的[RFC3852]。新的EXT-X-KEY代替任何之前的EXT-X-KEY。如果不存在EXT-X-KEY標(biāo)簽,則媒體文件是不加密的。對(duì)于密鑰文件的格式,見部分5和部分5. I。對(duì)于關(guān)于媒體文件加密的附加信息,見部分6. I. 2和部分6. 2. 5。
      3. I. 4 EXT-X-PROGRAM-DATE-TIMEEXT-X-PROGRAM-DATE-TIME標(biāo)簽將下一個(gè)媒體文件的開始與絕對(duì)日期和/或時(shí)間關(guān)聯(lián)。日期/時(shí)間表示是IS0/IEC8601:2004[IS0_8601]而且應(yīng)當(dāng)指示時(shí)區(qū)。例如#EXT-X-PROGRAM-DATE-TIME <YYYY-MM-DDThh: mm: ssZ>3. I. 5 EXT-X-ALLOff-CACHEEXT-X-ALLOff-CACHE標(biāo)簽指示客戶端是否可以高速緩沖下載的媒體文件以供以后重放。其格式為#EXT-X-ALLOff-CACHE 〈YES | NO〉3. I. 6EXT-X-ENDLISTEXT-X-ENDLIST標(biāo)簽指示不再有媒體文件將添加到播放列表文件。其格式為#EXT-X-ENDLIST3. I. 7 EXT-X-STREAM-INFEXT-X-STREAM-INF標(biāo)簽指示播放列表文件中識(shí)別另一個(gè)播放列表文件的下一個(gè) URI。其格式為#EXT-X-STREAM-INF :[屬性=值][,屬性=值]* <URI>以下屬性是為EXT-X-STREAM-INF標(biāo)簽定義的BANDWIDTH = <n>其中η是流位速率的近似上限,表示為每秒的位數(shù)。PROGRAM-ID = <i>其中i是唯一識(shí)別播放列表文件范圍中的特定呈現(xiàn)的編號(hào)。播放列表文件可以包含具有相同PROGRAM-ID的多個(gè)EXT-X-STREAM-INF URI,用來(lái)描述相同呈現(xiàn)的變體流。CODECS = ” [格式][,格式]* ”其中每種格式指定播放列表文件中媒體文件中所呈現(xiàn)的媒體樣本類型。有效格式標(biāo)識(shí)符是由RFC 4281定義的ISO文件格式命名空間中的那些 [RFC4281]。3. I. 8 EXT-X-DISCONTINUITYEXT-X-DISCONTINUITY標(biāo)簽指示跟在其后面的媒體文件具有與其前面的媒體文件不同的特性??梢愿淖兊奶匦约鲜恰の募袷健ぼ壽E的個(gè)數(shù)與類型·編碼參數(shù)·編碼序列·時(shí)間戳序列其格式為#EXT-X-DISC0NTINUITY4.媒體文件播放列表文件中的每個(gè)媒體文件URI都必須識(shí)別作為整個(gè)呈現(xiàn)的一個(gè)片段的媒體文件。每個(gè)媒體文件必須被格式化為MPEG-2傳輸流、MPEG-2程序流或者M(jìn)PEG-2音頻基本流[IS0_13818]。一個(gè)呈現(xiàn)中的所有媒體文件都必須具有相同的格式。傳輸流文件必須包含單個(gè)MPEG-2節(jié)目。應(yīng)當(dāng)在每個(gè)文件的開始具有節(jié)目關(guān)聯(lián)表和節(jié)目映射表。包含視頻的文件應(yīng)當(dāng)具有至少一個(gè)關(guān)鍵幀和足夠的信息來(lái)完全初始化視頻解碼器??蛻魬?yīng)當(dāng)準(zhǔn)備好通過(guò)選擇合理的子集來(lái)處理特定類型(例如,音頻或視頻)的多個(gè)軌跡。客戶端必須忽略傳輸流中他們不能識(shí)別的私有流。用于媒體文件中的流中的樣本和在跨多個(gè)媒體文件的對(duì)應(yīng)流之間的樣本的編碼參數(shù)應(yīng)當(dāng)保持一致。但是,客戶端應(yīng)當(dāng)在遇到的時(shí)候處理編碼變化,例如通過(guò)縮放視頻內(nèi)容來(lái)適應(yīng)分辨率的變化。5.密鑰文件具有URI參數(shù)的EXT-X-KEY標(biāo)簽識(shí)別密鑰文件。密鑰文件包含必須用于解密播放列表中的后續(xù)媒體文件的密碼密鑰。AES-128加密方法使用16-八位字節(jié)密鑰。密鑰文件的格式簡(jiǎn)單地是這16個(gè)八位字節(jié)以二進(jìn)制格式的打包陣列。5. I 用于 AES-128 的 IV當(dāng)加密和解密時(shí),128位的AES需要提供相同的16個(gè)八位字節(jié)初始化向量(IV)。 改變這個(gè)IV將增加密碼的強(qiáng)度。當(dāng)使用加密方法AES-128時(shí),在加密或解密媒體文件時(shí),實(shí)現(xiàn)將使用媒體文件的序列號(hào)作為IV。序列號(hào)的大端(Big-Endian) 二進(jìn)制表示將被放到16-八位字節(jié)緩沖中并 (在左邊)用零填充。6.客戶端/服務(wù)器動(dòng)作這部分描述服務(wù)器如何生成播放列表和媒體文件及客戶端如何下載和播放它們。6. I服務(wù)器處理過(guò)程MPEG-2流的產(chǎn)生在本文檔的范圍之外,本文檔簡(jiǎn)單地假定包含主呈現(xiàn)的持續(xù)流的源。服務(wù)器必須將流分成持續(xù)時(shí)間大致相等的各單個(gè)媒體文件。服務(wù)器應(yīng)當(dāng)嘗試在支持單個(gè)媒體文件的有效解碼的點(diǎn)——例如在包和密鑰幀邊界——?jiǎng)澐至?。服?wù)器必須為每個(gè)媒體文件創(chuàng)建允許其客戶端獲得該文件的URI。服務(wù)器必須創(chuàng)建播放列表文件。播放列表文件必須遵循部分3中所述的格式。用于服務(wù)器希望使其可用的每個(gè)媒體文件的URI必須以其要被播放的次序出現(xiàn)在該播放列表中。如果其URI在播放列表文件中的話,整個(gè)媒體文件必須可被客戶獲得。播放列表文件必須包含EXT-X-TARGETDURATION標(biāo)簽。它必須指示下一個(gè)要添加到主呈現(xiàn)的媒體文件的大致持續(xù)時(shí)間。這個(gè)值必須對(duì)整個(gè)呈現(xiàn)保持恒定。典型的目標(biāo)持續(xù)時(shí)間是10秒鐘。服務(wù)器必須為播放列表文件創(chuàng)建將允許其客戶端獲得該文件的URI。必須使播放列表文件的改變從客戶的角度來(lái)看是極小的。播放列表中的每個(gè)媒體文件URI必須加前綴EXTINF標(biāo)簽,其指示媒體文件的大致持續(xù)時(shí)間。服務(wù)器可以通過(guò)用EXT-X-PROGRAM-DATE-HME標(biāo)簽做其URI的前綴而將絕對(duì)日期和時(shí)間與媒體文件關(guān)聯(lián)。所述日期和時(shí)間的值是任意的。如果播放列表包含呈現(xiàn)的最后一個(gè)媒體文件,則該播放列表必須包含 EXT-X-ENDLIST 標(biāo)簽。如果服務(wù)器希望去除整個(gè)呈現(xiàn),則它必須使該播放列表文件對(duì)客戶端不可用。在去除的時(shí)候,它應(yīng)當(dāng)確保播放列表文件中的所有媒體文件至少在播放列表文件的持續(xù)時(shí)間內(nèi)可被客戶獲得。6. I. I滑動(dòng)窗口播放列表服務(wù)器可以將媒體文件的可用性限制到最近添加到播放列表的那些。為此,播放列表文件必須總是確切地包含一個(gè)EXT-X-MEDIA-SEQUENCE標(biāo)簽。它的值必須對(duì)從播放列表文件去除的每個(gè)媒體文件URI遞增I。媒體文件URI必須以其被添加的次序從播放列表文件中去除。當(dāng)服務(wù)器從播放列表中去除媒體文件URI時(shí),媒體文件必須在至少等于媒體文件的持續(xù)時(shí)間加上該媒體文件在其中出現(xiàn)的最長(zhǎng)播放列表文件的持續(xù)時(shí)間的時(shí)段內(nèi)可被客戶獲得。播放列表文件的持續(xù)時(shí)間是其中媒體文件的持續(xù)時(shí)間之和。如果服務(wù)器計(jì)劃去除媒體文件,則它應(yīng)當(dāng)確保當(dāng)HTTP過(guò)期報(bào)頭在被傳送給客戶端時(shí)反映了所計(jì)劃的生存時(shí)間。除非存在EXT-X-ENDLIST標(biāo)簽,否則服務(wù)器必須在任何時(shí)候都在播放列表中維持至少三個(gè)主呈現(xiàn)媒體文件。6. I. 2加密媒體文件如果媒體文件要被加密,則服務(wù)器必須定義將允許授權(quán)客戶端獲得包含解密密鑰的密鑰文件的URI。該密鑰文件必須遵循部分5中所述的格式。服務(wù)器可以在密鑰響應(yīng)中設(shè)置過(guò)期報(bào)頭,以便指示該密鑰可以被高速緩沖。如果加密方法是AES-128,則AES-128CBC加密將被應(yīng)用到各單個(gè)媒體文件。整個(gè)文件必須被加密。不準(zhǔn)跨媒體文件應(yīng)用密碼塊鏈。媒體文件的序列號(hào)必須用作IV,如部分 5. I中所述。服務(wù)器必須利用由EXT-X-KEY標(biāo)簽指定的方法來(lái)加密播放列表中的每個(gè)媒體文件,其中EXT-X-KEY標(biāo)簽必須緊跟在播放列表文件中其URI之前。前面有其方法為NONE的 EXT-X-KEY標(biāo)簽的或者前面沒有任何EXT-X-KEY標(biāo)簽的媒體文件不準(zhǔn)加密。除非其方法為NONE,否則每個(gè)EXT-X-KEY標(biāo)簽的URI必須與出現(xiàn)在或者曾經(jīng)出現(xiàn)在播放列表文件中的每個(gè)其它EXT-X-KEY標(biāo)簽的URI區(qū)分開。方法為NONE的EXT-X-KEY 標(biāo)簽不準(zhǔn)包含URI參數(shù)。如果播放列表文件包含到利用那個(gè)密鑰加密的媒體文件的URI,則服務(wù)器不準(zhǔn)從播放列表文件中去除EXT-X-KEY標(biāo)簽。6. I. 3提供變體流服務(wù)器可以提供多個(gè)播放列表文件,以便提供相同呈現(xiàn)的不同編碼。如果它這么做,則它應(yīng)當(dāng)提供列出每個(gè)變體流的變體播放列表文件,以便允許客戶端在編碼之間動(dòng)態(tài)地切換。變體播放列表必須包含用于每個(gè)變體流的EXT-X-STREAM-INF標(biāo)簽。用于相同呈現(xiàn)的每個(gè)EXT-X-STREAM-INF標(biāo)簽必須具有相同的PROGRAM-ID屬性值。用于每個(gè)呈現(xiàn)的
      37PROGRAM-ID屬性值在變體播放列表中必須唯一。如果EXT-X-STREAM-INF標(biāo)簽包含CODECS屬性,則屬性值必須包括由[RFC4281] 定義的出現(xiàn)在或者將出現(xiàn)在播放列表文件中的任何媒體文件中存在的每種格式。當(dāng)產(chǎn)生變體流時(shí),服務(wù)器必須滿足以下約束每個(gè)變體流必須包括相同的內(nèi)容,包括不是主呈現(xiàn)的一部分的內(nèi)容。服務(wù)器必須使同一時(shí)段的內(nèi)容在流的最小目標(biāo)持續(xù)時(shí)間的精度內(nèi)對(duì)所有變體流都可用。匹配變體流中的內(nèi)容必須具有匹配時(shí)間戳。這允許客戶端同步各流?;疽纛l流文件必須通過(guò)預(yù)先計(jì)劃具有所有者標(biāo)識(shí)符“com. apple, streaming. transportStreamTimestamp”的ID3 PRIV標(biāo)簽[ID3]來(lái)信號(hào)通知文件中第一個(gè)樣本的時(shí)間戳。這個(gè)二進(jìn)制數(shù)據(jù)必須是表示為大端八個(gè)八位字節(jié)數(shù)字的33位的MPEG-2程序基本流時(shí)間戳。此外,所有變體流都應(yīng)當(dāng)包含相同的編碼音頻位流。這允許客戶端在流之間切換而沒有可以聽得見的干擾。6. 2客戶端處理過(guò)程客戶端如何獲得到播放列表文件的URI在本文檔的范圍之外;本文檔假設(shè)可以獲得。客戶端必須從URI獲得播放列表文件。如果這么獲得的播放列表文件是變體播放列表,則客戶端必須從變體播放列表中獲得播放列表文件。本文檔沒有指定客戶端對(duì)變體流的處理。6. 2. I加載播放列表文件每次從播放列表URI加載或者重新加載播放列表時(shí)客戶端應(yīng)當(dāng)檢查播放列表文件是以#EXTM3U開始而且如果不是就拒絕繼續(xù)??蛻舳藨?yīng)當(dāng)忽略其不認(rèn)識(shí)的任何標(biāo)簽??蛻舳吮仨毚_定要加載的下一個(gè)媒體文件,如部分6. 2. 4中所述。如果播放列表包含EXT-X-MEDIA-SEQUENCE標(biāo)簽,則客戶端應(yīng)當(dāng)假設(shè)其中的每個(gè)媒體文件都在播放列表文件被加載的時(shí)間加上播放列表文件的持續(xù)時(shí)間內(nèi)變得不可用。播放列表文件的持續(xù)時(shí)間是其中媒體文件的持續(xù)時(shí)間之和。6. 2. 2播放播放列表文件當(dāng)重放開始時(shí),客戶端將從播放列表中選擇要首先播放哪個(gè)媒體文件。如果播放列表文件包含EXT-X-ENDLIST標(biāo)簽,則播放列表中的任何文件都可以首先播放。如果不存在EXT-X-ENDLIST標(biāo)簽,則可以首先播放除播放列表中的最后一個(gè)文件和倒數(shù)第二個(gè)文件之外的任何文件。一旦已經(jīng)選擇了要播放的第一個(gè)媒體文件,播放列表中的后續(xù)媒體文件就必須以它們出現(xiàn)的次序來(lái)加載并以加載它們的次序來(lái)播放。為了不中斷的重放,客戶端應(yīng)當(dāng)嘗試在媒體文件被需要之前加載媒體文件,來(lái)補(bǔ)償?shù)却龝r(shí)間和吞吐率中的臨時(shí)變化。如果播放列表文件包含EXT-X-ALLOW-CACHE標(biāo)簽而且其值是NO,則客戶端不準(zhǔn)在播放其之后高速緩沖下載的媒體文件。否則,客戶端可以無(wú)限地高速緩沖下載的媒體文件以供以后重放。客戶端可以使用EXT-X-PROGRAM-DATE-HME標(biāo)簽的值來(lái)向用戶顯示節(jié)目起源時(shí)間。如果該值包括時(shí)區(qū)信息,則客戶端將考慮其,但是,如果不包括,則客戶端不準(zhǔn)推斷起源時(shí)區(qū)??蛻舳瞬粶?zhǔn)依賴EXT-X-PROGRAM-DATE-HME標(biāo)簽的值的正確性或者一致性。6. 2. 3重新加載播放列表文件客戶端必須周期性地重新加載播放列表文件,除非它包含EXT-X-ENDLIST標(biāo)簽。但是,客戶端不準(zhǔn)比由這部分所指定的更頻繁地嘗試重新加載播放列表文件。當(dāng)客戶端第一次加載播放列表文件或者重新加載播放列表文件并發(fā)現(xiàn)其從上次加載以后已經(jīng)有變化時(shí),客戶端必須在嘗試再次重新加載播放列表文件之前等待一段時(shí)間。這個(gè)時(shí)段稱為初始最小重新加載延遲。它是根據(jù)客戶端開始加載播放列表文件的時(shí)刻測(cè)量的。該初始最小重新加載延遲是播放列表中最后一個(gè)媒體文件的持續(xù)時(shí)間或者目標(biāo)持續(xù)時(shí)間的3倍,取兩者中較小的一個(gè)。媒體文件持續(xù)時(shí)間是由EXTINF標(biāo)簽指定的。如果客戶端重新加載播放列表文件并發(fā)現(xiàn)其沒有變化,則它必須在重試之前等待一段時(shí)間。該最小延遲是目標(biāo)持續(xù)時(shí)間的3倍或者初始最小重新加載延遲的倍數(shù),取兩者中較小的一個(gè)。對(duì)于第一次嘗試,這個(gè)倍數(shù)是O. 5,對(duì)于第二次是I. 5,其后是3. O。6. 2. 4確定要加載的下一個(gè)文件客戶端必須在每次加載或者重新加載時(shí)檢查播放列表文件,以確定要加載的下一個(gè)媒體文件。要加載的第一個(gè)文件必須是客戶端已經(jīng)選擇要首先播放的文件,如部分6. 2. 2中所述。如果要播放的第一個(gè)文件已經(jīng)被加載而且播放列表文件不包含 EXT-X-MEDIA-SEQUENCE標(biāo)簽,則客戶端必須驗(yàn)證當(dāng)前的播放列表文件在其初始被找到的偏移處包含上次加載的媒體文件的URI,如果沒有的話就暫停重放。要加載的下一個(gè)媒體文件必須是播放列表中跟在上次加載的URI之后的第一個(gè)媒體文件URI。如果要播放的第一個(gè)文件已經(jīng)加載而且播放列表文件包含 EXT-X-MEDIA-SEQUENCE標(biāo)簽,則要加載的下一個(gè)媒體文件將是大于上次加載的媒體文件的序列號(hào)的最小序列號(hào)。6. 2. 5播放加密的媒體文件如果播放列表文件包含指定密鑰文件URI的EXT-X-KEY標(biāo)簽,則客戶端必須獲得該密鑰文件并使用其中的密鑰來(lái)解密跟在EXT-X-KEY標(biāo)簽之后的所有媒體文件,直到遇到另一個(gè)EXT-X-KEY標(biāo)簽。如果加密方法是AES-128,則AES-128 CBC解密將應(yīng)用到各單個(gè)媒體文件。整個(gè)文件必須被解密。不準(zhǔn)跨媒體文件應(yīng)用密碼塊鏈。媒體文件的序列號(hào)必須用作IV,如部分 5. I中所述。如果加密方法是NONE,則客戶端必須將EXT-X-KEY標(biāo)簽之后的所有媒體文件都作為明文(未加密的)來(lái)處理,直到遇到另一個(gè)EXT-X-KEY標(biāo)簽。7.例子
      這部分包含了幾個(gè)示例播放列表文件。7. I簡(jiǎn)單播放列表文件#EXTM3U#EXT-X-TARGETDURATION 10#EXTINF :5220,http://media, example, com/entire, ts#EXT-X-ENDLIST7. 2滑動(dòng)窗口播放列表,利用HTTPS#EXTM3U#EXT-X-TARGETDURATION : 8#EXT-X-MEDIA-SEQUENCE :2680#EXTINF 8,https://priv. example, com/fileSeguence2680.ts#EXTINF 8,https://priv. example, com/fileSeguence2681.ts#EXTINF 8,https://priv. example, com/fileSeguence2682.ts7. 3具有加密媒體文件的播放列表文件#EXTM3U#EXT-X-MED I A-SEQUENCE :7794#EXT-X-TARGETDURATION 15#EXT-X-KEY:METHOD = AES-128, URI = " https://priv. example, com/key · php r = 52"#EXTINF 15,http://media. example, com/fileSequence7794.ts#EXTINF 15,http://media. example, com/fileSequence7795.ts#EXTINF 15,http://media. example, com/fileSequence7796.ts#EXT-X_KEY: METHOD = AES-128, URI = " https://priv. example, com/key · php r = 53"#EXTINF 15,http://media. example, com/fileSequence7797.ts7. 4變體播放列表文件#EXTM3U#EXT-X-STREAM-INF:PROGRAM-ID = I, BANDWIDTH = 1280000http://example, com/low. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 2560000http://example, com/mid. m3u8
      #EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 7680000http: //example, com/hi. m3u8#EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 65000,CODECS = " mp4a. 40. 5"http://example, com/audio-only. m3u88.安全考慮由于本協(xié)議總體上使用HTTP來(lái)發(fā)送數(shù)據(jù),因此大部分相同的安全考慮都適用。見 RFC 2616 的部分 15[RFC2616]。媒體文件解析器一般會(huì)遭受“模糊”攻擊。當(dāng)解析從服務(wù)器接收到的文件時(shí),客戶端應(yīng)當(dāng)注意,以便拒絕不兼容的文件。播放列表文件包含URI,客戶端將使用這些URI來(lái)進(jìn)行任意實(shí)體的網(wǎng)絡(luò)請(qǐng)求。客戶端應(yīng)當(dāng)范圍檢查響應(yīng),來(lái)防止緩沖溢出。還是見RFC3986的安全考慮部分[RFC3986]??蛻舳藨?yīng)當(dāng)緩慢地加載由URI識(shí)別的資源,以避免受到拒絕服務(wù)攻擊。HTTP請(qǐng)求常常包括會(huì)話狀態(tài)(“cookies”),該狀態(tài)可能包含私有的用戶數(shù)據(jù)。實(shí)現(xiàn)必須遵循由RFC 2965[RFC2965]指定的cookie約束和過(guò)期規(guī)則。還是見RFC 2965的安全考慮部分和RFC2964 [RFC2964]。加密密鑰是由URI指定的。這些密鑰的傳送應(yīng)當(dāng)由一種機(jī)制來(lái)保護(hù),諸如TLS之上的HTTP[RFC5246](先前的SSL)結(jié)合安全領(lǐng)域或者會(huì)話cookie。9.參考引用標(biāo)準(zhǔn)[AES_128]U. S. Department of Commerce/National Institute ofStandards and Technology, " Advanced Encryption Standard (AES),FIPS PUB 197" , November 2001, <http://csrc.nist.gov/publications/fips/fipsl97/fips-197. pdf>.[IS0_13818]International Organization for Standardization," ISO/IEC International Standard 13818 ;Generic coding of moving pictures and associated audio information " , November 1994, 〈http://www.iso.org/iso/catalogue_detail csnumber = 44169>.[IS0_8601]International Organization for Standardization," ISO/IEC International Standard 8601 :2004 ;Data elements and interchange formats—Information interchange—Representation of dates and times" , December 2004, 〈http://www. iso.org/iso/catalogue_detail csnumber = 40874>.[RFC2046]Freed, N. and N. Borenstein, " Multipurpose Internet Mail Extensions(MIME) Part Two Media Types" , RFC 2046, November 1996.[RFC2119]Bradner,S. ," Key words for use in RFCs to Indicate Requirement Levels",BCP 14,RFC 2119, March 1997.[RFC2616]Fielding, R. ,Gettys, J. ,Mogul,J. ,Frystyk, H. ,Masinter, L. , Leach, P. , and T.Berners—Lee, " Hypertext Transfer Protocol—HTTP/1. I" , RFC 2616,June1999.[RFC3629]Yergeau,F(xiàn). ," UTF_8,a transformation format ofISO 10646" ,STD 63,RFC 3629,November 2003.[RFC3852] Housley, R.," Cryptographic Message Syntax (CMS) !f,RFC 3852, July 2004.[RFC3986]Berners-Lee,T.,F(xiàn)ielding,R. , and L Masinter," Uniform Resource Identifier(URI) !Generic Syntax",STD 66,RFC 3986,January 2005.[RFC4281]Gellens,R.,Singer, D.,and P. Frojdh, " The Codecs Parameter for" Bucket" Media Types",RFC 4281, November 2005.[US—ASCII]American National Standards Institute," ANSI X3.4-1986,Information Systems—Coded Character Sets 7_Bit American National Standard Code for Information Interchange(7-Bit ASCII)" , December 1986.信息參考[ID3]ID3. org, " The ID3 audio file data tagging format" ,<http://www. id3.org/Developer—Information〉.[M3U]Nullsoft,Inc. , " The M3U Playlist format,originally the Winamp media player" ,〈http://wikipedia.org/wiki/M3U>。
      invented for
      權(quán)利要求
      1.一種機(jī)器實(shí)現(xiàn)的方法,包括在服務(wù)器設(shè)備處將數(shù)據(jù)流劃分成多個(gè)媒體文件,所述多個(gè)媒體文件中的每一個(gè)都以傳輸協(xié)議兼容格式作為各單個(gè)文件存儲(chǔ)到存儲(chǔ)器中;生成具有多個(gè)標(biāo)簽和多個(gè)統(tǒng)一資源指示符(URI)的播放列表文件,所述多個(gè)URI指示所述多個(gè)媒體文件的用以重建數(shù)據(jù)流的次序;以及 生成與所述多個(gè)媒體文件的改變對(duì)應(yīng)的更新的播放列表文件,該更新的播放列表文件包括多個(gè)更新的URI,所述多個(gè)更新的URI指示更新的多個(gè)媒體文件的用以重建數(shù)據(jù)流的表不的次序。
      2.如權(quán)利要求I所述的方法,其中所述多個(gè)媒體文件的改變包括添加一個(gè)或多個(gè)媒體文件,并且更新的播放列表文件包括到所述多個(gè)媒體文件和所添加的一個(gè)或多個(gè)媒體文件的 URI。
      3.如權(quán)利要求I所述的方法,其中所述多個(gè)媒體文件的改變包括對(duì)一個(gè)或多個(gè)媒體文件的修改,并且更新的播放列表文件包括到所述多個(gè)媒體文件的URI,并且多個(gè)標(biāo)簽中的一個(gè)或多個(gè)標(biāo)簽被更新以反映對(duì)一個(gè)或多個(gè)媒體文件的修改。
      4.如權(quán)利要求I所述的方法,其中所述多個(gè)媒體文件的改變包括從多個(gè)媒體文件中去除一個(gè)或多個(gè)所選的媒體文件以及添加一個(gè)或多個(gè)其它媒體文件以導(dǎo)致一個(gè)或多個(gè)剩余媒體文件,并且更新的播放列表文件包括到剩余媒體文件的URI,并且其中數(shù)據(jù)流是單個(gè)節(jié)目的基于連續(xù)時(shí)間的內(nèi)容流,并且其中所述傳輸協(xié)議是HTTP兼容協(xié)議。
      5.如權(quán)利要求I所述的方法,其中更新的播放列表是在所選時(shí)段過(guò)期的時(shí)候生成的。
      6.如權(quán)利要求5所述的方法,其中所選時(shí)段基于播放列表文件中的標(biāo)簽之一的屬性。
      7.如權(quán)利要求I所述的方法,還包括確定要添加到播放列表文件的下一個(gè)媒體文件的大致持續(xù)時(shí)間;以及使播放列表文件包括指示該大致持續(xù)時(shí)間的標(biāo)簽。
      8.如權(quán)利要求7所述的方法,其中所述標(biāo)簽包括EXT-X-TARGETDURATION標(biāo)簽。
      9.如權(quán)利要求I所述的方法,還包括確定播放列表文件中URI中的一個(gè)或多個(gè)URI的序列號(hào);以及使播放列表文件包括指示所述序列號(hào)中的一個(gè)或多個(gè)的一個(gè)或多個(gè)標(biāo)簽。
      10.如權(quán)利要求9所述的方法,其中所述一個(gè)或多個(gè)標(biāo)簽包括一個(gè)或多個(gè) EXT-X-MEDI Α-SEQUENCE 標(biāo)簽。
      11.如權(quán)利要求I所述的方法,還包括確定接收媒體文件的客戶端設(shè)備是否被授權(quán)在重放之后存儲(chǔ)媒體文件;以及使播放列表包括指示客戶端設(shè)備是否被授權(quán)在重放之后存儲(chǔ)媒體文件的標(biāo)簽。
      12.如權(quán)利要求11所述的方法,其中所述標(biāo)簽包括EXT-X-ALLOW-CACHE標(biāo)簽。
      13.一種數(shù)據(jù)處理系統(tǒng),包括用于在服務(wù)器設(shè)備處將數(shù)據(jù)流劃分成多個(gè)媒體文件的裝置,所述多個(gè)媒體文件中的每一個(gè)都以傳輸協(xié)議兼容格式作為各單個(gè)文件存儲(chǔ)到存儲(chǔ)器中;用于生成具有多個(gè)標(biāo)簽和多個(gè)統(tǒng)一資源指示符(URI)的播放列表文件的裝置,所述多個(gè)URI指示所述多個(gè)媒體文件的用以重建數(shù)據(jù)流的次序;以及用于生成與所述多個(gè)媒體文件的改變對(duì)應(yīng)的更新的播放列表文件的裝置,該更新的播放列表文件包括多個(gè)更新的URI,所述多個(gè)更新的URI指示更新的多個(gè)媒體文件的用以重建數(shù)據(jù)流的表示的次序。
      14.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),其中所述多個(gè)媒體文件的改變包括添加一個(gè)或多個(gè)媒體文件,并且更新的播放列表文件包括到所述多個(gè)媒體文件和所添加的一個(gè)或多個(gè)媒體文件的URI。
      15.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),其中所述多個(gè)媒體文件的改變包括對(duì)一個(gè)或多個(gè)媒體文件的修改,并且更新的播放列表文件包括到所述多個(gè)媒體文件的URI,并且多個(gè)標(biāo)簽中的一個(gè)或多個(gè)標(biāo)簽被更新以反映對(duì)一個(gè)或多個(gè)媒體文件的修改。
      16.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),其中所述多個(gè)媒體文件的改變包括從多個(gè)媒體文件中去除一個(gè)或多個(gè)所選的媒體文件以及添加一個(gè)或多個(gè)其它媒體文件以導(dǎo)致一個(gè)或多個(gè)剩余媒體文件,并且更新的播放列表文件包括到剩余媒體文件的URI,并且其中數(shù)據(jù)流是單個(gè)節(jié)目的基于連續(xù)時(shí)間的內(nèi)容流,并且其中所述傳輸協(xié)議是HTTP兼容協(xié)議。
      17.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),其中更新的播放列表是在所選時(shí)段過(guò)期的時(shí)候生成的。
      18.如權(quán)利要求17所述的數(shù)據(jù)處理系統(tǒng),其中所選時(shí)段基于播放列表文件中的標(biāo)簽之一的屬性。
      19.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),還包括用于確定要添加到播放列表文件的下一個(gè)媒體文件的大致持續(xù)時(shí)間的裝置;以及用于使播放列表文件包括指示該大致持續(xù)時(shí)間的標(biāo)簽的裝置。
      20.如權(quán)利要求19所述的數(shù)據(jù)處理系統(tǒng),其中所述標(biāo)簽包括EXT-X-TARGETDURATION標(biāo)簽。
      21.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),還包括用于確定播放列表文件中URI中的一個(gè)或多個(gè)URI的序列號(hào)的裝置;以及用于使播放列表文件包括指示所述序列號(hào)中的一個(gè)或多個(gè)的一個(gè)或多個(gè)標(biāo)簽的裝置。
      22.如權(quán)利要求21所述的數(shù)據(jù)處理系統(tǒng),其中所述一個(gè)或多個(gè)標(biāo)簽包括一個(gè)或多個(gè) EXT-X-MEDI Α-SEQUENCE 標(biāo)簽。
      23.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),還包括用于確定接收媒體文件的客戶端設(shè)備是否被授權(quán)在重放之后存儲(chǔ)媒體文件的裝置;以及用于使播放列表包括指示客戶端設(shè)備是否被授權(quán)在重放之后存儲(chǔ)媒體文件的標(biāo)簽的>j-U ρ α裝直。
      24.如權(quán)利要求23所述的數(shù)據(jù)處理系統(tǒng),其中所述標(biāo)簽包括EXT-X-ALLOW-CACHE標(biāo)簽。
      25.—種機(jī)器實(shí)現(xiàn)的方法,包括以傳輸協(xié)議兼容格式將多個(gè)媒體文件作為各單個(gè)文件存儲(chǔ)在存儲(chǔ)器中,所述多個(gè)媒體文件是從基于連續(xù)時(shí)間的數(shù)據(jù)流劃分成的;利用所述傳輸協(xié)議將播放列表文件發(fā)送到客戶端設(shè)備,該播放列表文件具有多個(gè)標(biāo)簽和多個(gè)統(tǒng)一資源指示符(URI),所述多個(gè)URI指示所述多個(gè)媒體文件的用以重建數(shù)據(jù)流的次序;響應(yīng)來(lái)自客戶端設(shè)備的利用所述多個(gè)URI中的一個(gè)或多個(gè)的一個(gè)或多個(gè)請(qǐng)求,利用傳輸協(xié)議將多個(gè)媒體文件中的一個(gè)或多個(gè)傳輸?shù)娇蛻舳嗽O(shè)備;以及將更新的播放列表文件發(fā)送到客戶端設(shè)備,所述更新的播放列表文件對(duì)應(yīng)于多個(gè)媒體文件的改變,所述更新的播放列表文件包括多個(gè)更新的URI,該多個(gè)更新的URI指示更新的多個(gè)媒體文件的用以重建數(shù)據(jù)流的表示的次序。
      26.如權(quán)利要求25所述的方法,其中多個(gè)媒體文件的改變包括以下中的至少一個(gè)(a) 一個(gè)或多個(gè)媒體文件的添加,并且更新的播放列表文件包括到所述多個(gè)媒體文件和所添加的一個(gè)或多個(gè)媒體文件的URI ;(b) 一個(gè)或多個(gè)媒體文件的修改,并且更新的播放列表文件包括到所述多個(gè)媒體文件的URI,并且多個(gè)標(biāo)簽中的一個(gè)或多個(gè)標(biāo)簽被更新以便反映對(duì)所述一個(gè)或多個(gè)媒體文件的修改;或者(c) 一個(gè)或多個(gè)所選的媒體文件從所述多個(gè)媒體文件中的去除及一個(gè)或多個(gè)其它媒體文件的添加以導(dǎo)致一個(gè)或多個(gè)剩余的媒體文件,并且更新的播放列表文件包括到剩余媒體文件的URI,并且其中數(shù)據(jù)流是單個(gè)節(jié)目的基于連續(xù)時(shí)間的內(nèi)容流,并且其中傳輸協(xié)議是HTTP兼容協(xié)議。
      27.如權(quán)利要求25所述的方法,其中更新的播放列表是在所選時(shí)段過(guò)期的時(shí)候生成的,并且其中所選時(shí)段基于播放列表文件中的標(biāo)簽之一的屬性,并且其中傳輸協(xié)議是HTTP 兼容協(xié)議。
      28.一種數(shù)據(jù)處理系統(tǒng),包括用于以傳輸協(xié)議兼容格式將多個(gè)媒體文件作為各單個(gè)文件存儲(chǔ)在存儲(chǔ)器中的裝置,所述多個(gè)媒體文件是從基于連續(xù)時(shí)間的數(shù)據(jù)流劃分成的;用于利用非流化傳輸協(xié)議將播放列表文件發(fā)送到客戶端設(shè)備的裝置,該播放列表文件具有多個(gè)標(biāo)簽和多個(gè)統(tǒng)一資源指示符(URI),所述多個(gè)URI指示所述多個(gè)媒體文件的用以重建數(shù)據(jù)流的次序;用于響應(yīng)來(lái)自客戶端設(shè)備的利用所述多個(gè)URI中的一個(gè)或多個(gè)的一個(gè)或多個(gè)請(qǐng)求,利用傳輸協(xié)議將多個(gè)媒體文件中的一個(gè)或多個(gè)傳輸?shù)娇蛻舳嗽O(shè)備的裝置;以及用于將更新的播放列表文件發(fā)送到客戶端設(shè)備的裝置,所述更新的播放列表文件對(duì)應(yīng)于多個(gè)媒體文件的改變,所述更新的播放列表文件包括多個(gè)更新的URI,該多個(gè)更新的URI 指示更新的多個(gè)媒體文件的用以重建數(shù)據(jù)流的表示的次序。
      29.如權(quán)利要求28所述的數(shù)據(jù)處理系統(tǒng),其中多個(gè)媒體文件的改變包括以下中的至少一個(gè)(a) 一個(gè)或多個(gè)媒體文件的添加,并且更新的播放列表文件包括到所述多個(gè)媒體文件和所添加的一個(gè)或多個(gè)媒體文件的URI ;(b) 一個(gè)或多個(gè)媒體文件的修改,并且更新的播放列表文件包括到所述多個(gè)媒體文件的URI,并且多個(gè)標(biāo)簽中的一個(gè)或多個(gè)標(biāo)簽被更新以便反映對(duì)所述一個(gè)或多個(gè)媒體文件的修改;或者(c) 一個(gè)或多個(gè)所選的媒體文件從所述多個(gè)媒體文件中的去除及一個(gè)或多個(gè)其它媒體文件的添加以導(dǎo)致一個(gè)或多個(gè)剩余的媒體文件,并且更新的播放列表文件包括到剩余媒體文件的URI,并且其中數(shù)據(jù)流是單個(gè)節(jié)目的基于連續(xù)時(shí)間的內(nèi)容流,并且其中傳輸協(xié)議是HTTP兼容協(xié)議。
      30.如權(quán)利要求28所述的數(shù)據(jù)處理系統(tǒng),其中更新的播放列表是在所選時(shí)段過(guò)期的時(shí)候生成的,并且其中所選時(shí)段基于播放列表文件中的標(biāo)簽之一的屬性,并且其中傳輸協(xié)議是HTTP兼容協(xié)議。
      31.一種機(jī)器實(shí)現(xiàn)的方法,包括通過(guò)客戶端設(shè)備,利用傳輸協(xié)議請(qǐng)求播放列表文件;響應(yīng)所述請(qǐng)求,接收具有以下的播放列表文件(I)指示節(jié)目的基于連續(xù)時(shí)間的數(shù)據(jù)流的多個(gè)媒體文件的統(tǒng)一資源指示符(URI)和(2)具有與多個(gè)媒體文件有關(guān)的參數(shù)的多個(gè)標(biāo)簽;以在播放列表中指示的次序請(qǐng)求并接收所述媒體文件中的一個(gè)或多個(gè);以及接收與所述媒體文件的改變對(duì)應(yīng)的更新的播放列表文件,所述更新的播放列表文件包括指示更新的多個(gè)媒體文件的次序的多個(gè)更新的URI。
      32.如權(quán)利要求31所述的方法,還包括從更新的多個(gè)媒體文件生成節(jié)目的呈現(xiàn)。
      33.如權(quán)利要求32所述的方法,其中所述媒體文件的改變包括以下中的至少一個(gè)(a) 一個(gè)或多個(gè)媒體文件的添加,并且更新的播放列表文件包括到更新的多個(gè)媒體文件的URI ; (b)所述多個(gè)媒體文件中的一個(gè)或多個(gè)的修改;或者(c)第一組媒體文件從播放列表文件中的去除以及一個(gè)或多個(gè)其它媒體文件到播放列表文件的添加,并且其中傳輸協(xié)議是HTTP 兼容協(xié)議。
      34.如權(quán)利要求33所述的方法,其中更新的播放列表是由客戶端設(shè)備基于播放列表文件中的標(biāo)簽之一的屬性在一時(shí)段過(guò)期的時(shí)候請(qǐng)求的。
      35.一種數(shù)據(jù)處理系統(tǒng),包括用于通過(guò)客戶端設(shè)備,利用傳輸協(xié)議請(qǐng)求播放列表文件的裝置;用于響應(yīng)所述請(qǐng)求,接收具有以下的播放列表文件的裝置指示節(jié)目的基于連續(xù)時(shí)間的數(shù)據(jù)流的多個(gè)媒體文件的統(tǒng)一資源指示符(URI)和具有與多個(gè)媒體文件有關(guān)的參數(shù)的多個(gè)標(biāo)簽;用于以在播放列表中指示的次序請(qǐng)求并接收所述媒體文件中的一個(gè)或多個(gè)的裝置;以及用于接收與所述媒體文件的改變對(duì)應(yīng)的更新的播放列表文件的裝置,所述更新的播放列表文件包括指示更新的多個(gè)媒體文件的次序的多個(gè)更新的URI。
      36.如權(quán)利要求35所述的數(shù)據(jù)處理系統(tǒng),還包括用于從更新的播放列表生成節(jié)目的呈現(xiàn)的裝置。
      37.如權(quán)利要求36所述的數(shù)據(jù)處理系統(tǒng),其中所述媒體文件的改變包括以下中的至少一個(gè)(a) 一個(gè)或多個(gè)媒體文件的添加,并且更新的播放列表文件包括到更新的多個(gè)媒體文件的URI ;(b)所述多個(gè)媒體文件中的一個(gè)或多個(gè)的修改;或者(C)第一組媒體文件從播放列表文件中的去除以及一個(gè)或多個(gè)其它媒體文件到播放列表文件的添加,并且其中傳輸協(xié)議是HTTP兼容協(xié)議。
      38.如權(quán)利要求37所述的數(shù)據(jù)處理系統(tǒng),其中更新的播放列表是由客戶端設(shè)備基于播放列表文件中的標(biāo)簽之一的屬性在一時(shí)段過(guò)期的時(shí)候請(qǐng)求的。
      39.一種服務(wù)器設(shè)備,包括分段器,被配置成將數(shù)據(jù)流劃分成多個(gè)媒體文件,所述多個(gè)媒體文件中的每一個(gè)都以傳輸協(xié)議兼容格式作為各單個(gè)文件存儲(chǔ)到存儲(chǔ)器中;以及索引器,被配置成生成具有多個(gè)標(biāo)簽和多個(gè)統(tǒng)一資源指示符(URI)的播放列表文件和生成與所述多個(gè)媒體文件的改變對(duì)應(yīng)的更新的播放列表文件,其中所述多個(gè)URI指示所述多個(gè)媒體文件的用以重建數(shù)據(jù)流的次序,并且該更新的播放列表文件包括多個(gè)更新的URI,所述多個(gè)更新的URI指示更新的多個(gè)媒體文件的用以重建數(shù)據(jù)流的表示的次序。
      40.如權(quán)利要求39所述的服務(wù)器設(shè)備,其中所述多個(gè)媒體文件的改變包括添加一個(gè)或多個(gè)媒體文件,并且更新的播放列表文件包括到所述多個(gè)媒體文件和所添加的一個(gè)或多個(gè)媒體文件的URI。
      41.如權(quán)利要求39所述的服務(wù)器設(shè)備,其中所述多個(gè)媒體文件的改變包括對(duì)一個(gè)或多個(gè)媒體文件的修改,并且更新的播放列表文件包括到所述多個(gè)媒體文件的URI,并且多個(gè)標(biāo)簽中的一個(gè)或多個(gè)標(biāo)簽被更新以反映對(duì)一個(gè)或多個(gè)媒體文件的修改。
      42.如權(quán)利要求39所述的服務(wù)器設(shè)備,其中所述多個(gè)媒體文件的改變包括從多個(gè)媒體文件中去除一個(gè)或多個(gè)所選的媒體文件以及添加一個(gè)或多個(gè)其它媒體文件以導(dǎo)致一個(gè)或多個(gè)剩余媒體文件,并且更新的播放列表文件包括到剩余媒體文件的URI,并且其中數(shù)據(jù)流是單個(gè)節(jié)目的基于連續(xù)時(shí)間的內(nèi)容流,并且其中所述傳輸協(xié)議是HTTP兼容協(xié)議。
      43.—種服務(wù)器設(shè)備,包括存儲(chǔ)器,被配置成以傳輸協(xié)議兼容格式存儲(chǔ)多個(gè)媒體文件作為各單個(gè)文件,所述多個(gè)媒體文件是從基于連續(xù)時(shí)間的數(shù)據(jù)流劃分成的;以及HTTP服務(wù)器,被配置成利用所述傳輸協(xié)議將播放列表文件發(fā)送到客戶端設(shè)備,該播放列表文件具有多個(gè)標(biāo)簽和多個(gè)統(tǒng)一資源指示符(URI),所述多個(gè)URI指示所述多個(gè)媒體文件的用以重建數(shù)據(jù)流的次序,響應(yīng)來(lái)自客戶端設(shè)備的利用所述多個(gè)URI中的一個(gè)或多個(gè)的一個(gè)或多個(gè)請(qǐng)求,利用傳輸協(xié)議將多個(gè)媒體文件中的一個(gè)或多個(gè)傳輸?shù)娇蛻舳嗽O(shè)備,以及將更新的播放列表文件發(fā)送到客戶端設(shè)備,所述更新的播放列表文件對(duì)應(yīng)于多個(gè)媒體文件的改變,所述更新的播放列表文件包括多個(gè)更新的URI,該多個(gè)更新的URI指示更新的多個(gè)媒體文件的用以重建數(shù)據(jù)流的表示的次序。
      44.如權(quán)利要求43所述的服務(wù)器設(shè)備,其中多個(gè)媒體文件的改變包括以下中的至少一個(gè)(a) —個(gè)或多個(gè)媒體文件的添加,并且更新的播放列表文件包括到所述多個(gè)媒體文件和所添加的一個(gè)或多個(gè)媒體文件的URI ;(b) 一個(gè)或多個(gè)媒體文件的修改,并且更新的播放列表文件包括到所述多個(gè)媒體文件的URI,并且多個(gè)標(biāo)簽中的一個(gè)或多個(gè)標(biāo)簽被更新以便反映對(duì)所述一個(gè)或多個(gè)媒體文件的修改;或者(c) 一個(gè)或多個(gè)所選的媒體文件從所述多個(gè)媒體文件中的去除及一個(gè)或多個(gè)其它媒體文件的添加以導(dǎo)致一個(gè)或多個(gè)剩余的媒體文件, 并且更新的播放列表文件包括到剩余媒體文件的URI,并且其中數(shù)據(jù)流是單個(gè)節(jié)目的基于連續(xù)時(shí)間的內(nèi)容流,并且其中傳輸協(xié)議是HTTP兼容協(xié)議。
      45.—種客戶端設(shè)備,包括組裝器,被配置成利用傳輸協(xié)議請(qǐng)求播放列表文件,響應(yīng)所述請(qǐng)求,接收具有以下的播放列表文件(I)指示節(jié)目的基于連續(xù)時(shí)間的數(shù)據(jù)流的多個(gè)媒體文件的統(tǒng)一資源指示符 (URI)和(2)具有與多個(gè)媒體文件有關(guān)的參數(shù)的多個(gè)標(biāo)簽,以在播放列表中指示的次序請(qǐng)求并接收所述媒體文件中的一個(gè)或多個(gè),以及接收與所述媒體文件的改變對(duì)應(yīng)的更新的播放列表文件,所述更新的播放列表文件包括指示更新的多個(gè)媒體文件的次序的多個(gè)更新的 URI ;以及輸出生成器,被配置成基于來(lái)自所述組裝器的媒體文件,生成輸出。
      46.如權(quán)利要求45所述的客戶端設(shè)備,其中所述媒體文件的改變包括以下中的至少一個(gè)(a) 一個(gè)或多個(gè)媒體文件的添加,并且更新的播放列表文件包括到更新的多個(gè)媒體文件的URI ;(b)所述多個(gè)媒體文件中的一個(gè)或多個(gè)的修改;或者(C)第一組媒體文件從播放列表文件中的去除以及一個(gè)或多個(gè)其它媒體文件到播放列表文件的添加,并且其中傳輸協(xié)議是HTTP兼容協(xié)議。
      全文摘要
      本發(fā)明涉及利用諸如HTTP兼容協(xié)議之類的傳輸協(xié)議實(shí)時(shí)或者接近實(shí)時(shí)流化內(nèi)容的方法與設(shè)備。在一種實(shí)施例中,一種方法包括將代表基于連續(xù)時(shí)間的節(jié)目?jī)?nèi)容(例如,實(shí)況視頻廣播)的數(shù)據(jù)流分成多個(gè)不同的媒體文件,并生成具有多個(gè)標(biāo)簽和指示多個(gè)不同的媒體文件的呈現(xiàn)次序的統(tǒng)一資源指示符的播放列表文件??梢允顾龆鄠€(gè)媒體文件和播放列表文件用于傳輸?shù)娇蛻舳嗽O(shè)備,其中客戶端設(shè)備可以利用播放列表文件檢索媒體文件。
      文檔編號(hào)H04L29/06GK102611701SQ20121004760
      公開日2012年7月25日 申請(qǐng)日期2009年12月28日 優(yōu)先權(quán)日2008年12月31日
      發(fā)明者A·楚恩格, D·彼得曼, J·D·巴特森, R·潘特斯, 小W·梅 申請(qǐng)人:蘋果公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1