999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ARM11的視頻監(jiān)控系統(tǒng)設(shè)計(jì)

2013-09-25 14:12:38王寶珠
電子設(shè)計(jì)工程 2013年3期
關(guān)鍵詞:設(shè)備系統(tǒng)設(shè)計(jì)

王寶珠,程 杰

(河北工業(yè)大學(xué) 信息與工程學(xué)院,天津 300401)

由于網(wǎng)絡(luò)與信息技術(shù)的不斷發(fā)展,遠(yuǎn)程視頻監(jiān)控技術(shù)得到了廣泛的推廣,同時(shí)對(duì)視頻傳輸?shù)男省⒐摹?shí)時(shí)性、分辨率以及傳輸設(shè)備的體積大小等方面提出了更高的要求。自從H.264編碼標(biāo)準(zhǔn)發(fā)布以來(lái),因其具有優(yōu)異的壓縮性能、很好的網(wǎng)絡(luò)親和性,獲得了極大地支持與應(yīng)用。但在很多應(yīng)用場(chǎng)合是通過(guò)調(diào)用H.264編碼庫(kù),實(shí)現(xiàn)了軟件方式的編解碼。本文采用擁有強(qiáng)大的多媒體處理能力ARM11芯片進(jìn)行開(kāi)發(fā),它內(nèi)部集成了專門(mén)處理多媒體數(shù)據(jù)的位處理器,通過(guò)ARM內(nèi)部的MFC模塊完成了對(duì)H.264的硬件方式的編解碼。本論文視頻服務(wù)器建立在具有豐富的網(wǎng)絡(luò)協(xié)議、較強(qiáng)的穩(wěn)定性的Linux系統(tǒng)上,完成了視頻數(shù)據(jù)的采集、壓縮,然后發(fā)送到Boa中,然后通過(guò)以太網(wǎng)發(fā)送到上位機(jī)進(jìn)行顯示,實(shí)現(xiàn)了遠(yuǎn)程的實(shí)時(shí)監(jiān)控[1]。

1 視頻監(jiān)控系統(tǒng)的總體設(shè)計(jì)

1.1 硬件總體設(shè)計(jì)

本系統(tǒng)主要以友善之臂Tiny6410開(kāi)發(fā)板作為視頻服務(wù)器平臺(tái)。Tiny6410核心板采用ARM1176JZF-S核設(shè)計(jì)的CPU,S3C6410內(nèi)部集成了強(qiáng)大的多媒體處理單元,支持Mpeg4、H.264等格式的硬件編解碼,核心板集成了256M的DDRRAM、1GB Nand Flash存儲(chǔ)器,通過(guò)豐富的接口資源與外圍電路相連接。本論文所涉及的主要接口包括標(biāo)準(zhǔn)DB9串口、SD卡接口、JTAG接口、USB串口以及網(wǎng)絡(luò)接口。整個(gè)硬件系統(tǒng)框圖如圖1所示。

圖1 硬件系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure diagram of hardware system

在該硬件系統(tǒng)中現(xiàn)代的v500攝像頭通過(guò)usb接口與開(kāi)發(fā)板相連,向S3C6410提供YUY2格式的視頻幀。目標(biāo)板通過(guò)串口與宿主機(jī)連接,通過(guò)超級(jí)終端與目標(biāo)板進(jìn)行通信,對(duì)目標(biāo)板進(jìn)行控制和文件的傳輸。JTAG接口連接Jlink仿真器,通過(guò)宿主機(jī)上的rvds軟件進(jìn)行程序的調(diào)試。SD卡用于燒寫(xiě)superboot,然后完成整個(gè)linux系統(tǒng)的移植工作與應(yīng)用軟件的復(fù)制工作。服務(wù)器通過(guò)DM900網(wǎng)卡與遠(yuǎn)程客戶端進(jìn)行通信。

1.2 軟件總體設(shè)計(jì)

整個(gè)軟件系統(tǒng)包括引導(dǎo)裝入程序、Linux內(nèi)核、文件系統(tǒng)、各種驅(qū)動(dòng)程序以及應(yīng)用軟件組成。圖2為視頻服務(wù)器的軟件結(jié)構(gòu)框圖。

圖2 軟件系統(tǒng)結(jié)構(gòu)圖Fig.2 Structure diagram of software system

