張正華,胡方來(lái),蘇 波,吳 韜,龔曉亮
(1.揚(yáng)州大學(xué)信息工程學(xué)院,江蘇揚(yáng)州225127;2.揚(yáng)州國(guó)脈通信發(fā)展有限責(zé)任公司,江蘇揚(yáng)州225002;3.揚(yáng)州市公安局交通巡邏警察支隊(duì),江蘇揚(yáng)州225007)
H.264由于其編碼的高復(fù)雜度從一開始就限制了它的應(yīng)用,隨著人們對(duì)編碼算法的改進(jìn),去除了對(duì)編碼效果有限但復(fù)雜度高的一些算法,使得H.264的視頻編解碼技術(shù)逐漸得到應(yīng)用,現(xiàn)在使用得最多的編碼器就是X264[1-3]。相對(duì)而言,解碼器的速度要快得多,目前流行的 H.264解碼器包括 JM Decoder、T264 Decoder、X264 Decoder、ffmpeg 和 Intel的IPP庫(kù)。JM decoder是H.264的官方源碼,也是校驗(yàn)?zāi)P?,支持特性好但是?shí)用性較差;T264是國(guó)內(nèi)的開源項(xiàng)目,只能解T264本身的碼流;X264本身沒有decoder,但包含解碼器的部分函數(shù)雛形;ffmpeg是包含各種音視頻標(biāo)準(zhǔn)的codec,支持的標(biāo)準(zhǔn)全而且解碼速度也很快;IPP用于在Intel的各種處理平臺(tái)上實(shí)現(xiàn)信號(hào)處理常用算法以及音視頻編解碼算法,實(shí)現(xiàn)算法速度較快[4-6]。所有的解碼器中,除了Intel的商用IPP庫(kù)外,以ffmpeg的解碼最快最穩(wěn)定,ffmpeg集合了多種音、視頻的編解碼協(xié)議,可完成MPEG4和H.264等協(xié)議的解碼?;诖瞬⒔Y(jié)合現(xiàn)有的圖像傳輸研究現(xiàn)狀,對(duì)視頻圖像在嵌入式終端上的解碼方式進(jìn)行了研究。
基于ffmpeg的視頻解碼播放流程如圖1所示。
圖1 ffmpeg視頻解碼流程
打開一個(gè)視頻文件并從中得到流,首先就是初始化libavformat/libavcodec;接著調(diào)用 av_register_all()函數(shù)注冊(cè)庫(kù)中含有的所有可用的文件格式和編解碼器,這樣當(dāng)打開文件時(shí)就能夠自動(dòng)選擇相應(yīng)的文件格式和編解碼器;然后調(diào)av_open_input_file()函數(shù)讀取文件頭并將文件信息存儲(chǔ)到pFormatCtx結(jié)構(gòu)體中;調(diào)用av_find_stream_info()函數(shù)取出文件中的流信息;再調(diào)用 avcodec_find_decode r()函數(shù)用來(lái)尋找頻流的解碼器,并得到指向視頻流的上下文的指針;最后調(diào)用avcodec_open()函數(shù)用來(lái)打開解碼器。
經(jīng)過評(píng)測(cè)發(fā)現(xiàn),各種H.264解碼器中,速度最快的是intel IPP,但是由于其是商用軟件,而其他的各種解碼器都屬于開源項(xiàng)目,所以最適合的選擇就是解碼速度第二的ffmpeg,而且其速度完全可以滿足實(shí)時(shí)播放的要求。
由于ffplay是一個(gè)基于ffmpeg和開放源代碼的跨平臺(tái)多媒體開發(fā)庫(kù)(Simple DirectMedia Layer,SDL)的播放器,因此,如果想在嵌入式平臺(tái)上使用ffplay來(lái)播放視頻文件,需要加入 SDL的支持[7,8]。下面首先交叉編譯SDL,這里采用的版本為SDL-1.2.13,然后編譯 ffplay 和 ffmpeg。
①下載SDL安裝包,解壓縮并進(jìn)入SDL所在目錄。
② 運(yùn)行配置。鍵入“./configure--help”,由于ARM板資源有限,根據(jù)需要設(shè)置參數(shù),看情況改變prefix目錄和各種選項(xiàng),配置中指定使用幀緩沖設(shè)備,使用arm-linux-gcc交叉編譯。本文中,使用的編譯選項(xiàng)如下:
③ make和 make install,make install之后便在prefix目錄下生成所需的動(dòng)態(tài)庫(kù)和include頭文件等。下面使用SDL自帶的例程測(cè)試交叉編譯的SDL是否可以在ARM上使用,運(yùn)行成功后會(huì)生成二進(jìn)制應(yīng)用程序“testwin”,將交叉編譯好的SDL庫(kù)和例程通過nfs掛載到ARM板,運(yùn)行屏幕上出現(xiàn)移動(dòng)的“SDL”說明交叉編譯成功。具體的測(cè)試選項(xiàng)如下:
④下載ffmpeg安裝包,創(chuàng)建依賴環(huán)境,在編譯ffmpeg之前可以根據(jù)需要安裝相應(yīng)的codec和依賴包,ffmpeg的支持庫(kù)包括xvid、x264、mp3和3gp等,可以網(wǎng)上下載相應(yīng)的源碼進(jìn)行安裝。
⑤交叉編譯。交叉編譯完成后,將會(huì)在目標(biāo)目錄下生成目標(biāo)平臺(tái)處理器格式的二進(jìn)制可執(zhí)行文件ffplay和ffmpeg,將生成的ffplay和ffmpeg移植到開發(fā)板上,同時(shí)將生成的庫(kù)文件移植到ARM上Linux系統(tǒng)的根目錄lib下運(yùn)行。具體的編譯選項(xiàng)如下:
以下為基于ffmpeg的H.264視頻解碼的部分代碼:
這里使用了 foreman、news、carphone和 highway四個(gè)視頻序列,編碼30幀,生成4個(gè)不同的H.264格式碼流,將生成的碼流分別在嵌入式平臺(tái)上和PC機(jī)上進(jìn)行了測(cè)試,測(cè)試結(jié)果的對(duì)比如表1和表2所示。
表1 解碼后圖像質(zhì)量對(duì)比
表2 解碼時(shí)間對(duì)比
表1反映了4個(gè)視頻序列分別在嵌入式平臺(tái)和PC機(jī)上解碼后視頻圖像的質(zhì)量對(duì)比,從表中數(shù)據(jù)可以看出,圖像質(zhì)量相差不大,嵌入式平臺(tái)上的解碼效果與PC機(jī)上解碼效果相近。表2反映出2個(gè)平臺(tái)對(duì)同一視頻流解碼速度的對(duì)比,從表中數(shù)據(jù)可以看出,PC機(jī)的解碼速度稍快于嵌入式平臺(tái),單純地從嵌入式平臺(tái)的解碼時(shí)間來(lái)看,其已經(jīng)能夠滿足工程應(yīng)用中的實(shí)時(shí)性要求。
為了能夠更鮮明地說明目標(biāo)板的解碼效果,圖2和圖3給出了foraman視頻序列解碼前后的圖像對(duì)比效果。圖2是在目標(biāo)板上用ffplay運(yùn)行的帶誤碼的碼流效果,圖3給出了經(jīng)過ffmpeg解碼帶誤碼的碼流后的物理效果圖,從圖中可以得出,在嵌入式終端平臺(tái)上可以對(duì)視頻流進(jìn)行實(shí)時(shí)的解碼處理,且能夠比較真實(shí)地反映源圖像的品質(zhì)。
圖2 運(yùn)行帶誤碼的碼流
圖3 解碼后物理效果
在分析了各種解碼器的性能后選用了ffmpeg對(duì)H.264進(jìn)行解碼。研究了ffmpeg的解碼流程和實(shí)現(xiàn)以及ffmpeg解碼 H.264的實(shí)現(xiàn),最后實(shí)現(xiàn)了ffmpeg和ffplay在嵌入式平臺(tái)上的移植并給出了實(shí)現(xiàn)圖。從實(shí)驗(yàn)結(jié)果分析,研究是切實(shí)可行的。目前,智能交通行業(yè)的發(fā)展已經(jīng)迎來(lái)了新浪潮,智能監(jiān)控已成為智能交通行業(yè)車輛信息采集的主要方式[9],嵌入式系統(tǒng)在智能交通上的應(yīng)用已成可能,隨著技術(shù)的不斷深入,交通智能化必定會(huì)在各領(lǐng)域的共同努力下成為不可逆轉(zhuǎn)的趨勢(shì)。從實(shí)際運(yùn)用看,上述研究可以依托視頻傳感器采集的圖像,利用現(xiàn)階段路口大范圍普及的視頻攝像頭,利用現(xiàn)有的資源獲取極大的效益,無(wú)需增加額外的成本。
[1]畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)——H.264/AVC[M].北京:人民郵電出版社,2005:68-128.
[2]郭寶龍,倪 偉,閆允一.通信中的視頻信號(hào)處理[M].北京:電子工業(yè)出版社,2007:30-55.
[3]馬宇峰,魏 維,楊科利.視頻通信中的錯(cuò)誤隱藏技術(shù)[M].北京:國(guó)防工業(yè)出版社,2007:44-58.
[4]WIEGAND T,SULLIVAN G J.Overview of the H.264/AVC Video Coding Standard[J].IEEE Transactions on Circuits and Systems for Video Technology,2003,13(7):560-576.
[5]SULLIVAN G J,TOPIWALA P,LUTHRA A.The H.264/AVC Advanced Video Coding Standard:Overview and Introduction to the Fidelity Range Extensions[C]∥SPIE Conference on Applications of Digital Image Processing,2004:376-382.
[6]IAIN E,RICHARDSON G.H.264 and MPEG -4 Video Compression[M].The RobertGordon University,Aberdeen,UK,2004:159 -187.
[7]周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2005:415-449.
[8]何 勛,周 鷹,王亞非.基于S3C2440的H.264軟編解碼器實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2010,38(6):38-39.
[9]王靜靜.面向智能交通的視頻車輛檢測(cè)、跟蹤和識(shí)別算法研究[D].山東:東北大學(xué),2009:12-16.