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

用于數(shù)據(jù)流式傳輸系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)的制作方法

文檔序號(hào):7891469閱讀:767來源:國知局
專利名稱:用于數(shù)據(jù)流式傳輸系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)適于存儲(chǔ)在IP(互聯(lián)網(wǎng)協(xié)議)網(wǎng)絡(luò)上流式傳輸?shù)囊纛l和視頻內(nèi)容。本發(fā)明尤其適用于可用比特率固有地會(huì)因網(wǎng)絡(luò)物理特性和/或與其它業(yè)務(wù)的爭用而變化的系統(tǒng)。例如,本發(fā)明適用于通過GPRS(通用分組無線業(yè)務(wù))或者3G網(wǎng)絡(luò)流式傳輸?shù)揭苿?dòng)手持終端(例如PDA(個(gè)人數(shù)字助理))的多媒體。
背景技術(shù)
諸如電纜調(diào)制解調(diào)器和ADSL(非對(duì)稱數(shù)字用戶線)調(diào)制解調(diào)器的新的數(shù)據(jù)網(wǎng)絡(luò)接入技術(shù)以及壓縮技術(shù)的發(fā)展和免費(fèi)客戶端軟件驅(qū)動(dòng)了因特網(wǎng)上視頻流式傳輸?shù)脑鲩L。該技術(shù)的使用正在以極快的速度增長,幾乎每六個(gè)月翻一番,據(jù)估計(jì)在2000年的使用量為5億個(gè)流。然而,由于擁塞和較大的啟動(dòng)延遲,使用戶對(duì)于因特網(wǎng)流式傳輸仍存在誤解。
目前的IP網(wǎng)絡(luò)并不能很好地適合于視頻內(nèi)容的流式傳輸,因?yàn)檫@些IP網(wǎng)絡(luò)存在丟包(packet loss)、延遲和抖動(dòng)(延遲改變),以及變化的最大吞吐量,所有這些都破壞了最終用戶對(duì)多媒體內(nèi)容的享受。
實(shí)時(shí)視頻應(yīng)用需要所有分組及時(shí)到達(dá)。如果分組丟失,則會(huì)破壞編碼器和解碼器之間的同步,并且差錯(cuò)會(huì)在一段時(shí)間中在所顯示的視頻中蔓延。如果分組過度延遲,則對(duì)于必須實(shí)時(shí)工作的解碼器,這些分組會(huì)變得無用,并被當(dāng)作丟失。在預(yù)測(cè)視頻編碼系統(tǒng)(如H.263)中,丟包及其對(duì)于所再現(xiàn)的視頻的視覺影響尤其顯著。通過在視頻流中引入差錯(cuò)保護(hù),可以減小但不能消除丟包的影響。研究表明這種復(fù)原技術(shù)只可以最小化而不是消除丟包的影響。
在持續(xù)丟包(其表示吞吐量的長期降低)的情況下,需要流式傳輸系統(tǒng)能夠降低其長期需求。這通常意味著必須降低流式傳輸媒體的比特率。
可以對(duì)諸如H.263和MPEG-4的標(biāo)準(zhǔn)壓縮技術(shù)進(jìn)行管理以提供一種能夠動(dòng)態(tài)地改變其編碼率的多媒體源。本文將具有這種屬性的視頻源描述為彈性源,即,能夠適應(yīng)網(wǎng)絡(luò)吞吐量的長期變化的視頻源。這通常是通過提供連續(xù)自適應(yīng)視頻比特率來實(shí)現(xiàn)。這是可能的,因?yàn)榕c音頻編解碼器不同,視頻壓縮標(biāo)準(zhǔn)并沒有指定絕對(duì)的工作比特率。
可以設(shè)計(jì)視頻流式傳輸系統(tǒng)以提供具有變化比特率的編碼流,其中比特率響應(yīng)于用戶端的反饋而即時(shí)地適應(yīng)可用網(wǎng)絡(luò)帶寬。通過控制傳輸速率,使得其在丟包的情況下快速降低并且在其它時(shí)候緩慢增加,可使該系統(tǒng)能夠做到網(wǎng)絡(luò)友好。
然而,有兩個(gè)原因使這個(gè)方案不可實(shí)現(xiàn)。第一,實(shí)時(shí)視頻編碼通常需要大量的處理能力,這樣就使該方案不能支持很多用戶。第二,最終用戶對(duì)整體質(zhì)量的感覺將會(huì)因瞬時(shí)質(zhì)量的快速變化而受到負(fù)面影響。
對(duì)于單向流式傳輸應(yīng)用,發(fā)送端和接收端之間的延遲只在啟動(dòng)的時(shí)候可感知。因此一般技術(shù)以延遲為代價(jià)來彌補(bǔ)丟包或者抖動(dòng)。倘若視頻流的平均吞吐量需求符合平均可用帶寬,那么可以將接收端緩沖區(qū)的大小設(shè)計(jì)為涵蓋所預(yù)期的延遲變化。
市場(chǎng)上的主導(dǎo)流式傳輸系統(tǒng)被認(rèn)為是使用了有效的客戶端緩沖來降低因特網(wǎng)上可能遇到的抖動(dòng)的影響。雖然這是有幫助的,但當(dāng)填充緩沖區(qū)時(shí)也會(huì)產(chǎn)生較大的啟動(dòng)延遲,通常為5到30秒之間。這些系統(tǒng)還包括使客戶端適應(yīng)可用帶寬的變化的技術(shù)。盡管這些技術(shù)的細(xì)節(jié)并不是公開的,但可猜想這些技術(shù)都在單個(gè)文件中使用了多數(shù)據(jù)率編碼(SNR可伸縮性),并采用智能傳輸技術(shù)(例如視頻圖像速率的服務(wù)器側(cè)降低)以保持音頻的質(zhì)量。這些大量的緩沖可以令人信服地允許絕大部分分組重發(fā),雖然重傳本身會(huì)遇到相同的網(wǎng)絡(luò)特性。是否重發(fā)丟失數(shù)據(jù)的決定取決于這個(gè)因素和其它幾個(gè)因素。這些技術(shù)一般只應(yīng)用于單播傳輸。一般通過前向糾錯(cuò)或者基于接收端的可伸縮性來優(yōu)化多播傳輸系統(tǒng)的性能,例如可參見RLM and RLC.S.McCanne,“Receiver driven layered multicast”,Proceedings of SIGCOMM 96,Stanford.CA.August 1996以及L.Vicisano,L.rizzo and J.Crowcroft,’TCP-like congestion control for layered multicastdata transfer’,Infocom’98。
上述緩沖區(qū)的使用使系統(tǒng)能夠克服丟包和抖動(dòng)。然而它并不能克服網(wǎng)絡(luò)上無足夠可用比特率的問題。如果視頻資料的長期平均比特率需求超過了網(wǎng)絡(luò)上的可用平均比特率,那么客戶端緩沖區(qū)將最終耗盡,并且視頻的播放將會(huì)停止直到緩沖區(qū)被重新填滿。網(wǎng)絡(luò)可用比特率和對(duì)內(nèi)容進(jìn)行編碼的速率之間的不匹配程度決定了暫停以重新填充緩沖區(qū)的頻度。
如上所述,大部分視頻壓縮算法,包括H.263和MPEG-4,都可以提供連續(xù)的自適應(yīng)比特率。然而一旦對(duì)視頻和聲音進(jìn)行了壓縮,它們就變得沒有彈性,并且需要在編碼比特率下傳輸。
雖然網(wǎng)絡(luò)抖動(dòng)和網(wǎng)絡(luò)吞吐量的短期變化可以通過操作接收端緩沖區(qū)來吸收,但是只有在能夠吸收網(wǎng)絡(luò)吞吐量的長期變化時(shí),才能夠?qū)崿F(xiàn)彈性。
分層編碼是一種公知的用于創(chuàng)建彈性視頻源的技術(shù)。分層視頻壓縮使用層級(jí)編碼方案,其中通過接收順序地添加在基本表示(representation)上的多個(gè)較高層并進(jìn)行解碼,以此來提高接收端的質(zhì)量。無論何時(shí),各個(gè)客戶端都可以根據(jù)其與視頻源的當(dāng)前網(wǎng)絡(luò)連接性來接收任何數(shù)量的這些視頻層。在最簡單的實(shí)現(xiàn)方案中,提供了在多播情況下有利的對(duì)于網(wǎng)絡(luò)狀況的粗粒度自適應(yīng)。已經(jīng)將分層視頻壓縮與用戶端緩沖相結(jié)合來增強(qiáng)對(duì)于網(wǎng)絡(luò)狀況的精細(xì)粒度自適應(yīng)。然而,分層編碼技術(shù)的效率比較低,并且其一般需要在客戶端進(jìn)行更多處理,對(duì)于移動(dòng)設(shè)備(其處理容量可能較低)這將導(dǎo)致一些問題。
代碼轉(zhuǎn)換(transcoding)是另外一種公知的用于創(chuàng)建彈性視頻源的技術(shù)。已經(jīng)表明可以將視頻代碼轉(zhuǎn)換設(shè)計(jì)為具有比視頻編碼低得多的計(jì)算復(fù)雜度。然而,并不能由此忽略計(jì)算復(fù)雜度,所以并不能產(chǎn)生可伸縮的視頻流式傳輸結(jié)構(gòu)。

