包含連續(xù)播放的視頻分配系統(tǒng)的制作方法
【專利摘要】本發(fā)明描述了一種接收器驅(qū)動(dòng)的播放遠(yuǎn)程內(nèi)容的方法。其中一實(shí)施方案包括:獲取與來自遠(yuǎn)程服務(wù)器媒體文件的內(nèi)容相關(guān)的信息;確定該媒體序列內(nèi)的起始位置;確定由起始位置播放媒體序列所需要的媒體對(duì)應(yīng)的媒體文件的字節(jié)范圍,請(qǐng)求由上述起始位置開始播放該媒體序列所需要的字節(jié)范圍;對(duì)接收到的信息的字節(jié)進(jìn)行緩沖并且暫時(shí)不開始播放;播放被緩沖的信息字節(jié);接收用戶指令;根據(jù)用戶指令確定與被要求播放的媒體序列對(duì)應(yīng)的媒體文件的字節(jié)范圍;刷新先前的字節(jié)范圍請(qǐng)求;以及,根據(jù)用戶的指令請(qǐng)求播放該媒體所需要的字節(jié)范圍。
【專利說明】包含連續(xù)播放的視頻分配系統(tǒng)
[0001]本申請(qǐng)是申請(qǐng)日為2008年01月07日,申請(qǐng)?zhí)枮?00880007014.9的發(fā)明名稱為“包含連續(xù)播放的視頻分配系統(tǒng)”的發(fā)明專利申請(qǐng)的分案申請(qǐng)。
【技術(shù)領(lǐng)域】
[0002]本發(fā)明總體上涉及在網(wǎng)絡(luò)上播放多媒體文件,特別是涉及在網(wǎng)絡(luò)上下載多媒體文件時(shí)對(duì)該多媒體文件的連續(xù)播放。
【背景技術(shù)】
[0003]連續(xù)播放(progressive playback)是指在下載遠(yuǎn)程內(nèi)容的同時(shí)進(jìn)行播放。這樣用戶能夠選擇遠(yuǎn)程影片并在其完全下載之前就開始觀看。即便是聯(lián)網(wǎng)速度很快,根據(jù)媒體文件的大小,等待一部影片完全下載也需要數(shù)分鐘至數(shù)小時(shí)。利用連續(xù)播放功能,用戶只需要等待幾秒鐘就可以開始播放。
[0004]目前的由接收器或播放器驅(qū)動(dòng)(playerdriven)的連續(xù)播放盡管適合于目前仍處于主流的視頻短片剪輯,但通常其能夠提供的連續(xù)播放的范圍和靈活性受到限制。播放器通常是對(duì)文件由頭至尾進(jìn)行線性下載。當(dāng)播放器緩沖了足夠數(shù)據(jù)使媒體播放可能不會(huì)中斷時(shí)開始播放。所需要的緩沖量可以是占整個(gè)內(nèi)容相當(dāng)百分比的一個(gè)固定量,也可以是動(dòng)態(tài)的,播放器參考播放整個(gè)內(nèi)容需要多少數(shù)據(jù)才不至于使緩存欠載。這些方法盡管適合于播放較短的視頻剪輯,但通常都不支持對(duì)遠(yuǎn)程存儲(chǔ)的較長(zhǎng)內(nèi)容的搜索、特技播放(trick-play)和播放,例如長(zhǎng)篇電影。
[0005]有些系統(tǒng)中采用了服務(wù)器驅(qū)動(dòng)的技術(shù)方案。服務(wù)器驅(qū)動(dòng)方案的例子包括美國(guó)專利申請(qǐng)?zhí)?1/323,044、11/323,062、11/327,543和11/322,604中描述的系統(tǒng),這些申請(qǐng)中所公開的全部?jī)?nèi)容作為參考并入本申請(qǐng)中。在這些系統(tǒng)中,服務(wù)器對(duì)數(shù)據(jù)文件進(jìn)行解析并確定發(fā)送哪些數(shù)據(jù)。播放所涉及的網(wǎng)絡(luò)效率和靈活性更易實(shí)現(xiàn)。然而,標(biāo)準(zhǔn)的HTTP網(wǎng)站服務(wù)器通常不提供這種功能,而提供此類功能的自定義的網(wǎng)站服務(wù)器在大量的播放器同時(shí)要求傳送播放內(nèi)容時(shí)通常顯得規(guī)模太小。
[0006]基于瀏覽器的播放器通常是在線性下載視頻文件時(shí)對(duì)其進(jìn)行解析,實(shí)現(xiàn)由接收器驅(qū)動(dòng)的播放。開始播放較長(zhǎng)的剪輯時(shí),不可能搜索或快進(jìn)到文件中還未下載的部分??梢允褂肧amba (由http://us2.samba, org/samba/提供的開放源軟件)實(shí)現(xiàn)就象本地文件一樣的對(duì)遠(yuǎn)程文件的任意應(yīng)用訪問。該軟件試圖借助由可隨機(jī)設(shè)定的對(duì)當(dāng)前文件位置以預(yù)先緩存的方式盡量縮短訪問等待時(shí)間。當(dāng)試圖執(zhí)行“特技播放”(例如:倒片、快進(jìn)、需要對(duì)媒體內(nèi)容進(jìn)行非序列訪問的情節(jié)間跳躍)功能時(shí),上述方法仍顯不足。在這些情況下傳送到播放器的視頻幀之間的間隔可能很遠(yuǎn)或要求更為復(fù)雜的指令,大大地限制了傳統(tǒng)的基于將要觀看的內(nèi)容就是后續(xù)視頻幀這一假定的預(yù)先緩存方法的應(yīng)用。
【發(fā)明內(nèi)容】
[0007]本發(fā)明描述了在部分下載的媒體文件上執(zhí)行連續(xù)播放和“特技播放”功能的系統(tǒng)和方法。本發(fā)明的許多實(shí)施例包括支持以下特性的接收器或播放器:隨時(shí)僅對(duì)某些要求的數(shù)據(jù)維持滿負(fù)荷下載流,包括某字節(jié)范圍內(nèi)的數(shù)據(jù),丟棄之前的請(qǐng)求,發(fā)出對(duì)于最高優(yōu)先的數(shù)據(jù)的新請(qǐng)求。此外,本發(fā)明的若干實(shí)施例包括以下特征:對(duì)文件上的任何一點(diǎn)上的隨機(jī)文件訪問以及異步請(qǐng)求,這些都為用戶提供了播放文件方面的靈活性。在一些實(shí)施例中,該系統(tǒng)和方法支持在互聯(lián)網(wǎng)服務(wù)器上實(shí)現(xiàn)存儲(chǔ)多個(gè)片名、包含多個(gè)音軌的片名和/或包含一個(gè)或多個(gè)字幕軌的片名的可擴(kuò)展性。
[0008]在一些實(shí)施例中,具備提供全功能連續(xù)播放的能力部分是因?yàn)槊襟w序列的播放引擎(即,對(duì)編碼媒體進(jìn)行解碼和播放的系統(tǒng))與能夠提供對(duì)遠(yuǎn)程文件隨機(jī)訪問的傳輸協(xié)議的緊密結(jié)合。播放引擎與傳輸協(xié)議通過文件解析器進(jìn)行接口能夠減少冗余并使客戶端與媒體服務(wù)器并行運(yùn)行,提高了下載效率和交互性能。在一些實(shí)施例中,上述系統(tǒng)和過程被配置為能夠使用這樣一類經(jīng)過格式化的文件:這些文件包含了文件內(nèi)數(shù)據(jù)的索引和傳輸協(xié)議,以便允許對(duì)文件內(nèi)的特定字節(jié)范圍進(jìn)行下載。
[0009]本發(fā)明的一個(gè)方法實(shí)施例包括以下步驟:獲取與來自遠(yuǎn)程服務(wù)器媒體文件的內(nèi)容相關(guān)的信息;確定該媒體序列內(nèi)的起始位置;確定由起始位置播放媒體序列所需要的媒體對(duì)應(yīng)的媒體文件的字節(jié)范圍,請(qǐng)求由上述起始位置開始播放該媒體序列所需要的字節(jié)范圍;對(duì)接收到的信息的字節(jié)進(jìn)行緩沖并且暫時(shí)不開始播放;播放被緩沖的信息字節(jié);接收用戶指令;根據(jù)用戶指令確定與被要求播放的媒體序列對(duì)應(yīng)的媒體文件的字節(jié)范圍;刷新先前的字節(jié)范圍請(qǐng)求;以及,根據(jù)用戶的指令請(qǐng)求播放該媒體所需要的字節(jié)范圍。
[0010]本發(fā)明的另一方法實(shí)施例包括以下步驟:保持一個(gè)媒體文件中已經(jīng)被下載部分的掩碼,利用該掩碼確定根據(jù)用戶指令要求播放的媒體的字節(jié)范圍的至少一部分,以及僅由媒體服務(wù)器請(qǐng)求尚未被下載的字節(jié)范圍的某些部分。
[0011]本發(fā)明的又一方法實(shí)施例包括以下步驟:將下載的字節(jié)存儲(chǔ)于一數(shù)據(jù)文件中,并當(dāng)媒體文件的所有字節(jié)都被下載后才將下載的媒體文件輸出。
[0012]在本發(fā)明的再一方法實(shí)施例中,上述數(shù)據(jù)文件是一個(gè)稀疏數(shù)據(jù)文件。
[0013]在本發(fā)明的再一方法實(shí)施例中,上述媒體文件包含多個(gè)媒體序列和菜單信息,并在上述媒體序列中確定還包含顯示菜單信息的媒體序列中確定一起始位置,接收一個(gè)表明了對(duì)上述媒體序列進(jìn)行的選擇的用戶指令,并接收一個(gè)表明了媒體序列內(nèi)起始位置的用戶指令。
[0014]在本發(fā)明的再一方法實(shí)施例中,上述媒體序列包括多個(gè)可互換的音軌,在上述媒體序列內(nèi)確定起始位置的步驟還包括選定一個(gè)音軌的步驟,并且上述確定由起始位置播放媒體序列所需要的媒體對(duì)應(yīng)的媒體文件的字節(jié)范圍的步驟還包括選定那些不將未選中的音軌包括在內(nèi)的字節(jié)范圍。
[0015]在本發(fā)明的再一方法實(shí)施例中,上述媒體序列包括多個(gè)可互換的字幕軌,在上述媒體序列內(nèi)確定起始位置的步驟還包括選定一個(gè)字幕軌的步驟,且上述的確定由起始位置播放媒體序列所需要的媒體對(duì)應(yīng)的媒體文件的字節(jié)范圍的步驟還包括選定那些不將未選中的字幕軌包括在內(nèi)的字節(jié)范圍。
[0016]在本發(fā)明的再一方法實(shí)施例中,上述序列包括關(guān)鍵幀,且上述的根據(jù)用戶指令確定播放媒體所需要的媒體對(duì)應(yīng)的媒體文件的字節(jié)范圍的步驟還包括根據(jù)預(yù)先確定的用戶指令確定關(guān)鍵幀的序列,并且確定與該已經(jīng)確定的關(guān)鍵幀對(duì)應(yīng)的媒體文件的字節(jié)范圍。[0017]本發(fā)明的一實(shí)施例包括一媒體服務(wù)器、一客戶端、和一網(wǎng)絡(luò)。此外,所述客戶端和媒體服務(wù)器通過網(wǎng)絡(luò)進(jìn)行通信,客戶端向媒體服務(wù)器發(fā)出至少請(qǐng)求媒體文件一部分的請(qǐng)求,服務(wù)器向客戶端提供媒體文件中被請(qǐng)求的部分,并且客戶端接收用戶有關(guān)播放媒體文件的指令并且向媒體服務(wù)器請(qǐng)求媒體文件中尚未被下載并且符合播放指令的部分。
[0018]在本發(fā)明的另一實(shí)施例中,媒體文件的鄰近部分被分組,并且這些分組根據(jù)先到期先選擇的原則被請(qǐng)求。
[0019]在本發(fā)明的另一實(shí)施例中,客戶端保持媒體文件的被請(qǐng)求部分的隊(duì)列。
[0020]在本發(fā)明的另一實(shí)施例中,客戶端和服務(wù)器通過至少一條連接進(jìn)行通信,并且客戶端刷新媒體文件中被請(qǐng)求的部分的隊(duì)列并根據(jù)收到的預(yù)定的用戶指令斷開至少一個(gè)連接。
[0021 ] 在本發(fā)明的另一實(shí)施例中,客戶端存儲(chǔ)文件映射和數(shù)據(jù)文件,文件映射包含了表明媒體文件中已經(jīng)被下載的部分的掩碼,并且數(shù)據(jù)文件包含媒體文件中已經(jīng)被下載的部分。
[0022]在本發(fā)明的另一實(shí)施例中,數(shù)據(jù)文件是一個(gè)稀疏文件。
[0023]在本發(fā)明的另一實(shí)施例中,媒體文件包括媒體隊(duì)列和索引,客戶端包括播放引擎,該播放引擎獲取索引并確定媒體隊(duì)列中需要符合用戶播放指令的部分,利用索引將媒體隊(duì)列的部分映射到媒體文件的部分的文件解析器,以及與媒體服務(wù)器進(jìn)行通信以便下載部分媒體文件的下載管理器。
[0024]在本發(fā)明的另一實(shí)施例包括:接收用戶指令的用戶界面、存儲(chǔ)至少一個(gè)媒體文件的存儲(chǔ)設(shè)備、網(wǎng)絡(luò)連接、通過網(wǎng)絡(luò)連接向遠(yuǎn)程存儲(chǔ)的媒體文件異步請(qǐng)求文件的至少一個(gè)字節(jié)范圍的下載管理器、依據(jù)由用戶界面接收的用戶指令確定遠(yuǎn)程存儲(chǔ)的媒體文件中必需被下載的部分的播放引擎、以及將對(duì)遠(yuǎn)程存儲(chǔ)的媒體文件中的一部分進(jìn)行請(qǐng)求轉(zhuǎn)換為字節(jié)范圍并將該字節(jié)范圍提供給下載管理器的文件解析器。
[0025]在本發(fā)明的另一實(shí)施例中,下載管理器創(chuàng)建包含媒體文件中被下載的區(qū)塊的映射的狀態(tài)文件,并且下載管理器創(chuàng)建用來存儲(chǔ)媒體文件已經(jīng)被下載區(qū)塊的數(shù)據(jù)文件。
[0026]在本發(fā)明的另一實(shí)施例中,下載管理器保持被請(qǐng)求的字節(jié)范圍的隊(duì)列。
[0027]在本發(fā)明的另一實(shí)施例中,下載管理器刷新該隊(duì)列。
[0028]在本發(fā)明的另一實(shí)施例中,播放引擎利用由遠(yuǎn)程媒體文件獲取的菜單信息生成一個(gè)菜單。
[0029]在本發(fā)明的另一實(shí)施例中,播放引擎通過菜單接收對(duì)遠(yuǎn)程媒體文件中的多個(gè)媒體序列中的一個(gè)媒體序列的選擇。
[0030]在本發(fā)明的另一實(shí)施例中,播放引擎通過菜單接收對(duì)遠(yuǎn)程媒體文件中的一個(gè)媒體序列中的多個(gè)音軌中的一個(gè)音軌的選擇。
[0031 ] 在本發(fā)明的另一實(shí)施例中,播放引擎通過菜單接收對(duì)遠(yuǎn)程媒體文件中的一個(gè)媒體序列中的多個(gè)字幕軌中的一個(gè)字幕軌的選擇。
【專利附圖】
【附圖說明】
[0032]圖1是根據(jù)本發(fā)明一實(shí)施例的連續(xù)播放系統(tǒng)的網(wǎng)絡(luò)原理簡(jiǎn)圖。
[0033]圖2是根據(jù)本發(fā)明一實(shí)施例對(duì)遠(yuǎn)程存儲(chǔ)的媒體文件進(jìn)行連續(xù)播放的程序的流程圖。
[0034]圖3是根據(jù)本發(fā)明一實(shí)施例用來向遠(yuǎn)程服務(wù)器請(qǐng)求字節(jié)范圍和支持“特技播放”功能的客戶端應(yīng)用軟件的概念圖。
[0035]圖4是根據(jù)本發(fā)明一實(shí)施例的下載管理器的概念圖。
[0036]圖5是根據(jù)本發(fā)明一實(shí)施例由媒體服務(wù)器請(qǐng)求字節(jié)范圍的程序的流程圖。
[0037]圖6是根據(jù)本發(fā)明一實(shí)施例刷新與媒體服務(wù)器連接的程序的流程圖。
[0038]圖7是根據(jù)本發(fā)明一實(shí)施例在對(duì)字節(jié)范圍進(jìn)行非順序下載時(shí)建立數(shù)據(jù)文件的程序的流程圖。
[0039]圖8是根據(jù)本發(fā)明一實(shí)施例可供文件解析器使用的用來確定遠(yuǎn)程媒體文件內(nèi)的菜單信息和媒體序列并從文件抽取信息的程序的流程圖。
[0040]圖9是根據(jù)本發(fā)明一實(shí)施例供播放引擎使用的用來從遠(yuǎn)程媒體文件獲取數(shù)據(jù)塊的程序的流程圖,該遠(yuǎn)程媒體文件利用數(shù)據(jù)塊容器格式被格式化。
【具體實(shí)施方式】
[0041]下面請(qǐng)參閱附圖,圖中展示了一種連續(xù)下載和播放媒體的系統(tǒng)。在許多實(shí)施例中,該媒體存儲(chǔ)于一遠(yuǎn)程服務(wù)器的文件中,并且一客戶端應(yīng)用程序配置的裝置檢索出該媒體文件的部分并播放該媒體。該客戶端應(yīng)用程序通常在開始播放時(shí)不占有整個(gè)媒體文件并能夠請(qǐng)求媒體文件不連續(xù)的部分。這樣,該客戶端應(yīng)用程序就能夠支持“特技播放”功能?!疤丶疾シ拧惫δ苡绊懙矫襟w文件的播放,例如不連續(xù)播放功能,包括暫停、倒片、快進(jìn)、章節(jié)間跳躍。根據(jù)本發(fā)明實(shí)例的客戶端應(yīng)用程序能夠確定媒體文件中支持某特定“特技播放”功能所需要的部分并向遠(yuǎn)程服務(wù)器請(qǐng)求媒體文件中的這些部分,而不是按順序下載媒體文件并一直等待請(qǐng)求的信息下載后執(zhí)行“特技播放”功能。當(dāng)“特技播放”功能涉及到跳至媒體中尚未被下載的部分時(shí),例如快進(jìn)和章節(jié)間跳轉(zhuǎn)時(shí),與連續(xù)下載相比,能夠大大減少等待時(shí)間。
[0042]根據(jù)本發(fā)明一實(shí)施例的連續(xù)播放系統(tǒng)的配置可取決于該連續(xù)播放系統(tǒng)所支持的容器格式(container format)。容器格式的例子包括位于華盛頓州雷蒙德市的微軟公司制定的AVI1.0文件格式、類似于已經(jīng)全文并入本申請(qǐng)作為參考的美國(guó)專利申請(qǐng)?zhí)?1/016,184 和 11/198,142 中規(guī)定的 OpenDML AVI 或 AVI2.0 格式、被稱為 Matroska 的開放源格式和MPEG_4Partl5 (MP4)(參見www.matroska.0rg)。媒體文件取決于其所使用的容器格式可包含多個(gè)標(biāo)題(即媒體序列)并且每個(gè)標(biāo)題可包含多個(gè)音軌和/或一個(gè)或多個(gè)字幕軌道。媒體文件的容器格式影響到媒體信息在媒體文件中的定位方式。因此,連續(xù)播放系統(tǒng)的配置通常是依據(jù)某一特定應(yīng)用程序中支持的容器格式。盡管以下對(duì)各種實(shí)施方式進(jìn)行了討論,依據(jù)本發(fā)明的實(shí)施方式還可構(gòu)造出適合于不同容器格式的其他變化實(shí)施方式。
[0043]根據(jù)本發(fā)明一實(shí)施例的連續(xù)播放系統(tǒng)如圖1所示。連續(xù)播放系統(tǒng)10包含一與網(wǎng)絡(luò)14連接的媒體服務(wù)器12。媒體文件存儲(chǔ)于媒體服務(wù)器14中并且被客戶端應(yīng)用程序配置過的設(shè)備能夠訪問這些媒體文件。在圖中所示的實(shí)施例中,能夠訪問媒體服務(wù)器上的媒體文件的設(shè)備包括個(gè)人電腦16、用戶電子設(shè)備如連接到電視機(jī)20等播放設(shè)備的機(jī)頂盒18、以及便攜設(shè)備如個(gè)人數(shù)字助理22或移動(dòng)電話。這些設(shè)備與媒體服務(wù)器12可通過經(jīng)由網(wǎng)關(guān)26連接到因特網(wǎng)24的網(wǎng)絡(luò)14進(jìn)行通信。在另一實(shí)施例中,媒體服務(wù)器14和設(shè)備通過因特網(wǎng)進(jìn)行通信。
[0044]使用客戶端應(yīng)用程序?qū)ι鲜鲈O(shè)備進(jìn)行配置,該客戶端應(yīng)用程序能夠請(qǐng)求媒體服務(wù)器12上的媒體文件中的某些部分進(jìn)行播放??蛻舳藨?yīng)用程序可植入軟件、固件、硬件或其組合中。在許多實(shí)施例中,該設(shè)備播放由媒體文件下載的媒體。在若干實(shí)施例中,該設(shè)備提供一個(gè)或多個(gè)輸出,使另一設(shè)備能夠播放該媒體。當(dāng)媒體文件包含索引時(shí),由本發(fā)明一實(shí)施例的客戶端應(yīng)用程序配置的設(shè)備可利用該索引確定媒體中各個(gè)部分的位置。因此,可利用該索引為用戶提供“特技播放”功能。當(dāng)用戶發(fā)出“特技播放”指令時(shí),該設(shè)備利用該索引確定媒體文件中執(zhí)行“特技播放”功能所需要的一個(gè)或多個(gè)部分并向服務(wù)器請(qǐng)求這些部分。在一些實(shí)施例中,該客戶端應(yīng)用軟件利用一允許對(duì)媒體文件內(nèi)特定的字節(jié)范圍進(jìn)行下載的傳輸協(xié)議請(qǐng)求媒體文件的部分。此類協(xié)議之一是Internet Society或BitTorrent公布的HTTP 1.1協(xié)議,可由www.bittorrent.0rg獲得。在其他實(shí)施例中,可使用其他協(xié)議和/或機(jī)制獲得媒體服務(wù)器上的媒體文件的特定部分。
[0045]圖2表示根據(jù)本發(fā)明一實(shí)施例向媒體服務(wù)器請(qǐng)求媒體的流程圖。過程40包括以下步驟:(42)從媒體服務(wù)器獲取媒體文件索引。然后(44)確定播放媒體文件起始位置。在一些實(shí)施例中,所有文件都從媒體序列的起始位置開始播放。在一些實(shí)施例中,媒體文件可包括一個(gè)或多個(gè)能夠讓用戶選擇由不同的位置開始觀看一個(gè)或多個(gè)媒體序列的一個(gè)或多個(gè)菜單。一旦確定位置,就請(qǐng)求由該確定位置開始播放媒體所需要的媒體信息(46)并在收到該媒體信息后播放(48)。該過程涉及聽取用戶指令(50)。當(dāng)用戶沒有發(fā)出指令時(shí),系統(tǒng)按照前一次從用戶端接收到的用戶指令繼續(xù)播放。當(dāng)用戶發(fā)出指令時(shí),該過程確定該指令是否為停止播放指令(52)。否則,該過程確定遵照指令所需要的媒體(54)并請(qǐng)求該需要的媒體(46)。持續(xù)該過程直至用戶發(fā)出停止播放該媒體或已經(jīng)到達(dá)該媒體序列的尾部。
[0046]根據(jù)本發(fā)明實(shí)施例的媒體服務(wù)器能夠簡(jiǎn)單地通過存儲(chǔ)媒體文件并接收對(duì)媒體文件內(nèi)特定字節(jié)范圍的請(qǐng)求支持連續(xù)播放功能和特技播放功能??蛻舳藨?yīng)用軟件可確定適當(dāng)?shù)淖止?jié)范圍而媒體服務(wù)器只是簡(jiǎn)單地響應(yīng)該字節(jié)范圍請(qǐng)求。用來根據(jù)用戶指令確定適當(dāng)?shù)淖止?jié)范圍的客戶端應(yīng)用軟件可以通過各種方式實(shí)現(xiàn)。
[0047]根據(jù)本發(fā)明一實(shí)施例使用三個(gè)抽象層的客戶端應(yīng)用軟件如圖3所示??蛻舳藨?yīng)用軟件60包括負(fù)責(zé)協(xié)調(diào)由遠(yuǎn)程服務(wù)器的文件下載的特定字節(jié)范圍的下載管理器62。播放引擎64是用來協(xié)調(diào)應(yīng)用戶指令播放媒體文件的高層過程。當(dāng)媒體文件被播放時(shí),播放引擎利用媒體文件的一個(gè)索引確定繼續(xù)播放媒體和/或響應(yīng)用戶指令所需要的那部分媒體文件。文件解析器66負(fù)責(zé)在播放引擎64和下載管理器62之間進(jìn)行接口。文件解析器將高層數(shù)據(jù)請(qǐng)求由播放引擎映像到其后能夠利用下載管理器指定請(qǐng)求的特定字節(jié)范圍。下面討論如何根據(jù)本發(fā)明實(shí)例實(shí)現(xiàn)下載管理器、文件解析器和播放弓I擎執(zhí)行任務(wù)。在許多實(shí)施例中,客戶端軟件利用另外一些架構(gòu),這些架構(gòu)利用媒體文件的索引將用戶指令轉(zhuǎn)換為字節(jié)請(qǐng)求提供給遠(yuǎn)程媒體服務(wù)器。
[0048]根據(jù)本發(fā)明的實(shí)施例下載管理器如圖4所示。如上文所討論,下載管理器負(fù)責(zé)與一個(gè)或多個(gè)媒體服務(wù)器進(jìn)行通信并由儲(chǔ)存由這些媒體服務(wù)器中的媒體文件獲取特定字節(jié)范圍。圖4中所示的下載管理器70將遠(yuǎn)程文件對(duì)象72和部分文件對(duì)象74實(shí)例化,以便協(xié)助媒體文件的下載。遠(yuǎn)程文件對(duì)象72處理與向媒體服務(wù)器請(qǐng)求字節(jié)范圍相關(guān)的通信并維持被請(qǐng)求的字節(jié)范圍隊(duì)列。部分文件對(duì)象74負(fù)責(zé)由媒體服務(wù)器下載的數(shù)據(jù)的儲(chǔ)存。該部分文件對(duì)象74為下載管理器下載的文件建立一個(gè)臨時(shí)數(shù)據(jù)通路75。
[0049]臨時(shí)數(shù)據(jù)通路75包括數(shù)據(jù)文件78和狀態(tài)文件76。數(shù)據(jù)文件76包含由媒體服務(wù)器接收到的數(shù)據(jù)。狀態(tài)文件包含對(duì)數(shù)據(jù)文件的掩碼(mask),掩碼中的每一位都與數(shù)據(jù)文件中一固定大小的區(qū)塊對(duì)應(yīng)。隨著這些區(qū)塊被下載,掩碼中的位被設(shè)定。狀態(tài)文件還可包括外部數(shù)據(jù)的一個(gè)區(qū)域,該區(qū)域可包含可被下載管理器使用的用來確定是否有部分下載的數(shù)據(jù)已經(jīng)過期的信息,例如最近一次修改的服務(wù)器時(shí)間戳。當(dāng)整個(gè)媒體文件被下載時(shí),下載管理器創(chuàng)建一個(gè)輸出文件通路80并且遠(yuǎn)程文件82的完整下載版本被輸出到該下載通路。這時(shí),客戶端軟件可以采用常規(guī)手段利用本地文件播放媒體并支持“特技播放”功能。
[0050]數(shù)據(jù)文件的長(zhǎng)度可以達(dá)到若干千兆字節(jié),這取決于被下載文件的大小。通常的文件分配方案是將零分配給文件內(nèi)的每個(gè)字節(jié),對(duì)于較大的文件來說這需要數(shù)分鐘的時(shí)間??梢酝ㄟ^將文件作為稀疏文件分配來減少數(shù)據(jù)文件分配時(shí)產(chǎn)生的等待時(shí)間,稀疏文件僅使用真正被寫入文件的字節(jié)數(shù)。當(dāng)使用稀疏文件時(shí),文件分配程序需要很少的時(shí)間。在另一些實(shí)施例中,可以使用其他一些針對(duì)下載管理器的需要權(quán)衡延遲文件分配方案。
[0051]數(shù)據(jù)文件的區(qū)塊大小(由狀態(tài)文件表示)確定了可以被下載的數(shù)據(jù)的粒度(granularity)。僅就下載需要的字節(jié)而言,較小的區(qū)塊通常更為高效。但是較小的區(qū)塊可導(dǎo)致較大的掩碼尺寸。在許多實(shí)施例中,區(qū)塊大小為128,以便在效率和掩碼尺寸之間取得折衷。在另一實(shí)施例中,使用了根據(jù)應(yīng)用軟件的要求確定區(qū)塊大小的方案。
[0052]根據(jù)本發(fā)明一實(shí)施例的利用下載管理器請(qǐng)求數(shù)據(jù)的過程如圖5所示。過程90包括以下步驟:該過程開始于接收到由存儲(chǔ)于遠(yuǎn)程服務(wù)器上的媒體文件下載字節(jié)范圍的請(qǐng)求(91)。當(dāng)使用類似于如圖4所示的下載管理器時(shí),下載管理器將遠(yuǎn)程文件對(duì)象和部分文件對(duì)象實(shí)例化并創(chuàng)建必要的支持文件。建立與遠(yuǎn)程服務(wù)器的連接(92),將被請(qǐng)求的字節(jié)范圍置于隊(duì)列中(94),然后請(qǐng)求該被請(qǐng)求的字節(jié)范圍(96)。隨著更多字節(jié)被接收到,該過程確定被請(qǐng)求的字節(jié)范圍內(nèi)是否有字節(jié)之前已經(jīng)被下載并且只將之前未被下載的那部分字節(jié)范圍置于請(qǐng)求隊(duì)列中。
[0053]當(dāng)使用類似圖4所示的下載管理器用于實(shí)施圖5所示的植入過程(90)時(shí),使用狀態(tài)文件76中的掩碼確定已經(jīng)被存儲(chǔ)于數(shù)據(jù)文件78中的被請(qǐng)求的字節(jié)和剩余的應(yīng)該被請(qǐng)求的字節(jié)。每個(gè)字節(jié)范圍請(qǐng)求都具有相關(guān)的開銷,因此,本發(fā)明的許多實(shí)施例在一個(gè)字節(jié)范圍請(qǐng)求內(nèi)包括多字節(jié)范圍和/或檢索請(qǐng)求隊(duì)列中位于隊(duì)列前端的鄰近字節(jié)范圍的字節(jié)范圍并請(qǐng)求包含所有鄰近字節(jié)范圍的較大的字節(jié)范圍。在一些實(shí)施例中,該過程打開多條連接以便增加下載數(shù)據(jù)速率和/或適應(yīng)限制通過連接進(jìn)行的字節(jié)請(qǐng)求的數(shù)量的服務(wù)器。再一次,開放的連接具有相關(guān)的開銷。因此,可根據(jù)適合于某特定應(yīng)用軟件的限制對(duì)連接的數(shù)量進(jìn)行限制(例如:5個(gè))。
[0054]當(dāng)確定請(qǐng)求隊(duì)列中不再有字節(jié)范圍時(shí)(100),該過程確定是否整個(gè)文件已經(jīng)被下載(102)。如果整個(gè)文件沒有被完全下載,該過程向部分下載的文件對(duì)象請(qǐng)求丟失的字節(jié)。一旦整個(gè)文件被下載,該下載文件被輸出至輸出目錄并且與遠(yuǎn)程服務(wù)器的連接被關(guān)閉(104),整個(gè)過程結(jié)束。在許多實(shí)施例中,只有在完成播放后才將文件輸出。
[0055]盡管圖5中展示了一種下載字節(jié)范圍的特定過程,仍然可以根據(jù)本發(fā)明的實(shí)施例使用這一過程的變化形態(tài)并且/或者能夠進(jìn)行特定字節(jié)范圍和數(shù)據(jù)文件集合下載的其他過程。此外,這些過程還可進(jìn)行種種優(yōu)化以便盡量減少通信開銷對(duì)媒體播放的影響。[0056]當(dāng)用戶發(fā)出一 “特技播放”指令時(shí),前次被請(qǐng)求的字節(jié)范圍可能不再需要,以便按用戶的指令繼續(xù)播放媒體。根據(jù)本發(fā)明一些實(shí)施例的下載管理器具有刷新等待中的字節(jié)范圍請(qǐng)求并建立一個(gè)新的字節(jié)范圍請(qǐng)求隊(duì)列的能力。對(duì)某一請(qǐng)求隊(duì)列進(jìn)行刷新的優(yōu)點(diǎn)在于,不會(huì)產(chǎn)生在下載當(dāng)前具有更高優(yōu)先級(jí)的字節(jié)范圍之前必需要等待前次被請(qǐng)求的字節(jié)范圍被請(qǐng)求之后才能進(jìn)行所引起的延遲。在一些實(shí)施例中,關(guān)閉與遠(yuǎn)程服務(wù)器的連接和打開一個(gè)新的連接會(huì)進(jìn)一步減少延遲。關(guān)閉連接會(huì)去除媒體服務(wù)器在響應(yīng)新的下載請(qǐng)求之前響應(yīng)等待中的下載請(qǐng)求所引起的延遲。
[0057]根據(jù)本發(fā)明一實(shí)施例對(duì)一請(qǐng)求隊(duì)列進(jìn)行刷新的過程如圖6所示。過程110包括以下步驟:接收刷新請(qǐng)求(112),刷新請(qǐng)求隊(duì)列(114)并關(guān)閉與媒體服務(wù)器的連接(116)。在許多實(shí)施例中,可以使用其他過程來減少接收到“特技播放”請(qǐng)求時(shí)產(chǎn)生的延遲,并創(chuàng)建一個(gè)對(duì)遠(yuǎn)程媒體文件中前次未曾請(qǐng)求的部分的即時(shí)需求,該“特技播放”請(qǐng)求會(huì)取消對(duì)前次請(qǐng)求的媒體文件部分的即時(shí)需求。
[0058]當(dāng)下載管理器接收到數(shù)據(jù)時(shí),狀態(tài)文件和數(shù)據(jù)文件都被更新以便反映接收到的數(shù)據(jù)。根據(jù)本發(fā)明的實(shí)施例處理由遠(yuǎn)程媒體服務(wù)器接收字節(jié)的過程如圖7所示。過程130包括接收字節(jié)(132),更新狀態(tài)文件中的掩碼(134)并更新數(shù)據(jù)文件(136)。然后確定是否已經(jīng)下載了整個(gè)文件(138)。如果整個(gè)文件未被完全下載,該過程等待接收更多的字節(jié)。當(dāng)整個(gè)文件已經(jīng)被完整下載時(shí),下載的媒體文件被輸出到其輸出目錄(140)。在其他一些實(shí)施例中,使用其他一些過程組織接收到的字節(jié)范圍。
[0059]使用根據(jù)本發(fā)明實(shí)施例的文件解析器將高層請(qǐng)求由播放引擎轉(zhuǎn)換到用于下載管理器的字節(jié)范圍請(qǐng)求中并將下載管理器下載的字節(jié)范圍傳遞到播放引擎。當(dāng)設(shè)備開始連續(xù)播放存儲(chǔ)于遠(yuǎn)程服務(wù)器上的媒體文件時(shí),文件解析器訪問該文件并下載與媒體文件的內(nèi)容相關(guān)的信息。例如,已經(jīng)作為參考并入本申請(qǐng)的美國(guó)專利號(hào)11/016,184和11/198,142中所描述的媒體文件包括菜單信息和/來自多媒體序列的信息(即:不同的媒體演示)。文件解析器獲取菜單信息和與媒體序列相關(guān)的信息。當(dāng)用戶選擇了媒體序列時(shí),文件解析器獲取被選定的媒體序列的索引并且該索引在該媒體序列被播放時(shí)被用來鑒別要請(qǐng)求的遠(yuǎn)程媒體文件內(nèi)的字節(jié)范圍。
[0060]根據(jù)本發(fā)明實(shí)施例的確定遠(yuǎn)程媒體文件內(nèi)包含的媒體序列和抽取選定媒體的過程如圖8所示。過程150包括以下步驟:獲取文件內(nèi)包含的任何菜單信息和媒體文件中不同媒體序列的數(shù)量相關(guān)的信息(152)。在文件解析器與下載管理器結(jié)合使用的實(shí)施例中,文件管理器利用關(guān)于媒體格式的知識(shí)選擇信息字節(jié),以便利用下載管理器對(duì)媒體文件發(fā)出請(qǐng)求。可利用菜單信息和/或與媒體序列數(shù)量相關(guān)的信息獲取與每個(gè)媒體序列相關(guān)的信息(154)。有用的信息包括與媒體序列的名稱相關(guān)的信息、媒體序列的格式、媒體序列中可選音軌的數(shù)量、媒體序列中存在一個(gè)或多個(gè)字幕軌和/或任何用助于用戶選擇媒體序列或解碼器對(duì)媒體序列進(jìn)行解碼的附加信息。當(dāng)媒體被格式化為AVI格式或任何類似于美國(guó)專利申請(qǐng)?zhí)?1/016,184和11/198,142中描述的文件格式時(shí),可通過下載每個(gè)媒體文件的RIFF頭標(biāo)(header)的方式下載每個(gè)媒體序列的相關(guān)信息。一但獲取了與媒體序列相關(guān)的信息,就可進(jìn)行與將要播放的媒體序列相關(guān)的選擇(154)。當(dāng)媒體文件包含單一的媒體序列時(shí),可以自動(dòng)決定。當(dāng)媒體文件包含多個(gè)媒體序列時(shí),可以根據(jù)用戶指令進(jìn)行決定,該用戶決定是利用通過文件解析器由遠(yuǎn)程媒體文件獲取的菜單信息通過菜單界面獲取的。文件解析器利用獲取的媒體序列相關(guān)信息引導(dǎo)下載管理器下載對(duì)媒體序列的索引對(duì)應(yīng)的字節(jié)范圍(156)。文件解析器可利用索引由遠(yuǎn)程文件中抽取數(shù)據(jù)(158)。播放引擎確定被文件解析器抽取的數(shù)據(jù)。數(shù)據(jù)的抽取方式取決于媒體文件的格式。當(dāng)媒體文件被格式為使用組塊(chunk)的媒體格式時(shí),文件解析器利用索弓I將組塊參考(chunk reference)轉(zhuǎn)換為能夠利用下載管理器檢索的特定字節(jié)范圍。當(dāng)使用其他格式時(shí),文件解析器利用文件解析器可得到的適合于文件描述信息的字節(jié)映射。除了請(qǐng)示字節(jié)范圍以外,根據(jù)本發(fā)明的實(shí)施例的文件解析器還能以與下載管理器進(jìn)行通信以便檢查特定請(qǐng)求的狀態(tài)并可以向播放引擎提供下載字節(jié)。
[0061]當(dāng)連續(xù)播放遠(yuǎn)程文件時(shí),播放引擎的主要任務(wù)總是按用戶請(qǐng)求的方式保持播放文件所需要的媒體信息。當(dāng)媒體文件包括索引時(shí),播放引擎可以根據(jù)索引確定按用戶請(qǐng)求的方式保持播放文件所需要的媒體信息。根據(jù)本發(fā)明實(shí)施例的用來由被格式化為以信息組塊的方式表示媒體的文件獲取媒體的過程如圖9所示。過程190包括以下步驟:由遠(yuǎn)程媒體文件獲取索引。在播放引擎通過文件解析器請(qǐng)求信息的實(shí)施例中,播放引擎向文件解析器可向文件解析器發(fā)出指令,獲取索引,并且文件解析器可利用下載管理器抽取必要的信息。然后播放引擎按照用戶發(fā)出的包括“特技”播放在內(nèi)的指令選擇組塊(194),并向文件解析器發(fā)出指令將選定的組塊下載(196)。在一些實(shí)施例中,播放引擎依照最早到期限最先選擇的原則選擇組塊。來自媒體序列內(nèi)部的多路未使用的音軌和未使用的字幕軌的組塊可以忽視。在許多實(shí)施例中,在下載整個(gè)索引之前就請(qǐng)示媒體組塊。通常是由媒體序列的起始處開始播放媒體,因此,在索引被下載時(shí)可以下載媒體序列起始處的組塊。當(dāng)播放引擎接收到來自文件解析器的組塊時(shí),這些組塊被排列成隊(duì)列并被提供給適宜的解碼器,以便能夠?qū)γ襟w進(jìn)行播放(198)。一旦足夠的影片被下載了,就可以開始播放該影片了。緩沖的長(zhǎng)度可通過與組塊下載元件共享的播放列表的長(zhǎng)度確定。
[0062]以上針對(duì)圖9描述的組塊選擇過程中保持一個(gè)被請(qǐng)求組塊的隊(duì)列。該隊(duì)列可以作為被請(qǐng)示組塊的索引項(xiàng)清單保持。該組塊下載過程對(duì)被請(qǐng)求的組塊的下載狀態(tài)進(jìn)行輪詢(poll)。一旦下載完成,由被請(qǐng)求的組塊隊(duì)列中移除一個(gè)組塊并且被下載的組塊被送至組塊播放過程。
[0063]當(dāng)接收到“特技播放”指令時(shí),播放引擎選擇適合“特技播放”指令的媒體信息。例如,接收到快進(jìn)或倒片指令的播放引擎可以只請(qǐng)求在整個(gè)媒體序列中按照特技播放功能的速率確定的時(shí)間間隔的關(guān)鍵幀(即,完整幀)。在許多實(shí)施例中,間隔時(shí)間為0.1x特技幀速率,,以便在特技播放期間提供每秒10個(gè)關(guān)鍵幀的播放速率。在另一些實(shí)施例中,采用了各種其他算法確定要請(qǐng)求的媒體。一旦含有關(guān)鍵幀的組塊被鑒別出來,播放引擎就利用文件解析器和下載管理器請(qǐng)求組塊。
[0064]盡管上述描述中包括了本發(fā)明的許多特定實(shí)施例,但并非用來限定本發(fā)明,而是僅作為本發(fā)明的實(shí)施例的一個(gè)實(shí)例。上述的討論中有很多都是假定媒體文件含有用來鑒別該媒體文件中不同的媒體信息片段的索引。在許多實(shí)施例中,媒體文件中含有分層索引和/或其他索引格式并且播放引擎和文件解析器適于容納特定的索引結(jié)構(gòu)。在一些實(shí)施例中,客戶端應(yīng)用軟件適于容納包括不含索引但利用其他信息來描述媒體文件內(nèi)容的格式在內(nèi)的多種文件格式。因此,本發(fā)明的范圍不受以上展示的實(shí)施例的限制,而是由后附的權(quán)利要求書及其等同形式限定。
【權(quán)利要求】
1.一種連續(xù)播放媒體文件的系統(tǒng),該系統(tǒng)包括: 媒體服務(wù)器; 客戶端;以及 網(wǎng)絡(luò); 其中所述客戶端和媒體服務(wù)器通過所述網(wǎng)絡(luò)通信; 其中所述客戶端用來向所述媒體服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求所述媒體文件的至少一部分;其中所述服務(wù)器向所述客戶端提供媒體文件中被請(qǐng)求的部分;及其中所述的客戶端接收與播放所述媒體文件相關(guān)的用戶指令并向所述媒體服務(wù)器請(qǐng)求所述媒體件中尚未被下載并符合所述播放指令的部分。
2.根據(jù)權(quán)利要求1所述的連續(xù)播放媒體文件的系統(tǒng),其中所述媒體文件的鄰近部分被分組并且這些組按照期限最早最優(yōu)先的原則被請(qǐng)求。
3.根據(jù)權(quán)利要求1所述的連續(xù)播放媒體文件的系統(tǒng),其中所述的客戶端用來維持所述媒體文件中被請(qǐng)求的部分的隊(duì)列。
4.根據(jù)權(quán)利要求3所述的連續(xù)播放媒體文件的系統(tǒng),其中: 所述客戶端和服務(wù)器通過至少一個(gè)連接進(jìn)行通信;及 所述客戶端刷新媒體文件中被請(qǐng)求的部分的隊(duì)列并響應(yīng)接收到的預(yù)定的用戶指令斷開至少一個(gè)連接。
5.根據(jù)權(quán)利要求1所述的連續(xù)播放媒體文件的系統(tǒng),其中, 所述客戶端用來存儲(chǔ)文件映射文件和數(shù)據(jù)文件; 所述映射文件包含表明所述媒體文件中已經(jīng)被下載的部分的掩碼;及 所述數(shù)據(jù)文件包含所述媒體文件的已下載部分。
6.根據(jù)權(quán)利要求5所述的連續(xù)播放媒體文件的系統(tǒng),其中所述的數(shù)據(jù)文件是稀疏文件。
7.根據(jù)權(quán)利要求1所述的連續(xù)播放媒體文件的系統(tǒng),其中: 所述媒體文件包含媒體序列和索引; 所述客戶端包括: 播放引擎,用來獲取所述索引并確定符合用戶播放指令所需要的那部分媒體序列; 文件解析器,用來利用上述索引將所述部分媒體序列映射到所述部分媒體文件;以及 下載管理器,用來與所述媒體服務(wù)器通信并下載所述部分媒體文件。
【文檔編號(hào)】H04L29/06GK103561278SQ201310430673
【公開日】2014年2月5日 申請(qǐng)日期:2008年1月7日 優(yōu)先權(quán)日:2007年1月5日
【發(fā)明者】羅蘭·奧斯伯內(nèi) 申請(qǐng)人:索尼克知識(shí)產(chǎn)權(quán)股份有限公司