翟偉良,李 哲
(1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安 710061;2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安 710061)
?
基于WiFi無線傳輸遠(yuǎn)程視頻監(jiān)控的研究
翟偉良1,李哲2
(1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安 710061;2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安 710061)
針對(duì)傳統(tǒng)的視頻監(jiān)控技術(shù)在遠(yuǎn)程監(jiān)控中成本高,應(yīng)用效率低的問題。文中結(jié)合嵌入式開發(fā)、WiFi與圖形圖像技術(shù),提出了一種基于WiFi無線傳輸遠(yuǎn)程視頻監(jiān)控的方法。該方法以MJPG-Streamer作為服務(wù)器,通過無線WiFi進(jìn)行視頻數(shù)據(jù)傳輸,配置路由器完成端口轉(zhuǎn)換,利用QT Creater設(shè)計(jì)軟件實(shí)現(xiàn)多攝像頭監(jiān)控畫面顯示和錄像。實(shí)驗(yàn)表明,傳輸視頻清晰、流暢,系統(tǒng)穩(wěn)定、可靠,具有良好的擴(kuò)展性和易用性。
WiFi;視頻監(jiān)控;端口轉(zhuǎn)換;無線傳輸
隨著人們對(duì)公共場(chǎng)所安全的重視,視頻監(jiān)控作為其中的一種重要手段,得以快速發(fā)展[1]。傳統(tǒng)監(jiān)控有著布線困難、靈活性差等缺點(diǎn),因此研究具有成本低、靈活性強(qiáng)等特點(diǎn)的嵌入式視頻監(jiān)控系統(tǒng)是有必要的[2]。
本文以微處理器Exynos4412 Quad-core 為核心的ARM9開發(fā)板為硬件平臺(tái)[3]和配置無線路由器實(shí)現(xiàn)端口轉(zhuǎn)發(fā)[4]以便于通過互聯(lián)網(wǎng)顯示,使用USB攝像頭和USB無線網(wǎng)卡來實(shí)現(xiàn)監(jiān)控和傳輸,在嵌入式平臺(tái)上搭建MJPG-Streamer服務(wù)器[5],完成C/S結(jié)構(gòu)[6],并在上位機(jī)使用QT Creater開發(fā)客戶端[7],實(shí)現(xiàn)了遠(yuǎn)程多攝像頭同時(shí)顯示畫面的功能。
無線視頻監(jiān)控系統(tǒng)包括遠(yuǎn)程視頻采集模塊、路由器端口轉(zhuǎn)換模塊、客戶端監(jiān)控視頻顯示模塊3部分。視頻采集模塊通過WiFi連接到路由器,本地PC也可直接通過路由器顯示采集的視頻,經(jīng)過路由器的端口轉(zhuǎn)換,可通過互聯(lián)網(wǎng)傳輸?shù)娇蛻舳说腜C機(jī),進(jìn)行實(shí)時(shí)顯示。總體框架如圖1所示。
圖1 系統(tǒng)總體框架圖
遠(yuǎn)程視頻采集模塊使用Tiny4412嵌入式開發(fā)板為硬件平臺(tái),操作系統(tǒng)為L(zhǎng)inux系統(tǒng)[8],操作系統(tǒng)內(nèi)核為Kernel 3.5,采集端采用市場(chǎng)主流的USB攝像頭,傳輸端采用雷凌公司基于RT5370芯片的無線網(wǎng)卡。由于設(shè)計(jì)采用C/S結(jié)構(gòu),在視頻采集部分需要搭建一個(gè)簡(jiǎn)單通用性能穩(wěn)定的視頻服務(wù)器,使用MJPG-Steamer軟件并對(duì)其做修改使之適合上位機(jī)的需求。
2.1建立PC機(jī)Linux的交叉編譯環(huán)境
嵌入式應(yīng)用軟件開發(fā)要用到交叉編譯環(huán)境,這是因?yàn)檐浖_發(fā)環(huán)境和運(yùn)行程序的目標(biāo)平臺(tái)的操作系統(tǒng),硬件資源有較大區(qū)別。在此使用的宿主機(jī)是基于2.6.32內(nèi)核的Ubuntu 10.04系統(tǒng),硬件平臺(tái)使用Kernel 3.5內(nèi)核版本,宿主機(jī)和硬件平臺(tái)通過串口相連。使用超級(jí)終端作為串口控制終端,對(duì)開發(fā)板進(jìn)行控制。宿主機(jī)編譯的程序要經(jīng)過交叉編譯后才能在硬件平臺(tái)上運(yùn)行,這里使用的交叉編譯環(huán)境是ARM-Linux-GCC 4.5.1 版本。
2.2視頻服務(wù)器軟件設(shè)計(jì)
MJPG-Streamer是Linux下的一個(gè)輕量級(jí)開源視頻服務(wù)軟件,一個(gè)可從單一輸入組件獲取圖像并傳輸?shù)蕉鄠€(gè)輸出組件的命令行應(yīng)用程序。由于MJPG-Streamer采用模塊化的設(shè)計(jì)方法,各功能模塊都放在plugins文件夾,這些功能模塊被稱為插件,插件分為輸入和輸出兩大類,輸入插件包括input_uvc和input_testpicture等,輸出插件主要包括output_file和output_http等,MJPG-Streamer起到控制這些插件的作用,將所有的插件連在一起。這種模塊化的設(shè)計(jì)方法簡(jiǎn)化了代碼的編寫、調(diào)試、維護(hù),程序員只需要遵守設(shè)計(jì)規(guī)范,便可輕松地改寫軟件,實(shí)現(xiàn)自身需要的功能。
原版MJPG-Streamer服務(wù)器顯示的畫面上眾多控制信息,在監(jiān)控時(shí)并不希望看到,所以需在位于WWW文件下的html文件里進(jìn)行修改,刪除無用信息,并對(duì)網(wǎng)頁上的視頻圖像大小、刷新幀率等做適當(dāng)調(diào)整,使其能適應(yīng)客戶端的監(jiān)控視頻顯示部分。由于Kernel 3.5內(nèi)核已自動(dòng)生成了video0~video14的設(shè)備符,新插入的USB攝像頭分配到的設(shè)備符是video15,而MIPG-Streamer使用的設(shè)備符是video0,所以使用mv命令更改設(shè)備符號(hào),然后將以上命令寫成.sh的啟動(dòng)腳本文件。
通過ftp方式將MJPG-Streamer整個(gè)軟件發(fā)送到開發(fā)板上,使用超級(jí)終端執(zhí)行.sh腳本文件,便可運(yùn)行服務(wù)器軟件,這樣服務(wù)器就搭建好了。MJPG-Streamer的工作流程如圖2所示。
啟動(dòng)MJPG-Streamer服務(wù)器后,首先調(diào)用dlopen組件打開視頻采集設(shè)備獲取相關(guān)參數(shù),然后調(diào)用input_init和output_init組件初始化輸入和輸出,當(dāng)收到用戶的連接請(qǐng)求時(shí),調(diào)用input_run組件采集圖像,之后調(diào)用out_put組件在服務(wù)端以Socket套接字方式將采集圖像數(shù)據(jù)通過網(wǎng)絡(luò)發(fā)給用戶。最后當(dāng)收到停止信號(hào)時(shí),結(jié)束工作,釋放資源。
2.3視頻采集程序
視頻采集是在輸出插件input_uvc中完成的,調(diào)用Linux內(nèi)核中關(guān)于視頻設(shè)備的API-V4L2接口,完成打開UVC攝像頭、配置參數(shù)、內(nèi)存映射、處理數(shù)據(jù)和關(guān)閉攝像頭等功能。視頻采集的流程圖如圖3所示。
首先在初始化函數(shù)init_v4l2中用open函數(shù)打開視頻設(shè)備,用ioctl()函數(shù)設(shè)置視頻設(shè)備屬性。發(fā)送VIDIOC_QUERYCAP查詢視頻設(shè)備是否具有所需的功能,發(fā)送控制命令VIDIOC_S_FMT設(shè)置視頻數(shù)據(jù)的格式,例如視頻圖像的長(zhǎng)、寬,圖像格式(JPEG、YUYV格式)。發(fā)送控制命令VIDIOC_REQBUFS請(qǐng)求V4L2驅(qū)動(dòng)分配視頻緩沖區(qū),分配的緩沖區(qū)位于內(nèi)核空間,應(yīng)用程序不能直接訪問,再通過調(diào)用mmap內(nèi)存映射函數(shù)把內(nèi)核空間內(nèi)存映射到用戶空間后,應(yīng)用程序通過訪問用戶空間地址來訪問內(nèi)核空間,這樣減少一次數(shù)據(jù)在內(nèi)存中的復(fù)制過程,增加效率。發(fā)送控制命令VIDIOC_STREAMON啟動(dòng)視頻采集,并把采集到的視頻數(shù)據(jù)保存到視頻驅(qū)動(dòng)的視頻緩沖區(qū)中。發(fā)送控制命令VIDIOC_STREAMOFF停止視頻采集。用close函數(shù)關(guān)閉視頻設(shè)備。
圖2 MJPG-Streamer工作流程
圖3 視頻采集流程圖
為實(shí)現(xiàn)用戶可在遠(yuǎn)程監(jiān)控本地視頻,將視頻采集模塊通過路由器連接互聯(lián)網(wǎng)。路由器中DHCP服務(wù)器會(huì)給每個(gè)采集模塊分配一個(gè)私有IP地址(如192.168.1.xxx),為了實(shí)現(xiàn)通過互聯(lián)網(wǎng)訪問局域網(wǎng)內(nèi)多個(gè)USB攝像頭的功能,就需要解決外網(wǎng)IP能夠訪問私有IP的問題,所以需要靜態(tài)端口映射。靜態(tài)端口映射功能是把在公網(wǎng)上的主機(jī)IP的某一端口翻譯成私有IP,使得私有IP可被公網(wǎng)IP訪問到。在路由器上可在端口映射表里配置目的IP、目的端口、源IP、源端口,由此便可在公網(wǎng)上通過輸入IP:端口號(hào)來訪問不同的攝像頭。端口映射的模型如圖4所示,端口映射表如圖5所示。
圖4 端口映射模型
圖5 端口映射表
QT是1991年由奇趣科技開發(fā)的跨平臺(tái)C++圖形用戶界面應(yīng)用程序開發(fā)框架[9]。既可開發(fā)GUI(圖形用戶接口)程序,也可用于開發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器。QT的優(yōu)點(diǎn)在于有優(yōu)良的跨平臺(tái)特性,支持多種操作系統(tǒng);采用面向?qū)ο蟮目蚣?,模塊化程度非常高,可重用性較好,對(duì)于用戶開發(fā)而言是方便的;QT提供一種稱為signals/slots(信號(hào)/插槽)的安全類型來代替callback(回調(diào))機(jī)制,這使得各個(gè)元件之間的協(xié)同工作變得簡(jiǎn)單。信號(hào)在某個(gè)特定的環(huán)境或者動(dòng)作下被觸發(fā),槽等同于接受并處理信號(hào)的函數(shù),信號(hào)與插槽機(jī)制并不要求類之間互相知道細(xì)節(jié),一個(gè)對(duì)象的信號(hào)可被多個(gè)不同的插槽連接,而多個(gè)信號(hào)也可被連接到相同的插槽,這樣可重用性提高。
客戶端視頻顯示部分界面被分割成4個(gè)窗口,每個(gè)窗口由兩部分組成:用于輸入IP:端口號(hào)的地址欄;開始按鈕、關(guān)閉和錄像按鈕,用于實(shí)現(xiàn)客戶端的各種功能。整個(gè)客戶端軟件的設(shè)計(jì)流程,如圖6所示。
圖6 客戶端軟件設(shè)計(jì)流程
首先用初始化系統(tǒng),使用QSplitter函數(shù)分割出4個(gè)窗口,使用QLineEdit類和QPushButton類分別設(shè)置地址和按鈕,通過connect函數(shù)將信號(hào)和槽連接,用戶選擇窗口,點(diǎn)擊開始按鈕,顯示監(jiān)控畫面,點(diǎn)擊錄像按鈕,開始錄像,點(diǎn)擊關(guān)閉按鈕,關(guān)閉監(jiān)控畫面,最后結(jié)束程序。
點(diǎn)擊運(yùn)行QT Creater,建立工程,建立GUI項(xiàng)目,利用QT Designer(QT 設(shè)計(jì)師)來規(guī)劃主窗口,為實(shí)現(xiàn)多窗口顯示,使用分割窗口QSplitter類。QSplitter *splitterMain =new QSplitter(Qt::Horizontal,0);第一個(gè)參數(shù)代表水平分割,第二個(gè)參數(shù)為0代表是主窗口,無父窗口。QSplitter *splitterLeft =new QSplitter(Qt::Vertical,splitterMain);第一個(gè)參數(shù)代表垂直分割,第二個(gè)參數(shù)代表主窗口是splitterMain,而splitterLeft就被添加到splitterMain中。同樣方式設(shè)定右窗口,這樣就均勻分割出了四個(gè)窗口用來顯示監(jiān)控畫面。然后需要在每個(gè)分割窗口上面添加一個(gè)行編輯器框用來輸入服務(wù)器IP,一個(gè)開始按鈕,一個(gè)關(guān)閉按鈕和一個(gè)錄像按鈕。通過connect()函數(shù)將地址欄returnPressed()信號(hào)和開始按鈕的clicked()信號(hào)與goToSite()槽連接起來。goToSite()程序就是將QUrl地址傳遞給QWebView的Load函數(shù),這樣就通過QWebView對(duì)象顯示出當(dāng)前IP監(jiān)控畫面的網(wǎng)頁。通過connect()函數(shù)將關(guān)閉按鈕的clicked()信號(hào)和back()槽連接起來,back()程序就是關(guān)閉當(dāng)前監(jiān)控畫面。通過connect()函數(shù)將關(guān)閉按鈕的clicked()信號(hào)和video()槽連接起來,video()程序就是保存當(dāng)前監(jiān)控畫面。Video()通過調(diào)用VLC(Video Lan Client)程序,實(shí)現(xiàn)保存錄像功能。VLC是一個(gè)開源的、跨平臺(tái)的視頻播放器[10]。VLC支持大量的音頻視頻傳輸、封裝和編碼格式。特點(diǎn)是支持不完整的流傳輸,由于不確定何時(shí)結(jié)束錄像,視頻監(jiān)控是不完整的流傳輸。通過使用VBS批處理命令調(diào)用VLC程序,然后QT提供QProcess.h頭文件支持調(diào)用外部VBS,使用system("C:UsersAdministratorDesktopstart.vbs")函數(shù),便可在QT界面里執(zhí)行保存命令。監(jiān)控界面顯示如圖7所示,由于條件限制暫時(shí)用一個(gè)攝像頭做演示。
圖7 監(jiān)控界面顯示
本文研究了基于WiFi的嵌入式無線傳輸遠(yuǎn)程監(jiān)控的方法,實(shí)驗(yàn)結(jié)果證明了本設(shè)計(jì)能夠?qū)崿F(xiàn)多路視頻實(shí)時(shí)監(jiān)控,遠(yuǎn)程顯示并保存等功能。且本設(shè)計(jì)靈活性強(qiáng),易安裝,成本相比于傳統(tǒng)的有線視頻監(jiān)控也較低,擴(kuò)展性較好,通過路由器中繼可擴(kuò)大監(jiān)控范圍,也可分割窗口顯示更多的監(jiān)控畫面。本設(shè)計(jì)能滿足環(huán)境復(fù)雜或廣闊區(qū)域的監(jiān)控要求。但監(jiān)控系統(tǒng)仍有不足,暫時(shí)不能實(shí)現(xiàn)智能識(shí)別,還需作進(jìn)一步的設(shè)計(jì)和開發(fā),最
終實(shí)現(xiàn)多路攝像智能識(shí)別運(yùn)動(dòng)物體,且自動(dòng)對(duì)異常情況錄像,并將監(jiān)控畫面?zhèn)鬟f給遠(yuǎn)程客戶端。
[1]錢華明,劉英明,張振旅.基于S3C2410嵌入式無線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2009,17(6):1132-1134.
[2]陳恒鑫,林威,張欽宇.基于MJPG-Streamer的移動(dòng)視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2014,22(11):3597-3599.
[3]王黎明,陳雙橋,閆曉玲.ARM9的嵌入的開發(fā)和實(shí)踐[M].北京:北京航天航空大學(xué)出版社,2008.
[4]傅豐,徐洪章.端口映射的分析與應(yīng)用[J].天中學(xué)刊,2006,21(2):59-60.
[5]陳書益,黃永慧.開源視頻服務(wù)器軟件MJPG-Streamer的研究和應(yīng)用[J].電子設(shè)計(jì)工程,2012,20(5):172-176.
[6]劉媛,張偉,王知學(xué).基于B/S和C/S架構(gòu)的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)[J].儀表技術(shù)與傳感器,2009(10):39-41.
[7]鄭阿奇,陳超.Qt 4開發(fā)實(shí)踐[M].北京:電子工業(yè)出版社,2011.
[8]李新峰,何廣生,趙秀文.基于ARM9的嵌入式Linux開發(fā)技術(shù)[M].北京:電子工業(yè)出版社,2008.
[9]陳周國,王勝銀,付國晴,等.基于Linux QT 技術(shù)的遠(yuǎn)程監(jiān)控GUI設(shè)計(jì)[J].通信技術(shù),2009,42(12):234-236.
[10]張凱,李臨生.基于嵌入式ARM下的視頻監(jiān)控系統(tǒng)的實(shí)現(xiàn)[J].電子科技,2013,26(5):34-36.
Research on Remote Monitoring Based on WiFi Wireless Transmission
ZHAI Weiliang1, LI Zhe2
(1. School of Computer Science, Xi’an University of Posts and Telecommunications, Xi’an 710061, China;2. School of Electronic Engineering, Xi’an University of Posts and Telecommunications, Xi’an 710061, China)
In view of the high cost and low application efficiency of traditional video surveillance technology in remote monitoring,a method of remote video monitoring based on WiFi wireless transmission is proposed, which combines the embedded development, WiFi and graphics image technology.The MJPG-Streamer is adopted as the server and video data are transmitted through wireless WiFi, with the router for port conversion and QT Creater to design software for video display and video recording of multi camera monitoring. The test verifies the good stability, reliability and scalability of system, which offers clear and smooth video.
WiFi; video surveillance; port translation; wireless transmission
2015- 12- 13
翟偉良(1991-),男,碩士研究生。研究方向:嵌入式與系統(tǒng)設(shè)計(jì)。李哲(1963-),男,教授。研究方向:嵌入式系統(tǒng)與自動(dòng)控制。
10.16180/j.cnki.issn1007-7820.2016.09.019
TN926+.24; TP391.4
A
1007-7820(2016)09-068-04