基于IP網絡的實時視頻采集系統(tǒng)
Sitsang板使用的是基于Qt/Embedded的圖形界面系統(tǒng),Qt/Embedded的編譯主要分為三個步驟:
?、倬幾gQt/X11,Qt/X11是運行在IBM兼容PC中標準Linux這上的,這主要為Qt/Embedded及其應用程序提供圖形編譯環(huán)境及仿真運行環(huán)境;
?、诰幾gQt/Embedded,Qt/Embedded為在嵌入式Linux平臺上運行的圖形界面系統(tǒng)及應用程序提供一系列的函數(shù)庫;
③編譯Qtopia,通過使用Qt/X11提供的編譯工具以及Qt/Embedded提供的函數(shù)庫,編譯出最終基于嵌入式Linux平臺的圖形界面系統(tǒng)及該環(huán)境下的應用程序。
2.1.3 文件系統(tǒng)的安裝
在嵌入式平臺上用作非易失存儲的設備一般是Flash,因而在嵌入式平臺上除了廣泛使用的ext2文件系統(tǒng)外,還經常使用jffs2文件系統(tǒng)。作為日志型文件系統(tǒng),jffs2直接寫到非易失存儲器上,而不使用如ext2的緩沖機制,這樣在隨時斷電的情況下夠保護用戶的資料。直接使用mkfs.jffs2生成Sitsang板上的jffs2文件系統(tǒng)。
在嵌入式Linux的內核定制和編譯階段,已經加入了對Video4Linux模塊以及OV511設備的支持,所以運行在Linux下的視頻圖像采集程序,可以通過Video4Linux模塊提供的編譯接口(API)從OV511設備中獲取圖像幀。
①加載USB及OV511設備驅動模塊,同時加載Video4Linux模塊。分別使用命令:modprobe usbcor、modprobe usb-uhci、modprobe vodeodev和modprobe ov511。加載后將生成視頻設備文件/dev/video0,為了和Video4Linux模塊相協(xié)調,使用ln-s/dev/video0/dev/video為Video4Linux模塊的默認視頻設備voideo與物理視頻設備video0建立連接。
?、谑褂肰ideo4Linux模塊提供的API進行視頻采集程序的設計。Video4Linux模塊的視頻采集接口設備為/dev/video,采集程序打開此接口設備并掃描 它以尋找自己所需要的數(shù)據。
這里將簡要介紹一下Video4Linux模塊提供的主要API函數(shù):VIDICGCAP函數(shù)以數(shù)據結構video_capability返回視頻采集設備的性能參數(shù);VIDIOCSFBUF函數(shù)使用數(shù)據結構video_buffer設備采集設備的幀緩存參數(shù),如果設備不支持幀緩存則此調用無效;VIDIOCGWIN函數(shù)使用數(shù)據結構video_window來設備采集窗口參數(shù),使用參數(shù)1調用VIDIOCCAPTURE則開始視頻信號采集,使用參數(shù)0則結束采集;VDIOCGCHAN函數(shù)用來查詢不同的采集通道(包括音頻信道),使用數(shù)據結構video_channel返回通道屬性;VIDIOCSPICT函數(shù)使用數(shù)據結構video_picture來獲取和設置采集圖像幀的屬性,比較重要的是圖像幀的調色板參數(shù);read函數(shù)讀取采集通道中效的下一幀圖像,所讀取的圖像格式和尺寸由前面介紹的VIDIOCSPICT函數(shù)和VIDIOCGWIN函數(shù)決定,這些API函數(shù)以及數(shù)據結構定義在頭文件 中。
整個視頻采集模塊的工作流程見圖3。
2.3 視頻圖像壓縮模塊的設計
由視頻采集模塊獲取的視頻圖像需要在以太網上傳輸,為了提高傳輸效率從而提高視頻圖像質量,則需要將原始的視頻圖像進行壓縮編碼。本系統(tǒng)采用先進的MPEG-4標準對視頻圖像進行壓縮編碼,在幾種開放源代碼的MPEG-4編碼軟件中,選擇xvidcore作為本系統(tǒng)中視頻圖像壓縮模塊中的核心算法。xvid是一個高效的而且具有可移植性的編碼軟件,目前版本為xvidcore-1.0.1。xvid支持Simple Profile和Advanced Profile,支持I/PFrames、B-Frames、Interlacing和GMC,以鉆石和方塊模式來進行PMVFast和EPZS運行估計,是目前比較流行的MPEG-4編碼軟件。
對xvidcore-1.0.1進行交叉編譯比較簡單,有以下主要步驟。
?、俳鈮嚎sxvidcore源代碼:tar-zxvf xvidcore-1.0.1.tar;
②設置環(huán)境變量:export xvidcore=the path of xvidcore;cd $xvidcore/build/generic;
?、凵蒻akefile:./configure-host=localhostbuild=arm-linux-gcc;
?、芫幾g源代碼:make;make install;
?、輰⒔徊婢幾g生成的庫文件libxvidcore.so.*拷貝到交叉編譯器工作目錄的lib子目錄中,該庫文件為系統(tǒng)的其它模塊提供了編程接口。
評論