專利名稱:用于代碼轉(zhuǎn)換后的媒體內(nèi)容的漸進(jìn)遞送的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及數(shù)字媒體內(nèi)容,更具體地,涉及低等待時(shí)間(latency)內(nèi)容遞送。
背景技術(shù):
伴隨著近年來(lái)已經(jīng)出現(xiàn)的視頻、音頻和多媒體內(nèi)容的數(shù)量和多樣性的急劇增加, 對(duì)用于將內(nèi)容高效地遞送給用戶的系統(tǒng)和技術(shù)的需求也同樣增加。能接入因特網(wǎng)的手機(jī)、 個(gè)人數(shù)字助理(PDA)和其它移動(dòng)媒體設(shè)備已經(jīng)促成了對(duì)各種不同目標(biāo)格式的內(nèi)容遞送的增加的需求。此外,用戶生成內(nèi)容的快速增長(zhǎng)已經(jīng)以許多不同源格式創(chuàng)建了大量用戶可用的媒體內(nèi)容。將內(nèi)容從內(nèi)容被創(chuàng)建或被存儲(chǔ)的源格式轉(zhuǎn)換為適合于特定媒體播放器的使用的目標(biāo)格式可能是耗時(shí)的。媒體內(nèi)容的遞送中的延時(shí)(delay)可能會(huì)減損用戶對(duì)內(nèi)容的享用或者在其它方面負(fù)面地影響用戶的體驗(yàn)。并且,在遞送資源受到限制的系統(tǒng)中,將媒體內(nèi)容轉(zhuǎn)換為適于特定用戶的格式可能導(dǎo)致影響其它用戶的處理瓶頸、網(wǎng)絡(luò)擁塞和附加延時(shí)。 因此,在內(nèi)容向各個(gè)用戶的遞送期間出現(xiàn)的延時(shí)可能導(dǎo)致內(nèi)容遞送系統(tǒng)總體效率的明顯降低。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,與遞送數(shù)字媒體內(nèi)容相關(guān)聯(lián)的缺點(diǎn)和問(wèn)題已經(jīng)被大大減少或消除。根據(jù)本發(fā)明一個(gè)實(shí)施例,一種用于遞送媒體內(nèi)容的方法包括接收來(lái)自客戶端的針對(duì)媒體內(nèi)容的請(qǐng)求以及識(shí)別包含與該請(qǐng)求相關(guān)聯(lián)的媒體內(nèi)容的第一媒體文件。第一媒體文件具有第一媒體格式。該方法還包括開(kāi)始與該請(qǐng)求相關(guān)聯(lián)的第二媒體文件的創(chuàng)建以及估計(jì)第二媒體文件的一個(gè)或多個(gè)特征。第二媒體文件具有第二媒體格式。另外,該方法包括基于第二媒體文件的估計(jì)出的特征來(lái)生成用于第二媒體文件的媒體信息并且在第二媒體的創(chuàng)建已被完成之前將媒體信息發(fā)送給客戶端。某些實(shí)施例的技術(shù)優(yōu)點(diǎn)包括將媒體內(nèi)容以多種格式遞送給各種不同設(shè)備的能力。 某些實(shí)施例提供在用戶請(qǐng)求特定媒體文件的時(shí)間與遞送系統(tǒng)開(kāi)始將所請(qǐng)求的內(nèi)容遞送給用戶的時(shí)間之間的延時(shí)最小的低等待時(shí)間遞送。另外,具體實(shí)施例可以在沒(méi)有引入對(duì)用戶所利用的軟件或硬件的約束的情況下被實(shí)現(xiàn)。對(duì)于本領(lǐng)域技術(shù)人員,其它技術(shù)優(yōu)點(diǎn)從以下附圖、描述和權(quán)利要求將顯而易見(jiàn)。此外,盡管以上已經(jīng)列舉了具體的優(yōu)點(diǎn),但是各個(gè)實(shí)施例可以包括所列舉的優(yōu)點(diǎn)中的全部、一些優(yōu)點(diǎn)或不包括所列舉的優(yōu)點(diǎn)。
為了更全面地理解本發(fā)明以及其其它特征和優(yōu)點(diǎn),現(xiàn)在參考結(jié)合附圖進(jìn)行的以下描述,在附圖中圖1圖示出根據(jù)本發(fā)明的具體實(shí)施例的用于遞送媒體內(nèi)容的系統(tǒng);
圖2A圖示出圖1中所示的系統(tǒng)的具體實(shí)施例中可以利用的一種媒體文件;圖2B圖示出系統(tǒng)的具體實(shí)施例中可以利用的另一種媒體文件;圖3是圖示出系統(tǒng)的具體實(shí)施例中可以利用的代碼轉(zhuǎn)換器的框圖;以及圖4是詳細(xì)描述根據(jù)本發(fā)明某些實(shí)施例的用于遞送媒體內(nèi)容的系統(tǒng)的示例操作的流程圖。
具體實(shí)施例方式圖1圖示出內(nèi)容遞送系統(tǒng)10的具體實(shí)施例,其用于將數(shù)字媒體內(nèi)容從被存儲(chǔ)在內(nèi)容遞送系統(tǒng)10中或由其生成的源文件80遞送給客戶端70。系統(tǒng)10包括原始內(nèi)容儲(chǔ)存器 20、代碼轉(zhuǎn)換器30、修改內(nèi)容儲(chǔ)存器22、主機(jī)處理器40、內(nèi)容服務(wù)器50、網(wǎng)絡(luò)60和客戶端 70。為了將內(nèi)容提供給具有各種不同接收和顯示要求的客戶端70,內(nèi)容遞送系統(tǒng)10可以修改源文件80中被請(qǐng)求的媒體內(nèi)容來(lái)創(chuàng)建目標(biāo)文件82,目標(biāo)文件82包含適合于發(fā)送給特定客戶端70和/或由其顯示的格式的相同或類似內(nèi)容。通過(guò)在整個(gè)目標(biāo)文件82已被生成之前開(kāi)始有關(guān)目標(biāo)文件82向請(qǐng)求客戶端70的發(fā)送或遞送,系統(tǒng)10可以降低與處理用于遞送給不同客戶端70的內(nèi)容相關(guān)聯(lián)的等待時(shí)間。此外,在具體實(shí)施例中,內(nèi)容遞送系統(tǒng)10可以支持這樣的遞送技術(shù),其中客戶端 70利用描述被存儲(chǔ)在有關(guān)目標(biāo)文件82中的內(nèi)容的某些信息(在此一般稱為“媒體信息 90”)來(lái)配置它們自身以用于被請(qǐng)求媒體內(nèi)容的接收和回放。例如,在具體實(shí)施例中,內(nèi)容遞送系統(tǒng)10可以支持內(nèi)容的漸進(jìn)下載并且客戶端70可被配置為使用由內(nèi)容遞送系統(tǒng)10 提供的媒體信息90來(lái)配置它們自身以用于內(nèi)容的接收并且被配置為從其識(shí)別所請(qǐng)求的轉(zhuǎn)換后的媒體的適當(dāng)部分。然而,媒體信息90可以描述關(guān)聯(lián)的目標(biāo)文件82的特性,這些特性在那個(gè)目標(biāo)文件82被完整創(chuàng)建之前可能不能被確定。因此,如以下進(jìn)一步所述,內(nèi)容遞送系統(tǒng)10可以通過(guò)在目標(biāo)文件82被完整創(chuàng)建之前估計(jì)它的某些特征并且基于所估計(jì)的特征生成針對(duì)目標(biāo)文件82的媒體信息90,可以減少內(nèi)容向這樣的客戶端70的遞送中的等待時(shí)間。為了本描述以及以下權(quán)利要求的目的,“估計(jì)”包括但不限于對(duì)特征、特性或其它值的任意預(yù)測(cè)或逼近?!肮烙?jì)”也可以包括任何計(jì)算、選擇或確定在相關(guān)值被以其他方式設(shè)置之前被啟用的值的其它方式,即便相關(guān)值隨后有必要基于估計(jì)運(yùn)算的結(jié)果被設(shè)置也是如此。例如,這里使用的“估計(jì)”可以指用于計(jì)算將被寫(xiě)入媒體文件中的內(nèi)容的幀大小的處理, 即便該內(nèi)容隨后被寫(xiě)入基于該估計(jì)被確定大小的幀中。因此,在具體實(shí)施例中,估計(jì)可以預(yù)先確定值,而不是僅僅逼近或預(yù)測(cè)該值。在圖1中所示的示例實(shí)施例中,原始內(nèi)容儲(chǔ)存器20和修改內(nèi)容儲(chǔ)存器22每一個(gè)表示或包括任意合適類型的存儲(chǔ)設(shè)備。內(nèi)容儲(chǔ)存器20和22可以每一個(gè)包括例如適于存儲(chǔ)數(shù)據(jù)的易失性或非易失性、本地或遠(yuǎn)程設(shè)備,諸如隨機(jī)存取儲(chǔ)存器(RAM)設(shè)備,只讀儲(chǔ)存器 (ROM)設(shè)備、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備或任意其它合適的數(shù)據(jù)存儲(chǔ)設(shè)備。另外,盡管內(nèi)容儲(chǔ)存器20和22 二者都被示出為系統(tǒng)10中的單個(gè)元件,但是內(nèi)容儲(chǔ)存器20和22可以每一個(gè)表示多個(gè)設(shè)備并且可以分布在系統(tǒng)10的多個(gè)位置上。例如,在具體實(shí)施例中,內(nèi)容儲(chǔ)存器20 和22可以表示網(wǎng)絡(luò)附接存儲(chǔ)裝置(NAQ或其部分。原始內(nèi)容儲(chǔ)存器20存儲(chǔ)用于遞送給客戶端70的源文件80。如上面注意到的,源文件80可以包括任意合適類型的媒體內(nèi)容。源文件80的具體示例包括視頻/多媒體內(nèi)容文件,諸如運(yùn)動(dòng)圖片專家組(MPEG)、Windows媒體視頻(WMV)、音頻視頻交織(AVI)和 QuickTime文件;音頻內(nèi)容文件,諸如波形音頻(WAV)、MPEG_1音頻層3 (MP!3)和/或Windows 媒體音頻(WMA)文件;和/或任意合適類型或格式的內(nèi)容文件。原始內(nèi)容儲(chǔ)存器20中的源文件80可以全都以單一的存儲(chǔ)格式被存儲(chǔ)或者可以以適合于向不同客戶端70的發(fā)送或由不同客戶端70進(jìn)行的顯示的各種不同的格式被存儲(chǔ)。盡管在圖1中被示作系統(tǒng)10的部分,但是原始內(nèi)容儲(chǔ)存器20可以表示系統(tǒng)10外部的組件,諸如遍布因特網(wǎng)的存儲(chǔ)組件。因此,在具體實(shí)施例中,代碼轉(zhuǎn)換器30可以能夠取回、接收、以其他方式存取和/或處理由在因特網(wǎng)中可獲得的許多內(nèi)容源提供的源文件80,以用于遞送給客戶端70。修改內(nèi)容儲(chǔ)存器22存儲(chǔ)目標(biāo)文件82,目標(biāo)文件82表示來(lái)自已經(jīng)被代碼轉(zhuǎn)換器30 生成、代碼轉(zhuǎn)換或以其他方式修改的源文件80的內(nèi)容。在具體實(shí)施例中,修改內(nèi)容儲(chǔ)存器 22表示代碼轉(zhuǎn)換器30本地的或外部的存儲(chǔ)裝置,諸如用作代碼轉(zhuǎn)換器30之一的web服務(wù)器的內(nèi)部存儲(chǔ)器。在某些實(shí)施例中,代碼轉(zhuǎn)換器30可以將包含來(lái)自特定源文件80的修改內(nèi)容的目標(biāo)文件82存儲(chǔ)在修改內(nèi)容儲(chǔ)存器22中,同時(shí)代碼轉(zhuǎn)換器30繼續(xù)修改內(nèi)容來(lái)創(chuàng)建有關(guān)的目標(biāo)文件82。目標(biāo)文件82可以包括任意合適類型或格式的媒體內(nèi)容,包括但不限于以上針對(duì)源文件80列出的那些。另外,盡管在這里被稱為“文件”,但是在某些實(shí)施例中,存儲(chǔ)在修改內(nèi)容儲(chǔ)存器22中的目標(biāo)文件82可以表示在給定時(shí)間點(diǎn)的、根據(jù)與有關(guān)目標(biāo)文件 82關(guān)聯(lián)的類型或格式并不完整的部分文件或其包含的內(nèi)容。修改內(nèi)容儲(chǔ)存器22也可以將對(duì)源文件進(jìn)行代碼轉(zhuǎn)換的處理30期間由代碼轉(zhuǎn)換器30生成的媒體信息90作為所創(chuàng)建的目標(biāo)文件82的部分和/或作為單獨(dú)的數(shù)據(jù)元素進(jìn)行存儲(chǔ)。如以下進(jìn)一步描述的,媒體信息 90可被客戶端70用來(lái)輔助目標(biāo)文件82的下載。代碼轉(zhuǎn)換器30從原始內(nèi)容儲(chǔ)存器20取回、接收或以其他方式存取所請(qǐng)求的內(nèi)容并且以適合于向請(qǐng)求客戶端70發(fā)送和由請(qǐng)求客戶端70進(jìn)行的顯示的方式來(lái)修改所請(qǐng)求的內(nèi)容。代碼轉(zhuǎn)換器30隨后將修改后的內(nèi)容寫(xiě)入目標(biāo)文件82。根據(jù)請(qǐng)求客戶端70的能力以及所請(qǐng)求的源文件80的特征,代碼轉(zhuǎn)換器30可以以適于使得內(nèi)容適合于向請(qǐng)求客戶端70 的發(fā)送和/或由請(qǐng)求客戶端70進(jìn)行的回放的任意方式,對(duì)所請(qǐng)求的源文件80的內(nèi)容或特征進(jìn)行代碼轉(zhuǎn)換、速率轉(zhuǎn)換、分辨率調(diào)節(jié)或其它方式的修改。作為修改內(nèi)容的一部分,代碼轉(zhuǎn)換器30可以將所請(qǐng)求的源文件80的內(nèi)容從第一格式修改為第二格式,其中第一格式諸如是存儲(chǔ)有關(guān)源文件80所使用的原始格式,第二格式諸如是適合于向請(qǐng)求客戶端70的發(fā)送和由請(qǐng)求客戶端70進(jìn)行的顯示的目標(biāo)格式。為了本描述和以下權(quán)利要求的目的,內(nèi)容的 “格式”是指有關(guān)內(nèi)容的與向特定類型的客戶端70發(fā)送該內(nèi)容或由客戶端70顯示該內(nèi)容相關(guān)聯(lián)的編碼、比特率、分辨率、幀率、配置和/或任意其它方面、特征或特性。另外,如以下進(jìn)一步描述的,代碼轉(zhuǎn)換器30也可以生成媒體信息90,媒體信息90 允許客戶端70,在代碼轉(zhuǎn)換器30已經(jīng)完成了有關(guān)目標(biāo)文件82的創(chuàng)建和/或?qū)?yīng)源文件80 的代碼轉(zhuǎn)換之前,開(kāi)始下載和回放來(lái)自目標(biāo)文件82的內(nèi)容。如以下進(jìn)一步描述的,媒體信息90可以包括描述所請(qǐng)求的媒體內(nèi)容或所請(qǐng)求的媒體內(nèi)容被寫(xiě)入其中的目標(biāo)文件82的任意合適形式的數(shù)據(jù)、代碼或信息。以下將關(guān)于圖3來(lái)更詳細(xì)地描述代碼轉(zhuǎn)換器30的具體示例實(shí)施例的內(nèi)容。內(nèi)容服務(wù)器50從客戶端70接收對(duì)來(lái)自源文件80的內(nèi)容進(jìn)行取回、下載、成流(stream)或以其他方式將其發(fā)送給客戶端70的請(qǐng)求,并且響應(yīng)于這些請(qǐng)求,將所請(qǐng)求的內(nèi)容遞送給客戶端70。在具體實(shí)施例中,內(nèi)容服務(wù)器50將負(fù)責(zé)確定包括所請(qǐng)求的媒體內(nèi)容的源文件80將是否需要被進(jìn)行代碼轉(zhuǎn)換、速率轉(zhuǎn)換或以其它方式被修改,以用于向請(qǐng)求客戶端60的發(fā)送和/或由請(qǐng)求客戶端60進(jìn)行的顯示。如果這樣,內(nèi)容服務(wù)器50可以將接收到的請(qǐng)求轉(zhuǎn)發(fā)給主機(jī)處理器40或直接轉(zhuǎn)發(fā)給代碼轉(zhuǎn)換器30來(lái)開(kāi)始對(duì)所請(qǐng)求的源文件80 的轉(zhuǎn)換。內(nèi)容服務(wù)器50也可以對(duì)用戶進(jìn)行認(rèn)證、執(zhí)行內(nèi)容搜索請(qǐng)求或以其它方式來(lái)輔助用戶之間的交互以及由系統(tǒng)10提供的內(nèi)容提供服務(wù)。主機(jī)處理器40從內(nèi)容服務(wù)器50接收針對(duì)媒體內(nèi)容的請(qǐng)求并且管理代碼轉(zhuǎn)換器30 在準(zhǔn)備用于遞送給客戶端70的被請(qǐng)求內(nèi)容中的操作。在具體實(shí)施例中,主機(jī)處理器40負(fù)責(zé)生成工作流并將其傳送給代碼轉(zhuǎn)換器30,該工作流識(shí)別被客戶端70請(qǐng)求的特定源文件 80和用于該源文件的合適的目標(biāo)格式。另外,在具體實(shí)施例中,內(nèi)容遞送系統(tǒng)10可以包括能夠并行地應(yīng)對(duì)來(lái)自若干不同客戶端70的內(nèi)容請(qǐng)求的多個(gè)代碼轉(zhuǎn)換器30。在這樣的實(shí)施例中,主機(jī)處理器40也可以負(fù)責(zé)選擇合適的代碼轉(zhuǎn)換器30來(lái)應(yīng)對(duì)每個(gè)請(qǐng)求并且可以執(zhí)行不同代碼轉(zhuǎn)換器30之間的負(fù)載平衡或其他方式的代碼轉(zhuǎn)換任務(wù)分發(fā)。盡管代碼轉(zhuǎn)換器30、主機(jī)處理器40和內(nèi)容服務(wù)器50在圖1中被各自示作單個(gè)組件,但是在具體實(shí)施例中,每一個(gè)可以表示由若干分離的物理組件所提供的功能性。另外, 代碼轉(zhuǎn)換器30、主機(jī)處理器40和內(nèi)容服務(wù)器50中的任意兩個(gè)或更多個(gè)可以部分或全部地表示同一組件。例如,在具體實(shí)施例中,主機(jī)處理器40可以與代碼轉(zhuǎn)換器30—樣是相同物理組件的一部分。一般,代碼轉(zhuǎn)換器30、主機(jī)處理器40和內(nèi)容服務(wù)器50可以各自表示適于提供所描述的功能性的軟件和/或硬件的任意合適的組合。在具體實(shí)施例中,代碼轉(zhuǎn)換器30、主機(jī)處理器40和內(nèi)容服務(wù)器50表示被配置為接收來(lái)自客戶端70的超文本傳輸協(xié)議 (HTTP)請(qǐng)求并對(duì)其響應(yīng)并相互響應(yīng)的web服務(wù)器。網(wǎng)絡(luò)60表示支持有線和/或無(wú)線通信鏈路上的電路交換的、基于分組的和/或任意合適類型的通信的任意形式的通信網(wǎng)絡(luò)。盡管在圖1中被示作單個(gè)元件,但是通信網(wǎng)絡(luò)可以表示一個(gè)或多個(gè)分離的網(wǎng)絡(luò),包括分離的并且服務(wù)不同群組的客戶端70的各種不同網(wǎng)絡(luò)的全部或部分。網(wǎng)絡(luò)60可以包括任意合適形式的或布置的路由器、集線器、開(kāi)關(guān)、網(wǎng)關(guān)、呼叫控制器和/或任意其它合適的組件。一般,網(wǎng)絡(luò)60可以包括公用或?qū)S猛ㄐ旁O(shè)備的任意組合,這些設(shè)備諸如是公用交換電話網(wǎng)絡(luò)(PSTN)、諸如因特網(wǎng)之類的全球計(jì)算機(jī)網(wǎng)絡(luò)、局域網(wǎng)、廣域網(wǎng)的元件或其它合適的通信設(shè)備。另外,盡管圖1圖示出元素被直接地連接到網(wǎng)絡(luò)60的具體配置,但是在具體實(shí)施例中,網(wǎng)絡(luò)60可以直接地或間接地連接到系統(tǒng)10的任意合適的元件和/或與之交互。例如,盡管圖1示出代碼轉(zhuǎn)換器30被直接連接到原始內(nèi)容儲(chǔ)存器20和內(nèi)容服務(wù)器50,但是可替換地,代碼轉(zhuǎn)換器30可以通過(guò)網(wǎng)絡(luò)60連接到這些元件的任一者。因此,系統(tǒng)10的組件可以以任意合適的方式布置或配置來(lái)通過(guò)網(wǎng)絡(luò)60和/或通過(guò)有關(guān)元件之間的直接連接進(jìn)行通信??蛻舳?0向用戶顯示、傳送或以其它方式回放從內(nèi)容儲(chǔ)存器20取回的內(nèi)容。客戶端70可以表示適合于播放系統(tǒng)10中所利用的數(shù)字媒體內(nèi)容的任意類型的設(shè)備。客戶端 70的示例可以包括但不限于計(jì)算機(jī)、支持視頻的電話、媒體播放器(諸如,例如iPod)、電視、PDA、手機(jī)、便攜式通信設(shè)備和其它電子設(shè)備。更一般地,客戶端70可以包括適于提供所述功能性的硬件和/或軟件的任意合適的組合。客戶端70可以通過(guò)專用連接(有線的或無(wú)線的)耦合到網(wǎng)絡(luò)60,或者可以僅在需要時(shí)連接到網(wǎng)絡(luò)60來(lái)訪問(wèn)媒體內(nèi)容。盡管圖1為了示例的目的圖示出具體數(shù)目和類型的客戶端70,但是系統(tǒng)10的可替換實(shí)施例可以包括任意合適數(shù)目和類型的客戶端70。在具體實(shí)施例中,客戶端70可以能夠接收和/或播放與各種文件格式、文件類型、 編解碼、比特率和/或分辨率相關(guān)聯(lián)的和/或具有其它合適特征的媒體。例如,在所圖示的實(shí)施例中,客戶端70a可以包括計(jì)算機(jī),其能夠播放與用客戶端70b表示的支持視頻的手機(jī)或用客戶端70c表示的便攜式通信設(shè)備不同的媒體文件格式。因此,如以下進(jìn)一步所述,系統(tǒng)10可以修改被請(qǐng)求的內(nèi)容來(lái)匹配具體請(qǐng)求客戶端70的能力。在操作中,內(nèi)容服務(wù)器50接收來(lái)自客戶端70的請(qǐng)求并且開(kāi)始取回包含客戶端70 所請(qǐng)求的媒體內(nèi)容的源文件80。代碼轉(zhuǎn)換器30隨后可以對(duì)取回的源文件80進(jìn)行代碼轉(zhuǎn)換或其它方式的修改,來(lái)提供適于向請(qǐng)求客戶端70的發(fā)送和/或由請(qǐng)求客戶端70進(jìn)行的顯示的內(nèi)容。代碼轉(zhuǎn)換器30將修改后的內(nèi)容寫(xiě)入對(duì)應(yīng)的目標(biāo)文件82,以用于發(fā)送給請(qǐng)求客戶端70。另外,在請(qǐng)求客戶端70可以開(kāi)始播放有關(guān)目標(biāo)文件82之前,針對(duì)一些媒體內(nèi)容格式,請(qǐng)求客戶端70可能需要有關(guān)目標(biāo)文件82中的媒體內(nèi)容的某些信息。因此,代碼轉(zhuǎn)換器 30也可以生成描述對(duì)應(yīng)目標(biāo)文件82中的媒體的某些媒體信息90。為了最小化用戶在客戶端70可以開(kāi)始回放來(lái)自目標(biāo)文件82的內(nèi)容之前的用戶必須等候的時(shí)間量,在有關(guān)目標(biāo)文件82的創(chuàng)建已被完成之前,代碼轉(zhuǎn)換器30可以生成媒體信息90并將媒體信息90發(fā)送給請(qǐng)求客戶端70。請(qǐng)求客戶端70隨后可以開(kāi)始回放修改后的內(nèi)容的一部分,同時(shí)代碼轉(zhuǎn)換器 30繼續(xù)將修改后的內(nèi)容寫(xiě)入目標(biāo)文件82。圖1中圖示出了該處理的一個(gè)示例。如圖1中所示,客戶端70 (這里,客戶端70a) 通過(guò)向內(nèi)容服務(wù)器50發(fā)送內(nèi)容請(qǐng)求84開(kāi)始遞送處理。內(nèi)容請(qǐng)求84可以識(shí)別具體的源文件80或可以描述所請(qǐng)求的媒體內(nèi)容的特征(例如使用關(guān)鍵字)。內(nèi)容請(qǐng)求84可以表示由發(fā)送客戶端70請(qǐng)求內(nèi)容的遞送的任意合適的消息、分組或其它信息集合。例如,在具體實(shí)施例中,內(nèi)容請(qǐng)求84表示識(shí)別由原始內(nèi)容儲(chǔ)存器20存儲(chǔ)的特定源文件80的超文本傳輸協(xié)議(HTTP)請(qǐng)求。響應(yīng)于接收到內(nèi)容請(qǐng)求84,內(nèi)容服務(wù)器50確定用于所請(qǐng)求的內(nèi)容的適當(dāng)格式(這里稱為“目標(biāo)格式”),以允許、輔助或優(yōu)化向客戶端70a的發(fā)送和由客戶端70a進(jìn)行的回放。 內(nèi)容服務(wù)器50可以基于任意合適的信息、考慮或情況來(lái)確定目標(biāo)格式。作為一個(gè)示例,內(nèi)容請(qǐng)求84可以指示用于所請(qǐng)求的內(nèi)容的適當(dāng)格式。因此,在具體實(shí)施例中,內(nèi)容服務(wù)器50 可以接收HTTP請(qǐng)求,該HTTP請(qǐng)求指定用于所請(qǐng)求的內(nèi)容的編解碼、比特率和/或其它參數(shù)。因此,內(nèi)容服務(wù)器50可以能夠基于HTTP請(qǐng)求中所包含的信息來(lái)確定適合于所請(qǐng)求的內(nèi)容的輸出格式和特征。作為另一示例,內(nèi)容服務(wù)器50可以識(shí)別客戶端70a和/或客戶端70a的有關(guān)特征并且基于此信息來(lái)確定用于所請(qǐng)求的內(nèi)容的目標(biāo)格式。例如,內(nèi)容服務(wù)器50可以識(shí)別客戶端是否是計(jì)算機(jī)(諸如客戶端70a)、蜂窩電話(諸如客戶端70b)或個(gè)人數(shù)字助理(諸如客戶端70c)和/或其它類型的客戶端設(shè)備。作為響應(yīng),內(nèi)容服務(wù)器50可以基于其類型來(lái)確定適合于特定客戶端70a到70c的格式特征。作為又一示例,內(nèi)容服務(wù)器50可以檢測(cè)客戶端70a正經(jīng)其進(jìn)行通信的特定網(wǎng)絡(luò)或網(wǎng)絡(luò)60的部分的特征,來(lái)確定用來(lái)向客戶端70a提供所請(qǐng)求的內(nèi)容的適當(dāng)目標(biāo)格式。因此, 在具體實(shí)施例中,內(nèi)容服務(wù)器50可以基于內(nèi)容請(qǐng)求84時(shí)在某種類型的網(wǎng)絡(luò)上被接收的事實(shí),來(lái)確定用來(lái)將所請(qǐng)求的內(nèi)容發(fā)送給客戶端70a的適當(dāng)編解碼或比特率。然而,一般,內(nèi)容服務(wù)器50可以以任意適合的方式并且基于來(lái)自任意合適組件的輸入來(lái)確定用于由客戶端70a請(qǐng)求的內(nèi)容的適當(dāng)格式和特征。內(nèi)容服務(wù)器50隨后將內(nèi)容請(qǐng)求84轉(zhuǎn)發(fā)給代碼轉(zhuǎn)換器30??商鎿Q地,系統(tǒng)10的具體實(shí)施例包括負(fù)責(zé)管理一個(gè)或多個(gè)代碼轉(zhuǎn)換器30的操作的主機(jī)處理器40,并且內(nèi)容服務(wù)器50可以向主機(jī)處理器40發(fā)送內(nèi)容請(qǐng)求。主機(jī)處理器40生成指示將由代碼轉(zhuǎn)換器30 完成的修改的工作流86并且將工作流86發(fā)送給代碼轉(zhuǎn)換器30。另外,在具體實(shí)施例中, 系統(tǒng)10可以包括多個(gè)代碼轉(zhuǎn)換器30并且主機(jī)處理器40可以負(fù)責(zé)負(fù)載平衡和向代碼轉(zhuǎn)換器30指派代碼轉(zhuǎn)換責(zé)任。響應(yīng)于接收到來(lái)自內(nèi)容服務(wù)器50的內(nèi)容請(qǐng)求84或來(lái)自主機(jī)處理器40的工作流86,代碼轉(zhuǎn)換器30取回所請(qǐng)求的源文件80,在此情況中為源文件80a。代碼轉(zhuǎn)換器30隨后開(kāi)始創(chuàng)建適合于向客戶端70a發(fā)送和由客戶端70a進(jìn)行的回放的目標(biāo)文件82 (在圖1中被示作目標(biāo)文件82a)。作為該處理的一部分,代碼轉(zhuǎn)換器30生成用于目標(biāo)文件8 的媒體信息90。如以上注意到的,媒體信息90描述用特定媒體文件存儲(chǔ)的媒體內(nèi)容并且客戶端70可以使用與接收的媒體文件相關(guān)聯(lián)的媒體信息90來(lái)針對(duì)相關(guān)聯(lián)的媒體文件配置自身,請(qǐng)求相關(guān)聯(lián)的媒體文件的內(nèi)容和/或以其他方式輔助所請(qǐng)求的媒體內(nèi)容的接收和回放。媒體信息90的示例可以包括特定媒體文件的文件大小、幀率或持續(xù)時(shí)間和/或媒體文件中的媒體內(nèi)容的各個(gè)部分的幀大小、媒體類型或時(shí)間戳。如以上注意到的,系統(tǒng)10可以存儲(chǔ)和遞送具有各種不同格式和文件結(jié)構(gòu)的源文件80。例如,圖2A圖示出特定文件類型(在此一般稱為“類型A”),其中媒體信息90和內(nèi)容一起散布在圖示出的文件中。圖2B圖示出另一文件類型(在此一般稱為“類型B”),其中媒體信息90和內(nèi)容在圖示的文件中被分段。當(dāng)對(duì)某種類型的源文件80進(jìn)行代碼轉(zhuǎn)換時(shí),代碼轉(zhuǎn)換器30可以能夠直接從這些源文件80提取媒體信息90并且基于所提取的媒體信息90來(lái)生成用于對(duì)應(yīng)的目標(biāo)文件82 的媒體信息。代碼轉(zhuǎn)換器30可以在將任何修改的內(nèi)容寫(xiě)入相應(yīng)目標(biāo)文件82之前,將用于這些目標(biāo)文件82的媒體信息90寫(xiě)入這些目標(biāo)文件82中。隨后,當(dāng)代碼轉(zhuǎn)換器30開(kāi)始對(duì)源文件80進(jìn)行代碼轉(zhuǎn)換時(shí),內(nèi)容服務(wù)器50可以將用于這樣的目標(biāo)文件82的媒體信息90 發(fā)送給請(qǐng)求客戶端70。類型B源文件80例如讓全部媒體信息90位于文件的開(kāi)頭。因此, 代碼轉(zhuǎn)換器30可以能夠在代碼轉(zhuǎn)換處理的開(kāi)始時(shí)訪問(wèn)類型B源文件80中的全部媒體信息 90。因此,當(dāng)對(duì)類型B源文件80進(jìn)行代碼轉(zhuǎn)換時(shí),只要代碼轉(zhuǎn)換器30開(kāi)始代碼轉(zhuǎn)換并且使得這樣的媒體信息90可被請(qǐng)求客戶端70獲得,代碼轉(zhuǎn)換器30就可以從有關(guān)源文件80的開(kāi)頭提取媒體信息90。請(qǐng)求客戶端70隨后可以使用媒體信息90來(lái)讓請(qǐng)求客戶端70處的媒體播放器準(zhǔn)備好用于回放并且開(kāi)始從正被代碼轉(zhuǎn)換器30進(jìn)行代碼轉(zhuǎn)換的目標(biāo)文件8 請(qǐng)求內(nèi)容塊??商鎿Q地,當(dāng)對(duì)其它類型的源文件80進(jìn)行代碼轉(zhuǎn)換時(shí),代碼轉(zhuǎn)換器30可能不能夠在代碼轉(zhuǎn)換的開(kāi)頭訪問(wèn)所請(qǐng)求的源文件80的所有媒體信息90。類型A源文件80例如讓媒體信息90和內(nèi)容散布在文件中。因此,當(dāng)代碼轉(zhuǎn)換器30最初開(kāi)始對(duì)有關(guān)源文件80進(jìn)行代碼轉(zhuǎn)換時(shí)不能從類型A源文件80提取媒體信息90并且因而不能訪問(wèn)被代碼轉(zhuǎn)換器30以其他方式使用來(lái)生成用于對(duì)應(yīng)目標(biāo)文件82的媒體信息的那些數(shù)據(jù)。然而,在請(qǐng)求客戶端70 可以開(kāi)始下載有關(guān)目標(biāo)文件82和/或播放來(lái)自有關(guān)目標(biāo)文件82的內(nèi)容之前,請(qǐng)求客戶端 70可能期望和/或需要媒體信息90。因此,對(duì)于某些類型的源文件80,代碼轉(zhuǎn)換器30可以估計(jì)被請(qǐng)求的源文件80的某些特性來(lái)生成用于對(duì)應(yīng)目標(biāo)文件82的媒體信息90,媒體信息 90將允許請(qǐng)求客戶端70開(kāi)始接收和播放來(lái)自有關(guān)目標(biāo)文件82的內(nèi)容。在圖1所示的示例中,假定源文件80a是類型A媒體文件。因此,當(dāng)代碼轉(zhuǎn)換器30 開(kāi)始對(duì)源文件80a進(jìn)行代碼轉(zhuǎn)換時(shí),代碼轉(zhuǎn)換器30不能訪問(wèn)源文件80a中的所有媒體信息 90。因此,代碼轉(zhuǎn)換器30可以使用工作流86中所提供的數(shù)據(jù)、在源文件80a的開(kāi)頭處可獲得的信息、由代碼轉(zhuǎn)換器30估計(jì)出的參數(shù)和/或可用于代碼轉(zhuǎn)換器30的任何其它合適的信息,來(lái)生成用于目標(biāo)文件82a的媒體信息90。例如,在具體實(shí)施例中,為目標(biāo)文件8 創(chuàng)建的媒體信息90的一部分依賴于用于所請(qǐng)求的內(nèi)容的目標(biāo)格式和速率。因此,代碼轉(zhuǎn)換器30可以將此數(shù)據(jù)從內(nèi)容請(qǐng)求84或工作流86復(fù)制到用于目標(biāo)文件82a的媒體信息90。在具體實(shí)施例中,代碼轉(zhuǎn)換器30可以將諸如文件所利用的幀率、持續(xù)時(shí)間以及音頻和視頻編解碼的類型直接從內(nèi)容請(qǐng)求84或工作流86復(fù)制到用于目標(biāo)文件82a的媒體信息90。另外,代碼轉(zhuǎn)換器30可以使用工作流86 或內(nèi)容請(qǐng)求84中的信息來(lái)確定用于目標(biāo)文件82a的媒體信息90的其它字段。例如,代碼轉(zhuǎn)換器30可以通過(guò)將工作流86中可用獲得的幀率和持續(xù)時(shí)間相乘來(lái)計(jì)算源文件80a中的總幀數(shù)并且隨后將該總幀數(shù)寫(xiě)入目標(biāo)文件82a中的媒體信息90。另外,代碼轉(zhuǎn)換器30可以估計(jì)在代碼轉(zhuǎn)換開(kāi)始時(shí)不可獲得的參數(shù)。例如,在具體實(shí)施例中,代碼轉(zhuǎn)換器30利用先驗(yàn)估計(jì)技術(shù)來(lái)(1)基于有關(guān)編碼格式和編碼參數(shù),諸如所請(qǐng)求的源文件80和/或?qū)⒂纱a轉(zhuǎn)換器30生成的目標(biāo)文件82中的比特率、幀率、采樣率、 I-幀間隔和總媒體幀數(shù),來(lái)估計(jì)媒體信息90中的字段,諸如音頻和視頻幀的時(shí)間戳以及這樣的幀的大小;( 估計(jì)目標(biāo)文件82a中的音頻和視頻幀的交織格式。在具體實(shí)施例中,代碼轉(zhuǎn)換器30可以通過(guò)相對(duì)于編碼器參數(shù)設(shè)置特征對(duì)每幀的比特進(jìn)行建模來(lái)開(kāi)始該處理。對(duì)于給定的視頻或音頻編碼以及其對(duì)應(yīng)的編碼參數(shù)設(shè)置,代碼轉(zhuǎn)換器30的輸出可被表征為針對(duì)給定編碼器參數(shù)設(shè)置確定每幀的比特的最小值、最大值和平均水平?;诖吮碚?,代碼轉(zhuǎn)換器30可以將依據(jù)每幀的比特的幀大小建模為編碼比特率、幀率/采樣率、幀的時(shí)間位置、分辨率、編碼格式和/或任意其它合適的特征或因素的函數(shù)。目標(biāo)文件82的幀大小隨后可以基于該模型來(lái)估計(jì)。對(duì)于視頻媒體,代碼轉(zhuǎn)換器30 可以基于編碼器參數(shù)設(shè)置來(lái)確定比特流中I幀出現(xiàn)的頻率并且可以基于此頻率來(lái)估計(jì)I幀的幀大小。此外,代碼轉(zhuǎn)換器30可以使用以下公式基于幀率來(lái)計(jì)算兩個(gè)連續(xù)幀之間的時(shí)間差之差(兩個(gè)連續(xù)幀之間的時(shí)間差之差)=1/(幀率)。使用該公式,代碼轉(zhuǎn)換器30隨后可以如下為每幀確定時(shí)間戳當(dāng)前幀的時(shí)間戳=緊前幀的時(shí)間戳+連續(xù)幀之間的時(shí)間戳之差。代碼轉(zhuǎn)換器30也可以為目標(biāo)文件82中不同類型的媒體數(shù)據(jù)確定交織次序。例如,針對(duì)給定數(shù)量的音頻內(nèi)容,代碼轉(zhuǎn)換器30可以確定預(yù)定數(shù)量的視頻內(nèi)容將被寫(xiě)入目標(biāo)文件82。代碼轉(zhuǎn)換器30可以基于目標(biāo)格式和/或其它合適的考慮來(lái)確定該次序。如以下進(jìn)一步討論的,代碼轉(zhuǎn)換器30可以之后在將內(nèi)容寫(xiě)入目標(biāo)文件82時(shí)使用該交織次序。
基于每幀的時(shí)間戳、幀大小、對(duì)媒體中的音頻和視頻幀的交織格式的估計(jì),代碼轉(zhuǎn)換器30隨后可以確定每個(gè)單獨(dú)的音頻和視頻幀在在將由代碼轉(zhuǎn)換器30生成的目標(biāo)文件82 中的估計(jì)位置。代碼轉(zhuǎn)換器可以生成媒體信息90,其包含每個(gè)媒體幀在目標(biāo)文件82中的估計(jì)位置以及客戶端70a需要或期望的其它合適的數(shù)據(jù)。代碼轉(zhuǎn)換器30隨后可以將媒體信息90發(fā)送給內(nèi)容服務(wù)器50以用于隨后發(fā)送給客戶端70a。作為一個(gè)示例,代碼轉(zhuǎn)換器30可被配置為將修改后的視頻和音頻內(nèi)容以包含固定時(shí)間量的相應(yīng)類型的內(nèi)容的交替塊寫(xiě)入目標(biāo)文件82。因此,代碼轉(zhuǎn)換器30可以確定與所要寫(xiě)入的每個(gè)視頻或音頻數(shù)據(jù)塊相關(guān)聯(lián)的時(shí)間量X。盡管該數(shù)量可以基于任意合適的考慮來(lái)確定,但是在具體實(shí)施例中,代碼轉(zhuǎn)換器30可以被配置為將音頻和視頻數(shù)據(jù)以包含預(yù)定數(shù)量的內(nèi)容(例如100ms)的塊寫(xiě)入所有目標(biāo)文件82,而不論所涉及的格式如何?;谂c每個(gè)塊相關(guān)聯(lián)的時(shí)間量和任意其它合適的因素,代碼轉(zhuǎn)換器30隨后可以確定要分別寫(xiě)入有關(guān)目標(biāo)文件82中的每個(gè)視頻和音頻內(nèi)容塊的視頻幀數(shù)和音頻幀數(shù)。例如,在具體實(shí)施例中,代碼轉(zhuǎn)換器30基于與目標(biāo)格式相關(guān)聯(lián)的視頻幀率(Rl),根據(jù)等式m =XxRl來(lái)確定要寫(xiě)入每個(gè)視頻內(nèi)容塊的視頻幀數(shù)(m),并且基于與目標(biāo)格式相關(guān)聯(lián)的每幀樣本值(S)和由代碼轉(zhuǎn)換器30或客戶端70a(例如基于期望的音頻質(zhì)量)設(shè)置的采樣率(R2),根據(jù)等式 N2 = X x(R2/S)來(lái)確定要寫(xiě)入每個(gè)音頻內(nèi)容塊的音頻幀數(shù)(擬)。代碼轉(zhuǎn)換器30隨后可以使用每個(gè)視頻數(shù)據(jù)塊中的適配幀數(shù)W和每個(gè)音頻數(shù)據(jù)塊中的音頻幀數(shù)N2來(lái)估計(jì)將針對(duì)當(dāng)前請(qǐng)求寫(xiě)入的目標(biāo)文件82的各種特征,諸如每個(gè)音頻和視頻內(nèi)容塊的位置、每個(gè)塊的時(shí)間戳或?qū)懭脒@些塊中的幀的幀大小。這些特征可被包括在由代碼轉(zhuǎn)換器30生成的媒體信息 90中并且被發(fā)送給客戶端70a。另外,如以下進(jìn)一步所述,代碼轉(zhuǎn)換器30可以以某種方式按照或基于這些估計(jì)特征來(lái)將輸入寫(xiě)入有關(guān)目標(biāo)文件82。在具有較大的等待時(shí)間容限的具體實(shí)施例中,代碼轉(zhuǎn)換器30可以對(duì)將被寫(xiě)入目標(biāo)文件8 的音頻和/或視頻內(nèi)容的幾個(gè)幀進(jìn)行代碼轉(zhuǎn)換并且緩沖這些幀以用于生成媒體信息90之前的分析。代碼轉(zhuǎn)換器30隨后可以使用來(lái)自實(shí)際編碼媒體幀的數(shù)據(jù)來(lái)提煉基于上述技術(shù)估計(jì)的參數(shù)。因此,作為結(jié)果,代碼轉(zhuǎn)換器可以能夠?qū)崿F(xiàn)改進(jìn)的幀大小估計(jì)。代碼轉(zhuǎn)換器30隨后可以利用改進(jìn)的幀大小估計(jì)來(lái)針對(duì)還未被進(jìn)行代碼轉(zhuǎn)換的幀生成媒體信息 90。代碼轉(zhuǎn)換器30隨后可以將用于代碼轉(zhuǎn)換后的幀的數(shù)據(jù)連同用于還未被代碼轉(zhuǎn)換的幀的估計(jì)數(shù)據(jù)一起作為媒體信息90發(fā)送給客戶端70a。在估計(jì)由客戶端70a使用的媒體信息90之后,代碼轉(zhuǎn)換器30隨后可以開(kāi)始將來(lái)自源文件80a的內(nèi)容從源格式修改為目標(biāo)格式。如以上注意到的,代碼轉(zhuǎn)換器30可以以任何合適的方式來(lái)對(duì)所請(qǐng)求的源文件80的內(nèi)容或特征進(jìn)行代碼轉(zhuǎn)換、速率轉(zhuǎn)換、分辨率調(diào)節(jié)或其它方式的修改,來(lái)使得內(nèi)容適合于向請(qǐng)求客戶端70的發(fā)送和/或由請(qǐng)求客戶端70進(jìn)行的回放。代碼轉(zhuǎn)換器30隨后可以將修改后的來(lái)自源文件80a的內(nèi)容寫(xiě)入修改內(nèi)容儲(chǔ)存器22中的目標(biāo)文件82 (這里為目標(biāo)文件82a)。在具體實(shí)施例中,因?yàn)橛纱a轉(zhuǎn)換器30生成的媒體信息90將被客戶端70a用來(lái)請(qǐng)求來(lái)自目標(biāo)文件82a的內(nèi)容,所以代碼轉(zhuǎn)換器30可以使用媒體信息90來(lái)確定內(nèi)容應(yīng)當(dāng)如何寫(xiě)入目標(biāo)文件82a。作為一個(gè)示例,在具體實(shí)施例中,代碼轉(zhuǎn)換器30將視頻和音頻內(nèi)容以包括固定數(shù)量的視頻幀(Ni)和音頻幀(擬)的單獨(dú)的塊寫(xiě)入目標(biāo)文件82a。m和N2可以由代碼轉(zhuǎn)換器30在生成媒體信息90之前計(jì)算出,如上所述。在這樣的實(shí)施例中,代碼轉(zhuǎn)換器30可以基于m和N2為每個(gè)媒體內(nèi)容塊計(jì)算估計(jì)的塊位置和時(shí)間戳,并且可以將估計(jì)的塊位置和時(shí)間戳包括在被發(fā)送給客戶端70a的媒體信息90中。代碼轉(zhuǎn)換器30隨后可以根據(jù)傳送給客戶端70a的塊位置和時(shí)間戳來(lái)將視頻和音頻內(nèi)容寫(xiě)入目標(biāo)文件82a。作為另一示例,在具體實(shí)施例中,代碼轉(zhuǎn)換器30將代碼轉(zhuǎn)換后的視頻幀的幀大小與被發(fā)送給客戶端70a的媒體信息90中所包括的估計(jì)視頻幀大小相比較。如果代碼轉(zhuǎn)換器30確定當(dāng)前針對(duì)目標(biāo)文件8 生成的代碼轉(zhuǎn)換后的視頻幀比媒體信息90中所包括的視頻幀大小大,則代碼轉(zhuǎn)換器30可以丟棄所生成的視頻幀并且用合適形式的啞元幀(dummy frame)(例如將被客戶端70a讀作未編碼幀的全部為0的幀)替換目標(biāo)文件82a中的丟棄幀,或以其他方式修改將被寫(xiě)入目標(biāo)文件82a的該幀,來(lái)確保有關(guān)幀不會(huì)超過(guò)媒體信息90 中所識(shí)別的視頻幀大小。由于這樣的幀最有可能出現(xiàn)在目標(biāo)文件8 中不那么受缺失幀影響的時(shí)間位置,所以一起丟棄這些幀不會(huì)導(dǎo)致明顯劣化的視頻質(zhì)量。另一方面,如果所生成的視頻幀小于視頻幀大小,則代碼轉(zhuǎn)換器30可以用0填充該幀或以其他方式修改被寫(xiě)入目標(biāo)文件8 的幀,來(lái)確保有關(guān)幀不小于預(yù)期的視頻幀大小。類似地,代碼轉(zhuǎn)換器30可以使用媒體信息90中的交織信息來(lái)確定代碼轉(zhuǎn)換器30用來(lái)將音頻和視頻內(nèi)容寫(xiě)入目標(biāo)文件8 的適當(dāng)交織樣式。作為又一示例,在具體實(shí)施例中,代碼轉(zhuǎn)換器30可以生成用于目標(biāo)文件82a的音頻幀,每個(gè)音頻幀包括標(biāo)記音頻幀的結(jié)束的幀結(jié)束標(biāo)記(例如,在高級(jí)音頻編碼(AAC)的情況中為ID_END)。在這樣的實(shí)施例中,代碼轉(zhuǎn)換器30可以估計(jì)音頻幀的幀大小,作為生成媒體信息90的一部分。隨后,當(dāng)生成用于目標(biāo)文件82a的音頻幀時(shí),代碼轉(zhuǎn)換器30可以將所生成的每個(gè)音頻幀與估計(jì)的幀大小相比較。如果特定音頻幀小于估計(jì)的音頻幀大小,則代碼轉(zhuǎn)換器30可以在有關(guān)幀中的內(nèi)容數(shù)據(jù)的最后一個(gè)比特與幀結(jié)束標(biāo)記之間插入足夠數(shù)目的啞元比特(例如,在高級(jí)音頻編碼的情況中為filljlements)或0值比特,來(lái)確保那個(gè)音頻幀的大小與估計(jì)的音頻幀大小匹配。在客戶端70a接收到來(lái)自代碼轉(zhuǎn)換器30的媒體信息90之后,客戶端70a可以基于接收到的媒體信息90來(lái)請(qǐng)求來(lái)自目標(biāo)文件82a的內(nèi)容。例如,在具體實(shí)施例中,客戶端 70a可以基于接收到的媒體信息90,通過(guò)發(fā)送具有識(shí)別由客戶端70a確定的目標(biāo)文件8 的一部分(諸如音頻和視頻幀的特定集合)的范圍字段的HTTP “GET”請(qǐng)求,來(lái)開(kāi)始目標(biāo)文件82a的漸進(jìn)下載。內(nèi)容服務(wù)器50隨后可以將目標(biāo)文件82a的被請(qǐng)求的部分發(fā)送給客戶端70a,并且客戶端70a可以開(kāi)始目標(biāo)文件82a的回放。在具體實(shí)施例中,客戶端70a可以能夠在代碼轉(zhuǎn)換器30已經(jīng)完成將全部代碼轉(zhuǎn)換后的媒體寫(xiě)入目標(biāo)文件8 之前開(kāi)始回放來(lái)自目標(biāo)文件82a的內(nèi)容。代碼轉(zhuǎn)換器30可以繼續(xù)對(duì)來(lái)自源文件80a的內(nèi)容進(jìn)行代碼轉(zhuǎn)換并且將代碼轉(zhuǎn)換后的內(nèi)容寫(xiě)入目標(biāo)文件82a。另外,客戶端70a可以繼續(xù)請(qǐng)求來(lái)自目標(biāo)文件8 的內(nèi)容直到全部?jī)?nèi)容已經(jīng)被客戶端70a從目標(biāo)文件8 取回并播放為止。內(nèi)容服務(wù)器50隨后可以將文件結(jié)束指示發(fā)送給客戶端70a,并且客戶端70a可以結(jié)束所請(qǐng)求的內(nèi)容的回放。在某些情況下,客戶端70a可以在代碼轉(zhuǎn)換器30已經(jīng)將部分?jǐn)?shù)據(jù)寫(xiě)入目標(biāo)文件 8 之前,請(qǐng)求目標(biāo)文件82a中的那部分?jǐn)?shù)據(jù)。系統(tǒng)10的具體實(shí)施例可以通過(guò)利用數(shù)據(jù)流計(jì)量技術(shù)來(lái)解決這樣的情況。數(shù)據(jù)流計(jì)量技術(shù)控制客戶端70a從目標(biāo)文件8 接收數(shù)據(jù)的速率來(lái)維持流暢的回放。系統(tǒng)10可以以若干不同方式實(shí)現(xiàn)數(shù)據(jù)流計(jì)量。
例如,如果作為漸進(jìn)處理的一部分,內(nèi)容服務(wù)器50正將內(nèi)容發(fā)送給客戶端70a,代碼轉(zhuǎn)換器30可以在漸進(jìn)下載開(kāi)始之前以比特計(jì)算總文件大小( 或者基于諸如視頻比特率、音頻比特率、媒體信息大小和持續(xù)時(shí)間之類的目標(biāo)格式媒體參數(shù)來(lái)估計(jì)S。代碼轉(zhuǎn)換器 30可以通過(guò)將目標(biāo)文件82中的報(bào)頭中的媒體信息90的估計(jì)大小和所有媒體幀的媒體信息 90的估計(jì)大小相加來(lái)估計(jì)類型A文件的S。對(duì)于類型B文件,代碼轉(zhuǎn)換器30可以使用以下等式來(lái)計(jì)算S S = (V χ Τ) + (Α χ T) +M其中V是視頻比特率,A是音頻比特率,T是源文件80a的持續(xù)時(shí)間并且M是目標(biāo)文件82中的媒體信息90的和,包括與作為整體的文件相關(guān)聯(lián)的媒體信息的大小和與各個(gè)音頻或視頻內(nèi)容幀相關(guān)聯(lián)的媒體信息。代碼轉(zhuǎn)換器30將文大小S提供給內(nèi)容服務(wù)器50,使得內(nèi)容服務(wù)器50可以利用該信息來(lái)進(jìn)行數(shù)據(jù)流計(jì)量。使用總文件大小S和持續(xù)時(shí)間T,代碼轉(zhuǎn)換器30或內(nèi)容服務(wù)器50隨后可以根據(jù)等 SR = S^T來(lái)確定將允許流暢回放的最小數(shù)據(jù)率R。在具體實(shí)施例中,內(nèi)容服務(wù)器50隨后可以使用最小數(shù)據(jù)率R來(lái)確定用來(lái)向客戶端70a發(fā)送內(nèi)容的適當(dāng)速率。作為一個(gè)示例,代碼轉(zhuǎn)換器30可以計(jì)算速率(R+α)以用于將內(nèi)容發(fā)送給客戶端70a,其中α是為了補(bǔ)償來(lái)自客戶端70a的數(shù)據(jù)率抖動(dòng)而增加的安全裕度(safety margin)。在具體實(shí)施例中,內(nèi)容服務(wù)器50可以以α = 0. Ix R的初始設(shè)置來(lái)開(kāi)始從目標(biāo)文件82向客戶端70a的內(nèi)容發(fā)送,并且可以基于代碼轉(zhuǎn)換器30的代碼轉(zhuǎn)換速度和客戶端70a 請(qǐng)求數(shù)據(jù)的數(shù)據(jù)速度來(lái)在發(fā)送期間適應(yīng)性地調(diào)節(jié)α的值。客戶端70a隨后可以基于與客戶端70a相關(guān)聯(lián)的緩沖長(zhǎng)度和媒體回放速度,以某種間隔周期性地發(fā)送對(duì)來(lái)自目標(biāo)文件82 的數(shù)據(jù)塊的請(qǐng)求,并且內(nèi)容服務(wù)器50可以基于計(jì)算出的速率來(lái)確定用于向客戶端70a發(fā)送的適當(dāng)內(nèi)容數(shù)量。在這樣的實(shí)施例中,如果來(lái)自客戶端70a的兩個(gè)連續(xù)的請(qǐng)求在時(shí)刻t = tl和t = t2到達(dá)內(nèi)容服務(wù)器,則內(nèi)容服務(wù)器50計(jì)算在時(shí)刻t = t2將發(fā)送給客戶端70a的總數(shù)據(jù)大小,即(R+a)x(t2_tl)。因此,內(nèi)容服務(wù)器50在t = t2,將(R+a )x(t2_tl)比特的數(shù)據(jù)發(fā)送給客戶端70a??商鎿Q地,如果客戶端70a僅在發(fā)送的開(kāi)頭發(fā)送僅一個(gè)請(qǐng)求,該請(qǐng)求針對(duì)具有與目標(biāo)文件82的大小相等的大小的單個(gè)數(shù)據(jù)塊,則內(nèi)容服務(wù)器50可以以平均(N+(R+a))的間隔周期性地發(fā)送大小N比特的分組,其中N通常小于或等于最大允許傳輸控制協(xié)議(TCP)分組大小和最大允許HTTP分組大小。除了數(shù)據(jù)流計(jì)量以外,系統(tǒng)10的具體實(shí)施例還可以利用某些技術(shù)來(lái)應(yīng)對(duì)代碼轉(zhuǎn)換的動(dòng)態(tài)速率。即便代碼轉(zhuǎn)換器30平均而言正在實(shí)時(shí)進(jìn)行代碼轉(zhuǎn)換,其即時(shí)性能也逐幀不同(例如對(duì)于I幀較快而對(duì)于P幀較慢)或逐場(chǎng)景不同(例如,在高運(yùn)動(dòng)場(chǎng)景期間較慢并且在低運(yùn)動(dòng)場(chǎng)景中較快)。為了應(yīng)付代碼轉(zhuǎn)換速度中的該變化,系統(tǒng)10的具體實(shí)施例可以實(shí)現(xiàn)等候時(shí)間(wait-time)控制算法。在這樣的實(shí)施例中,如果目標(biāo)文件82a的被請(qǐng)求部分當(dāng)被客戶端70a請(qǐng)求時(shí)不可被內(nèi)容服務(wù)器50用來(lái)發(fā)送給客戶端70a,則內(nèi)容服務(wù)器50可以在響應(yīng)之前,等候預(yù)定的或動(dòng)態(tài)設(shè)置的時(shí)間量,或“等候時(shí)間”。如果被請(qǐng)求的來(lái)自目標(biāo)文件82a的數(shù)據(jù)在等候時(shí)間內(nèi)被代碼轉(zhuǎn)換器30寫(xiě)入目標(biāo)文件82a,則內(nèi)容服務(wù)器50將數(shù)據(jù)發(fā)送給客戶端70a并且繼續(xù)之后的正常操作。否則,如果所請(qǐng)求的數(shù)據(jù)在等候時(shí)間內(nèi)未被寫(xiě)入目標(biāo)文件82a,則在等候時(shí)間結(jié)束時(shí),內(nèi)容服務(wù)器50可以向客戶端70a發(fā)送文件結(jié)束 (EOF),從而結(jié)束發(fā)送會(huì)話,或采取其他適當(dāng)?shù)难a(bǔ)救措施。
在具體實(shí)施例中,等候時(shí)間可以初始基于視頻幀率被設(shè)置并且在會(huì)話期間基于請(qǐng)求速率、數(shù)據(jù)可用性、代碼轉(zhuǎn)換器30的性能和/或其它合適的因素被適應(yīng)性地調(diào)節(jié)。例如, 在具體實(shí)施例中,內(nèi)容服務(wù)器50可以計(jì)算等候時(shí)間值,其初始等于視頻幀率的乘法逆的一個(gè)數(shù)量級(jí)或W = 10x(l-視頻幀率)。系統(tǒng)10隨后可以利用計(jì)算出的等候時(shí)間W作為內(nèi)容服務(wù)器50將等候所請(qǐng)求的信息的時(shí)間量的上界。在這樣的實(shí)施例中,內(nèi)容服務(wù)器50可別設(shè)計(jì)為每0.01秒輪詢(poll)該文件,但是不長(zhǎng)于W秒。因此,只要所請(qǐng)求的來(lái)自目標(biāo)文件 82的數(shù)據(jù)是可獲得的,則內(nèi)容服務(wù)器50將立即取回?cái)?shù)據(jù)并將其發(fā)送給客戶端70。如果在 W秒之后,所請(qǐng)求的內(nèi)容不可在目標(biāo)文件82a中獲得,則內(nèi)容服務(wù)器可以發(fā)送EOF或采取適當(dāng)步驟。為了輔助數(shù)據(jù)流計(jì)量、等候時(shí)間值的使用以及內(nèi)容服務(wù)器50和客戶端70a之間的交互的其他方面,代碼轉(zhuǎn)換器30可以在代碼轉(zhuǎn)換的開(kāi)頭或在目標(biāo)文件82的創(chuàng)建被完成前的其他適當(dāng)時(shí)間點(diǎn),將媒體信息90和各種其他數(shù)據(jù)傳送給內(nèi)容服務(wù)器50。類似地,代碼轉(zhuǎn)換器30可以將具體客戶端側(cè)協(xié)議需要的或?qū)τ谳o助向具有某些能力限制的客戶端的遞送必要的其他值存儲(chǔ)在可由內(nèi)容服務(wù)器50訪問(wèn)的文件中。因此,在具體實(shí)施例中,代碼轉(zhuǎn)換器30可以將三個(gè)參數(shù)——估計(jì)文件大小(S)、數(shù)據(jù)率(R)和初始等候時(shí)間(W)——寫(xiě)入可由內(nèi)容服務(wù)器50訪問(wèn)的文件中。內(nèi)容服務(wù)器50可以隨后基于這些參數(shù)將內(nèi)容發(fā)送給客戶端70a或以其它方式與客戶端70交互。因此,通過(guò)估計(jì)用來(lái)生成媒體信息90的文件特征而不是等候直到有關(guān)源文件80 的代碼轉(zhuǎn)換被完成為止,系統(tǒng)10的具體實(shí)施例可以準(zhǔn)許客戶端70在這樣的文件已經(jīng)被完整進(jìn)行代碼轉(zhuǎn)換之前開(kāi)始所請(qǐng)求的源文件80的回放。此外,通過(guò)以用發(fā)送給客戶端70a的媒體信息90確定的方式寫(xiě)入目標(biāo)文件82,代碼轉(zhuǎn)換器可以確??蛻舳?0能夠恰當(dāng)?shù)卣?qǐng)求和播放來(lái)自目標(biāo)文件82的內(nèi)容,盡管事實(shí)是客戶端70a用來(lái)配置自身的媒體信息90以及請(qǐng)求內(nèi)容是基于目標(biāo)文件82a的估計(jì)特征而生成的。另外,通過(guò)利用數(shù)據(jù)計(jì)量和等候時(shí)間技術(shù)來(lái)管理向客戶端70的內(nèi)容發(fā)送,系統(tǒng)10的具體實(shí)施例可以減少或消除所請(qǐng)求的內(nèi)容的回放中的不必要的或過(guò)量的中斷。因此,系統(tǒng)10可以以最少的回放期間的中斷來(lái)提供各種不同格式的媒體內(nèi)容的回放。系統(tǒng)10的具體實(shí)施例在將所請(qǐng)求的內(nèi)容從Flash視頻 (FLV)源格式代碼轉(zhuǎn)換成運(yùn)動(dòng)圖片專家組-4目標(biāo)格式(通常稱為MP4文件格式)的同時(shí)進(jìn)行漸進(jìn)下載中特別有效。因此,系統(tǒng)10的具體實(shí)施例可以提供許多操作益處。然而,具體實(shí)施例可以不提供這些益處、這些益處中的一些或全部。圖2A圖示出具有系統(tǒng)10的具體實(shí)施例可以支持的文件結(jié)構(gòu)的示例媒體文件202。 如上所述,媒體文件202是其中描述媒體文件202中的媒體內(nèi)容的信息散布在媒體文件202 中的文件類型(在此稱為“類型A”)。系統(tǒng)10的某些實(shí)施例可以支持的類型A媒體文件的示例包括但不限于FLV、音頻視頻交織(AVI)和MPEG-I文件。如圖2A中所示,用于媒體文件202的媒體信息90包括報(bào)頭信息204和幀信息206。盡管圖2A圖示出系統(tǒng)10的具體實(shí)施例可以支持的類型A文件的示例,但是系統(tǒng)10的可替換實(shí)施例可以能夠支持具有多個(gè)媒體信息集合和/或位于除了文件開(kāi)頭以外的其它地方的媒體信息的其它類型的文件。圖2B圖示出具有系統(tǒng)10的具體實(shí)施例可以支持的可替換文件結(jié)構(gòu)的示例媒體文件212。如上所述,媒體文件212是其中描述媒體文件212中的媒體內(nèi)容的信息在媒體文件 212的開(kāi)頭處被分段的文件類型(在此稱為“類型B”)。系統(tǒng)10的某些實(shí)施例可以支持的類型B媒體文件的示例包括但不限于MP4、3GP和Quicktime文件。如圖2B中所示,媒體文件212僅在媒體文件212的開(kāi)頭處包括單個(gè)媒體信息塊214。盡管圖2B圖示出系統(tǒng)10的具體實(shí)施例可以支持的類型B文件的示例,但是系統(tǒng)10的可替換實(shí)施例可以能夠支持包括位于文件的開(kāi)頭處的單個(gè)媒體信息塊90。圖3是更詳細(xì)地圖示出代碼轉(zhuǎn)換器30的具體實(shí)施例的內(nèi)容和操作的框圖。一般, 如以上關(guān)于圖1所述,代碼轉(zhuǎn)換器30取回或以其它方式接收用于遞送給客戶端70的內(nèi)容, 以恰當(dāng)?shù)姆绞叫薷娜』氐膬?nèi)容來(lái)創(chuàng)建目標(biāo)文件82,并且生成對(duì)應(yīng)的媒體信息90來(lái)輔助修改后的內(nèi)容向請(qǐng)求客戶端70的發(fā)送。如圖3中所示,代碼轉(zhuǎn)換器30可以包括處理器310、 存儲(chǔ)器320、主機(jī)接口模塊330、網(wǎng)絡(luò)接口模塊340、存儲(chǔ)接口模塊350和一個(gè)或多個(gè)代碼轉(zhuǎn)換模塊360。處理器310可以表示或包括任意形式的處理組件,包括通用計(jì)算機(jī)、專用微處理器或能夠處理電子信息的其他處理設(shè)備。處理器310的示例包括數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)和任意其它適合的專用或通用處理器。盡管圖3圖示出包括單個(gè)處理器310的代碼轉(zhuǎn)換器30的具體實(shí)施例,但是代碼轉(zhuǎn)換器30 —般可以包括任意合適數(shù)目的處理器310。存儲(chǔ)器320存儲(chǔ)在操作期間由代碼轉(zhuǎn)換器30利用的處理器指令、編解碼和/或值和參數(shù)。存儲(chǔ)器320可以包括適合于存儲(chǔ)數(shù)據(jù)的易失性或非易失性的組件的任意集合和布置,這些組件諸如是例如隨機(jī)存取存儲(chǔ)器(RAM)設(shè)備、只讀存儲(chǔ)器(ROM)設(shè)備、磁存儲(chǔ)設(shè)備、 光存儲(chǔ)設(shè)備或任意合適的數(shù)據(jù)存儲(chǔ)設(shè)備。在具體實(shí)施例中,存儲(chǔ)器320可以部分地表示計(jì)算機(jī)指令在其上被編碼的計(jì)算機(jī)可讀介質(zhì)。在這樣的實(shí)施例中,所描述的代碼轉(zhuǎn)換器30的功能性的一些或全部可以由執(zhí)行被編碼在所述介質(zhì)上的指令的處理器310來(lái)提供。盡管在圖3中被示作單個(gè)組件,但是存儲(chǔ)器320可以表示在代碼轉(zhuǎn)換器30內(nèi)、其本地的或其可訪問(wèn)的任意數(shù)目的存儲(chǔ)元件。主機(jī)接口模塊330將代碼轉(zhuǎn)換器30耦合到主機(jī)處理器40來(lái)輔助主機(jī)處理器40和代碼轉(zhuǎn)換器30之間的通信和數(shù)據(jù)流。例如,代碼轉(zhuǎn)換器30可以通過(guò)主機(jī)接口模塊330來(lái)從主機(jī)處理器40接收工作流86。代碼轉(zhuǎn)換器30也可以使用主機(jī)接口模塊330來(lái)向主機(jī)處理器40發(fā)送指示代碼轉(zhuǎn)換器30已經(jīng)完成之前接收的工作流86并且準(zhǔn)備好用于另外的指派的消息。在某些實(shí)施例中,可替換地,代碼轉(zhuǎn)換器30和主機(jī)處理器40之間的通信和數(shù)據(jù)流可以經(jīng)由網(wǎng)絡(luò)接口模塊340來(lái)進(jìn)行。網(wǎng)絡(luò)接口模塊340將代碼轉(zhuǎn)換器30耦合到系統(tǒng)10的適當(dāng)組件來(lái)在由代碼轉(zhuǎn)換器 30執(zhí)行的內(nèi)容遞送操作方面輔助代碼轉(zhuǎn)換器30與內(nèi)容服務(wù)器50和/或系統(tǒng)10的其他合適的組件之間的經(jīng)由網(wǎng)絡(luò)60的通信。例如,代碼轉(zhuǎn)換器30可以利用網(wǎng)絡(luò)接口模塊340來(lái)將媒體信息90發(fā)送給內(nèi)容服務(wù)器50。在具體實(shí)施例中,網(wǎng)絡(luò)接口模塊340包括或表示適合于通過(guò)網(wǎng)絡(luò)60的基于分組的通信的一個(gè)或多個(gè)網(wǎng)絡(luò)接口卡(NIC)。存儲(chǔ)接口模塊350輔助代碼轉(zhuǎn)換器30與系統(tǒng)10的各個(gè)存儲(chǔ)組件之間的內(nèi)容的傳送。具體而言,代碼轉(zhuǎn)換器30通過(guò)存儲(chǔ)接口模塊350來(lái)接收來(lái)自原始內(nèi)容儲(chǔ)存器20的內(nèi)容并將內(nèi)容傳送給修改內(nèi)容儲(chǔ)存器22或傳送來(lái)自其的內(nèi)容。為了支持多個(gè)同時(shí)的代碼轉(zhuǎn)換處理,存儲(chǔ)接口模塊350可以包括多個(gè)端口,存儲(chǔ)接口模塊350可經(jīng)這多個(gè)端口同時(shí)接收來(lái)自原始內(nèi)容儲(chǔ)存器20和/或修改內(nèi)容儲(chǔ)存器22的多個(gè)流/將多個(gè)流同時(shí)發(fā)送給原始內(nèi)容儲(chǔ)存器20和/或修改內(nèi)容儲(chǔ)存器22。 在具體實(shí)施例中,原始內(nèi)容儲(chǔ)存器20和修改內(nèi)容儲(chǔ)存器22 二者都遠(yuǎn)離代碼轉(zhuǎn)換器30。因此,在這樣的實(shí)施例中,存儲(chǔ)接口模塊350可以部分或全部地表示網(wǎng)絡(luò)接口模塊 340的元件。在可替換實(shí)施例中,原始內(nèi)容儲(chǔ)存器20和修改內(nèi)容儲(chǔ)存器22之一或二者可以表示代碼轉(zhuǎn)換器30內(nèi)部的存儲(chǔ)組件,諸如存儲(chǔ)器320。在這樣的實(shí)施例中,存儲(chǔ)接口模塊350可以全部或部分地表示被配置為在代碼轉(zhuǎn)換器30的存儲(chǔ)組件和其它組件之間傳送信息的存儲(chǔ)總線和/或其它合適的組件。( 一個(gè)或多個(gè))代碼轉(zhuǎn)換模塊360將源文件80中的內(nèi)容從源格式修改為適合于向具體客戶端70的發(fā)送和由客戶端70進(jìn)行的回放的目標(biāo)格式。在具體實(shí)施例中,代碼轉(zhuǎn)換器 30可以包括能夠基于針對(duì)接收到的請(qǐng)求的目標(biāo)格式對(duì)各種不同類型的內(nèi)容進(jìn)行變換、代碼轉(zhuǎn)換、速率轉(zhuǎn)換和/或其它方式的修改的多個(gè)代碼轉(zhuǎn)換模塊360。在包括多個(gè)代碼轉(zhuǎn)換模塊 360的某些實(shí)施例中,代碼轉(zhuǎn)換模塊360可以能夠并發(fā)地操作使得多個(gè)內(nèi)容集合可以被同時(shí)修改。作為一個(gè)具體示例,代碼轉(zhuǎn)換器30的具體實(shí)施例可以包含多個(gè)代碼轉(zhuǎn)換模塊360, 其中每個(gè)代碼轉(zhuǎn)換模塊360表示或包括數(shù)字信號(hào)處理器(DSP)。每個(gè)DSP可以具有存儲(chǔ)器 320的對(duì)于那個(gè)DSP是本地的部分,其中存儲(chǔ)了用于對(duì)多個(gè)不同編解碼進(jìn)行編碼/解碼的適當(dāng)信息。因此,代碼轉(zhuǎn)換器30可以提供用于高流量系統(tǒng)中的實(shí)時(shí)代碼轉(zhuǎn)換的強(qiáng)壯的、高效節(jié)能的、緊致的平臺(tái)。一般,主機(jī)接口模塊330、網(wǎng)絡(luò)接口模塊340、存儲(chǔ)接口模塊350和(一個(gè)或多個(gè)) 代碼轉(zhuǎn)換模塊360中的每一個(gè)可以表示適合于提供所描述的功能性的硬件和/或軟件的任意適當(dāng)?shù)慕M合。另外,主機(jī)接口模塊330、網(wǎng)絡(luò)接口模塊340、存儲(chǔ)接口模塊350和(一個(gè)或多個(gè))代碼轉(zhuǎn)換模塊360中的的任意兩個(gè)或更多個(gè)可以表示或包括公共的元件。在具體實(shí)施例中,主機(jī)接口模塊330、網(wǎng)絡(luò)接口模塊340、存儲(chǔ)接口模塊350和(一個(gè)或多個(gè))代碼轉(zhuǎn)換模塊360部分地表示正被處理器310執(zhí)行的軟件應(yīng)用程序。圖4是圖示出在向請(qǐng)求客戶端70遞送內(nèi)容時(shí)系統(tǒng)10的具體實(shí)施例的操作的流程圖。圖4中所示的步驟可以在適當(dāng)時(shí)被組合、被修改或被刪除,并且另外的步驟可以被增加到所示出的那些步驟。另外,在不偏離本發(fā)明的范圍的情況下,這些步驟可以以任意合適的次序被執(zhí)行。操作在步驟410處開(kāi)始,內(nèi)容服務(wù)器50接收來(lái)自特定客戶端70的內(nèi)容請(qǐng)求84。 如上所述,內(nèi)容請(qǐng)求84可以表示適合于請(qǐng)求客戶端70從內(nèi)容服務(wù)器50請(qǐng)求內(nèi)容的任意適當(dāng)形式的請(qǐng)求。在具體實(shí)施例中,內(nèi)容請(qǐng)求84表示指定與所請(qǐng)求的源文件80相關(guān)聯(lián)的統(tǒng)一資源定位(URL)的HTTP請(qǐng)求。在步驟420,內(nèi)容服務(wù)器50識(shí)別與所接收到的內(nèi)容請(qǐng)求84相關(guān)聯(lián)的媒體內(nèi)容的源文件80。源文件80具有源格式,源格式與向請(qǐng)求客戶端70的發(fā)送或由請(qǐng)求客戶端70進(jìn)行的回放不相兼容的或者不適于此。因此,在步驟430,內(nèi)容服務(wù)器50 (或系統(tǒng)10的其他合適的組件)可以開(kāi)始與所接收到的內(nèi)容請(qǐng)求84相關(guān)聯(lián)的目標(biāo)文件82的創(chuàng)建。在具體實(shí)施例中,內(nèi)容服務(wù)器50可以通過(guò)將內(nèi)容請(qǐng)求84轉(zhuǎn)發(fā)給主機(jī)處理器40或直接轉(zhuǎn)發(fā)給代碼轉(zhuǎn)換器 30來(lái)開(kāi)始目標(biāo)文件82的創(chuàng)建。主機(jī)處理器40隨后可以將內(nèi)容請(qǐng)求84或由主機(jī)處理器40 響應(yīng)于內(nèi)容請(qǐng)求84創(chuàng)建的工作流轉(zhuǎn)發(fā)給合適的代碼轉(zhuǎn)換器30。代碼轉(zhuǎn)換器30隨后可以在對(duì)應(yīng)的目標(biāo)文件82被完整地創(chuàng)建之前,生成媒體信息90來(lái)輔助來(lái)自所請(qǐng)求的源文件80的內(nèi)容向請(qǐng)求客戶端70的發(fā)送。作為該處理的一部分, 在步驟440,代碼轉(zhuǎn)換器30估計(jì)目標(biāo)文件82的一個(gè)或多個(gè)特征。代碼轉(zhuǎn)換器30可以估計(jì)目標(biāo)文件82的任意合適的特征,包括但不限于與目標(biāo)文件82相關(guān)聯(lián)的文件大小,與將被包括在目標(biāo)文件82中的一個(gè)或多個(gè)媒體幀相關(guān)聯(lián)的幀大小、來(lái)自這樣的媒體幀中的一個(gè)或多個(gè)的時(shí)間戳,和/或這樣的媒體幀中的一個(gè)或多個(gè)的位置。在步驟450,代碼轉(zhuǎn)換器30隨后基于估計(jì)的特征和與有關(guān)源文件80其內(nèi)容和/或請(qǐng)求客戶端70相關(guān)聯(lián)的其他合適信息,來(lái)生成用于目標(biāo)文件82的媒體信息。在步驟460 處,代碼轉(zhuǎn)換器30、主機(jī)處理器40、內(nèi)容服務(wù)器50或系統(tǒng)10的其他合適元件隨后將所生成的媒體信息90發(fā)送給請(qǐng)求客戶端70。例如,代碼轉(zhuǎn)換器30可以將所生成的媒體信息90寫(xiě)入對(duì)應(yīng)的目標(biāo)文件82并且內(nèi)容服務(wù)器50可以從代碼轉(zhuǎn)換后的內(nèi)容存儲(chǔ)器22讀取有關(guān)的媒體信息90并將該媒體信息90發(fā)送給請(qǐng)求客戶端70。如圖4中所示,在具體實(shí)施例中,所生成的媒體信息90可以在對(duì)應(yīng)的目標(biāo)文件82的創(chuàng)建已被完成之前,被發(fā)送給請(qǐng)求客戶端 70。在所圖示的示例中,在步驟470,代碼轉(zhuǎn)換器30隨后開(kāi)始修改源文件80中的內(nèi)容來(lái)將其內(nèi)容轉(zhuǎn)換成與接收到的內(nèi)容請(qǐng)求84相關(guān)聯(lián)的目標(biāo)格式。盡管圖4圖示出其中代碼轉(zhuǎn)換器30在修改來(lái)自源文件80的任何內(nèi)容之前估計(jì)目標(biāo)文件82的特征的實(shí)施例,但是在可替換實(shí)施例中,代碼轉(zhuǎn)換器30可以修改源文件80的一部分并將修改后的部分的特征用作估計(jì)作為整體的目標(biāo)文件82的特征的基礎(chǔ)。因此,在具體實(shí)施例中,代碼轉(zhuǎn)換器30可以在估計(jì)目標(biāo)文件82的有關(guān)特征和/或生成用于目標(biāo)文件82的媒體信息90之前,開(kāi)始修改源文件80中的至少一部分內(nèi)容。在具體實(shí)施例中,代碼轉(zhuǎn)換器30可以以使得修改后的內(nèi)容符合發(fā)送給請(qǐng)求客戶端70的媒體信息90的方式來(lái)修改來(lái)自源文件80的內(nèi)容。例如,在具體實(shí)施例中,代碼轉(zhuǎn)換器30可以生成目標(biāo)格式的媒體幀,該媒體幀包含來(lái)自所請(qǐng)求的源文件80的內(nèi)容。如果媒體幀大于針對(duì)有關(guān)媒體類型的估計(jì)幀大小,則代碼轉(zhuǎn)換器30可以丟棄修改后的內(nèi)容的幀和/或以適合的方式修改幀以便符合估計(jì)幀大小(例如通過(guò)將具有0的幀寫(xiě)入對(duì)應(yīng)的目標(biāo)文件8 ??商鎿Q地,如果媒體幀小于針對(duì)有關(guān)媒體類型的估計(jì)幀大小,則代碼轉(zhuǎn)換器30 可以丟棄修改后的內(nèi)容的幀和/或以適合的方式修改幀以便符合估計(jì)幀大小(例如通過(guò)在將幀寫(xiě)入對(duì)應(yīng)目標(biāo)文件82之前,用諸如一串0之類的非數(shù)據(jù)比特來(lái)填充幀)。在步驟480,代碼轉(zhuǎn)換器30將修改后的來(lái)自源文件80的內(nèi)容寫(xiě)入對(duì)應(yīng)的目標(biāo)文件 82。在具體實(shí)施例中,代碼轉(zhuǎn)換器30可以基于被發(fā)送給請(qǐng)求客戶端70的媒體信息90來(lái)將修改后的內(nèi)容寫(xiě)入對(duì)應(yīng)目標(biāo)文件82。例如,代碼轉(zhuǎn)換器30可以在用發(fā)送給請(qǐng)求客戶端70 的媒體信息90指定的有關(guān)目標(biāo)文件82內(nèi)的位置處,將修改后的媒體內(nèi)容的幀寫(xiě)入對(duì)應(yīng)目標(biāo)文件82。當(dāng)代碼轉(zhuǎn)換器30正在將修改后的內(nèi)容寫(xiě)入目標(biāo)文件82時(shí),在步驟490,內(nèi)容服務(wù)器50可以將來(lái)自對(duì)應(yīng)目標(biāo)文件82的內(nèi)容發(fā)送給請(qǐng)求客戶端70。例如,在具體實(shí)施例中,作為漸進(jìn)下載的一部分,內(nèi)容服務(wù)器50可以將來(lái)自有關(guān)目標(biāo)文件82的內(nèi)容發(fā)送給請(qǐng)求客戶端70。在這樣的實(shí)施例中,內(nèi)容服務(wù)器50可以接收來(lái)自請(qǐng)求客戶端70的一連串請(qǐng)求,這些請(qǐng)求指示有關(guān)目標(biāo)文件82中的、請(qǐng)求客戶端70準(zhǔn)備好要接收的連續(xù)部分。內(nèi)容服務(wù)器50 可以響應(yīng)于這些請(qǐng)求將來(lái)自對(duì)應(yīng)目標(biāo)文件82的內(nèi)容發(fā)送給請(qǐng)求客戶端70。
代碼轉(zhuǎn)換器30可以繼續(xù)將修改后的內(nèi)容寫(xiě)入對(duì)應(yīng)目標(biāo)文件82并且內(nèi)容服務(wù)器 50可以繼續(xù)將來(lái)自有關(guān)目標(biāo)文件82的內(nèi)容發(fā)送給請(qǐng)求客戶端70。該處理可以被重復(fù)直到代碼轉(zhuǎn)換器30已經(jīng)完成對(duì)來(lái)自被請(qǐng)求的源文件80的內(nèi)容的修改并將其寫(xiě)入對(duì)應(yīng)目標(biāo)文件 82并且完成了目標(biāo)文件82的創(chuàng)建為止和/或直到內(nèi)容服務(wù)器50已經(jīng)完成了來(lái)自對(duì)應(yīng)目標(biāo)文件82的內(nèi)容向請(qǐng)求客戶端70的發(fā)送為止。因此,如圖4中的步驟500所示,代碼轉(zhuǎn)換器 30、內(nèi)容服務(wù)器50和/或系統(tǒng)10的其他合適的元件可以確定是否還有更多內(nèi)容要被寫(xiě)入和/或被發(fā)送并且重復(fù)步驟470、480和/或490。如果沒(méi)有,則系統(tǒng)10的該示例實(shí)施例的有關(guān)遞送所請(qǐng)求的內(nèi)容的操作可以結(jié)束,如圖4中所示。盡管已經(jīng)利用若干實(shí)施例描述了本發(fā)明,但是可以向本領(lǐng)域技術(shù)人員建議許多更改、改變、變更、變形和修改,并且本發(fā)明意欲包括絡(luò)在所附權(quán)利要求的范圍內(nèi)的這樣的更改、改變、變更、變形和修改。
權(quán)利要求
1.一種用于遞送媒體內(nèi)容的方法,包括 接收來(lái)自客戶端的針對(duì)媒體內(nèi)容的請(qǐng)求;識(shí)別第一媒體文件,所述第一媒體文件包含與所述請(qǐng)求相關(guān)聯(lián)的媒體內(nèi)容,其中所述第一文件具有第一媒體格式;至少部分地基于所述第一媒體文件來(lái)估計(jì)第二媒體文件的一個(gè)或多個(gè)特征,其中所述第二媒體文件具有第二媒體格式;至少部分地基于所述第二媒體文件的估計(jì)出的特征來(lái)生成用于所述第二媒體文件的媒體信息;開(kāi)始與所述請(qǐng)求相關(guān)聯(lián)的所述第二媒體文件的創(chuàng)建;以及在所述第二媒體文件的創(chuàng)建已被完成之前,將所述媒體信息發(fā)送給所述客戶端。
2.根據(jù)權(quán)利要求1所述的方法,其中,估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征包括計(jì)算與所述媒體內(nèi)容相關(guān)聯(lián)的多個(gè)媒體幀中的每一個(gè)媒體幀的幀大小。
3.根據(jù)權(quán)利要求1所述的方法,其中,估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征包括計(jì)算與所述媒體內(nèi)容相關(guān)聯(lián)的多個(gè)媒體幀中的每一個(gè)媒體幀的時(shí)間戳。
4.根據(jù)權(quán)利要求1所述的方法,其中,生成媒體信息包括為所述第一媒體文件中的多個(gè)媒體幀中的每一個(gè)媒體幀確定在所述第二媒體文件中的位置。
5.根據(jù)權(quán)利要求1所述的方法,其中,生成媒體信息包括確定與要被寫(xiě)入所述第二媒體文件中的每個(gè)內(nèi)容塊相關(guān)聯(lián)的時(shí)間量。
6.根據(jù)權(quán)利要求1所述的方法,其中,生成媒體信息包括確定與要被寫(xiě)入所述第二媒體文件中的每個(gè)內(nèi)容塊相關(guān)聯(lián)的時(shí)間量;以及基于與所述第二媒體文件相關(guān)聯(lián)的視頻幀率和所述時(shí)間量來(lái)確定每個(gè)視頻內(nèi)容塊中的視頻幀的數(shù)量。
7.根據(jù)權(quán)利要求1所述的方法,其中,生成媒體信息包括確定與要被寫(xiě)入所述第二媒體文件中的每個(gè)內(nèi)容塊相關(guān)聯(lián)的時(shí)間量;以及基于與所述第二媒體文件相關(guān)聯(lián)的音頻采樣率、每音頻幀的樣本數(shù)和所述時(shí)間量,來(lái)確定每個(gè)音頻內(nèi)容塊中的音頻幀的數(shù)量。
8.根據(jù)權(quán)利要求1所述的方法,還包括至少部分地基于所生成的媒體信息來(lái)將媒體內(nèi)容寫(xiě)入所述第二媒體文件。
9.根據(jù)權(quán)利要求8所述的方法,其中,將媒體內(nèi)容寫(xiě)入所述第二媒體文件包括 生成所述第二格式的媒體幀;判斷生成的媒體幀是否大于估計(jì)出的幀大??;以及響應(yīng)于判斷出所述生成的媒體幀大于所述估計(jì)出的幀大小,丟棄所述生成的媒體幀。
10.根據(jù)權(quán)利要求8所述的方法,其中,將媒體內(nèi)容寫(xiě)入所述媒體文件包括 生成所述第二格式的媒體幀;判斷生成的媒體幀是否小于估計(jì)出的幀大??;以及響應(yīng)于判斷出所述生成的媒體幀小于所述估計(jì)出的幀大小,向所述生成的媒體幀添加啞元比特。
11.根據(jù)權(quán)利要求1所述的方法,還包括在所述第二媒體文件的創(chuàng)建已被完成之前,將所述第二媒體文件的一部分發(fā)送給所述客戶端。
12.根據(jù)權(quán)利要求11所述的方法,其中,將所述第二媒體文件的一部分發(fā)送給所述客戶端包括將所述部分作為所述第二媒體文件的漸進(jìn)下載的一部分來(lái)發(fā)送給所述客戶端。
13.根據(jù)權(quán)利要求11所述的方法,還包括在所述第二媒體文件的創(chuàng)建已被完成之前, 在所述客戶端處開(kāi)始所述第二媒體文件的所述部分的回放。
14.根據(jù)權(quán)利要求1所述的方法,其中,估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征包括在任何媒體內(nèi)容被寫(xiě)入所述第二文件之前,估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征。
15.根據(jù)權(quán)利要求1所述的方法,其中,估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征包括至少部分地基于所述第一媒體文件來(lái)生成所述第二媒體格式的一個(gè)或多個(gè)媒體幀;以及基于所生成的媒體幀來(lái)估計(jì)所述第二媒體文件的所述一個(gè)或多個(gè)特征。
16.一種用于處理媒體內(nèi)容的裝置,包括 存儲(chǔ)器,所述存儲(chǔ)器可操作用于存儲(chǔ)處理器指令;處理器,所述處理器可操作用于執(zhí)行所述處理器指令,并且當(dāng)執(zhí)行所述處理器指令時(shí), 可操作用于接收來(lái)自客戶端的針對(duì)媒體內(nèi)容的請(qǐng)求;識(shí)別第一媒體文件,所述第一媒體文件包含與所述請(qǐng)求相關(guān)聯(lián)的媒體內(nèi)容,其中所述第一文件具有第一媒體格式;至少部分地基于所述第一媒體文件來(lái)估計(jì)第二媒體文件的一個(gè)或多個(gè)特征,其中所述第二媒體文件具有第二媒體格式;至少部分地基于所述第二媒體文件的估計(jì)出的特征來(lái)生成用于所述第二媒體文件的媒體信息;開(kāi)始與所述請(qǐng)求相關(guān)聯(lián)的所述第二媒體文件的創(chuàng)建;以及在所述第二媒體文件的創(chuàng)建已被完成之前,將所述媒體信息發(fā)送給所述客戶端。
17.根據(jù)權(quán)利要求16所述的裝置,其中,所述處理器可操作用于通過(guò)計(jì)算與所述媒體內(nèi)容相關(guān)聯(lián)的多個(gè)媒體幀中的每一個(gè)媒體幀的幀大小,來(lái)估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征。
18.根據(jù)權(quán)利要求16所述的裝置,其中,所述處理器可操作用于通過(guò)計(jì)算與所述媒體內(nèi)容相關(guān)聯(lián)的多個(gè)媒體幀中的每一個(gè)媒體幀的時(shí)間戳,來(lái)估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征。
19.根據(jù)權(quán)利要求16所述的裝置,其中,所述處理器可操作用于通過(guò)為所述第一媒體文件中的多個(gè)媒體幀中的每一個(gè)媒體幀確定在所述第二媒體文件中的位置,來(lái)估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征。
20.根據(jù)權(quán)利要求16所述的裝置,其中,所述處理器可操作用于通過(guò)確定與要被寫(xiě)入所述第二媒體文件中的每個(gè)內(nèi)容塊相關(guān)聯(lián)的時(shí)間量來(lái)生成所述媒體信息。
21.根據(jù)權(quán)利要求16所述的裝置,其中,所述處理器可操作用于通過(guò)以下處理來(lái)生成媒體信息確定與要被寫(xiě)入所述第二媒體文件中的每個(gè)內(nèi)容塊相關(guān)聯(lián)的時(shí)間量;以及基于與所述第二媒體文件相關(guān)聯(lián)的視頻幀率和所述時(shí)間量來(lái)確定每個(gè)視頻內(nèi)容塊中的視頻幀的數(shù)量。
22.根據(jù)權(quán)利要求16所述的裝置,其中,所述處理器可操作用于通過(guò)以下處理來(lái)生成媒體信息確定與要被寫(xiě)入所述第二媒體文件中的每個(gè)內(nèi)容塊相關(guān)聯(lián)的時(shí)間量;以及基于與所述第二媒體文件相關(guān)聯(lián)的音頻采樣率、每音頻幀的樣本數(shù)和所述時(shí)間量,來(lái)確定每個(gè)音頻內(nèi)容塊中的音頻幀的數(shù)量。
23.根據(jù)權(quán)利要求16所述的裝置,其中,所述處理器還可操作用于至少部分地基于所生成的媒體信息來(lái)將媒體內(nèi)容寫(xiě)入所述第二媒體文件。
24.根據(jù)權(quán)利要求23所述的裝置,其中,所述處理器可操作用于通過(guò)以下處理來(lái)將媒體內(nèi)容寫(xiě)入所述第二媒體文件生成所述第二格式的媒體幀;判斷生成的媒體幀是否大于估計(jì)出的幀大??;以及響應(yīng)于判斷出所述生成的媒體幀大于所述估計(jì)出的幀大小,丟棄所述生成的媒體幀。
25.根據(jù)權(quán)利要求23所述的裝置,其中,所述處理器可操作用于通過(guò)以下處理來(lái)將媒體內(nèi)容寫(xiě)入所述第二媒體文件生成所述第二格式的媒體幀;判斷生成的媒體幀是否小于估計(jì)出的幀大??;以及響應(yīng)于判斷出所述生成的媒體幀小于所述估計(jì)出的幀大小,向所述生成的媒體幀添加啞元比特。
26.根據(jù)權(quán)利要求16所述的裝置,其中,所述處理器還可操作用于在所述第二媒體文件的創(chuàng)建已被完成之前,將所述第二媒體文件的一部分發(fā)送給所述客戶端。
27.根據(jù)權(quán)利要求沈所述的裝置,其中,所述處理器可操作用于通過(guò)將所述第二媒體文件的一部分作為所述第二媒體文件的漸進(jìn)下載的一部分來(lái)發(fā)送給所述客戶端,來(lái)將所述部分發(fā)送給所述客戶端。
28.根據(jù)權(quán)利要求16所述的裝置,其中,所述處理器可操作用于通過(guò)在任何媒體內(nèi)容被寫(xiě)入所述第二文件之前估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征,來(lái)估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征。
29.根據(jù)權(quán)利要求16所述的裝置,其中,所述處理器可操作用于通過(guò)以下處理來(lái)估計(jì)所述第二媒體文件的一個(gè)或多個(gè)特征至少部分地基于所述第一媒體文件來(lái)生成所述第二媒體格式的一個(gè)或多個(gè)媒體幀;以及基于所生成的媒體幀來(lái)估計(jì)所述第二媒體文件的所述一個(gè)或多個(gè)特征。
30.一種用于遞送媒體內(nèi)容的系統(tǒng),包括代碼轉(zhuǎn)換器,所述代碼轉(zhuǎn)換器包括存儲(chǔ)器,所述存儲(chǔ)器可操作用于存儲(chǔ)用于所述代碼轉(zhuǎn)換器的處理器指令;以及處理器,所述處理器在執(zhí)行用于所述代碼轉(zhuǎn)換器的處理器指令時(shí),可操作用于接收來(lái)自客戶端的針對(duì)媒體內(nèi)容的請(qǐng)求;識(shí)別第一媒體文件,所述第一媒體文件包含與所述請(qǐng)求相關(guān)聯(lián)的媒體內(nèi)容,其中所述第一文件具有第一媒體格式;至少部分地基于所述第一媒體文件來(lái)估計(jì)第二媒體文件的一個(gè)或多個(gè)特征,其中所述第二媒體文件具有第二媒體格式;至少部分地基于所述第二媒體文件的估計(jì)出的特征來(lái)生成用于所述第二媒體文件的媒體信息;開(kāi)始與所述請(qǐng)求相關(guān)聯(lián)的所述第二媒體文件的創(chuàng)建;以及在所述第二媒體文件的創(chuàng)建已被完成之前,將所述媒體信息發(fā)送給所述客戶端;以及所述客戶端可操作用于 接收所述媒體信息;從所述代碼轉(zhuǎn)換器請(qǐng)求所述第二媒體文件的至少一部分;以及基于接收到的媒體信息來(lái)播放所述第二媒體文件的所述部分。
全文摘要
一種用于遞送媒體內(nèi)容的方法,包括接收來(lái)自客戶端(70a、70b、70c)的針對(duì)媒體內(nèi)容的請(qǐng)求(84),以及識(shí)別包含與該請(qǐng)求相關(guān)聯(lián)的媒體內(nèi)容的第一媒體文件(80)。第一文件(80)具有第一媒體格式。該方法還包括開(kāi)始與該請(qǐng)求相關(guān)聯(lián)的第二媒體文件(82)的創(chuàng)建以及估計(jì)第二媒體文件(82)的一個(gè)或多個(gè)特征。第二媒體文件具有第二媒體格式。另外,該方法還包括基于第二媒體文件的估計(jì)出的特征來(lái)生成用于第二媒體文件的媒體信息(90)并且在第二媒體文件的創(chuàng)建已被完成之前將媒體信息發(fā)送給客戶端。
文檔編號(hào)H04N21/262GK102246533SQ200980150268
公開(kāi)日2011年11月16日 申請(qǐng)日期2009年10月14日 優(yōu)先權(quán)日2008年10月14日
發(fā)明者喬納森·R·布萊崎, 普拉胡德威·I·霍蘇爾, 聰·T·恩古因 申請(qǐng)人:Rgb網(wǎng)絡(luò)有限公司