可分層視頻編碼(SVC)是一種獨(dú)特的視頻壓縮技術(shù),在實(shí)際操作中帶來(lái)了許多重要的優(yōu)勢(shì)。目前已經(jīng)有兩大視頻廠商——Vidyo和Radvision開(kāi)始提供這項(xiàng)技術(shù),另外,還有幾家廠商獲得了這項(xiàng)技術(shù)的許可。希望在未來(lái)幾年間能看到更多廠商使用這項(xiàng)技術(shù)。
可分層視頻編碼技術(shù)到底有什么獨(dú)特之處呢?可分層視頻編碼是專為解決當(dāng)前視頻會(huì)議的廣泛部署所面臨的三大問(wèn)題設(shè)計(jì)的:
1. 網(wǎng)絡(luò)并不總能提供高質(zhì)視頻所需的低丟包和抖動(dòng)。
2. 網(wǎng)絡(luò)并不能為所有用戶提供持續(xù)的可用帶寬。
3. 由于MCU對(duì)連接帶寬和CPU資源的需求比較高,因此,對(duì)當(dāng)前所用的多點(diǎn)會(huì)議單元(MCU和橋)分層較為困難,而且成本相當(dāng)高。
這里有一個(gè)比較大的爭(zhēng)議。首先我們來(lái)看一下可分層視頻編碼技術(shù)的原理,作為一名工程師,我通常都會(huì)想先了解一些這個(gè)技術(shù)的原理,然后才會(huì)去體悟它的優(yōu)勢(shì)。而如果你剛好是做市場(chǎng)推廣的,那么這里你可能不得不遷就我一下了,關(guān)于分層視頻編碼技術(shù)的優(yōu)勢(shì)我們會(huì)在日后再進(jìn)行討論。
何為可分層視頻編碼?
SVC對(duì)傳輸在IP網(wǎng)絡(luò)上的一系列視頻幀采取了一種特有的打包方式?,F(xiàn)在的編碼器(非分層的)通常以連接建立的帶寬大小為基準(zhǔn),在給出的可用帶寬下自動(dòng)分配分辨率和幀頻,以獲得最佳的編碼效果。帶寬越高,編碼器所交付的高清晰移動(dòng)圖像的質(zhì)量也就越高。
如果帶寬非常高,并且足以提供每秒30、乃至60幀的全高清視頻,那么這時(shí)就不會(huì)有任何的取舍問(wèn)題。不過(guò)在現(xiàn)實(shí)的帶寬還不能達(dá)到那么高的情況下,編碼器就要在分辨率的優(yōu)化和幀頻的優(yōu)化間有所偏重,而這個(gè)結(jié)果主要取決于視頻中移動(dòng)圖像的數(shù)量和編碼器的設(shè)置。
現(xiàn)在的大部分編碼器還包含動(dòng)態(tài)帶寬算法,這種算法的目的在于在網(wǎng)絡(luò)發(fā)生數(shù)據(jù)包丟失時(shí)減少帶寬的使用量。動(dòng)態(tài)帶寬算法的原理是,先假定發(fā)生了數(shù)據(jù)包的丟失,這就代表網(wǎng)絡(luò)已經(jīng)出現(xiàn)了擁堵,而降低帶寬就能緩解擁堵,這樣就能獲得一個(gè)更好的連接。
SVC的工作原理就不同于傳統(tǒng)的編碼器,它利用多個(gè)不同的流對(duì)視頻圖像進(jìn)行壓縮,每個(gè)流處理高質(zhì)視頻圖像的不同組成部分。第一個(gè)視頻流用最低的帶寬來(lái)處理清晰度低的圖像,附加流則對(duì)包含更高分辨率、幀頻和質(zhì)量水平的信息進(jìn)行編碼,以獲得更高清晰度和更優(yōu)質(zhì)的移動(dòng)圖像。不過(guò)這些附加流并不是對(duì)第一個(gè)流中包含信息的重復(fù),而是對(duì)它的補(bǔ)充。
試想一個(gè)接收編碼器能獲取這個(gè)視頻會(huì)議系統(tǒng)全部的數(shù)據(jù)流,這個(gè)解碼器就能把這些數(shù)據(jù)流全部整合,還原成出具備原清晰度的全動(dòng)態(tài)圖像。而如果第二個(gè)編碼器的連接速度很慢,帶寬只夠接收低分辨率的圖像,那原本的編碼器還是能查看到同一個(gè)終端獲得的相同視頻源,不過(guò)卻只能接收到基層的流。解碼器的解碼性能可能會(huì)受到帶寬、可用CPU資源的影響,也可能獲得的圖像只要在筆記本這么大的窗口中就能顯示出來(lái)了,而不需要更高分辨率的顯示屏。
有些人認(rèn)為,“我們現(xiàn)在的多點(diǎn)橋(MCU)就是在做這些”。這一點(diǎn)毋庸置疑,MCU確實(shí)能把一個(gè)端點(diǎn)的高清圖像的代碼轉(zhuǎn)換成可用于另一個(gè)端點(diǎn)的標(biāo)清圖像。不過(guò)要具備這個(gè)能力,MCU需要具備大量的CPU周期,或是專業(yè)的信號(hào)處理器。而在SVC環(huán)境中的CPU僅需確定SVC流的哪些部分需要發(fā)送,哪些不需要就可以了。如果一個(gè)端點(diǎn)只要基層信息,那么也就只要把基層的流發(fā)送出去;而如果端點(diǎn)要求原清晰度的圖像,那么就要把所有的流都發(fā)送出去;而如果端點(diǎn)對(duì)清晰度的要求居中,則需要發(fā)送這些SVC流的部分組合。由于這種操作比用一個(gè)計(jì)算點(diǎn)的方式更方便,所以我們相信SVC橋會(huì)便宜得多,并且能夠處理更多同步的端點(diǎn)。不過(guò)這些將涉及到分層視頻的部署——這將在我們之后的文章中討論。