苗健++許應(yīng)康
摘 要: 視頻數(shù)據(jù)在各種數(shù)據(jù)中有著不可替代的作用,在視頻數(shù)據(jù)量大,網(wǎng)絡(luò)環(huán)境復(fù)雜的情況下,如何顯示視頻數(shù)據(jù)就成為重點。H.264格式因為具有更高的壓縮效率,更友好的網(wǎng)絡(luò)適應(yīng)性,更有效的抗擊錯誤和信息丟失的能力,已經(jīng)被應(yīng)用于視頻數(shù)據(jù)中。因此設(shè)計了一款針對H.264格式的的視頻播放軟件,該款軟件基于FFmpeg工具包進行開發(fā),經(jīng)過試驗驗證能夠很好地進行多種格式的解碼及播放。
關(guān)鍵詞: 視頻數(shù)據(jù); H.264; FFmpeg; VFW
中圖分類號: TN911?34 文獻標(biāo)識碼: A 文章編號: 1004?373X(2015)12?0083?02
0 引 言
隨著科學(xué)技術(shù)的發(fā)展,視頻數(shù)據(jù)在各種數(shù)據(jù)中占據(jù)了不可替代的作用,而目前視頻數(shù)據(jù)產(chǎn)生的數(shù)據(jù)量也是越來越大,如何在有限的資源下更好地利用這些數(shù)據(jù),成為了大家研究的重點[1]。其中視頻壓縮算法占據(jù)了決定性的作用,不同的壓縮算法會產(chǎn)生不同格式的數(shù)據(jù)[2],所以單一的視頻播放器已經(jīng)無法滿足日益多變的視頻格式的播放需求,而在各種各樣格式文件中,H.264格式的文件具有更好的壓縮率,更友好的網(wǎng)絡(luò)適應(yīng)性以及抗干擾性能[3],同時H.264具有低碼率[4],高質(zhì)量的圖像[5],容錯能力強,網(wǎng)絡(luò)適應(yīng)性強[6]的特點。因此在某些環(huán)境下被廣泛使用。
但是針對H.264格式文件進行播放的軟件并不常見,很多時候需要進行轉(zhuǎn)碼才能進行觀看,極大地浪費了時間,在此專門設(shè)計了一款針對H.264格式文件進行播放的播放器。
1 H.264和FFmpeg介紹
FFmpeg是一款用于記錄、轉(zhuǎn)換數(shù)字音頻和視頻,并能將其轉(zhuǎn)化為流的開源工具,這款工具功能非常強大,能夠完成視頻轉(zhuǎn)換、抓圖、視頻采集等功能。可以根據(jù)具體需求定制相應(yīng)的功能。
大家??吹降囊曨l文件可以統(tǒng)稱為容器,在容器中將視頻流、音頻流以及字幕等融合在一起形成了視頻文件[7],為了完成這些工作FFmpeg工具包含有編解碼模塊。該模塊位于libavcodec中,根據(jù)需要,可以將不同格式的視頻流轉(zhuǎn)換成為需要格式的文件,一般的工作流程為先解碼然后再進行相應(yīng)的編碼形成對應(yīng)格式的文件。Muxer模塊實現(xiàn)將視頻文件、音頻文件和字幕文件合并為某一種格式,該模塊位于libavformat中,而在libavutil中則包含公共的工具函數(shù)。
2 軟件設(shè)計及實現(xiàn)
2.1 軟件設(shè)計
軟件主要實現(xiàn)了兩個功能:編解碼模塊和顯示播放模塊。其中編解碼模塊的工作流程如圖1所示。
在某些情況下視頻需要對現(xiàn)有格式文件進行轉(zhuǎn)碼以后才能進行播放,這時就需要進行轉(zhuǎn)碼工作,它的工作流程是首先將原來的文件進行解碼,然后再次進行編碼,最后再合并到文件容器中,得到所需要的視頻文件。轉(zhuǎn)碼工作流程圖如圖2所示。
圖2中write_frame()函數(shù)是用于將編碼后的數(shù)據(jù)包中的幀寫入輸出視頻容器文件中,avpacket是寫入容器文件的基本單元。通過上述兩個流程基本完成了視頻格式的解碼工作。完成了解碼工作后需要進行的就是視頻的顯示輸出工作,在這里使用VFW數(shù)字視頻開發(fā)包及DrawDib函數(shù)組來完成相應(yīng)的功能。
3 結(jié) 語
使用FFmpeg開源工具研制的這款軟件經(jīng)過試驗,能夠正常地播放多種格式的視頻文件,提供了極高的便利性。目前視頻格式越來越多樣化,對于播放的要求也越來越高,如何對各種形式的數(shù)據(jù)進行解碼復(fù)用就非常值得研究。同時也發(fā)現(xiàn)FFmpeg功能非常強大,涉及的內(nèi)容非常多,是值得深入了解和學(xué)習(xí)的一款工具。因此在視頻解碼及播放顯示方面,還有更多的工作需要進行深入的研究。
參考文獻
[1] 李薔.H.264視頻編碼碼率控制技術(shù)研究[D].上海:上海交通大學(xué),2005.
[2] 徐傳書.H.264中的快速運動估計算法研究[D].太原:太原理工大學(xué),2011.
[3] 裴世保.H.264/AVC中預(yù)測模式選擇算法研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2005.
[4] 秦秀貴.H.264快速幀內(nèi)預(yù)測算法研究[D].濟南:山東大學(xué),2008.
[5] 王綱.H.264視頻壓縮標(biāo)準(zhǔn)的研究與實現(xiàn)[D].成都:電子科技大學(xué),2006.
[6] 朱珍偉.基于H.264標(biāo)準(zhǔn)視頻流的錯誤隱藏技術(shù)研究[D].上海:復(fù)旦大學(xué),2006.
[7] 劉合.音視頻編輯庫的設(shè)計與實現(xiàn)[D].武漢:華中科技大學(xué),2011.