国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于S3C6410 和Qt4 的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)

2013-12-29 00:00:00陳霞
電腦知識(shí)與技術(shù) 2013年2期

摘要:提出了一種以嵌入式微處理器S3C6410為核心,利用Qt4構(gòu)建應(yīng)用軟件平臺(tái),采用MPEG-4協(xié)議壓縮視頻數(shù)據(jù)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計(jì)方案;簡(jiǎn)要分析了系統(tǒng)功能需求,確定了系統(tǒng)設(shè)計(jì)的總體方案;按照模塊化的思想,設(shè)計(jì)了各個(gè)功能模塊;分析MPEG-4視頻編碼基本方法,敘述了在軟件上實(shí)現(xiàn)MPEG-4編解碼的實(shí)現(xiàn)方法;實(shí)驗(yàn)結(jié)果表明客戶端圖像清晰,服務(wù)器穩(wěn)定運(yùn)行,基本滿足實(shí)時(shí)性的要求。本設(shè)計(jì)方法靈活,成本較低,易擴(kuò)展,具有一定的實(shí)用價(jià)值。

關(guān)鍵詞:S3C6410;Qt4;MPEG-4;視頻監(jiān)控

中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)02-0383-03

隨著嵌入式網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的發(fā)展,網(wǎng)絡(luò)傳輸數(shù)字化視頻的流媒體技術(shù)的應(yīng)用也日益普及。因此本文嘗試設(shè)計(jì)一款基于通用嵌入式平臺(tái)、價(jià)格較為低廉、采用有線或無(wú)線網(wǎng)絡(luò)接入技術(shù)的視頻監(jiān)控系統(tǒng),可以應(yīng)用于一些對(duì)實(shí)時(shí)性要求不高的場(chǎng)合。

該網(wǎng)絡(luò)視頻監(jiān)控設(shè)計(jì)為C/S模式,由客戶端和服務(wù)器端構(gòu)成,需要進(jìn)行監(jiān)控視頻圖像的客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器將視頻圖像處理后發(fā)送給客戶端,通過(guò)安全可靠的傳輸,最后視頻圖像在客戶端進(jìn)行解碼顯示。

1 總體方案設(shè)計(jì)

本設(shè)計(jì)是基于S3C6410為核心的硬件平臺(tái)和嵌入式Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。系統(tǒng)采用C/S網(wǎng)絡(luò)架構(gòu),該體系由兩大部分組成。以ARM處理器的嵌入式Linux平臺(tái)作為服務(wù)器端,主要完成圖像采集、視頻編碼、網(wǎng)絡(luò)傳輸?shù)裙δ?;以S3C6410處理器為核心的嵌入式Linux平臺(tái)作為客戶端,主要完成網(wǎng)絡(luò)接收、圖像實(shí)時(shí)播放、系統(tǒng)控制等功能。其網(wǎng)絡(luò)拓?fù)淙鐖Dl所示。

圖1 系統(tǒng)網(wǎng)絡(luò)拓?fù)?/p>

2 系統(tǒng)硬件設(shè)計(jì)[1]

IP Camera的硬件電路主要包括ARM處理器(S3C6410)、1GB的NandFlash(K9K8G08U0B)和256MB的DDR RAM(K4X1G163PE)、外設(shè)接口等。其中,外設(shè)接口部分包括RS232串口、JTAG口、USB口、LCD接口、以太網(wǎng)口(DM9000)等。在本系統(tǒng)中視頻采集模塊采用USB接口與S3C6410進(jìn)行通信,USB接口接收視頻采集模塊發(fā)送過(guò)來(lái)的視頻數(shù)據(jù),經(jīng)過(guò)壓縮后,通過(guò)以太網(wǎng)發(fā)送。

客戶端與服務(wù)器端相比,少了一個(gè)USB攝像頭模塊,增加了TF卡接口。其中TF卡接口用于存儲(chǔ)圖像抓拍和視頻錄制的數(shù)據(jù),從而滿足用戶圖像和視頻回放的要求。

3 系統(tǒng)軟件設(shè)計(jì)

