新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式視頻監(jiān)控系統(tǒng)設(shè)計(jì)方案

嵌入式視頻監(jiān)控系統(tǒng)設(shè)計(jì)方案

作者: 時(shí)間:2013-02-19 來(lái)源:網(wǎng)絡(luò) 收藏

2.3 視頻流網(wǎng)絡(luò)傳輸?shù)膶?shí)現(xiàn)

本系統(tǒng)視頻的網(wǎng)絡(luò)傳輸是基于面向連接的TCP協(xié)議來(lái)實(shí)現(xiàn)。TcP/IP協(xié)議數(shù)據(jù)傳輸可分為3個(gè)階段:建立連接,傳輸數(shù)據(jù),斷開(kāi)連接[6]。首先服務(wù)器通過(guò)socket()函數(shù)創(chuàng)建套接字,使用bind()函數(shù)將創(chuàng)建好的套接字與端口綁定,然后調(diào)用listen()函數(shù)使服務(wù)器處于監(jiān)聽(tīng)狀態(tài),等待客戶端應(yīng)用程序的連接請(qǐng)求。客戶端應(yīng)用程序通過(guò)打開(kāi)一個(gè)socket即套接字,來(lái)使用TCP服務(wù)。當(dāng)服務(wù)器接收到用戶的連接請(qǐng)求后,服務(wù)器調(diào)用accept()函數(shù)建立雙方連接,響應(yīng)客戶的請(qǐng)求,并創(chuàng)建新線程,該線程負(fù)責(zé)把數(shù)據(jù)發(fā)送給用戶。

3 嵌入式Web服務(wù)器的設(shè)計(jì)

目前,B/S模式的網(wǎng)絡(luò)結(jié)構(gòu)因其具有先進(jìn)的開(kāi)發(fā)技術(shù)、優(yōu)越的可管理性和可維護(hù)性,以及模式簡(jiǎn)單方便等優(yōu)點(diǎn)而成為最流行的應(yīng)用方式"]。本系統(tǒng)采用的正是該結(jié)構(gòu),因而用戶通過(guò)嵌入式Web服務(wù)器,使用IE瀏覽器即可遠(yuǎn)程訪問(wèn)嵌入式設(shè)備,實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)的遠(yuǎn)程監(jiān)。

Boa是Linux支持web服務(wù)器之一,它是一個(gè)單任務(wù)的http服務(wù)器,具有代碼結(jié)構(gòu)簡(jiǎn)單、支持動(dòng)態(tài)CGI、“p服務(wù),并且源代碼開(kāi)放等優(yōu)點(diǎn),因而特別適合在嵌入式系統(tǒng)中用做web服務(wù)器n]。從網(wǎng)上下載其源代碼Boa—o.94.13.tar.gz,其在本系統(tǒng)上的移植主要包括2個(gè)部分:src下的文件修改和config文件修改。

boa—o.94.13/src文件的修改:首先設(shè)置boa—o.94/Makefile文件中的編譯器變量:CC=/arm一1inux-gcc,CPP一/arnl_linux—gcc_E;并修改編譯方式:LDFLAGS=一g—static。然后在文件compat.h中找到宏定義#defineTIMEz0NELOFFSET(foo)foo##一>tm—gmtoff并修改為#define TIMEZONE一0FFSET(foo)f00->tm—gmtoff。接著便可在boa—o.94/src/下執(zhí)行make進(jìn)行編譯,從而得到的可執(zhí)行程序?yàn)閎oa,使用串口將其下載到目標(biāo)機(jī)上,完成移植。

boa—O。94/boa.conf文件的修改,由于boa必須以root身份啟動(dòng),所以將User nobody修改為User mot,Groupnogroup修改為Group r00t,即賦予管理員權(quán)限;修改服務(wù)器名字,即將ServerName www.your.org.here修改為serverName sm2440;修改DocumentRoot/var/www為
DocumentRoot/home/web,即設(shè)置HTML文檔的主目錄為/home/web;最后指明nime.types文件位置為Mime—Types/etc/milne.types;其他采用默認(rèn)設(shè)置即可。最后將boa-0.94/boa.conf拷貝到/etc/boa/目錄下,配置好Web服務(wù)器,就可以進(jìn)行遠(yuǎn)程訪問(wèn)了。

