亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

動態(tài)改變播放列表的制作方法

文檔序號:6580041閱讀:187來源:國知局
專利名稱:動態(tài)改變播放列表的制作方法
動態(tài)改變播放列表
一支術(shù)領(lǐng)j或
本發(fā)明總體上涉及遞送和呈現(xiàn)多媒體內(nèi)容。
背景技術(shù)
流式傳輸是一種用來將多媒體內(nèi)容遞送給最終用戶的技術(shù)。流 式傳輸包括在將媒體內(nèi)容遞送給用戶的同時,連續(xù)地向用戶顯示該 內(nèi)容。流式傳輸可以用來向最終用戶遞送各種類型的數(shù)字媒體。流 媒體例如可以包括錄制的媒體內(nèi)容(例如,錄制的視頻)和/或即時 媒體內(nèi)容(例如,來自用戶網(wǎng)絡(luò)攝像頭的視頻)。
發(fā)布者可以利用一個或多個編解碼器來對內(nèi)容進(jìn)行編碼,從而 創(chuàng)建用于流式傳輸?shù)膬?nèi)容(例如,音頻和視頻)。流媒體服務(wù)器繼 而可以通過網(wǎng)絡(luò)(例如,因特網(wǎng))接收所創(chuàng)建的流以及將流傳送給 客戶端設(shè)備??蛻舳丝梢园蛻舳藗?cè)播放器,其為最終用戶解壓 縮和顯示濟u。
流媒體環(huán)境可以使用虛擬機來向最終用戶呈現(xiàn)流式傳輸內(nèi)容。 虛擬機是自包含的操作環(huán)境,其允許程序在虛擬機平臺本身之中運 行,如同虛擬機是單機計算機一樣。虛擬機可以是程序本身,其嵌
入在操作系統(tǒng)或者其他軟件應(yīng)用之中。虛擬機的 一 個示例是Adobe Flash Player運4亍時(可/人CA, San Jose的Adobe Systems ^〉司獲 得),其可以用來運行包括ActionScript和Shockwave Flash ( SWF ) 文件在內(nèi)的Flash 文件。
定制的圖像閱覽器和視頻播放器可以在虛擬機上運行,并且向 最終用戶呈現(xiàn)流媒體。這些定制的應(yīng)用可以用來協(xié)助web應(yīng)用提供 交互式富媒體內(nèi)容。配置用于在Adobe Flash 平臺上執(zhí)行的應(yīng)用可 以包含在SWF文件中,而SWF文件可以由客戶端側(cè)SWF播放器軟件來處理。媒體內(nèi)容本身可以保持為與SWF文件分離,并且可以在
運行時加載到SWF中以《更回放。
在流式傳輸期間可以使用播放列表。播放列表可以包括排隊等待播放的流的列表。播放列表中的流可以流式傳輸給用戶,并且按照其排隊的順序一個接一個的從源(例如,流媒體服務(wù)器)進(jìn)行播
放。來自播放列表的流可以通過定制的圖像閱覽器、視頻播放器和音頻播放器(其可以與各種其他應(yīng)用相關(guān)聯(lián))呈現(xiàn)給最終用戶。

發(fā)明內(nèi)容
本說明書描述涉及動態(tài)改變包括流式傳輸內(nèi)容的播放列表的技術(shù)。播放列表可以響應(yīng)于客戶端側(cè)反饋而改變,所述反饋可以包括運行時性能信息和/或用戶偏好。
總體上,在一個方面,提供一種計算機實現(xiàn)的方法。該方法包
括從服務(wù)器接收與播放列表相關(guān)聯(lián)的流,該播放列表包括流的排序,這些流進(jìn)行排隊以 <更按照該排序從服務(wù)器進(jìn)行客戶端側(cè)回放;訪問與至少 一 個流的4妾收和回》文相關(guān)聯(lián)的客戶端側(cè)回》文狀況;響應(yīng)于該客戶端側(cè)回放狀況,由客戶端側(cè)應(yīng)用請求改變該播;故列表的流,該請求標(biāo)識期望的播放列表改變,并且包括控制播放列表改變的信息;以及按照響應(yīng)于該請求而進(jìn)行的播放列表改變,來顯示該播放列表的流。其他實施方式包括相應(yīng)的系統(tǒng)、裝置和計算機程序產(chǎn)品。
實現(xiàn)可以包括以下一個或多個特征。例如,在某些實現(xiàn)中,播放列表的流包括以下至少一個音頻流、視頻流、具有音頻和視頻的混合流、基于文本的數(shù)據(jù)、靜態(tài)圖像數(shù)據(jù)以及用戶定義的 據(jù)。流可以包括即時流。在某些實現(xiàn)中,播放列表由客戶端側(cè)應(yīng)用創(chuàng)建。
訪問客戶端側(cè)播放列表狀況可以包括訪問以下至少 一 個網(wǎng)絡(luò)帶寬可用性,客戶端處理能力,以及用戶閱覽統(tǒng)計。期望的播放列表改變可以包括以下至少一個(i)播放列表中流的重新排序;(ii)將流從播放列表中移除;以及(Hi)在播放列表中的指定插入點處插入新的流。期望的播放列表改變可以包括將播放列表中的流替換為該流的不同版本,該不同版本與被替換的流需要不同的網(wǎng)絡(luò)和處理資源。期望的播放列表改變可以包括將播放列表中的流替換為不同的流,該不同的流具有與被替換的流不同的內(nèi)容。期望的播放列表改變可以包括將當(dāng)前播放的流替換為新的流,其中所述請求標(biāo)識當(dāng)前播放的流和新的流,并且包括指定是否在中間位置替換當(dāng)前播放流的控制信息。
總體上,在另一方面,提供一種計算機實現(xiàn)的方法。該方法包
括向客戶端流式傳輸與播放列表相關(guān)聯(lián)的媒體流,該播放列表包括流的排序,這些流進(jìn)行排隊以便按照所述排序進(jìn)行客戶端側(cè)回放;從客戶端側(cè)應(yīng)用接收響應(yīng)于4企測到的客戶端側(cè)狀況的、改變插^文列表的請求,該請求標(biāo)識期望的播放列表改變,并且包括控制播放列表改變的信息;基于接收到的請求來改變播放列表;以及按照所述改變,流式傳輸與播放列表相關(guān)聯(lián)的媒體流。其他實施方式包括相應(yīng)的系統(tǒng)、裝置和計算機程序產(chǎn)品。
實現(xiàn)可以包括以下一個或多個特征。例如,在某些實現(xiàn)中,與播放列表相關(guān)聯(lián)的流包括以下錄制的或即時的內(nèi)容的至少 一個音頻流、視頻流、具有音頻和纟見頻的混合流、基于文本的數(shù)據(jù)、靜態(tài)圖像數(shù)據(jù)以及用戶定義的數(shù)據(jù)。
改變播;故列表可以包括以下至少一個(i)對播;改列表中的流重新排序;(ii)將流從播放列表中移除;以及(iii)在播放列表中的指定插入點處將新的流插入播放列表。改變播放列表可以包括將播放列表中的流替換為該流的不同版本,該不同版本與被替換的流需要不同的網(wǎng)絡(luò)和處理資源。改變播放列表可以包括將播放列表中的流替換為不同的流,該不同的流與被替換的流具有不同的內(nèi)容。改變播放列表可以包括將當(dāng)前流式傳輸?shù)牧魈鎿Q為新的流,其中在新流中的最早關(guān)鍵幀處替換當(dāng)前流式傳輸?shù)牧鳎沟卯?dāng)前流式傳輸?shù)牧鞯幕胤趴雌饋頉]有中斷。
總體上,在另一方面,提供一種系統(tǒng)。該系統(tǒng)包括一個或多個處理器用來執(zhí)行操作,所述操作包括向客戶端流式傳輸與播放列表相關(guān)聯(lián)的媒體流,該播放列表包括流的排序,這些流進(jìn)行排隊以
便按照所述排序進(jìn)行客戶端側(cè)回放;從客戶端側(cè)應(yīng)用接收響應(yīng)于枱,
測到的客戶端側(cè)狀況的、改變播放列表的請求,該請求標(biāo)識期望的
播放列表改變,并且包括控制播放列表改變的信息;基于接收到的請求來改變播放列表;以及按照所述改變,流式傳輸與播放列表相關(guān)聯(lián)的媒體流。
實現(xiàn)可以包括以下一個或多個特征。例如,在某些實現(xiàn)中,與播放列表相關(guān)聯(lián)的流包括以下錄制的或即時的內(nèi)容的至少 一個音頻流、視頻流、具有音頻和視頻的混合流、基于文本的數(shù)據(jù)、靜態(tài)圖像數(shù)據(jù)以及用戶定義的數(shù)據(jù)。
在某些實現(xiàn)中,改變播放列表可以包括以下至少一個(i)對播放列表中的流重新排序;(ii)將流從播放列表中移除;以及(iii)在播放列表中的指定插入點處將新的流插入所述播放列表。改變播放列表可以包括將播放列表中的流替換為該流的不同版本,該不同版本與被替換的流需要不同的網(wǎng)絡(luò)和處理資源。改變播放列表可以包括將播放列表中的流替換為不同的流,該不同的流與被替換的流具有不同的內(nèi)容。改變播放列表可以包括將當(dāng)前播放的流替換為新的流,其中在新流中的最早關(guān)鍵幀處替換當(dāng)前流式傳輸?shù)牧?,使得?dāng)前流式傳輸?shù)牧鞯幕亍氛煽雌饋頉]有中斷。
在某些實現(xiàn)中,該系統(tǒng)還包括一 個或多個處理器用來執(zhí)行操作,所述操作包括接收與播放列表相關(guān)聯(lián)的流式傳輸?shù)拿襟w流;檢測與至少 一個接收的流的接收和回放相關(guān)聯(lián)的客戶端側(cè)回放狀況;發(fā)送改變播放列表的請求;以及按照該改變來顯示播放列表的流。
可以實現(xiàn)本it明書中所描述主題的方面,以實現(xiàn)以下一個或多個和/或其他優(yōu)點。按照本公開的實現(xiàn)可以用來動態(tài)地將播放列表中
的一個流替換為另一流,而不影響播放列表中的其他流。切換可以在適當(dāng)?shù)狞c自動地進(jìn)行,使得回放看起來是無縫的并且沒有干擾或停頓。而且,在有些示例中,可以在無需重置或者重新創(chuàng)建播放列表的情況下對播放列表的流重新排序。而且,按照本公開的實現(xiàn)可以提供對播放列表改變的應(yīng)用控制。例如,如果服務(wù)器已經(jīng)開始傳輸來自播放列表的內(nèi)容,則應(yīng)用可以決定服務(wù)器是否應(yīng)當(dāng)從當(dāng)前流式傳輸?shù)膬?nèi)容流切換為另 一流。
在播放列表中流的回放期間,帶寬可用性和/或系統(tǒng)資源可能變化(例如,由于系統(tǒng)上運行的其他應(yīng)用)。在這種情況下,可能期望將播放列表中的一個或多個流替換為具有相同內(nèi)容、但是以不同質(zhì)量編碼的流。按照本公開的實現(xiàn)可以利用不同的分辨率或者比特率版本來更新流式傳輸內(nèi)容,以適應(yīng)可用的帶寬和系統(tǒng)資源??梢愿虏シ帕斜硪园ㄟ@些不同版本,而無需重新創(chuàng)建播放列表,也無需在進(jìn)行更新時中斷回》文體-驗。
作為示例,用戶在播放列表中對500kbps的視頻進(jìn)行排隊,以用于高帶寬環(huán)境的介質(zhì)。服務(wù)器繼而開始流式傳輸該播放列表,但是在回放期間 ,網(wǎng)絡(luò)僅提供300kbps的帶寬。為了避免由于該降低的帶寬而使視頻斷續(xù),當(dāng)前播放的視頻應(yīng)當(dāng)切換為較低比特率的版本,諸如比特率小于300kbps的版本。而且,播放列表中排隊等候的所有其他高比特率(在此例中,是高于300kbps)視頻流同樣應(yīng)當(dāng)切換為其較低比特率版本。按照本公開的實現(xiàn)可以將受帶寬降低影響的相關(guān)流更新為其較低比特率版本,而不造成任何回放暫停。而且,如果需要切換的目標(biāo)流已經(jīng)在播放之中,則可以利用應(yīng)用的API(應(yīng)用編程接口)控制對其進(jìn)行切換或者不進(jìn)行切換。
在另 一情況下,應(yīng)用可能希望根據(jù)用戶的閱覽歷史來切換播放列表中的流。例如,基于先前閱覽器行為,應(yīng)用可能希望在播放列表中應(yīng)當(dāng)保持不變的其他視頻流之間的某點,將播放列表中的特定流替換為具有不同內(nèi)容的完全不同的流(不僅僅是先前情況中相同內(nèi)容的不同質(zhì)量或者比特率的版本)。作為示例,應(yīng)用可能希望將播放列表中的一個流式傳輸?shù)纳虡I(yè)廣告替換為另一個商業(yè)廣告,其中商業(yè)廣告發(fā)生在應(yīng)當(dāng)保持不變的即時視頻流之間。在這種情況下,可能不希望在任何中間位置(例如,在流的中間)切換流,因為這將在切換流時導(dǎo)致回放內(nèi)容的突變。按照本公開的實現(xiàn)可以允許應(yīng)用控制和指定切換的類型,以避免這類突變。
本說明書中所描述主題的一個或多個實施方式的細(xì)節(jié)在附圖和下文描述中記載。根據(jù)描述、附圖以及權(quán)利要求書,其他特征、方面和優(yōu)點將變得易見。