在進(jìn)行系統(tǒng)移植之前,首先在宿主機(jī)上建立開(kāi)發(fā)環(huán)境,安裝linux虛擬操作系統(tǒng),安裝編譯調(diào)試軟件RVDS,建立與目標(biāo)板通信的超級(jí)終端,建立交叉編譯環(huán)境等相關(guān)操作。

本系統(tǒng)首先在SD卡中燒寫(xiě)superboot,然后將Uboot引導(dǎo)程序移植到Nand Flash中,然后移植版本為L(zhǎng)inux 2.6.38的內(nèi)核,接著移植根文件系統(tǒng)Rootfs,這樣整個(gè)操作系統(tǒng)環(huán)境就搭建完成了。在編譯Linux內(nèi)核之前,要配置本系統(tǒng)所需的驅(qū)動(dòng)模塊,將MFC驅(qū)動(dòng)和萬(wàn)能攝像頭驅(qū)動(dòng)集成到內(nèi)核中[2]。

2 采集與壓縮模塊的設(shè)計(jì)

2.1 基于V4L2的視頻采集模塊設(shè)計(jì)

V4L2是集成在Linux系統(tǒng)中的一個(gè)虛擬的設(shè)備驅(qū)動(dòng)。主要功能是使應(yīng)用程序發(fā)現(xiàn)多媒體設(shè)備,然后對(duì)設(shè)備進(jìn)行操作管理。它提供了各種API接口,在本系統(tǒng)中完成了對(duì)攝像頭視頻流的捕獲與輸出,如圖3為數(shù)據(jù)幀采集流程圖[3]。

圖3 數(shù)據(jù)采集流程Fig.3 Flow diagram of data capture

1)打開(kāi)設(shè)備文件。 fd=open(Devicename,mode);第一個(gè)參數(shù)是注冊(cè)在/dev/目錄下的設(shè)備名,打開(kāi)模式可分為阻塞和非阻塞模式。

2)獲取設(shè)備屬性。通過(guò)調(diào)用 ioctl(fd,VIDIO_QUERYCAP,&cp)獲取打開(kāi)設(shè)備相關(guān)參數(shù)存放到cp結(jié)構(gòu)中。

3)設(shè)置捕獲格式。 調(diào)用 ioctl(fd,VIDIOCS_FMT,&fmt)設(shè)置捕獲圖像的存儲(chǔ)格式、寬帶、高度、像素大小等。

4)為視頻幀分配內(nèi)存。 通過(guò) ioctl(fd,VIDIOC_REQBUFS,&req)向內(nèi)核申請(qǐng)req.count個(gè)緩存。

5)映射緩存。首先通過(guò)VIDIOC_QUERBUF獲取緩存地址,然后mmap到用戶空間。

6)視頻幀的采集。調(diào)用read()將數(shù)據(jù)存放到緩存中。

7)處理采集數(shù)據(jù)。V4L2的數(shù)據(jù)緩存采用FIFO的方式,當(dāng)應(yīng)用程序?qū)⒆钕炔傻降囊粠瑪?shù)據(jù)取走時(shí),將重新采集最新的數(shù)據(jù)。

8)關(guān)閉視頻設(shè)備。調(diào)用close()實(shí)現(xiàn)設(shè)備的關(guān)閉。

2.2 基于MFC的編碼模塊設(shè)計(jì)

本系統(tǒng)通過(guò)S3C6410內(nèi)部多媒體編解碼模塊實(shí)現(xiàn)H.264標(biāo)準(zhǔn)的視頻壓縮。采用硬壓縮不占用CPU資源而且速度更快,為視頻的實(shí)時(shí)傳輸做好了準(zhǔn)備[4]。如圖4為MFC編碼流程圖。

圖4 h.264編碼流程圖Fig.4 Flow diagram of h.264 encoder

1)初始化H.264編碼環(huán)境。調(diào)用SsbSipH264 EncodeInit(Width, Height, Framerate, Bitrate, GOPNum) 來(lái)打開(kāi) MFC設(shè)備并且對(duì)編碼結(jié)構(gòu)參數(shù)進(jìn)行初始化。

2)設(shè)置編碼參數(shù)。調(diào)用SsbSip H264 EncodeS et Config(open Handle,type,value)對(duì)編碼的各種參數(shù)進(jìn)行配置。

3)獲得視頻輸入地址。通過(guò)SsbSipH264EncodeGetInBuf(openHandle,size)獲取視頻輸入地址。

