任黎明 孫玲玲
摘 要:闡述一種基于嵌入式Linux的無線視頻監控系統的設計和實現方法。該系統主要由視頻采集終端和PC上位機組成。其中,視頻采集終端主要由攝像頭視頻采集模塊、ARM模塊、WiFi模塊組成,PC上位機可進行實時監控。系統軟件采用嵌入式Linux,可編程實現圖像數據采集、壓縮和WiFi模塊的網絡連接與傳輸。實驗結果表明監控系統性能穩定、實時性較好,在實際中具有一定應用前景。
關鍵詞:嵌入式;WiFi;無線監控;Linux
中圖分類號:TP316 文獻標識碼:A 文章編號:2095-1302(2015)02-00-02
0 引 言
視頻監控技術已被廣泛應用到各行各業,并且受到了越來越多的重視。視頻監控在工業生產、安全防范、智能交通、公共場所等領域都有非常廣泛的應用,對于那些需要實時監視但人員又不能到達的場合,視頻監控系統顯得格外重要[1]。本系統是基于Linux操作系統和ARM開發平臺的無線視頻監控方案,融合了嵌入式技術和WLAN技術,實現遠程視頻監控的目的,能廣泛地應用于不同的場景。
1 系統總體設計
本文設計了一種嵌入式無線視頻監控系統。該系統基于嵌入式ARM微處理器和Linux操作系統。攝像頭采集到的視頻數據使用H.264進行壓縮編碼,然后通過WiFi技術在無線局域網中實現視頻圖像數據的傳輸,最后通過上位機軟件顯示視頻圖像。
2 系統設計與實現
2.1 系統開發平臺設計
本系統選用基于三星S5PV210處理器的TQ210開發板作為系統設計的硬件平臺。其中,攝像頭采集視頻圖像,并通過USB接口將信息傳輸至嵌入式系統。嵌入式Linux系統在外設驅動的支持下,通過V4L2函數接口實現視頻圖像的采集;由于采集到的原始視頻信息數據量較大,不利于無線傳輸的實時性,并且會增加系統功耗,故采集后需要先通過視頻壓縮模塊進行視頻壓縮,然后再進行無線傳輸。視頻監控系統對于系統的規模、吞吐量和傳輸的實時性都有比較高的要求,故系統使用WiFi無線來進行視頻圖像數據傳輸。視頻圖像數據通過無線網絡最終傳輸到上位機軟件并實時顯示。圖1所示為系統整體結構圖。
圖1 系統整體結構圖
本文設計的嵌入式視頻采集與傳輸系統使用數碼攝像頭采集視頻數據,和其他接口的視頻攝像頭相比,USB數碼攝像頭可以方便地和嵌入式系統連接[2]。另外,USB攝像頭的采購成本低,開發容易。在大量調研后,本文選擇了基于ZC301芯片組的USB數碼攝像頭。基于ZC301的數碼攝像頭價格合適、使用CMOS傳感器。圖2給出了系統硬件功能框圖。
圖2 系統硬件功能框圖
嵌入式視頻采集與傳輸節點接入網絡后就開始等待上位機下發指令,一旦上位機正確配置完成嵌入式視頻采集與傳輸單元后節點就開始工作。首先,節點通過數碼攝像頭采集視頻信息,并通過H.264算法進行視頻信號的壓縮。然后形成的視頻數據被打包成無線局域網數據,通過無線網卡發送至無線接入點。最后,上位機接收到視頻數據,并解碼播放視頻[3]。
2.2 圖像視頻采集
使用基于ZC301芯片組的USB數碼攝像頭,利用TQ210開發板采集圖像數據并進行壓縮編碼,然后數據打包成RTMP格式,使用WiFi模塊傳給PC端上位機軟件,攝像頭整體框圖如圖3所示。
圖3 攝像頭整體框圖
如上圖所示,處理器對圖像傳感器數據的讀取是通過V4L2接口實現的。V4L2(Vedio For Linux Two)是在 Linux 內核中關于視頻設備的內核驅動框架,為上層訪問底層的視頻設備提供了統一的接口,它是 V4L 的升級版本。V4L2 支持三類設備:視頻輸入設備、vib 設備和radio設備。V4L2采用了分層架構,將應用編程接口和視頻驅動獨立開來,增強了程序的獨立性和可移植性。V4L2主要流程如圖4所示。
圖4 V4L2工作流程圖
其主要流程的程序實現如下:
(1)打開攝像頭
fd = open(dev_name, O_RDWR | O_NONBLOCK, 0);
if (-1 == fd){
fprintf(stderr, "Cannot open '%s': %d, %s\n", dev_name, errno, strerror(errno));
return false;
}
在本文中使用基于ZC301芯片組的USB數碼攝像頭,設置設備名為/dev/video0。為了不出現無法讀取的問題,注意要以讀寫(O_RDWR)的形式打開該攝像頭。如果成功將返回該設備的文件描述符,否則返回錯誤碼-1。
(2)讀取設備視頻參數
struct v4l2_capability cap;
if (-1 == xioctl(fd, VIDIOC_QUERYCAP, &cap)) {
if (EINVAL == errno) {
fprintf(stderr, "%s is no V4L2 device\n", dev_name);
return false;
} else {
return false;
}
}
這里相當關鍵,因為要使用該攝像頭,所以我們必要認真查閱資料,了解該攝像頭的功能和特性,否則可能導致攝像頭無法正常工作,接下去的工作更是無從談起。這里將得到攝像頭性能參數cap,在后面的設置環節將根據該參數設置相對應的數值。
(3)請求設備緩存區
struct v4l2_requestbuffers req;
req.count = 4;
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory = V4L2_MEMORY_MMAP;
if (-1 == xioctl(fd, VIDIOC_REQBUFS, &req)) {
if (EINVAL == errno) {
fprintf(stderr, "%s does not support memory mapping\n", dev_name);
return false;
} else {
return false;
}
}
該步驟將在設備中開辟4個緩存區用于采集視頻,緩存區在設備中聲明,在用戶空間開辟,接下來分別為這4個映射地址。
2.3 H.264視頻壓縮
相對于其它傳統壓縮標準來講,H.264對視頻數據的壓縮率高出不少,并且其自身對信道的適應能力以及多媒體兼容性方面都具有明顯優勢,因此該種標準在當今視頻壓縮以及無線傳輸方面得到了十分廣泛的應用。H.264視頻編碼過程主要分三步實現,分別是H.264編碼器的設計、視頻數據的壓縮程序設計、X264庫文件的交叉編譯。
2.4 WiFi視頻傳輸
本文中選用WiFi來傳輸視頻圖像數據原因如下:其一,傳輸速度非常快,傳輸帶寬能滿足實時視頻數據的要求。其二,無線電波的覆蓋范圍廣,室外空曠場所理論上WiFi最遠覆蓋半徑可達900英尺左右,約合300米。其三,方便快捷,無須布線,只要附近設置有“熱點”,就可高速連接到因特網接,使遠程傳輸和控制成為可能[4]。
2.5 PC上位機視頻顯示
在設置好ARM平臺IP及端口號以后,可在上位機發送視頻采集指令并查看實時視頻圖像,實時顯示圖像如圖5所示。
圖5 視頻服務器總體結構圖
3 結 語
本文提出了基于Linux的無線視頻監控系統,并且實現了基本功能,經測試,本方案具有較高的傳輸速度,顯示圖像畫面清晰。未來若能加入無線Mesh網絡設備,組成更大規模無線視頻監控系統,應用前景將會更加廣泛。雖然該方案可以成功運行,但實驗室的運行環境和實際環境會有不少差別,故有待未來做進一步改進。
參考文獻
[1]黃宇.基于H.264的網絡視頻監控系統設計與實現[D].西安:西安電子科技大學,2011.
[2] Jianmiao Hu,Jianmei Cen.Video surveillance in public space in China[J].Frontiers of Law in China,2009,12(5):12-14.
[3]謝猛.基于ARM和Linux平臺的移動視頻監控小車研制[D].武漢:華中師范大學,2013.
[4]耿元鳴.幾種主流視頻編碼方式的性能比較和分析[J].電子科技,2007(7):51-54.