王越,龐振營,王帥,范先星
(重慶理工大學(xué)a.計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院;b.電子信息與自動(dòng)化學(xué)院,重慶400054)
嵌入式無線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
王越a,龐振營a,王帥b,范先星a
(重慶理工大學(xué)a.計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院;b.電子信息與自動(dòng)化學(xué)院,重慶400054)
以搭載S3C2440微處理器的ARM9開發(fā)板為硬件平臺(tái),使用USB免驅(qū)攝像頭作為視頻圖像采集設(shè)備,通過Linux內(nèi)核提供的統(tǒng)一接口V4L2實(shí)現(xiàn)視頻圖像的采集。系統(tǒng)使用MJPEG算法壓縮技術(shù)實(shí)現(xiàn)視頻數(shù)據(jù)的編解碼,使用無線WiFi技術(shù)將視頻數(shù)據(jù)傳輸給客戶端。嵌入式設(shè)備終端采集視頻數(shù)據(jù)軟件是基于Linux開源的MJPG-streamer軟件,針對本系統(tǒng)的需要進(jìn)行了重新編寫,并使用多線程技術(shù)。PC機(jī)端的監(jiān)控管理平臺(tái)是基于Qt和OpenCV開發(fā)的一款具有友好圖形用戶界面的客戶端軟件。同時(shí),在手機(jī)移動(dòng)端基于Android開發(fā)了一款易安裝、易操作的APP客戶端。實(shí)驗(yàn)結(jié)果表明:該系統(tǒng)運(yùn)行穩(wěn)定,在視頻監(jiān)控客戶端能獲得清晰流暢的視頻流數(shù)據(jù)。
嵌入式;Linux;視頻監(jiān)控;V4L2
視頻監(jiān)控是對人們無法直接、即時(shí)觀察的場所提供實(shí)時(shí)、形象、真實(shí)的被監(jiān)控對象的畫面作為即時(shí)處理或事后分析的一種手段[1]。隨著經(jīng)濟(jì)建設(shè)的發(fā)展,無論是在銀行金融行業(yè),還是在公司樓宇、倉儲(chǔ)管理等行業(yè),視頻監(jiān)控技術(shù)都發(fā)揮著不可替代的作用[2]。傳統(tǒng)有線視頻監(jiān)控系統(tǒng)需要復(fù)雜的網(wǎng)絡(luò)布線,并且無法在手機(jī)移動(dòng)端隨時(shí)隨地查看監(jiān)控效果。本文克服了傳統(tǒng)有線視頻監(jiān)控系統(tǒng)中存在的不足,設(shè)計(jì)并實(shí)現(xiàn)了在PC客戶端和手機(jī)APP客戶端均能通過無線WiFi實(shí)時(shí)監(jiān)控的嵌入式無線視頻監(jiān)控系統(tǒng),并獲得了較好的監(jiān)控效果。
系統(tǒng)主要包括基于ARM硬件平臺(tái)的無線視頻監(jiān)控終端[3-4]、PC機(jī)Windows系統(tǒng)下的Qt客戶端和手機(jī)移動(dòng)端的APP客戶端。無線視頻監(jiān)控終端使用以S3C2440微處理器芯片為核心的ARM9開發(fā)板為硬件平臺(tái),并搭載所需的Linux操作系統(tǒng)。首先,使用開發(fā)板上連接的USB免驅(qū)攝像頭采集視頻數(shù)據(jù),然后將采集到的數(shù)據(jù)傳輸?shù)紸RM開發(fā)板,由開發(fā)板上服務(wù)器端的圖像采集處理軟件對數(shù)據(jù)進(jìn)行處理,最后通過開發(fā)板上連接的USB無線網(wǎng)卡發(fā)出的無線WiFi信號(hào)將視頻數(shù)據(jù)傳輸給客戶端。PC機(jī)Windows下的監(jiān)控管理平臺(tái)是基于Qt和OpenCV開發(fā)的一款具有友好圖形用戶界面的客戶端,能實(shí)現(xiàn)實(shí)時(shí)監(jiān)控、實(shí)時(shí)視頻錄像等功能;手機(jī)移動(dòng)端是基于Android開發(fā)的一款易操作的APP客戶端,能實(shí)現(xiàn)實(shí)時(shí)監(jiān)控、實(shí)時(shí)錄像、拍照等功能。二者通過特定客戶端連接無線視頻監(jiān)控終端的無線WiFi后,均能獲得清晰流暢的視頻流數(shù)據(jù),系統(tǒng)穩(wěn)定性較好。無線視頻監(jiān)控系統(tǒng)框圖見圖1。
本系統(tǒng)選用jz2440開發(fā)板作為無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)的硬件平臺(tái)。jz2440開發(fā)板是以S3C2440微處理器為核心的開發(fā)平臺(tái)。S3C2440處理器是具有ARM920T內(nèi)核的一款16/32-bit RISC處理器,指令執(zhí)行效率最高可達(dá)300 MIPS。該處理器內(nèi)帶16 Kb指令緩存和16 Kb數(shù)據(jù)緩存,并采用12 MHz的系統(tǒng)外部時(shí)鐘源。系統(tǒng)存儲(chǔ)擴(kuò)展了512 MB的NAND Flash(K9F1208U0M芯片)和64 MB的SDRAM(K4S561632E芯片)[5],其快速的數(shù)據(jù)處理能力和豐富的存儲(chǔ)空間為系統(tǒng)高效穩(wěn)定地運(yùn)行提供了硬件保障[6-7]。
運(yùn)行在硬件平臺(tái)之上的Linux系統(tǒng)主要包括4個(gè)層次[8]:引導(dǎo)加載程序(Bootloader)、Linux內(nèi)核、根文件系統(tǒng)、應(yīng)用程序。
圖1 無線視頻監(jiān)控系統(tǒng)框圖
2.1U-boot移植
在嵌入式操作系統(tǒng)中,Bootloader是連接操作系統(tǒng)和硬件平臺(tái)的橋梁,它在系統(tǒng)上電時(shí)開始運(yùn)行,初始化硬件設(shè)備,準(zhǔn)備軟件環(huán)境,最后調(diào)用操作系統(tǒng)內(nèi)核。U-boot(universal boot loader)是遵循GPL條款的開放源代碼項(xiàng)目,為Bootloader中較為流行、功能強(qiáng)大的引導(dǎo)加載程序[9]。U-boot移植需要修改與開發(fā)板相關(guān)的配置文件和底層接口文件,然后才可以在目標(biāo)開發(fā)板上運(yùn)行。限于篇幅,移植過程本文省略。
2.2Linux內(nèi)核移植
開發(fā)板使用linux-3.4.2內(nèi)核版本,需要修改內(nèi)核中的時(shí)鐘頻率使其支持系統(tǒng)外部時(shí)鐘源,修改網(wǎng)卡驅(qū)動(dòng)使其支持網(wǎng)絡(luò)功能,以及修改MTD設(shè)備分區(qū)使其可以掛接文件系統(tǒng)等。
2.3NFS啟動(dòng)根文件系統(tǒng)
新內(nèi)核具備了網(wǎng)絡(luò)功能后,可通過設(shè)置開發(fā)板U-boot控制界面命令行參數(shù)自動(dòng)從NFS啟動(dòng)系統(tǒng)或者從NAND Flash啟動(dòng)系統(tǒng)后手動(dòng)掛接NFS文件系統(tǒng)。本文考慮方便性,選擇前者。
啟動(dòng)開發(fā)板至U-boot控制界面,設(shè)置U-boot的環(huán)境變量,使開發(fā)板從網(wǎng)絡(luò)文件系統(tǒng)(NFS)啟動(dòng)。本文使用的開發(fā)板IP為192.168.2.17,PC端虛擬機(jī)VMware中Linux有線網(wǎng)卡IP為192.168.2.30,NFS目錄為/work/nfs_root/fs_mini _mdev_new,在U-boot控制界面進(jìn)行如下設(shè)置:
set ipaddr 192.168.2.17
set bootcmd'nfs 32000000 192.168.2.30:/ work/nfs_root/uImage_new_wifi;bootm 32000000'
set bootargs console=ttySAC0,115200 root=/ dev/nfs nfsroot=192.168.2.30:/work/nfs_root/fs_ mini_mdev_new ip=192.168.2.17
在完成視頻監(jiān)控系統(tǒng)所需的設(shè)備硬件平臺(tái)的搭建和底層Linux系統(tǒng)的設(shè)計(jì)后,接下來繼續(xù)在嵌入式設(shè)備上構(gòu)建一個(gè)視頻監(jiān)控服務(wù)器,以實(shí)現(xiàn)視頻數(shù)據(jù)的采集和傳輸功能。
3.1服務(wù)器端視頻數(shù)據(jù)采集
視頻服務(wù)器軟件從USB免驅(qū)攝像頭獲取視頻數(shù)據(jù),并將采集到的視頻數(shù)據(jù)使用MJPEG算法壓縮技術(shù)進(jìn)行數(shù)據(jù)處理,然后通過無線方式發(fā)送給客戶端。服務(wù)器端采集視頻軟件是基于Linux開源的MJPG-streamer軟件,針對本系統(tǒng)的需要進(jìn)行了重新編寫。該軟件使用多線程技術(shù),輸入線程實(shí)現(xiàn)采集視頻數(shù)據(jù)功能,輸出線程用來響應(yīng)來自客戶端用戶的請求,并向用戶發(fā)送視頻數(shù)據(jù)。重新編寫后的服務(wù)器軟件使用Linux內(nèi)核向應(yīng)用程序提供訪問音頻、視頻的統(tǒng)一接口V4L2,以實(shí)現(xiàn)視頻圖像的采集。V4L2接口采集視頻數(shù)據(jù)的工作流程見圖2。
3.2服務(wù)器端視頻數(shù)據(jù)傳輸
傳統(tǒng)有線視頻監(jiān)控系統(tǒng)中的數(shù)據(jù)傳輸需要復(fù)雜的網(wǎng)絡(luò)布線,并且無法隨時(shí)隨地地保證移動(dòng)端視頻監(jiān)控的效果[10]。本系統(tǒng)克服了傳統(tǒng)有線視頻監(jiān)控系統(tǒng)的不足,使用無線方式實(shí)現(xiàn)數(shù)據(jù)的傳輸。
為了實(shí)現(xiàn)無線數(shù)據(jù)傳輸,將開發(fā)板外接的USB無線網(wǎng)卡設(shè)置為AP(access point)工作模式,產(chǎn)生供客戶端連接的WiFi無線信號(hào),并設(shè)置DHCP等服務(wù)使開發(fā)板每次連接上USB無線網(wǎng)卡后都能自動(dòng)分配無線IP和自動(dòng)設(shè)置網(wǎng)關(guān)。同時(shí),為連接到開發(fā)板服務(wù)器端的客戶端分配一個(gè)識(shí)別IP,用于區(qū)分不同的客戶端。當(dāng)攝像頭采集到視頻數(shù)據(jù)后,服務(wù)器端將通過無線網(wǎng)絡(luò)通信的方式將攝像頭采集到的視頻數(shù)據(jù)傳輸給連接至服務(wù)器的客戶端。
圖2V4L2接口采集視頻數(shù)據(jù)的工作流程
在Linux中,網(wǎng)絡(luò)通信是基于Socket編程實(shí)現(xiàn)的。服務(wù)器端通過Socket建立一個(gè)通信連接端口,客戶端通過此端口與服務(wù)器建立連接,并進(jìn)行通信。服務(wù)器與客戶端之間的通信傳輸過程描述如下[11]:服務(wù)器端先調(diào)用Socket()函數(shù)創(chuàng)建一個(gè)套接字,接著調(diào)用bind()函數(shù)給套接字綁定一個(gè)端口號(hào),然后再調(diào)用listen()函數(shù)監(jiān)聽客戶端用戶請求;如果客戶端有connect()請求,服務(wù)器端則調(diào)用accept()函數(shù)與之建立TCP可靠連接,二者通過send()函數(shù)和recv()函數(shù)進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)通信。具體的TCP網(wǎng)絡(luò)通信流程見圖3。
完成開發(fā)板上視頻監(jiān)控服務(wù)器端的搭建后,即可實(shí)現(xiàn)視頻數(shù)據(jù)的采集和TCP協(xié)議無線網(wǎng)絡(luò)傳輸。由于在客戶端通過網(wǎng)頁顯示視頻流延遲明顯,實(shí)時(shí)傳輸效果差,故在PC機(jī)的Windows系統(tǒng)下基于Qt和OpenCV開發(fā)了一款可移植性好、可操作性強(qiáng)的客戶端,實(shí)現(xiàn)實(shí)時(shí)監(jiān)控、實(shí)時(shí)視頻錄像等功能。在手機(jī)移動(dòng)端基于Android系統(tǒng)開發(fā)了一款易安裝、易操作的手機(jī)APP客戶端,實(shí)現(xiàn)實(shí)時(shí)監(jiān)控、拍照、實(shí)時(shí)視頻錄像等功能。
圖3 服務(wù)器與客戶端TCP網(wǎng)絡(luò)通信流程
4.1PC客戶端實(shí)現(xiàn)
OpenCV是開源的計(jì)算機(jī)視覺庫[12],包含一系列C函數(shù)和少量C++類庫,可實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。本文主要采用OpenCV中廣泛使用的圖形交互和媒體接口High-GUI庫對圖像和視頻進(jìn)行讀寫處理。
Qt是用C++編寫,支持多操作系統(tǒng)平臺(tái)的應(yīng)用程序開發(fā)框架[13]。Qt與其他GUI開發(fā)工具最大的不同在于它自行定義了信號(hào)與槽這種通信機(jī)制,該通信機(jī)制獨(dú)立于標(biāo)準(zhǔn)的C/C++語言。在傳統(tǒng)的GUI工具包中,窗口部件一般通過指向某個(gè)函數(shù)指針的回調(diào)函數(shù)來響應(yīng)它們所觸發(fā)的每個(gè)動(dòng)作。但是,在Qt中信號(hào)與槽取代了這些復(fù)雜的函數(shù)指針,使得編寫的這些通信程序更為明了。信號(hào)可以與槽進(jìn)行單個(gè)連接,也可以將多個(gè)信號(hào)與單個(gè)槽進(jìn)行連接,還可以將單個(gè)信號(hào)與多個(gè)槽進(jìn)行連接。系統(tǒng)調(diào)用connect()函數(shù)將信號(hào)與槽連接起來。當(dāng)信號(hào)被某一對象發(fā)射后,與其相關(guān)聯(lián)的槽將被立刻執(zhí)行,類似普通的函數(shù)調(diào)用。當(dāng)槽函數(shù)執(zhí)行結(jié)束后,系統(tǒng)將調(diào)用disconnect()函數(shù)斷開發(fā)射者中的信號(hào)與接收者中的槽函數(shù)之間的關(guān)聯(lián)。
4.1.1PC端客戶端界面設(shè)計(jì)
Qt Creator是用Qt開發(fā)的輕量級跨平臺(tái)集成開發(fā)環(huán)境。它包含了一套用于創(chuàng)建和測試基于Qt應(yīng)用程序的高效工具,包括高級的C++編輯器、上下文感知幫助系統(tǒng)、可視化調(diào)試器、源代碼管理工具、項(xiàng)目和構(gòu)件管理工具[13]。本文使用Qt Creator設(shè)計(jì)用于接收視頻數(shù)據(jù)的客戶端。
在Windows操作系統(tǒng)下,打開Qt Creator創(chuàng)建一個(gè)工程,在Qt Creator的Design模式下編輯客戶端界面。在主編輯界面放置2個(gè)Line Edit:一個(gè)用于輸入服務(wù)端IP,另一個(gè)用于輸入服務(wù)端Port;5個(gè)Push Button分別用于連接、斷開服務(wù)器,開始、停止錄制視頻和關(guān)閉客戶端;2個(gè)Label分別用于顯示視頻數(shù)據(jù)和當(dāng)前狀態(tài)。
4.1.2視頻圖像顯示過程分析
在服務(wù)器端使用TCP協(xié)議傳輸視頻數(shù)據(jù),故在客戶端也應(yīng)使用TCP協(xié)議來建立網(wǎng)絡(luò)連接和實(shí)現(xiàn)視頻數(shù)據(jù)傳輸。Qt中自帶的QTcpSocket類提供TCP套接字并實(shí)現(xiàn)TCP連接。在QTcpSocket類下創(chuàng)建1個(gè)tcpSocket對象,調(diào)用tcpSocket->connectToHost()連接至服務(wù)器。服務(wù)器端接受客戶端連接請求后,與客戶端建立TCP連接,并調(diào)用send()函數(shù)將攝像頭采集到的視頻數(shù)據(jù)通過無線網(wǎng)絡(luò)以幀為單位傳輸給客戶端。在客戶端用connect()函數(shù)將readyRead()信號(hào)與read()槽函數(shù)進(jìn)行連接。當(dāng)緩沖區(qū)有數(shù)據(jù)要讀的時(shí)候,會(huì)觸發(fā)readyRead()信號(hào),從而自動(dòng)調(diào)用read()槽函數(shù)讀取視頻數(shù)據(jù)。PC客戶端視頻圖像顯示流程如圖4所示。
4.2手機(jī)APP客戶端實(shí)現(xiàn)
Android是以Linux為基礎(chǔ)的開源的移動(dòng)設(shè)備操作系統(tǒng),目前廣泛應(yīng)用于智能手機(jī)和平板電腦[14]。本研究基于Android[15]開發(fā)了一款手機(jī)APP客戶端,用來實(shí)現(xiàn)實(shí)時(shí)監(jiān)控、實(shí)時(shí)錄像、拍照、瀏覽圖片等功能。
1個(gè)Android應(yīng)用通常會(huì)包含多個(gè)Activity,但只有1個(gè)Activity會(huì)作為程序的入口。在Android中,通常使用Intent作為連接不同組件的通信載體。
圖4 PC客戶端視頻圖像顯示流程
在本系統(tǒng)中,當(dāng)打開App客戶端時(shí)會(huì)首先執(zhí)行FlashActivity作為程序的入口。在FlashActivity的界面布局文件flash.xml中放置2個(gè)EditText,一個(gè)用于填寫服務(wù)器的IP,另一個(gè)用于填寫服務(wù)器Port。1個(gè)Button按鈕用于與服務(wù)器建立連接。連接成功后,執(zhí)行startActivity(new Intent(FlashActivity.this,MainActivity.class)),啟動(dòng)MainActivity進(jìn)入視頻監(jiān)控主界面。在MainActivity的界面布局文件main.xml中使用相對布局RelativeLayout進(jìn)行UI布局。在Palette的Custom Views文件夾下創(chuàng)建一個(gè)本系統(tǒng)中使用名為MjpegView的View,并將MjpegView放置在main.xml中,同時(shí)放置與RadioGroup一起使用的一組RadioButton。RadioGroup有OnCheckedChangeListener事件,而對于該事件的處理則使用onCheckedChanged()方法。在該方法中,根據(jù)RadioButton所分配的值來判斷是執(zhí)行拍照、錄像還是瀏覽等操作。手機(jī)APP客戶端視頻監(jiān)控流程如圖5所示。
測試在整個(gè)產(chǎn)品開發(fā)過程中占有非常重要的地位,通過測試能檢測出系統(tǒng)及其穩(wěn)定性是否符合要求。本系統(tǒng)的ARM開發(fā)板有線網(wǎng)卡IP設(shè)置為192.168.2.17,PC機(jī)Windows系統(tǒng)有線網(wǎng)卡IP設(shè)置為192.168.2.10。因?yàn)殚_發(fā)板設(shè)置為網(wǎng)絡(luò)文件系統(tǒng)(NFS)啟動(dòng),所以VMWare虛擬機(jī)中Linux系統(tǒng)的有線網(wǎng)卡IP設(shè)置為192.168.2.30,三者在同一網(wǎng)段。
圖5 手機(jī)APP客戶端視頻監(jiān)控流程
5.1啟動(dòng)視頻監(jiān)控系統(tǒng)的服務(wù)器端
根據(jù)系統(tǒng)需求,對MJPG-streamer軟件進(jìn)行重新編寫。將編寫后的文件通過CuteFTP軟件上傳到VMWare虛擬機(jī)中Ubuntu系統(tǒng)下的任一文件夾里,然后執(zhí)行make命令,生成可執(zhí)行文件mjpg_ streamer。使用命令sudo cp mjpg_streamer/work/ nfs_root/fs_mini_mdev_new/bin/將該可執(zhí)行文件拷貝到開發(fā)板所使用的網(wǎng)絡(luò)文件系統(tǒng)中。
啟動(dòng)開發(fā)板,使用SecureCRT終端仿真軟件登陸到開發(fā)板,連接USB攝像頭和USB無線網(wǎng)卡。經(jīng)過之前的設(shè)置,USB無線網(wǎng)卡已工作在AP模式下。只要連接上USB無線網(wǎng)卡,開發(fā)板就會(huì)自動(dòng)發(fā)出WiFi無線信號(hào)“CQUT_B204”,如圖6所示。
在終端使用命令#cd bin進(jìn)入到bin目錄。在bin目錄下,使用#ls命令可以查看拷貝過來的可執(zhí)行文件mjpg_streamer。輸入“#./mjpg_streamer”命令并回車,可以看到串口終端顯示出的視頻設(shè)備、視頻像素大小、幀格式、端口號(hào)等信息,并等待客戶端的連接。
5.2啟動(dòng)視頻監(jiān)控系統(tǒng)的客戶端
在PC機(jī)windows下,通過無線網(wǎng)卡連接“CQUT_B204”。打開Qt Creator軟件,點(diǎn)擊菜單欄Build下的Run,程序自動(dòng)編譯后開始運(yùn)行,并彈出連接服務(wù)器界面。輸入服務(wù)器IP和服務(wù)器Port,點(diǎn)擊“連接”按鈕連接到服務(wù)器。
圖6 AP模式下的WiFi信號(hào)
在手機(jī)移動(dòng)端,打開WiFi,連接“CQUT_ B204”。打開預(yù)先安裝好的APP客戶端軟件,輸入服務(wù)器IP和服務(wù)器Port,點(diǎn)擊“連接”按鈕連接到服務(wù)器。
成功連接服務(wù)器后,服務(wù)器與客戶端建立TCP連接,并將攝像頭采集到的數(shù)據(jù)通過無線網(wǎng)絡(luò)傳輸給客戶端??蛻舳丝蓪?shí)時(shí)、穩(wěn)定地顯示視頻流數(shù)據(jù),并根據(jù)需要進(jìn)行視頻拍照、視頻錄像、瀏覽圖片等操作。PC客戶端、手機(jī)客戶端與服務(wù)器視頻數(shù)據(jù)的傳輸效果見圖7、8。
圖7 PC客戶端與服務(wù)器的視頻數(shù)據(jù)傳輸效果
圖8 手機(jī)客戶端與服務(wù)器的視頻數(shù)據(jù)傳輸效果
本系統(tǒng)使用V4L2接口技術(shù)完成USB攝像頭視頻圖像的采集,利用MJPEG算法壓縮技術(shù)實(shí)現(xiàn)視頻數(shù)據(jù)的編解碼,通過TCP網(wǎng)絡(luò)實(shí)時(shí)無線傳輸視頻數(shù)據(jù),并設(shè)計(jì)了分別適用于PC機(jī)和手機(jī)移動(dòng)端的客戶端。測試結(jié)果表明,系統(tǒng)能實(shí)時(shí)、穩(wěn)定地傳輸視頻流數(shù)據(jù),對現(xiàn)場視頻圖像具有較好的監(jiān)控效果。存在的不足之處:系統(tǒng)還不能實(shí)現(xiàn)對監(jiān)控現(xiàn)場音頻的支持,也無法遠(yuǎn)程操控?cái)z像頭進(jìn)行任意角度的視頻監(jiān)控,還需要在本系統(tǒng)的基礎(chǔ)上做進(jìn)一步研究開發(fā)。
[1]牛溫佳,劉銀龍.移動(dòng)網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)[M].北京:電子工業(yè)出版社,2013.
[2]陳峰,趙欣.基于QT和嵌入式的視頻監(jiān)控系統(tǒng)[J].通信技術(shù),2011(10):109-111.
[3]唐人財(cái),劉連浩.基于嵌入式Linux遠(yuǎn)程圖像監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2010(11):31-34.
[4]汪洋,鄭連清.基于網(wǎng)絡(luò)的校區(qū)視頻監(jiān)控設(shè)計(jì)與實(shí)現(xiàn)[J].重慶理工大學(xué)學(xué)報(bào):自然科學(xué)版,2011(10):82 -85.
[5]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社,2012.
[6]王溢琴.基于嵌入式的智能家居之視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2014,22(11):3623-3626.
[7]毛劍飛.基于改進(jìn)的H.264的視頻監(jiān)控系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014,23(4):84-90.
[8]張愛芹.基于ARM的嵌入式視頻交通系統(tǒng)平臺(tái)研究[D].重慶:重慶理工大學(xué),2009.
[9]李軍,張華春.U-Boot及Linux2.6在S3C2440A平臺(tái)上的移植方法[J].電子器件,2008(10):1667-1670.
[10]劉艷嬌.基于嵌入式Linux的無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].黑龍江:哈爾濱工程大學(xué),2012.
[11]趙克佳.UNIX程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2002.
[12]于仕琪,劉瑞幀.學(xué)習(xí)Open CV[M].北京:清華大學(xué)出版社,2012.
[13]陳爽.Linux與Qt程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2011.
[14]鄭海洲.基于Android平臺(tái)的嵌入式視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].自動(dòng)化儀表,2013,34(9):30-33.
[15]楊飛,黃國宏.基于Android智能終端的移動(dòng)視頻監(jiān)控系統(tǒng)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(2):195-198.
(責(zé)任編輯楊黎麗)
Design and Implementation of Embedded Wireless Video Monitoring System
WANG Yuea,PANG Zhen-yinga,WANG Shuaib,F(xiàn)AN Xian-xinga
(a.College of Computer Science and Engineering;b.College of Electronic Engineering and Automation,Chongqing University of Technology,Chongqing 400054,China)
This system was equipped with S3C2440 ARM9 microprocessor development board for the hardware platform and the Linux system was built on the platform.Using the USB camera-free drive as a video capture device,using the Linux kernel to provide a uniform interface for V4L2 video image capture and the algorithm of MJPEG to compress and decode the video data,and transmit these to client through WiFi technology.Server-side MJPG-streamer video data acquisition software was based on Linux open source software and this system needed to be overhauled and used multithreading technology.The client that based on Qt and OpenCV has a friendly graphical user interface and is easily installed and operated APP client based on Android for mobile phone.The experimental results show that the system runs stably and both clients can get a clear and smooth video streaming data.
embedded;Linux;video monitoring;V4L2
TP393
A
1674-8425(2015)04-0067-06
10.3969/j.issn.1674-8425(z).2015.04.013
2015-01-02
重慶市科技攻關(guān)計(jì)劃項(xiàng)目(cstc2009AC2068)
王越(1961—),男,重慶人,博士,教授,主要從事嵌入式技術(shù)、數(shù)據(jù)挖掘、數(shù)據(jù)庫技術(shù)研究;龐振營(1987—),男,河南商丘人,碩士研究生,主要從事嵌入式技術(shù)研究。
王越,龐振營,王帥,等.嵌入式無線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].重慶理工大學(xué)學(xué)報(bào):自然科學(xué)版,2015(4):67-72.
format:WANG Yue,PANG Zhen-ying,WANG Shuai,et al.Design and Implementation of Embedded Wireless Video Monitoring System[J].Journal of Chongqing University of Technology:Natural Science,2015(4):67 -72.