基于FFmpeg的遠程視頻監控系統編解碼
摘要:在遠程視頻監控系統中視頻數據的編碼傳輸以及解碼顯示是一個(gè)重要組成部分,通過(guò)對FFmpeg的研究學(xué)習,考慮采用FFmpeg來(lái)實(shí)現編解碼的方法。遠程監控系統由采集發(fā)送端和接收處理端組成,采集發(fā)送端使用S3C2440作為嵌入式硬件平臺,并通過(guò)USB攝像頭OV9650采集視頻數據,經(jīng)過(guò)FFmpeg編碼后傳輸給接收處理端。接收處理端接收到數據后通過(guò)FFmpeg實(shí)時(shí)解碼,采用OpenCV顯示,實(shí)現遠程監控。
關(guān)鍵詞:FFmpeg;編解碼;嵌入式
0 引言
隨著(zhù)視頻編解碼技術(shù)、計算機網(wǎng)絡(luò )技術(shù)、數字信號處理技術(shù)和嵌入式系統的發(fā)展,以嵌入式網(wǎng)絡(luò )視頻服務(wù)器為核心的遠程視頻監控系統開(kāi)始在市場(chǎng)上嶄露頭角。該系統把攝像機輸出的模擬視頻信號通過(guò)內置的嵌入式視頻編碼器直接轉換成視頻流,通過(guò)計算機網(wǎng)絡(luò )傳輸出去。嵌入式網(wǎng)絡(luò )視頻服務(wù)器具備視頻編碼處理、網(wǎng)絡(luò )通信、系統控制等強大功能,直接支持網(wǎng)絡(luò )視頻傳輸和網(wǎng)絡(luò )管理,使得監控范圍達到前所未有的廣度。在遠程視頻監控系統中,攝像頭獲取的原始視頻流在傳輸之前需要壓縮,而FFmpeg可以將原始視頻壓縮為H264格式視頻流,H264是一種被廣泛使用的高精度視頻的錄制、壓縮和發(fā)布格式,因此采用FFmpeg來(lái)實(shí)現。
1 系統方案
系統是在S3C2440平臺上運行嵌入式Linux系統,使用CMOS攝像頭OV9650獲取實(shí)時(shí)視頻圖像數據,采用H264標準通過(guò)FFmpeg原始視頻進(jìn)行壓縮編碼成視頻流,通過(guò)網(wǎng)絡(luò )傳輸,用戶(hù)在接收處理端經(jīng)過(guò)FFmpeg解碼之后,使用OpenCV顯示播放即可實(shí)時(shí)查看遠程視頻圖像。
系統由兩部分組成:采集發(fā)送端和接收處理端,采用Client/Server設計模式來(lái)實(shí)現兩者之間的相互通信,由接收處理端向采集發(fā)送端發(fā)送控制信號,采集發(fā)送端開(kāi)啟攝像頭進(jìn)行視頻數據采集,采集的原始視頻數據是yuv422格式,經(jīng)過(guò)FFmpcg編碼壓縮成H.264格式視頻流,經(jīng)通信網(wǎng)絡(luò )傳輸到接收處理端;接收處理端接收到視頻流數據后,經(jīng)FFmpeg解碼,通過(guò)OpenCV進(jìn)行顯示。采集發(fā)送端視頻數據采集和發(fā)送采用三星公司的具有ARM920T內核的S3C2440作為嵌入式微控制器,接收處理端采用普通電腦。系統方案如圖1所示。
2 采集發(fā)送端
采集發(fā)送端主要包括嵌入式Linux平臺和攝像頭兩部分,嵌入式Linux平臺需要搭建交叉編譯環(huán)境,而攝像頭需要驅動(dòng)程序才能正常工作。
嵌入式Linux平臺采用三星公司的S3C2440A處理器為硬件平臺,S3C2440A處理器是一款基于A(yíng)RM920T內核的16/32bit嵌入式處理器,主頻
400MHz,最高可達533MHz,支持30/130/200萬(wàn)像素CMOS攝像頭,支持linux2.4和Wince4.2雙操作系統,適合應用于對功率和成本都較敏感的嵌入式系統場(chǎng)合。
攝像頭采用Omni Visio公司生產(chǎn)的CMOS攝像頭OV9650,具有高敏感度、低功耗,高分辨率(最高1300X1028 pixels),支持大量常用的圖像格式、支持自動(dòng)圖像控制等優(yōu)點(diǎn)。在接口上能夠保持與S3C2440的一致性。輸出圖像最大為130萬(wàn)像素,輸出圖像格式包括SXGA,VGA,QVG A,CIF,QCIF等,并可以輸出不同尺寸的圖像。對于不同的輸出圖像格式,最高幀率可以不同,最高可達120f/s,輸出的8位數據格式包括YUV/YCbCr(4:2:2)、GRB(4:2:2)、原始RGB數據3種。
評論