內(nèi)容導(dǎo)航: 分頁(yè)瀏覽 |
全文瀏覽
碗好還是鍋大?封裝格式詳解-AVI
所謂封裝格式就是將已經(jīng)編碼壓縮好的視頻軌和音頻軌按照一定的格式放到一個(gè)文件中,也就是說(shuō)僅僅是一個(gè)外殼,或者大家把它當(dāng)成一個(gè)放視頻軌和音頻軌的文件夾也可以。
說(shuō)得通俗點(diǎn),視頻軌相當(dāng)于飯,而音頻軌相當(dāng)于菜,封裝格式就是一個(gè)碗,或者一個(gè)鍋,用來(lái)盛放飯菜的容器。
有的人可能覺(jué)得奇怪,容器,不就能盛放飯菜就行了么,用一個(gè)碗就可以了,何必制定出這么多的格式以及規(guī)范呢?
其實(shí)不然,試想一下,有的菜,例如排骨,比較大,碗放不下,得換鍋。有的飯比較燙,也不能放在塑料的容器里,當(dāng)然個(gè)人喜好也有一定關(guān)系。
所以容器的選擇,基本在于,其對(duì)視頻/音頻兼容性,以及適合范圍。
這下大家應(yīng)該明白了,很多人一直把封裝格式當(dāng)成前面介紹的視頻編碼,而這兩者之間沒(méi)有必然的直接聯(lián)系。
.AVI容器-成熟的老技術(shù)
AVI是微軟1992年推出用于對(duì)抗蘋(píng)果Quicktime的技術(shù),盡管?chē)?guó)際學(xué)術(shù)界公認(rèn)AVI已經(jīng)屬于被淘汰的技術(shù),但是由于windows的通用性,和簡(jiǎn)單易懂的開(kāi)發(fā)API,還在被廣泛使用。
AVI的文件結(jié)構(gòu)、分為頭部, 主體和索引三部分. 主體中圖像數(shù)據(jù)和聲音數(shù)據(jù)是交互存放的。從尾部的索引可以索引跳到自己想放的位置。
AVI本身只是提供了這么一個(gè)框架,內(nèi)部的圖像數(shù)據(jù)和聲音順據(jù)格式可以是任意的編碼形式。因?yàn)樗饕旁诹宋募膊浚栽诓nternet流媒體時(shí)已屬力不從心。很簡(jiǎn)單的例子,從網(wǎng)絡(luò)上下載的片子,如果沒(méi)有下載完成,是很難正常播放出來(lái)。

另外一個(gè)問(wèn)題是AVI對(duì)高碼率VBR音頻文件支持不好。VBR全稱(chēng)是Variable BitRate,就是動(dòng)態(tài)比特率,可以根據(jù)當(dāng)前的需要定義不同的比特率,避免了浪費(fèi),并且提高了利用率。隨之問(wèn)題也就來(lái)了,因?yàn)槿萜骼锏膱D像和聲音是分開(kāi)的,所以播放時(shí)需要一個(gè)圖像和聲音的同步過(guò)程,如果CBR音軌的話因?yàn)榇a率是定值,同步不成為問(wèn)題,可是VBR音軌是不斷的在變換,而AVI沒(méi)有時(shí)間戳去讓VBR音軌和圖像同步,這樣就會(huì)產(chǎn)生圖像聲音不同步的問(wèn)題。
后來(lái)VirtualDub提出了一種新的方法擴(kuò)充了AVI對(duì)VBR音頻的兼容,但是在高碼率時(shí)會(huì)產(chǎn)生丟失數(shù)據(jù)的問(wèn)題,從而導(dǎo)致有損音效,這一點(diǎn)問(wèn)題到現(xiàn)在都沒(méi)有比較完美的解決方法。并且更加令人遺憾的是,對(duì)TrueHD, DTS-HD等音效更是完全不能支持。