苗健++許應康



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