彭玲 黃松發
摘要:本文將嵌入式技術與網絡技術融合到視頻監控系統,提出了基于S3C2440A和MJPG-Streamer的嵌入式網絡視頻監控系統,通過測試表明視頻圖像顯示效果較好,運行穩定、可靠。
關鍵詞:S3C2440A USB攝像頭 MJPG-Streamer v4l2
1 概述
隨著科學技術的高速發展,視頻監控系統已經進入到人們生活的各個方面,將嵌入式技術與網絡技術融合到視頻監控系統,彌補了以前傳統視頻監控系統存在體積過于龐大、布線復雜、價格高等不足,在圖像處理與傳輸方面都有很好的應用,具有重要的社會和應用價值[1]。
2 總體設計
本文提出的視頻監控系統以ARM9的S3C2440A 作為主控芯片,配合Linux操作系統,通過USB與攝像頭連接,搭建了MJPG-Streamer流媒體視頻服務器,完成視頻數據的采集、壓縮及網絡傳輸到遠程客戶端[2],遠程客戶端通過軟件進行查看,從而實現視頻監控。
3 系統硬件設計
本系統的核心板采用Samsung公司生產的S3C2440微處理芯片,該芯片基于ARM920T內核,主頻高達400MHz,內置了USB控制器,本系統的USB攝像頭采用具有視頻壓縮編碼的ZC0301P芯片[3]。
4 系統軟件設計
4.1 Linux內核配置編譯 要使USB攝像頭能正常工作,Linux需要加載該功能模塊,可以有兩種方式:一種是把相應模塊編譯進內核;另一種是編譯成模塊,生成對應的.o文件,可以動態加載[2]。本文采用第一種方式,直接編譯進內核,USB攝像頭隨內核啟動就能正常工作了。在PC機的Linux系統下,進入linux-2.6.30.4內核目錄,輸入make menuconfig,進入到Linux 內核配置菜單,由于本文選擇ZC0301P系列的USB攝像頭,具體操作如下:
Device Drivers 目錄---> <*> Multimedia support ---> [*] Video capture adapters --->[*] V4L USB devices ---> <*> USB ZC0301[P] Image Processor and Control Chip support。
保存配置后,執行make zImage可生成新的壓縮內核zImage。
4.2 MJPG-Streamer視頻服務器軟件的設計 MJPG-
Streamer是一個基于網絡應用的輕量級的開源的視頻服務器軟件,可以從USB攝像頭中獲取視頻數據,通過TCP/IP網絡協議傳輸到客戶端,主要包括input插件和output插件,結合Linux 系統的API,能完成視頻數據的采集、壓縮和網絡傳輸[4]。
4.2.1 input插件。input插件主要是完成USB攝像頭的初始化以及視頻數據采集,需要調用Video for Linux(V4L),它是上層的視頻應用程序與系統內核的接口,由于V4L 中存在的一部分設計上的bug[2],本文使用V4L的改進版V4L2來編寫視頻采集程序,具體流程如圖2所示。
4.2.2 output插件。output插件主要是完成視頻壓縮、網絡傳輸。本文使用基于幀內和幀獨立的M-JPEG壓縮技術,雖比不上低碼率圖像壓縮標準的H.264,但畫質還是比較清晰的,在嵌入式中應用比較廣泛。在網絡傳輸上使用TCP/IP網絡協議,定義socket 套接字,通過bind、listen、accept來編程,實現視頻數據的網絡傳輸[2]。
4.2.3 MJPG-Streamer視頻服務器的搭建及系統測試。本文搭建MJPG-Streamer視頻服務器,并進行系統測試,具體步驟如下:
①首先下載MJPG-Streamer源碼包,在PC機的Linux 系統下,使用tar 命令解壓。
②在PC機的Linux 系統下安裝交叉編譯器arm-linux-gcc,生成的可執行文件可以在ARM9開發板上運行。
③進入到mjpg-streamer目錄下,將所有目錄下的Makefile文件中的CC=Gcc修改為CC=arm-linux-gcc,使用make編譯,生成uvc-stream、mjpg-streamer、input*.so、output*.so的組件。
④將mjpeg-client/bin/win32-upx/目錄下的客戶端程序viewer.exe,復制到windows平臺下,可以直接在windows平臺下運行[5]。
⑤將前面所生成的內核通過TFTP下載到ARM9開發板中并啟動,連上USB 攝像頭。
⑥在超級終端上,通過NFS掛載,將input*.so、output*.so文件復制到ARM9開發板的/lib/WebCam目錄下,將mjpg-streamer復制到ARM9開發板的/sbin/目錄下,然后運行可執行文件uvc-stream。
⑦在PC端打開viewer.exe,輸入ARM9開發板的ip和端口號,再點擊connect,就可以實現監控顯示,效果如圖3所示。
5 總結
本系統以S3C2440A為核心,結合Linux操作系統,搭建MJPG-Streamer視頻服務器,實現了嵌入式視頻監控,但只是基于本地局域網的視頻監控,且視頻顯示清晰度及實時性還有待改進,隨著無線網絡的發展,還可以利用無線網卡實現實時無線監控。
參考文獻:
[1]葛林.基于ARM9和OpenCV的視頻監控系統的研究[D].湖北工業大學,2013.12.
[2]華春夢,劉沖.基于S3C2440嵌入式平臺的USB攝像頭視頻監控[J].電腦開發與應用,2015.1.
[3]許敏.基于S3C2410的嵌入式視頻監控系統的設計[J].電腦知識與技術,2014.2.
[4]陳恒鑫,林威,張欽宇.基于MJPG-Streamer的移動視頻監控系統設計[J].計算機測量與控制,2014.5.
[5]李佳林,劉永春.基于S3C2440網絡視頻采集系統的設計與實現[J].電腦知識與技術,2014.1.