本系統(tǒng)由服務(wù)器和客戶端兩部分應(yīng)用軟件構(gòu)成。由于各功能模塊的對(duì)稱性,同時(shí)按照面對(duì)對(duì)象的程序設(shè)計(jì)思路,系統(tǒng)設(shè)計(jì)了TCP服務(wù)器與客戶類、控制命令協(xié)議類,外設(shè)接口類,視頻采集類,Xvid編解碼類,幀緩沖隊(duì)列類,視頻幀顯示類。其系統(tǒng)模型如圖2所示。

圖2 軟件系統(tǒng)模型圖

3.1 TCP服務(wù)器及客戶端程序

TCP協(xié)議的程序使用的是C/S模式,在Qt4中提供了QTcpSocket類來(lái)編寫客戶端程序,使用QTcpServer類編寫服務(wù)器端程序。在服務(wù)器端進(jìn)行端口的監(jiān)聽(tīng),一旦發(fā)現(xiàn)客戶端的連接請(qǐng)求,就會(huì)發(fā)出newConnection()信號(hào),關(guān)聯(lián)這個(gè)信號(hào)到數(shù)據(jù)發(fā)送的槽函數(shù)。在客戶端,一旦有數(shù)據(jù)到來(lái)就會(huì)發(fā)出readyRead()信號(hào),關(guān)聯(lián)此信號(hào),進(jìn)行數(shù)據(jù)的接收。

3.2 控制命令協(xié)議

在本系統(tǒng)中,主要通信對(duì)象為視頻數(shù)據(jù),除此而外還有一些不同類型的控制數(shù)據(jù)需要處理,所以提出一種較為簡(jiǎn)單的控制命令通信協(xié)議,其具體結(jié)構(gòu)表1所示。

表1 應(yīng)用層網(wǎng)絡(luò)控制命令通信協(xié)議

[描述\&所占字節(jié)\&協(xié)議內(nèi)容\&協(xié)議頭\&4(int)\&幀長(zhǎng)度\&4(int)\&類型碼\&數(shù)據(jù)\&n\&幀內(nèi)容\&]

3.3 視頻采集

本系統(tǒng)中服務(wù)器通過(guò)基于ZC301的USB攝像頭,利用Linux系統(tǒng)的視頻內(nèi)核V4L2(video 4 linux 2),實(shí)現(xiàn)現(xiàn)場(chǎng)圖像的采集[2]。V4L2支持內(nèi)存映射方式(mmap)和直接讀取方式(read)來(lái)采集數(shù)據(jù),前者一般用于連續(xù)視頻數(shù)據(jù)的采集,后者常用于靜態(tài)圖片數(shù)據(jù)的采集,因此本設(shè)計(jì)采用了內(nèi)存映射方式的視頻采集。

3.4 Xvid編解碼

本系統(tǒng)采用基于MPEG-4的編碼壓縮。MPEG-4在嵌入式系統(tǒng)上有兩種實(shí)現(xiàn)辦法,一種使用專用的MPEG-4編碼芯片,另一種通過(guò)軟件實(shí)現(xiàn)。由于Linux系統(tǒng)下軟件的通用性較好,因此本設(shè)計(jì)選用軟件實(shí)現(xiàn)[3]。

3.5 幀緩沖隊(duì)列

本次設(shè)計(jì)中,TCP客戶端模塊與顯示模塊各自運(yùn)行在獨(dú)立線程。TCP客戶端線程完成一次圖像接收后將圖像原始數(shù)據(jù)放入共享緩沖隊(duì)列內(nèi),接著進(jìn)行下面的數(shù)據(jù)接收;視頻顯示線程在此時(shí)可以得到調(diào)度,從共享內(nèi)存空間內(nèi)將已經(jīng)采得的上一幀視頻數(shù)據(jù)進(jìn)行顯示,這就實(shí)現(xiàn)了視頻接收的同時(shí)進(jìn)行視頻的顯示,對(duì)于單線程的系統(tǒng)來(lái)說(shuō),這是不可能的,因此系統(tǒng)采用了多線程技術(shù)(在一定程度上提高了系統(tǒng)的性能)。當(dāng)客戶端線程再次接收一副圖像后會(huì)繼續(xù)進(jìn)行,二者之間如此往復(fù),實(shí)現(xiàn)視頻圖像的連續(xù)播放,直至系統(tǒng)停止或者被阻塞。在代碼實(shí)現(xiàn)上,程序采用系統(tǒng)提供的線程同步接口,即信號(hào)量和互斥鎖。

