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