4)通過(guò) memcpy(p_inbuf, in_addr, frame_size)將需要編碼視頻幀復(fù)制到編碼時(shí)存放原始數(shù)據(jù)的緩存中。

5)通過(guò) SsbSipH264EncodeExe(handle)函數(shù)進(jìn)行編碼壓縮。

6)關(guān)閉設(shè)備,調(diào)用 SsbSipH264 EncodeDeInit(handle)函數(shù)釋放占用資源并且關(guān)閉設(shè)備。

3 視頻傳輸與顯示模塊的設(shè)計(jì)

3.1 基于boa服務(wù)器的傳輸模塊設(shè)計(jì)

本系統(tǒng)將boa移植到運(yùn)行在ARMM11開(kāi)發(fā)板上的Linux系統(tǒng)中,建立了嵌入式web服務(wù)器,為遠(yuǎn)程客戶端提供基于HTTP協(xié)議的網(wǎng)絡(luò)接入方式。Boa支持基于CGI的動(dòng)態(tài)網(wǎng)頁(yè),因此采用編寫(xiě)CGI腳本對(duì)遠(yuǎn)程客戶端的請(qǐng)求進(jìn)行響應(yīng),發(fā)送經(jīng)過(guò)編碼的視頻數(shù)據(jù)包。如圖5為boa中視頻傳輸?shù)牧鞒虉D[5]。

圖5 數(shù)據(jù)傳輸流程圖Fig.5 Flow diagram of data transmission

1)完成boa服務(wù)器的初始化工作。

2)通過(guò)socket創(chuàng)建流式套接字,并獲得套接字描述符。

3)通過(guò)bind將套接字與服務(wù)器地址綁定。

4)通過(guò)listen對(duì)端口進(jìn)行監(jiān)聽(tīng)。

5)通過(guò)accept等待來(lái)自客戶端的連接請(qǐng)求。

6)建立相互的連接,分析客戶端命令。

7)執(zhí)行CGI腳本程序,發(fā)送數(shù)據(jù)。

8)關(guān)閉套接字,結(jié)束通信。

3.2 視頻數(shù)據(jù)的解碼與顯示模塊設(shè)計(jì)

工作在pc機(jī)上的遠(yuǎn)程客戶端從網(wǎng)絡(luò)接收視頻數(shù)據(jù)包,然后對(duì)視頻幀進(jìn)行解碼與在屏幕上顯示圖像。本系統(tǒng)采用基于開(kāi)源的SDL與FFmpeg庫(kù)提供的API接口,實(shí)現(xiàn)對(duì)視頻的解碼與播放[6]。

1)首先進(jìn)行初始化操作。avcodec_register_all();avdevice_register_all();av_register_all();通過(guò)以上函數(shù)注冊(cè)所有的編解碼器,復(fù)用分離器,文件格式的注冊(cè)。

2)設(shè)置 AVFormatContext結(jié)構(gòu)體,對(duì)整個(gè)編碼過(guò)程所需要的各種參數(shù)進(jìn)行設(shè)置。

3)從以上結(jié)構(gòu)體中找到相關(guān)解碼器的上下文。

4)調(diào)用avcodec_open()函數(shù)打開(kāi) H.264解碼器。

5)調(diào)用avcodec_alloc_frame()函數(shù)分配內(nèi)存來(lái)存儲(chǔ)解碼后得到的yuv數(shù)據(jù)。

6)通過(guò) avcodec_decode_video(p Codec Ctx, Inbuf, &count,outbuf, sizeof(outbuf))函數(shù)對(duì)數(shù)據(jù)進(jìn)行解碼,pCodecCtx 是解碼器的上下文,Inbuf指向解碼后數(shù)據(jù)的位置,count是已完成的幀數(shù),outbuf指向被解碼解碼的原始數(shù)據(jù)。最后調(diào)用SDL庫(kù)中的函數(shù)來(lái)實(shí)現(xiàn)視頻的顯示。

4 結(jié) 論

