專利名稱:預(yù)算編碼的制作方法
預(yù)算編碼
背景技術(shù):
本申請(qǐng)要求對(duì)于2009年10月15日提交的美國專利申請(qǐng)?zhí)?2/580,212的優(yōu)先權(quán),通過引用將其結(jié)合于此。MP4 (稱為“MPEG-4 Part 14” 或者“ IS0/IEC 14496-14 :2003”)是作為 MPEG-4 的一部分而指定的多媒體容器文件格式標(biāo)準(zhǔn)。它用來存儲(chǔ)數(shù)字音頻和視頻流以及其他數(shù)據(jù),諸如字幕和靜止圖像。主要為視頻存儲(chǔ)而設(shè)計(jì)的MP4也由因特網(wǎng)視頻web站點(diǎn)用來以偽流傳輸方式傳送視頻內(nèi)容。這樣,視頻播放器下載剪輯并且在視頻內(nèi)容變得可用時(shí)播放它。例如圖IA中的MP4文件100由稱為框(包括但不限于框110和120)的對(duì)象的層級(jí)組成。每個(gè)框是文件內(nèi)的鄰接字節(jié)范圍。每個(gè)框由文件內(nèi)的四字符框類型標(biāo)識(shí)。在層級(jí)頂部的兩個(gè)框在這里最相關(guān),即電影框(類型moov 110)和媒體數(shù)據(jù)框(類型!11(1&丨120)。moov框110包括描述MP4文件100的所有文件信息112。mdat框120包括所有編碼音頻和視頻 幀,例如幀122、124和126。moov段110是用于文件的內(nèi)容表并且包括媒體幀索引,該索引 引用MP4文件100中的每幀并且指定用于每幀的幀大小和字節(jié)偏移。例如moov段110可以包括條目114、116和118,這些條目具有用于MP4文件100內(nèi)的每個(gè)編碼幀的幀大小和字節(jié)偏移。在圖IA中示出了 moov段110為單個(gè)表,但是該moov段110在以MP4文件格式編碼時(shí)可以跨若干結(jié)構(gòu)分布。在mdat框120內(nèi)的數(shù)據(jù)可以未成巾貞(unframe)。在mdat框120內(nèi),無一幀在何處結(jié)束以及下一幀在何處開始的指示。用于區(qū)分采樣的僅有方式是使用moov框110中的文件信息112?!阄聪薅╩oov和mdat框的順序。對(duì)于不同的MP4使用情況,框必須以具體順序出現(xiàn)。MP4播放器必須在回放可以開始之前讀取整個(gè)moov段110。當(dāng)通過HTTP流式傳輸時(shí),希望播放器在視頻完全下載之前開始播放。為了支持這一,清況,moov框110應(yīng)當(dāng)出現(xiàn)于mdat框120之前。生成可以向MP4播放器流式傳輸?shù)腗P4文件通常為兩步驟過程。在第一步驟中,編碼器可以生成幀并且在單獨(dú)表中記錄它們的大小??梢韵蚺R時(shí)文件或者緩沖器中的mdat框?qū)懭肷傻膸?。在已?jīng)對(duì)所有幀編碼之后,編碼器然后可以寫moov框。在第二步驟中,編碼器可以按照用于流式傳輸?shù)恼_順序來布置moov和mdat框。這一傳統(tǒng)兩步驟MP4編碼過程的問題之一在于它不能提供實(shí)時(shí)轉(zhuǎn)碼、壓縮、優(yōu)化或者任何其他實(shí)時(shí)運(yùn)行中(on-the-fly)修改過程。
圖IA圖示了 MP4文件的內(nèi)部布局。圖IB圖示了示例性預(yù)算編碼過程。圖2圖示了示例性系統(tǒng)的框圖。圖3是圖示了圖2的示例性系統(tǒng)中的示例性代理服務(wù)器的預(yù)算視頻處理器的一個(gè)實(shí)施例的框圖。圖4是圖示了圖3的實(shí)施例中的示例性處理流程的功能圖。
圖5是代表示例性預(yù)算編碼方法的流程圖。圖6是具有示例性處理流程的框圖,該流程圖示了圖3的示例性預(yù)算視頻處理器的不例性編碼器的一個(gè)實(shí)施例。圖7是具有不例性處理流程的框圖,該流程圖不了圖3和圖4的不例性預(yù)算視頻處理器的另一實(shí)施例。圖8是代表用于預(yù)測(cè)量化參數(shù)的示例性方法的流程圖。圖9是圖示了圖2的示例性系統(tǒng)的一個(gè)示例性實(shí)施例的框圖。圖10是圖示了圖9的實(shí)施例中的示例性處理流程的功能圖。圖11是代表用于在預(yù)算編碼的背景中的媒體尋找的示例性方法的流程圖。
具體實(shí)施例方式現(xiàn)在將詳細(xì)參照示例性實(shí)施例,在附圖中圖示了這些實(shí)施例的例子。只要有可能,相同標(biāo)號(hào)將在所有附圖中用來指代相同或者相似部分。這里公開的示例性實(shí)施例涉及用于預(yù)算編碼的方法和系統(tǒng)。預(yù)算編碼是一種用于在實(shí)時(shí)處理模型內(nèi)以媒體容器格式生成文件的技術(shù),該格式具有指定用于每個(gè)媒體幀的字節(jié)大小和字節(jié)偏移的幀索引。雖然MP4容器格式在示例性實(shí)施例中用來舉例說明預(yù)算編碼,但是可以對(duì)任何其他媒體容器格式執(zhí)行預(yù)算編碼,該格式具有指定用于每個(gè)媒體幀的字節(jié)大小和字節(jié)偏移的幀索引。實(shí)時(shí)預(yù)算編碼技術(shù)可以允許截獲來自媒體服務(wù)器的一個(gè)或者多個(gè)下載、處理它的媒體內(nèi)容并且生成可以在單遍(single pass)中向客戶端流式傳輸?shù)拿襟w文件。圖IB圖示了示例性預(yù)算編碼過程。預(yù)算編碼是一種允許代理服務(wù)器對(duì)某些媒體格式執(zhí)行實(shí)時(shí)運(yùn)行中修改過程的技術(shù)。修改過程可以例如包括對(duì)媒體數(shù)據(jù)的轉(zhuǎn)碼、壓縮、優(yōu)化和/或任何其他實(shí)時(shí)運(yùn)行中修改。例如為了運(yùn)行中和/或?qū)崟r(shí)優(yōu)化MP4文件,代理服務(wù)器可以先通過預(yù)測(cè)輸出(例如優(yōu)化的)媒體數(shù)據(jù)中的每個(gè)媒體幀的大小來計(jì)算輸出(例如優(yōu)化的)幀索引(例如moov段)。隨后,代理服務(wù)器然后可以通過優(yōu)化它從媒體服務(wù)器下載的每個(gè)新媒體幀以滿足在輸出幀索引中預(yù)測(cè)的幀大小來堅(jiān)持它的先前預(yù)測(cè)。更具體而言,在第一步驟中,來自原始MP4文件100的moov框110用來生成輸出MP4文件130的輸出moov框140。輸出moov框140可以包括但不限于文件信息142,該信息142可以包括描述輸出巾貞大小的條目,諸如條目144、146和148。根據(jù)來自于在原始MP4文件100的moov框110中提供的條目114、116和118的原始幀大小估計(jì)輸出moov框140中的輸出幀大小。估計(jì)的輸出幀大小被記錄并且可以在第二步驟中用作幀預(yù)算。在第二步驟中,在對(duì)幀編碼時(shí)使用估計(jì)的幀大小作為幀預(yù)算。處理模塊(例如編碼器)使用解碼幀和對(duì)應(yīng)幀預(yù)算的參數(shù)來預(yù)測(cè)將用于處理(例如,編碼)解碼幀的處理參數(shù),諸如編碼參數(shù),包括一個(gè)或者多個(gè)量化參數(shù)。如果處理模塊預(yù)測(cè)錯(cuò)誤并且生成未在對(duì)應(yīng)幀預(yù)算內(nèi)相配的幀,則它確定新處理參數(shù)并且重新處理幀。一旦幀在預(yù)算以下相配,則填充它(下文進(jìn)一步描述)以滿足預(yù)算并且向輸出MP4文件的輸出mdat框150寫入。在輸出moov框140中指示的巾貞大小可以包括處理的巾貞和填充(padding)二者。當(dāng)MP4播放器播放輸出MP4文件140時(shí),可以向MP4播放器的解碼器發(fā)送處理的巾貞加上填充,例如媒體幀152、154和156。填充序列可以充當(dāng)向解碼器的無操作指示符。用于填充的確切位序列根據(jù)編解碼器變化。一旦寫入輸出moo V框140,就可以固定用于輸出MP4文件130的總位速率(文件大小)。無論處理模塊為每幀生成的字節(jié)數(shù)量如何,每個(gè)幀可以具有固定大小。圖2圖示了示例性系統(tǒng)200的框圖。示例性系統(tǒng)200可以是通過本地連接或者諸如無線網(wǎng)絡(luò)、因特網(wǎng)、廣播網(wǎng)絡(luò)等網(wǎng)絡(luò)提供媒體內(nèi)容的任何類型的系統(tǒng)。示例性系統(tǒng)200可以除了別的以外包括用戶設(shè)備202、網(wǎng)關(guān)204、一個(gè)或者多個(gè)網(wǎng)絡(luò)206和210、代理服務(wù)器208和一個(gè)或者多個(gè)媒體服務(wù)器212-214。用戶設(shè)備202可以是硬件設(shè)備(諸如計(jì)算機(jī)、PDA、蜂窩電話、膝上型計(jì)算機(jī)、桌面型計(jì)算機(jī)或者訪問數(shù)據(jù)網(wǎng)絡(luò)的任何設(shè)備)。用戶設(shè)備202可以包括軟件應(yīng)用,這些軟件應(yīng)用允許設(shè)備與數(shù)據(jù)網(wǎng)絡(luò)通信并且從數(shù)據(jù)網(wǎng)絡(luò)接收數(shù)據(jù)分組(諸如流式傳輸媒體的數(shù)據(jù)分組)。例如,用戶設(shè)備202可以向媒體服務(wù)器發(fā)送用于下載特定流式傳輸媒體文件的請(qǐng)求數(shù)據(jù),并且媒體服務(wù)器可以向用戶設(shè)備202傳輸流式傳輸媒體文件。在一些實(shí)施例中,可以通過代理服務(wù)器208路由流式傳輸媒體文件。用戶設(shè)備202可以提供用于向用戶設(shè)備的用戶顯 示流式傳輸媒體的顯示器和一個(gè)或者多個(gè)軟件應(yīng)用,諸如媒體播放器。網(wǎng)關(guān)204是一個(gè)或者多個(gè)如下設(shè)備,該設(shè)備充當(dāng)入口或者接入裝置并且可以或可以不將在一個(gè)類型的網(wǎng)絡(luò)中提供的格式化數(shù)據(jù)轉(zhuǎn)換成另一類型的網(wǎng)絡(luò)所需要的特定格式。網(wǎng)關(guān)204例如可以是服務(wù)器、路由器。防火墻服務(wù)器、主機(jī)或者代理服務(wù)器。例如網(wǎng)關(guān)204可以具有將從用戶設(shè)備202接收的信號(hào)變換成網(wǎng)絡(luò)206或者210可以理解的信號(hào)的能力并且反之亦然。然而這一變換能力在一些數(shù)據(jù)網(wǎng)絡(luò)(例如第四代(4G)或者全球微波接入互操作性(WiMAX))中并非必需。網(wǎng)關(guān)204可以能夠單獨(dú)或者以任何組合來處理音頻、視頻和T. 120傳輸并且能夠全雙工媒體轉(zhuǎn)譯。另外,網(wǎng)關(guān)204可以包括用于預(yù)算編碼的代理服務(wù)器208。網(wǎng)絡(luò)206和210可以包括廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)或者適合于分組型通信(諸如因特網(wǎng)通信)的無線網(wǎng)絡(luò)的或者適合分發(fā)媒體內(nèi)容的廣播網(wǎng)絡(luò)的任何組合。代理服務(wù)器208可以實(shí)施為提供預(yù)算編碼的軟件程序和/或硬件設(shè)備。代理服務(wù)器208是提供在用戶設(shè)備202與媒體服務(wù)器212-214之間的通信的服務(wù)器。例如代理服務(wù)器208可以包括Bytemobile’s Web Fidelity服務(wù)。代理服務(wù)器208可以對(duì)某些媒體格式執(zhí)行實(shí)時(shí)運(yùn)行中修改。修改過程可以例如包括對(duì)媒體數(shù)據(jù)的轉(zhuǎn)碼、壓縮、優(yōu)化和/或任何其他實(shí)時(shí)運(yùn)行中修改。例如代理服務(wù)器208可以將預(yù)算編碼技術(shù)應(yīng)用于原始MP4文件。在預(yù)算編碼技術(shù)中,可以將原始MP4文件編碼成更低位速率而不明顯改變媒體格式??梢栽谔幚砥陂g使用更高壓縮。處理可以使給定媒體相配到更小存儲(chǔ)空間中或者壓縮信息量,使得通過更低帶寬信道傳輸它。預(yù)算編碼技術(shù)也可以用來在從服務(wù)器下載原始視頻內(nèi)容時(shí)轉(zhuǎn)碼視頻內(nèi)容、添加水印、標(biāo)志或者其他相似的運(yùn)行中視頻處理。作為圖2中所示系統(tǒng)200的配置的替代,代理服務(wù)器208執(zhí)行的處理可以由任何媒體服務(wù)器212-214或者在用戶設(shè)備202與媒體服務(wù)器212-214之間的任何網(wǎng)絡(luò)設(shè)備執(zhí)行。代理服務(wù)器208可以包括用于執(zhí)行預(yù)算技術(shù)的預(yù)算視頻處理器(“BVP”)。BVP可以接收原始MP4文件、估計(jì)輸出幀大小作為幀預(yù)算、生成輸出moov框并且對(duì)原始MP4文件中的媒體幀解碼。BVP然后可以預(yù)測(cè)用于處理(例如編碼)解碼媒體幀使得處理的幀在幀預(yù)算內(nèi)相配的處理參數(shù)(例如編碼參數(shù))。BVP也可以填充處理的幀以滿足幀預(yù)算并且向輸出mdat框?qū)懭胩畛涞膸VP可以向用戶設(shè)備202提供輸出MP4文件。此外,代理服務(wù)器208可以支持在預(yù)算編碼或者任何其他這樣的實(shí)時(shí)運(yùn)行中處理的背景中的媒體尋找(即快進(jìn)或者倒退至媒體數(shù)據(jù)中的隨機(jī)位置)。例如代理服務(wù)器208可以支持針對(duì)MP4媒體數(shù)據(jù)或者需要訪問完整媒體幀索引的任何其他媒體格式的媒體尋找。媒體服務(wù)器212-214可以是如下計(jì)算機(jī)服務(wù)器,這些服務(wù)器從用戶設(shè)備202接收針對(duì)媒體內(nèi)容的請(qǐng)求、處理請(qǐng)求并且在一些實(shí)施例中通過代理服務(wù)器208向用戶設(shè)備202提供媒體內(nèi)容。例如媒體服務(wù)器212-214可以是web服務(wù)器、企業(yè)服務(wù)器或任何其他類型的計(jì)算機(jī)服務(wù)器。媒體服務(wù)器212-214可以是編程為接受來自用戶設(shè)備202的請(qǐng)求(例如HTTP、RTSP或者可以發(fā)起媒體會(huì)話的其他協(xié)議)并且向用戶設(shè)備202供應(yīng)流式傳輸媒體的計(jì)算機(jī)。媒體服務(wù)器212-214也可以是PDA、蜂窩電話、膝上型計(jì)算機(jī)、桌面型計(jì)算機(jī)或者被配置成在一些實(shí)施例中通過一個(gè)或者多個(gè)網(wǎng)絡(luò)206和210向用戶設(shè)備202傳送媒體內(nèi)容的任何設(shè)備。另外,媒體服務(wù)器212-214可以是用于在一些實(shí)施例中通過代理服務(wù)器208向用戶設(shè)備202分發(fā)媒體內(nèi)容的廣播設(shè)施,諸如free-to-air、有線、衛(wèi)星和其他廣播設(shè)施。在 一些實(shí)施例中,代理服務(wù)器208可以是任何媒體服務(wù)器212-214的部分。圖3是圖示了圖2的示例性系統(tǒng)中的代理服務(wù)器208的示例性預(yù)算視頻處理器(“BVP”)的一個(gè)實(shí)施例的框圖。為求簡單,圖3僅圖示了 BVP 300、作為輸入的原始MP4文件(302)和作為輸出的輸出MP4文件(304)。BVP 300可以包括解復(fù)用器310、幀預(yù)算算法模塊320、moov框生成器330、處理器340和復(fù)用器350。BVP 300的所示配置僅為示例性的并且可以被修改成提供分立元件或者將多個(gè)元件組合成單個(gè)元件,并且作為硬件與軟件的任何組合來提供。參照?qǐng)D3,解復(fù)用器310可以包括MP4讀取器312和解碼器314。MP4讀取器312可以是如下軟件程序和/或硬件設(shè)備,該軟件程序和/或硬件設(shè)備可以接收原始MP4文件并且從原始MP4文件提取如下幀索引(例如原始moov框),該索引指定原始MP4文件的原始mdat框中的每個(gè)原始幀的幀/字節(jié)大小、字節(jié)偏移和順序。另外,MP4讀取器31可以從原始mdat框取回原始媒體幀用于進(jìn)一步處理??梢蕴峁┙獯a器314為用于對(duì)每個(gè)取回的媒體幀解碼、獲得原始編碼參數(shù)并且向解碼幀上注釋原始編碼參數(shù)的軟件程序和/或硬件設(shè)備。原始編碼參數(shù)包括但不限于用于量化(有損壓縮)取回的媒體幀的一個(gè)或者多個(gè)原始量化參數(shù)、編碼器的原始配置信息、一個(gè)或者多個(gè)原始?jí)嚎s算法和參數(shù)以及用于創(chuàng)建取回的媒體幀的其他原始編碼信息。解碼器314可以向量化算法模塊352供應(yīng)原始編碼參數(shù)以預(yù)測(cè)用于在幀預(yù)算內(nèi)生成編碼幀的新編碼參數(shù)(包括新量化參數(shù))。解碼器314可以支持常用音頻/視頻編碼標(biāo)準(zhǔn)(例如H. 264和/或MPEG編解碼器)??梢蕴峁A(yù)算算法模塊320為用于基于原始moov框計(jì)算用于輸出MP4文件(304)中的每個(gè)輸出幀的字節(jié)大小的軟件程序和/或硬件設(shè)備。可以使用計(jì)算的字節(jié)大小作為用于輸出媒體幀的幀預(yù)算,使得可以將對(duì)應(yīng)原始媒體幀壓縮成在幀預(yù)算內(nèi)相配。每個(gè)輸出幀具有對(duì)應(yīng)幀預(yù)算。向幀預(yù)算算法模塊320的主要輸入可以是來自原始輸入MP4文件(302)的原始moov框。幀預(yù)算算法模塊320也可以考慮由解碼器314和/或編碼器354確定的一些參數(shù)。這些參數(shù)可以在輸入文件的初始探測(cè)期間被確定并且可以用于該輸入中的幀的采樣。幀預(yù)算算法模塊320可以考慮是否使用附加無損壓縮技術(shù)(例如gzip內(nèi)容編碼或者其他壓縮技術(shù))向客戶端發(fā)送輸出MP4文件??梢酝ㄟ^附加壓縮技術(shù)消除向輸出幀添加的一些或者多數(shù)填充。因此,幀預(yù)算算法模塊320可以增加幀預(yù)算以減少可能需要將任何幀編碼多于一次以在對(duì)應(yīng)幀預(yù)算內(nèi)相配的機(jī)會(huì)。可能在每幀中浪費(fèi)更多字節(jié),但是壓縮可以消除這些額外字節(jié),因而可以不通過網(wǎng)絡(luò)傳輸它們??梢蕴峁﹎oov框生成器330為如下軟件程序和/或硬件設(shè)備,該軟件程序和/或硬件設(shè)備組合由幀預(yù)算算法模塊320確定的幀預(yù)算與從原始MP4文件提取的原始moov框以生成用于輸出MP4文件的輸出/處理的moov框。moov框生成器330也可以考慮編碼器354的配置以更新輸出moov框中的某些字段??梢蕴峁┨幚砥?40為用于作為用于處理的媒體數(shù)據(jù)的占位符(placeholder)來運(yùn)轉(zhuǎn)的軟件程序和/或硬件設(shè)備。處理器340也可以對(duì)媒體數(shù)據(jù)執(zhí)行附加修改,如諸如向媒體數(shù)據(jù)添加水印。 復(fù)用器350可以包括量化算法模塊352、編碼器354、幀填充器356和MP4寫入器358。復(fù)用器350的所示配置僅為示例性的并且可以被修改成提供分立元件或者將多個(gè)元件組合成單個(gè)元件,并且作為硬件與軟件的組合來提供。可以提供量化算法模塊352為如下軟件程序和/或硬件設(shè)備,該軟件程序和/或硬件設(shè)備基于由幀預(yù)算算法模塊320決定的幀預(yù)算和解碼器314為解碼媒體幀而注釋的編碼參數(shù)確定新編碼參數(shù)。新編碼參數(shù)可以包括但不限于用于量化取回的媒體幀的一個(gè)或者多個(gè)量化參數(shù)、編碼器354的配置信息、壓縮算法和參數(shù)以及用于對(duì)解碼媒體幀編碼的其他新編碼息。在幀預(yù)算算法模塊320已經(jīng)確定用于輸出幀的幀預(yù)算之后,編碼器354可以對(duì)每個(gè)原始媒體幀可靠地編碼以最接近地滿足幀預(yù)算而不超過分配的字節(jié)。很多方法可以用來在媒體處理中實(shí)現(xiàn)字節(jié)減少。在這里討論的示例性實(shí)施例中,一個(gè)或者多個(gè)編碼參數(shù)(包括量化參數(shù))可以用來在逐幀基礎(chǔ)上控制字節(jié)減少。量化算法模塊352可以產(chǎn)生一個(gè)或者多個(gè)新量化(Q)參數(shù),這些參數(shù)可以導(dǎo)致在對(duì)應(yīng)幀預(yù)算以下的編碼幀。編碼器354然后可以用一個(gè)或者多個(gè)新量化參數(shù)對(duì)幀編碼。如果所得幀未滿足預(yù)算,則量化算法模塊352將進(jìn)一步調(diào)整一個(gè)或者多個(gè)新量化參數(shù)并且重新編碼直至幀在分配的預(yù)算內(nèi)相配。一旦幀在分配的預(yù)算內(nèi),就可以在向客戶端寫入之前填充它以與預(yù)算匹配。量化算法模塊352也可以考慮媒體幀的類型以生成量化參數(shù)(如諸如I幀或者P幀)。I幀可能是最不可壓縮的、但是可以無需其他媒體幀來解碼。P幀可以使用來自先前I幀的數(shù)據(jù)來解壓并且可以比I幀更可壓縮。雖然原始moov框可能未顯式指明哪些幀是I幀或者P幀,但是可以有可能估計(jì)圖片組(“G0P”)大小(在I幀之間的幀數(shù)量),因?yàn)镮幀通常大于P幀。對(duì)于具有固定GOP大小的幀,這可以導(dǎo)致原始moov框中的周期性??梢酝ㄟ^計(jì)算媒體幀大小的簡單自相關(guān)函數(shù)的最大值來測(cè)量GOP引起的周期性。這一計(jì)算是用來獲得更好性能(即更少填充)的精化(refinement)。預(yù)先知道這一 GOP大小可以輔助選擇輸出編碼參數(shù)(例如G0P)以與輸入媒體幀的編碼參數(shù)匹配。提供編碼器354為用于對(duì)每個(gè)解碼媒體幀編碼以滿足對(duì)應(yīng)幀預(yù)算而不超過分配的字節(jié)的軟件程序和/或硬件設(shè)備。編碼器354也可以取得兩個(gè)輸入(即幀預(yù)算算法模塊320的輸出和量化算法模塊352的輸出)。如果量化算法模塊352預(yù)測(cè)的編碼參數(shù)未產(chǎn)生在對(duì)應(yīng)幀預(yù)算內(nèi)相配的幀,則編碼器354可以調(diào)用量化算法模塊352以調(diào)整參數(shù)、然后對(duì)幀重新編碼。反饋循環(huán)可以存在于編碼器354與量化算法模塊352之間以在編碼器354超過幀預(yù)算并且必須對(duì)幀重新編碼時(shí)精化編碼參數(shù)。下文將進(jìn)一步詳細(xì)討論精化編碼參數(shù)。預(yù)算編碼可能需要編碼器354支持常用音頻/視頻編碼標(biāo)準(zhǔn)(例如H. 264和/或MPEG4編解碼器)。對(duì)于給定的幀預(yù)算,可以有多個(gè)可以按照預(yù)算或者在預(yù)算之下生成幀的編碼器配置和/或量化參數(shù)。由于幀預(yù)算固定,所以挑選使填充量最小的編碼器配置和/或量化參數(shù)是有益的。一個(gè)或者多個(gè)概念可以用來測(cè)量這一點(diǎn)。一個(gè)這樣的概念是文件利用率。示出了用于文件利用率的公式為
,填充字節(jié) -I -文件大小 文件利用率可以提供文件的多少用來傳送有用幀數(shù)據(jù)對(duì)填充。如果編碼器354在第一次嘗試時(shí)未滿足預(yù)算,則可能需要用不同編碼參數(shù)對(duì)幀重新編碼直至幀滿足預(yù)算。這一過程在與傳統(tǒng)編碼器過程相比時(shí)可能引入新開銷??梢酝ㄟ^計(jì)算每個(gè)輸出幀的平均編碼數(shù)量來測(cè)量處理開銷。
_編碼器迭代數(shù)量 升銷1 _ 輸出幀數(shù)畺
也可以其次通過計(jì)算每個(gè)輸出媒體的平均編碼數(shù)量來比較用于具有不同輸出幀速率的兩個(gè)文件的處理開銷
Itel4 編碼器迭代數(shù)量 升銷2 _輸出文件持續(xù)吋間
上述等式可以用來測(cè)量不同幀預(yù)算和量化預(yù)測(cè)算法的價(jià)值(merit)并且?guī)椭A(yù)測(cè)最優(yōu)幀預(yù)算和最優(yōu)編碼參數(shù)。提供幀填充器356為插入填充字節(jié)以使編碼幀與對(duì)應(yīng)幀運(yùn)算匹配的軟件程序和/或硬件設(shè)備??梢宰罱K向用戶設(shè)備202上的解碼器饋送填充字節(jié),并且這些填充字節(jié)是向解碼器的無操作指示??梢蕴峁㎝P4寫入器358為用于生成最終輸出MP4文件和/或向用戶設(shè)備202流式傳輸MP4文件的軟件程序和/或硬件設(shè)備。在設(shè)置階段期間,MP4寫入器358可以向輸出MP4文件寫入由moov框生成器330生成的輸出moov框。在處理期間,MP4寫入器358可以按照輸出moov框規(guī)定的確切順序?qū)懭刖幋a中貞。在一些實(shí)施例中,代理服務(wù)器208可以組合預(yù)算編碼與標(biāo)準(zhǔn)文件壓縮。通過預(yù)算編碼而插入的填充序列高度冗余,因而如這里先前描述的那樣,可以通過傳統(tǒng)文件壓縮方法壓縮源自預(yù)算編碼的輸出MP4文件。這可以減少跨越網(wǎng)絡(luò)發(fā)送的字節(jié)總數(shù)而附加處理開銷很小。利用適當(dāng)壓縮方法,可以在跨越數(shù)據(jù)網(wǎng)絡(luò)傳輸MP4文件時(shí)實(shí)質(zhì)上從它消除填充字節(jié)。傳統(tǒng)文件壓縮技術(shù)與預(yù)算編碼的這樣的組合可以用來減少預(yù)算編碼所致的處理開銷。在一些實(shí)施例中,如果已知將對(duì)輸出MP4文件使用壓縮技術(shù),則幀預(yù)算算法模塊320可以挑選大到足以使得編碼器354可以很少必須對(duì)幀重新編碼的幀大小(幀預(yù)算)。所得未壓縮MP4文件可以實(shí)際上大于原始MP4文件。壓縮可以消除所有填充,因而跨越網(wǎng)絡(luò)傳輸?shù)淖止?jié)數(shù)量可以與實(shí)際用于編碼幀的字節(jié)數(shù)量幾乎相同。在效果上,預(yù)算編碼可以使用在2009年3月31日提交的美國臨時(shí)專利申請(qǐng)?zhí)?1/165,224 “A FRAMEWORK FOR QUALITY-AWAREVIDEO OPTIMIZATION”中描述的壓縮技術(shù)。圖4是圖示了圖3的實(shí)施例中的示例性處理流程的功能圖。未脫離示例性實(shí)施例,可以變更示例性處理流程以刪除步驟、改變步驟順序或者包括附加步驟。在從數(shù)據(jù)網(wǎng)絡(luò)接收(302)原始MP4文件之后,BVP 300可以將MP4文件引向MP4讀取器312。MP4讀取器312可以從原始MP4文件提取引用每個(gè)原始幀的幀索引(例如原始moov框)并且解析原始moov框以取回關(guān)于原始媒體幀的信息,例如原始mdat框中的每個(gè)原始幀的幀大小、偏移和順序。MP4讀取器312可以向幀預(yù)算算法模塊320和moov框生成器330傳遞(402,404)提取的原始moov框和解析的信息。在一些實(shí)施例中,幀預(yù)算算法模塊320和moov框生成器330可以解析幀索引(例如原始moov框)以取回關(guān)于原始媒體幀的信息。 基于原始moov框和原始媒體幀的幀索引,幀預(yù)算算法模塊320可以估計(jì)用于無填充的已處理/編碼幀的幀預(yù)算(即幀大小)。當(dāng)估計(jì)幀預(yù)算時(shí),幀預(yù)算算法模塊320也可以考慮由解碼器314和/或編碼器354確定的一些參數(shù)。如果將使用壓縮技術(shù)并且可以去除填充,則幀預(yù)算算法模塊320可以產(chǎn)生更大幀預(yù)算以減少將幀編碼多于一次以在對(duì)應(yīng)幀預(yù)算內(nèi)相配的機(jī)會(huì)。幀預(yù)算算法模塊320可以分別向moov框生成器330和量化算法模塊352提供(406,408)估計(jì)的幀預(yù)算。在接收(404,406)原始moov框和估計(jì)的巾貞預(yù)算之后,moov框生成器330可以生成用于輸出MP4文件304的輸出巾貞索引(例如輸出moov框)。在一些實(shí)施例中,moov框生成器330也可以考慮編碼器354的配置以更新輸出moov框中的某些字段。輸出moov框可以包含用于輸出MP4文件內(nèi)的每個(gè)輸出巾貞的字節(jié)大小和字節(jié)偏移。輸出moov框中的信息可以對(duì)應(yīng)于原始moov框中的信息。在輸出MP4文件內(nèi)的每個(gè)輸出巾貞的順序可以保持與在原始MP4文件中相同。moov框生成器330可以向MP4寫入器358傳送(410)輸出moov框以向?qū)⑾蛴脩粼O(shè)備202流式傳輸?shù)妮敵鯩P4文件寫入輸出moov框。除了提取原始moov框之外,MP4讀取器312也可以從原始MP4文件的原始mdat框取回原始媒體幀用于進(jìn)一步處理。MP4讀取器312可以基于引用每個(gè)原始幀的幀索引(例如原始moov框)逐個(gè)取回原始媒體幀。MP4讀取器312可以向解碼器314傳遞(412)取回的原始幀。解碼器314可以對(duì)原始幀解碼、從解碼幀提取原始編碼參數(shù)并且向解碼幀上注釋編碼參數(shù)用于由以后部件使用。解碼器314可以向處理器340傳遞(414)解碼幀用于進(jìn)一步處理。此外,解碼器314可以向量化算法模塊352提供(416)原始編碼參數(shù)以預(yù)測(cè)用于在對(duì)應(yīng)幀預(yù)算內(nèi)生成編碼幀的新編碼參數(shù)。處理器340可以對(duì)媒體數(shù)據(jù)執(zhí)行附加通用處理。處理器340可以向編碼器354傳送(418)處理的幀。編碼器354可以基于它與量化算法模塊352的通信對(duì)處理的幀執(zhí)行編碼。量化算法模塊352可以設(shè)置用于對(duì)當(dāng)前處理的幀編碼的新編碼參數(shù)(包括新量化參數(shù))。設(shè)置新編碼參數(shù)可以基于由幀預(yù)算算法模塊320決定的對(duì)應(yīng)幀預(yù)算和由解碼器314提供的原始編碼參數(shù)。新編碼參數(shù)可以用來生成在幀預(yù)算內(nèi)相配的編碼幀。量化算法模塊352可以向編碼器354提供(420)新編碼參數(shù)。通過取得(420)新編碼參數(shù)作為輸入,編碼器354可以對(duì)當(dāng)前處理的幀編碼以生成在對(duì)應(yīng)幀預(yù)算內(nèi)相配的輸出幀。如果生成的幀未在對(duì)應(yīng)幀預(yù)算內(nèi)相配,則編碼器354可以調(diào)用(420)量化算法模塊352以調(diào)整編碼參數(shù)(包括新量化參數(shù))、然后對(duì)幀重新編碼。編碼器354可以向幀填充器356提供(422)編碼幀用于填充。編碼幀可以小于對(duì)應(yīng)幀預(yù)算。幀填充器356可以插入填充以使編碼幀與對(duì)應(yīng)幀預(yù)算匹配。在一些實(shí)施例中,如果在傳輸填充幀之前使用壓縮技術(shù)則可以消除填充。幀填充器356可以向MP4寫入器358提供(424)填充幀。在接收(410)輸出moov框之后,MP4寫入器358可以向輸出MP4文件寫入輸出moov框作為第一步驟。也在接收(424)填充幀之后,MP4寫入器358可以按照由輸出moov框規(guī) 定的確切順序?qū)懭胩畛鋷T贛P4寫入器358執(zhí)行任何處理之前,可以向用戶設(shè)備202提供或者流式傳輸(304)輸出MP4文件。圖5是代表示例性預(yù)算編碼方法的流程圖。未脫離示例性實(shí)施例,可以變更示例性處理流程以刪除步驟、改變步驟順序或者包括附加步驟。在接收(502)原始MP4文件之后,預(yù)算視頻處理器(“BVP”)從文件取回(504)幀索弓丨(例如原始moov框)。幀索引可以引用每個(gè)原始幀并且指定關(guān)于原始MP4文件中的原始幀的信息,諸如每個(gè)原始幀的幀大小和字節(jié)偏移?;趲饕珺VP通過估計(jì)輸出幀大小來確定(506)幀預(yù)算。每個(gè)輸出幀具有一個(gè)對(duì)應(yīng)幀預(yù)算。BVP基于幀預(yù)算和引用原始幀的幀索引來生成(508)輸出幀索引(例如輸出moov框)。BVP使用幀預(yù)算作為輸出幀索引中的輸出幀的幀大小,并且基于幀大小針對(duì)每個(gè)輸出幀計(jì)算字節(jié)偏移。然后BVP在輸出MP4文件中寫入(510)輸出幀索引(例如輸出moov框)。BVP基于原始MPV4文件中的原始幀的幀索引從原始MP4文件取回(512)原始幀。BVP也對(duì)原始幀解碼(514)并且獲得(514)解碼幀的原始編碼參數(shù)?;趯?duì)應(yīng)幀預(yù)算和原始編碼參數(shù),BVP確定(516)用于解碼幀的新編碼參數(shù)(包括量化參數(shù))。使用新編碼參數(shù),BVP對(duì)解碼幀編碼(518)。BVP確定(519)編碼幀是否在對(duì)應(yīng)幀預(yù)算內(nèi)相配。如果編碼幀不能在對(duì)應(yīng)幀預(yù)算內(nèi)相配,則BVP可以回到步驟516以調(diào)整(516)新編碼參數(shù)并且使用調(diào)整的編碼參數(shù)對(duì)幀重新編碼(518)直至編碼幀在對(duì)應(yīng)幀預(yù)算內(nèi)相配。如果編碼幀在對(duì)應(yīng)幀預(yù)算內(nèi)相配,那么如果編碼幀未滿足幀預(yù)算,則BVP可以填充(520)編碼幀以滿足對(duì)應(yīng)幀預(yù)算。填充向編碼幀添加額外無操作字節(jié)。額外無操作字節(jié)可以通過在傳輸之前使用的壓縮技術(shù)來消除或者由用戶設(shè)備上的解碼器省略。BVP在將向用戶設(shè)備流式傳輸?shù)妮敵鯩P4文件中寫入(522)填充幀。在一些實(shí)施例中,BVP可以在輸出幀索引(例如輸出moov框)和媒體幀被生成時(shí)向用戶設(shè)備流式傳輸它們。另外,BVP確定(524)是否更多原始幀存在于原始MP4文件中。如果是,則流程回到步驟512。如果不是,則BVP向用戶設(shè)備提供(526)或者流式傳輸輸出MP4文件。該方法然后結(jié)束(528)。圖6是具有示例性處理流程的框圖,該處理流程圖示了圖3的示例性BVP的示例性(簡化)編碼器354的一個(gè)實(shí)施例。編碼器354的所示配置僅為示例性的并且可以被修改成提供分立元件或者將多個(gè)元件組合成單個(gè)元件并且可以作為硬件與軟件的組合來提供。未脫離示例性實(shí)施例,可以變更示例性處理流程以刪除步驟、改變步驟順序或者包括附加步驟。圖6提供了對(duì)通用視頻編碼器的描述以圖示可以如何在編碼過程中使用量化算法模塊。參照?qǐng)D6,編碼器354可以包括運(yùn)動(dòng)估計(jì)模塊610、DCT模塊620、量化模塊630和VLC模塊640??梢蕴峁┻\(yùn)動(dòng)估計(jì)模塊610為用于確定如下運(yùn)動(dòng)矢量的軟件程序和/或硬件設(shè)備,這些運(yùn)動(dòng)矢量描述從一個(gè)2D圖像到另一 2D圖像和從視頻序列中的相鄰幀的變換。運(yùn)動(dòng)估計(jì)模塊610可以使用基于像素的方法、基于特征的方法和/或其他方法以發(fā)現(xiàn)運(yùn)動(dòng)矢量。在接收(418)解碼媒體幀作為輸入之后,運(yùn)動(dòng)估計(jì)模塊610可以發(fā)現(xiàn)運(yùn)動(dòng)矢量并且向DCT模塊620傳遞(602 )結(jié)果。
可以提供DCT模塊620為用于對(duì)DCT模塊620處理的媒體幀執(zhí)行有損數(shù)據(jù)壓縮的軟件程序和/或硬件設(shè)備?;谟蛇\(yùn)動(dòng)估計(jì)模塊610提供(602)的結(jié)果,DCT模塊620可以運(yùn)用離散余弦變換(“DCT”)方法將解碼幀中呈現(xiàn)的音頻和/或圖像信號(hào)轉(zhuǎn)換成基頻分量。可以在音頻和圖像的有損數(shù)據(jù)壓縮中使用DCT。DCT模塊620可以使用DCT以在不同頻率振蕩的余弦函數(shù)的加權(quán)和方面表達(dá)有限多個(gè)數(shù)據(jù)點(diǎn)(例如波形或者像素)的序列,其中可以丟棄小的高頻分量。DCT模塊620可以向量化模塊630提供(604)結(jié)果用于進(jìn)一步處理??梢蕴峁┝炕K630為用于量化由DCT模塊620生成的頻率分量的軟件程序和/或硬件設(shè)備。量化過程(有損數(shù)據(jù)壓縮技術(shù))涉及到將值范圍壓縮成單個(gè)量子值。通過減少媒體幀中的離散符號(hào)數(shù)量,幀變得更可壓縮。如先前討論的那樣,量化算法模塊352可以基于對(duì)應(yīng)幀預(yù)算、原始編碼參數(shù)和/或其他信息生成一個(gè)或者多個(gè)新量化參數(shù)。通過將新的一個(gè)或者多個(gè)量化參數(shù)應(yīng)用于量化過程,量化模塊630可以在幀被編碼之后將幀壓縮成在對(duì)應(yīng)幀預(yù)算內(nèi)相配。如果編碼幀不能在對(duì)應(yīng)幀預(yù)算內(nèi)相配,則量化模塊630可以調(diào)用量化算法模塊352以調(diào)整新量化參數(shù)。量化模塊630可以向VLC模塊640提供(606)量化幀用于編碼。可以提供VLC模塊640為運(yùn)用可變長度編碼(“VLC”)以將量化幀中呈現(xiàn)的音頻和/或視頻源符號(hào)映射成可變數(shù)量的位的軟件程序和/或硬件設(shè)備。VLC(無損數(shù)據(jù)壓縮技術(shù))可以允許以零誤差壓縮和解壓音頻和/或視頻源。VLC模塊640提供(422)編碼幀用于進(jìn)
一步處理。圖7是具有示例性處理流程的框圖,該處理流程圖示了圖3和圖4的示例性(簡化)BVP 300的另一實(shí)施例。先前討論過而這里不討論圖3和圖4的相同部件和步驟。簡化BVP300的所示配置僅為示例性的并且可以被修改成提供分立元件或者將多個(gè)元件組合成單個(gè)元件并且作為硬件與軟件的任何組合來提供。未脫離示例性實(shí)施例,可以變更示例性處理流程以刪除步驟、改變步驟順序或者包括附加步驟。針對(duì)編碼器354的要求可以是用于編碼幀的幀大小SizeOTT[n]小于或者等于用于輸入(原始或者原生)幀η的對(duì)應(yīng)預(yù)算SizeBudgrt[n]。編碼器354起初可以使用量化參數(shù)Q[η]并且如果初始輸出幀大于對(duì)應(yīng)預(yù)算SizeBudget[n]則可以用更高量化參數(shù)僅對(duì)幀重新編碼。編碼媒體幀的最終大小未知直至編碼器354完成量化和VLC步驟。出于這一原因,不可以預(yù)先已知而僅可以預(yù)測(cè)在用于給定幀的Q與幀大小之間的關(guān)系。量化預(yù)測(cè)器710可以用來預(yù)測(cè)量化參數(shù)并且連續(xù)表征輸入媒體幀412和輸出媒體幀422 二者的參數(shù)??梢蕴峁┝炕A(yù)測(cè)器710為軟件程序和/或硬件設(shè)備并且預(yù)測(cè)器710可以是量化算法模塊352的部分或者BVP 300的不同部件。量化預(yù)測(cè)器710可以由如下信息更新,該信息包括但不限于
SizeIN[n]:原始MP4文件中的當(dāng)前輸入媒體幀的幀大小??梢詮脑糓P4文件的原始moov框取回這一信息。
Qin[η]:用于當(dāng)前輸入媒體幀的一個(gè)或者多個(gè)舊量化參數(shù)。這一信息可以在處理當(dāng)前輸入媒體幀之前由BVP 300提供。
Sizeom[η-I]:先前編碼的媒體幀的幀大小。可以在存儲(chǔ)器或者其他存儲(chǔ)設(shè)備中存儲(chǔ)和從存儲(chǔ)器或者其他存儲(chǔ)設(shè)備取回這一信息。Qout[η-I]:用于先前編碼的媒體幀的一個(gè)或者多個(gè)量化參數(shù)??梢栽诖鎯?chǔ)器或者其他存儲(chǔ)設(shè)備中存儲(chǔ)和從存儲(chǔ)器或者其他存儲(chǔ)設(shè)備取回這一信息。量化預(yù)測(cè)器710在它的狀態(tài)由上述信息更新之后可以預(yù)測(cè)一個(gè)或者多個(gè)量化參數(shù)Q[n]以與對(duì)應(yīng)預(yù)算SizeBudget[n]最接近地匹配并且向編碼器354提供(702)量化參數(shù)。這可以是編碼過程中的重要步驟并且可以具有若干含義。如果Q太小,則它可能導(dǎo)致超過預(yù)算的幀大小。如果是這樣,則編碼器354可能需要按照更高量化對(duì)超過預(yù)算的幀重新編碼直至達(dá)到預(yù)算。如果Q太大,則它可能導(dǎo)致不必要的低質(zhì)量媒體幀并且隨后導(dǎo)致大量填充。量化預(yù)測(cè)器710可以預(yù)測(cè)用于幀的最優(yōu)量化參數(shù)以最小化或者避免這些問題。圖8是代表預(yù)測(cè)量化參數(shù)的示例性方法的流程圖。未脫離示例性實(shí)施例,可以變更示例性處理流程以刪除步驟、改變步驟順序或者包括附加步驟。在接收(802)原始MP4文件內(nèi)的當(dāng)前原始幀之后,BVP對(duì)幀解碼(804)并且提供用于幀的原始編碼參數(shù)。如這里先前討論的那樣,BVP獲得(804)用于當(dāng)前原始幀的幀大小和量化參數(shù)。BVP也獲得(806)可以存儲(chǔ)于存儲(chǔ)器或者其他存儲(chǔ)設(shè)備中的用于先前輸出幀的中貞大小和量化參數(shù)。在從先前輸出的幀獲得信息之后,BVP基于用于當(dāng)前原始幀和先前輸出的幀的幀大小和量化參數(shù)預(yù)測(cè)(810 )最優(yōu)量化參數(shù)。通過運(yùn)用預(yù)測(cè)的最優(yōu)量化參數(shù),BVP將解碼幀編碼(812)成在對(duì)應(yīng)幀預(yù)算內(nèi)相配并且提供(814)填充。該方法然后結(jié)束(816)。圖9是圖示了圖2的示例性系統(tǒng)的一個(gè)示例性實(shí)施例的框圖。為了簡便,圖9僅圖示用戶設(shè)備202、代理服務(wù)器208和媒體服務(wù)器212。在一些實(shí)施例中,代理服務(wù)器208除其他之外可以包括請(qǐng)求監(jiān)視器910、響應(yīng)監(jiān)視器920、BVP 300和尋找狀態(tài)高速緩存930。代理服務(wù)器208的所示配置僅為示例性的并且可以被修改成提供分立元件或者將多個(gè)元件組合成單個(gè)元件并且可以作為硬件與軟件的任何組合來提供。代理服務(wù)器208可以支持在預(yù)算編碼或者任何其他這樣的運(yùn)行中優(yōu)化技術(shù)的背景中的媒體尋找(即快進(jìn)或者退回至媒體數(shù)據(jù)中的隨機(jī)位置)。代理服務(wù)器208可以支持針對(duì)MP4流式傳輸媒體數(shù)據(jù)或者需要訪問完整媒體幀索引的任何其他媒體格式的媒體尋找。請(qǐng)求監(jiān)視器910可以是從用戶設(shè)備202接收或者截獲針對(duì)媒體數(shù)據(jù)的請(qǐng)求(諸如針對(duì)具體URL的HTTP請(qǐng)求)的軟件程序和/或硬件設(shè)備。請(qǐng)求監(jiān)視器210具有如下能力用于向媒體服務(wù)器212轉(zhuǎn)發(fā)針對(duì)原始媒體數(shù)據(jù)的請(qǐng)求、將針對(duì)優(yōu)化的媒體數(shù)據(jù)的尋找請(qǐng)求轉(zhuǎn)譯成針對(duì)原始媒體數(shù)據(jù)的新尋找請(qǐng)求并且向媒體服務(wù)器212轉(zhuǎn)發(fā)新尋找請(qǐng)求。響應(yīng)監(jiān)視器920可以是從媒體服務(wù)器212接收媒體數(shù)據(jù)的軟件程序或者硬件設(shè)備。在接收媒體數(shù)據(jù)之后,在一些實(shí)施例中,響應(yīng)監(jiān)視器920向BVP 300提供媒體數(shù)據(jù)用于優(yōu)化。如果接收的媒體數(shù)據(jù)對(duì)應(yīng)于針對(duì)優(yōu)化的媒體數(shù)據(jù)的具有字節(jié)范圍的尋找請(qǐng)求,則響應(yīng)監(jiān)視器920可以確認(rèn)媒體服務(wù)器212用媒體數(shù)據(jù)的被請(qǐng)求部分做出響應(yīng),并且然后向BVP300提供媒體用于優(yōu)化。BVP 300可以通過例如運(yùn)用如這里先前描述的預(yù)算編碼對(duì)接收的 媒體數(shù)據(jù)執(zhí)行優(yōu)化,并且向用戶設(shè)備202提供優(yōu)化的媒體數(shù)據(jù)。BVP 300可以位于代理服務(wù)器208內(nèi)、位于代理服務(wù)器208本地或者遠(yuǎn)離代理服務(wù)器208。尋找狀態(tài)高速緩存930可以是用于執(zhí)行媒體尋找的與流式傳輸媒體數(shù)據(jù)的優(yōu)化關(guān)聯(lián)的狀態(tài)信息記錄或者數(shù)據(jù)的結(jié)構(gòu)化匯集??梢詫?shù)據(jù)庫結(jié)構(gòu)組織為隊(duì)列集、結(jié)構(gòu)化文件、關(guān)系數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫或者任何其他適當(dāng)數(shù)據(jù)庫。計(jì)算機(jī)軟件(諸如數(shù)據(jù)庫管理系統(tǒng))可以用來管理尋找狀態(tài)高速緩存930并且提供對(duì)該高速緩存的訪問。尋找狀態(tài)高速緩存930可以存儲(chǔ)和提供原始媒體數(shù)據(jù)的幀索引(例如原始MP4文件的moov框)。尋找狀態(tài)高速緩存930也可以存儲(chǔ)和提供優(yōu)化的媒體數(shù)據(jù)的幀索引(例如優(yōu)化的MP4文件的moov框)以及用來處理會(huì)話的參數(shù)。另外,尋找狀態(tài)高速緩存930可以存儲(chǔ)原始流式傳輸媒體數(shù)據(jù)的一部分(例如與第一一秒視頻對(duì)應(yīng)的媒體數(shù)據(jù))。尋找狀態(tài)高速緩存930可以與代理服務(wù)器208的其他部件組合并且可以位于代理服務(wù)器208內(nèi)、位于代理服務(wù)器208本地或者遠(yuǎn)離代理服務(wù)器208。在一些實(shí)施例中,在用戶設(shè)備202的流式傳輸媒體應(yīng)用(例如媒體播放器)可以本地執(zhí)行媒體尋找。例如,如果所需媒體位置已經(jīng)被下載并且仍然本地可用,則媒體播放器可以將媒體回放跳轉(zhuǎn)至新位置而無需在下載原始媒體數(shù)據(jù)時(shí)的任何改變。否則,媒體播放器可以取消原始下載并且向媒體服務(wù)器212發(fā)出新媒體下載請(qǐng)求以在具體偏移而不是在開頭開始下載。媒體播放器然后可以開始下載始于所需偏移的新媒體段、緩沖幾秒媒體流并且然后在所需媒體位置開始回放。為了在用戶設(shè)備執(zhí)行媒體尋找,媒體播放器可以發(fā)送針對(duì)與原始請(qǐng)求的URL不同的URL的尋找請(qǐng)求。例如媒體播放器可以發(fā)送具有字節(jié)偏移的尋找請(qǐng)求(例如http://videoserver. com/myvideo offset=45)代替原始請(qǐng)求(例如 http://VideoServer, com/myvideo)。尋找請(qǐng)求告訴媒體服務(wù)器212在所需位置動(dòng)態(tài)生成和發(fā)送新的完整流式傳輸媒體數(shù)據(jù)。鑒于使用不同URL并且針對(duì)尋找請(qǐng)求而返回如與部分流式傳輸媒體數(shù)據(jù)對(duì)照的完整流傳輸媒體數(shù)據(jù)的事實(shí),代理服務(wù)器208可以將針對(duì)兩個(gè)媒體請(qǐng)求(即原始請(qǐng)求和尋找請(qǐng)求)的返回的流式傳輸媒體數(shù)據(jù)視為完全獨(dú)立的流式傳輸媒體數(shù)據(jù)。這一方式可以與上文描述的預(yù)算編碼一起操作而無需任何特殊處置。在一些實(shí)施例中,一種用于媒體播放器的替代方式是使用傳送協(xié)議(如諸如超文本傳送協(xié)議(HTTP))以促進(jìn)尋找請(qǐng)求。具體而言,媒體播放器可以發(fā)出對(duì)下載媒體數(shù)據(jù)的所需部分的HTTP范圍請(qǐng)求。例如為了直接跳轉(zhuǎn)至媒體數(shù)據(jù)的第5000001個(gè)字節(jié),媒體播放器可以發(fā)出針對(duì)與原始請(qǐng)求相同的URL的請(qǐng)求并且包括HTTP報(bào)頭“Range: 5000000-”。根據(jù)HTTP標(biāo)準(zhǔn)(RFC 2616),范圍請(qǐng)求可以返回媒體的所需類型。因此,媒體播放器可能需要將用戶的指定時(shí)間偏移(例如45秒)轉(zhuǎn)換成對(duì)應(yīng)字節(jié)偏移(例如5000000),并且發(fā)出針對(duì)始于第5000001個(gè)字節(jié)偏移的媒體的部分的范圍請(qǐng)求??梢葬槍?duì)媒體格式(諸如MP4文件)實(shí)施這種轉(zhuǎn)換,因?yàn)镸P4文件已經(jīng)包括媒體數(shù)據(jù)中的所有媒體幀的完整索引。然而這一替代方式可能未與實(shí)時(shí)運(yùn)行中修改過程(例如預(yù)算編碼)一起工作,因?yàn)槊襟w播放器請(qǐng)求的字節(jié)范圍可以對(duì)應(yīng)于處理(例如優(yōu)化)的媒體數(shù)據(jù)中的字節(jié)范圍而不是原始媒體數(shù)據(jù)中的字節(jié)范圍。這意味著代理服務(wù)器208可能不容易知道用戶真正地請(qǐng)求原始媒體數(shù)據(jù)的什么部分。并且因此,代理服務(wù)器208可能不容易知道需要從媒體服務(wù)器212下載、處理并且向用戶設(shè)備202發(fā)送原始媒體數(shù)據(jù)的什么部分。此外,引用媒體數(shù)據(jù)中的所有媒體幀的幀索引可能未響應(yīng)于范圍請(qǐng)求而可用,因?yàn)檫@樣的信息可以僅在媒體數(shù)據(jù)(諸如MP4文件)的開頭可用。代理服務(wù)器可能需要重新下載和重新處理(例如重新優(yōu)化)從開頭開始的原始媒體數(shù)據(jù)直至可以確定用戶請(qǐng)求處理(例如優(yōu)化)的媒體的哪個(gè)部分。然而在一些實(shí)施例中,代理服務(wù)器208可以通過采用比任一上述方式更高效的方法來處置在預(yù)算編碼的背景中的尋找請(qǐng)求。代理服務(wù)器208可以將針對(duì)處理的媒體數(shù)據(jù)的 具有范圍請(qǐng)求的尋找請(qǐng)求轉(zhuǎn)換成針對(duì)原始媒體數(shù)據(jù)的具有范圍請(qǐng)求的尋找請(qǐng)求,并且向媒體服務(wù)器212轉(zhuǎn)發(fā)針對(duì)原始媒體數(shù)據(jù)的具有范圍請(qǐng)求的尋找請(qǐng)求。在接收原始媒體數(shù)據(jù)的被請(qǐng)求范圍之后,代理服務(wù)器208可以處理(例如轉(zhuǎn)碼、壓縮和/或優(yōu)化)接收的原始媒體數(shù)據(jù)并且向用戶設(shè)備202提供處理的媒體數(shù)據(jù)。利用存儲(chǔ)于尋找狀態(tài)高速緩存930中的信息,代理服務(wù)器208可以設(shè)置BVP 300以處理范圍請(qǐng)求響應(yīng)。圖10是圖示了圖9的實(shí)施例中的示例性處理流程的功能圖。未脫離示例性實(shí)施例,可以變更示例性處理流程以刪除步驟、改變步驟順序或者包括附加步驟。在一些實(shí)施例中,每當(dāng)代理服務(wù)器208如這里先前描述的那樣可以選擇將預(yù)算編碼應(yīng)用于特定媒體數(shù)據(jù)時(shí)。代理服務(wù)器208可以僅在用戶設(shè)備202以后執(zhí)行尋找的情況下在尋找狀態(tài)高速緩存930中保存與媒體數(shù)據(jù)的處理關(guān)聯(lián)的一些狀態(tài)信息。保存于尋找狀態(tài)高速緩存930中的具體狀態(tài)信息可以包括但不限于原始媒體數(shù)據(jù)的幀索引(例如原始MP4文件的moov段)、處理/輸出的媒體數(shù)據(jù)的幀索引(例如輸出MP4文件的moov段)和原始媒體數(shù)據(jù)的部分(例如MP4文件的第一個(gè)一秒)。在一些實(shí)施例中,代理服務(wù)器208可以提供用于使尋找狀態(tài)高速緩存930中的保存的狀態(tài)信息老化的機(jī)制。例如代理服務(wù)器208可以在用戶登出之后、在用戶開始觀看另一視頻時(shí)和/或在某一(例如30)分鐘空閑時(shí)間之后等刪除通信會(huì)話(例如cookie)和保存的狀態(tài)信息。參照?qǐng)D10,在從用戶設(shè)備202接收(1002,1012)具有媒體數(shù)據(jù)字節(jié)范圍的尋找請(qǐng)求之后,請(qǐng)求監(jiān)視器910在尋找狀態(tài)高速緩存930中執(zhí)行查找(1004)以確定尋找請(qǐng)求是否與來自正在進(jìn)行的預(yù)算編碼會(huì)話的先前處理的媒體數(shù)據(jù)匹配。查找可以基于保存的狀態(tài)信息。如果未檢測(cè)到匹配,則請(qǐng)求監(jiān)視器910可以向媒體服務(wù)器212轉(zhuǎn)發(fā)(1006)尋找請(qǐng)求而無修改。在接收(1008)請(qǐng)求的媒體數(shù)據(jù)之后,響應(yīng)監(jiān)視器920向用戶設(shè)備202轉(zhuǎn)發(fā)(1010)接收的媒體數(shù)據(jù)而無修改。如果檢測(cè)到匹配,則請(qǐng)求監(jiān)視器910可以使用保存的狀態(tài)信息以將輸出媒體數(shù)據(jù)的被請(qǐng)求字節(jié)范圍轉(zhuǎn)譯成對(duì)應(yīng)原始媒體數(shù)據(jù)的字節(jié)范圍。例如請(qǐng)求監(jiān)視器910可以使用輸出媒體數(shù)據(jù)的moov段的保存副本中的關(guān)于輸出幀的幀大小和字節(jié)偏移的信息以將請(qǐng)求的字節(jié)范圍轉(zhuǎn)換成幀范圍,例如將字節(jié)5000000-6000000轉(zhuǎn)換成數(shù)據(jù)媒體數(shù)據(jù)中的幀500-600。請(qǐng)求監(jiān)視器910可以使用原始媒體數(shù)據(jù)的moov段的保存副本中的關(guān)于原始幀的幀大小和字節(jié)偏移的信息以將輸出媒體數(shù)據(jù)的幀范圍轉(zhuǎn)換成原始媒體數(shù)據(jù)中的字節(jié)范圍,例如將輸出媒體數(shù)據(jù)中的幀500-600轉(zhuǎn)換成原始媒體數(shù)據(jù)中的字節(jié)7000000-9000000。然后請(qǐng)求監(jiān)視器910可以使用原始媒體數(shù)據(jù)中的字節(jié)范圍而不是輸出媒體數(shù)據(jù)中的原始字節(jié)范圍來滿足來自用戶設(shè)備202的HTTP請(qǐng)求。請(qǐng)求監(jiān)視器910可以基于原始媒體數(shù)據(jù)中的字節(jié)范圍調(diào)整尋找請(qǐng)求并且向媒體服務(wù)器212轉(zhuǎn)發(fā)(1014)調(diào)整的尋找請(qǐng)求。在接收(1016)請(qǐng)求的媒體數(shù)據(jù)之后,響應(yīng)監(jiān)視器920可以確認(rèn)媒體服務(wù)器212用媒體數(shù)據(jù)的被請(qǐng)求部分做出響應(yīng)。確認(rèn)可以基于調(diào)整的尋找請(qǐng)求和/或在尋找狀態(tài)高速緩存930中的保存的狀態(tài)信息。在確認(rèn)之后,響應(yīng)監(jiān)視器920可以向預(yù)算視頻處理器(“BVP”)300傳送(1018)接收的媒體數(shù)據(jù)用于進(jìn)一步處理。BVP 300可以處理接收的媒體數(shù)據(jù)(例如轉(zhuǎn)碼、壓縮、優(yōu)化和/或向接收的媒體數(shù)據(jù)應(yīng)用任何其他實(shí)時(shí)運(yùn)行中修改過程)。在處理期間,BVP 300可以取回(1020)和使用原始媒體數(shù)據(jù)的保存部分以重新初始化它的視頻解碼器,就如同已經(jīng)從開頭處理全部媒體數(shù)據(jù) 一樣。BVP 300然后可以處理在調(diào)整的尋找請(qǐng)求中指示的所需位置開始的接收媒體數(shù)據(jù)。BVP 300可以取回(1020)和使用輸出媒體數(shù)據(jù)的moov段的保存副本而不必重復(fù)如這里先前描述的預(yù)算編碼算法的預(yù)測(cè)步驟。在處理之后,BVP 300可以向用戶設(shè)備202提供(1020)處理的媒體數(shù)據(jù)。在一些實(shí)施例中,這里描述的技術(shù)可以允許尋找狀態(tài)高速緩存930以分布式方式(諸如與多個(gè)代理服務(wù)器一起)操作。例如可以向代理服務(wù)器X分配來自用戶設(shè)備的針對(duì)媒體數(shù)據(jù)的原始請(qǐng)求,可以向代理服務(wù)器Y分配來自用戶設(shè)備的針對(duì)優(yōu)化的媒體數(shù)據(jù)的第一尋找請(qǐng)求,并且可以向代理服務(wù)器Z分配來自用戶設(shè)備的針對(duì)優(yōu)化的媒體數(shù)據(jù)的第二尋找請(qǐng)求。在接收原始請(qǐng)求之后,代理服務(wù)器X可以向媒體服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求、從媒體服務(wù)器接收原始媒體數(shù)據(jù)、優(yōu)化原始媒體數(shù)據(jù)并且向用戶設(shè)備提供優(yōu)化的媒體數(shù)據(jù)。代理服務(wù)器X也可以在尋找狀態(tài)高速緩存中保存狀態(tài)信息(例如原始媒體數(shù)據(jù)的幀索引、優(yōu)化的媒體數(shù)據(jù)的幀索引和原始媒體數(shù)據(jù)的部分)。在接收針對(duì)優(yōu)化的媒體數(shù)據(jù)的第一尋找請(qǐng)求時(shí),代理服務(wù)器Y可以基于第一尋找請(qǐng)求的URL、會(huì)話信息和/或其他信息將第一尋找請(qǐng)求重定向至代理服務(wù)器X。代理服務(wù)器X然后可以如上文描述的那樣基于尋找狀態(tài)高速緩存中的保存的狀態(tài)信息處理第一尋找請(qǐng)求。在接收針對(duì)優(yōu)化的媒體數(shù)據(jù)的第二尋找請(qǐng)求之后,代理服務(wù)器Z可以基于第二尋找請(qǐng)求的URL、會(huì)話信息和/或其他信息將第二尋找請(qǐng)求重定向至代理服務(wù)器X。代理服務(wù)器X然后可以如上文描述的那樣基于尋找狀態(tài)高速緩存中的保存的狀態(tài)信息來處理第二尋找請(qǐng)求。圖11是代表用于在預(yù)算編碼的背景中的媒體尋找的示例性方法的流程圖。雖然MP4流式傳輸媒體數(shù)據(jù)這里用來舉例說明在預(yù)算編碼的背景中的媒體尋找,但是可以對(duì)具有如下幀索引的任何其他媒體數(shù)據(jù)執(zhí)行媒體尋找,該幀索引指定用于每個(gè)媒體幀的字節(jié)大小和字節(jié)偏移。未脫離示例性實(shí)施例,可以變更示例性處理流程以刪除步驟、改變步驟順序或者包括附加步驟。
在從用戶設(shè)備接收(1102)針對(duì)MP4流式傳輸媒體數(shù)據(jù)字節(jié)范圍的尋找請(qǐng)求之后,代理服務(wù)器可以基于存儲(chǔ)于尋找狀態(tài)高速緩存中的信息確定(1104)尋找請(qǐng)求是否與先前處理的MP4流式傳輸數(shù)據(jù)匹配。尋找狀態(tài)高速緩存可以存儲(chǔ)與處理先前處理的MP4流式傳輸媒體數(shù)據(jù)關(guān)聯(lián)的狀態(tài)信息。狀態(tài)信息可以包括但不限于先前處理的MP4媒體數(shù)據(jù)的幀索引(例如處理的moov框)、對(duì)應(yīng)原始MP4流式傳輸媒體數(shù)據(jù)的幀索引(例如原始moov框)和原始MP4流式傳輸媒體數(shù)據(jù)的部分。確定(1104)可以基于狀態(tài)信息。如果未檢測(cè)到匹配,則代理服務(wù)器可以向媒體服務(wù)器轉(zhuǎn)發(fā)(1106)對(duì)下載MP4流式傳輸媒體數(shù)據(jù)的被請(qǐng)求范圍的尋找請(qǐng)求。該方法然后可以結(jié)束(1122)。如果匹配存在于尋找請(qǐng)求與查找的先前處理的MP4流式傳輸媒體數(shù)據(jù)之間,則代理服務(wù)器可以將在用戶設(shè)備的尋找請(qǐng)求轉(zhuǎn)換成在媒體服務(wù)器的尋找請(qǐng)求。更具體而言,代理服務(wù)器可以將字節(jié)范圍轉(zhuǎn)換(1108)為先前處理的MP4流式傳輸媒體數(shù)據(jù)的幀范圍。轉(zhuǎn)換可以基于先前處理的MP4流式傳輸媒體數(shù)據(jù)的存儲(chǔ)的已處理moov框中的關(guān)于先前處理的媒體幀的幀大小和字節(jié)偏移的信息。代理服務(wù)器然后可以將幀范圍轉(zhuǎn)換(1110)成對(duì)應(yīng)原始MP4流式傳輸媒體數(shù)據(jù)中的字節(jié)范圍。轉(zhuǎn)換可以基于對(duì)應(yīng)原始MP4流式傳輸媒體數(shù)據(jù) 的存儲(chǔ)的原始moov框中的關(guān)于對(duì)應(yīng)原始媒體幀的幀大小和字節(jié)偏移的信息?;趯?duì)應(yīng)原始MP4流式傳輸媒體數(shù)據(jù)中的字節(jié)范圍,代理服務(wù)器可以生成(1112 )如下新尋找請(qǐng)求,該請(qǐng)求具有對(duì)應(yīng)原始MP4流式傳輸媒體數(shù)據(jù)中的字節(jié)范圍。代理服務(wù)器然后可以向媒體服務(wù)器轉(zhuǎn)發(fā)(1114)對(duì)下載原始MP4流式傳輸媒體數(shù)據(jù)的被請(qǐng)求范圍的新尋找請(qǐng)求。在從媒體服務(wù)器接收(1116 )原始MP4流式傳輸媒體數(shù)據(jù)的被請(qǐng)求范圍之后,代理服務(wù)器可以基于存儲(chǔ)的已處理moov框處理(1118)原始MP4流式傳輸媒體數(shù)據(jù)的接收范圍。處理可以例如包括轉(zhuǎn)碼、壓縮、優(yōu)化和/或向接收的流式傳輸媒體數(shù)據(jù)應(yīng)用任何其他實(shí)時(shí)運(yùn)行中修改過程。在處理(1118 )之后,代理服務(wù)器可以向客戶端設(shè)備提供(1120 ) MP4流式傳輸媒體數(shù)據(jù)的已處理范圍。然后該方法可以結(jié)束(1122)。這里描述的方法可以實(shí)施為用于由數(shù)據(jù)處理裝置(例如可編程處理器、一個(gè)計(jì)算機(jī)或者多個(gè)計(jì)算機(jī))執(zhí)行或者用于控制數(shù)據(jù)處理裝置的操作的計(jì)算機(jī)程序產(chǎn)品(即在信息載體中(例如在機(jī)器可讀存儲(chǔ)設(shè)備中)有形地包括的計(jì)算機(jī)程序)??梢杂萌魏涡问降木幊陶Z言(包括編譯或者解譯語言)編寫計(jì)算機(jī)程序,并且可以用任何形式部署它(包括作為獨(dú)立程序或者作為適合在計(jì)算環(huán)境中使用的模塊、部件、子例程或者其他單元)。計(jì)算機(jī)程序可以被部署成在一個(gè)計(jì)算機(jī)上或者在處于一個(gè)地點(diǎn)或者跨多個(gè)地點(diǎn)分布的并且由通信網(wǎng)絡(luò)互連的多個(gè)計(jì)算機(jī)上執(zhí)行。這里公開的部分或者所有方法也可以由專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、復(fù)雜可編程邏輯器件(CPLD)、印刷電路板(PCB)、數(shù)字信號(hào)處理器(DSP)、可編程邏輯部件與可編程互連的組合、單個(gè)中央處理單元(CPU)芯片、在母板上組合的CPU芯片、通用計(jì)算機(jī)或者能夠執(zhí)行這里公開的預(yù)算編碼的設(shè)備或者模塊的任何其他組合實(shí)現(xiàn)。在先前說明書中,已經(jīng)參照具體示例性實(shí)施例描述了本發(fā)明。然而將清楚可以做出各種修改和改變而不脫離如在所附權(quán)利要求書中記載的本發(fā)明的更廣義精神和范圍。說明書和附圖因而將視為示例而不是限制。其他實(shí)施例可以根據(jù)對(duì)這里公開的本發(fā)明的說明書和實(shí)踐的考慮而變得為本領(lǐng)域技術(shù)人員所 清楚。
權(quán)利要求
1.ー種方法,包括 接收流式傳輸媒體數(shù)據(jù),所述流式傳輸媒體數(shù)據(jù)具有媒體幀和引用所述媒體幀的幀索弓I ; 通過基于所述幀索引估計(jì)輸出媒體幀的幀大小來分配用于所述輸出媒體幀的幀預(yù)算; 通過基于第一處理參數(shù)處理所述媒體幀并且如果分配的幀預(yù)算大于處理的媒體幀的幀大小則填充所述處理的媒體幀來實(shí)時(shí)生成所述輸出媒體幀;并且提供所述輸出媒體幀。
2.根據(jù)權(quán)利要求I所述的方法,還包括 提取幀索引,所述幀索引引用在所述流式傳輸媒體數(shù)據(jù)中呈現(xiàn)的媒體幀; 通過基于所述幀索引估計(jì)所述輸出媒體幀的幀大小來分配用于輸出媒體幀的幀預(yù)算,每個(gè)輸出媒體幀具有對(duì)應(yīng)幀預(yù)算;并且 在生成所述輸出媒體幀之前基于所述幀預(yù)算和引用所述媒體幀的所述幀索引來生成弓I用所述輸出媒體巾貞的輸出巾貞索弓I。
3.根據(jù)權(quán)利要求I所述的方法,還包括 基于所述幀索引從所述流式傳輸媒體數(shù)據(jù)取回所述媒體幀; 對(duì)所述媒體幀解碼;并且 基于解碼的媒體幀獲得所述第一處理參數(shù)。
4.根據(jù)權(quán)利要求3所述的方法,其中獲得所述第一處理參數(shù)包括獲得用于量化所述媒體幀的ー個(gè)或者多個(gè)第一量化參數(shù)。
5.根據(jù)權(quán)利要求I所述的方法,還包括 如果所述輸出幀未在所述幀預(yù)算內(nèi)相配,則基于所述幀預(yù)算和所述第一處理參數(shù)確定第二處理參數(shù);并且 通過基于所述第二處理參數(shù)重新處理所述媒體幀并且如果分配的幀預(yù)算大于處理的媒體幀的幀大小則填充所述處理的媒體幀來生成所述輸出媒體幀。
6.根據(jù)權(quán)利要求5所述的方法,其中確定所述第二處理參數(shù)包括確定用于量化所述媒體幀的ー個(gè)或者多個(gè)第二量化參數(shù)。
7.根據(jù)權(quán)利要求I所述的方法,還包括 在用戶設(shè)備接收所述輸出媒體幀之前通過壓縮所述輸出媒體幀來去除填充。
8.根據(jù)權(quán)利要求I所述的方法,還包括 與標(biāo)準(zhǔn)文件壓縮技術(shù)耦合以處理所述媒體幀,其中所述標(biāo)準(zhǔn)文件壓縮技術(shù)在提供所述輸出媒體幀之前去除所述填充;并且 基于對(duì)所述耦合的認(rèn)知來分配用于所述輸出媒體幀的所述幀預(yù)算,使得改進(jìn)所述處理的媒體幀在所述幀預(yù)算內(nèi)相配的機(jī)會(huì)。
9.ー種方法,包括 接收流式傳輸媒體數(shù)據(jù),所述流式傳輸媒體數(shù)據(jù)具有媒體幀和引用所述媒體幀的幀索弓I ; 通過基于所述幀索引估計(jì)輸出媒體幀的幀大小來分配用于所述輸出媒體幀的幀預(yù)算;預(yù)測(cè)最優(yōu)量化參數(shù);并且 基于所述最優(yōu)量化參數(shù)處理所述媒體幀,使得處理的媒體幀至少在所述幀預(yù)算內(nèi)相配。
10.ー種耦合成接收流式傳輸媒體數(shù)據(jù)的設(shè)備,所述流式傳輸媒體數(shù)據(jù)具有媒體幀和引用所述媒體幀的幀索引,所述設(shè)備包括 幀預(yù)算算法模塊,被配置成通過基于所述幀索引估計(jì)輸出媒體幀的幀大小來分配用于所述輸出媒體幀的幀預(yù)算; 處理算法模塊,被配置成基于所述幀預(yù)算和所述媒體幀確定第一處理參數(shù); 處理模塊,被配置成基于所述第一處理參數(shù)處理所述媒體幀; 幀填充器,被配置成填充所述處理的媒體幀以生成所述輸出媒體幀;以及 幀寫入器,被配置成提供所述輸出媒體幀。
11.根據(jù)權(quán)利要求10所述的設(shè)備,還包括 媒體讀取器,被配置成接收幀索引,所述幀索引引用在所述流式傳輸媒體數(shù)據(jù)中呈現(xiàn)的媒體幀。
12.根據(jù)權(quán)利要求11所述的設(shè)備,其中所述幀預(yù)算算法模塊還被配置成 通過基于引用所述媒體幀的所述幀索引估計(jì)所述輸出媒體幀的幀大小來分配用于輸出媒體幀的幀預(yù)算,每個(gè)輸出媒體幀具有對(duì)應(yīng)幀預(yù)算。
13.根據(jù)權(quán)利要求12所述的設(shè)備,還包括 輸出幀索引生成器,被配置成在生成所述輸出媒體幀之前基于所述幀預(yù)算和引用所述媒體幀的所述幀索引生成引用所述輸出媒體幀的輸出幀索引。
14.根據(jù)權(quán)利要求13所述的設(shè)備,所述輸出幀索引生成器還被配置成 基于編碼器的配置信息更新所述輸出幀索引。
15.根據(jù)權(quán)利要求10所述的設(shè)備,還包括 解碼器,被配置成對(duì)所述媒體幀解碼并且從解碼的媒體幀獲得信息以促進(jìn)所述處理算法模塊確定所述第一處理參數(shù)。
16.根據(jù)權(quán)利要求10所述的設(shè)備,所述處理算法模塊還被配置成 確定用于量化所述媒體幀的ー個(gè)或者多個(gè)第一量化參數(shù)。
17.根據(jù)權(quán)利要求10所述的設(shè)備,所述處理算法模塊還被配置成 如果輸出幀未在所述幀預(yù)算內(nèi)相配,則基于所述幀預(yù)算和所述第一處理參數(shù)確定第二處理參數(shù)。
18.根據(jù)權(quán)利要求17所述的設(shè)備,所述處理算法模塊還被配置成 確定用于量化所述媒體幀的ー個(gè)或者多個(gè)第二量化參數(shù)。
19.根據(jù)權(quán)利要求17所述的設(shè)備,所述處理模塊還被配置成 基于所述第二處理參數(shù)重新處理所述媒體幀,使得所述處理的媒體幀在所述幀預(yù)算內(nèi)相配。
20.ー種耦合成接收流式傳輸媒體數(shù)據(jù)的設(shè)備,所述流式傳輸媒體數(shù)據(jù)具有媒體幀和引用所述媒體幀的幀索引,所述設(shè)備包括 幀預(yù)算算法模塊,被配置成通過基于所述幀索引估計(jì)輸出媒體幀的幀大小來分配用于所述輸出媒體幀的幀預(yù)算;量化預(yù)測(cè)器,被配置成預(yù)測(cè)最優(yōu)量化參數(shù);以及 處理模塊,被配置成基于所述最優(yōu)量化參數(shù)處理所述媒體幀,使得處理的媒體幀在所述中貞預(yù)算內(nèi)接近地相配。
21.一種存儲(chǔ)指令的計(jì)算機(jī)可讀介質(zhì),所述指令在執(zhí)行時(shí)使計(jì)算機(jī)執(zhí)行方法,所述方法包括 接收流式傳輸媒體數(shù)據(jù),所述流式傳輸媒體數(shù)據(jù)具有媒體幀和引用所述媒體幀的幀索弓I ; 通過基于所述幀索引估計(jì)輸出媒體幀的幀大小來分配用于所述輸出媒體幀的幀預(yù)算; 通過基于第一處理參數(shù)處理所述媒體幀并且如果分配的幀預(yù)算大于處理的媒體幀的幀大小則填充所述處理的媒體幀來實(shí)時(shí)生成所述輸出媒體幀;并且提供所述輸出媒體幀。
22.—種存儲(chǔ)指令的計(jì)算機(jī)可讀介質(zhì),所述指令在執(zhí)行時(shí)使計(jì)算機(jī)執(zhí)行方法,所述方法包括 接收流式傳輸媒體數(shù)據(jù),所述流式傳輸媒體數(shù)據(jù)具有媒體幀和引用所述媒體幀的幀索弓I ; 通過基于所述幀索引估計(jì)輸出媒體幀的幀大小來分配用于所述輸出媒體幀的幀預(yù)算; 預(yù)測(cè)最優(yōu)量化參數(shù);并且 基于所述最優(yōu)量化參數(shù)處理所述媒體幀,使得處理的媒體幀在所述幀預(yù)算內(nèi)接近地相配。
23.—種方法,包括 接收針對(duì)處理的流式傳輸媒體數(shù)據(jù)的第一字節(jié)范圍的第一尋找請(qǐng)求; 將所述處理的流式傳輸媒體數(shù)據(jù)的所述第一字節(jié)范圍轉(zhuǎn)換成原始流式傳輸媒體數(shù)據(jù)的第二字節(jié)范圍,其中所述處理的流式傳輸媒體數(shù)據(jù)是所述原始流式傳輸媒體數(shù)據(jù)的已處理版本; 獲取與所述原始流式傳輸媒體數(shù)據(jù)的所述第二字節(jié)范圍對(duì)應(yīng)的媒體數(shù)據(jù); 基于處理的流式傳輸媒體數(shù)據(jù)的性質(zhì)處理獲取的媒體數(shù)據(jù);并且 提供處理的獲取的媒體數(shù)據(jù)。
24.根據(jù)權(quán)利要求23所述的方法,還包括 接收所述第一尋找請(qǐng)求而不指定所述第一尋找請(qǐng)求是否對(duì)應(yīng)于處理的流式傳輸媒體數(shù)據(jù); 基于在高速緩存中提供的處理的幀索引確定所述第一尋找請(qǐng)求是否與所述處理的流式傳輸媒體數(shù)據(jù)匹配,其中所述處理的幀索引引用所述處理的流式傳輸媒體數(shù)據(jù)的媒體幀;并且 如果所述第一尋找請(qǐng)求不與所述處理的流式傳輸媒體數(shù)據(jù)匹配,則向媒體服務(wù)器轉(zhuǎn)發(fā)所述第一尋找請(qǐng)求。
25.根據(jù)權(quán)利要求23所述的方法,將所述處理的流式傳輸媒體數(shù)據(jù)的所述第一字節(jié)范圍轉(zhuǎn)換成原始流式傳輸媒體數(shù)據(jù)的第二字節(jié)范圍還包括基于在高速緩存中提供的處理的幀索引將所述第一字節(jié)范圍轉(zhuǎn)換成所述處理的流式傳輸媒體數(shù)據(jù)的幀范圍,其中所述處理的幀索引弓I用所述處理的流式傳輸媒體數(shù)據(jù)的媒體幀;并且 基于在所述高速緩存中提供的原始幀索引將幀范圍轉(zhuǎn)換成所述原始流式傳輸媒體數(shù)據(jù)的字節(jié)范圍,其中所述原始幀索引引用所述原始流式傳輸媒體數(shù)據(jù)的媒體幀。
26.根據(jù)權(quán)利要求23所述的方法,其中處理所述獲取的媒體數(shù)據(jù)還包括 從高速緩存獲得處理的幀索引,其中所述處理的幀索引提供用于所述處理的流式傳輸媒體數(shù)據(jù)中的每個(gè)媒體幀的分配的幀大??;并且 通過基于第一處理參數(shù)處理所述獲取的媒體數(shù)據(jù)的每個(gè)媒體幀并且如果分配的幀大小大于所述處理的媒體幀的幀大小則填充所述處理的媒體幀來實(shí)時(shí)生成處理的獲取的媒體數(shù)據(jù)。
27.ー種代理服務(wù)器,耦合成接收針對(duì)處理的流式傳輸媒體數(shù)據(jù)的第一字節(jié)范圍的第一尋找請(qǐng)求,所述代理服務(wù)器包括 請(qǐng)求監(jiān)視器,被配置成將處理的流式傳輸媒體數(shù)據(jù)的所述第一字節(jié)范圍轉(zhuǎn)換成原始流式傳輸媒體數(shù)據(jù)的第二字節(jié)范圍,并且獲取與所述原始流式傳輸媒體數(shù)據(jù)的所述第二字節(jié)范圍對(duì)應(yīng)的媒體數(shù)據(jù),其中所述處理的流式傳輸媒體數(shù)據(jù)是所述原始流式傳輸媒體數(shù)據(jù)的已處理版本;并且 視頻處理器,被配置成基于所述處理的流式傳輸媒體數(shù)據(jù)的性質(zhì)處理獲取的媒體數(shù)據(jù)并且提供處理的獲取的媒體數(shù)據(jù)。
28.根據(jù)權(quán)利要求27所述的代理服務(wù)器,其中所述請(qǐng)求監(jiān)視器還被配置成 接收所述第一尋找請(qǐng)求而不指定所述第一尋找請(qǐng)求是否對(duì)應(yīng)于所述處理的流式傳輸媒體數(shù)據(jù); 基于在高速緩存中提供的處理的幀索引確定所述第一尋找請(qǐng)求是否與所述處理的流式傳輸媒體數(shù)據(jù)匹配,其中所述處理的幀索引引用所述處理的流式傳輸媒體數(shù)據(jù)的媒體幀;并且 如果所述第一尋找請(qǐng)求不與所述處理的流式傳輸媒體數(shù)據(jù)匹配,則向媒體服務(wù)器轉(zhuǎn)發(fā)所述第一尋找請(qǐng)求。
29.根據(jù)權(quán)利要求27所述的代理服務(wù)器,其中所述請(qǐng)求監(jiān)視器還被配置成 基于在高速緩存中提供的處理的幀索引將所述第一字節(jié)范圍轉(zhuǎn)換成所述處理的流式傳輸媒體數(shù)據(jù)的幀范圍,其中處理幀索弓I引用所述處理的流式傳輸媒體數(shù)據(jù)的媒體幀;并且 基于在所述高速緩存中提供的原始幀索引將幀范圍轉(zhuǎn)換成所述原始流式傳輸媒體數(shù)據(jù)的字節(jié)范圍,其中所述原始幀索引引用所述原始流式傳輸媒體數(shù)據(jù)的媒體幀。
30.根據(jù)權(quán)利要求27所述的代理服務(wù)器,其中所述視頻處理器還被配置成 從高速緩存獲得處理的幀索引,其中所述處理的幀索引提供用于所述處理的流式傳輸媒體數(shù)據(jù)中的每個(gè)媒體幀的分配的幀大??;并且 通過基于第一處理參數(shù)處理獲取的媒體數(shù)據(jù)的每個(gè)媒體幀并且如果所述分配的幀大小大于所述處理的媒體幀的幀大小則填充所述處理的媒體幀來實(shí)時(shí)生成處理的獲取的媒體數(shù)據(jù)。
31.一種存儲(chǔ)指令的計(jì)算機(jī)可讀介質(zhì),所述指令在執(zhí)行時(shí)使計(jì)算機(jī)執(zhí)行方法,所述方法包括 接收針對(duì)處理的流式傳輸媒體數(shù)據(jù)的第一字節(jié)范圍的第一尋找請(qǐng)求; 將所述處理的流式傳輸媒體數(shù)據(jù)的所述第一字節(jié)范圍轉(zhuǎn)換成原始流式傳輸媒體數(shù)據(jù)的第二字節(jié)范圍,其中所述處理的流式傳輸媒體數(shù)據(jù)是所述原始流式傳輸媒體數(shù)據(jù)的已處理版本; 獲取與所述原始流式傳輸媒體數(shù)據(jù)的所述第二字節(jié)范圍對(duì)應(yīng)的媒體數(shù)據(jù); 基于所述處理的流式傳輸媒體數(shù)據(jù)的性質(zhì)處理獲取的媒體數(shù)據(jù);并且 提供處理的獲取的媒體數(shù)據(jù)。
全文摘要
一種方法包括接收流式傳輸媒體數(shù)據(jù),流式傳輸媒體數(shù)據(jù)具有媒體幀和引用媒體幀的幀索引;通過基于幀索引估計(jì)輸出媒體幀的幀大小來分配用于輸出媒體幀的幀預(yù)算;通過基于第一處理參數(shù)處理媒體幀并且如果分配的幀預(yù)算大于處理的媒體幀的幀大小則填充處理的媒體幀來實(shí)時(shí)生成輸出媒體幀;并且提供輸出媒體幀。
文檔編號(hào)H04N7/50GK102783147SQ201080057336
公開日2012年11月14日 申請(qǐng)日期2010年10月14日 優(yōu)先權(quán)日2009年10月15日
發(fā)明者A.彭納, F.庫普曼, J.塞斯特里奇, J.泰德曼, K.阿亞, M.梅爾尼克, R.基德 申請(qǐng)人:拜特移動(dòng)網(wǎng)絡(luò)公司