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