本文完成了遠(yuǎn)程視頻監(jiān)控包括數(shù)據(jù)采集、數(shù)據(jù)壓縮、數(shù)據(jù)傳輸、數(shù)據(jù)顯示的整個(gè)模塊設(shè)計(jì)。采用了性價(jià)比很高的ARM11作為整個(gè)服務(wù)器的數(shù)據(jù)處理核心,搭載了開(kāi)源的具有很好的網(wǎng)絡(luò)親和性和穩(wěn)定性的Linux操作系統(tǒng),使得應(yīng)用軟件有一個(gè)高效和穩(wěn)定的運(yùn)行環(huán)境。實(shí)現(xiàn)了對(duì)視頻數(shù)據(jù)的H.264標(biāo)準(zhǔn)的硬壓縮,極大提高了數(shù)據(jù)的處理與傳輸效率,使得整個(gè)系統(tǒng)具有較好好的實(shí)時(shí)性。在該系統(tǒng)的基礎(chǔ)上,可以進(jìn)行功能的增加和優(yōu)化,實(shí)際應(yīng)用于各種監(jiān)控場(chǎng)合。

[1]葉俊華.ARM11的嵌入式視頻處理終端設(shè)計(jì)[D].長(zhǎng)沙:中南大學(xué),2009.

[2]楊牟剛.基于嵌入式Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].桂林:桂林電子科技大學(xué),2008.

[3]張建江.基于嵌入式Linux的H.264視頻接收系統(tǒng)設(shè)計(jì)[D].西安:西安電子科技大學(xué),2008.

[4]羅智勇.針對(duì)視頻會(huì)議應(yīng)用的H264視頻編碼器研究與實(shí)現(xiàn)[D].廣州:暨南大學(xué),2005.

[5]黃恒強(qiáng).基于ARM和Linux的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)設(shè)計(jì)[D].南京:南京理工大學(xué),2008.

[6]胡杰.基于ARM的嵌入式視頻監(jiān)控終端的研究[D].武漢:武漢理工大學(xué),2008.

猜你喜歡
設(shè)備系統(tǒng)設(shè)計(jì)
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
瞞天過(guò)海——仿生設(shè)計(jì)萌到家
基于MPU6050簡(jiǎn)單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
主站蜘蛛池模板: 欧美日韩免费| 亚洲无码精品在线播放| 伊人久久精品无码麻豆精品 | 首页亚洲国产丝袜长腿综合| 欧美成人精品高清在线下载| 国产精品自在在线午夜| 欧美成人a∨视频免费观看| 五月天福利视频| 美女毛片在线| 亚洲av无码人妻| 日韩av无码DVD| 欧美亚洲国产精品久久蜜芽| 国产超碰一区二区三区| www中文字幕在线观看| 69av免费视频| 欧美伦理一区| 精品国产免费观看| 婷婷成人综合| 日韩AV无码一区| 在线看AV天堂| 精品亚洲欧美中文字幕在线看| 六月婷婷激情综合| 麻豆国产精品视频| 国产精品毛片一区视频播| 91麻豆精品国产高清在线| 久久青草视频| 丝袜国产一区| 极品国产一区二区三区| 永久天堂网Av| 久久久久亚洲AV成人人电影软件| 影音先锋亚洲无码| 免费欧美一级| 欧美日韩亚洲综合在线观看| 色精品视频| 午夜精品国产自在| 日韩欧美中文| 午夜激情福利视频| 久久黄色视频影| 日韩无码精品人妻| 免费看a毛片| 一本一本大道香蕉久在线播放| 天天色综网| 手机在线国产精品| 欧美成人免费一区在线播放| 国产97视频在线| 欧美激情视频一区| 制服丝袜一区| 91精品国产91久久久久久三级| 国产第一页屁屁影院| 色窝窝免费一区二区三区| 欧美日韩中文国产| 久久久久久久蜜桃| 亚洲精品国产成人7777| 免费一看一级毛片| 亚洲综合激情另类专区| 成人91在线| 欧美一级夜夜爽www| 日本在线欧美在线| 极品国产一区二区三区| 亚洲精品自产拍在线观看APP| 亚洲国产中文精品va在线播放| 欧美一级99在线观看国产| 国产福利免费观看| 四虎影视无码永久免费观看| 国产黄色免费看| 亚洲综合第一页| 亚洲精品图区| 国产成人高精品免费视频| 日韩一区二区在线电影| 亚洲成人在线免费观看| 玩两个丰满老熟女久久网| 国产成人亚洲精品蜜芽影院| 91精品国产一区自在线拍| 亚洲第一视频免费在线| 国产素人在线| 欧美天堂久久| 777午夜精品电影免费看| 国产素人在线| 91网址在线播放| 久综合日韩| 久久久久久高潮白浆| 九九视频免费看|