趙丹,諶建飛,周旋,鄧敏,唐立軍
(1.長沙理工大學(xué) 物理與電子科學(xué)學(xué)院,長沙 410114;2.近地空間電磁環(huán)境監(jiān)測與建模湖南省普通高校重點(diǎn)實(shí)驗(yàn)室)
基于MJPG-streamer的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)*
趙丹1,2,諶建飛1,2,周旋1,2,鄧敏1,2,唐立軍1,2
(1.長沙理工大學(xué) 物理與電子科學(xué)學(xué)院,長沙 410114;2.近地空間電磁環(huán)境監(jiān)測與建模湖南省普通高校重點(diǎn)實(shí)驗(yàn)室)
針對遠(yuǎn)程實(shí)驗(yàn)操作中實(shí)驗(yàn)動態(tài)信息可視化及實(shí)時(shí)性問題,利用ARM處理器和USB攝像頭設(shè)計(jì)一個(gè)基于MJPG-streamer的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)。該系統(tǒng)使用基于硬件壓縮的USB攝像頭進(jìn)行視頻信息采集,搭建MJPG-streamer流媒體服務(wù)器來完成視頻數(shù)據(jù)的采集和傳輸。測試結(jié)果表明,該方案在幀率10 fps、分辨率640×480情況下,能實(shí)現(xiàn)流暢清晰的視頻傳輸,且平均占用帶寬約200 Kb/s,能滿足遠(yuǎn)程實(shí)驗(yàn)的需求。
遠(yuǎn)程實(shí)驗(yàn);視頻監(jiān)控;MJPG-streamer ;嵌入式應(yīng)用
基于互聯(lián)網(wǎng)的遠(yuǎn)程實(shí)驗(yàn)教學(xué)模式打破了時(shí)間與空間的限制,實(shí)現(xiàn)了儀器設(shè)備的共享,有效地提高了實(shí)驗(yàn)資源利用率和實(shí)驗(yàn)效率[1-3]。遠(yuǎn)程實(shí)驗(yàn)過程控制的研究是遠(yuǎn)程實(shí)驗(yàn)教學(xué)平臺最為關(guān)鍵的一環(huán),而實(shí)驗(yàn)過程的視頻實(shí)時(shí)監(jiān)控是輔助實(shí)驗(yàn)操作必不可少的部分。學(xué)生在遠(yuǎn)程客戶端通過視頻來觀察實(shí)驗(yàn)過程,并根據(jù)實(shí)驗(yàn)現(xiàn)象控制實(shí)驗(yàn)儀器得到實(shí)驗(yàn)結(jié)果。整個(gè)實(shí)驗(yàn)過程對視頻傳輸?shù)膶?shí)時(shí)性、穩(wěn)定性以及如何實(shí)現(xiàn)遠(yuǎn)程訪問提出了較高要求,所以研究實(shí)時(shí)視頻壓縮、傳輸和Web端視頻嵌入技術(shù)具有十分重要的意義。
為了保證實(shí)驗(yàn)的順利進(jìn)行,需要對視頻進(jìn)行實(shí)時(shí)采集、編碼和發(fā)送,要求能在帶寬受限的網(wǎng)絡(luò)中也能實(shí)現(xiàn)流暢清晰的實(shí)時(shí)視頻傳輸。本文針對實(shí)時(shí)視頻監(jiān)控的相關(guān)要求,將ARM處理器和MJPG-streamer軟硬件結(jié)合,設(shè)計(jì)和開發(fā)一個(gè)可用于遠(yuǎn)程實(shí)驗(yàn)平臺的基于MJPG-streamer的實(shí)時(shí)視頻監(jiān)控系統(tǒng),該系統(tǒng)可以實(shí)時(shí)查看實(shí)驗(yàn)進(jìn)展,為遠(yuǎn)程實(shí)驗(yàn)平臺的完善提供實(shí)用價(jià)值。
本設(shè)計(jì)建立在基于ARM處理器的平臺上,主要由硬件和軟件兩部分組成。硬件部分包括核心處理器、USB攝像頭、無線網(wǎng)卡;軟件部分包括在Linux下實(shí)現(xiàn)識別攝像頭和無線網(wǎng)卡設(shè)備的驅(qū)動程序、視頻服務(wù)器端的視頻采集、編碼和傳輸以及客戶端的視頻顯示。整個(gè)系統(tǒng)結(jié)構(gòu)如圖1所示,首先在處理器上搭建MJPG-streamer流媒體服務(wù)器,然后通過MJPG-streamer軟件實(shí)現(xiàn)從USB攝像頭捕獲實(shí)驗(yàn)平臺視頻圖像信息,圖像信息傳入處理器,經(jīng)由網(wǎng)絡(luò)傳輸將視頻流通過視頻服務(wù)器發(fā)送到Web客戶端,在Web客戶端提供多種視頻嵌入方法,根據(jù)不同實(shí)驗(yàn)的要求進(jìn)行嵌入。
圖1 遠(yuǎn)程視頻監(jiān)控系統(tǒng)結(jié)構(gòu)圖
本系統(tǒng)采用ARM Cortex-A9內(nèi)核的Exynos4412芯片為核心處理器,主頻為1.6 GHz,配置2 GB雙通道 DDR3的內(nèi)存及16 GB存儲,提供2個(gè)USB接口以及100M網(wǎng)口,集成有WiFi、藍(lán)牙芯片,因此能夠方便接入網(wǎng)絡(luò)。此外還提供有GPIO針腳和SPI總線用于連接各種傳感器以及電機(jī)等外設(shè),可通過應(yīng)用程序?qū)ν饨釉O(shè)備進(jìn)行控制。
在視頻采集模塊直接使用了免驅(qū)動的USB攝像頭。本方案選用的USB Camera(C270) 支持YUYV格式和壓縮的MJPEG格式的圖像輸出。視頻的數(shù)據(jù)量很大,在有限的網(wǎng)絡(luò)帶寬下進(jìn)行數(shù)據(jù)傳輸,會導(dǎo)致網(wǎng)絡(luò)阻塞、負(fù)載大,畫面比實(shí)際情況延時(shí)較大[4],不利于實(shí)驗(yàn)的有效進(jìn)行。選擇YUYV格式,會消耗大量CPU將YUYV格式圖片壓縮成JPEG格式,整體系統(tǒng)的性能會下降,所以本系統(tǒng)選擇輸出MJPEG格式的攝像頭,streamer只需將得到的JPEG格式的圖片轉(zhuǎn)發(fā)到http服務(wù)器。
圖2 系統(tǒng)硬件結(jié)構(gòu)圖
系統(tǒng)采用WiFi方式進(jìn)行網(wǎng)絡(luò)通信,WiFi模塊與板卡之間的連接采用SDIO接口,WiFi硬件模塊使用的是MTK的MT6620芯片,MT6620除了具備WiFi功能以后,還支持藍(lán)牙、FM、GPS功能。系統(tǒng)硬件結(jié)構(gòu)圖如圖2所示。
本系統(tǒng)的軟件設(shè)計(jì)包括嵌入式系統(tǒng)環(huán)境的搭建、視頻服務(wù)器的搭建、視頻采集以及Web客戶端的設(shè)計(jì)。
3.1 搭建嵌入式操作系統(tǒng)環(huán)境
在建立視頻監(jiān)控系統(tǒng)前,需要搭建運(yùn)行環(huán)境。嵌入式操作系統(tǒng)為開發(fā)應(yīng)用程序提供了軟件平臺,進(jìn)行軟件開發(fā)時(shí)一般采用交叉編譯的方式。嵌入式開發(fā)平臺的搭建包括引導(dǎo)加載程序的移植、Linux內(nèi)核的移植以及文件系統(tǒng)的燒寫[5-6]。
首先搭建交叉編譯環(huán)境,以便能在Linux環(huán)境下得到ARM架構(gòu)下的可執(zhí)行文件,然后配置內(nèi)核參數(shù)裁剪內(nèi)核,刪除要用的功能模塊,制作文件系統(tǒng)實(shí)現(xiàn)使用內(nèi)核和存取文件,最后燒寫引導(dǎo)加載程序、裁剪后的內(nèi)核和文件系統(tǒng)到開發(fā)板。
本系統(tǒng)采用arm-2009q3交叉編譯環(huán)境,引導(dǎo)加載程序bootloader為u-boot-iTOP-4412,內(nèi)核為iTop4412_Kernel_3.0,選擇Linux文件系統(tǒng)實(shí)現(xiàn)使用內(nèi)核和存取文件。V4L2驅(qū)動和USB攝像頭驅(qū)動在配置內(nèi)核部分完成。
3.2 MJPG-streamer流媒體服務(wù)器
MJPG-streamer是一款輕量級的視頻流服務(wù)器軟件,該軟件有多個(gè)輸入輸出組件,可根據(jù)功能的需要來選擇要用的組件[7]。MJPG-streamer的工作就是將其中的一個(gè)輸入組件和多個(gè)輸出組件綁定在一起,所有的工作都是通過它的各個(gè)組件完成[8]。
圖3 MJPG-streamer工作流程圖
input_uvc.so輸入組件直接調(diào)用USB攝像頭驅(qū)動程序,從攝像頭讀取視頻數(shù)據(jù),同時(shí)將視頻圖片壓縮為JPEG格式,然后將視頻數(shù)據(jù)復(fù)制到內(nèi)存中。output_http.so輸出組件是一個(gè)完全符合http標(biāo)準(zhǔn)的webserver,將輸入組件壓縮為JPEG格式的圖片根據(jù)現(xiàn)有M JPEG標(biāo)準(zhǔn)以http視頻數(shù)據(jù)流的形式輸出[9]。用戶可以通過瀏覽器打開網(wǎng)頁實(shí)時(shí)查看遠(yuǎn)程端的視頻圖像信息。MJPG-streamer的工作流程圖如圖3所示。
在主函數(shù)里,首先通過一個(gè)功能函數(shù)getopt_long_only()解析命令行選項(xiàng),也就是將輸入的mjpg-streamer命令解析出來,然后調(diào)用相應(yīng)的函數(shù)。dlopen()函數(shù)負(fù)責(zé)打開*.so插件,dlsym()負(fù)責(zé)調(diào)用插件中的相關(guān)函數(shù)。當(dāng)輸入mjpg_streamer -i "input_uvc.so" -o "output_http.so "時(shí),dlopen()函數(shù)打開輸入插件input_uvc.so和輸出插件output_http.so,系統(tǒng)將會調(diào)用input_uvc.so中的input_init函數(shù),對輸入設(shè)備進(jìn)行初始化;同時(shí)調(diào)用output_http.so中的output_init函數(shù)對輸出涉及到的結(jié)構(gòu)體進(jìn)行初始化。然后在input_run函數(shù)中創(chuàng)建視頻采集線程,將數(shù)據(jù)復(fù)制到全局變量。在output_run函數(shù)中通過socket編程進(jìn)行網(wǎng)絡(luò)通信。當(dāng)接收到客戶端連接請求后,將視頻信息發(fā)送到客戶端。為了能同時(shí)響應(yīng)多個(gè)客戶端的請求,使用了多線程編程,為每一個(gè)請求建立一個(gè)連接,每個(gè)連接就是一個(gè)線程。
3.3 V4L2視頻采集
在Linux操作系統(tǒng)中,由V4L2來實(shí)現(xiàn)視頻采集設(shè)備的各種功能[10]。MJPG-streamer的輸入組件input_uvc.so可以直接調(diào)用USB攝像頭驅(qū)動程序,完成打開攝像頭、配置參數(shù)、處理數(shù)據(jù)和關(guān)閉攝像頭等功能,從攝像頭讀取視頻數(shù)據(jù)。USB攝像頭的設(shè)備文件路徑是/dev/video4,攝像頭設(shè)備以文件形式進(jìn)行讀寫,通過V4L2提供的API接口函數(shù)實(shí)現(xiàn)對/dev/video4的操作。視頻采集的流程圖如圖4所示。
圖4 視頻采集流程圖
輸入組件首先在函數(shù)init_v4l2中用open函數(shù)打開攝像頭。通過ioctl函數(shù)把描述攝像頭信息的結(jié)構(gòu)體寫入驅(qū)動,包括攝像頭采集幀率、圖片大小及格式等信息,涉及到命令VIDIOC_QUERYCAP、VIDIOC_S_FMT、VIDIOC_S_PARM、VIDIOC_REQBUFS,VIDIOC_QUERYBUF,通過mmap函數(shù)完成內(nèi)存映射。在函數(shù)video_enable中通過發(fā)送命令VIDIOC_STREAMON開始圖像數(shù)據(jù)的采集。uvcGrab函數(shù)實(shí)現(xiàn)從攝像頭獲取圖像,memcpy_picture函數(shù)將數(shù)據(jù)復(fù)制到全局buff。接收到主線程視頻采集結(jié)束信號后,函數(shù)video_disable發(fā)送命令VIDIOC_STREAMOFF停止圖像數(shù)據(jù)采集,用free函數(shù)釋放掉攝像頭設(shè)備號關(guān)閉攝像頭。
3.4 Web端視頻嵌入
視頻傳輸用到的是MJPG-streamer的輸出組件output_http.so,是完全符合http標(biāo)準(zhǔn)的Web服務(wù)器。開發(fā)板運(yùn)行后執(zhí)行命令mjpg_streamer -i "input_uvc.so -d /dev/video4 -r 640x480 -f 10" -o "output_http.so ",使用Web登錄服務(wù)器,開始視頻傳輸。
為實(shí)現(xiàn)隨時(shí)隨地進(jìn)行實(shí)驗(yàn)操作的要求,本系統(tǒng)不僅要在實(shí)驗(yàn)室局域網(wǎng)內(nèi)能實(shí)現(xiàn),還要實(shí)現(xiàn)學(xué)校局域網(wǎng)內(nèi)甚至校外廣域網(wǎng)內(nèi)的遠(yuǎn)程視頻監(jiān)控。對于固定IP且路由器端口映射可配置的情況下,可采用端口映射的方法實(shí)現(xiàn)由互聯(lián)網(wǎng)訪問局域網(wǎng)內(nèi)視頻[11]。本文使用端口映射來實(shí)現(xiàn)校園網(wǎng)內(nèi)的遠(yuǎn)程視頻訪問,把公網(wǎng)上的主機(jī)IP的一個(gè)端口翻譯成私有IP,使私有IP可以被公網(wǎng)IP訪問。端口映射示意圖如圖5所示。
圖5 端口映射示意圖
要實(shí)現(xiàn)校園內(nèi)遠(yuǎn)程監(jiān)控,需要一個(gè)靜態(tài)IP地址,如果是局域網(wǎng)則需要設(shè)置端口轉(zhuǎn)發(fā),在路由器上的端口映射表里配置目的IP、端口和源IP、端口。然后要正確配置嵌入式系統(tǒng)的IP、網(wǎng)關(guān)等參數(shù)。查詢到路由器撥號上網(wǎng)的校園網(wǎng)IP(10.128.17.175),由于系統(tǒng)監(jiān)控的是8899端口,首先查看8899端口是否被占用,若被占用則換成另外一個(gè)未被占用的端口。所以圖像源地址變?yōu)閔ttp://10.128.17.175:8989/?action=stream,打開瀏覽器網(wǎng)頁,就可以看到攝像頭抓取到的遠(yuǎn)程端的實(shí)驗(yàn)平臺現(xiàn)場視頻。
系統(tǒng)實(shí)現(xiàn)后結(jié)合遠(yuǎn)程實(shí)驗(yàn)平臺進(jìn)行測試。開發(fā)板開啟無線模塊連接網(wǎng)絡(luò),將USB攝像頭連接至開發(fā)板,開啟視頻服務(wù)器,實(shí)現(xiàn)遠(yuǎn)程的視頻監(jiān)控。在PC機(jī)瀏覽器上登錄遠(yuǎn)程實(shí)驗(yàn)平臺網(wǎng)頁,點(diǎn)擊視頻進(jìn)入視頻監(jiān)控窗口。攝像頭觀察實(shí)驗(yàn)平臺現(xiàn)場情況,外設(shè)控制操作實(shí)驗(yàn)儀器,如圖6所示。
圖6 測試平臺圖
在遠(yuǎn)程網(wǎng)頁端可以清晰地看到攝像頭采集的視頻,視頻畫面流暢,實(shí)時(shí)性高,沒有出現(xiàn)卡頓,無馬賽克和其他非正常的視頻畫面。
通過設(shè)置不同的分辨率和視頻采集幀率,從數(shù)據(jù)傳輸所占帶寬來分析,進(jìn)行系統(tǒng)性能測試。采用了普遍使用的兩種分辨率640×480和320×240來做對比。查詢攝像頭的格式信息可知在這兩種分辨率下,幀率可設(shè)為30、25、20、15、10、5這6個(gè)值。運(yùn)行本系統(tǒng)后,打開網(wǎng)頁端查看視頻信息,使用流量統(tǒng)計(jì)工具實(shí)時(shí)查看網(wǎng)絡(luò)帶寬的占用情況,連續(xù)觀察30分鐘,記錄10個(gè)時(shí)刻的流量值,得到平均流量統(tǒng)計(jì)如表1和表2 所列。
表1 分辨率640×480下視頻服務(wù)器網(wǎng)絡(luò)帶寬占用情況
表2 分辨率320×240下視頻服務(wù)器網(wǎng)絡(luò)帶寬占用情況
由于遠(yuǎn)程實(shí)驗(yàn)動態(tài)信息輸出的變化率較小,所以在幀率10 fps,分辨率640×480情況下,網(wǎng)頁端視頻畫面較大,人眼能看清實(shí)驗(yàn)的變化情況,流暢度、清晰度能滿足遠(yuǎn)程實(shí)驗(yàn)的要求,且?guī)捳加眉s為176~219 Kb/s,能實(shí)現(xiàn)流暢清晰的傳輸。
本文結(jié)合嵌入式技術(shù)、流媒體技術(shù)、網(wǎng)絡(luò)技術(shù)和Web技術(shù),實(shí)現(xiàn)了一種基于MJPG-streamer的遠(yuǎn)程視頻監(jiān)控系統(tǒng),具有實(shí)時(shí)性強(qiáng)、低帶寬和Web端靈活嵌入的特點(diǎn),并能實(shí)現(xiàn)外網(wǎng)訪問。文中詳細(xì)介紹了硬件和軟件設(shè)計(jì),也實(shí)現(xiàn)了校園內(nèi)的訪問,并在遠(yuǎn)程實(shí)驗(yàn)平臺上進(jìn)行了測試。測試結(jié)果表明,本系統(tǒng)能實(shí)現(xiàn)穩(wěn)定、流暢的實(shí)時(shí)視頻傳輸,為遠(yuǎn)程實(shí)驗(yàn)平臺提供技術(shù)支持,對于完善遠(yuǎn)程實(shí)驗(yàn)平臺具有現(xiàn)實(shí)意義。
[1] 鐘映春,華星,羅巖. 基于互聯(lián)網(wǎng)的過程控制遠(yuǎn)程實(shí)驗(yàn)教學(xué)改革[J]. 實(shí)驗(yàn)技術(shù)與管理, 2012 (7):96-98,128.
[2] 騰李強(qiáng). 基于ARM的遠(yuǎn)程實(shí)驗(yàn)控制系統(tǒng)研究[D].北京:北京郵電大學(xué),2014.
[3] A Parkhomenko, O Gladkova, S Kurson, et al. Internet-based technologies for design of embedded systems[J].Experience of Designing and Application of CAD Systems in Microelectronics (CADSM), 2015, 3(2): 67-171.
[4] 丁元舟,羅小巧,楊明紅,等. 停車場遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與開發(fā)[J]. 電子測量技術(shù),2015(3):35-38,42.
[5] 周鵬飛. 基于MJPG-Streamer的移動視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與研究[D].安徽:安徽理工大學(xué),2013.
[6] 賈繼洋. 基于嵌入式的視頻無線傳輸系統(tǒng)的研究[D].西安:西安工程大學(xué),2015.
[7] 陳宗成,鄧華秋. 基于ARM11的嵌入式視頻傳輸系統(tǒng)的實(shí)現(xiàn)[J]. 電視技術(shù),2013(9):210-213.
[8] 陳恒鑫,林威,張欽宇. 基于Mjpg-streamer的移動視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)測量與控制,2014(11):3597-3599,3608.
[9] 趙冰,霍春寶,李巖松. 基于嵌入式Linux的3G無線視頻監(jiān)控系統(tǒng)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013(3):56-58.
[10] 陳續(xù),劉國巍. Cortex-A8和H.264的無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015(3):46-49.
[11] 翟偉良,李哲. 基于WiFi無線傳輸遠(yuǎn)程視頻監(jiān)控的研究[J]. 電子科技,2016(9):68-71.
趙丹(碩士研究生),主要從事信號檢測與處理研究。
Embedded Remote Video Surveillance System Based on MJPG-streamer
Zhao Dan1,2,Chen Jianfei1,2,Zhou Xuan1,2,Deng Min1,2,Tang Lijun1,2
(1.School of Physics&Electronic,Changsha University of Science&Technology,Changsha 410114,China; 2.Hunan Province Higher Education Key Laboratory of Modeling and Monitoring on the Near-earth Electromagnetic Environments)
Aiming at the need of using video to assist users to carry out experimental operation and acquire the real-time experimental dynamic information in the course of remote experiment,an embedded remote video monitoring system based on MJPG-streamer is designed,which chooses ARM development board and the USB camera as the hardware platform and Linux operating system as the software platform.The program uses the USB camera to capture video information,builds MJPG-streamer streaming media server to complete the compression of the video data and real-time transmission.The test results show that the average bandwidth of the video transmission is about 200 Kb/s in the case of 10 fps and 640*480,which can meet the needs of remote experiment.
remote experiment;video surveillance;MJPG-streamer;embedded application
國家科技支撐計(jì)劃課題(2014BAH28F04),湖南省教育廳科學(xué)研究項(xiàng)目(14C0031,15K009)。
TP315
A
迪娜
2016-12-09)