專利名稱:數(shù)據(jù)流式傳輸系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種適于在IP(網(wǎng)際協(xié)議)網(wǎng)絡(luò)上流式傳輸音頻和視頻內(nèi)容的系統(tǒng)和方法。具體來(lái)說(shuō),本發(fā)明適用于其中可用比特率固有地會(huì)由于物理網(wǎng)絡(luò)特性和/或與其他通信量進(jìn)行爭(zhēng)用而變化的情況。例如,本發(fā)明適用于通過(guò)GPRS(通用分組無(wú)線業(yè)務(wù))或3G網(wǎng)絡(luò)到移動(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)客戶端軟件的供應(yīng)驅(qū)動(dòng)著因特網(wǎng)上視頻流式傳輸?shù)脑鲩L(zhǎng)。該技術(shù)的使用正在以極快的速度增長(zhǎng),幾乎每六個(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ì)在再現(xiàn)視頻中蔓延一段時(shí)間。如果分組過(guò)度延遲,則對(duì)于必須實(shí)時(shí)工作的解碼器,這些分組會(huì)變得無(wú)用,并被當(dāng)作丟失。在預(yù)測(cè)視頻編碼系統(tǒng)(如H.263)中,丟包及其對(duì)于再現(xiàn)視頻的視覺(jué)影響尤其顯著。通過(guò)在視頻流中引入差錯(cuò)保護(hù),可以減小但不能消除丟包的影響。研究表明這種復(fù)原技術(shù)只可以最小化而不能消除丟包的影響。
在持續(xù)丟包(其表示吞吐量的長(zhǎng)期降低)的情況下,需要流式傳輸系統(tǒng)能夠降低其長(zhǎng)期需求。這通常意味著必須降低流式傳輸媒體的比特率。
可以對(duì)諸如H.263和MPEG-4的標(biāo)準(zhǔn)壓縮技術(shù)進(jìn)行管理以提供一種能夠動(dòng)態(tài)地改變其編碼率的多媒體源。本文將具有這種屬性的視頻源描述為彈性源,即,能夠適應(yīng)網(wǎng)絡(luò)吞吐量的長(zhǎng)期變化的視頻源。這通常是通過(guò)提供連續(xù)的自適應(yīng)視頻比特率來(lái)實(shí)現(xiàn)的。這是可能的,因?yàn)榕c音頻編解碼器不同,視頻壓縮標(biāo)準(zhǔn)并沒(méi)有指定絕對(duì)的工作比特率。
可以將視頻流式傳輸系統(tǒng)設(shè)計(jì)成提供具有變化比特率的編碼流,其中比特率響應(yīng)于客戶端的反饋而即時(shí)地適應(yīng)可用網(wǎng)絡(luò)帶寬。通過(guò)控制傳輸速率,使得其在丟包的情況下快速降低并且在其它時(shí)候緩慢增加,可使該系統(tǒng)做到網(wǎng)絡(luò)友好。
然而,有兩個(gè)原因使這個(gè)方案不可實(shí)現(xiàn)。第一,實(shí)時(shí)視頻編碼通常需要大量的處理能力,這樣就使該方案不能支持很多用戶。第二,最終用戶對(duì)整體質(zhì)量的感覺(jué)將會(huì)因瞬時(shí)質(zhì)量的快速變化而受到負(fù)面影響。
對(duì)于單向流式傳輸應(yīng)用,發(fā)送器與接收器之間的延遲只在啟動(dòng)的時(shí)候可感知。因此一般技術(shù)以延遲為代價(jià)來(lái)彌補(bǔ)丟包和抖動(dòng)。倘若視頻流的平均吞吐量需求符合平均可用帶寬,那么可以將接收器緩沖區(qū)的大小設(shè)計(jì)為涵蓋所預(yù)期的延遲變化。
市場(chǎng)上的主導(dǎo)流式傳輸系統(tǒng)被認(rèn)為是使用了有效的客戶端緩沖來(lái)降低因特網(wǎng)上可能遇到的抖動(dòng)的影響。雖然這是有幫助的,但當(dāng)填充緩沖區(qū)時(shí)也會(huì)產(chǎn)生較大的啟動(dòng)延遲,通常在5到30秒之間。這些系統(tǒng)還包括使客戶端適應(yīng)可用帶寬的變化的技術(shù)。盡管這些技術(shù)的細(xì)節(jié)并不是公開(kāi)的,但可猜想這些技術(shù)都在單個(gè)文件中使用了多數(shù)據(jù)率編碼(SNR可伸縮性),并采用智能傳輸技術(shù)(例如視頻畫(huà)面速率的服務(wù)器側(cè)降低)以保持音頻的質(zhì)量??梢韵氲?,這些大量的緩沖允許相當(dāng)大部分分組重發(fā),雖然重傳本身會(huì)遇到相同的網(wǎng)絡(luò)特性。是否重發(fā)丟失數(shù)據(jù)的決定取決于這個(gè)因素和其它幾個(gè)因素。這些技術(shù)一般只應(yīng)用于單播傳輸。一般通過(guò)前向糾錯(cuò)或者基于接收端的可伸縮性來(lái)優(yōu)化多播傳輸系統(tǒng)的性能,例如可參見(jiàn)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ú)足夠可用比特率的問(wèn)題。如果視頻資料的長(zhǎng)期平均比特率需求超過(guò)了網(wǎng)絡(luò)上的可用平均比特率,那么客戶端緩沖區(qū)將最終耗盡,并且視頻的再現(xiàn)將會(huì)停止直到緩沖區(qū)被重新填滿。網(wǎng)絡(luò)可用比特率與對(duì)內(nèi)容進(jìn)行編碼的速率之間的不匹配程度決定了暫停以重新填充緩沖區(qū)的頻度。
如上所述,大部分視頻壓縮算法,包括H.263和MPEG-4,都可以實(shí)現(xiàn)為提供連續(xù)的自適應(yīng)比特率。然而一旦對(duì)視頻和音頻進(jìn)行了壓縮,它們就變得沒(méi)有彈性,并且需要按編碼比特率傳輸。
雖然網(wǎng)絡(luò)抖動(dòng)和網(wǎng)絡(luò)吞吐量的短期變化可以通過(guò)操作接收端緩沖區(qū)來(lái)吸收,但是只有在能夠吸收網(wǎng)絡(luò)吞吐量的長(zhǎng)期變化時(shí),才能夠?qū)崿F(xiàn)彈性。
分層編碼是一種用于創(chuàng)建彈性視頻源的公知技術(shù)。分層視頻壓縮使用層級(jí)編碼方案,其中通過(guò)接收順序地添加在基本表示(representation)上的多個(gè)較高層并進(jìn)行解碼,來(lái)提高接收端的質(zhì)量。無(wú)論何時(shí),各個(gè)客戶端都可以根據(jù)其與視頻源的當(dāng)前網(wǎng)絡(luò)連接性來(lái)接收任何數(shù)量的這些視頻層。在最簡(jiǎn)單的實(shí)現(xiàn)方案中,提供了在多播情況下有利的對(duì)于網(wǎng)絡(luò)狀況的粗粒度自適應(yīng)。已經(jīng)將分層視頻壓縮與用戶端緩沖相結(jié)合來(lái)增加對(duì)于網(wǎng)絡(luò)狀況的細(xì)粒度自適應(yīng)。然而,已經(jīng)表明,分層編碼技術(shù)效率比較低,并且其一般需要在客戶端進(jìn)行更多處理,對(duì)于移動(dòng)設(shè)備(其處理容量可能較低)這將導(dǎo)致一些問(wèn)題。
譯碼(transcoding)是另外一種用于創(chuàng)建彈性視頻源的公知技術(shù)。已經(jīng)表明可以將視頻譯碼設(shè)計(jì)為具有比視頻編碼低得多的計(jì)算復(fù)雜度。然而,并不能由此忽略計(jì)算復(fù)雜度,所以并不能產(chǎn)生可伸縮的視頻流式傳輸結(jié)構(gòu)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供了一種包括服務(wù)器的數(shù)據(jù)流式傳輸系統(tǒng),該服務(wù)器被配置成向客戶端流式傳輸多個(gè)編碼數(shù)據(jù)流中的一個(gè),所述多個(gè)數(shù)據(jù)流中的每個(gè)數(shù)據(jù)流都是按與所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流不同的分辨率編碼的公共數(shù)據(jù)源的獨(dú)立表示,所述服務(wù)器包括一發(fā)送器和一第一緩沖區(qū),所述發(fā)送器被配置成通過(guò)所述第一緩沖區(qū)向所述客戶端傳輸所述編碼數(shù)據(jù)流的數(shù)據(jù)分組,其中,所述發(fā)送器被配置成,對(duì)所述第一緩沖區(qū)的內(nèi)容進(jìn)行監(jiān)控,并且在從所述第一緩沖區(qū)中檢測(cè)到預(yù)定準(zhǔn)則的情況下,進(jìn)行切換以傳輸所述多個(gè)數(shù)據(jù)流中的另一個(gè)數(shù)據(jù)流。
整個(gè)系統(tǒng)的一些關(guān)鍵特性是●按網(wǎng)絡(luò)友好的方式來(lái)改變傳輸速率;●將傳輸速率與媒體編碼速率解耦;●在不引起啟動(dòng)延遲的條件下在客戶端處構(gòu)造數(shù)據(jù)緩沖區(qū);●通過(guò)利用客戶端緩存來(lái)平滑網(wǎng)絡(luò)吞吐量的短期變化;●通過(guò)在按不同比特率編碼的多個(gè)多媒體流之間進(jìn)行切換來(lái)調(diào)節(jié)長(zhǎng)期平均帶寬需求,以匹配網(wǎng)絡(luò)中的可用資源;以及,●通過(guò)利用客戶端緩存,在不影響用戶感覺(jué)到的質(zhì)量的前提下,通過(guò)選擇性地重新傳輸丟失的分組來(lái)為丟包提供恢復(fù)。
本發(fā)明可以根據(jù)網(wǎng)絡(luò)狀況的變化來(lái)改變壓縮視頻的傳輸比特率。
在本發(fā)明中,不必按單一固定的比特率來(lái)傳輸所產(chǎn)生的音頻-視頻流,這樣就使得可以按網(wǎng)絡(luò)瞬時(shí)支持的任何速率來(lái)進(jìn)行傳輸。通過(guò)在接收器中建立數(shù)據(jù)緩沖區(qū)來(lái)提供對(duì)傳輸損失的恢復(fù),使得在需要丟失數(shù)據(jù)以進(jìn)行解碼和放映之前有時(shí)間重新傳輸丟失數(shù)據(jù)。
在任一時(shí)刻,只將這種流的層級(jí)中的一個(gè)視頻流和一個(gè)音頻流傳輸給客戶端。這是以所謂的用于粗粒度自適應(yīng)性的“聯(lián)播切換”和用于細(xì)粒度自適應(yīng)性的傳輸速率變化的組合的形式來(lái)實(shí)現(xiàn)的。
本系統(tǒng)在GPRS網(wǎng)絡(luò)上運(yùn)行表現(xiàn)很好,有效地利用了可用網(wǎng)絡(luò)帶寬,以提供滿意的多媒體質(zhì)量。
已經(jīng)將本系統(tǒng)設(shè)計(jì)成可以克服IP網(wǎng)絡(luò),尤其是移動(dòng)IP網(wǎng)絡(luò)的特性,以向用戶提供具有最小啟動(dòng)延遲的一致質(zhì)量的多媒體。
所述發(fā)送器可以配置成根據(jù)所述第一緩沖區(qū)的內(nèi)容來(lái)確定在客戶端處緩存的數(shù)據(jù)量,其中,所述預(yù)定準(zhǔn)則包括一確定要在所述客戶端處緩存的數(shù)據(jù)的預(yù)定級(jí)。在客戶端確認(rèn)接收到數(shù)據(jù)分組時(shí),可以將該數(shù)據(jù)分組從所述第一緩沖區(qū)中刪除。所述發(fā)送器可以配置成,根據(jù)從所述第一緩沖區(qū)中刪除的最近的數(shù)據(jù)分組和由所述客戶端所解碼的分組數(shù)目的估計(jì),來(lái)確定在所述客戶端處緩存的數(shù)據(jù)量。
所述第一緩沖區(qū)可以包括一鏡像緩沖區(qū),其用于存儲(chǔ)關(guān)于所述第一緩沖區(qū)中的分組的數(shù)據(jù),所述發(fā)送器被配置成,利用該鏡像緩沖區(qū)中的數(shù)據(jù)來(lái)監(jiān)控所述第一緩沖區(qū)的內(nèi)容。
可以利用擴(kuò)展TPKT協(xié)議來(lái)向所述客戶端傳輸數(shù)據(jù)分組,該數(shù)據(jù)分組包括一報(bào)頭,該報(bào)頭包含一解碼時(shí)標(biāo)(timestamp)和一數(shù)據(jù)流標(biāo)號(hào)。
本系統(tǒng)還包括多個(gè)發(fā)送器,每個(gè)發(fā)送器通過(guò)相應(yīng)的第一緩沖區(qū)與相應(yīng)的客戶端進(jìn)行通信,以傳輸依據(jù)相應(yīng)的預(yù)定準(zhǔn)則所確定的所述多個(gè)數(shù)據(jù)流中的一個(gè)。
所述數(shù)據(jù)流可以是編碼視頻數(shù)據(jù)。
所述發(fā)送器可以被配置成在數(shù)據(jù)分組的傳輸中對(duì)音頻分組和視頻分組進(jìn)行多路傳輸。相鄰的音頻分組和視頻分組可以表示用于在基本上相同時(shí)刻表示的音頻和視頻信息。
所述數(shù)據(jù)流可以是編碼音頻數(shù)據(jù)。
所述分辨率可以是數(shù)據(jù)的編碼比特率。
所述服務(wù)器可以包括一編碼器,其被配置成接受饋送的數(shù)據(jù)并且將所饋送的數(shù)據(jù)編碼成所述多個(gè)編碼數(shù)據(jù)流。
所述系統(tǒng)還可以包括多個(gè)緩沖區(qū),其中,所述編碼器被配置成將每個(gè)編碼數(shù)據(jù)流輸出到所述多個(gè)緩沖區(qū)中的相應(yīng)緩沖區(qū)中,所述發(fā)送器被配置成從所述多個(gè)緩沖區(qū)中的相應(yīng)緩沖區(qū)中獲得用于各數(shù)據(jù)流的數(shù)據(jù)分組。
所述服務(wù)器可以包括一用于存儲(chǔ)所述多個(gè)編碼數(shù)據(jù)流的文件源。
根據(jù)本發(fā)明的另一方面,提出了一種數(shù)據(jù)流式傳輸系統(tǒng),其包括客戶端和服務(wù)器,所述服務(wù)器被配置成向所述客戶端流式傳輸多個(gè)編碼數(shù)據(jù)流中的一個(gè),所述多個(gè)數(shù)據(jù)流中的每個(gè)數(shù)據(jù)流是按與所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流不同的分辨率編碼的公共數(shù)據(jù)源的獨(dú)立表示,所述服務(wù)器包括發(fā)送器和第一緩沖區(qū),而所述客戶端包括接收緩沖區(qū),其中,所述發(fā)送器被配置成通過(guò)所述第一緩沖區(qū)向所述客戶端傳輸所述編碼數(shù)據(jù)流的數(shù)據(jù)分組,其中,所述客戶端被配置成將所接收到的數(shù)據(jù)分組存儲(chǔ)在所述接收緩沖區(qū)中,并向所述服務(wù)器確認(rèn)已接收,其中,所述發(fā)送器被配置成當(dāng)接收到接收確認(rèn)時(shí)從所述第一緩沖區(qū)中刪除分組,所述服務(wù)器被配置成在預(yù)定準(zhǔn)則得到滿足的情況下切換到所述多個(gè)數(shù)據(jù)流中的另一個(gè)數(shù)據(jù)流,所述預(yù)定準(zhǔn)則包括對(duì)所述第一緩沖區(qū)的內(nèi)容的分析。
所述分組可以包括分組序列數(shù)據(jù),所述客戶端被配置成基于該序列數(shù)據(jù)來(lái)請(qǐng)求重新傳輸未接收到的分組,所述服務(wù)器被配置成在接收到一重新傳輸請(qǐng)求時(shí)從所述第一緩沖區(qū)重新傳輸分組。
根據(jù)本發(fā)明的又一方面,提供了一種用于向客戶端流式傳輸多個(gè)編碼數(shù)據(jù)流中的一個(gè)的方法,所述多個(gè)數(shù)據(jù)流中的每個(gè)數(shù)據(jù)流都是按與所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流不同的分辨率編碼的公共數(shù)據(jù)源的獨(dú)立表示,該方法包括以下步驟通過(guò)第一緩沖區(qū)向所述客戶端傳輸所述編碼數(shù)據(jù)流的數(shù)據(jù)分組;對(duì)所述第一緩沖區(qū)的內(nèi)容進(jìn)行監(jiān)控;以及在從所述第一緩沖區(qū)檢測(cè)到預(yù)定準(zhǔn)則的情況下,進(jìn)行切換以傳輸所述多個(gè)數(shù)據(jù)流中的另一數(shù)據(jù)流。
所述多個(gè)數(shù)據(jù)流可以被各按不同的比特率進(jìn)行編碼,所述方法還包括以下步驟最初時(shí)傳輸最低比特率數(shù)據(jù)流的數(shù)據(jù)分組。
所述預(yù)定準(zhǔn)則可以包括確定要在客戶端緩存的數(shù)據(jù)量。
所述預(yù)定準(zhǔn)則可以包括一個(gè)或更多個(gè)網(wǎng)絡(luò)吞吐量閾值。
可以通過(guò)以下步驟來(lái)計(jì)算網(wǎng)絡(luò)吞吐量對(duì)傳入所述第一緩沖區(qū)的字節(jié)數(shù)進(jìn)行計(jì)數(shù);將所述第一緩沖區(qū)的大小減去所計(jì)數(shù)的字節(jié)數(shù);以及將所述結(jié)果除以自傳輸開(kāi)始起的時(shí)間。
所述方法還可以包括以下步驟在一個(gè)以上的時(shí)間間隔中測(cè)量網(wǎng)絡(luò)吞吐量以確定吞吐量變化。
所述預(yù)定準(zhǔn)則可以包括確定足以維持所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流的網(wǎng)絡(luò)吞吐量。
所述方法還可以包括以下步驟不考慮在客戶端處緩存的數(shù)據(jù)量而以最大速率傳輸數(shù)據(jù),其中所述預(yù)定準(zhǔn)則包括按該最大速率確定的網(wǎng)絡(luò)吞吐量。
所述數(shù)據(jù)流可被編碼成根據(jù)該數(shù)據(jù)流中的先前畫(huà)面而預(yù)測(cè)編碼的多個(gè)畫(huà)面的畫(huà)面序列,所述數(shù)據(jù)流包括分布在所述畫(huà)面序列中的預(yù)定時(shí)段中的量化源入口畫(huà)面(access picture),其中,所述量化源入口畫(huà)面的編碼方法包括以下步驟將畫(huà)面編碼成預(yù)測(cè)畫(huà)面;以及如果在所編碼的預(yù)測(cè)畫(huà)面中沒(méi)有指示關(guān)于畫(huà)面面積的信息,那么當(dāng)編碼成量化源入口畫(huà)面時(shí),將量化器指數(shù)設(shè)置為細(xì)量化值。
下面參照附圖詳細(xì)說(shuō)明本發(fā)明的示例,其中圖1是根據(jù)本發(fā)明實(shí)施例的音頻-視頻數(shù)據(jù)流式傳輸系統(tǒng)的示意圖;圖2是圖1的系統(tǒng)中所使用的視頻編碼層級(jí)的示意圖;圖3是允許實(shí)現(xiàn)視頻流之間的無(wú)失配切換的視頻編碼結(jié)構(gòu)的示意圖;圖4是適用于圖1的系統(tǒng)的客戶端-服務(wù)器結(jié)構(gòu)的示意圖;圖5a和圖5b分別是示出標(biāo)準(zhǔn)TKPT傳送分組結(jié)構(gòu)和為本發(fā)明實(shí)現(xiàn)的對(duì)該結(jié)構(gòu)的變型的示意圖;以及圖6a-6c是示出包括適于存儲(chǔ)用于本發(fā)明的數(shù)據(jù)的音頻-視頻數(shù)據(jù)流的數(shù)據(jù)結(jié)構(gòu)的各個(gè)方面的示意圖。
具體實(shí)施例方式
圖1是根據(jù)本發(fā)明實(shí)施例的音頻-視頻數(shù)據(jù)流式傳輸系統(tǒng)的示意圖。
服務(wù)器10直接從編碼器20或者從文件30接收編碼多媒體內(nèi)容,并且把這些內(nèi)容提供給一個(gè)或更多客戶端40-60。服務(wù)器10執(zhí)行少量處理(即選擇要向前傳輸?shù)姆纸M)來(lái)支持獨(dú)立訪問(wèn)多個(gè)內(nèi)容的多個(gè)客戶端40-60。在服務(wù)器10中不執(zhí)行媒體的編碼或者譯碼。
原理上,服務(wù)器10對(duì)于來(lái)自編碼器20的實(shí)時(shí)播送流(live stream)和來(lái)自文件30的預(yù)編碼流都以相同的方式進(jìn)行操作。在此具體實(shí)施例中,說(shuō)明了實(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è)分組,讀取所選分組并通過(guò)網(wǎng)絡(luò)連接110將其發(fā)送到各個(gè)客戶端。
需要從服務(wù)器10到各個(gè)客戶端40-60建立半可靠網(wǎng)絡(luò)連接110來(lái)確保幾乎所有發(fā)送分組都能接收到,由此使對(duì)于用戶感覺(jué)質(zhì)量的干擾最小。因此在網(wǎng)絡(luò)連接110的各個(gè)終端中使用緩沖區(qū)(120,130)以使得可以重傳丟失的分組。還希望網(wǎng)絡(luò)連接110是網(wǎng)絡(luò)友好的,即,當(dāng)沒(méi)有發(fā)生擁塞時(shí)可以提高所使用的比特率,并且當(dāng)發(fā)生擁塞時(shí)大幅度降低所使用的比特率。
雖然將系統(tǒng)組件示例并說(shuō)明為集成和分立組件的組合,但是應(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)行編碼,那么可以將音頻和視頻的混合編碼視為彈性的。
使用AMR(自適應(yīng)多速率)編碼器按4.8kbit/s對(duì)音頻進(jìn)行編碼。將視頻編碼成彈性表示。編碼器20以類(lèi)似于分層的方式創(chuàng)建獨(dú)立視頻流的層級(jí)結(jié)構(gòu)。此層級(jí)結(jié)構(gòu)不是通過(guò)使各個(gè)流依賴于層級(jí)結(jié)構(gòu)內(nèi)所有較低的流來(lái)創(chuàng)建的,而是對(duì)各個(gè)流進(jìn)行獨(dú)立編碼。這種層級(jí)結(jié)構(gòu)是公知的,被稱為“聯(lián)播(simulcast)”。
雖然只說(shuō)明了使用低比特率AMR方案來(lái)編碼音頻數(shù)據(jù),但是也支持其它AMR編碼速率和其它編碼標(biāo)準(zhǔn),如MP3。可以按與下面對(duì)于視頻所述方式類(lèi)似的方式將不同速率下的編碼音頻組織成獨(dú)立流的層級(jí)結(jié)構(gòu),但是由于各個(gè)音頻幀一般是獨(dú)立編碼的,所以編碼表示之間的切換得到簡(jiǎn)化。
使用對(duì)ITU-T標(biāo)準(zhǔn)H.263的擴(kuò)展所創(chuàng)建的視頻層級(jí)結(jié)構(gòu)包括幀內(nèi)流(intra stream)200,允許隨機(jī)訪問(wèn)視頻流;和一個(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)還包含切換流(switching stream)220、230、240,其允許從幀內(nèi)流200到最低速率播放流210a的切換以及播放流之間的切換。
由于編碼算法采用運(yùn)動(dòng)補(bǔ)償預(yù)測(cè),因而在播放流中的任意點(diǎn)處進(jìn)行比特流間切換即便是可能的,也將由于不同比特流的相同時(shí)刻的重構(gòu)幀之間的不匹配而導(dǎo)致視覺(jué)缺陷。這些視覺(jué)缺陷還將在一段時(shí)間中蔓延。
在當(dāng)前的視頻編碼標(biāo)準(zhǔn)中,只有在將來(lái)幀/區(qū)域不使用當(dāng)前切換位置(即,在入口畫(huà)面處)之前的任何信息的位置處,才可以進(jìn)行比特流之間的完美(無(wú)失配)切換。此外,通過(guò)以固定(如1秒)間隔放置入口畫(huà)面,可獲得VCR功能,例如用于流式傳輸視頻內(nèi)容的隨機(jī)訪問(wèn)或者“快進(jìn)”和“快退”(增加的回放速率)。用戶可以跳過(guò)一部分視頻并且在任何入口畫(huà)面位置重新開(kāi)始播放。類(lèi)似地,通過(guò)只傳輸入口畫(huà)面可以獲得增加的回放速率,即快進(jìn)。
然而,公知的是,入口畫(huà)面所需要的比特比運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)幀的要多。因此,使用幀內(nèi)流200和切換流220、230、240。切換流的主要屬性是,即使使用不同的參考幀也可以獲得相同的畫(huà)面。
層級(jí)結(jié)構(gòu)的主要用途是使服務(wù)器10將播放流210a或210b傳輸?shù)娇蛻舳?0-60,以實(shí)現(xiàn)以下兩種操作之間的最佳平衡,第一種操作是在客戶端40-60處構(gòu)建接收數(shù)據(jù)的緩沖區(qū)以提供對(duì)分組丟失和網(wǎng)絡(luò)吞吐量的突然下降的彈性應(yīng)變,第二種操作是根據(jù)網(wǎng)絡(luò)連接110瞬時(shí)支持的最高比特率將最佳播放流210a或210b提供給客戶端40-60。
幀內(nèi)流200是一系列幀內(nèi)編碼畫(huà)面(201,202),其用于提供隨機(jī)訪問(wèn)和從嚴(yán)重差錯(cuò)狀況的恢復(fù)。播放流210a、210b包括預(yù)測(cè)編碼畫(huà)面(211a,212a,213a,214a,215a;211b,212b,213b,214b,215b),這些預(yù)測(cè)編碼畫(huà)面可以是雙向預(yù)測(cè)的,并且可以根據(jù)多個(gè)參考畫(huà)面來(lái)預(yù)測(cè)。播放流210a、210b還包括定期入口畫(huà)面216a、217a;216b,217b。切換流220,230,240包括一系列鏈接畫(huà)面(221,222;231,232;241,242)。
為各個(gè)流類(lèi)型指定環(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)畫(huà)面(例如,幀內(nèi)畫(huà)面201),并將該畫(huà)面發(fā)送到客戶端40。然后服務(wù)器10選擇鏈接畫(huà)面(221)以從幀內(nèi)流220切換到具有最低編碼比特率的播放流210a,隨后從該播放流開(kāi)始提供服務(wù)(從213a開(kāi)始)。
將分組傳輸?shù)娇蛻舳?0是一個(gè)獨(dú)立的過(guò)程,其傳輸速率取決于網(wǎng)絡(luò)狀態(tài)和所使用的傳輸協(xié)議。然而,希望最初時(shí)傳輸速率大于具有最低編碼比特率的播放流210a的編碼比特率。這將使客戶端40可以在接收到數(shù)據(jù)并進(jìn)行解碼的時(shí)刻立即開(kāi)始解碼并將媒體呈現(xiàn)給用戶,同時(shí)使客戶端40可以在其解碼緩沖區(qū)中積累超出的壓縮媒體數(shù)據(jù)。
在入口畫(huà)面(例如以上示例中的入口畫(huà)面217a)處,(例如,由于網(wǎng)絡(luò)容量增加或減小)客戶端40和/或服務(wù)器10可以確定更為合適的不同播放流。在上面的示例中,通過(guò)服務(wù)器10傳輸鏈接畫(huà)面232而非入口畫(huà)面217a來(lái)完成從低速率的播放流210a到較高速率的播放流210b的切換。鏈接畫(huà)面232鏈接到較高速率播放流210b的播放流畫(huà)面215b,以使客戶端40接收該播放流。以類(lèi)似的方式完成向比特率降低的播放流的切換。
已經(jīng)研究出三種對(duì)鏈接畫(huà)面進(jìn)行編碼的方法。各種方法提供了下面三者之間的不同折衷由于切換而引起的偏移累積、實(shí)際切換的比特率方面的成本,以及由于對(duì)允許無(wú)偏移低比特率切換的常規(guī)類(lèi)型畫(huà)面進(jìn)行編碼而產(chǎn)生的對(duì)于單個(gè)播放流的質(zhì)量的影響。
1、預(yù)測(cè)編碼鏈接畫(huà)面在第一種方法中,將鏈接畫(huà)面生成為預(yù)測(cè)畫(huà)面。按如下方式對(duì)這些畫(huà)面進(jìn)行編碼在重構(gòu)時(shí),其與目的播放流中的同步入口畫(huà)面的重構(gòu)是相似的,例如,具有很小的均方差??梢詫⑷肟诋?huà)面編碼為預(yù)測(cè)畫(huà)面。用于對(duì)鏈接畫(huà)面進(jìn)行編碼的比特?cái)?shù)確定了重構(gòu)的鏈接畫(huà)面與重構(gòu)的入口畫(huà)面之間的匹配度,并且由此確定了由于切換而產(chǎn)生的偏移量。然而,每次切換產(chǎn)生的偏移都將累積。
2、幀內(nèi)編碼鏈接畫(huà)面在第二種方法中,將鏈接畫(huà)面生成為幀內(nèi)畫(huà)面。按如下方式對(duì)這些畫(huà)面進(jìn)行編碼在重構(gòu)時(shí),其與目的播放流中的同步入口畫(huà)面的重構(gòu)是相似的,例如,具有很小的均方差??梢詫⑷肟诋?huà)面編碼為預(yù)測(cè)畫(huà)面。用于對(duì)鏈接畫(huà)面進(jìn)行編碼的比特?cái)?shù)確定了重構(gòu)的鏈接畫(huà)面與重構(gòu)的入口畫(huà)面之間的匹配度,并且由此確定了由于切換而產(chǎn)生的偏移量。然而,對(duì)于給定的不匹配量,幀內(nèi)編碼鏈接畫(huà)面通常比預(yù)測(cè)編碼鏈接畫(huà)面需要更多比特?cái)?shù)。對(duì)于鏈接畫(huà)面使用幀內(nèi)編碼防止了偏移的累積。
3、量化源編碼鏈接畫(huà)面在第三種方法中,通過(guò)基于以下文獻(xiàn)中所述概念的技術(shù)對(duì)鏈接畫(huà)面進(jìn)行編碼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,可在ftp://standard.pictel.com/video-site/處獲得,本文將其稱為量化源畫(huà)面。
在圖3中示出了用于量化源畫(huà)面的編碼結(jié)構(gòu)。分別在步驟300和310中以相同的量化指數(shù)對(duì)源畫(huà)面和運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)獨(dú)立地進(jìn)行量化,在步驟320中相減之前對(duì)它們進(jìn)行轉(zhuǎn)換,并在步驟330中對(duì)它們進(jìn)行可變長(zhǎng)度編碼。通過(guò)在步驟340中將減法器320的輸出與量化和轉(zhuǎn)換310中的輸出相加,并將在步驟350中對(duì)該結(jié)果進(jìn)行逆變換和反量化來(lái)形成重構(gòu)畫(huà)面。將重構(gòu)畫(huà)面存儲(chǔ)在畫(huà)面存儲(chǔ)器360中。結(jié)果,重構(gòu)畫(huà)面就是量化源畫(huà)面,并且該重構(gòu)畫(huà)面不依賴于運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)。因此,當(dāng)根據(jù)不同參考畫(huà)面進(jìn)行預(yù)測(cè)時(shí),可以同樣地重構(gòu)給定的源畫(huà)面,并由此可以實(shí)現(xiàn)無(wú)偏移切換。運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)不是非相關(guān)的,其減少了待進(jìn)行可變長(zhǎng)度編碼的信號(hào)的熵,并且由此減小了由對(duì)畫(huà)面進(jìn)行編碼而產(chǎn)生的比特?cái)?shù)。
把入口畫(huà)面也編碼成量化源畫(huà)面,并選擇與鏈接畫(huà)面相同的編碼模式(幀內(nèi)編碼或幀間編碼)選擇和量化器選擇。這確保了在目的端播放流中,該鏈接畫(huà)面的重構(gòu)與同步入口畫(huà)面的重構(gòu)一樣。
對(duì)鏈接畫(huà)面進(jìn)行編碼所需的比特?cái)?shù)由對(duì)應(yīng)的入口畫(huà)面的編碼來(lái)確定。用于對(duì)入口畫(huà)面進(jìn)行編碼的比特?cái)?shù)是根據(jù)如何進(jìn)行量化來(lái)確定的,但是通常大于用于對(duì)預(yù)測(cè)畫(huà)面進(jìn)行編碼的比特?cái)?shù)并小于對(duì)幀內(nèi)畫(huà)面進(jìn)行編碼的比特?cái)?shù)。這是因?yàn)槭褂昧祟A(yù)測(cè),該編碼比幀內(nèi)編碼更為高效,但預(yù)測(cè)誤差的量化使得其沒(méi)有一般預(yù)測(cè)有效。由此,量化源畫(huà)面的使用使得能夠進(jìn)行無(wú)偏移切換,但是代價(jià)是播放流的編碼效率的降低。
通過(guò)與預(yù)測(cè)畫(huà)面相同的H.263語(yǔ)法來(lái)編碼量化源畫(huà)面,但通過(guò)將MPPTYPE的前三位設(shè)置為保留值“110”來(lái)與預(yù)測(cè)畫(huà)面相區(qū)別。
量化源畫(huà)面的周期性編碼可以導(dǎo)致畫(huà)面的靜態(tài)區(qū)域中的跳動(dòng)效果(beating effect)。下面對(duì)其進(jìn)行說(shuō)明。在一般的預(yù)測(cè)編碼中,不對(duì)已經(jīng)編碼為源畫(huà)面的合理表示的畫(huà)面靜態(tài)區(qū)域進(jìn)行修改。在編碼量化源畫(huà)面的這些區(qū)域時(shí),必須對(duì)預(yù)測(cè)進(jìn)行量化,并且如果通過(guò)用于畫(huà)面的非靜態(tài)區(qū)域的量化指數(shù)進(jìn)行量化,則使區(qū)域發(fā)生變化,可能使其更糟,但是無(wú)論在什么情況下,都會(huì)使其產(chǎn)生變化。這種變化即為跳動(dòng)效果。
通過(guò)下面的方式克服該跳動(dòng)效果當(dāng)對(duì)于畫(huà)面的一個(gè)區(qū)域的預(yù)測(cè)提供了足夠好的源表示時(shí),不需要傳輸信息,并且由此不會(huì)改變?cè)搮^(qū)域。所以當(dāng)把入口畫(huà)面編碼成量化源畫(huà)面時(shí),進(jìn)行測(cè)試以確定如果畫(huà)面已經(jīng)編碼成預(yù)測(cè)畫(huà)面而不是量化源畫(huà)面,是否要傳輸關(guān)于該區(qū)域的信息。如果不傳輸信息,則將步驟300和310的量化和步驟350的反量化所使用的量化指數(shù)設(shè)定為較小的值,將減法器320的輸出(通常稱為預(yù)測(cè)誤差)設(shè)定為零,由此該新重構(gòu)畫(huà)面的該區(qū)域等于利用細(xì)量化器進(jìn)行了量化的先前重構(gòu)畫(huà)面的對(duì)應(yīng)區(qū)域。在H.263和其它標(biāo)準(zhǔn)中,量化指數(shù)的范圍從1(細(xì)量化)到31(粗量化)。較小的指數(shù)一般是指小于或等于8的值。這使重構(gòu)畫(huà)面的非必要變化最小,同時(shí)也使必須傳輸?shù)男畔⒘孔钚?。然而,需要以?duì)應(yīng)鏈接畫(huà)面中的比特率為代價(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;以及用于各個(gè)客戶端的分組發(fā)送器100和網(wǎng)絡(luò)緩沖區(qū)120。
客戶端40將解碼緩沖區(qū)41中的信息量和其接收數(shù)據(jù)的速率通知給服務(wù)器10。服務(wù)器10使用此信息來(lái)確定何時(shí)進(jìn)行播放流之間的切換。例如,如果客戶端40積累了一個(gè)閾值以上的數(shù)據(jù),比方說(shuō)解碼緩沖區(qū)41中有15秒數(shù)據(jù),而客戶端40以大于或等于層級(jí)結(jié)構(gòu)中的下一個(gè)更高速率播放流的編碼速率的速率接收數(shù)據(jù),則服務(wù)器10可以在下一個(gè)鏈接畫(huà)面處將客戶端的分組發(fā)送器100切換到下一個(gè)更高的播放流。
類(lèi)似地,當(dāng)由客戶端40在其編碼緩沖區(qū)41中所積累的數(shù)據(jù)量小于閾值時(shí),服務(wù)器10可以在下一個(gè)鏈接畫(huà)面處將客戶端的分組發(fā)送器100切換到下一個(gè)較低的播放流。
總體效果為,根據(jù)網(wǎng)絡(luò)的擁塞狀態(tài),傳輸速率以網(wǎng)絡(luò)友好的方式變化,但是由于客戶端解碼緩沖區(qū)41中積累的數(shù)據(jù),用戶察覺(jué)不到因傳輸速率的短期改變?cè)斐傻馁|(zhì)量變化。通過(guò)切換到具有不同編碼速率的流來(lái)應(yīng)付傳輸速率的長(zhǎ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ò)特性分為三類(lèi)分組抖動(dòng)、丟包和可變吞吐量。實(shí)際中這三種網(wǎng)絡(luò)特性不是獨(dú)立的,都與網(wǎng)絡(luò)擁塞相關(guān),并且在移動(dòng)網(wǎng)絡(luò)的情況下,與物理層的性能降低相關(guān)。
通過(guò)將傳輸速率與媒體編碼率分開(kāi),當(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)分類(lèi)為暫時(shí)連接中斷(由下面的差錯(cuò)恢復(fù)處理來(lái)應(yīng)對(duì)),所以這種數(shù)據(jù)積累將屏蔽掉所有的分組抖動(dòng)。
通過(guò)在解碼緩沖區(qū)41中積累數(shù)據(jù),為在需要對(duì)丟失的分組進(jìn)行解碼之前重傳丟失分組提供了時(shí)間。同樣地,通過(guò)設(shè)計(jì)解碼器緩沖區(qū)41的大小來(lái)使其包含的數(shù)據(jù)可多于多個(gè)往返延遲所傳輸?shù)臄?shù)據(jù),為少量重傳提供時(shí)間以從丟包狀態(tài)中恢復(fù)。這使得能夠從大部分丟包情況恢復(fù),而不影響已解碼的媒體質(zhì)量,并使連接具有半可靠性。
最后,同樣通過(guò)在解碼緩沖區(qū)41中積累數(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í),而不是簡(jiǎn)單地解碼并盡快放映。為此目的使用時(shí)標(biāo),該時(shí)標(biāo)也可用于音頻和視頻的同步。
由于網(wǎng)絡(luò)變化,以字節(jié)為單位測(cè)量的客戶端的解碼緩沖區(qū)41中的數(shù)據(jù)量可能隨時(shí)間變化。另外,根據(jù)數(shù)據(jù)量所表示的媒體放映時(shí)間的長(zhǎng)度所測(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ū)41中的最新數(shù)據(jù)變得越來(lái)越新,同時(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)越來(lái)越接近這些緩沖區(qū)中的最新數(shù)據(jù)。
優(yōu)選地,環(huán)形緩沖區(qū)70、80、90以及客戶端解碼緩沖區(qū)41的最佳大小使得各個(gè)緩沖區(qū)可以包含相同的數(shù)據(jù)量(以該數(shù)據(jù)所表示的媒體放映時(shí)間來(lái)測(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ù)。類(lèi)似地,當(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的反饋,服務(wù)器10即可獲知客戶端40接收了多少數(shù)據(jù),從而可以確定播放流之間的切換。
客戶端的解碼緩沖區(qū)41中的數(shù)據(jù)積累能夠恢復(fù)一些網(wǎng)絡(luò)故障,例如抖動(dòng)、丟包和可變吞吐量。顯而易見(jiàn),不可能從所有網(wǎng)絡(luò)故障中恢復(fù),除非將解碼緩沖區(qū)41設(shè)計(jì)為包含整個(gè)媒體內(nèi)容并且直到接收了所有數(shù)據(jù)時(shí)才開(kāi)始放映。由于這種情況不是流式傳輸,而是下載,所以需要一種從嚴(yán)重網(wǎng)絡(luò)故障中得到恢復(fù)的策略。
當(dāng)網(wǎng)絡(luò)吞吐量下降,并在相當(dāng)長(zhǎ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必須重新開(kāi)始流式傳輸,就像從客戶端建立了一個(gè)新的連接一樣服務(wù)器10必須找到幀內(nèi)流中的一點(diǎn),并從該點(diǎn)開(kāi)始流式傳輸,然后通過(guò)鏈接流切換到最低速率播放流。對(duì)于用戶的影響為漏失了從解碼緩沖區(qū)41變?yōu)榭盏疆?dāng)服務(wù)器開(kāi)始傳送該幀內(nèi)流時(shí)這段時(shí)間內(nèi)的媒體。
因?yàn)榉?wù)器10知道客戶端何時(shí)開(kāi)始解碼以及已經(jīng)成功接收了多少數(shù)據(jù),其將獲知客戶端的解碼緩沖區(qū)41是否變空。因此,可以在幀內(nèi)流畫(huà)面處重新開(kāi)始,而不需從客戶端獲得特殊的消息。然而,為了進(jìn)行系統(tǒng)復(fù)原,例如從服務(wù)器和客戶端的不同時(shí)鐘速率中恢復(fù),在這種情況下從客戶端40向服務(wù)器10發(fā)送控制消息。
原理上,從文件的流式傳輸與實(shí)時(shí)播送流式傳輸相同。實(shí)際上,前者更為簡(jiǎn)單。由于當(dāng)需要時(shí)可以從文件中讀取數(shù)據(jù),所以不需要設(shè)立環(huán)形緩沖70、80、90。然而,服務(wù)器10使用相同的技術(shù)來(lái)填充客戶端40的解碼緩沖區(qū)41并在播放流之間切換。在解碼緩沖區(qū)41變空的情況下,不需要在與帶有幀內(nèi)流畫(huà)面的內(nèi)容中的隨后點(diǎn)重新開(kāi)始,因?yàn)楫?dāng)網(wǎng)絡(luò)吞吐量重新變得充分時(shí)可以繼續(xù)放映用戶只會(huì)在一段時(shí)間內(nèi)察覺(jué)到?jīng)]有媒體放映。
使用幀內(nèi)流可以實(shí)現(xiàn)多種技巧模式,如快進(jìn)、快退和隨機(jī)訪問(wèn)。
通過(guò)在覆蓋環(huán)形緩沖區(qū)70、80、90中的‘舊數(shù)據(jù)’之前將其寫(xiě)入文件,由于總可以得到用于流式傳輸?shù)娇蛻舳说臄?shù)據(jù)(只能從文件而不是從環(huán)形緩沖區(qū)70、80、90中讀取),因而可以避免上述的解碼緩沖區(qū)41變空、用戶漏失利用幀內(nèi)流畫(huà)面進(jìn)行恢復(fù)之前的內(nèi)容的問(wèn)題。
該功能還使得客戶端可以暫停所放映媒體一段不確定的時(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ì)說(shuō)明。
標(biāo)準(zhǔn)TPKT協(xié)議定義了如圖5a所示的報(bào)頭,隨后是凈荷。分組長(zhǎng)度表示以八位字節(jié)為單位的報(bào)頭和凈荷的組合長(zhǎng)度。
在用于本發(fā)明的實(shí)現(xiàn)中,擴(kuò)展了TPKT的報(bào)頭(在圖5b中示出了該報(bào)頭的示例),隨后為凈荷。分組長(zhǎng)度表示以八位字節(jié)為單位的報(bào)頭、時(shí)標(biāo)(如果存在)和凈荷的組合長(zhǎng)度。T為表示是否存在時(shí)標(biāo)的位,M為表示凈荷是否包含音頻或視頻信息的位。
如上所述,需要時(shí)標(biāo)來(lái)進(jìn)行數(shù)據(jù)解碼的正確定時(shí)。嵌入分組報(bào)頭的信息包括分組長(zhǎng)度、分組中數(shù)據(jù)的時(shí)標(biāo)和流標(biāo)號(hào)。
設(shè)置流標(biāo)號(hào)以使得可將音頻和視頻復(fù)用到單個(gè)TCP連接中。這確保了音頻和視頻傳輸?shù)耐?。如果使用分立的多個(gè)TCP連接,則可能這些連接對(duì)于網(wǎng)絡(luò)特性的響應(yīng)略有不同,并且將產(chǎn)生不同的吞吐量,這將最終導(dǎo)致客戶端解碼緩沖區(qū)中的數(shù)據(jù)量(以放映時(shí)間來(lái)測(cè)量)的極大不同。雖然可以對(duì)這些不同進(jìn)行管理,但是通過(guò)使用單個(gè)TCP連接并將同一放映時(shí)間的音頻和視頻復(fù)用在相鄰分組中可完全避免該問(wèn)題。事實(shí)上,向只有視頻的系統(tǒng)中添加音頻只需要與關(guān)聯(liá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限制傳輸速率以保持此充滿程度。
通過(guò)對(duì)已經(jīng)發(fā)送到網(wǎng)絡(luò)緩沖區(qū)120的字節(jié)進(jìn)行計(jì)數(shù)、從該計(jì)數(shù)中減去網(wǎng)絡(luò)緩沖區(qū)的大小、并除以從開(kāi)始傳輸起經(jīng)過(guò)的時(shí)間,來(lái)估算網(wǎng)絡(luò)吞吐量。使用所傳輸字節(jié)的兩次計(jì)數(shù)以及發(fā)送這些字節(jié)所需時(shí)間的兩次測(cè)量、根據(jù)一對(duì)數(shù)據(jù)計(jì)算吞吐量、然后周期性地將不再使用的對(duì)重設(shè)為零,并在其間切換,來(lái)計(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ù)量超過(guò)閾值時(shí),服務(wù)器10限制其傳輸速率以保持恒定的緩沖區(qū)充滿狀態(tài)。在這種情況下,將網(wǎng)絡(luò)吞吐量估計(jì)為當(dāng)前播放流的編碼比特率。當(dāng)在此狀態(tài)中時(shí),網(wǎng)絡(luò)能夠傳輸比當(dāng)前流式傳輸?shù)牟シ帕魉俾矢叩牟シ帕鳎且驗(yàn)榉?wù)器10由于其自身的速率限制不能對(duì)網(wǎng)絡(luò)吞吐量進(jìn)行真實(shí)估計(jì),所以服務(wù)器10不能進(jìn)行切換。為了避開(kāi)此狀態(tài),服務(wù)器定期地忽略客戶端解碼緩沖區(qū)的充滿閾值,并在給定的時(shí)間段內(nèi)或者對(duì)于給定的數(shù)據(jù)量以全速率進(jìn)行流式傳輸。從網(wǎng)絡(luò)緩沖區(qū)120變滿時(shí)起,服務(wù)器10記錄發(fā)送到網(wǎng)絡(luò)緩沖區(qū)120的字節(jié)數(shù)和所用的時(shí)間,該時(shí)間由發(fā)送函數(shù)的阻塞調(diào)用來(lái)檢測(cè)。然后服務(wù)器10估算可實(shí)現(xiàn)的吞吐量,并使用該吞吐量來(lái)確定是否要切換到更高速率的播放流。
如前所述,通過(guò)獲知保存在網(wǎng)絡(luò)緩沖區(qū)120中的數(shù)據(jù),服務(wù)器10能夠間接獲知客戶端40接收了哪些數(shù)據(jù),以及哪些數(shù)據(jù)被傳送到其解碼緩沖區(qū)41中。然后使用此信息來(lái)確定何時(shí)在播放流之間進(jìn)行切換,以及何時(shí)激活差錯(cuò)恢復(fù)過(guò)程。然而,在大多數(shù)套接字實(shí)現(xiàn)中并不支持服務(wù)器的網(wǎng)絡(luò)緩沖區(qū)120的內(nèi)容和充滿度的可見(jiàn)性。為了監(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í)標(biāo)。在已知網(wǎng)絡(luò)緩沖區(qū)120的大小并假設(shè)其始終充滿的情況下,服務(wù)器10通過(guò)鏡像緩沖區(qū)120a來(lái)訪問(wèn)網(wǎng)絡(luò)緩沖區(qū)120中的最舊數(shù)據(jù)的時(shí)標(biāo),該時(shí)標(biāo)與客戶端的解碼緩沖區(qū)41中的最新數(shù)據(jù)的時(shí)標(biāo)相同。
在測(cè)試中,已發(fā)現(xiàn)服務(wù)器10的網(wǎng)絡(luò)緩沖區(qū)120始終充滿這一假設(shè)在大部分時(shí)候是正確的。這是因?yàn)閷?duì)傳輸過(guò)程進(jìn)行了控制以盡快發(fā)送到網(wǎng)絡(luò)緩沖區(qū)120。如果網(wǎng)絡(luò)緩沖區(qū)120變得不再充滿,則影響為低估客戶端40的數(shù)據(jù)量,該影響大部分情況下是安全的,這是因?yàn)橹饕獑?wèn)題是客戶端40的數(shù)據(jù)用盡,而不是溢出。實(shí)際上,可以將解碼緩沖區(qū)41設(shè)計(jì)得比需要存儲(chǔ)的最大數(shù)據(jù)流還要大。無(wú)論在什么情況下,如果解碼緩沖區(qū)41變滿,則客戶端40停止從網(wǎng)絡(luò)緩沖區(qū)130讀取數(shù)據(jù),這將反過(guò)來(lái)阻止服務(wù)器網(wǎng)絡(luò)緩沖區(qū)120變空,并停止傳輸。
為了確定客戶端解碼緩沖區(qū)41中的確切數(shù)據(jù)量,服務(wù)器還需要獲知客戶端當(dāng)前正在解碼和放映的數(shù)據(jù)分組的時(shí)標(biāo)。服務(wù)器10基于兩個(gè)假設(shè)來(lái)計(jì)算確切數(shù)據(jù)量第一,客戶端40在服務(wù)器10發(fā)送第一個(gè)分組之后立即開(kāi)始解碼;第二,在流式傳輸期間客戶端的時(shí)鐘與服務(wù)器的時(shí)鐘無(wú)顯著偏差。
實(shí)際上兩個(gè)假設(shè)都是有效的。將客戶端40設(shè)計(jì)為一旦接收到數(shù)據(jù)立即開(kāi)始解碼,從而關(guān)于服務(wù)器所估算的放映時(shí)間的任何錯(cuò)誤都將導(dǎo)致對(duì)解碼緩沖區(qū)41中的數(shù)據(jù)量的低估,如上所述這并不是問(wèn)題。與被緩沖的數(shù)據(jù)量相比,在一般流式傳輸會(huì)話過(guò)程中的客戶端和服務(wù)器時(shí)鐘之間的偏移是可以忽略的。例如,假如偏差為百萬(wàn)分之100的差別,則要花10000秒或者接近三個(gè)小時(shí)才能發(fā)生一秒鐘偏移。在累積了大量偏移的極少數(shù)情況下,客戶端40可以通過(guò)使用控制消息,如前述所發(fā)送的用于解碼緩沖區(qū)下溢的消息,來(lái)向服務(wù)器10告警。
服務(wù)器10最初以最低比特率對(duì)播放流進(jìn)行流式傳輸,以使客戶端40解碼并立即向用戶放映媒體,同時(shí)還增加了解碼緩沖區(qū)41中的數(shù)據(jù)量以從網(wǎng)絡(luò)故障中恢復(fù)。如果網(wǎng)絡(luò)具有足夠能力來(lái)支持更高速率的播放流的傳輸,則服務(wù)器10應(yīng)該在適當(dāng)?shù)臅r(shí)刻切換到更高速率的播放流來(lái)進(jìn)行流式傳輸。
有很多種可能的策略可用于確定何時(shí)切換到更高速率的播放流。優(yōu)選地,客戶端40應(yīng)當(dāng)在其解碼緩沖區(qū)41中具有足夠的數(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ì)于用戶而言該切換可能比較低速率的恒定質(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)槿肟诋?huà)面只是定期發(fā)生的,并且希望在第一次向下切換之后恢復(fù)到解碼緩沖區(qū)的充滿狀態(tài),從而不必進(jìn)行第二次切換。
圖6a-6c是示出用于存儲(chǔ)適用于本發(fā)明的音頻-視頻數(shù)據(jù)源的數(shù)據(jù)結(jié)構(gòu)的各個(gè)方面的示意圖。
圖6a所示的主數(shù)據(jù)結(jié)構(gòu)使得可以在單個(gè)文件中存儲(chǔ)多個(gè)音頻播放流、一個(gè)幀內(nèi)視頻流、和多個(gè)視頻播放和切換流。
由于本發(fā)明中所創(chuàng)建和使用的音頻視頻數(shù)據(jù)源具有可一次傳輸?shù)娇蛻舳说亩鄠€(gè)編碼流,所以不可能在傳統(tǒng)的順序文件中進(jìn)行存儲(chǔ)。例如,對(duì)于視頻,可以在各個(gè)播放流中對(duì)具體的源畫(huà)面進(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ù)目和類(lèi)型的信息。對(duì)于各種類(lèi)型的流的第一個(gè)和最后一個(gè)實(shí)例,該數(shù)據(jù)結(jié)構(gòu)還包括指向各個(gè)流的報(bào)頭的指針610-680(以相對(duì)于文件起始位置的偏移量表示)。
每個(gè)指針620-680指向包括流報(bào)頭700的流數(shù)據(jù)結(jié)構(gòu),該流報(bào)頭700包含指向同一類(lèi)型的下一流報(bào)頭的指針710、分別指向流的第一個(gè)和最后一個(gè)分組的指針720、730。每個(gè)流類(lèi)型使用特定的流報(bào)頭類(lèi)型,然而對(duì)于所有流報(bào)頭類(lèi)型某些元素是相同的流標(biāo)號(hào)705、指向相同類(lèi)型的下一流報(bào)頭的指針710、以及分別指向該流的第一個(gè)和最后一個(gè)分組的指針720、730。在圖6b中示出了只包含這些共同元素的示例流報(bào)頭。播放和音頻流報(bào)頭還包含該流的編碼比特率。切換流報(bào)頭包含該切換流可以切換自的播放流的流標(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ù)包括指向流中下一分組的指針801、時(shí)標(biāo)802、分組序號(hào)803、分組大小804、以及幀號(hào)805(即,該分組(可能和其它分組一起)表示的視頻畫(huà)面或者音頻幀的序號(hào))。切換分組另外還包含“from”播放流和“to”播放流(切換分組在兩者之間進(jìn)行比特率切換)中的分組序號(hào)。切換流分組報(bào)頭有效地限定了切換點(diǎn),并且包含切換前要從“from”流播放的最后一個(gè)分組的序號(hào)以及切換后來(lái)自“to”流的要播放的第一個(gè)分組的序號(hào)。序號(hào)從0開(kāi)始,并且不為負(fù)。在切換時(shí),可以使用指針來(lái)支持流之間的引導(dǎo),不過(guò)在本特定實(shí)施例中沒(méi)有采用此方法。
在向文件中添加時(shí),指向最后一個(gè)流數(shù)據(jù)結(jié)構(gòu)和最后一個(gè)分組的指針是很有用的,因?yàn)槔眠@些指針可以迅速訪問(wèn)文件要進(jìn)行擴(kuò)展的點(diǎn),而不需要搜索整個(gè)文件。
數(shù)據(jù)結(jié)構(gòu)的復(fù)雜度取決于相互交織的可能很多流中的分組,以及支持切換和恢復(fù)的需要。需要通過(guò)指針來(lái)從一個(gè)分組導(dǎo)向另一分組,因?yàn)樵诹髦羞B續(xù)的分組通常在文件中并不是連續(xù)存儲(chǔ)的。切換和恢復(fù)分組的寫(xiě)入操作需要被記錄的源和目的分組的精確細(xì)節(jié)?;胤胚^(guò)程中流間的切換首先需要識(shí)別下一可用切換分組的標(biāo)識(shí),緊隨其后是“from”流中的剩余分組的回放,切換分組的回放,然后是從適當(dāng)?shù)狞c(diǎn)開(kāi)始回放“to”流中的分組。此外當(dāng)進(jìn)行流間切換時(shí)必須沒(méi)有可感知的延遲。
在測(cè)試中,使用BTCellnetTMGPRS網(wǎng)絡(luò)對(duì)基于文件的流和實(shí)時(shí)播送流的情況進(jìn)行了研究。使用臺(tái)式奔騰(Pentium)PC來(lái)運(yùn)行解碼器和服務(wù)器??蛻舳藶橥ㄟ^(guò)紅外線與Motorola TimeportTMGPRS移動(dòng)電話相連的Compaq iPaqTM。
在只有視頻的結(jié)構(gòu)中,使用兩種切換流,其比特率分別為6kbit/s和12kbit/s。
該系統(tǒng)如所期望地運(yùn)行。從幀內(nèi)流開(kāi)始傳輸,然后切換到6kbit/s播放流,在該播放流停留一段時(shí)間,因?qū)嶋H傳輸速率大于6kbit/s,因而在客戶端積累了數(shù)據(jù)。然后當(dāng)積累了足夠的數(shù)據(jù)時(shí),并且短期平均接收速率大于12kbit/s時(shí),切換到更高速率的播放流。
在長(zhǎng)期會(huì)話過(guò)程中,有時(shí)會(huì)由于網(wǎng)絡(luò)吞吐量的下降而切換回較低速率的播放流。并且極少會(huì)由于相當(dāng)一段時(shí)間內(nèi)網(wǎng)絡(luò)不能向客戶端發(fā)送數(shù)據(jù)而中斷媒體放映。
對(duì)于大部分會(huì)話都具有此整體效果,用戶可以觀看連續(xù)的媒體放映,偶爾有質(zhì)量變化,但是沒(méi)有通常與誤碼和丟包相關(guān)聯(lián)的失真。只有極少情況下,才會(huì)由于嚴(yán)重的網(wǎng)絡(luò)故障和吞吐量的降低而使媒體放映完全暫停。
權(quán)利要求
1.一種數(shù)據(jù)流式傳輸系統(tǒng),包括服務(wù)器(10),其被配置成向客戶端(40,50,60)流式傳輸多個(gè)編碼數(shù)據(jù)流中的一個(gè),所述多個(gè)數(shù)據(jù)流中的每個(gè)數(shù)據(jù)流都是按與所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流不同的分辨率編碼的公共數(shù)據(jù)源的獨(dú)立表示,所述服務(wù)器(10)包括一發(fā)送器(100)和一第一緩沖區(qū)(120),所述發(fā)送器(100)被配置成通過(guò)所述第一緩沖區(qū)(120)向所述客戶端(40,50,60)傳輸所述編碼數(shù)據(jù)流的數(shù)據(jù)分組,其中,所述發(fā)送器(100)被配置成,對(duì)所述第一緩沖區(qū)(120)的內(nèi)容進(jìn)行監(jiān)控,并且在從所述第一緩沖區(qū)(120)中檢測(cè)到預(yù)定準(zhǔn)則的情況下,進(jìn)行切換以傳輸所述多個(gè)數(shù)據(jù)流中的另一數(shù)據(jù)流。
2.如權(quán)利要求1所述的系統(tǒng),其中,所述發(fā)送器(100)被配置成根據(jù)所述第一緩沖區(qū)(120)的內(nèi)容來(lái)確定在所述客戶端(40,50,60)處緩存的數(shù)據(jù)量,其中,所述預(yù)定準(zhǔn)則包括確定要在所述客戶端處緩存的數(shù)據(jù)的預(yù)定級(jí)。
3.如權(quán)利要求2所述的系統(tǒng),其中,在所述客戶端(40,50,60)確認(rèn)接收到數(shù)據(jù)分組時(shí),將該數(shù)據(jù)分組從所述第一緩沖區(qū)(120)中刪除。
4.如權(quán)利要求3所述的系統(tǒng),其中,所述發(fā)送器(100)被配置成,根據(jù)從所述第一緩沖區(qū)(120)中刪除的最近的數(shù)據(jù)分組和對(duì)由所述客戶端(40,50,60)所解碼的分組數(shù)目的估計(jì),來(lái)確定在所述客戶端(40,50,60)處緩存的數(shù)據(jù)量。
5.如前述任一權(quán)利要求所述的系統(tǒng),其中,所述第一緩沖區(qū)(120)包括一鏡像緩沖區(qū)(120a),其用于存儲(chǔ)關(guān)于所述第一緩沖區(qū)(120)中的分組的數(shù)據(jù),所述發(fā)送器(100)被配置成,利用該鏡像緩沖區(qū)(120a)中的數(shù)據(jù)來(lái)監(jiān)控所述第一緩沖區(qū)(120)的內(nèi)容。
6.如前述任一權(quán)利要求所述的系統(tǒng),其中,利用擴(kuò)展TPKT協(xié)議來(lái)向所述客戶端(40,50,60)傳輸數(shù)據(jù)分組,該數(shù)據(jù)分組包括一報(bào)頭,該報(bào)頭包含一解碼時(shí)標(biāo)和一數(shù)據(jù)流標(biāo)號(hào)。
7.如前述任一權(quán)利要求所述的系統(tǒng),還包括多個(gè)發(fā)送器(100),每個(gè)發(fā)送器(100)通過(guò)相應(yīng)的第一緩沖區(qū)(120)與相應(yīng)的客戶端(40,50,60)進(jìn)行通信,以傳輸依據(jù)相應(yīng)的預(yù)定準(zhǔn)則所確定的所述多個(gè)數(shù)據(jù)流中的一個(gè)。
8.如前述任一權(quán)利要求所述的系統(tǒng),其中,所述數(shù)據(jù)流是編碼視頻數(shù)據(jù)。
9.如權(quán)利要求8所述的系統(tǒng),其中,所述發(fā)送器(100)被配置成在數(shù)據(jù)分組的傳輸中對(duì)音頻分組和視頻分組進(jìn)行多路傳輸。
10.如權(quán)利要求9所述的系統(tǒng),其中,相鄰的音頻分組和視頻分組表示用于在基本上相同時(shí)刻表示的音頻和視頻信息。
11.如權(quán)利要求1到7中的任何一項(xiàng)所述的系統(tǒng),其中,所述數(shù)據(jù)流是編碼音頻數(shù)據(jù)。
12.如前述任一權(quán)利要求所述的系統(tǒng),其中,所述分辨率是所述數(shù)據(jù)的編碼比特率。
13.如前述任一權(quán)利要求所述的系統(tǒng),其中,所述服務(wù)器(10)包括一編碼器(20),其被配置成接受饋送的數(shù)據(jù)并且將所饋送的數(shù)據(jù)編碼成多個(gè)編碼數(shù)據(jù)流。
14.如權(quán)利要求13所述的系統(tǒng),還包括多個(gè)緩沖區(qū)(70,80,90),其中,所述編碼器(20)被配置成將每個(gè)編碼數(shù)據(jù)流輸出到所述多個(gè)緩沖區(qū)(70,80,90)中的相應(yīng)緩沖區(qū)中,所述發(fā)送器(100)被配置成從所述多個(gè)緩沖區(qū)中的相應(yīng)緩沖區(qū)中獲得用于各數(shù)據(jù)流的數(shù)據(jù)分組。
15.如前述任一權(quán)利要求所述的系統(tǒng),其中,所述服務(wù)器(10)包括一用于存儲(chǔ)所述多個(gè)編碼數(shù)據(jù)流的文件源(30)。
16.一種數(shù)據(jù)流式傳輸系統(tǒng),包括客戶端和服務(wù)器,所述服務(wù)器(10)被配置成向所述客戶端(40,50,60)流式傳輸多個(gè)編碼數(shù)據(jù)流中的一個(gè),所述多個(gè)數(shù)據(jù)流中的每個(gè)數(shù)據(jù)流是按與所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流不同的分辨率編碼的公共數(shù)據(jù)源的獨(dú)立表示,所述服務(wù)器(10)包括一發(fā)送器(100)和一第一緩沖區(qū)(120),而所述客戶端(40,50,60)包括一接收緩沖區(qū)(130),其中,所述發(fā)送器(100)被配置成通過(guò)所述第一緩沖區(qū)(120)向所述客戶端(40,50,60)傳輸所述編碼數(shù)據(jù)流的數(shù)據(jù)分組,其中,所述客戶端(40,50,60)被配置成將所接收到的數(shù)據(jù)分組存儲(chǔ)在所述接收緩沖區(qū)(130)中,并向所述服務(wù)器(10)確認(rèn)已接收,其中,所述發(fā)送器(100)被配置成在接收到接收確認(rèn)時(shí)從所述第一緩沖區(qū)(120)中刪除分組,所述發(fā)送器(100)被配置成在預(yù)定準(zhǔn)則得到滿足的情況下切換到所述多個(gè)數(shù)據(jù)流中的另一數(shù)據(jù)流,所述預(yù)定準(zhǔn)則包括對(duì)所述第一緩沖區(qū)(120)的內(nèi)容的分析。
17.如權(quán)利要求16所述的系統(tǒng),其中,所述分組包括分組序列數(shù)據(jù),所述客戶端(40,50,60)被配置成基于該序列數(shù)據(jù)來(lái)請(qǐng)求重新傳輸未接收到的分組,所述服務(wù)器(10)被配置成在接收到一重新傳輸請(qǐng)求時(shí)從所述第一緩沖區(qū)(120)重新傳輸分組。
18.一種用于向客戶端流式傳輸多個(gè)編碼數(shù)據(jù)流中的一個(gè)的方法,所述多個(gè)數(shù)據(jù)流中的每個(gè)數(shù)據(jù)流都是按與所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流不同的分辨率編碼的公共數(shù)據(jù)源的獨(dú)立表示,該方法包括以下步驟通過(guò)第一緩沖區(qū)向所述客戶端傳輸所述編碼數(shù)據(jù)流的數(shù)據(jù)分組;對(duì)所述第一緩沖區(qū)的內(nèi)容進(jìn)行監(jiān)控;以及在從所述第一緩沖區(qū)檢測(cè)到預(yù)定準(zhǔn)則的情況下,進(jìn)行切換以傳輸所述多個(gè)數(shù)據(jù)流中的另一數(shù)據(jù)流。
19.如權(quán)利要求18所述的方法,其中,所述多個(gè)數(shù)據(jù)流被各按不同的比特率進(jìn)行編碼,所述方法還包括以下步驟最初時(shí)傳輸最低比特率數(shù)據(jù)流的數(shù)據(jù)分組。
20.如權(quán)利要求18或19所述的方法,其中,所述預(yù)定準(zhǔn)則包括確定要在客戶端緩存的數(shù)據(jù)量。
21.如權(quán)利要求18、19或20所述的方法,其中,所述預(yù)定準(zhǔn)則包括一個(gè)或更多個(gè)網(wǎng)絡(luò)吞吐量閾值。
22.如權(quán)利要求21所述的方法,其中,通過(guò)以下步驟來(lái)計(jì)算網(wǎng)絡(luò)吞吐量對(duì)傳入所述第一緩沖區(qū)的字節(jié)數(shù)進(jìn)行計(jì)數(shù);將所述第一緩沖區(qū)的大小減去所計(jì)數(shù)的字節(jié)數(shù);以及將所述結(jié)果除以自傳輸開(kāi)始起的時(shí)間。
23.如權(quán)利要求22所述的方法,還包括以下步驟在一個(gè)以上的時(shí)間間隔中測(cè)量網(wǎng)絡(luò)吞吐量以確定吞吐量變化。
24.如權(quán)利要求22或23所述的方法,其中,所述預(yù)定準(zhǔn)則包括確定足以維持所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流的網(wǎng)絡(luò)吞吐量。
25.如權(quán)利要求22到24中的任何一項(xiàng)所述的方法,還包括以下步驟不考慮在客戶端處緩存的數(shù)據(jù)量而以最大速率傳輸數(shù)據(jù),其中所述預(yù)定準(zhǔn)則包括按該最大速率確定的網(wǎng)絡(luò)吞吐量。
26.如權(quán)利要求18到25中的任何一項(xiàng)所述的方法,其中,所述數(shù)據(jù)流被編碼成根據(jù)該數(shù)據(jù)流中的先前畫(huà)面而預(yù)測(cè)編碼的多個(gè)畫(huà)面的畫(huà)面序列,所述數(shù)據(jù)流包括分布在所述畫(huà)面序列中的預(yù)定時(shí)段中的量化源入口畫(huà)面,其中,所述量化源入口畫(huà)面的編碼方法包括以下步驟將畫(huà)面編碼成預(yù)測(cè)畫(huà)面;以及如果在所編碼的預(yù)測(cè)畫(huà)面中沒(méi)有指示關(guān)于畫(huà)面面積的信息,那么當(dāng)編碼成量化源入口畫(huà)面時(shí),將量化器指數(shù)設(shè)置為細(xì)量化值。
27.一種計(jì)算機(jī)程序,包括計(jì)算機(jī)程序代碼裝置,其用于當(dāng)在計(jì)算機(jī)上運(yùn)行時(shí),執(zhí)行權(quán)利要求17到24中的任何一項(xiàng)的步驟。
28.如權(quán)利要求27所述的計(jì)算機(jī)程序,其被具體實(shí)現(xiàn)在計(jì)算機(jī)可讀介質(zhì)上。
全文摘要
描述了一種數(shù)據(jù)流式傳輸系統(tǒng)和方法。服務(wù)器(10)被配置成向客戶端(40,50,60)流式傳輸多個(gè)編碼數(shù)據(jù)流中的一個(gè)。所述多個(gè)數(shù)據(jù)流中的每個(gè)數(shù)據(jù)流都是按與所述多個(gè)數(shù)據(jù)流中的其它數(shù)據(jù)流不同的分辨率編碼的公共數(shù)據(jù)源的獨(dú)立表示。服務(wù)器(10)包括一發(fā)送器(100)和一第一緩沖區(qū)(120)。發(fā)送器被配置成通過(guò)第一緩沖區(qū)(120)向客戶端(40,50,60)傳輸所述編碼數(shù)據(jù)流的數(shù)據(jù)分組。發(fā)送器(100)被配置成,對(duì)第一緩沖區(qū)(120)的內(nèi)容進(jìn)行監(jiān)控,并且在從第一緩沖區(qū)(120)中檢測(cè)到預(yù)定準(zhǔn)則的情況下,進(jìn)行切換以傳輸所述多個(gè)數(shù)據(jù)流中的另一數(shù)據(jù)流。
文檔編號(hào)H04N7/24GK1643875SQ03807048
公開(kāi)日2005年7月20日 申請(qǐng)日期2003年3月27日 優(yōu)先權(quán)日2002年3月27日
發(fā)明者邁克爾·埃爾森·尼爾森, 蒂莫西·拉爾夫·杰布 申請(qǐng)人:英國(guó)電訊有限公司