發(fā)明內(nèi)容
依據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)流式傳輸系統(tǒng)的數(shù)據(jù)源,該數(shù)據(jù)源包括多個(gè)編碼數(shù)據(jù)流,該多個(gè)數(shù)據(jù)流中的每一個(gè)都是所述數(shù)據(jù)源中的數(shù)據(jù)的獨(dú)立表示,并以不同于所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流的分辨率編碼,所述數(shù)據(jù)結(jié)構(gòu)包括報(bào)頭、用于各個(gè)編碼數(shù)據(jù)流的流數(shù)據(jù)結(jié)構(gòu)、以及編碼數(shù)據(jù)流的一個(gè)或多個(gè)分組,所述報(bào)頭與所述流數(shù)據(jù)結(jié)構(gòu)中的一個(gè)相鏈接,其中各個(gè)流數(shù)據(jù)結(jié)構(gòu)包括報(bào)頭、與下一個(gè)流數(shù)據(jù)結(jié)構(gòu)的鏈接以及與所述編碼數(shù)據(jù)流的第一個(gè)分組的鏈接。
下面詳細(xì)說明使用這種數(shù)據(jù)結(jié)構(gòu)的系統(tǒng)和方法。數(shù)據(jù)結(jié)構(gòu)的復(fù)雜度取決于可能很多的相互交織的多個(gè)流中的分組,以及支持切換和恢復(fù)的需要。需要通過指針來從一個(gè)分組導(dǎo)向另一分組,因?yàn)樵诹髦羞B續(xù)的分組通常在文件中并不是連續(xù)存儲(chǔ)的。切換和恢復(fù)分組的寫入操作需要被記錄的源和目的分組的精確細(xì)節(jié)?;胤胚^程中流間的切換首先需要識(shí)別下一個(gè)可用切換分組,隨后是“from”流中的剩余分組的回放,切換分組的回放,然后是從適當(dāng)?shù)狞c(diǎn)開始回放“to”流中的分組。此外,優(yōu)選地,當(dāng)進(jìn)行流間切換時(shí)沒有明顯的延遲。
優(yōu)選地,所述多個(gè)編碼數(shù)據(jù)流是視頻數(shù)據(jù)流。也可將音頻數(shù)據(jù)編碼為數(shù)據(jù)流。
用于視頻和音頻數(shù)據(jù)流的流數(shù)據(jù)結(jié)構(gòu)可以包括各個(gè)數(shù)據(jù)流的比特率編碼數(shù)據(jù)。
所述數(shù)據(jù)源還可以包括用于在一個(gè)視頻數(shù)據(jù)流和另一個(gè)視頻數(shù)據(jù)流之間進(jìn)行切換的定義了多個(gè)切換點(diǎn)的切換流,切換數(shù)據(jù)流的數(shù)據(jù)流結(jié)構(gòu)包括關(guān)于可以從哪些視頻流和分組進(jìn)行切換以及可以切換到哪些視頻流和分組的數(shù)據(jù)。
所述數(shù)據(jù)結(jié)構(gòu)的報(bào)頭可以包括與最后一個(gè)流數(shù)據(jù)結(jié)構(gòu)的鏈接。流數(shù)據(jù)結(jié)構(gòu)的報(bào)頭可以包括與編碼數(shù)據(jù)流的最后一個(gè)分組的鏈接。
本發(fā)明允許根據(jù)網(wǎng)絡(luò)狀況的變化來伸縮壓縮視頻的傳輸比特率。
在上述系統(tǒng)中,不必以一個(gè)固定比特率傳輸所產(chǎn)生的音頻視頻流,由此所述數(shù)據(jù)結(jié)構(gòu)必須能夠支持網(wǎng)絡(luò)瞬間支持的任何速率下的傳輸。
已經(jīng)表明該系統(tǒng)和數(shù)據(jù)結(jié)構(gòu)在GPRS網(wǎng)絡(luò)上運(yùn)行良好,其極好地利用了可用網(wǎng)絡(luò)帶寬,提供了令人滿意的多媒體質(zhì)量。
該系統(tǒng)和數(shù)據(jù)結(jié)構(gòu)被設(shè)計(jì)為克服IP網(wǎng)絡(luò)(尤其是移動(dòng)IP網(wǎng)絡(luò))的特性,以向用戶提供具有最小起始延遲的質(zhì)量一致的多媒體。


