江艷飛 權太偉 王磊
摘 要:介紹了一種基于ARM和linux的無線視頻監控系統的設計與實現。該系統由監控前端、監控終端和網絡傳輸三部分組成。監控前端用攝像頭進行視頻數據的采集,進行處理后,通過網絡傳輸到監控終端,由監控終端進行視頻數據的解碼和存儲顯示,實現了視頻的無線遠程監控。
關鍵詞:視頻監控 ARM Linux
中圖分類號:TN915 文獻標識碼:A 文章編號:1674-098X(2015)12(c)-0160-02
1 系統總體結構設計
該系統由監控前端(客戶端),監控終端(服務器端)和網絡傳輸三部分組成。監控前端用攝像頭進行視頻數據的采集,進行處理后,通過網絡傳輸到監控終端,由監控終端的應用程序進行視頻數據的解碼和存儲顯示,實現遠程視頻監控的作用。該系統核心硬件選用Samsung公司的S3C2410處理器和中星微zc301攝像頭,系統整體框圖見圖1。客戶端界面制作選擇QT,嵌入式操作系統選擇Linux。
2 嵌入式linux系統構建
該系統在S3C2410處理器的硬件系統上構建了嵌入式Linux操作系統作為應用程序的開發平臺。嵌入式Linux系統的構建過程主要是建立嵌入式交叉編譯環境,首先安裝虛擬機軟件定做虛擬機,在虛擬機上安裝Linux 操作系統,安裝交叉編譯工具,內核編譯移植,建立NFS網絡文件服務器,USB設備驅動加載,完成USB設備驅動的修改及移植。
3 軟件設計
(1)服務器端軟件設計。
服務器端視頻采集軟件設計,要完成基于V4L的USB攝像頭的視頻數據采集,首先需要使系統支持視頻設備,即驅動的加載 ,然后需要獲得相關的視頻設備的屬性信息和圖像信息,并對采集窗口、顏色模式、幀狀態初始化,最后才能進行視頻圖像的采集?;赩4L的視頻數據采集的流程為:打開視頻設備;讀取設備信息;更改設備當前設置;進行視頻采集;對采集的視頻進行處理;關閉視頻設備。視頻采集流程圖如圖2所示。
(2)客戶端軟件設計。
客戶端是將服務器端采集的視頻信息進行顯示。通過QT 設計器,將所要用到的菜單、窗口進行設計實現。主函數中,要先調用登錄的界面進行驗證,成功后調用主窗口
QApplication a(argc, argv);
Widget w;
logwind e;
if(e.exec()==QDialog::Accepted){
w.show();
return a.exec();}
return 0;
(3)客戶端與服務端SOCKET通信。
socket通常也稱作“套接字”,應用程序通常通過“套接字”向網絡發出請求或者應答網絡請求。套接字之間的連接過程可以分為三個步驟:服務器監聽(listen),客戶端請求(connect),連接確認(connect返回值)。服務器,使用Server_Socket監聽指定的端口,等待客戶連接請求,客戶連接后,會話產生;在完成會話后,關閉連接??蛻舳?,使用Socket對網絡上某一個服務器的某一個端口發出連接請求,一旦連接成功,打開會話。如圖3所示,socket通信模型。
服務端一直監聽等待客戶端來連接,一旦有客戶端connect()過來,服務端執行accept()建立連接后,就創建了發送圖像數據到客戶端的線程??蛻舳私⑦B接后,客戶端會先將設置圖像的信息發給服務端,首先讀取客戶端對圖像的設置,把設置信息存放在message結構體里,然后是根據message里的信息對采集圖像的顯示屬性(如亮度bright,對比度contrast等)進行設置,具體操作是通過ioctl()調用底層驅動來完成對攝像頭抓拍圖像的顯示設置,設置完采集圖像顯示屬性后,就開始執行發送這一幀圖像給客戶端的操作:先將讓headerframe指向幀信息頭,然后發送headerframe指向的信息頭給客戶端,再發送剩下的圖像數據。這樣就把完整的一幀圖像發送給客戶端,只要沒有收到客戶端退出的信號,以上的發送過程會循環執行,當收到客戶端退出的信息后,它就退出循環,執行close_sock(sock)關閉套接字,終止線程。服務器發送圖像線程終止后,只要服務進程沒有退出則繼續阻塞等待客戶端的連接,重復上面的過程。
4 結語
該文給出了一種基于嵌入式ARM技術的無線視頻監控系統的解決方案。解決現有監控系統的弊端,實現多客戶端同時監控,通過網絡傳輸,可以利用先有的網絡進行資源共享,不受地域的限制,也可以用于普通家庭的安全監控系統。
參考文獻
[1] 孫江波.基于嵌入式Linux的視頻監控系統設計[J].武漢工業學院學報,2006(3):31-36.
[2] 徐赫.基于ARM嵌入式視頻采集的研究[D].武漢理工大學,2007.
[3] 方芳.基于ARM的嵌入式視頻監控系統的研究[D].北京郵電大學,2008.