圖1是示出了示例數(shù)據(jù)流的圖示。
圖2是示出了播放列表的概念性概觀的框圖。
圖3是示出了示例數(shù)據(jù)處理環(huán)境的框圖。
圖4是示出了示例播放列表改變過程的流程圖。
圖5是示出了另一示例播放列表改變過程的流程圖。
圖6是示出了示例流替換過程的流程圖。
圖7是示出了示例流替換過程的示例方面的流程圖。
在各個附圖中,類似的標(biāo)號表示類似的元素。
具體實施例方式
圖1示出了示例數(shù)據(jù)流100,其中播放列表120包括可以動態(tài)改變的一個或多個流122。數(shù)據(jù)流100是一個示例,而并非意在限制。因此,在不脫離本公開范圍的情況下,可以對數(shù)據(jù)流100進(jìn)行各種修改。
在此使用的"播放列表"可以表示一個或多個內(nèi)容流的排序,這些內(nèi)容流進(jìn)行排隊,以便按照其排隊的順序來進(jìn)行流式傳輸和播放。在某些示例中,播放列表可以通過XML (可擴展標(biāo)記語言)實現(xiàn),并且可以包括標(biāo)識播放列表中內(nèi)容流的各種信息。在此使用的"內(nèi)容流,,或者"流,,可以表示能夠呈現(xiàn)給用戶的任何媒體或者數(shù)據(jù)項。例如,流可以包括視頻內(nèi)容、音頻內(nèi)容和/或音頻和視頻內(nèi)容的組合。在某些實現(xiàn)中,與播放列表相關(guān)聯(lián)的流還可以包括各種其他數(shù)據(jù),諸如基于文本的數(shù)據(jù)、靜態(tài)圖像數(shù)據(jù)和/或用戶定義的數(shù)據(jù)。可以按照各種格式來創(chuàng)建和存儲流,其可以使用各種壓縮方案(例如,有損壓縮和/或無損壓縮)以及各種數(shù)據(jù)結(jié)構(gòu)(例如,光柵 圖形和/或矢量圖形)。可以按照支持同步音頻和視頻的格式來創(chuàng)建
和存儲流。在某些示例中,流可以表示為MPEG-4(移動圖像專家組) 格式、SWF格式、FLV (Flash視頻文件)格式和/或F4V格式。各 種其他格式也是可能的,包括波形音頻(WAV)、音頻互換文件格 式(AIFF)、自由無損音頻編解碼器(FLAC) 、 Apple無損、Windows Media Audio ( WMA ) 、 MP3、高級音頻編碼(AAC ) 、 GIF (圖像 互換格式)、PNG(便攜式網(wǎng)絡(luò)圖形)以及HTTP(超文本傳輸協(xié)議)。 其他格式也是可能的。
在數(shù)據(jù)流100的流式傳輸105階段期間,與播放列表120相關(guān) 聯(lián)的流122可以從源110流式傳輸?shù)讲シ牌?50。在此使用的"流式" (或者用作動詞時的術(shù)語"流式傳輸")表示遞送流的比特,使得 在將該流遞送給用戶的同時連續(xù)地向用戶顯示該流。在將內(nèi)容流式 傳輸?shù)侥康牡貢r,在遞送比特的同時在目的地顯示該內(nèi)容,繼而丟 棄該內(nèi)容,而不將其持久地本地保存在目的地。
流源110例如可以包括媒體服務(wù)器或者網(wǎng)絡(luò)中心,其配置用于 通過網(wǎng)絡(luò)(諸如,互聯(lián)網(wǎng))流式傳輸內(nèi)容。在某些實現(xiàn)中,流源110 可以包括可從CA, San Jose的Adobe Systems公司獲得的Adobe Flash⑧媒體服務(wù)器(FMS)系統(tǒng)。流源110可以維護(hù)播放列表120。 在某些示例中,播放列表120中的每個流122可以與存儲在流源110 中或流源110可訪問的相應(yīng)文件相關(guān)聯(lián)。例如,每個流122可以與 流源110維護(hù)的或者可訪問的FLV或者其他類型的文件相關(guān)聯(lián)。播 放列表120可以包括指向與內(nèi)容流122對應(yīng)的文件的指針。
播放器150可以包括為最終用戶處理和顯示流的任何機制。播 放器150例如可以包括客戶端側(cè)虛擬機,其配置作為單機播放器或 者^'J覽器(i者3口, Mozilla Firefox、 Opera、 Safari以及Internet Explorer ) 的插件。在某些示例中,播放器150可以包括Adobe Flash⑧播放器 運行時(可以從CA, San Jose的Adobe Systems公司獲得),其例如 可以運行SWF文件、FLV文件和/或F4V文件。在流式傳輸105期間,可以在流源IIO與播放器150之間建立 持久連接。該連接可以促進(jìn)從源IIO到播放器150的流式傳輸105。 在某些實現(xiàn)中,可以使用TCP (傳輸控制協(xié)議)、UDP (用戶數(shù)據(jù) 報協(xié)議)和/或其他協(xié)議來創(chuàng)建該連接。例如,播放器150可以使用 RTMP (實時消息收發(fā)協(xié)議)和/或RTMFP (實時々某體流協(xié)議)來連 接至流源110。
播放列表120可以按照各種方式來創(chuàng)建。在某些示例中,播放 列表120可以由流源IIO創(chuàng)建。在某些示例中,在播放器150上運 行的客戶端側(cè)應(yīng)用160可以參與播放列表120的創(chuàng)建。例如,應(yīng)用 160可以對流源IIO進(jìn)行一個或多個調(diào)用124,以便將各個內(nèi)容流(例 如,流122)添加到播放列表120中。這些流可以一個接一個的附加, 以便按照同樣的順序在列表中播放。在某些示例中,如下所述,可 以在指定的插入點和刪除點處在播放列表中插入流或者刪除流。流 源110維護(hù)播放列表120,并且在流式傳輸105階段期間將這些流的 比特遞送至播放器150。
在此使用的術(shù)語"應(yīng)用"表示具有用戶可感知的某些已定義目 的的任何計算機程序。應(yīng)用可以包括各種計算機程序(也稱為程序、 軟件、軟件應(yīng)用、軟件模塊或者代碼),其包含可由處理器執(zhí)行和/ 或解釋的指令。應(yīng)用可以包括一個或多個文件,這些文件包含各種
信息,諸如源代碼、機器代碼、庫、數(shù)據(jù)、文檔、配置信息、圖標(biāo) 或者應(yīng)用以及用于該應(yīng)用的安裝過程可以使用的任何其他資源。應(yīng) 用(或者其部分)可以是依賴于平臺的或者平臺無關(guān)的。在某些實 現(xiàn)中,應(yīng)用160可以表示使用各種應(yīng)用開發(fā)框架和/或web開發(fā)工具 創(chuàng)建的應(yīng)用,諸如Adobe Flex BUILDER 軟件、Adobe Flash 軟件和Adobe Dreamweaver⑧軟件,這些軟件可以從CA, San Jose 的Adobe Systems 乂>司獲4尋。
在某些示例中, 一個或多個發(fā)布者190(其在地理上可以是分散 的)可以向流源110提供內(nèi)容流(例如,流122),以便包含到播放 列表120中。發(fā)布者可以包括創(chuàng)建、更新、分發(fā)、擁有或者以其他方式控制或管理多媒體內(nèi)容的任何實體。發(fā)布者190例如可以包括
軟件開發(fā)者。備選地,發(fā)布者190例如可以包括最終用戶。在某些 示例中,發(fā)布者190可以向流源IIO提供錄制的或者即時的內(nèi)容(例 如,來自網(wǎng)絡(luò)攝像頭),以便流式傳輸給其他用戶。在某些實現(xiàn)中, 發(fā)布者190可以與應(yīng)用160或者其他應(yīng)用相關(guān)聯(lián)。
在應(yīng)用160正在運行并且開始顯示流(例如,流122)的同時, 可以開始進(jìn)行多個運4亍時以及動態(tài)行為。例如,應(yīng)用160可以部署 到具有多樣化的網(wǎng)絡(luò)和系統(tǒng)可用性程度的各種異構(gòu)環(huán)境中。相同的 應(yīng)用可以在具有高帶寬可用性的環(huán)境處運行,或是在帶寬不足的端 點處運行,所述端點不能足夠快地接收流從而按照視頻被編碼的速 率來顯示它們。系統(tǒng)處理資源也可能變化,這例如是由其他應(yīng)用的 需求引起的。
為了考慮到這些運行時和動態(tài)行為以及其他客戶端側(cè)狀況,數(shù) 據(jù)流100包括事件監(jiān)測170階段。事件監(jiān)測170可以在貫穿數(shù)據(jù)流 100中各個時間點進(jìn)行(包括流式傳輸150期間)?;诳尚薷牡脑O(shè) 置,事件監(jiān)測170可以是周期性的(例如,每秒、每30秒、每5分 鐘等)。事件監(jiān)測170對于最終用戶而言可以是透明的,并且其可 以在最終用戶的控制和指示下執(zhí)行。
在事件監(jiān)測170期間,播放器150可以監(jiān)測和/或訪問各種客戶 端側(cè)狀況,這些狀況可以用作動態(tài)改變180播放列表120的基礎(chǔ)。 例如,事件監(jiān)測170可以包括檢測和/或訪問運行時性能信息172和/ 或關(guān)于用戶偏好174的信息。運行時性能信息172例如可以包括 網(wǎng)絡(luò)帶寬、客戶端側(cè)處理資源(例如,處理器利用率)、功率狀況 (例如,電池電量低、節(jié)能操作模式等)、客戶端側(cè)音頻繪制能力 (例如,揚聲器能力、聲道屬性(多聲道、立體聲、單聲道)、支 持的頻率、高清能力等)、客戶端側(cè)視頻繪制能力(例如,支持的 分辨率、屏幕大小、高清能力等)以及與流122的客戶端側(cè)回放相 關(guān)聯(lián)的各種其他性能狀況。關(guān)于用戶偏好174的信息例如可以包括 用戶活動、閱覽歷史和/或影響用戶活動和偏好的各種其他狀況。該信息可以包括如下指示用戶點擊或者以其他方式選擇特定的流(例
如,商業(yè)廣告)和/或用戶閱覽特定內(nèi)容(例如,播放列表中的流)
所花費的時間量。在某些實現(xiàn)中,用戶偏好可以實現(xiàn)在應(yīng)用160中。 運行時性能信息172和/或用戶偏好174可以用來構(gòu)建用于播放列表 改變180的啟發(fā)。
在數(shù)據(jù)流IOO期間的各個時刻,播放器150可以向應(yīng)用160提 供事件監(jiān)測170的結(jié)果??梢岳每刂七壿?65來配置應(yīng)用160,該 控制邏輯165允許應(yīng)用進(jìn)行關(guān)于改變180播放列表120的決策。在 某些示例中,該控制165可以使用API來實現(xiàn)。播放器150可以在 播放列表120的回放期間向應(yīng)用160提供事件監(jiān)測結(jié)果,而應(yīng)用160 可以(使用控制165)進(jìn)行關(guān)于動態(tài)改變180播放列表120中一個或 多個流(包括播放器150當(dāng)前正在播放的流)的動態(tài)決策。盡管將 控制165示出為應(yīng)用160的一部分,但是控制165可以包括在應(yīng)用 160、播放器150或者應(yīng)用和播放器之中。在某些示例中,控制165 的一個或多個方面可以在應(yīng)用160和播放器150之間分布,作為用 于其他應(yīng)用的可分布式庫,以便將其他應(yīng)用嵌入在內(nèi)。
應(yīng)用160例如可以通過向流源110提供適當(dāng)?shù)姆础┵F175,來實現(xiàn) 對播放列表的動態(tài)改變180。反饋175可以包括針對基于事件監(jiān)測 170的動態(tài)改變180的請求。動態(tài)改變180可以包括對播放列表120 中的一個或多個流的任何類型的改動。示例改變包括但不限于在 開始流式傳輸之前或者甚至在流式傳輸之中(此時原始項已經(jīng)在進(jìn) 行流式傳輸),將播放列表中的項替換為另一項;對播放列表中的 流進(jìn)行重新排序;以及從播放列表中移除一個或多個流;向播放列 表中插入新的流。替換流可以包括將播放列表中的特定流切換為 該流的不同版本(例如,從500kbps視頻切換為300kbps視頻)。替 換流還可以包括將播放列表中的流切換為另一流,此另一流的內(nèi) 容與所替換流的內(nèi)容無關(guān)和/或不同。
在某些示例中,反饋175可以實現(xiàn)響應(yīng)于降級狀況的改變180, 其中降級狀況諸如降低的網(wǎng)絡(luò)帶寬、降低的功率、降低的處理能力等。在這些情況下,改變180可以包括將播放列表120的流替換為
相同內(nèi)容的降檔或者降級版本。例如,為了避免由于檢測到的網(wǎng)絡(luò)
帶寬下降而使視頻斷續(xù),應(yīng)用160可以請求流源110將播放列表120 中的一個或多個流替換為較低比特率版本。作為另一示例,應(yīng)用160 可以請求流源IIO將播放列表120的一個或多個流替換為較低清晰 度版本(例如,從高清晰度到標(biāo)準(zhǔn)清晰度)。其他示例改變180可 以包括從全屏版本切換為部分屏幕版本(例如,在瀏覽器中)、 從混合音頻/視頻切換為純音頻(或者純視頻)、從高分辨率切換為 低分辨率,等等。
反之,為了利用客戶端側(cè)環(huán)境的全部能力,反饋175可以實現(xiàn) 響應(yīng)于改進(jìn)狀況的改變180,其中改進(jìn)狀況例如提高的網(wǎng)絡(luò)帶寬、提 高的功率、提高的處理能力等。在這些情況下,改變180可以包括 將播放列表120的流替換為相同內(nèi)容的升級版本。例如,應(yīng)用160 可以請求流源IIO將播放列表120的一個或多個流替換為較高比特 率版本。作為另一示例,應(yīng)用160可以請求流源110將播放列表120 的一個或多個流替換為較高清晰度版本(例如,從標(biāo)準(zhǔn)清晰度到高 清晰度)。其他示例替換180包括從部分屏幕版本(例如,在瀏覽 器中)切換為全屏版本、從純音頻(或者純視頻)切換為混合的音 頻/視頻、從立體聲版本切換為多聲道版本、乂人低分辨率切換為高分 辨率等。
除了實現(xiàn)涉及流的升級和降級版本的替換之外,反饋175可以 實現(xiàn)以下改變,這些改變將播放列表中的流替換為具有無關(guān)和/或不 同內(nèi)容的無關(guān)流或者不同流。這些類型的改變180可以響應(yīng)于^r測 到的用戶偏好,諸如閱覽歷史。例如,基于閱覽歷史,應(yīng)用160可 以確定播放列表120中的第一流應(yīng)當(dāng)替換為與第一流無關(guān)和/或不 同的第二流(其可以不在播放列表中)。第一流和第二流例如可以 是面向不同受眾的不同商業(yè)廣告。
為了實現(xiàn)改變180,反饋175可以包括一個或多個請求,所述請 求包含標(biāo)識期望的改動的適當(dāng)信息。例如,為了實現(xiàn)流替換,反饋175可以包括如下請求,該請求包括當(dāng)前在播放列表120中的流的名 稱,以及替換流的名稱。在接收到該請求之后,流源110可以在播 放列表中查找舊流名稱,并將其替換為新流。如果流源110已經(jīng)在 流式傳輸舊流的比特,則其可以計算不會在回放期間在播放器150 上造成任何干擾或者贗像的情況下,切換為新流的最近時幀。
不論是請求流的升級/降級版本還是具有無關(guān)和/或不同內(nèi)容的 流,應(yīng)用160可以在反饋175中包括控制信息,該控制信息指定期 望的切換類型以及期望的切換行為。此控制信息可以基于根據(jù)事件 監(jiān)測170構(gòu)建的各種啟發(fā)。對于將流替換為具有無關(guān)或者不同內(nèi)容 的其他流而言,控制信息可能尤其有用。例如,當(dāng)新流和舊流;波此 完全無關(guān)時,如果流源110已經(jīng)開始流式傳輸舊流,則應(yīng)用160和/ 或播放器150可能不希望切換流,因為這樣做將導(dǎo)致回放期間的內(nèi) 容突變。由此,應(yīng)用160和/或播放器150具有用來指定播放列表流 是否應(yīng)當(dāng)整體或者部分切換的控制。播放器150和流源110還可以 具有指定播放列表120的插入或者刪除模式的控制能力,從而使新 流可以插入在舊流之前或者之后,或者可以從播放列表中刪除舊流。 流源IIO和播放器150還可以具有指定應(yīng)當(dāng)替換舊流的新流的開始 點或者偏移以及長度的能力。
在某些實現(xiàn)中,播放列表(例如,播放列表120)可以在客戶端 創(chuàng)建(例如,由客戶端側(cè)應(yīng)用創(chuàng)建),而在通過網(wǎng)絡(luò)流式傳輸內(nèi)容 的服務(wù)器(例如,流源110)處改變。各種其他實現(xiàn)同樣位于本公開 的范圍之內(nèi)。例如,播放列表最初可以在媒體服務(wù)器處創(chuàng)建,并繼 而下載到客戶端,并在客戶端處改變。作為另一示例,播放列表最 初可以在服務(wù)器處創(chuàng)建,并繼而下載到客戶端。播放列表繼而在服 務(wù)器處改變,并且可以將改變后的版本提供給客戶端。在另一實現(xiàn) 中,播放列表可以由執(zhí)行流式傳輸以外的服務(wù)器來主控。例如,一 個服務(wù)器可以執(zhí)行流式傳輸,而另一服務(wù)器可以主控播放列表和改 變邏輯。
圖2示出了按照至少某些實現(xiàn)的示例播放列表200。圖2僅僅是示例性的,其他播放列表實現(xiàn)也在本公開的范圍之內(nèi)。如圖所示,
播放列表200可以包括一個或多個流210(1)-210(N)。每個流210可 以包括音頻內(nèi)容、視頻內(nèi)容或者二者。流210可以包括利用一個或 多個編解碼器(例如,H.264、 On2VP6和/或Sorenson Spark視頻編 解碼器)編碼的內(nèi)容。播放列表200可以通過XML、 ActionScript 或者任何其他適當(dāng)?shù)恼Z言來實現(xiàn)。播放列表200可以由流媒體服務(wù) 器(例如,Adobe Flash⑧媒體服務(wù)器系統(tǒng),可以從CA, San Jose 的Adobe Systems公司獲得)來維護(hù),并且插。改列表210中的每個流 210可以對應(yīng)于該々某體服務(wù)器維護(hù)或者可訪問的文件(例如,SWF 文件、FLV文件和/或F4V文件)。響應(yīng)于來自播放器應(yīng)用的命令, 可以在一個或多個數(shù)據(jù)結(jié)構(gòu)(例如,F(xiàn)MS數(shù)據(jù)結(jié)構(gòu))中內(nèi)部維護(hù)播 放歹'J表。
在某些實現(xiàn)中,流210可以包括利用一個或多個關(guān)鍵幀220編 碼的一個或多個流,以及用于改變關(guān)鍵幀以重現(xiàn)關(guān)4建幀之間的中間 幀或者增量幀225的中間信息。在流的回放期間,可以對已編碼的 流進(jìn)行解壓縮和解碼。關(guān)鍵幀220可以包括內(nèi)容的部分,并且可以 提供解壓縮期間所需的信息,以適當(dāng)?shù)馗嘛@示(例如,以反映內(nèi) 容的變動,諸如圖像移動)。流中所包括中間信息可以提供更新, 該更新能夠漸進(jìn)式地重現(xiàn)內(nèi)容。只要流(例如, 一見頻)的內(nèi)容無法 使用中間信息根據(jù)先前的關(guān)鍵幀進(jìn)行重現(xiàn)時,流210便可以包括新 的關(guān)鍵幀220。
在某些實現(xiàn)中,播放列表200可以與時間線相關(guān)聯(lián)。時間線可 以將播放列表200的總計運行時間劃分為分段或者幀。播放列表200 的每個流210可以在時間線上的指定位置處放置在時間線上。在某 些示例中,播放列表200可以在服務(wù)器上存儲的列表類數(shù)據(jù)結(jié)構(gòu)中 實現(xiàn)。播放列表200中的每個流210可以具有開始時間和結(jié)束時間。 播放列表的流可以首尾相接地設(shè)置,以構(gòu)建組合時間線。
在某些實現(xiàn)中,改變播放列表可以包括改變與播放列表相關(guān)聯(lián) 內(nèi)容和時間線。例如,在將新流包含到播放列表中時,可以按照新流對原始時間線重新排序。由此,如果特定流切換為較短的流,則 相應(yīng)的時間線可以縮#豆。
圖3示出了示例數(shù)據(jù)處理環(huán)境300,其中,播放列表可以動態(tài)改 變。獨立的計算平臺310和315每個都包括硬件和軟件。計算平臺 310可以配置為流媒體服務(wù)器,而平臺315可以配置為回放客戶端 (例如,最終用戶計算機)??蛻舳?15例如可以包括個人計算機 或者工作站、膝上型計算機、移動電話、機頂盒、手持設(shè)備或者可 以提供回放功能的任何其他適當(dāng)?shù)脑O(shè)備。
計算機平臺310和315在地理上可以是分散的,并且經(jīng)由網(wǎng)絡(luò) 375可操作地耦合。網(wǎng)絡(luò)375可以包括一個或多個電信網(wǎng)絡(luò),諸如計 算機網(wǎng)絡(luò)、電話或者通信網(wǎng)絡(luò)、因特網(wǎng)等。網(wǎng)絡(luò)375可以包括共享 的、公共的或者專用的數(shù)據(jù)網(wǎng)絡(luò),包括廣域網(wǎng)(例如,WAN)或者 局域網(wǎng)(例如,LAN)。
在圖3所示的示例配置中,計算機平臺310和/或315上的硬件 可以包括以下一個或多個網(wǎng)絡(luò)接口 352,處理器354,輸出設(shè)備356, 輸入設(shè)備358,存儲設(shè)備360以及其他設(shè)備362。 一個或多個系統(tǒng)總 線可以將這些組件互連。這些元件的數(shù)目、標(biāo)識和布置并不限于所 示情況,而是可以包括附加的和/或不同的元件或者將其與所示元件 耦合。此外,平臺310和315可以包括少于所示的組件。盡管利用 類似的組件來描繪,但是平臺310和315可以不同地配置,每個平 臺具有與附圖中所示相比較多、較少或者不同的元件。例如,客戶
端平臺315可以是移動設(shè)備,其具有少于或者不同于服務(wù)器310中 包括的組件。
網(wǎng)絡(luò)接口 352輔助與網(wǎng)絡(luò)(諸如,網(wǎng)絡(luò)375 )的連通性。網(wǎng)絡(luò)接 口 352可以是用于輔助計算機平臺與網(wǎng)絡(luò)375之間的單向或者雙向 數(shù)據(jù)傳輸?shù)娜魏芜m當(dāng)?shù)挠芯€機制(例如,IEEE (國際電子電氣工程 師協(xié)會)1394、通用串行總線(USB )等)或者無線機制(例如,IEEE 802.11 ,藍(lán)牙⑧、IrDA⑧等)。網(wǎng)絡(luò)接口 352可以包括一個或多個 網(wǎng)絡(luò)卡和/或數(shù)據(jù)和通信端口 。處理器354可以執(zhí)行來自存儲設(shè)備的指令,在計算機平臺的組 件之間路由信息,和/或執(zhí)行對數(shù)據(jù)的各種操作。每個平臺310和315 可以包括任何數(shù)目的通用處理器和/或?qū)S锰幚砥?,其協(xié)同操作或者 獨立操作。在某些示例中,處理器354可以包括一個或多個專用集 成電路(ASIC)和/或各種其他電路。處理器354可以包括各種邏輯 元件和架構(gòu)(例如,馮諾依曼架構(gòu)、平行架構(gòu)等),并且可以執(zhí)行 各種類型的計算操作,諸如串行計算和并行計算。
輸出設(shè)備356可以呈現(xiàn)文本、圖像、視頻、音頻或者任何其他 類型的信息。輸出設(shè)備356的示例包括視頻顯示設(shè)備、音頻顯示 設(shè)備、打印機等。輸出設(shè)備356可以顯示用于在計算機平臺上運行 的各種軟件應(yīng)用和工具、以及操作系統(tǒng)所需的操作系統(tǒng)程序的用戶 接口信息。輸出設(shè)備356可以借助于陰極射線管、液晶、硅上液晶、 發(fā)光二極管、氣體等離子、激光或者其他類型的顯示機制來呈現(xiàn)信 息。輸出設(shè)備356還可以配置用于接收、生成和/或呈現(xiàn)全息或者其 他可視表示。輸出設(shè)備356可以配置用于聽覺式呈現(xiàn)信息,并且其 可以包括用于接收和呈現(xiàn)音頻信號的適當(dāng)組件。每個平臺310和315 可以包括任意數(shù)目的類似或者不同的輸出設(shè)備。
輸入設(shè)備358可以包括諸如鍵盤、鼠標(biāo)、觸筆、指點設(shè)備、操 縱桿和/或觸屏的組件。輸入設(shè)備358還可以包括音頻或者視頻捕獲 設(shè)備(例如,攝像機、麥克風(fēng)等)和/或用于捕獲和處理發(fā)射(例如, 熱量、運動、聲音等)的各種傳感器。其還可以包括一個或多個信 息讀取設(shè)備(例如,掃描儀、硬盤驅(qū)動等)和/或輸入端口。每個平 臺310和315可以包括任意數(shù)目的相似或者不同的輸入設(shè)備。同樣 可以使用其他類型的設(shè)備來提供與用戶的交互;例如,提供給用戶 的反饋可以是任意形式的感官反饋(例如,視覺反饋、聽覺反饋或 者觸覺反饋);并且來自用戶的輸入可以按照任意形式來接收,包 括聲音輸入、語音輸入或者觸覺輸入。
存儲設(shè)備360可以為系統(tǒng)提供大容量存儲、工作(例如,高速 緩存)存儲器和/或緩沖區(qū)空間。存儲設(shè)備360可以使用各種適當(dāng)?shù)拇鎯ζ髟韺崿F(xiàn)。存儲器元件例如可以包括固態(tài)元件、光學(xué)元 件、聚合體元件、磁性元件和/有機物元件(例如,晶體)。存儲器 元件可以是易失性的或者非易失性的,并且可以隨機訪問或者順序
訪問。存儲設(shè)備360可以包括隨機訪問存儲器(RAM )、閃速RAM、 只讀存儲器(ROM)、可擦寫可編程只讀存儲器(EPROM)、以及 電可擦寫可編程只讀存儲器(EEPROM)。存儲設(shè)備360可以包括 一個或多個固定硬盤驅(qū)動(例如,硬盤驅(qū)動、RAID存儲設(shè)備等)以 及一個或多個可移動盤驅(qū)動(例如,CD-ROM驅(qū)動、DVD驅(qū)動等)。 存儲設(shè)備360還可以包括一個或多個數(shù)據(jù)存儲庫(例如,關(guān)系數(shù)據(jù) 庫、分布式數(shù)據(jù)庫和/或面向?qū)ο蟮臄?shù)據(jù)庫),其對于平臺而言可以 是本地的和/或遠(yuǎn)程的。在某些示例中,存儲設(shè)備360可以包括一個 或多個本地的和/或遠(yuǎn)程的基于網(wǎng)絡(luò)的存儲架構(gòu),諸如存儲區(qū)域網(wǎng)絡(luò) (SAN)。每個平臺310和315可以包括任意數(shù)目的、獨立配置的 存儲設(shè)備元件360或者與之交互。
存儲設(shè)備360可以存儲用于各種應(yīng)用的程序代碼、操作系統(tǒng)320、 應(yīng)用編程接口、應(yīng)用例程、中間件組件和/或其他可執(zhí)行指令。存儲 設(shè)備360可以包括用于通信(例如,TCP/IP通信)的程序代碼和信 息、中間件組件、內(nèi)核和設(shè)備驅(qū)動、不可變低層系統(tǒng)代碼、用于基 本輸入和輸出的數(shù)據(jù)、以及各種配置信息。
在某些實現(xiàn)中,存儲設(shè)備360包括至少一個計算機可讀介質(zhì), 其有形地包含一個或多個計算機程序。計算機程序可以包含指令, 當(dāng)這些指令由處理器執(zhí)行時,其實現(xiàn)各種方法(例如,下文描述的 方法)和/或系統(tǒng)。計算機可讀介質(zhì)一般地表示用來為處理器提供機 器指令和/或數(shù)據(jù)的任何類型的計算機程序、裝置和/或設(shè)備(例如, 磁盤、光盤、存儲器、可編程邏輯器件(PLD))。適于存儲計算 機程序和數(shù)據(jù)的計算機可讀介質(zhì)可以包括以下形式非易失性存儲 器、介質(zhì)和存儲器設(shè)備,作為示例,包括半導(dǎo)體存儲器設(shè)備,例如 EPROM、 EEPROM和閃存設(shè)備;磁盤,例如內(nèi)部硬盤或者可移動盤; 磁光盤;以及CD ROM和DVD-ROM盤。其他設(shè)備362例如可以包括用于視頻和影片編輯的各種設(shè)備。 示例包括視頻控制器、視頻錄制器、音頻錄制系統(tǒng)、備用電源等。 而且,其他設(shè)備362可以包括任何數(shù)字打印引擎或者標(biāo)記引擎、顯 示監(jiān)視器或者能夠在紙張、膠片、顯示器屏幕或者其他輸出介質(zhì)上 重現(xiàn)彩色或者灰度像素的其他光柵輸出設(shè)備。
如圖3所示,服務(wù)器平臺310包括操作系統(tǒng)320和流式傳輸模 塊330,其可以包括和/或利用改變模塊335。操作系統(tǒng)320可以包括 用于管理計算資源和主控應(yīng)用的任何適當(dāng)?shù)牟僮飨到y(tǒng)(OS),例如 WINDOWS OS 、 MAC OS 、 UNIX OS 、 LINUX OS等。
流式傳輸模塊3 3 0可以包括用于構(gòu)建播放列表以及通過網(wǎng)絡(luò)3 7 5 流式傳輸播放列表的關(guān)聯(lián)內(nèi)容的任何適當(dāng)組件。流式傳輸模塊330 可以實現(xiàn)在服務(wù)器模塊或者應(yīng)用340中或者實現(xiàn)為其一部分,其可 以配置用于與客戶端平臺315的服務(wù)組件(例如,播放器370 )交互。 流式傳輸模塊330可以配置用于接收數(shù)字媒體,并且按照各種協(xié)議 通過網(wǎng)絡(luò)375將接收到的媒體流式傳輸給客戶端平臺315。流式傳輸 模塊330可以配置用于存儲和/或訪問 一個或多個播放列表(例如, 播放列表200),并將這些播放列表中的內(nèi)容流(例如,流 210(1)-210(n))流式傳輸給客戶端平臺315。在某些示例中,播放列 表和相關(guān)聯(lián)的內(nèi)容流可以本地存儲在服務(wù)器平臺310上(例如,存 儲在存儲設(shè)備360中)。播放列表也可以在不同的機器間分布,如 服務(wù)器的邊(edge) /源配置中一樣。
在某些示例中,應(yīng)用可以進(jìn)行對服務(wù)器平臺310的調(diào)用,以便 將個體內(nèi)容流添加到特定的播放列表(例如,播放列表120)中。應(yīng) 用可以隨同請求提供內(nèi)容流,或者可以提供標(biāo)識流的位置的信息。 流式傳輸模塊330可以獲得這些流,并且將其一個接一個的附加到 播放列表中。在流式傳輸內(nèi)容時,流式傳輸模塊330繼而可以將這 些流的比特遞送給客戶端平臺315。
在某些示例中,流式傳輸模塊330可以接收已經(jīng)使用 一個 多 個編解碼器進(jìn)行了格式化的流。在某些示例中,流式傳輸模塊300可以接收未格式化(例如,未壓縮)的媒體(例如,從用戶的網(wǎng)絡(luò) 攝像頭饋送的即時視頻),并且可以配置用于使用一個或多個編解 碼器將接收到的媒體格式化到內(nèi)容流中。由此,在某些實現(xiàn)中,流
式傳輸模塊330可以包括和/或利用一個或多個編解碼器(諸如, H.264編解碼器、On2VP6編解碼器、Sorenson Spark編解碼器等) 來壓縮接收到的流,以便流式傳輸給客戶端平臺315。在某些實現(xiàn)中, 流式傳輸模塊330可以接收已經(jīng)在特定編解碼器中進(jìn)行了編碼的即 時視頻饋送,并且在將該饋送流式傳輸給客戶端時,流式傳輸模塊 330可以改動該編解碼器類型。
流式傳輸模塊330可以通過一個或多個接口來接收媒體,并且 可以經(jīng)由一個或多個其他接口來傳送內(nèi)容流。流式傳輸模塊330可 以配置用于按照各種傳送速率、分辨率、格式等來傳送內(nèi)容流(例 如,即時纟見頻或者其他即時 流)。流 式傳輸內(nèi)容流的特定方式可以 取決于改變模塊335。
改變模塊335可以處理通過網(wǎng)絡(luò)375從客戶端平臺315接收到 的、針對動態(tài)改變的請求。改變模塊335可以配置用于接收這些請 求,并且采取適當(dāng)動作來實現(xiàn)播放列表的改動,其中播放列表可以 本地存儲在服務(wù)器平臺310上(例如,存儲在存儲設(shè)備360中)。 例如,改變模塊315可以在播放列表中查找所標(biāo)識的流,并且將該 流替換為其他流。改變模塊335例如還可以配置用于重新布置播放 列表中的流、向播放列表添加流和/或從播放列表移除流。在某些示 例中,改變模塊335可以包括如下功能計算在不會在回放中造成 干擾或者贗像的情況下切換流的適當(dāng)時幀。而且,在某些示例中, 改變模塊335可以包括如下功能指定播放列表的插入和刪除模式, 使得新流插入在舊流之前或者之后,或者將舊流從播放列表中刪除。 改變模塊335還可以指定新流的開始點或者偏移以及長度。
在某些實現(xiàn)中,改變模塊335(或者服務(wù)器平臺310的其他組件) 可以包括和/或訪問一個或多個緩沖區(qū)。在某些示例中,改變模塊335 可以配置用于發(fā)起或者觸發(fā)對流的緩沖,以便輔助播放列表改變。例如,當(dāng)在即時流之間切換時,改變模塊335可以在切換發(fā)起時開
始對流進(jìn)行緩沖,并繼而計算切換流的適當(dāng)點。
流式傳輸模塊330和改變模塊335可以包括和/或使用一個或多 個數(shù)據(jù)結(jié)構(gòu)以及可以對各種數(shù)據(jù)進(jìn)行操作的一個或多個計算算法。 這些模塊可以包括用于執(zhí)行各種任務(wù)的指令集,并且這些模塊可以 輸出信息以供用戶或者其他系統(tǒng)使用。在某些實現(xiàn)中,這些模塊可 以包括一個或多個引擎,其可以輸出代碼,充當(dāng)對其他系統(tǒng)、引擎 或者過程的輸入。這些模塊可以包括和/或使用各種硬件和固件元件。
客戶端平臺315可以包括適當(dāng)?shù)牟僮飨到y(tǒng)320、播放器370以及 一個或多個應(yīng)用380。播放器370可以包括基于客戶端的軟件,其運 行Flash⑧和/或其他應(yīng)用,并且支持矢量圖形和光柵圖形、音頻和視 頻的雙向流式傳輸,以及一個或多個腳本或者其他語言(例如, JavaScript、 ActionScript等)。在某些示例中,應(yīng)用380 (例如,基 于Flash⑧的應(yīng)用)在操作期間可能依賴于播放器370。此外,播放 器370可以將Flash⑧以及其他應(yīng)用與操作系統(tǒng)320集成,以便向客 戶端平臺315提供各種功能和特征。在某些示例中,播放器370可 以實現(xiàn)為虛擬機。播放器370例如可以包括Adobe Flash Player 運行時。
播放器370和應(yīng)用380不限于Flash⑧平臺或者基于Flash⑧的應(yīng) 用。在不脫離本公開范圍的情況下,播放器370可以在各種其他平 臺和環(huán)境中實現(xiàn)和運行,和/或配置用于運行和/或支持利用各種其他 平臺和環(huán)境創(chuàng)建的應(yīng)用。
在某些示例中,播放器370可以實現(xiàn)為在客戶端平臺315上運 行的獨立組件和/或?qū)崿F(xiàn)為嵌入式組件。在某些實現(xiàn)中,播放器370 可以配置用于與Web應(yīng)用結(jié)合運行。在某些示例中,播放器370可 以實現(xiàn)為"插件"型組件,其向一個或多個主機應(yīng)用(例如,應(yīng)用 380 )提供各種功能或者擴展一個或多個主機應(yīng)用的功能集。此類主 機應(yīng)用可以向插件」提供服務(wù),以允許插件與主才幾應(yīng)用交互。主4幾應(yīng) 用和/或OS可以包括允許添加插件以及插件與主才幾應(yīng)用交互的API。200910168375.8 這些應(yīng)用380可以包括各種計算機程序,其包含可以由一個或 多個處理器(例如,處理器354 )執(zhí)行的指令。按照本公開的計算機 程序可以通過各種編程語言來實現(xiàn),諸如高級或者中級的面向過程 或者面向?qū)ο蟮木幊陶Z言(例如,C、 C++、 Java、 JavaScript、 PHP、 Visual Basic等)、低級匯編語言(Intel 80x86、 ARM等)和/或各種 其他語言。
在某些實現(xiàn)中,客戶端平臺可以包括運行時環(huán)境,其提供各種 實用服務(wù)以供應(yīng)用380使用。這些實用服務(wù)可以包括文件系統(tǒng)訪問、 窗口和菜單控制、與OS夕卜殼(shell)(例如,WINDOWS OS Explorer 或者M(jìn)AC OS Finder)的集成、文件擴展注冊、文檔處理支持(例 如,超文本標(biāo)記語言(HTML)和便攜式文檔格式(PDF)引擎)、 字符串操作、圖形、聯(lián)網(wǎng)、通知工具、尋址外設(shè)或者可以使用運行
時庫提供的其他類型的功能。而且,運行時環(huán)境可以包括API,其向 應(yīng)用提供服務(wù),并且對運行時環(huán)境配置為在其上運行的各種硬件和 OS平臺的細(xì)節(jié)進(jìn)行抽象。
在此使用圖3中所示的分立模塊(例如,模塊330、 335和370 ) 僅僅出于說明目的,各種其他布置也在本公開的范圍之內(nèi)。例如, 這些模塊的各種功能可以在比圖示模塊更多或者更少的模塊間分布 或者存在于其中。各模塊的特定配置、布置和特征集通常將取決于 特定的操作環(huán)境。
圖4是示出了按照本公開的示例應(yīng)用更新分發(fā)過程400的流程 圖。過程400可以由數(shù)據(jù)處理環(huán)境300中的一個或多個元件4丸行。 過程400可以由執(zhí)行來自存儲設(shè)備的一個或多個指令的一個或多個 處理器(例如,客戶端平臺315中的處理器354 )來執(zhí)行。過程400 可以包括接收與播放列表相關(guān)聯(lián)的流(410);訪問客戶端側(cè)回放 信息(420);請求改變播放列表(430);以及按照響應(yīng)于該請求 的播放列表改變,來顯示播放列表的流(440)。
過程400可以接收與播放列表相關(guān)聯(lián)的流(410)。這可以包括 客戶端(例如,客戶端平臺315)從服務(wù)器(例如,服務(wù)器310)接收播放列表(例如,播放列表220)的流(例如,流210)。在某些 示例中,所接收的播放列表可以由客戶端側(cè)應(yīng)用創(chuàng)建??蛻舳藗?cè)應(yīng) 用可以與服務(wù)器交互并且向服務(wù)器發(fā)送請求,以建立播放列表。播 放列表可以包括流的排序,這些流進(jìn)行排隊以便按照所述排序從服 務(wù)器進(jìn)行客戶端側(cè)回放。在某些實現(xiàn)中,播放列表可以本地存儲在 服務(wù)器側(cè)。
與播放列表相關(guān)聯(lián)的流例如可以包括音頻流、視頻流以及具有 音頻和視頻二者的混合流。在某些實現(xiàn)中,播放列表的流可以包括 即時流。例如,流可以包括來自正在錄制現(xiàn)場足球比賽的信息捕獲 設(shè)備(例如,攝像機)的流。播放列表可以包括即時流和錄制流的 混合。作為示例,播放列表可以包括正在錄制的足球比賽的即時流, 并混合有預(yù)先錄制的對應(yīng)于商業(yè)廣告或者廣告的流。在某些示例中, 與播放列表關(guān)聯(lián)的流可以包括各種數(shù)據(jù)內(nèi)容,諸如文本數(shù)據(jù)、靜態(tài) 圖像數(shù)據(jù)和/或其他用戶定義的經(jīng)配置(例如,經(jīng)過串行化以便傳輸) 的數(shù)據(jù)格式。
過程400可以訪問客戶端側(cè)回放信息(420)。這例如可以包括 訪問與播放列表的至少 一 個關(guān)聯(lián)流的接收和回放相關(guān)聯(lián)的客戶端側(cè) 狀況。訪問客戶端側(cè)回放狀況(420)可以包括訪問運行時性能信息 和/或用戶偏好。如上所述,運行時性能信息例如可以包括網(wǎng)絡(luò)帶 寬、客戶端側(cè)處理資源、功率狀況、客戶端側(cè)音頻繪制能力、客戶 端側(cè)視頻繪制能力以及與接收到的流的客戶端側(cè)回放相關(guān)聯(lián)的各種 其他性能狀況。用戶偏好信息例如可以包括用戶活動、閱覽歷史 和/或反映用戶活動或者偏好的各種其他狀況。該信息例如可以包括 如下指示用戶點擊或者以其他方式選擇了特定的流和/或用戶閱覽 特定內(nèi)容所花費的時間量。
在某些示例中,訪問客戶端側(cè)回放信息(420 )可以包括監(jiān)測(例 如,通過客戶端平臺315上的播放器370 )客戶端側(cè)狀況。監(jiān)測可以 周期性地進(jìn)行,其或者獨立于客戶端設(shè)備的用戶進(jìn)行,或者在用戶 的指示之下進(jìn)行。例如,播放器370可以跟蹤客戶端側(cè)狀況,并向客戶端側(cè)應(yīng)用提供信息,客戶端側(cè)應(yīng)用可以基于已建立的啟發(fā)來進(jìn) 行關(guān)于改變播放列表的決策。
響應(yīng)于所訪問的客戶端側(cè)回放信息,過程400可以請求改變播
放列表(430 )。這例如可以包括客戶端側(cè)應(yīng)用向服務(wù)器發(fā)送改變 播放列表的流的請求。在某些示例中,該請求可以標(biāo)識期望的播放 列表改變,并且可以包括控制播放列表改變的信息。
可以請求各種類型的改變。例如,過程400可以請求對4番方丈列 表中的多媒體流重新排序,從播放列表中移除流,和/或向播放列表 中插入新的流。請求可以包括指定改變應(yīng)當(dāng)如何進(jìn)行的各種信息。 例如,對于重新排序,請求可以包括指示舊排序和新排序的信息。 在某些示例中,重新排序請求可以包括指定流的名稱以及在播放列 表排序中流的期望移動的信息。對于移除和插入,請求可以包括要 移除或者插入的流的標(biāo)識。對于插入,請求還可以標(biāo)識新流應(yīng)當(dāng)》文 置在播放列表中的期望位置。
播放列表改變可以包括將播放列表中的一個或多個流替換為 與該被替換的流需要不同資源和能力的、這些流的不同版本(但是 具有相同內(nèi)容)。例如,播放列表的改變可以包括將流替換為該流 的升級或者降級版本。播放列表改變還可以包括將播放列表中的 流替換為無關(guān)的或者不同的流,其具有與被替換的流的內(nèi)容無關(guān)的 或者不同的內(nèi)容。在這種情況下,改變請求可以包括舊流和新流的 名稱,以及流是否可以在中間,S切換的有關(guān)信息。
在某些示例中,播放列表改變可能影響當(dāng)前正在回放的流。在 這種情況下,可以使用來自改變請求的控制信息來適當(dāng)?shù)貓?zhí)行改變。 例如,請求改變的客戶端側(cè)應(yīng)用可以在請求中指定如何對待當(dāng)前播 放的流(例如,是否在中間位置替換當(dāng)前播放的流)。流式傳輸源 (例如,服務(wù)器平臺310)可以使用該信息來實現(xiàn)改變。在某些示例 中,在操縱(例如,切換)當(dāng)前播放的流時,流式傳輸源可以執(zhí)行 改變,使得當(dāng)前播放的流的回放看起來沒有中斷。此功能的其他細(xì) 節(jié)將在下文結(jié)合圖5-圖7加以討論。在某些實現(xiàn)中,響應(yīng)于所訪問的客戶端側(cè)回放狀況而i青求改變
播放列表(430 )可以包括標(biāo)識播放列表中將潛在受到該狀況影響 的所有相關(guān)流。例如,如果網(wǎng)絡(luò)正在提供300kbps帶寬,請求(430 ) 可以包括標(biāo)識具有高于300kbps的比特率的所有流。過程400可 以請求(430 )將播放列表中排隊的高比特率視頻流切換為較低比特 率版本。請求(430 )也可以包括標(biāo)識播放列表中可能由于提高的 網(wǎng)絡(luò)帶寬或者其他資源改善而升級的流。例如,如果網(wǎng)絡(luò)正在提供 500kbps帶寬,則請求(430)可以包括標(biāo)識播放列表中具有低于 500kbps的比特率的所有流。過程400繼而可以請求(430)將低比 特率版本切換為其較高比特率版本。
過程400可以顯示按照響應(yīng)于請求的播放列表改變的、接收到 的播放列表的流(440)。這可以包括客戶端按照所請求的改變向 最終用戶(例如,經(jīng)由顯示設(shè)備)呈現(xiàn)播放列表的流。例如,如果 請求降級,則顯示(440)可以包括顯示降級的流(例如,以較低的 比特率或者分辨率)。如果請求升級,則顯示(440)可以包括顯示 升級的流。
圖5是示出了可以表示客戶端側(cè)操作的另一示例播放列表改變 過程500的流程圖。過程500可以由數(shù)據(jù)處理環(huán)境300中的一個或 多個元件執(zhí)行。過程500可以由執(zhí)行來自存儲設(shè)備的一個或多個指 令的一個或多個處理器(例如,服務(wù)器平臺310中的處理器354 )來 執(zhí)行。過程500可以包括流式傳輸播放列表(510);接收播放列 表改變的請求(520 );基于接收到的請求來改變播放列表(530 ); 以及按照改變來流式傳輸播放列表(540)。
過程500可以流式傳輸播放列表(510)。這可以包括服務(wù)器 (例如,服務(wù)器平臺310)向客戶端(例如,客戶端平臺315)流式 傳輸與播放列表(例如,播放列表200)相關(guān)聯(lián)的媒體/內(nèi)容流(例 如,流210)。播放列表可以由客戶端側(cè)應(yīng)用創(chuàng)建,并且可以包括流 的排序,這些流進(jìn)行排隊以便按照所述排序進(jìn)行客戶端側(cè)回放。播 放列表可以在服務(wù)器側(cè)本地維護(hù)。過程500可以接收針對播;改列表改變的i青求(520)。這例如可 以包括響應(yīng)于檢測到的客戶端側(cè)狀況,從客戶端側(cè)應(yīng)用4妄收針對 播放列表改變的請求。接收(520 )例如可以包括接收在上文討論 的過程400的階段430處生成的請求。如上文結(jié)合過程400所說明 的,請求可以標(biāo)識期望的播放列表改變,并且包括控制播;改列表改 變的信息。
過程500繼而可以基于接收到的請求來改變播放列表(530 )。 這可以包括服務(wù)器(例如,服務(wù)器平臺315)基于請求中提供的控 制信息來改變播放列表。例如,改變530可以包括確定是否可以在 流中的中間位置處切換當(dāng)前播放的流。改變(530 )可以包括查找請 求中標(biāo)識的流名稱,以及執(zhí)行請求中指定的改變。例如,改變(530 ) 可以包^r:查找舊流和新流,繼而將舊流^^:換為新流。過禾呈500繼 而可以按照改變來流式傳輸與播放列表相關(guān)聯(lián)的內(nèi)容流(540)。例 如,過程500可以流式傳輸(540)播放列表中流的升級版本或者降 級版本。過程500可以流式傳輸(540)添加到播放列表的新流,停 止流式傳輸從播放列表中移除的特定流,和/或按照不同于播放列表 中先前順序的順序來流式傳輸播放列表中的流。
在某些示例中,改變(530 )可以包括標(biāo)識應(yīng)當(dāng)切換的所有相關(guān) 流。例如,如果改變請求包括由于下降的網(wǎng)絡(luò)帶寬或者其他資源降 級而引起的、針對流的降級版本的請求,則改變(530 )可以包括 對播放列表進(jìn)行解析,以標(biāo)識播放列表中潛在受到這些狀況影響的 所有其他流。例如,如果網(wǎng)絡(luò)正在提供300kbps帶寬,則改變(530 ) 可以解析播放列表,并且標(biāo)識與高于300kbps的比特率相關(guān)聯(lián)的所 有流。過程500可以將播放列表中排隊的已標(biāo)識高比特率一見頻流切 換為其較低比特率版本。反之,改變(530 )可以包括標(biāo)識播放列 表中由于提高的網(wǎng)絡(luò)帶寬或者其他資源改善而可以升級的流。例如, 如果網(wǎng)絡(luò)正在提供500kbps帶寬,則改變(530 )可以包括標(biāo)識播 放列表中與低于500kbps的比特率相關(guān)聯(lián)的所有流。過程500繼而 可以將這些低比特率版本切換為其較高比特率版本。在某些實現(xiàn)中,過程500可以包括對流進(jìn)行緩沖并在其中引入 延遲(例如,在改變(530 )期間)。例如,當(dāng)在兩個即時流之間切 換時,過程500可以在切換發(fā)起時開始緩沖這兩個流。在緩沖期間, 過程500可以標(biāo)識切換流的適當(dāng)點。緩沖可以允許在不會在回;^文中 導(dǎo)致任何干擾或者贗像的情況下進(jìn)行流切換。
圖6是示出了示例流替換過程600的流程圖。過程600可以表 示作為上文討論的過程500的改變階段530的一部分而執(zhí)行的纟喿作。 過程600可以由數(shù)據(jù)處理環(huán)境300中的一個或多個元件來^丸行。過 程600可以由執(zhí)行來自存儲設(shè)備的一個或多個指令的一個或多個處 理器(例如,服務(wù)器平臺310中的處理器354 )來執(zhí)行。
過程600可以接收舊流的標(biāo)識以及新流的標(biāo)識(610)。這些標(biāo) 識可以包括在從客戶端平臺315發(fā)送給服務(wù)器平臺310的播放列表 改變請求中。該請求可以包括將播放列表中的舊流切換為新流的請 求。
過程600可以使用來自改變請求的信息來標(biāo)識播放列表中的 舊流(620)。過程600繼而可以確定目前是否正在回力文舊流(例如, 舊流是當(dāng)前正在流式傳輸?shù)牧?。例如,過程600可以確定插^文器 370是否正在呈現(xiàn)標(biāo)識為舊流的流(例如,服務(wù)器當(dāng)前正在向客戶端 流式傳輸標(biāo)識為舊流的流)。如果舊流不是當(dāng)前流式傳輸?shù)牧鳎瑒t 過程600可以在播放列表中的選定點處將該舊流整個替換為另 一 流。 該選定點可以在發(fā)送自客戶端側(cè)的改變請求中指定,或者其可以在 服務(wù)器側(cè)確定。
如果所標(biāo)識的舊流是當(dāng)前流式傳輸?shù)牧?,則過程600可以確定 是否允許在中間點處進(jìn)行流替換(640)。換言之,過程600可以確 定其是否在當(dāng)前流式傳輸?shù)牧魍瓿刹シ胖爸袛嗨?,以便將該流?換為新流。該確定可以基于改變請求中指定的控制信息來進(jìn)行。如 果不允許中間替換,則過程600可以維持當(dāng)前流式傳輸?shù)牧髦钡酵?成(645 )。
如果允許中間替換,則過程600可以標(biāo)識用于切換流的適當(dāng)點。過程600可以標(biāo)識適當(dāng)?shù)狞c(650 ),使得切換不會在回;^文中導(dǎo) 致任何干擾或者贗像。過程600繼而可以在所標(biāo)識的切換點處將舊 流切換為新流(660 )。這可以包括將舊流從播放列表中移除,并 將新流插入播放列表中舊流的位置。
圖7是示出了用于標(biāo)識適當(dāng)切換點的示例過程700的流程圖。 過程700可以表示作為上文討論的過程600的標(biāo)識階段(650 )的一 部分而執(zhí)行的操作。與過程600相同,過程700可以由數(shù)據(jù)處理環(huán) 境300中的一個或多個元件來執(zhí)行。過程700可以由執(zhí)行來自存儲 設(shè)備的一個或多個指令的一個或多個處理器(例如,服務(wù)器平臺310 中的處理器354 )來執(zhí)行。
過程700可以標(biāo)識舊流(其是當(dāng)前播;故的流)中用于流切換的 最早時刻(710)。這可以包括在當(dāng)前播放流中標(biāo)識最早的關(guān)^t幀。 最早的關(guān)鍵幀例如可以是尚未傳輸給客戶端的最早關(guān)鍵幀。在某些 示例中,服務(wù)器平臺310中的改變模塊335可以標(biāo)識最早關(guān)鍵幀。 過程700繼而可以標(biāo)識用于進(jìn)行切換點的新流中的點(720 )。這可 以包括標(biāo)識新流中的關(guān)鍵幀。在某些示例中,過程700可以在新 流中標(biāo)識(720)標(biāo)識關(guān)4建幀,該關(guān)4建幀出現(xiàn)在當(dāng)前播-;改流中所標(biāo)識 的最早關(guān)4定幀之后。過程700繼而可以標(biāo)識舊流(當(dāng)前播i文流)中 與新流中所標(biāo)識的切換點相對應(yīng)的點。這可以包括在舊流中標(biāo)識 與新流中所標(biāo)識的關(guān)鍵幀相對應(yīng)的關(guān)鍵幀或者中間幀。
在某些實施方式中,為了實現(xiàn)流切換,過程700可以對流的時 間線進(jìn)行匹配(740)。例如,過程700可以對音頻和^見頻時間線進(jìn) 行匹配,以確保切換對于最終用戶而言平滑地進(jìn)行。在某些實現(xiàn)中, 在改變播放列表時可以使用各種切換策略。例如,如果兩組內(nèi)容之 間的音頻和一見頻時間線不匹配,則可以優(yōu)選l吏用音頻時間線,以避 免音頻時間線中的干擾。如果音頻在期望的切換點附近不可用,則 可以僅使用視頻時間線。該特定切換策略并非意在限制,在不脫離 本公開范圍的情況下,可以使用各種其他切換策略。
圖4-圖7中示出的事件序列是示例性的,并非意在限制。因此可以使用其他過程,即使是對于圖4到圖7中描繪的過程400、 500、 600和700,事件可以進(jìn)行重新排序、添加和/或移除。此外,過程的 元素可以重疊和/或可以存在于少于附圖所示數(shù)目的階段中。在某些 示例中,過程可以重新布置和配置,以適應(yīng)和/或利用多任務(wù)和并行 處理技術(shù)和/或各種系統(tǒng)架構(gòu)的其他方面。
盡管上文描述參考了流式傳輸,但是本公開的方面可以應(yīng)用于 其他媒體遞送技術(shù)。例如,本公開的方面可以用來改變漸進(jìn)式遞送 (例如,漸進(jìn)式下載)的播放列表。在這些實現(xiàn)中,播放列表可以 包括排隊以供消費(流式傳輸,或者漸進(jìn)式遞送的)的內(nèi)容的排序。 在漸進(jìn)式遞送實現(xiàn)中,與播放列表相關(guān)聯(lián)的內(nèi)容(例如,SWF文件、 FLV文件、F4V文件等)可以從服務(wù)器(例如,服務(wù)器平臺310) 下載到客戶端(例如,客戶端平臺315),其中客戶端包括用于進(jìn)行 播放列表改變決策以及改變播放列表的適當(dāng)邏輯。
本說明書中描述的主題和功能性操作的實施方式可以在數(shù)字 電子電路中實現(xiàn),或者在計算機軟件、固件或硬件中實現(xiàn),該計算
是它們的一個或多個的組合。本說明書中描述的主題的實施方式可 以實現(xiàn)為一個或多個計算機程序產(chǎn)品,也即,在計算機可讀介質(zhì)上 編碼的、以便由數(shù)據(jù)處理裝置執(zhí)行或控制數(shù)據(jù)處理裝置操作的 一 個 或多個計算機程序指令模塊。有形程序載體可以是傳播的信號或者 計算機可讀介質(zhì)。傳播信號是人工產(chǎn)生的信號,例如,機器產(chǎn)生的 電信號、光信號或者電磁信號,生成該信號以對信息進(jìn)行編碼,以 便傳輸?shù)竭m當(dāng)?shù)慕邮掌餮b置。計算機可讀介質(zhì)可以是機器可讀的存 儲設(shè)備、機器可讀的存儲村底、存儲設(shè)備、實現(xiàn)計算機可讀的傳播 信號的組合、或者它們中的一個或多個的結(jié)合。術(shù)語"數(shù)據(jù)處理裝 置,,包括用于處理數(shù)據(jù)的所有裝置、設(shè)備和機器,例如包括可編程 處理器、計算機,或者多個處理器或計算機。除了硬件之外,該裝 置可以包括為考慮中的計算機程序創(chuàng)建執(zhí)行環(huán)境的代碼,例如,構(gòu) 成處理器固件、協(xié)議棧、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、跨平臺運行時環(huán)境,或者它們中一個或多個的結(jié)合的代碼。
計算機程序(也公知為程序、軟件、軟件應(yīng)用、腳本或代碼) 可以由任意形式的編程語言編寫,包括編譯語言或解釋語言,說明 性語言或過程語言,并且該計算機程序可以任意形式部署,包括部 署為單獨的程序或模塊、組件、子例程,或者適于在計算環(huán)境中使 用的其他單元。計算機程序無需對應(yīng)于文件系統(tǒng)中的文件。程序可 以存儲在保存其他程序或數(shù)據(jù)(例如,存儲在標(biāo)記語言文檔中的一 個或多個腳本)的文件的一部分中、可以存儲在專門用于考慮中的 程序的單個文件中,或者存儲在多個協(xié)同文件中(例如,存儲一個 或多個模塊、子程序,或代碼部分的文件)??梢詫⒂嬎銠C程序部 署為在一個計算機上執(zhí)行,或者將其部署為在位于一個地點的多個 計算機上執(zhí)行或跨過多個地點分布且通過通信網(wǎng)絡(luò)互連的多個計算 機上執(zhí)行。
本說明書中描述的處理和邏輯流程可以由執(zhí)行一個或多個計 算機程序的 一 個或多個可編程處理器執(zhí)行,用于通過對輸入數(shù)據(jù)進(jìn) 行操作以及產(chǎn)生輸出來執(zhí)行功能。該處理和邏輯流程還可以由例如
FPGA (現(xiàn)場可編程門陣列)或ASIC(專用集成電路)的專用邏輯 電路執(zhí)行,并且也可以將裝置實現(xiàn)為所述專用邏輯電路。
適于計算機程序執(zhí)行的處理器例如包括通用和專用處理器兩 者、以及任意類型的數(shù)字計算機的任意一個或多個處理器。通常, 處理器將從只讀存儲器或隨機訪問存儲器或兩者處接收指令和數(shù) 據(jù)。計算機的基本元件是用于執(zhí)行指令的處理器以及用于存儲指令 和數(shù)據(jù)的一個或多個存儲器設(shè)備。通常,計算機還將包括用于存儲 數(shù)據(jù)的一個或多個海量存儲設(shè)備,或被操作性地耦合為從所述用于 存儲數(shù)據(jù)的一個或多個海量存儲設(shè)備接收數(shù)據(jù)、向其傳送數(shù)據(jù)、或 者進(jìn)行兩者,該海量存儲設(shè)備例如磁盤、磁光盤、或光盤。然而, 計算機不必一定具有這樣的設(shè)備。而且,計算機可以嵌入在其他設(shè) 備中,例如移動電話、個人數(shù)字助理(PDA)、移動音頻或一見頻播 放器、全球定位系統(tǒng)(GPS)接收器、或者便攜式存儲設(shè)備(例如,通用串行總線(USB)閃存驅(qū)動),這僅是幾例。適于存儲計算機 程序指令和數(shù)據(jù)的計算機可讀介質(zhì)包括所有形式的非易失性存儲
器、介質(zhì)和存儲設(shè)備,例如包括半導(dǎo)體存儲設(shè)備,如EPROM、 EEPROM和閃存設(shè)備;磁盤,如內(nèi)部硬盤或可移動硬盤;》茲光盤; 以及CD-ROM和DVD-ROM盤。處理器和存々者器可以由專用邏輯電 路補充或是包括在專用邏輯電路中。
為了提供與用戶的交互,本說明書中描述的主題的實施方式可 以在具有用于向用戶顯示信息的顯示設(shè)備以及用戶可以通過其向計 算機提供輸入的鍵盤和指點設(shè)備的計算機上實現(xiàn),其中顯示設(shè)備例 如CRT (陰極射線管)或者LCD (液晶顯示器)監(jiān)視器,指點設(shè)備 例如鼠標(biāo)或者軌跡球。也可以使用其他類型的設(shè)備來提供與用戶的 交互;例如,提供給用戶的反饋可以是任何形式的感觀反々貴,例如 視覺反饋、聲覺反饋、或者觸覺反饋;并且可以接收來自用戶的任 意形式的輸入,包括聲音、語音或觸覺輸入。
本說明書中描述的主題的實施方式可以實現(xiàn)在包括后端組件 的計算系統(tǒng)中,例如數(shù)據(jù)服務(wù)器;或?qū)崿F(xiàn)在包括中間件組件的計算 系統(tǒng)中,例如應(yīng)用服務(wù)器;或?qū)崿F(xiàn)在包括前端組件的計算系統(tǒng)中, 例如具有圖形用戶界面或者Web瀏覽器的客戶端計算機,用戶通過 該圖形用戶界面或W e b瀏覽器可以與本說明書中描述的主題的實現(xiàn) 進(jìn)行交互;或?qū)崿F(xiàn)在一個或多個這樣的后端、中間件、或前端組件 的任意結(jié)合中。系統(tǒng)組件可以與任意形式或介質(zhì)的數(shù)字?jǐn)?shù)據(jù)通信(例 如,通信網(wǎng)絡(luò))互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)("LAN"), 廣域網(wǎng)("WAN"),網(wǎng)際網(wǎng)(例如,互聯(lián)網(wǎng))以及端對端網(wǎng)絡(luò)(例 如,adhoc端對端網(wǎng)絡(luò))。
計算系統(tǒng)可以包括客戶端和服務(wù)器??蛻舳撕头?wù)器一般相互 遠(yuǎn)離,并且通常通過通信網(wǎng)絡(luò)進(jìn)行交互??蛻舳撕头?wù)器的關(guān)系是 借助于在各自計算機上運行的、彼此具有客戶端-服務(wù)器關(guān)系的計算 機程序得到的。
盡管本說明書包含多種特定細(xì)節(jié),但是不應(yīng)將其理解為是對本發(fā)明的范圍或者所要求保護(hù)內(nèi)容的限制,而應(yīng)當(dāng)理解為是本發(fā)明具 體實施方式的特定特征的描述。本說明書中描述的在各個實施方式 的上下文中的某些特征也可以在單個實施方式中結(jié)合實現(xiàn)。相反, 在單個實施方式上下文中描述的各種特征也可以分別實現(xiàn)在多個實 施方式中或者任意適當(dāng)?shù)淖咏M合中。而且,盡管上文可能將特征描 述為在特定的組合中操作,甚至初始也是這樣要求保護(hù)的,但是來 自所要求保護(hù)的組合的一個或多個特征在一些情況下可以乂人該組合
類似地,盡管在附圖中以特定的順序描述操作,但是不應(yīng)將其 理解為要求按照所示的特定順序或是串行順序來執(zhí)行這些操作,或 是要求執(zhí)行全部所示的操作以得到期望的結(jié)果。在特定環(huán)境中,多 任務(wù)和并行處理可能是有利的。而且,在上述實施方式中多個系統(tǒng) 組件的分離不應(yīng)被理解為在所有實施方式中需要這些操作,應(yīng)當(dāng)將 其理解為所描述的程序組件和系統(tǒng)通??梢栽趩蝹€軟件產(chǎn)品中集成
在一起,或是被打包到多個軟件產(chǎn)品中
由此,已經(jīng)描述了本發(fā)明的特定實施方式。其他實施方式也在 所附權(quán)利要求書的范圍之內(nèi)。例如,權(quán)利要求書中記載的動作可以 按照不同順序執(zhí)行并仍然能夠?qū)崿F(xiàn)期望的結(jié)果。在某些示例中,在 不脫離本公開范圍的情況下,可以使用不同系列的API來實現(xiàn)某些 結(jié)果。例如,可以使用用于操縱播放列表的API的富集。作為另一 示例,基于對播放器的不同量度,或者用來在內(nèi)容流之間切換的不 同技術(shù),可以使用不同的算法來控制如何切換內(nèi)容。
權(quán)利要求
1.一種計算機實現(xiàn)的方法,包括從服務(wù)器接收與播放列表相關(guān)聯(lián)的流,所述播放列表包括流的排序,所述流進(jìn)行排隊以便按照所述排序從所述服務(wù)器進(jìn)行客戶端側(cè)回放;訪問與至少一個所述流的接收和回放相關(guān)聯(lián)的客戶端側(cè)回放狀況;響應(yīng)于所述客戶端側(cè)回放狀況,由客戶端側(cè)應(yīng)用請求改變所述播放列表的流,所述請求標(biāo)識期望的播放列表改變,并且包括控制所述播放列表改變的信息;以及按照響應(yīng)于所述請求而進(jìn)行的播放列表改變,來顯示所述播放列表的流。
2. 如權(quán)利要求l的方法,其中所述播放列表的流包括以下至少 一個音頻流、視頻流、具有音頻和視頻的混合流、基于文本的數(shù) 據(jù)、靜態(tài)圖像數(shù)據(jù)以及用戶定義的數(shù)據(jù)。
3. 如權(quán)利要求2的方法,其中所述流包括即時流。
4. 如權(quán)利要求1的方法,其中訪問客戶端側(cè)回放狀況包括訪問 以下至少一個網(wǎng)絡(luò)帶寬可用性,客戶端處理能力,以及用戶閱覽 統(tǒng)計。
5. 如權(quán)利要求l的方法,其中所述期望的播放列表改變包括以 下至少一個(i)對所述播放列表中的流進(jìn)行重新排序;(ii)將 流從所述播放列表中移除;以及(iii)在所述播放列表中的指定插 入點處將新的流插入所述播放列表。
6. 如權(quán)利要求l的方法,其中所述期望的播放列表改變包括 將所述播放列表中的流替換為該流的不同版本,所述不同版本與被 替換的流需要不同的網(wǎng)絡(luò)和處理資源。
7. 如權(quán)利要求l的方法,其中所述期望的播放列表改變包括 將所述播放列表中的流替換為不同的流,所述不同的流與被替換的流 具有不同的內(nèi)容。
8. 如權(quán)利要求l的方法,其中所述期望的播放列表改變包括 將當(dāng)前播放的流替換為新的流,其中所述請求標(biāo)識所述當(dāng)前播放的 流和所述新的流,并且包括控制信息,所述控制信息指定是否在中 間位置替換所述當(dāng)前播放的流。
9. 如權(quán)利要求l的方法,其中所述播放列表由所述客戶端側(cè)應(yīng) 用創(chuàng)建。
10. —種設(shè)備,包括接收裝置,用于從服務(wù)器接收與播放列表相關(guān)聯(lián)的流,所述播 放列表包括流的排序,所述流進(jìn)行排隊以便按照所述排序從所述服 務(wù)器進(jìn)行客戶端側(cè)回放;訪問裝置,用于訪問與至少 一 個所述流的接收和回放相關(guān)聯(lián)的 客戶端側(cè)回力文狀況;請求裝置,用于響應(yīng)于所述客戶端側(cè)回i文狀況,由客戶端側(cè)應(yīng) 用請求改變所述播放列表的流,所述請求標(biāo)識期望的播放列表改變,并且包括控制所述播放列表改變的信息;以及顯示裝置,用于按照響應(yīng)于所述請求而進(jìn)行的播放列表改變, 來顯示所述播放列表的流。
11. 如權(quán)利要求10的設(shè)備,其中所述播放列表的流包括以下至 少一個音頻流、視頻流、具有音頻和視頻的混合流、基于文本的 數(shù)據(jù)、靜態(tài)圖像數(shù)據(jù)以及用戶定義的數(shù)據(jù)。
12. 如權(quán)利要求ll的設(shè)備,其中所述流包括即時流。
13. 如權(quán)利要求10的設(shè)備,其中所述訪問裝置用于訪問以下至 少一個網(wǎng)絡(luò)帶寬可用性,客戶端處理能力,以及用戶閱覽統(tǒng)計。
14. 如權(quán)利要求10的設(shè)備,其中所述期望的播放列表改變包括 以下至少一個(i)對所述播放列表中的流進(jìn)行重新排序;(ii) 將流從所述播放列表中移除;以及(iii)在所述播放列表中的指定 插入點處將新的流插入所述播放列表。
15. 如權(quán)利要求10的設(shè)備,其中所述期望的播放列表改變包括:將所述播放列表中的流替換為該流的不同版本,所述不同版本與被 替換的流需要不同的網(wǎng)絡(luò)和處理資源。
16. 如權(quán)利要求10的設(shè)備,其中所述期望的播放列表改變包括: 將所述播放列表中的流替換為不同的流,所述不同的流與被替換的 流具有不同的內(nèi)容。
17. 如權(quán)利要求10的設(shè)備,其中所述期望的播放列表改變包括: 將當(dāng)前播放的流替換為新的流,其中所述請求標(biāo)識所述當(dāng)前播放的流和所述新的流,并且包括控制信息,所述控制信息指定是否在中間位置替換所述當(dāng)前播放的流。
18. 如權(quán)利要求10的設(shè)備,其中所述播放列表由所述客戶端側(cè) 應(yīng)用創(chuàng)建。
19. 一種計算機實現(xiàn)的方法,包括向客戶端流式傳輸與播放列表相關(guān)聯(lián)的媒體流,所述播放列表 包括流的排序,所述流進(jìn)行排隊以便按照所述排序進(jìn)行客戶端側(cè)回 放;從客戶端側(cè)應(yīng)用接收響應(yīng)于檢測到的客戶端側(cè)狀況的、改變所 述播放列表的請求,所述請求標(biāo)識期望的播放列表改變,并且包括 控制所述播放列表改變的信息;基于接收到的所述請求來改變所述播放列表;以及按照所述改變,流式傳輸與所述播放列表相關(guān)聯(lián)的媒體流。
20. 如權(quán)利要求19的方法,其中與所述播放列表相關(guān)聯(lián)的流包 括以下錄制的或即時的內(nèi)容的至少一個音頻流、-現(xiàn)頻流、具有音 頻和視頻的混合流、基于文本的數(shù)據(jù)、靜態(tài)圖像數(shù)據(jù)以及用戶定義 的數(shù)據(jù)。
21. 如權(quán)利要求19的方法,其中改變所述播放列表包括以下至 少一個(i)對所述播放列表中的流進(jìn)行重新排序;(ii)將流從 所述播放列表中移除;以及(iii)在所述播放列表中的指定插入點 處將新的流插入所述播放列表。
22. 如權(quán)利要求19的方法,其中改變所述播放列表包括將所述播放列表中的流替換為該流的不同版本,所述不同版本與#_替換 的流需要不同的網(wǎng)絡(luò)和處理資源。
23. 如權(quán)利要求19的方法,其中改變所述播放列表包括將所 述播放列表中的流替換為不同的流,所述不同的流與被替換的流具 有不同的內(nèi)容。
24. 如權(quán)利要求19的方法,其中改變所述播放列表包括將當(dāng) 前流式傳輸?shù)牧魈鎿Q為新流,在所述新流中的最早關(guān)鍵幀處替換所 述當(dāng)前流式傳輸?shù)牧?,使得所述?dāng)前流式傳輸?shù)牧鞯幕胤趴雌饋頉] 有中斷。
25. —種設(shè)備,包括流式傳輸裝置,用于向客戶端流式傳輸與播放列表相關(guān)聯(lián)的媒 體流,所述播放列表包括流的排序,所述流進(jìn)行排隊以便按照所述 排序進(jìn)行客戶端側(cè)回放;接收裝置,用于從客戶端側(cè)應(yīng)用接收響應(yīng)于檢測到的客戶端側(cè) 狀況的、改變所述播放列表的請求,所述請求標(biāo)識期望的播放列表 改變,并且包括控制所述播放列表改變的信息;改變裝置,用于基于接收到的所述請求來改變所述播放列表;其中在所述改變裝置改變所述播放列表之后,所述流式傳輸裝 置還用于按照所述改變,流式傳輸與所述播放列表相關(guān)聯(lián)的媒體流。
26. 如權(quán)利要求25的設(shè)備,其中與所述播放列表相關(guān)聯(lián)的流包 括以下錄制的或即時的內(nèi)容的至少一個音頻流、視頻流、具有音 頻和視頻的混合流、基于文本的數(shù)據(jù)、靜態(tài)圖像數(shù)據(jù)以及用戶定義的數(shù)據(jù)。
27. 如權(quán)利要求25的設(shè)備,其中改變所述播放列表包括以下至 少一個(i)對所述播放列表中的流進(jìn)行重新排序;(ii)將流從 所述播放列表中移除;以及(m)在所述播放列表中的指定插入點 處將新的流插入所述播放列表。
28. 如權(quán)利要求25的設(shè)備,其中改變所述播放列表包括將所述播放列表中的流替換為該流的不同版本,所述不同版本與被替換 的流需要不同的網(wǎng)絡(luò)和處理資源。
29. 如權(quán)利要求25的設(shè)備,其中改變所述播放列表包括將所 述播放列表中的流替換為不同的流,所述不同的流與被替換的流具 有不同的內(nèi)容。
30. 如權(quán)利要求25的設(shè)備,其中改變所述播放列表包括將當(dāng) 前流式傳輸?shù)牧魈鎿Q為新流,在所述新流中的最早關(guān)鍵幀處替換所 述當(dāng)前流式傳輸?shù)牧鳎沟盟霎?dāng)前流式傳輸?shù)牧鞯幕胤趴雌饋頉]有中斷。
全文摘要
本申請涉及用于動態(tài)改變播放列表的方法和設(shè)備。具體地,在一個方面,從服務(wù)器接收與播放列表相關(guān)聯(lián)的流。該播放列表包括流的排序,這些流進(jìn)行排隊以便按照所述排序從服務(wù)器進(jìn)行客戶端側(cè)回放。訪問與至少一個流的接收和回放相關(guān)聯(lián)的客戶端側(cè)回放狀況。響應(yīng)于所訪問的客戶端側(cè)回放狀況,客戶端側(cè)應(yīng)用請求改變播放列表的流。該請求標(biāo)識期望的播放列表改變,并且包括該控制播放列表改變的信息。按照響應(yīng)于所述請求而進(jìn)行的播放列表改變,來顯示播放列表的流。
文檔編號G06F17/30GK101661504SQ20091016837
公開日2010年3月3日 申請日期2009年8月31日 優(yōu)先權(quán)日2008年8月29日
發(fā)明者A·卡普爾, A·惠爾羅克, K·斯特里特 申請人:奧多比公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1