下面參考附圖詳細(xì)說明本發(fā)明的示例,圖中圖1是使用本發(fā)明的音頻-視頻數(shù)據(jù)流式傳輸系統(tǒng)的示意圖;圖2是圖1的系統(tǒng)中所使用的視頻編碼層級(jí)的示意圖;圖3是能夠?qū)崿F(xiàn)視頻流之間的無失配切換的視頻編碼結(jié)構(gòu)的示意圖;圖4是適用于圖1的系統(tǒng)的客戶端-服務(wù)器結(jié)構(gòu)的示意圖;圖5a和圖5b分別示出了標(biāo)準(zhǔn)TKPT傳送分組結(jié)構(gòu)和該結(jié)構(gòu)為圖1的系統(tǒng)所進(jìn)行的變型結(jié)構(gòu);和圖6a-6c是示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的包括音頻-視頻數(shù)據(jù)流的數(shù)據(jù)結(jié)構(gòu)的各個(gè)方面的示意圖。
具體實(shí)施例方式
圖1是使用本發(fā)明的一個(gè)實(shí)施例的音頻-視頻數(shù)據(jù)流式傳輸系統(tǒng)的示意圖。
服務(wù)器10直接從編碼器20或者從文件30接收編碼多媒體內(nèi)容,并且把這些內(nèi)容提供給一個(gè)或更多客戶端40-60。服務(wù)器10執(zhí)行少許處理(即選擇要向前傳輸?shù)姆纸M)來支持獨(dú)立訪問多個(gè)內(nèi)容的多個(gè)客戶端40-60。在服務(wù)器10中不執(zhí)行媒體的編碼或者代碼轉(zhuǎn)換。
原理上,服務(wù)器10以相同的方式操作來自編碼器20的實(shí)時(shí)流和來自文件30的預(yù)編碼流。在此具體實(shí)施例中,說明了實(shí)時(shí)媒體的流式傳輸。在隨后的實(shí)施例中討論流式傳輸媒體與預(yù)編碼文件的不同。
服務(wù)器10包括多個(gè)環(huán)形緩沖區(qū)70-90。對(duì)于各個(gè)客戶端40-60,有一個(gè)分組發(fā)送器100的實(shí)例。分組發(fā)送器100確定何時(shí)以及從緩沖區(qū)70-90中的哪一個(gè)讀取下一個(gè)分組,讀取所選分組并通過網(wǎng)絡(luò)連接110將其發(fā)送到各個(gè)客戶端。
需要從服務(wù)器10到各個(gè)客戶端40-60建立半可靠網(wǎng)絡(luò)連接110來確保幾乎所有被發(fā)送的分組都能接收到,由此使對(duì)于用戶感覺質(zhì)量的干擾最小。因此在網(wǎng)絡(luò)連接110的各個(gè)終端中使用緩沖區(qū)(120,130)以使得可以重傳丟失的分組。還希望網(wǎng)絡(luò)連接110是網(wǎng)絡(luò)友好的,即,當(dāng)沒有發(fā)生擁塞時(shí)可以提高所使用的比特率,并且當(dāng)發(fā)生擁塞時(shí)大幅度降低所使用的比特率。
雖然將系統(tǒng)組件示例并說明為集成和獨(dú)立組件的組合,但是應(yīng)意識(shí)到也可以使用不同的結(jié)構(gòu)。例如,可以使用外部編碼器20和/或文件存儲(chǔ)器30。同樣地,可以將緩沖區(qū)130集成到客戶端設(shè)備40-60中。
圖2是圖1的系統(tǒng)中使用的視頻編碼層級(jí)結(jié)構(gòu)的示意圖。編碼器20將實(shí)時(shí)或者存儲(chǔ)的多媒體內(nèi)容編碼成彈性編碼表示。在低比特率下將音頻編碼成單個(gè)編碼比特流,因此該音頻本身是非彈性的。然而,由于音頻所需的比特率一般比視頻的低,因而如果以彈性方式對(duì)視頻進(jìn)行編碼,那么可以將音頻和視頻的混合編碼視為彈性的。
在4.8kbit/s下使用AMR(自適應(yīng)多速率)編碼器對(duì)音頻進(jìn)行編碼。將視頻編碼成彈性表示。編碼器20以類似于分層的方式創(chuàng)建獨(dú)立視頻流的層級(jí)結(jié)構(gòu)。此層級(jí)結(jié)構(gòu)不是通過使各個(gè)流依賴于層級(jí)結(jié)構(gòu)內(nèi)所有較低的流來創(chuàng)建的,而是對(duì)各個(gè)流進(jìn)行獨(dú)立編碼。這種層級(jí)結(jié)構(gòu)是公知的,被稱為“聯(lián)播(simulcast)”。
雖然只說明了使用低比特率AMR方案來編碼音頻數(shù)據(jù),但是也支持其它AMR編碼速率和其它編碼標(biāo)準(zhǔn),諸如MP3??梢砸耘c下面用于視頻的描述類似的方式將不同速率下的編碼音頻組織成獨(dú)立流的層級(jí)結(jié)構(gòu),但是由于各個(gè)音頻幀一般是獨(dú)立編碼的,所以編碼表示之間的切換更為簡單。
使用ITU-T標(biāo)準(zhǔn)H.263的擴(kuò)展所創(chuàng)建的視頻層級(jí)結(jié)構(gòu)包括幀內(nèi)流(intra stream)200,用于隨機(jī)訪問視頻流;和一個(gè)或者多個(gè)播放流(playstream)210a、210b,用于內(nèi)容的正常觀看。以不同比特率對(duì)各個(gè)播放流210a、210b進(jìn)行編碼,由此使給定客戶端40-60在適合于其與服務(wù)器10的當(dāng)前網(wǎng)絡(luò)連接110的速率下接收這些播放流。該層級(jí)結(jié)構(gòu)還包含切換流(switch stream)220、230、240,其允許從幀內(nèi)流200到最低速率播放流210a以及播放流之間的切換。
由于編碼算法采用運(yùn)動(dòng)補(bǔ)償預(yù)測(cè),因而在播放流中的任意點(diǎn)處進(jìn)行比特流間切換即便是可能的,也將由于不同比特流的相同時(shí)刻的重構(gòu)幀之間的不匹配而導(dǎo)致視頻缺陷。這些視頻缺陷還將在一段時(shí)間中蔓延。
在當(dāng)前的視頻編碼標(biāo)準(zhǔn)中,只有在將來幀/區(qū)域不使用當(dāng)前切換位置(即,在接入圖像(access picture)處)之前的任何信息的位置處才可以進(jìn)行比特流之間的完美(無失配)切換。此外,通過以固定(如1秒)間隔放置接入圖像,可獲得VCR功能,例如用于流式視頻內(nèi)容的隨機(jī)訪問或者“快進(jìn)”和“快退”(更大的回放速率)。用戶可以跳過一部分視頻并且在任何接入圖像位置重新開始播放。類似地,通過只傳輸接入圖像可以獲得更大的回放速率,即快進(jìn)。
然而,公知地,接入圖像所需要的比特比運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)幀多。因此,使用幀內(nèi)流200和切換流220、230、240。切換流的主要屬性為即使使用不同的參考幀也可以獲得相同的圖像。
層級(jí)結(jié)構(gòu)的主要目的是使服務(wù)器10將播放流210a或210b傳輸?shù)娇蛻舳?0-60,以在客戶端40-60處構(gòu)造接收數(shù)據(jù)的緩沖區(qū)以提供分組丟失的復(fù)原與網(wǎng)絡(luò)吞吐量的突然下降兩者之間獲得最佳平衡,并根據(jù)網(wǎng)絡(luò)連接110瞬時(shí)支持的最高比特率將最佳播放流210a或210b提供給客戶端40-60。
幀內(nèi)流200是一系列幀內(nèi)編碼圖像(201,202),其用于提供隨機(jī)訪問和嚴(yán)重差錯(cuò)狀況的恢復(fù)。播放流210a、210b包括預(yù)測(cè)編碼圖像(211a,212a,213a,214a,215a;211b,212b,213b,214b,215b),這些圖像可以是雙向預(yù)測(cè)的,并且可以根據(jù)多個(gè)參考圖像來預(yù)測(cè)。播放流210a、210b還包括周期接入圖像216a、217a;216b,217b。切換流220,230,240包括一系列鏈接圖像(221,222;231,232;241,242)。
為各個(gè)流類型指定環(huán)形緩沖區(qū)70-92,為各條內(nèi)容的各個(gè)幀內(nèi)流(70)、播放流(80,85)和切換流(90,91,92)各指定一個(gè)緩沖區(qū)。
當(dāng)客戶端40首先與服務(wù)器10連接時(shí),服務(wù)器10從存儲(chǔ)幀內(nèi)流的環(huán)形緩沖區(qū)70中找出合適的幀內(nèi)圖像(例如,幀內(nèi)圖像201),并將該圖像發(fā)送到客戶端40。然后服務(wù)器10選擇鏈接圖像(221)以從幀內(nèi)流220切換到最低編碼比特率播放流210a,隨后從該播放流開始提供服務(wù)(213a開始)。
將分組傳輸?shù)娇蛻舳?0是一個(gè)獨(dú)立的處理,其傳輸速率取決于網(wǎng)絡(luò)狀態(tài)和所使用的傳輸協(xié)議。然而,希望最初時(shí)傳輸速率大于最低編碼比特率播放流210a的編碼比特率。這將使客戶端40可以在接收到數(shù)據(jù)并進(jìn)行解碼的時(shí)刻立即開始解碼并將媒體放映給用戶,同時(shí)使客戶端40可以在其解碼緩沖區(qū)中積累更多的壓縮媒體數(shù)據(jù)。
在接入圖像(例如以上示例中的接入圖像217a)處,客戶端40和/或服務(wù)器10可以確定更為合適的不同播放流(例如由于網(wǎng)絡(luò)容量增加或減小)。在上面的示例中,通過服務(wù)器10傳輸鏈接圖像232而不是接入圖像217a來完成從低速率的播放流210a到較高速率的播放流210b的切換。鏈接圖像232鏈接到較高速率播放流210b的播放流圖像215b,以使客戶端40接收該播放流。以類似的方式完成向更低比特率的播放流的切換。
已經(jīng)研究出三種對(duì)鏈接圖像進(jìn)行編碼的方法。各種方法提供了下面三者之間的折衷由于切換而引起偏移累積、實(shí)際切換的比特率方面的成本、以及由于對(duì)允許無偏移低比特率切換的常規(guī)類型圖像進(jìn)行編碼而產(chǎn)生的對(duì)于單個(gè)播放流的質(zhì)量的影響。
1.預(yù)測(cè)編碼鏈接圖像在第一種方法中,作為預(yù)測(cè)圖像而生成鏈接圖像。以如下方式對(duì)這些圖像進(jìn)行編碼重構(gòu)時(shí),其與目的播放流中的同步接入圖像的重構(gòu)是相似的,例如,具有很小的均方差??梢韵窬幋a預(yù)測(cè)圖像一樣對(duì)接入圖像進(jìn)行編碼。用于對(duì)鏈接圖像進(jìn)行編碼的比特?cái)?shù)決定了重構(gòu)的鏈接圖像與重構(gòu)的接入圖像之間的匹配度,并且由此確定了由于切換而產(chǎn)生的偏移量。然而,每次切換產(chǎn)生的偏移都將累積。
2.幀內(nèi)編碼鏈接圖像在第二種方法中,像產(chǎn)生幀內(nèi)圖像一樣產(chǎn)生鏈接圖像。以如下方式對(duì)這些圖像進(jìn)行編碼重構(gòu)時(shí),其與目的播放流中的同步接入圖像的重構(gòu)是相似的,例如,具有很小的均方差??梢韵窬幋a預(yù)測(cè)圖像一樣對(duì)接入圖像進(jìn)行編碼。用于對(duì)鏈接圖像進(jìn)行編碼的比特?cái)?shù)決定了重構(gòu)的鏈接圖像與重構(gòu)的接入圖像之間的匹配度,并且由此確定了由于切換而產(chǎn)生的偏移量。然而,對(duì)于給定的不匹配量,幀內(nèi)編碼鏈接圖像需要的比特?cái)?shù)通常大于預(yù)測(cè)編碼鏈接圖像。對(duì)于鏈接圖像使用幀內(nèi)編碼防止了偏移的累積。
3.量化源編碼鏈接圖像在第三種方法中,通過基于可在“ftp://standard.pictel.com/video-site/中獲得的“VCEG-L27,A proposal for SP-frames,submitted by Marta,Karczewicz and Ragip Kurceren at the ITU-TelecommunicationsStandardization Sector Video Coding Experts Group’s Twelfth MeetingEibsee,Germany,9-12 January,2001”中說明的概念的技術(shù)對(duì)鏈接圖像進(jìn)行編碼,本文稱為量化源圖像。
在圖3中示出了用于量化源圖像的編碼結(jié)構(gòu)。分別在步驟300和310中以相同的量化指數(shù)對(duì)源圖像和運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)進(jìn)行量化,在步驟320中相減之前進(jìn)行轉(zhuǎn)換,并在步驟330中進(jìn)行可變長度編碼。通過在步驟340中將減法器320的輸出和量化和轉(zhuǎn)換310中的輸出相加,并將在步驟350中對(duì)該結(jié)果進(jìn)行反變換和反量化來形成重構(gòu)圖像。將重構(gòu)圖像存儲(chǔ)在圖像存儲(chǔ)器360中。結(jié)果,重構(gòu)圖像就是量化源圖像,并且該重構(gòu)圖像不依賴于運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)。因此,當(dāng)根據(jù)不同參考圖像進(jìn)行預(yù)測(cè)時(shí),可以同樣地重構(gòu)給定的源圖像,并由此可以實(shí)現(xiàn)無偏移切換。運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)不是非相關(guān)的,其減少了待進(jìn)行可變長度編碼的信號(hào)的熵,并且由此減小了由對(duì)圖像進(jìn)行編碼而產(chǎn)生的比特?cái)?shù)。
把接入圖像也編碼成編碼量化源圖像,并選擇與鏈接圖像相同的編碼模式(幀內(nèi)編碼或幀間編碼)和量化器選擇。這確保了在目的端播放流中,該鏈接圖像的重構(gòu)與同步接入圖像的重構(gòu)一樣。
對(duì)鏈接圖像進(jìn)行編碼所需的比特?cái)?shù)由相應(yīng)的接入圖像的編碼來確定。用于對(duì)接入圖像進(jìn)行編碼的比特?cái)?shù)是根據(jù)如何進(jìn)行量化來確定的,但是通常大于用于對(duì)預(yù)測(cè)圖像進(jìn)行編碼的比特?cái)?shù)并小于對(duì)幀內(nèi)圖像進(jìn)行編碼的比特?cái)?shù)。這是因?yàn)槭褂昧祟A(yù)測(cè),該編碼比幀內(nèi)編碼更為高效,但預(yù)測(cè)誤差的量化使得其沒有一般預(yù)測(cè)有效。由此,量化源圖像的使用使得能夠進(jìn)行無偏移切換,但是代價(jià)是播放流的編碼效率的降低。
和預(yù)測(cè)圖像一樣,通過相同的H.263語法編碼量化源圖像,但通過將MPPTYPE的前三位設(shè)置為保留值“110”來與預(yù)測(cè)圖像相區(qū)別。
量化源圖像的周期性編碼可以導(dǎo)致圖像的靜態(tài)區(qū)域中的跳動(dòng)效果(beating effect)。下面對(duì)其進(jìn)行說明。在一般的預(yù)測(cè)編碼中,不對(duì)已經(jīng)編碼為源圖像的合理表示的圖像靜態(tài)區(qū)域進(jìn)行修改。在編碼量化源圖像的這些區(qū)域時(shí),必須對(duì)預(yù)測(cè)進(jìn)行量化,并且如果通過用于圖像的非靜態(tài)區(qū)域的量化指數(shù)進(jìn)行量化,則該量化將產(chǎn)生局部變化,可能使其更糟,但是無論在什么情況下,都會(huì)產(chǎn)生變化。這種變化即為跳動(dòng)效果。
通過下面的方式克服該跳動(dòng)效果當(dāng)對(duì)于圖像的一個(gè)區(qū)域的預(yù)測(cè)提供了足夠好的源表示時(shí),不需要傳輸信息,并且由此不會(huì)改變?cè)搮^(qū)域。所以當(dāng)把接入圖像編碼成編碼量化源圖像時(shí),進(jìn)行測(cè)試以確定如果圖像已經(jīng)編碼成預(yù)測(cè)圖像而不是量化源圖像,是否要傳輸關(guān)于該區(qū)域的信息。如果不傳輸信息,則將步驟300和310的量化和步驟350的反量化所使用的量化指數(shù)設(shè)定為較小的值,將減法器320的輸出(通常稱為預(yù)測(cè)誤差)設(shè)定為零,由此該新重構(gòu)圖像的該區(qū)域等于通過細(xì)量化器進(jìn)行了量化的先前重構(gòu)圖像的相應(yīng)區(qū)域。在H.263和其它標(biāo)準(zhǔn)中,量化指數(shù)的范圍從1(細(xì)量化)到31(粗量化)。較小的指數(shù)一般是指小于或等于8的值。這使重構(gòu)圖像的非必要變化最小,同時(shí)也使必須傳輸?shù)男畔⒘孔钚?。然而,需要以相?yīng)鏈接圖像中的比特率為代價(jià),其中預(yù)測(cè)誤差不可能為零,而且必須使用相同的精細(xì)量化器。
圖4是適于在圖1的系統(tǒng)中使用的客戶端-服務(wù)器結(jié)構(gòu)的示意圖。
客戶端40包括網(wǎng)絡(luò)緩沖區(qū)130,解碼緩沖區(qū)41和解碼器42。服務(wù)器10包括上述環(huán)形緩沖區(qū)70、80、90;分組發(fā)送器100以及用于各個(gè)客戶端的網(wǎng)絡(luò)緩沖區(qū)120。
客戶端40將解碼緩沖區(qū)41中的信息量和其接收數(shù)據(jù)的速率通知給服務(wù)器10。服務(wù)器10使用此信息來確定何時(shí)進(jìn)行播放流之間的切換。例如,當(dāng)客戶端40積累了一個(gè)閾值以上的數(shù)據(jù)時(shí),比方說解碼緩沖區(qū)41中有15秒數(shù)據(jù),而客戶端40以大于或等于層級(jí)結(jié)構(gòu)中的下一個(gè)更高速率播放流的編碼速率的速率接收數(shù)據(jù),則服務(wù)器10可以在下一個(gè)鏈接圖像處將客戶端的分組發(fā)送器100切換到下一個(gè)更高的播放流。
類似地,當(dāng)由客戶端40在其編碼緩沖區(qū)41中所積累的數(shù)據(jù)量小于閾值時(shí),服務(wù)器10可以在下一個(gè)鏈接圖像處將客戶端的分組發(fā)送器100切換到下一個(gè)較低的播放流。
總體效果為,根據(jù)網(wǎng)絡(luò)的擁塞狀態(tài),傳輸速率以網(wǎng)絡(luò)友好的方式變化,但是由于客戶端解碼緩沖區(qū)41中積累的數(shù)據(jù),用戶察覺不到因傳輸速率的短期改變?cè)斐傻馁|(zhì)量變化。通過切換到具有不同編碼速率的流來應(yīng)付傳輸速率的長期變化,從而當(dāng)網(wǎng)絡(luò)容許時(shí)提高質(zhì)量,并當(dāng)網(wǎng)絡(luò)吞吐量下降時(shí)降低質(zhì)量,而不必停止放映或者將破壞的媒體放映給用戶。
客戶端的解碼緩沖區(qū)41用于降低網(wǎng)絡(luò)性能變化對(duì)放映給用戶的媒體質(zhì)量的影響。將緩沖區(qū)所處理的網(wǎng)絡(luò)特性分為三類分組抖動(dòng)、丟包和可變吞吐量。實(shí)際中這三種網(wǎng)絡(luò)特性不是獨(dú)立的,都與網(wǎng)絡(luò)擁塞相關(guān),并且在移動(dòng)網(wǎng)絡(luò)的情況下,與物理層的性能降低相關(guān)。
通過將傳輸速率與媒體編碼率分開,當(dāng)網(wǎng)絡(luò)狀況較好時(shí)可以填充客戶端的解碼緩沖區(qū)41,從而當(dāng)網(wǎng)絡(luò)狀況不太好時(shí)提供復(fù)原時(shí)間。
解碼緩沖區(qū)41中的數(shù)十秒數(shù)據(jù)的積累向用戶掩蓋了相同量級(jí)的分組抖動(dòng)(延遲變化)。實(shí)際中,由于將更大的抖動(dòng)分類為暫時(shí)連接中斷(由下面的錯(cuò)誤恢復(fù)處理來應(yīng)對(duì)),所以這種數(shù)據(jù)積累將屏蔽掉所有的分組抖動(dòng)。
通過在解碼緩沖區(qū)41中積累數(shù)據(jù),為在需要對(duì)丟失的分組進(jìn)行解碼之前重傳丟失分組提供了時(shí)間。同樣地,通過設(shè)計(jì)解碼器緩沖區(qū)41的大小來使其包含的數(shù)據(jù)可多于多個(gè)往返延遲所傳輸?shù)臄?shù)據(jù),為少量重傳提供時(shí)間以從丟包狀態(tài)中恢復(fù)。這使得能夠從大部分丟包情況恢復(fù),而不影響已解碼的媒體質(zhì)量,并使連接具有半可靠性。
最后,同樣通過在解碼緩沖區(qū)44中積累數(shù)據(jù),當(dāng)接收比特率小于編碼比特率時(shí)或當(dāng)接收速率降為零時(shí),客戶端40可以使媒體質(zhì)量在一段時(shí)間內(nèi)保持一致。
由于以獨(dú)立于編碼速率的速率將數(shù)據(jù)流式傳輸?shù)娇蛻舳?0并存儲(chǔ)在解碼緩沖區(qū)41中,所以有必要對(duì)數(shù)據(jù)解碼進(jìn)行正確定時(shí),而不是簡單地解碼并盡快放映。為此目的使用時(shí)間戳,該時(shí)間戳也可用于音頻和視頻的同步。
由于網(wǎng)絡(luò)變化,以字節(jié)為單位測(cè)量的客戶端的解碼緩沖區(qū)41中的數(shù)據(jù)量可能隨時(shí)間變化。另外,根據(jù)數(shù)據(jù)量所表示的媒體放映時(shí)間的長度所測(cè)量的解碼緩沖區(qū)41中的數(shù)據(jù)量也會(huì)隨時(shí)間變化。對(duì)于實(shí)時(shí)內(nèi)容的流傳輸這意味著如果將第一數(shù)據(jù)以最小延遲(從捕獲該第一數(shù)據(jù)并對(duì)其編碼的時(shí)刻起算)發(fā)送到客戶端40,則數(shù)據(jù)不可能填充解碼緩沖區(qū)41。因此,發(fā)送到客戶端40的第一數(shù)據(jù)必須為舊數(shù)據(jù),即,該數(shù)據(jù)代表客戶端40與服務(wù)器10相連之前的某一時(shí)間所發(fā)生的事件。然后隨著解碼緩沖區(qū)41的填充,該緩沖區(qū)中的最新數(shù)據(jù)變得越來越新,同時(shí)放映給用戶的媒體根據(jù)事件發(fā)生的實(shí)際時(shí)間保持固定延遲。
在編碼之后,服務(wù)器將編碼數(shù)據(jù)在其環(huán)形緩沖區(qū)70、80、90中緩沖一段固定的時(shí)間,以使得當(dāng)客戶端40與服務(wù)器10相連時(shí),可以將‘舊’數(shù)據(jù)傳輸給客戶端40。隨著客戶端解碼緩沖區(qū)41的填充,從環(huán)形緩沖區(qū)70、80、90中讀出數(shù)據(jù)的點(diǎn)越來越接近這些緩沖區(qū)中的最新數(shù)據(jù)。
優(yōu)選地,環(huán)形緩沖區(qū)70、80、90以及客戶端解碼緩沖區(qū)41的最佳大小為使得各個(gè)緩沖區(qū)可以包含相同的數(shù)據(jù)量(以該數(shù)據(jù)所表示的媒體放映時(shí)間來測(cè)量)。
實(shí)現(xiàn)半可靠數(shù)據(jù)連接的傳輸協(xié)議使用分別在服務(wù)器10和客戶端40中的網(wǎng)絡(luò)緩沖區(qū)120、130。通常,數(shù)據(jù)被保留在服務(wù)器的網(wǎng)絡(luò)緩沖區(qū)120中,直到確認(rèn)客戶端40已經(jīng)接收到該數(shù)據(jù)和之前的所有數(shù)據(jù)。類似地,當(dāng)數(shù)據(jù)和之前的所有數(shù)據(jù)已經(jīng)被接收并被傳送到解碼緩沖區(qū)41時(shí),從客戶端的網(wǎng)絡(luò)緩沖130中去除該數(shù)據(jù)。從而,服務(wù)器10在單向傳輸延遲限定的時(shí)間中獲知保留在其自己的網(wǎng)絡(luò)緩沖區(qū)120中的數(shù)據(jù),從而獲知哪些數(shù)據(jù)已被客戶端40成功地接收。
這意味著不需要為服務(wù)器10提供超出傳輸協(xié)議本身需要的從客戶端40到服務(wù)器10的反饋,即可獲知客戶端40接收了多少數(shù)據(jù),從而可以確定播放流之間的切換。
客戶端的解碼緩沖區(qū)41中的數(shù)據(jù)積累能夠恢復(fù)一些網(wǎng)絡(luò)故障,例如抖動(dòng)、丟包和可變吞吐量。顯而易見,不可能從所有網(wǎng)絡(luò)故障中恢復(fù),除非將解碼緩沖區(qū)41設(shè)計(jì)為包含整個(gè)媒體內(nèi)容并且直到接收了所有數(shù)據(jù)時(shí)才開始放映。由于這種情況不是流傳輸,而是下載,所以需要一種從嚴(yán)重網(wǎng)絡(luò)故障中得到恢復(fù)的策略。
當(dāng)網(wǎng)絡(luò)吞吐量下降,并在相當(dāng)長的時(shí)間內(nèi)低于最低速率播放流的編碼速率時(shí),解碼緩沖41中的數(shù)據(jù)量將降低,并且最終變?yōu)榱恪4藭r(shí),將停止向用戶的放映。然而,在服務(wù)器10中將繼續(xù)填充環(huán)形緩沖區(qū)。結(jié)果,當(dāng)網(wǎng)絡(luò)恢復(fù)到可以重新傳輸最低速率的播放流時(shí),客戶端40所需的下一個(gè)數(shù)據(jù)很可能已不在服務(wù)器的環(huán)形緩沖70、80、90中,因?yàn)樵摂?shù)據(jù)可能已被更新的數(shù)據(jù)所覆蓋。
為了從這種情況中恢復(fù),服務(wù)器10必須重新開始流傳輸,就像從客戶端建立了一個(gè)新的連接一樣服務(wù)器10必須找到幀內(nèi)流中的一點(diǎn),并從該點(diǎn)開始流傳輸,然后通過鏈接流切換到最低速率播放流。對(duì)于用戶的影響為漏失了從解碼緩沖區(qū)41變?yōu)榭盏疆?dāng)服務(wù)器開始傳送該幀內(nèi)流時(shí)這段時(shí)間內(nèi)的媒體。
因?yàn)榉?wù)器10知道客戶端何時(shí)開始解碼以及已經(jīng)成功接收了多少數(shù)據(jù),其將獲知客戶端的解碼緩沖區(qū)是否變空。因此,可以在幀內(nèi)流圖像處重新開始,而不需從客戶端獲得特殊的消息。然而,為了進(jìn)行系統(tǒng)復(fù)原,例如從服務(wù)器和客戶端的不同時(shí)鐘速率中恢復(fù),在這種情況下從客戶端40向服務(wù)器10發(fā)送控制消息。
原理上,文件的流傳輸與實(shí)時(shí)流傳輸相同。實(shí)際上,前者更為簡單。由于當(dāng)需要時(shí)可以從文件中讀取數(shù)據(jù),所以不需要設(shè)立環(huán)形緩沖70、80、90。然而,服務(wù)器10使用相同的技術(shù)來填充客戶端40的解碼緩沖區(qū)41并在播放流之間切換。在解碼緩沖區(qū)41變空的情況下,不需要在與帶有幀內(nèi)流圖像的內(nèi)容中的隨后點(diǎn)重新開始,因?yàn)楫?dāng)網(wǎng)絡(luò)吞吐量重新變得充分時(shí)可以繼續(xù)放映用戶只會(huì)在一段時(shí)間內(nèi)察覺到?jīng)]有媒體放映。
使用幀內(nèi)流可以實(shí)現(xiàn)多種技巧模式,如快進(jìn)、快退和隨機(jī)訪問。
通過在覆蓋環(huán)形緩沖區(qū)70、80、90中的‘舊數(shù)據(jù)’之前將其寫入文件,因?yàn)榱鱾鬏數(shù)娇蛻舳说臄?shù)據(jù)總可以得到(只能從文件而不是從環(huán)形緩沖區(qū)70、80、90中讀取數(shù)據(jù)),因而可以避免上述的解碼緩沖區(qū)41變空、用戶漏失利用幀內(nèi)流圖像進(jìn)行恢復(fù)之前的內(nèi)容的問題。
該功能還使得客戶端可以暫停所放映媒體一段不確定的時(shí)間,并隨后繼續(xù)流傳輸。這還使得用戶可以在該暫停之后進(jìn)行快進(jìn)以跟上實(shí)時(shí)流。
上述客戶端-服務(wù)器結(jié)構(gòu)中所測(cè)試的傳輸協(xié)議的實(shí)現(xiàn)是基于ISO TCP傳輸協(xié)議TPKT的,該協(xié)議在由Y.Pouffary所著的RFC-2126“ISOTransport Service on top of TCP(ITOT)”中有詳細(xì)說明。
標(biāo)準(zhǔn)TPKT協(xié)議定義了如圖5a所示的報(bào)頭,隨后是凈荷。分組長度表示以八位字節(jié)為單位的報(bào)頭和凈荷的組合長度。
在用于上述系統(tǒng)的實(shí)現(xiàn)中,擴(kuò)展了TPKT的報(bào)頭(在圖5b中示出了該報(bào)頭的示例),隨后為凈荷。分組長度表示以八位字節(jié)為單位的報(bào)頭、時(shí)間戳(如果存在)和凈荷的組合長度。T為表示是否存在時(shí)間戳的位,M為表示凈荷是否包含音頻或視頻信息的位。
如上所述,需要時(shí)間戳來進(jìn)行數(shù)據(jù)解碼的正確定時(shí)。嵌入分組報(bào)頭的信息包括分組長度、分組中數(shù)據(jù)的時(shí)間戳和流標(biāo)號(hào)。
設(shè)置流標(biāo)號(hào)以使得將音頻和視頻復(fù)用到單個(gè)TCP連接中。這確保了音頻和視頻同步。如果使用分開的多個(gè)TCP連接,則可能這些連接對(duì)于網(wǎng)絡(luò)特性的響應(yīng)略有不同,并且將產(chǎn)生不同的吞吐量,這將最終導(dǎo)致客戶端解碼緩沖區(qū)中的數(shù)據(jù)量(以放映時(shí)間來測(cè)量)的極大不同。雖然可以對(duì)這些不同進(jìn)行管理,但是通過使用單個(gè)TCP連接并將同一放映時(shí)間的音頻和視頻復(fù)用在相鄰分組中可完全避免該問題。事實(shí)上,向只有視頻的系統(tǒng)中添加音頻只需要與相關(guān)的視頻同時(shí)發(fā)送音頻分組不需要另外的控制。
服務(wù)器10試圖盡可能快地發(fā)送分組。最初時(shí),一個(gè)接一個(gè)地發(fā)送多個(gè)分組而不考慮網(wǎng)絡(luò)容量,因?yàn)檫@些分組只是填充服務(wù)器的網(wǎng)絡(luò)緩沖區(qū)120。當(dāng)網(wǎng)絡(luò)緩沖區(qū)120變滿時(shí),因?qū)μ捉幼职l(fā)送功能的調(diào)用受到阻塞而限制了傳輸處理,分組發(fā)送到網(wǎng)絡(luò)緩沖區(qū)120的速率與網(wǎng)絡(luò)上的傳輸速率相一致。
當(dāng)存儲(chǔ)在客戶端的數(shù)據(jù)量到達(dá)一個(gè)閾值(例如30秒)時(shí)也可以限制傳輸速度。當(dāng)客戶端的解碼緩沖區(qū)41具有此數(shù)據(jù)量時(shí),服務(wù)器10限制傳輸速率以保持此充滿程度。
通過對(duì)已經(jīng)發(fā)送到網(wǎng)絡(luò)緩沖區(qū)120的字節(jié)進(jìn)行計(jì)數(shù)、從該計(jì)數(shù)中減去網(wǎng)絡(luò)緩沖區(qū)的大小、并除以從開始傳輸起經(jīng)過的時(shí)間來估算網(wǎng)絡(luò)吞吐量。使用所傳輸字節(jié)的兩次計(jì)數(shù)以及發(fā)送這些字節(jié)所需時(shí)間的兩次測(cè)量、根據(jù)一對(duì)數(shù)據(jù)計(jì)算吞吐量、然后周期性地將不再使用的對(duì)重設(shè)為零,并在其間切換來計(jì)算網(wǎng)絡(luò)吞吐量的短期估算。例如,如果每200秒進(jìn)行一次重新設(shè)置,則在從重設(shè)之后的200秒到再次重設(shè)之前的40秒這個(gè)范圍之內(nèi)變化的一個(gè)時(shí)間段上估計(jì)網(wǎng)絡(luò)的吞吐量。
如果服務(wù)器10想要盡快地進(jìn)行流式傳輸則該技術(shù)的效果是令人滿意的。但是如上所述,當(dāng)解碼緩沖區(qū)41中的數(shù)據(jù)量超過閾值時(shí),服務(wù)器10限制其傳輸速率以保持固定的緩沖區(qū)充滿狀態(tài)。在這種情況下,將網(wǎng)絡(luò)吞吐量估計(jì)為當(dāng)前播放流的編碼比特率。當(dāng)在此狀態(tài)中時(shí),網(wǎng)絡(luò)能夠傳輸比當(dāng)前進(jìn)行流傳輸?shù)牟シ帕魉俾矢叩牟シ帕鳎且驗(yàn)榉?wù)器10由于其自身的速率限制不能對(duì)網(wǎng)絡(luò)吞吐量進(jìn)行真實(shí)估計(jì),所以服務(wù)器10不能進(jìn)行切換。為了避開此狀態(tài),服務(wù)器定期地忽略客戶端解碼緩沖區(qū)的充滿閾值,并在給定的時(shí)間段內(nèi)或者對(duì)于給定的數(shù)據(jù)量以全速率進(jìn)行流傳輸。從網(wǎng)絡(luò)緩沖區(qū)120變滿時(shí)起,服務(wù)器記錄發(fā)送到網(wǎng)絡(luò)緩沖區(qū)120的字節(jié)數(shù)和所用的時(shí)間,該時(shí)間由發(fā)送函數(shù)的阻塞調(diào)用來檢測(cè)。然后服務(wù)器10估算可實(shí)現(xiàn)的吞吐量,并使用該吞吐量來確定是否要切換到更高速率的播放流。
如前所述,通過獲知保存在網(wǎng)絡(luò)緩沖區(qū)120中的數(shù)據(jù),服務(wù)器10能夠間接獲知客戶端40接收了哪些數(shù)據(jù),以及哪些數(shù)據(jù)被傳送到其解碼緩沖區(qū)41中。然后使用此信息來確定何時(shí)在播放流之間進(jìn)行切換,以及何時(shí)激活錯(cuò)誤恢復(fù)過程。然而,在大多數(shù)套接字實(shí)現(xiàn)中并不支持服務(wù)器的網(wǎng)絡(luò)緩沖區(qū)120的內(nèi)容和充滿程度的可見性。為了監(jiān)控網(wǎng)絡(luò)緩沖120的內(nèi)容,采用了鏡像(mirror)緩沖區(qū)120a。鏡像緩沖區(qū)120a不存儲(chǔ)發(fā)送到網(wǎng)絡(luò)緩沖區(qū)120的實(shí)際數(shù)據(jù),而是只存儲(chǔ)所發(fā)送的字節(jié)數(shù)和數(shù)據(jù)的時(shí)間戳。已知網(wǎng)絡(luò)緩沖區(qū)120的大小,并假設(shè)其總是滿的,則服務(wù)器10通過鏡像緩沖區(qū)120a來訪問網(wǎng)絡(luò)緩沖區(qū)120中的最舊數(shù)據(jù)的時(shí)間戳,該時(shí)間戳與客戶端的解碼緩沖區(qū)41中的最新數(shù)據(jù)的時(shí)間戳相同。
在測(cè)試中,已發(fā)現(xiàn)服務(wù)器10的網(wǎng)絡(luò)緩沖區(qū)120總是充滿的這一假設(shè)在大部分時(shí)候是正確的。這是因?yàn)閷?duì)傳輸處理進(jìn)行控制以盡快發(fā)送到網(wǎng)絡(luò)緩沖區(qū)120。如果網(wǎng)絡(luò)緩沖區(qū)120變得不再充滿,則影響為低估客戶端40的數(shù)據(jù)量,該影響大部分情況下是安全的,這是因?yàn)橹饕獑栴}是客戶端40的數(shù)據(jù)用盡,而不是溢出。實(shí)際上,可以將解碼緩沖區(qū)41設(shè)計(jì)得比需要存儲(chǔ)的最大數(shù)據(jù)流還要大。無論在什么情況下,如果解碼緩沖區(qū)41變滿,則客戶端40停止從網(wǎng)絡(luò)緩沖區(qū)130讀取數(shù)據(jù),這將反過來阻止服務(wù)器網(wǎng)絡(luò)緩沖區(qū)120變空,并停止傳輸。
為了確定客戶端解碼緩沖區(qū)41中的確切數(shù)據(jù)量,服務(wù)器還需要獲知客戶端當(dāng)前正在解碼和放映的數(shù)據(jù)分組的時(shí)間戳。服務(wù)器10基于兩個(gè)假設(shè)來計(jì)算確切數(shù)據(jù)量第一,客戶端40在服務(wù)器10發(fā)送第一個(gè)分組之后立即開始解碼;第二,在流傳輸期間客戶端的時(shí)鐘與服務(wù)器的時(shí)鐘無重大偏差。
實(shí)際上兩個(gè)假設(shè)都是有效的。將客戶端40設(shè)計(jì)為一旦接收到數(shù)據(jù)立即開始解碼,從而關(guān)于服務(wù)器所估算的放映時(shí)間的任何錯(cuò)誤將導(dǎo)致對(duì)解碼緩沖區(qū)41中的數(shù)據(jù)量的低估,如上所述這并不是問題。與被緩沖的數(shù)據(jù)量相比,在一般流傳輸會(huì)話過程中的客戶端和服務(wù)器時(shí)鐘之間的偏移是可以忽略的。例如,假如偏差為百萬分之100,則要花10000秒或者接近三個(gè)小時(shí)才能發(fā)生一秒鐘偏移。在積累了大量偏移的極少數(shù)情況下,客戶端40可以通過使用控制消息,如前述所發(fā)送的用于解碼緩沖區(qū)下溢的消息,來向服務(wù)器10告警。
服務(wù)器10最初以最低比特率對(duì)播放流進(jìn)行流傳輸,以使客戶端40解碼并立即向用戶放映媒體,同時(shí)還增加了解碼緩沖區(qū)41中的數(shù)據(jù)量以從網(wǎng)絡(luò)故障中恢復(fù)。如果網(wǎng)絡(luò)具有足夠能力來支持更高速率的播放流的傳輸,則服務(wù)器10應(yīng)該在適當(dāng)?shù)臅r(shí)刻切換到更高速率的播放流來進(jìn)行流傳輸。
有很多種可能的策略可用于確定何時(shí)切換到更高速率的播放流。優(yōu)選地,客戶端40的解碼緩沖區(qū)41中應(yīng)有足夠的數(shù)據(jù)以能夠在預(yù)定時(shí)間(例如15秒)內(nèi)繼續(xù)解碼和放映媒體。優(yōu)選地,例如在最近60秒中測(cè)量的最近達(dá)到的網(wǎng)絡(luò)吞吐量應(yīng)該足夠維持要切換到的播放流的流式傳輸;即,最近達(dá)到的網(wǎng)絡(luò)吞吐量速率應(yīng)該大于或等于播放流的比特率。目的是避免流之間的頻繁切換,因?yàn)閷?duì)于用戶而言該切換可能比持續(xù)的較低速率質(zhì)量更為令人討厭。
為了實(shí)現(xiàn)此目的,優(yōu)選地,向下切換(switching down)決定包括與向上切換(switching up)決定成比例的滯后。例如,當(dāng)客戶端40在其解碼緩沖區(qū)41中不再具有足夠數(shù)據(jù)以將解碼和媒體放映持續(xù)一段時(shí)間(例如8秒)時(shí),可能觸發(fā)向下一個(gè)更低速率的播放流的向下切換。在具有三個(gè)或者多個(gè)播放流的結(jié)構(gòu)中,并且當(dāng)前流傳輸?shù)牟シ帕鳛榈谌蛘呱踔粮叩乃俾什シ帕?,此策略不?huì)導(dǎo)致立即降到層級(jí)底層,因?yàn)榻尤雸D像只是定期發(fā)生的,并且希望在第一次向下切換之后恢復(fù)到解碼緩沖區(qū)的充滿狀態(tài),從而不必進(jìn)行第二次切換。
圖6a-6c是示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于存儲(chǔ)音頻-視頻數(shù)據(jù)源的數(shù)據(jù)結(jié)構(gòu)的各個(gè)方面的示意圖。
圖6a所示的主數(shù)據(jù)結(jié)構(gòu)使得可以在單個(gè)文件中存儲(chǔ)多個(gè)音頻播放流、幀內(nèi)視頻流、和多個(gè)視頻播放和切換流。
由于本發(fā)明中所創(chuàng)建和使用的音頻視頻數(shù)據(jù)源具有將一次傳輸?shù)娇蛻舳说亩鄠€(gè)編碼流,所以不可能在傳統(tǒng)的順序文件中進(jìn)行存儲(chǔ)。例如,在視頻情況下,可以在各個(gè)播放流中對(duì)具體的源圖像進(jìn)行編碼,并還可以在幀內(nèi)流和一些或者全部切換流中進(jìn)行編碼。
該文件包含一種數(shù)據(jù)結(jié)構(gòu),在圖6a中示出了該數(shù)據(jù)結(jié)構(gòu)的示例,隨后是流數(shù)據(jù)。該數(shù)據(jù)結(jié)構(gòu)包括報(bào)頭600,其包含關(guān)于流(音頻、視頻、切換等)的數(shù)目和類型的信息。對(duì)于各種類型的流的第一個(gè)和最后一個(gè)實(shí)例,該流還包括指向各個(gè)流的報(bào)頭的指針610-680(以相對(duì)于文件起始位置的偏移量表示)。
各個(gè)指針620-680指向包括流報(bào)頭700的流數(shù)據(jù)結(jié)構(gòu),該流報(bào)頭700包含指向同一類型的下一流報(bào)頭的指針710、分別指向流的第一個(gè)和最后一個(gè)分組的指針720、730。各個(gè)流類型使用特定的流報(bào)頭類型,然而對(duì)于所有流報(bào)頭類型某些組件是相同的流標(biāo)號(hào)705、指向相同類型的下一流報(bào)頭的指針710、以及分別指向該流的第一個(gè)和最后一個(gè)分組的指針720、730。在圖6b中示出了只包含這些共同組件的示例流報(bào)頭。另外,播放和音頻流報(bào)頭包含該流的編碼比特率。切換流報(bào)頭包含該切換流可以進(jìn)行切換的播放流的流標(biāo)號(hào)以及可以切換到的播放流的流標(biāo)號(hào)。
各個(gè)流包括一個(gè)分組序列,各個(gè)分組由分組數(shù)據(jù)結(jié)構(gòu)表示,該分組數(shù)據(jù)結(jié)構(gòu)的示例在圖6c中示出。各個(gè)分組數(shù)據(jù)結(jié)構(gòu)包括分組報(bào)頭800和凈荷810。報(bào)頭包括的數(shù)據(jù)包括指向流中的下一個(gè)分組的指針801、時(shí)間戳802、分組序號(hào)803、分組大小804、和幀號(hào)805(即,該分組(可能和其它分組一起)表示的視頻圖像或者音頻幀的序號(hào))。切換分組另外還包含“from”播放流和“to”播放流(切換分組在兩者之間進(jìn)行比特率切換)中的分組序號(hào)。切換流分組報(bào)頭有效地限定了切換點(diǎn)并且包含切換前要從“from”流播放的最后一個(gè)分組的序號(hào)以及切換后來自“to”流的要播放的第一個(gè)分組。序號(hào)從0開始,并且不為負(fù)。在切換時(shí)可以使用指針來支持流之間的引導(dǎo),不過在本實(shí)施例中沒有采用此方法。
在向文件中添加時(shí),指向最后一個(gè)流數(shù)據(jù)結(jié)構(gòu)和最后一個(gè)分組的指針是很有用的,因?yàn)槔眠@些指針可以迅速訪問文件要進(jìn)行擴(kuò)充的點(diǎn),而不需要搜索整個(gè)文件。
數(shù)據(jù)結(jié)構(gòu)的復(fù)雜度取決于可能很多的相互交織的多個(gè)流中的分組,以及支持切換和恢復(fù)的需要。需要通過指針來從一個(gè)分組導(dǎo)向另一分組,因?yàn)樵诹髦羞B續(xù)的分組通常在文件中并不是連續(xù)存儲(chǔ)的。切換和恢復(fù)分組的寫入操作需要被記錄的源和目的分組的精確細(xì)節(jié)?;胤胚^程中流間的切換首先需要識(shí)別下一個(gè)可用切換分組,隨后是“from”流中的剩余分組的回放,切換分組的回放,然后是從適當(dāng)?shù)狞c(diǎn)開始回放“to”流中的分組。此外當(dāng)進(jìn)行流間切換時(shí)必須沒有可感知的延遲。
在測(cè)試中,使用BTCellnetTMGPRS網(wǎng)絡(luò)對(duì)基于文件的流和實(shí)時(shí)流的情況進(jìn)行了研究。使用臺(tái)式奔騰(Pentium)PC來運(yùn)行解碼器和服務(wù)器??蛻舳藶橥ㄟ^紅外線與Motorola TimeportTMGPRS移動(dòng)電話相連的Compaq iPaqTM。
在只有視頻的結(jié)構(gòu)中,使用兩種切換流,其比特率分別為6kbit/s和12kbit/s。
該系統(tǒng)如所期望地運(yùn)行。從幀內(nèi)流開始傳輸,然后切換到6kbit/s播放流,在該播放流停留一段時(shí)間,因?qū)嶋H傳輸速率大于6kbit/s,因而在客戶端積累了數(shù)據(jù)。然后當(dāng)積累了足夠的數(shù)據(jù)時(shí),并且短期平均接收速率大于12kbit/s時(shí),切換到更高速率的播放流。
在長的會(huì)話中,有時(shí)會(huì)由于網(wǎng)絡(luò)吞吐量的下降而切換回較低速率的播放流。并且在極少的時(shí)候會(huì)由于相當(dāng)一段時(shí)間內(nèi)網(wǎng)絡(luò)不能向客戶端發(fā)送數(shù)據(jù)從而媒體放映中斷。
對(duì)于大部分會(huì)話都具有此整體效果,用戶可以觀看連續(xù)的媒體放映,有時(shí)有質(zhì)量變化,但是沒有通常與誤碼和丟包相關(guān)的失真。只有極少情況下才會(huì)由于嚴(yán)重的網(wǎng)絡(luò)故障和吞吐量降低而使媒體放映完全暫停。
權(quán)利要求
1.一種數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)流式傳輸系統(tǒng)的數(shù)據(jù)源,該數(shù)據(jù)源包括多個(gè)編碼數(shù)據(jù)流,該多個(gè)數(shù)據(jù)流中的每一個(gè)都是所述數(shù)據(jù)源中的數(shù)據(jù)的獨(dú)立表示,并以不同于所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流的分辨率編碼,所述數(shù)據(jù)結(jié)構(gòu)包括報(bào)頭(600-680)、用于各個(gè)編碼數(shù)據(jù)流的流數(shù)據(jù)結(jié)構(gòu)(700)、以及編碼數(shù)據(jù)流的一個(gè)或多個(gè)分組(800),所述報(bào)頭(600-680)與所述流數(shù)據(jù)結(jié)構(gòu)(700)中的一個(gè)相鏈接,其中各個(gè)流數(shù)據(jù)結(jié)構(gòu)(700)包括報(bào)頭(705,740,750)、與下一個(gè)流數(shù)據(jù)結(jié)構(gòu)的鏈接(710)以及與所述編碼數(shù)據(jù)流的第一個(gè)分組的鏈接(720)。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)結(jié)構(gòu),其中所述多個(gè)編碼數(shù)據(jù)流為視頻數(shù)據(jù)流。
3.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)結(jié)構(gòu),包括編碼為數(shù)據(jù)流的音頻數(shù)據(jù)。
4.根據(jù)權(quán)利要求2或3所述的數(shù)據(jù)結(jié)構(gòu),其中用于視頻和音頻數(shù)據(jù)流的流數(shù)據(jù)結(jié)構(gòu)(700)包括用于各個(gè)數(shù)據(jù)流的比特率編碼數(shù)據(jù)(740)。
5.根據(jù)權(quán)利要求2、3或4所述的數(shù)據(jù)結(jié)構(gòu),其中所述數(shù)據(jù)源還包括切換流,所述切換流定義了用于在一個(gè)視頻數(shù)據(jù)流和另一個(gè)視頻數(shù)據(jù)流之間進(jìn)行切換的轉(zhuǎn)換點(diǎn),該切換數(shù)據(jù)流的數(shù)據(jù)流結(jié)構(gòu)包括關(guān)于可以從哪些視頻流和分組進(jìn)行切換和可以切換到哪些視頻流和分組的數(shù)據(jù)。
6.根據(jù)上述任一權(quán)利要求所述的數(shù)據(jù)結(jié)構(gòu),其中所述數(shù)據(jù)結(jié)構(gòu)的報(bào)頭包括與最后一個(gè)流數(shù)據(jù)結(jié)構(gòu)的鏈接。
7.根據(jù)上述任一權(quán)利要求所述的數(shù)據(jù)結(jié)構(gòu),其中所述流數(shù)據(jù)結(jié)構(gòu)的報(bào)頭包括與編碼數(shù)據(jù)流的最后一個(gè)分組的鏈接(730)。
8.根據(jù)權(quán)利要求1至7中任意一項(xiàng)所述的數(shù)據(jù)結(jié)構(gòu),其編碼在計(jì)算機(jī)可讀介質(zhì)上。
全文摘要
一種數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)流式傳輸系統(tǒng)的數(shù)據(jù)源,該數(shù)據(jù)源包括多個(gè)編碼數(shù)據(jù)流,該多個(gè)數(shù)據(jù)流中的每一個(gè)都是所述數(shù)據(jù)源中的數(shù)據(jù)的獨(dú)立表示,并以不同于所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流的分辨率編碼,所述數(shù)據(jù)結(jié)構(gòu)包括報(bào)頭(600-680)、用于各個(gè)編碼數(shù)據(jù)流的流數(shù)據(jù)結(jié)構(gòu)(700)、以及編碼數(shù)據(jù)流的一個(gè)或多個(gè)分組(800),所述報(bào)頭(600-680)與所述流數(shù)據(jù)結(jié)構(gòu)(700)中的一個(gè)相鏈接,其中各個(gè)流數(shù)據(jù)結(jié)構(gòu)(700)包括報(bào)頭(705,740,750)、與下一個(gè)流數(shù)據(jù)結(jié)構(gòu)的鏈接(710)以及與所述編碼數(shù)據(jù)流的第一個(gè)分組的鏈接(720)。
文檔編號(hào)H04N7/24GK1643932SQ03807049
公開日2005年7月20日 申請(qǐng)日期2003年3月14日 優(yōu)先權(quán)日2002年3月27日
發(fā)明者蒂莫西·拉爾夫·杰布, 邁克爾·埃爾林·尼爾森 申請(qǐng)人:英國電訊有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1