寧波網(wǎng)站制作 收費(fèi)優(yōu)化大師有必要安裝嗎
MPEG-2聽名稱,就比MPEG-1牛逼了很多。
MPEG-2是MPEG專家組,從1990年就開始研究,并于94年完成的第二個視音頻編碼標(biāo)準(zhǔn)。相比于MPEG-1而言,它不僅繼承了MPEG-1,而且在它的基礎(chǔ)上,擴(kuò)展了許多MPEG-1沒有的功能,比如支持高分辨率的視像、大范圍的數(shù)據(jù)速率、多聲道的環(huán)繞聲、多種視像分辨率、位速率不變、隔行掃描。
可以看到,新增的這幾個功能,大致是在三個方面來提高:1、視音頻的質(zhì)量 2、視音頻的傳輸 3、數(shù)字電視的支持
而且MPEG-2在這幾個方面的提高,并非徒有虛名,就像MPEG-1在mp3以及VCD的應(yīng)用一樣,MPEG-2在DVD影視,和廣播級質(zhì)量的數(shù)字電視上,應(yīng)用廣泛,比如美國的ATSC DTV、歐洲的DVB和日本的ISDB。
不僅如此,為了達(dá)到廣播級質(zhì)量這一級別,也就是視像的實(shí)時傳輸,MPEG-2還制定了兩種數(shù)據(jù)流格式,如PS流和TS流,其中MPEG2-TS流也即至今仍很常見的TS格式傳輸流,所以MPEG-2也成為了在因特網(wǎng)上傳輸數(shù)字電視的一種標(biāo)準(zhǔn)。
下面我們就開始一一來看,為了更好的了解,我們還是先看一下MPEG-2內(nèi)容的組成部分,它總共由11各部分組成,不過對于我們來說,前三個部分就足夠了:
MPEG-2標(biāo)準(zhǔn)的組成部分
表中前面的13818,是指ISO/IEC 13818,它是MPEG-2的標(biāo)準(zhǔn)編號。而在系統(tǒng)模型方面,與MPEG-1一樣,它也由編碼系統(tǒng)和解碼系統(tǒng)兩大部分組成。因?yàn)榫幋a和解碼只是相反的兩個步驟,所以我們來著重看一下編碼部分。
1、MPEG-2編碼系統(tǒng)
MPEG-2的編碼系統(tǒng),由兩部分組成:
- (1)視像編碼和聲音編碼
- (2)數(shù)據(jù)打包和多路數(shù)據(jù)復(fù)合
第一部分肯定是必須的,而第二部分就是MPEG-2的特點(diǎn)。
MPEG-2編碼系統(tǒng)
通過上圖可以看到,圖中虛線左邊是視音頻編碼部分,而第二部分就是數(shù)據(jù)打包的部分。在數(shù)據(jù)打包的時候,MPEG-2將視像數(shù)據(jù)、聲音數(shù)據(jù)和其他數(shù)據(jù)組合在一起,生成適合存儲或傳輸?shù)幕緮?shù)據(jù)流,而我們使用的存儲和傳輸兩個詞,也就是數(shù)據(jù)流的兩種類型:
- (1)PS流(Program Stream, 節(jié)目數(shù)據(jù)流),由一個或多個打包的基本數(shù)據(jù)流(PES)組合生成的數(shù)據(jù)流,用在如DVD存儲系統(tǒng)中。
- (2)TS流(Transport Stream,數(shù)據(jù)傳輸流),同樣也有一個或多個PES組合生成的數(shù)據(jù)流,用于數(shù)字電視廣播或因特網(wǎng)傳輸?shù)葌鬏斚到y(tǒng)。
看到這里我們可能就會產(chǎn)生疑問,PS流和TS流看著也沒什么區(qū)別呀,為啥應(yīng)用不同呢?實(shí)際上,雖然他們都是對PES流的重新封裝,但是它們的包結(jié)構(gòu)是不同的。
PS流的包結(jié)構(gòu)是可變長度的,而TS流的包結(jié)構(gòu)是固定長度的。這就造成了它們的抗干擾性能的不同,比如PS流如果在傳輸信道上丟失掉某一同步信息,那么接收端就會無法同步,造成嚴(yán)重的信息丟失,所以PS流沒有應(yīng)用在傳輸領(lǐng)域。
而與之相對的,TS是固定長度的包結(jié)構(gòu),即使丟失某一個包,通過后面包的同步信息,也能恢復(fù)同步。這也就是MPEG2-TS流格式比較有名的,可以從視頻流的任一片段獨(dú)立解碼。所以它使用在傳輸系統(tǒng)上,無可厚非。
當(dāng)然了,這篇文章的主角是MPEG-2,并不是TS和PS,關(guān)于它們還有更多的內(nèi)容,后面再單獨(dú)開一篇介紹。
2、MPEG-2的視像編碼器
看完了編碼系統(tǒng)的視音頻編碼器和數(shù)據(jù)包裝,下面我們來看一下它的視像編碼器部分,也即視頻圖像的編碼。
在MPEG-1中,我們知道它是從空間冗余和時間冗余方面,來去除冗余數(shù)據(jù)。而在MPEG-2中,在去除時間冗余數(shù)據(jù)方面,又有了新的提高。因?yàn)槿コ龝r間冗余數(shù)據(jù)的主要目標(biāo),為B幀和P幀,而編碼這兩種幀數(shù)據(jù)的主要工作,就是找到最佳匹配宏塊(上篇講過)。而跟找最佳匹配宏塊相關(guān)的,就是下面的兩個重要概念:
- (1)移動估算(ME):這個其實(shí)就是計(jì)算移動矢量的過程,移動矢量的計(jì)算精度越高,參考圖像宏塊,與預(yù)測圖像宏塊之間的差值就越小。
- (2)運(yùn)動補(bǔ)償(MC,也為移動補(bǔ)償):計(jì)算當(dāng)前編碼宏塊與參考圖像宏塊之間,像素值之差的過程。之所以叫補(bǔ)償這個詞,是因?yàn)樵诰幋a時使用的移動矢量和像素值差,在重構(gòu)當(dāng)前幀圖塊時,其實(shí)是相當(dāng)于補(bǔ)償量來處理的。
與MPEG-1不同的時,這次我們不再分別來看I、B、P幀的編碼原理,因?yàn)檫@在MPEG-1里已經(jīng)定義了。而在MPEG-2里,我們就來看看視像編碼器的結(jié)構(gòu)圖,這在原理上與MPEG-1的結(jié)構(gòu)基本一致:
MPEG-2視像編碼器
圖中:
Q為量化,IQ(Inverse quantization)為逆量化,DCT為離散余弦變換,IDCT為逆離散余弦變換,MCP(motion compensated predictor)為移動補(bǔ)償預(yù)測器,ME為移動估算器,VLE為可變長度編碼器,VLD(cariable length decoder)為可變長度解碼器,FS(frame memory)為幀存儲器
所以看了圖,別說哪個詞不認(rèn)識哈。其中DCT、量化、VLE是我們在上篇介紹過的,而這幅結(jié)構(gòu)圖,只是把I、B、P幀的編碼放到了一起。所以只要在圖中,分別找到I、B、P幀的編碼路線,即可看懂上圖。
比如最上面那條線,從視像輸入到DCT、Q、VLE不就是I幀的編碼嘛。
而I幀同時也可以作為B幀和P幀的參考圖像,所以在經(jīng)過DCT、Q量化后,在量化DCT系數(shù)那一步,進(jìn)入到內(nèi)置解碼器,如下圖:
內(nèi)置解碼器輸入輸出
可以看到這個解碼器,是用于產(chǎn)生預(yù)測圖像的,也即左上角輸出的那個箭頭。而箭頭向里的輸入箭頭有三個,分別為:最下方的移動適量,上面的量化DCT系數(shù),右側(cè)的用于控制數(shù)據(jù)速率的量化參數(shù)控制信號。
我們都知道B幀和P幀都屬于預(yù)測圖像,這里先不管具體是B幀還是P幀,因?yàn)樗鼈儍蓚€的操作都差不多,所以我們先當(dāng)成輸出為預(yù)測圖像P來考慮。
通過下圖可以看到,預(yù)測圖像是由當(dāng)前圖像,與存儲在FS(幀存儲器)中的先前圖像,經(jīng)過ME(移動估算)得到移動矢量,然后再由移動矢量和先前圖像,經(jīng)過MCP(移動補(bǔ)償預(yù)測器)來生成。
生成預(yù)測圖像
而FS里的先前圖像,則是由量化DCT系數(shù),經(jīng)過IQ逆量化和IDCT逆離散余弦變換后,與先前預(yù)測圖像生成的重構(gòu)圖像。
生成FS先前圖像
而這里的量化DCT系數(shù),就不一定是I幀啦,因?yàn)镮幀無需與其他圖像比較,自己本身就可以直接存在FS里。所以這里的量化DCT系數(shù),也會來源于編碼過程中產(chǎn)生的預(yù)測誤差。
也即左上角視像輸入和預(yù)測圖像,經(jīng)過加法器(+)產(chǎn)生預(yù)測誤差,然后經(jīng)過DCT、量化產(chǎn)生量化DCT系數(shù),進(jìn)而經(jīng)過IQ、IDCT與預(yù)測圖像重構(gòu),產(chǎn)生重構(gòu)圖像存儲在FS里。
另一方面,視像輸入和預(yù)測圖像產(chǎn)生的預(yù)測誤差,也會經(jīng)過編碼和復(fù)合后,作為數(shù)據(jù)輸出送到傳輸或存儲媒體。
輸出數(shù)據(jù)流
其中預(yù)測誤差在VLE(行程長度編碼)階段,與移動矢量一起復(fù)合和編碼后,輸出出去。
而圖中的量化參數(shù)控制,是用來改變視像質(zhì)量和數(shù)據(jù)速率的。這也是目前的各種碼率(單位時間內(nèi)傳輸?shù)奈粩?shù),一般單位為kbps,即千位每秒,其實(shí)就是數(shù)據(jù)傳輸率)控制算法控制碼率的方法,它們主要是通過調(diào)整量化參數(shù),來控制碼率的。關(guān)于這部分,內(nèi)容深入的都可以寫論文了,不過好在我們不需要這么深入,至少現(xiàn)在不是~