3.6 視頻幀顯示

1)YUV至RGB轉(zhuǎn)換的代碼實(shí)現(xiàn)

由于,從網(wǎng)絡(luò)傳輸?shù)玫讲⒔獯a的是YUV格式的原始視頻幀,不能直接播放,還需要先進(jìn)行格式的轉(zhuǎn)換。針對(duì)需要的輸入輸出格式,通過(guò)convert_yuv_to_rgb_pixel(int y, int u, int v)函數(shù)實(shí)現(xiàn)YUV轉(zhuǎn)換為RGB格式。

2)顯示RGB圖像至監(jiān)視屏

在顯示模塊中,使用QImage類的成員方法loadFromData(m_pFrameDataRGB,

m_iFrameSizeRGB)保存RGB圖像數(shù)據(jù),再通過(guò)setPixmap類的成員方法setPixmap(QPixmap::

fromImage(*m_pImage,Qt::AutoColor))顯示一幀圖像到QLabel顯示控件上。

4 系統(tǒng)測(cè)試與分析

1)服務(wù)器測(cè)試

服務(wù)器的Qt程序啟動(dòng)成功后,直接啟動(dòng)服務(wù)器,觀察ServerStatus窗口狀態(tài),OK代表操作成功。測(cè)試系統(tǒng)連續(xù)運(yùn)行時(shí)間為6個(gè)小時(shí),期間無(wú)異?,F(xiàn)象發(fā)生,運(yùn)行良好。

2)客戶端測(cè)試

完成局部性能測(cè)試后,對(duì)服務(wù)器與客戶端進(jìn)行整體的監(jiān)控測(cè)試。將服務(wù)器與客戶機(jī)均投入運(yùn)行,進(jìn)行多方網(wǎng)絡(luò)視頻監(jiān)控,測(cè)試結(jié)果表明,系統(tǒng)運(yùn)行穩(wěn)定良好,畫面清晰,圖像較為流暢。如圖3所示,客戶機(jī)對(duì)2個(gè)場(chǎng)景進(jìn)行監(jiān)控的運(yùn)行結(jié)果,每個(gè)場(chǎng)景均由一個(gè)服務(wù)器負(fù)責(zé)前端的視頻采集與發(fā)送。從中可以看出訪問(wèn)的采集服務(wù)器一個(gè)IP地址為192.168.1.230,另一個(gè)為192.168.1.231,分別是Camera A和Camera B。需要說(shuō)明的是,圖中4個(gè)監(jiān)控窗口都是從左上角的主窗口臨時(shí)創(chuàng)建出來(lái),也可以隨時(shí)關(guān)閉,也就是說(shuō)監(jiān)控程序支持同時(shí)訪問(wèn)不同服務(wù)器;而上下2個(gè)監(jiān)控圖像都是一樣的則成功驗(yàn)證了服務(wù)器支持多客戶端的并發(fā)訪問(wèn),因?yàn)椴杉?wù)器是多線程的軟件架構(gòu)。最后,左下角是System Monitor是Linux系統(tǒng)的工具,非本設(shè)計(jì)的部分,主要是從中觀察網(wǎng)絡(luò)當(dāng)前的數(shù)據(jù)傳輸速率,實(shí)測(cè)4個(gè)通道的瞬時(shí)速率為138kbps左右。

圖3 客戶機(jī)運(yùn)行界面

3)系統(tǒng)分析

