FPGA在高清低碼流視頻編碼中應用案例
3G網(wǎng)絡(luò )和智能手機的迅速普及推動(dòng)了移動(dòng)互聯(lián)網(wǎng)的發(fā)展,為安防網(wǎng)絡(luò )從局域網(wǎng)擴展到移動(dòng)互聯(lián)網(wǎng)提供了條件。通過(guò)對移動(dòng)互聯(lián)網(wǎng)的上行帶寬和下行帶寬的實(shí)測可以知,512 Kbps是一個(gè)有效而且可靠的帶寬值,如果能夠在這個(gè)帶寬值限制條件下實(shí)現高清視頻的傳輸,必將可以推動(dòng)移動(dòng)監控應用的普及。本文介紹了FPGA在實(shí)現高清低碼流視頻編碼中的作用以及如何具體實(shí)現。
本文引用地址:http://dyxdggzs.com/article/201610/308402.htm概述
安防攝像機的分辨率和碼流是正關(guān)聯(lián)的,進(jìn)入高清時(shí)代后,碼流就在2Mbps以上,比以前D1時(shí)代要高3倍以上,這么大的碼流在100M/1000M的局部網(wǎng)絡(luò )傳輸是沒(méi)有任何問(wèn)題的,硬盤(pán)存儲的代價(jià)也可以接受;但是如果想在互連網(wǎng)和3G網(wǎng)絡(luò )上傳輸高清視頻,低碼流的要求就凸現出來(lái)了。
首先是高清視頻上傳到互聯(lián)網(wǎng)的問(wèn)題,目前最普及最便宜的上傳技術(shù)是ADSL,上傳速度為512Kbps,用3G也能上傳,CDMA2000的上傳速度為1.8 Mbps,由于無(wú)線(xiàn)傳輸的理論峰值和實(shí)際連續平均值有相當的差距,所以可以估算在幾百Kbps之內;其次是高清視頻從互聯(lián)網(wǎng)下載到顯示終端的問(wèn)題,ADSL的下載速度一般可以在4 Mbps以上,在家里用3G從網(wǎng)上下載1個(gè)幾十MB的文件,TD-SCDMA的下載速度大約為430Kbps,CDMA2000的下載速度大約為720Kbps,WCDMA的下載速度大約為1120Kbps。
綜上所述,高清視頻如果想方便而又經(jīng)濟地在互聯(lián)網(wǎng)和3G網(wǎng)絡(luò )得到應用,512Kbps的平均碼流是合適的。高清視頻在互聯(lián)網(wǎng)和3G網(wǎng)絡(luò )的應用中還有一個(gè)問(wèn)題,就是網(wǎng)絡(luò )實(shí)時(shí)帶寬的波動(dòng)比較大, 在這種環(huán)境下傳輸的視頻其平均碼流越低,視頻的質(zhì)量就越有保證。
目前現狀是高清視頻720p的碼流一般在2Mbps以上,1080p的碼流在4Mbps以上,要大幅度降低碼流,需要從幾個(gè)方面考慮。
H.264編碼器與FPGA
視頻壓縮編碼是最有效降低碼流的方法,目前H.264是編碼器的首選標準。H.264編碼算法很復雜,采用了很多方法來(lái)降低編碼碼流。一般來(lái)說(shuō),視頻由連續的幀組成,編碼后的幀主要有I幀、P幀和B幀。I幀的編碼不依賴(lài)其他幀,只利用幀內的像素進(jìn)行各種預測來(lái)降低編碼碼流;P幀利用當前幀和以前的幀做參考,利用幀內的像素和幀間的像素進(jìn)行各種預測來(lái)降低編碼碼流;B幀利用當前、以前和后面的幀做參考,利用幀內的像素和幀間的像素進(jìn)行各種預測來(lái)降低編碼碼流。
從實(shí)用角度講,P幀和B幀對降低編碼碼流的貢獻最大,因為在監控應用中,P幀和B幀相對I幀的比例可以很大;而其中B幀作用更加明顯:不僅可以利用前后參考幀來(lái)增加預測的準確性,而且B幀的解碼結果還可以不作為參考幀,這樣又可以通過(guò)適當降低B幀編碼質(zhì)量來(lái)降低編碼碼流,于是B幀的碼流又可以比P幀少很多。B幀除了比P幀多了后向參考幀可以用外,所采用的預測方法和P幀是一樣的,所以后面我們只考慮I幀和P幀,分別討論FPGA在預測和變換結果的量化環(huán)節所起的作用。
預測—FPGA在并行處理上的優(yōu)勢
I幀所采用的預測方法是相對簡(jiǎn)單的,而且在P幀和B幀都可以采用,所以I幀的所有預測方法都應該全部實(shí)現;P幀的預測方法非常復雜,H.264編碼器的大部分工作量都在這里。P幀的預測目的就是找到當前宏塊在參考幀的位置(可以將宏塊分成幾部分來(lái)匹配),而且匹配精度是1/4像素,準確的匹配可以最大限度減少編碼。
為了減少工作量,一般是先進(jìn)行整數像素的搜索匹配,然后才是1/2和1/4像素的最后匹配,要想提高搜索匹配的成功率,參考幀數量、搜索范圍和匹配次數都是很關(guān)鍵的。一般來(lái)說(shuō),參考幀多或者搜索范圍大都需要比較多的匹配次數。
由于硬件實(shí)時(shí)性和流水線(xiàn)的要求,P幀的預測都要在固定的單位時(shí)間內完成,在很短的時(shí)間內要想實(shí)現盡可能多的匹配次數,并行處理是唯一的選擇,FPGA在并行處理上體現了優(yōu)越性,可以實(shí)現同時(shí)多個(gè)位置的匹配,像一些小菱形的4點(diǎn)或者3點(diǎn)匹配,就可以同時(shí)計算出3~4點(diǎn)的SAD,比逐點(diǎn)計算快3~4倍。另外,多個(gè)參考幀也可以并行處理,同時(shí)得到不同參考幀的最小SAD;并行處理是可以大大提高匹配次數,但是也需要大量的內部存儲器和邏輯資源,需要從整個(gè)設計的總體資源來(lái)考慮。
評論