基于S3C6410的無線視頻監控系統設計
Mjpg—streamer是一個視頻流應用軟件,使用V4L2(Video4 Linux 2)的接口,通過文件或HTTP方式訪問linux—UVC兼容攝像頭。視頻采集功能通過調用mmap()函數將視頻采集設備映射到系統內存中來實現,取代了傳統的直接讀取用戶空間設備的方式,繞過了內核緩沖區,加快了視頻數據的處理速度,提高了實時性。
Mjpg—streamer支持使用攝像頭內的DSP硬件壓縮功能付出少量硬件壓縮時的電源開銷,減少了CPU的負荷,減少帶寬的占用,特別適用于嵌入式設備。
MJpg—streamer采用模塊化的設計方法,以功能塊,即plug—in(組件)為單位進行描述。Mjpg—streamer的工作就是將其中的一個輸入組件和多個輸出組件綁定在一起,所有的功能都是通過它的各個組件完成的。用戶可以選擇需要的模塊,并進行必要修改,以完成所需功能。體系結構如圖2所示。

插件最主要且最常用的組件是input—uvc輸入組件和output—http輸出組件。其他組件包括input—control、input_file、input_test picture、input_gspcavl、output_autofocus、output_file、out_viewer,如圖3所示。
2.2. 1 input_uvc輸入組件
Input_uvc組件的主要功能是獲取攝像頭拍攝的圖像并將其壓縮編碼,共包括5個組件接口函數,這些組件接口函數是各個組件提供給外部使用的接口。相關函數的定義可查看input_uvc.c文件。
Output_http輸出插件是功能齊全的HTTP 1.0的web服務器,通過輸入插件獲取的USB攝像頭圖像數據處理之后以流媒體的形式輸出,并可為設置用戶名和密碼,最終在其客戶端瀏覽器顯示。
2.2.2 mjpg—streamer視頻服務器的移植
Mjpg—streamer的移植需要JPEG庫的支持,所以首先需要移植JPEG庫到開發板。從http://www.ijg.org/files/下載jpeg源碼包,解壓縮后進入其目錄,在源碼包目錄執行./configureCC=arm-linux-gec-host=arm-unknown-linux-prefix=/opt/linux/jpeg-enable-shared-enable-static命令配置其交叉編譯器和編譯后安裝的目錄,然后執行make命令編譯和makeinstall命令安裝,最后將jpeg目錄下生成的庫文件libjpeg.so.9拷貝到開發板根目錄下的lib文件夾中,即完成jpeg庫的移植。
通過sourceforge網站下載mjpg-streamer源碼包。修改input_uvc目錄下的Makefile文件,以其滿足編譯要求。然后執行make CC=arm-linux-gcc命令進行編譯。在開發板建立mjpg安裝目錄,將其源碼目錄中的.so為后綴的共享庫文件和start.sh文件及文件夾WWW拷貝到其中,同時復制編譯后目標文件路徑下的可執行文件mjpg_streamer到開發板根目錄的bin文件夾中,至此整個移植過程完畢。最后執行./ mjpg_streamer-i“mjpg/input_uvc.so-y-d/dev/video2”-o“/mjpg/output_http.so-w/mjpg/www”命令以開啟視頻服務器。
3 系統測試及性能分析
本文采用飛凌公司的ARM11開發板進行實驗,通過燒寫并運行應用程序,可在遠程PC機上看到視頻監控效果。在瀏覽器端輸入服務器端的IP地址訪問目標服務器,即輸入http://10.17.133.88:8080/?action=stream,視頻監控效果如圖4所示。從監控畫面可以看出,接收到的監控畫面比較清晰,反映出通過Mjpg-streamer服務器進行無線傳輸的圖像畫面質量較好,達到了無線傳輸的功能。

通過表1中兩種方法進行穩定性測試,從測試效果可以看出,在瀏覽器端顯示的圖像信息良好,系統不管在何種情況下,均沒有出現死機或卡頓的現象,說明設計的監控系統性能穩定。

4 結束語
本文設計了一種基于ARM11、USB攝像頭、WIFI以及Mjpg-streamer軟件的嵌入式視頻監控系統,進行了linux系統及視頻服務器軟件的編譯與移植,實現了視頻流在基于802.11g的遠程視頻的實時穩定傳輸。該系統體積小,功耗低,經測試,系統穩定可行,實時性好,可被多用戶同時訪問,遠端計算機可以清晰地觀測到室內監控畫面。該系統滿足室內視頻監控的需求,為進一步提高視頻圖像傳輸質量和傳輸效率,可以考慮加入最新H.264編解碼算法進行視頻圖像的編解碼。
評論