從測(cè)試結(jié)果可以分析出,目前系統(tǒng)的主要瓶頸在于圖像采集速度,全速狀態(tài)下,每秒鐘至多只能采集4幀。如果圖像采集速度提升的話,未經(jīng)過(guò)壓縮就傳輸,網(wǎng)絡(luò)帶寬也不能滿足要求,可以計(jì)算分辨率為320*240,BPP值為16的原始數(shù)據(jù)圖像,其所占用的存儲(chǔ)空間為1.17Mbit,這樣的圖像數(shù)據(jù)在10Mbps以太網(wǎng)環(huán)境下進(jìn)行傳輸,理想情況下每秒鐘至多傳送8幅圖,但實(shí)際情況網(wǎng)絡(luò)帶寬達(dá)不到10Mbps。如果采用MPEG-4對(duì)原始圖像數(shù)據(jù)進(jìn)行壓縮,按平均壓縮比為100:1來(lái)算,每秒鐘傳送12幅圖片只需要144kbps的帶寬,另外網(wǎng)絡(luò)帶寬提高到100 Mbps,則網(wǎng)絡(luò)帶寬便不再是問(wèn)題。但是,實(shí)測(cè)表明,此時(shí)系統(tǒng)瓶頸會(huì)轉(zhuǎn)移到CPU上來(lái),因?yàn)镾3C6410的最高主頻只有500MHz,而且沒(méi)有采用硬件編碼,因此MPEG-4軟編碼速度很慢,進(jìn)行頻繁的數(shù)據(jù)壓縮和內(nèi)存拷貝再進(jìn)行圖像傳輸,效果也是得不償失。

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

該文提出了一套基于S3C6410平臺(tái)和Linux系統(tǒng)的嵌入式Qt4圖像采集、傳輸及控制系統(tǒng)的具體實(shí)現(xiàn),并給出了測(cè)試結(jié)果。測(cè)試結(jié)果表明,系統(tǒng)很好的完成了圖像采集和傳輸,客戶端圖像清晰,服務(wù)器穩(wěn)定運(yùn)行,不會(huì)發(fā)生斷開(kāi)或退出的現(xiàn)象。該系統(tǒng)可以進(jìn)一步開(kāi)發(fā),比如使用主頻速度更高的ARM處理器,例如S5PV210,或配合經(jīng)過(guò)ARM指令優(yōu)化的 MPEG-4軟件編碼庫(kù),壓縮幀速一般可以達(dá)到20fps,還可以采用專用的MPEG-4編解碼芯片對(duì)原始圖像數(shù)據(jù)進(jìn)行編碼,既可以解決網(wǎng)絡(luò)帶寬的限制,又可以解決CPU處理能力的限制。

參考文獻(xiàn):

[1] 陳友榮,楊海波,程菊花,等.基于Linux的無(wú)線視頻傳輸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)有線電視,2010,(9):1047-1052.

[2] 楊經(jīng)緯. 嵌入式無(wú)線IPCamera設(shè)計(jì)與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2008.

[3] 陳錟,盛向治,單寶松.基于MPEG-4的無(wú)線視頻傳輸方案的研究[J].計(jì)算機(jī)應(yīng)用研究,2007,24(11):281-282,288.

[4] 姚繼鋒,尹欣,吳瞻,等.Linux 應(yīng)用實(shí)例與技巧[M].北京:機(jī)械工業(yè)出版社,2001.

[5] 范金剛.智能視頻監(jiān)控系統(tǒng)若干關(guān)鍵技術(shù)的研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2006.

[6] 孫弋.ARM-Linux嵌入式系統(tǒng)開(kāi)發(fā)基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2008.

[7] 劉崢嶸,張智超,許振山著.嵌入式 Linux 應(yīng)用開(kāi)發(fā)詳解[M].北京:機(jī)械工業(yè)出版社,2004.

鄱阳县| 延边| 西吉县| 遂宁市| 方正县| 榆中县| 吉安市| 镇坪县| 承德县| 舟山市| 澄城县| 昂仁县| 临潭县| 合作市| 哈巴河县| 准格尔旗| 福清市| 泰兴市| 西城区| 泾源县| 陆川县| 大新县| 海林市| 武川县| 横山县| 武平县| 淳化县| 苏尼特左旗| 同心县| 章丘市| 平昌县| 行唐县| 卢湾区| 沙洋县| 沐川县| 福清市| 蕉岭县| 宜章县| 双辽市| 易门县| 江油市|