4 實(shí)現(xiàn)客戶端視頻數(shù)據(jù)接收應(yīng)用程序

本系統(tǒng)的web客戶端采用Java Applet為用戶提供一個(gè)管理人口和顯示界面,Java Applet程序嵌入于HTML文檔并能在標(biāo)準(zhǔn)的瀏覽器中顯示運(yùn)行,這種方式不用專門的開(kāi)發(fā)軟件與網(wǎng)絡(luò)接口,是基于web網(wǎng)絡(luò)應(yīng)用程序的理想選擇。本系統(tǒng)需要在顯示頁(yè)面中嵌入播放器程序?qū)崟r(shí)播放前端獲取的監(jiān)控視頻。其中視頻數(shù)據(jù)接收是客戶端軟件設(shè)計(jì)的關(guān)鍵,其實(shí)現(xiàn)如下:

首先建立網(wǎng)絡(luò)通信,即創(chuàng)建套接字,輸入輸出流。然后分配接收緩沖區(qū),即:byte[]buffer—new byte[5 12*1024];

之后讀取圖像的頭信息,并確認(rèn)圖像數(shù)據(jù)的正確性,即:int n=in.r∞d(bu“er,O,HDRLEN);

其中HDRLEN為信息頭長(zhǎng)度,設(shè)置為50 B大小,通過(guò)對(duì)頭信息中包含的約定字符進(jìn)行判斷,以確定是進(jìn)一步接收?qǐng)D像數(shù)據(jù),還是重新接收頭信息。如果能正確讀取圖像頭信息,就證明此次接收的視頻數(shù)據(jù)流是正確的,接著就可以把頭信息后的圖像數(shù)據(jù)寫入緩沖區(qū),供播放顯示:
n=HDRLEN;

r—in.read(buffer,n,buffer.1ength-n);由于視頻流緩沖區(qū)內(nèi)接收的幅靜態(tài)圖像數(shù)據(jù)包含了圖像頭信息,因此需要將圖像數(shù)據(jù)拷貝到另一緩沖區(qū)內(nèi),以獲得單獨(dú)的圖像數(shù)據(jù):

byte[]buffeLimage=new byte[n];.
for(int i一0;in;i++)
buffer.image[i]=buffer[i+HDRLEN]I

接著從緩沖區(qū)buffer-image中讀人數(shù)據(jù):

BufferedImage imagedata=
Imagel0.read(new ByteArrayInputStream(buffer—image)),
ImageIcon image—icon=new Image Icon(imageedate m-label.set Icon(image—icon),

系統(tǒng)通過(guò)循環(huán),實(shí)現(xiàn)不斷讀取,顯示圖像數(shù)據(jù),用戶便可從主頁(yè)面上獲取前端采集到的實(shí)時(shí)視頻監(jiān)控?cái)?shù)據(jù),畫面流暢,無(wú)明顯延時(shí)和畫面停滯現(xiàn)象,達(dá)到監(jiān)控目的。

5 結(jié)束語(yǔ)

目前,嵌入式產(chǎn)品方興未艾口”。本文提出的這套嵌入式設(shè)計(jì)方案,采用性價(jià)比很高的ARM處理器與開(kāi)源操作系統(tǒng)Linux相結(jié)合,具有高穩(wěn)定性、低成本、低功耗等諸多優(yōu)點(diǎn),并且基于B/S模式,直接接入以太網(wǎng),大量節(jié)省電纜開(kāi)銷,即插即用,實(shí)現(xiàn)跨平臺(tái)監(jiān)控,為用戶提供了極大便利。本系統(tǒng)很好地體現(xiàn)了智能化、集成化、網(wǎng)絡(luò)化、跨平臺(tái)等優(yōu)點(diǎn),可廣泛用于智能家居、智能交通、工廠等制造單位及需實(shí)時(shí)監(jiān)控場(chǎng)所。

蜂鳴器相關(guān)文章:蜂鳴器原理

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 視頻監(jiān)控系統(tǒng) S3C2440 網(wǎng)絡(luò)化程度

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