摘 要: 研究了一種基于ARM11的視頻采集無線傳輸系統(tǒng),實現(xiàn)了主體家庭網(wǎng)關(guān)通過攝像頭對各個分散房間的有效監(jiān)控。系統(tǒng)選用ARM11內(nèi)核的S3C6410作為系統(tǒng)處理器,CMOS攝像頭OV9650作為采集端,在自主設(shè)計的硬件平臺上搭建Linux軟件系統(tǒng),利用系統(tǒng)內(nèi)部的V4L2提供的數(shù)據(jù)結(jié)構(gòu)、應(yīng)用函數(shù)等完成攝像頭的采集;在傳輸系統(tǒng)方面,采用傳輸速度較快的WIFI-Ad-Hoc模式(端對端傳輸),依靠TCP/IP協(xié)議的傳輸方式使采集端與家庭網(wǎng)關(guān)之間建立連接,成功實現(xiàn)家庭網(wǎng)關(guān)對各個分散采集點視頻信息的接收。
關(guān)鍵詞: 視頻;采集;傳輸;無線網(wǎng)絡(luò);ARM11
在信息、通信不斷發(fā)展的今天,人們對生活環(huán)境的安全性越來越重視,有效的視頻監(jiān)控系統(tǒng)為人們解決了這個問題。隨著電子信息技術(shù)、網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的迅速發(fā)展,嵌入式的無線視頻監(jiān)控隨即出現(xiàn)并且飛速發(fā)展,整個視頻監(jiān)控市場朝著集成化、網(wǎng)絡(luò)化、數(shù)字化和實時化的方向發(fā)展,而家庭視頻監(jiān)控中對采集傳輸?shù)囊笤絹碓礁遊1]。由于視頻數(shù)據(jù)信息量大、實時傳輸要求高,因此視頻監(jiān)控技術(shù)中視頻的采集和傳輸顯得尤為重要。而ARM嵌入式系統(tǒng)的小型化、成本低廉、結(jié)構(gòu)緊湊、占用空間小、可裁減性好、支持無線網(wǎng)絡(luò)等特點,使得利用ARM11+Linux構(gòu)成的采集傳輸系統(tǒng)在現(xiàn)實中具有很大的實用價值。
本文針對網(wǎng)絡(luò)視頻采集傳輸?shù)膶嶋H應(yīng)用需求,結(jié)合圖像采集、無線傳輸和嵌入式系統(tǒng)等新技術(shù),設(shè)計了基于ARM11內(nèi)核S3C6410微處理器的無線視頻傳輸系統(tǒng),在Linux系統(tǒng)平臺上實現(xiàn)通過遠程控制家庭網(wǎng)關(guān)來對各個分散房間環(huán)境的有效監(jiān)控。
1 系統(tǒng)的整體結(jié)構(gòu)
家居視頻采集傳輸系統(tǒng)的整體結(jié)構(gòu)可以分為視頻采集系統(tǒng)和視頻傳輸系統(tǒng)兩個部分。其中家庭網(wǎng)關(guān)是視頻采集與傳輸?shù)年P(guān)鍵,是家庭監(jiān)控系統(tǒng)的主節(jié)點核心設(shè)備,視頻采集傳輸?shù)母黜椕疃夹枰彝ゾW(wǎng)關(guān)下達。整個系統(tǒng)構(gòu)成如圖1所示。
家庭網(wǎng)關(guān)的中央處理器的選擇方案比較多,考慮到家庭網(wǎng)關(guān)的功能和成本,選擇S3C6410微處理器作為基本的中央處理單元完成視頻信息的存儲及傳輸。為了方便采集模塊攝像頭視頻信息的采集處理,選擇功能強大的S3C6410處理器作為采集端的核心,方便家庭網(wǎng)關(guān)與采集模塊同時擴展WIFI模塊來建立Ad-Hoc點對點的無線網(wǎng)絡(luò)連接,實現(xiàn)視頻的快速、平穩(wěn)、流暢的傳輸。
整個系統(tǒng)的工作流程如下:
(1)整個系統(tǒng)上電,使房間各個設(shè)備處于待機狀態(tài),室內(nèi)每個房間安裝帶有攝像頭的采集模塊,并且在采集模塊上集成WIFI模塊,家庭主節(jié)點(家庭網(wǎng)關(guān))也擴展相同的WIFI模塊,每塊WIFI模塊都設(shè)置成Ad-Hoc工作模式;
(2)處于待機狀態(tài)的家庭網(wǎng)關(guān)接收到用戶的命令,判斷用戶需要哪個房間的具體信息,使家庭網(wǎng)關(guān)與所需房間所在攝像頭采集模塊建立連接(兩者通過Ad-Hoc網(wǎng)絡(luò)建立連接)。家庭網(wǎng)關(guān)發(fā)送采集視頻指令給某個房間的采集模塊,相應(yīng)的采集端接收采集指令使處于待機狀態(tài)的采集模塊分析指令,從而開啟攝像頭采集存儲房間的視頻信息;
(3)采集模塊采集視頻信息,根據(jù)命令將采集的視頻信息通過TCP/IP的傳輸方式發(fā)送到家庭網(wǎng)關(guān),家庭網(wǎng)關(guān)根據(jù)用戶命令檢測采集是否完成,選擇是否關(guān)閉會話,使房間設(shè)備處于待機狀態(tài),等待下次采集命令。
2 視頻采集系統(tǒng)的實現(xiàn)
2.1 采集系統(tǒng)硬件設(shè)計
采集系統(tǒng)硬件部分設(shè)計主要包括微處理器單元S3C6410、電源模塊、CMOS攝像頭采集模塊、SD-WIFI無線網(wǎng)絡(luò)模塊、NAND Flash和SDRAM、SD卡等外圍電路模塊等。本系統(tǒng)利用S3C6410處理器控制接收CMOS攝像頭的視頻信號,利用其內(nèi)部集成的Video4Linux2提供的數(shù)據(jù)結(jié)構(gòu)、應(yīng)用函數(shù)等完成攝像頭的采集;SD-WIFI模塊建立Ad-hoc端對端網(wǎng)絡(luò)連接,通過TCP/IP協(xié)議的傳輸方式使采集端與家庭網(wǎng)關(guān)之間建立連接,成功實現(xiàn)家庭網(wǎng)關(guān)對各個分散采集點視頻信息的接收;在此基礎(chǔ)上,配置了1 GB的NAND Flash,用于存放嵌入式Linux操作系統(tǒng)、應(yīng)用程序和數(shù)據(jù),128 MB的SDRAM內(nèi)存,用于存放運行程序及攝像頭采集的數(shù)據(jù); SD卡用于程序的下載和簡易安裝;整個硬件系統(tǒng)設(shè)計統(tǒng)一的電源模塊供電。
整個視頻采集終端中,除了核心處理器S3C6410外,最重要的就是CMOS攝像頭,其中攝像頭的選擇與硬件電路連接是系統(tǒng)硬件設(shè)計的關(guān)鍵。
CMOS攝像頭是一種采用CMOS圖像傳感器的攝像頭,是數(shù)碼設(shè)備用來感光成像的部件,集成在被稱做金屬氧化物的半導(dǎo)體材料上。CMOS圖像傳感器可通過CMOS技術(shù)將像素陣列與外圍支持電路(如圖像傳感器核心、單一時鐘、所有的時序邏輯、可編程功能和A/D轉(zhuǎn)換器)集成在同一塊芯片上,具有體積小、重量輕、功耗低、成本低、編程方便、易于控制等優(yōu)點[2],因此,CMOS圖像傳感器的應(yīng)用已經(jīng)變得越來越廣泛。
本設(shè)計選用傳感器芯片OV9650。OV9650傳感器具有130萬像素的配置,分辨率可達1 280×1 024,具有標(biāo)準(zhǔn)的SSCB接口和10 bit數(shù)據(jù)接口,由于S3C6410片內(nèi)有攝像頭接口外設(shè),所以將OV9650攝像頭芯片直接與處理器攝像頭接口引腳相連,圖像并行傳輸,圖像數(shù)據(jù)速度明顯提高,CMOS攝像頭電路原理圖如圖2所示。
該芯片支持RGB(4:2:2)、YUV(4:2:2)、YCrCb(4:2:2)三種數(shù)據(jù)輸出格式,內(nèi)置138個設(shè)備控制寄存器,地址范圍0x00~0x8A,通過SCCB接口可以方便地設(shè)置傳感器視窗大小、增益、白平衡校正、曝光控制、飽和度、色調(diào)等參數(shù)。
2.2 采集模塊軟件實現(xiàn)
系統(tǒng)軟件可以控制實現(xiàn)硬件設(shè)備CMOS攝像頭對房間視頻信息的采集、存儲,這里選擇Linux作為操作系統(tǒng)。Linux系統(tǒng)下,對視頻設(shè)備的各種操作是通過Video4Linux2(簡稱V4L2)實現(xiàn)的。Video4Linux2是Linux內(nèi)核中支持影像設(shè)備的一組APIs,配合適當(dāng)?shù)囊曨l采集設(shè)備和相應(yīng)的驅(qū)動程序,可以實現(xiàn)影像采集、AM/FM廣播、頻道切換等功能,在遠程會議、可視電話、視頻監(jiān)控系統(tǒng)中有著廣泛的應(yīng)用。V4L2在Linux下進行視頻采集的接口函數(shù)主要有open、read、write、select、mmap以及ioctl等,這與普通字符設(shè)備的驅(qū)動接口形式上都是一致的,但是V4L2為設(shè)備控制接口函數(shù)ioctl提供了豐富的控制字來實現(xiàn)對設(shè)備的管理,管理的內(nèi)容包括對設(shè)備信息的查詢、幀緩沖的設(shè)置、圖像屬性的設(shè)置、視頻的捕捉等。
在Linux下,所有的外設(shè)均被看成是一種特殊文件進行處理,稱之為設(shè)備文件。系統(tǒng)調(diào)用和各種函數(shù)庫直接或間接地提供了內(nèi)核及應(yīng)用程序之間的接口,而設(shè)備的驅(qū)動程序則是內(nèi)核及外設(shè)之間的接口,它完成設(shè)備的初始化和釋放、對設(shè)備文件的各種操作和對中斷進行處理等各項功能。由于應(yīng)用程序屏蔽了外設(shè)硬件的細節(jié),使得應(yīng)用程序可以像普通文件一樣對外進行操作而無需關(guān)注具體細節(jié)[3]。因此,在進行視頻圖像采集之前,必須先加載Video4Linux2模塊為視頻采集設(shè)備提供函數(shù)接口。同時在內(nèi)核中,加載采用OV9650接口芯片的CMOS攝像頭的驅(qū)動,通過OV9650芯片就可以采集視頻數(shù)據(jù)并保存在Linux系統(tǒng)中進行數(shù)據(jù)處理。
Video4Linux2分兩層式架構(gòu),最上層為Video4Linux2驅(qū)動程序本身,最下層架構(gòu)則是影像設(shè)備的驅(qū)動程序。本系統(tǒng)中則是使用V4L2的最上層驅(qū)動程序,即V4L2本身所提供給程序開發(fā)人員的APIs。Linux系統(tǒng)中把設(shè)備看成設(shè)備文件,在用戶空間可以通過標(biāo)準(zhǔn)的I/O系統(tǒng)調(diào)用函數(shù)操作此設(shè)備文件,從而達到與設(shè)備通信交互的目的。
采集端在接收到家庭網(wǎng)關(guān)的采集指令之后開始視頻采集,整個視頻數(shù)據(jù)采集的流程如圖3所示。
3 視頻傳輸系統(tǒng)的實現(xiàn)
3.1 視頻傳輸模塊設(shè)計
3.1.1 傳輸方式選擇
相較于有線網(wǎng)絡(luò)的繁瑣,無線網(wǎng)絡(luò)漸漸成為家庭網(wǎng)絡(luò)的首選。在流行的無線網(wǎng)絡(luò)產(chǎn)品中,最為熟悉的網(wǎng)絡(luò)標(biāo)準(zhǔn)主要有WIFI、BlueTooth、ZigBee、3G等[4],具體詳見表1。
連接ARM與WIFI模塊常用的硬件接口有SPI、SDIO和USB,其中SPI是大多數(shù)微處理器都集成的一種接口,具有硬件連接方便、軟件設(shè)計簡單、節(jié)省系統(tǒng)資源等特點。本系統(tǒng)采用的WIFI模塊支持SPI和SDIO連接。本系統(tǒng)中采用SPI接口來連接S3C6410處理器,通過CON11針腳引出,它是一個2.0間距的20Pin插針腳,為了配合SDIO使用,該接口還包含1路SPI、2個GPIO。
3.2 視頻數(shù)據(jù)傳輸?shù)膶崿F(xiàn)
3.2.1 無線傳輸模式的搭建
傳輸模式的搭建可分為兩個部分,一是內(nèi)核模塊的加載,二是工作模式的設(shè)置。內(nèi)核加載WIFI模塊,通過insmod命令來實現(xiàn),這里需要加載相應(yīng)的運行文件,這兩個文件可以在Marvel官方網(wǎng)站下載;設(shè)定工作模式之前要先使用ifconfig命令設(shè)定目標(biāo)板的IP地址,然后通過iwconfig命令設(shè)置模塊的工作模式和用戶名,為增加安全性,也可以設(shè)置相應(yīng)的密碼。
3.2.2 TCP/IP協(xié)議的視頻數(shù)據(jù)傳輸
TCP(傳輸控制協(xié)議)是TCP/IP體系中面向連接的傳輸層協(xié)議,它可以保證數(shù)據(jù)可靠地傳輸。Linux作為一個通用的操作系統(tǒng),支持所有的網(wǎng)絡(luò)協(xié)議包括TCP/IP協(xié)議。首先,Linux的TCP/IP協(xié)議的實現(xiàn)是基于Linux的一整套內(nèi)核控制機制,如進程調(diào)度機制、進程通信機制、軟中斷機制等,一個基于TCP/IP應(yīng)用程序的執(zhí)行是一個進程,所以操作系統(tǒng)的支持是顯然的,同時也是必須在操作系統(tǒng)的上述機制的控制下才能得以實現(xiàn)。
應(yīng)用程序使用傳輸層的TCP協(xié)議來完成視頻數(shù)據(jù)的可靠傳輸,是因為TCP協(xié)議能夠保證數(shù)據(jù)準(zhǔn)確完整地、按正確的序列在網(wǎng)絡(luò)上傳送到目標(biāo)地址。TCP協(xié)議的特性是能夠提供可靠的、面向連接、字節(jié)流傳送服務(wù),TCP 協(xié)議能夠在兩個通信的主機之間建立點到點的邏輯連接。TCP實現(xiàn)傳送的過程為:首先在通信雙方-客戶端與服務(wù)器之間提供連接,一個TCP客戶與某個給定的服務(wù)器建立連接,通過建立的連接與服務(wù)器交換數(shù)據(jù)信息,最后結(jié)束連接。本文將采集發(fā)送端、接收端看做相應(yīng)的服務(wù)器、客戶端。
在Linux系統(tǒng)中,如果希望通過網(wǎng)絡(luò)和其他程序進行通信,就只能通過套接口socket()實現(xiàn)。套接口是一種使用操作系統(tǒng)中的文件描述符和系統(tǒng)進程進行通信的一種方法。Linux支持多種類型的套接口,每種類型的套接口都有自己的尋址方法,這里支持TCP/IP協(xié)議的套接口類型是INET。一旦申請了一個套接口以后,就可以利用Linux提供的網(wǎng)絡(luò)函數(shù)進行網(wǎng)絡(luò)編輯[7]。具體傳輸過程如圖5所示。
套接口通信的進程使用的是采集端/家庭網(wǎng)關(guān)模式,服務(wù)器采集端用來提供服務(wù),家庭網(wǎng)關(guān)端則可以使用服務(wù)器采集端提供的服務(wù)。這里采集端首先創(chuàng)建一個套接口,然后給它指定一個名字。名字的形式取決于套接口的地址簇,事實上也就是采集端的本地地址,系統(tǒng)使用數(shù)據(jù)結(jié)構(gòu)sockaddr來指定套接口的名字和IP地址。當(dāng)采集端指定套接口以后,它將監(jiān)聽與此地址有關(guān)的連接請求,而請求的發(fā)起者(家庭網(wǎng)關(guān))將會創(chuàng)建一個套接口,然后再創(chuàng)建連接請求并指定采集端的目的地址,對于一個套接口來說,采集端的地址就是它的IP地址和端口號[8],當(dāng)然,對于不同的采集端所分配的IP地址是在一個網(wǎng)段的不同地址。通信過程中的連接請求必須通過各種協(xié)議層,然后等待采集端的監(jiān)聽套接口,一旦采集端收到了連接請求,它可以接受或者拒絕這個請求。當(dāng)接受連接請求后,采集端通過accept()響應(yīng)接受連接,建立起數(shù)據(jù)連接之后,雙方就會進入傳輸狀態(tài),數(shù)據(jù)傳輸完畢之后,數(shù)據(jù)連接有選擇地循環(huán)繼續(xù)傳輸或者撤銷,如此循環(huán)反復(fù),直到會話結(jié)束,從而實現(xiàn)將視頻文件從采集端傳送到家庭網(wǎng)關(guān)。
以往的嵌入式視頻采集傳輸系統(tǒng)都是在ARM9開發(fā)平臺上的,視頻的處理要采用相應(yīng)多媒體處理設(shè)備。而本文采用的ARM11內(nèi)核自身集成了視頻的采集處理功能,簡化了開發(fā)難度,節(jié)約了成本。相較于以往有線家居視頻監(jiān)控系統(tǒng),本設(shè)計采用了比較新穎的無線WIFI監(jiān)控,傳輸速度快捷,滿足了大視頻數(shù)據(jù)傳輸?shù)囊?。本系統(tǒng)構(gòu)建了低成本、低功耗、實時性強的無線視頻監(jiān)控平臺,除應(yīng)用于家居監(jiān)控外,還可以用于搭建各種各樣的應(yīng)用,具有可觀的實用價值。
參考文獻
[1] 郝東東,紀(jì)珂.基于S3C2440_Linux的視頻傳輸系統(tǒng)設(shè)計[J].計算機光盤軟件與應(yīng)用,2012(1):141-142.
[2] 丁昊杰,劉敬彪,盛慶華.基于CMOS圖像傳感器的視頻采集系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2012,35(14):178-188.
[3] 郝俊,孟傳良.基于V4L2的ARM11 USB視頻采集終端的設(shè)計與實現(xiàn)[J].貴州大學(xué)學(xué)報,2011,28(4):74-78.
[4] 陳玉坤,李波.基于嵌入式Linux的Ad-Hoc網(wǎng)絡(luò)視頻傳輸研究[J].測控技術(shù),2011,30(1):83-86.
[5] 曾磊,張海峰,侯維巖.基于WIFI的無線測控系統(tǒng)的設(shè)計與實現(xiàn)[J].電測與儀表,2011,48(7):81-83.
[6] 鄭曉東,王建.基于WIFI技術(shù)的無線傳感器網(wǎng)絡(luò)節(jié)點設(shè)計[J].科技研究,2011(7):61-62.
[7] 何勁,謝松巍.基于Socket的TCP/IP網(wǎng)絡(luò)通訊模式研究[J].計算機應(yīng)用與研究,2001,18(8):134-135.
[8] 王鳳純,魯靜.基于RTP/RTCP的音視頻同步方法研究[J].軟件,2011,32(6):78-80.