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