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

ARM-Linux平臺下的觸發式視頻監控系統

2013-01-31 05:22:48南春輝
電視技術 2013年9期
關鍵詞:嵌入式系統

武 穎,李 博,南春輝

(中北大學 電子測試技術國家重點實驗室儀器科學與動態測試教育部重點實驗室,山西 太原030051)

隨著嵌入式技術、信息通信技術的高速發展,基于嵌入式的多媒體視頻監控系統已經得到了廣泛應用。但是,由于市面上的嵌入式視頻監控系統大多采用24 h實時監控,使得一些不需要實時監控的使用者比如家庭用戶等浪費了很多系統資源,功耗小、能耗低的產品才是現今倡導的低碳社會的主流。為了滿足這些新條件的需求,本文提出了一種以ARM11為核心芯片,基于Linux的觸發式視頻監控系統,實現無人時待機,有陌生人入侵時開機監控,并將監控視頻信息傳至服務器進行處理。

1 系統設計

觸發式視頻監控系統分為嵌入式監控終端和客戶服務器兩個部分。嵌入式監控終端基于三星公司S3C6410嵌入式微處理器,采用開源的Linux操作系統。紅外傳感器負責判斷監控現場是否有陌生人入侵,攝像頭負責采集圖像。客戶服務器為PC機,通過局域網與嵌入式監控終端相連。工作流程如下:

1)陌生人入侵時觸發紅外傳感器,嵌入式監控終端將報警信息發送至服務器。

2)系統根據服務器命令驅動攝像頭采集視頻,并將數據傳遞至服務器。

系統設計與流程如圖1所示。

圖1 系統設計與流程示意圖

2 硬件平臺設計

嵌入式監控終端的硬件平臺選用TE6410開發板。TE6410開發板基于三星公司ARM11(ARM1176J ZF-S)處理器S3C6410,是一款低功耗、高性價比的RSIC處理器,主頻可穩定運行在667 MHz以上,內置強大的硬件加速器(運動視頻音頻處理、2D/3D加速、顯示處理和縮放等);集成了一個MFC支持MPEG-4/H.263/H.264編解碼;帶有128 Mbyte的DDR內存,1 Gbyte的MLC NAND Flash;板上集成了多種高端接口如USB、SD、LCD、以太網、外部存儲器接口以及工業CAN總線、RS-485總線,支持Linux操作系統[1]。

攝像頭采用臺電USB攝像頭慧眼MK02。紅外傳感器采用幕簾紅外探測器SP-9923。

客戶服務器采用聯想PC機:酷睿2雙核,CPU主頻2.93 GHz,內存3 Gbyte,操作系統為Microsoft Windows XP Professional SP3。

硬件平臺設計如圖2所示。

圖2 硬件平臺結構圖

3 軟件平臺設計

嵌入式系統的軟件采用主機-目標機模式進行開發。主機的操作系統為Ubuntu-11.10,在主機中安裝交叉編譯工具arm-linux-gcc 4.3.2。然后,依次完成Uboot和Linux-2.6.36內核的編譯及移植,燒寫cramfs文件系統。

3.1 紅外監控模塊

紅外監控模塊由紅外信號采集模塊和報警模塊組成。

紅外模塊根據繼電器特性判斷是否有陌生人入侵,如果有,調用報警模塊。本模塊無特殊算法,采用無限循環方式采集紅外信息并進行處理,流程圖見圖3,實現代碼如下:

ret=read(key,&keyval,sizeof(keyval));

if(keyval==128)

{printf(”Invalid coming! ”);

keyval=0;

if(devsta==ON)

alarming();}

報警模塊采用順序結構,流程圖見圖4。

3.2 視頻采集模塊

3.2.1 加載攝像頭驅動

本系統使用的攝像頭采用2.6.36內核支持的zc301芯片(中星微公司生產)。直接在內核配置中啟用zc301驅動即可。

源碼目錄/arch/arm/boot/中將生成新的zImage文件,用DNW將新內核下載至開發板。開發板重啟后,便可實現zc301驅動的正確加載,正確接入后會自動顯示[2]。

3.2.2 視頻采集程序設計

視頻采集的程序設計基于Video4Linux模塊提供的API函數。Video4Linux是Linux系統中關于視頻設備的內核驅動,為Linux系統所支持的USB芯片攝像頭提供統一的編程接口。具體信息保存在include/linux/videodev.h和drivers/media/video/videodev.c文件中。流程圖如圖5所示。

1)設備的初始化

首先打開攝像頭設備。攝像頭在系統中對應的設備文件為/dev/video0,采用系統調用函數打開。打開攝像頭使用open函數:vd→fd=open(dev,O_RDWR)。接著利用I/O控制函數ioctl讀取攝像頭的相關信息,攝像頭的結構體為stuct video_capability。

圖5 視頻采集流程圖

該函數得到正確的返回值后,從內核空間將信息復制到用戶空間c_cap各個分量中,通過調用printf函數得到各個分量的信息。之后分別調用ioctl函數對c_pic、c_window函數進行操作,完成對視頻窗口和采集圖像屬性的設置[3]。

2)視頻的截取

設備成功初始化后,進行視頻圖像的截取。使用的方法有通過read()函數直接讀取和通過mmap()內存映射兩種。

內存映射的方法繞過了內核緩沖區,進程之間通過映射同一個文件實現共享內存,訪問文件時可以像訪問普通內存一樣,不必再調用read()、write()等函數,各個進程之間可以及時看到彼此共享內存中數據的更新,提高了訪問的速度和實時性。所以在這里,采用內存映射的方法來實現。

該函數的原型為:buf=void*mmap(void*addr,size_t len,int flags,int fd,off_t offset)。

mmap()調用后,設備文件映射到內存區,不同進程可以共享以及進行讀寫操作。函數成功調用后將返回指向該映像內存區的指針。

3)視頻數據的采集

Video4Linux一次可以進行最多32幀的采集,因此,需要設置采集的幀數和數據緩沖區的大小,然后調用ioctl函數連續采集數據,當緩沖區的剩余空間不足,不能保存一個完整的數據幀時,停止操作。實現連續采集的程序如下:

for(f=0;f<bufframes;f++)

{

mapbuf.f=f;

if(ioctl(cam,VIDEOCMCAPTURE,

&c_mbuf)<0)

{

perror(“VIDEOCMCAPTURE”);

exit(-1);

}

}

3.2.3 視頻編碼程序設計

本系統使用編碼軟件FFmpeg,一種開源的MPEG-4視頻編碼器,對視頻圖像進行壓縮編碼。實現MPEG-4編碼的步驟如下:

1)初始化avcodec_init(),在使用avcodec庫之前調用,初始化靜態數據。

2)注冊編碼器:

register_avcodec(&mpeg4_encoder)

3)編碼過程:

(1)獲取設置的編碼器:

codec=avcodec_find_encoder(CODEC_ID_MPEG4);

cod=avcodec_alloc_context();

picture=avcodec_alloc_frame();

(2)初始化編碼參數:

cod->bit_rate=400000;

cod->width=352;

cod->height=288;

cod->frame_rate=30;

avcodec_open(cod,codec);

(3)開始分配空間:

outbuf_size=100000;

outbuf=malloc(outbuf_size);

size=cod->width*cod->height;

picture_buf=malloc((size*3)/2);

(4)獲取待壓縮圖像:

picture->data[0]=yuv_buffer;

picture->data[1]=yuv_buffer+size;

picture->data[2]=yuv_buffer+size+size/4;

(5)調用MPV_encode_picture[4]:

out_size=avcodec_encode_video(cod,outbuf,outbuf_size,picture)。

3.3 視頻數據網絡傳輸模塊

網絡傳輸程序的設計過程實際上是嵌入式流媒體服務器的搭建過程,是觸發式視頻監控系統的數據傳輸部分。它以TCP/IP協議為基礎構建,需要實現RTP、HTTP、TCP和UDP等協議,擁有IP地址,將設備接入Internet,通過RTP或者HTTP協議,客戶服務器與嵌入式監控終端建立連接,用流媒體播放軟件播放實時圖像數據。視頻數據網絡傳輸原理圖如圖6所示。

圖6 視頻數據網絡傳輸原理圖

通過兩個線程實現視頻數據傳輸:首先是不斷循環的主線程,申請服務器套接字后監聽指定端口,創建第二個線程;另一個線程專門處理用戶連接,接收用戶請求并返回適當的MPEG圖像數據[5]。流程圖如圖7所示。

圖7 主線程和用戶處理子線程流程圖

相關的核心函數主要有:

1)初始化RTP包和RTCP包,填充包信息:

static void init_rtp_packet(struct rtp_packet*ep)

static void init_rtp_packet(struct rtcp_packet*ep)

2)刪除已發送的RTP包:

void del_rtp_endpoint(struct rtp_stream*ep)

3)更新時間戳:

void update_rtp_timestamp(struct rtp_stream*rtp,int time_increment)

4)讀取接收反饋的數據包:

static void udp_rtcp_read(void*d)

4 結論

本文設計了一種以ARM11為核心芯片的觸發式視頻監控系統,在中北大學圖像處理與智能控制實驗室中進行了實地測試。結果顯示,從紅外觸發到視頻采集的延遲不超過1 s,視頻的網絡傳輸延時在5 h內不超過1.5 s,達到了設計預期。

[1]汪慶年,孫麗兵,李桂勇.一種基于ARM的視頻監控系統的設計[J].微計算機信息,2009(4):158-160.

[2]李峰,秦嘉凱.基于嵌入式Linux的實時網絡視頻監控系統[J].電視技術,2011,35(23):145-148.

[3]楊水清,張劍,施云飛.ARM嵌入式Linux系統開發技術詳解[M].北京:電子工業出版社,2008.

[4]許志飛,姚正林.基于ARM的遠程視頻監控系統的設計[J].微計算機信息,2010(9):105-106.

[5]趙宇峰.基于嵌入式Linux的實時視頻通信的實現[J].電視技術,2012,36(19):189-192.

猜你喜歡
嵌入式系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
主站蜘蛛池模板: 97超碰精品成人国产| 天天躁夜夜躁狠狠躁图片| 久久精品免费国产大片| 91视频首页| 一本无码在线观看| 国产午夜福利亚洲第一| 99re这里只有国产中文精品国产精品| 欧美一级专区免费大片| 久操线在视频在线观看| 亚洲天堂网在线观看视频| 欧美精品啪啪| 99资源在线| 国产在线麻豆波多野结衣| 尤物精品国产福利网站| 婷婷色中文网| 免费一级毛片在线播放傲雪网| 丁香五月婷婷激情基地| 91视频99| 91啦中文字幕| 狼友av永久网站免费观看| 沈阳少妇高潮在线| 国产精品视频系列专区| 啪啪永久免费av| 91精品国产一区| 国产呦视频免费视频在线观看| 国产精品视频免费网站| 欧美成人精品高清在线下载| 日韩精品一区二区三区免费在线观看| 综合色区亚洲熟妇在线| 无码精品福利一区二区三区| 18禁色诱爆乳网站| 91国内在线观看| 国产乱子伦精品视频| 麻豆a级片| 秋霞国产在线| 国产欧美在线| 国产精品欧美在线观看| 午夜老司机永久免费看片| 另类综合视频| 国产亚洲第一页| 成人午夜亚洲影视在线观看| 亚洲AV成人一区国产精品| 亚洲成aⅴ人在线观看| 日韩精品毛片| 国产偷倩视频| 国产成人91精品免费网址在线| 在线免费不卡视频| 一级不卡毛片| www.亚洲一区| 成·人免费午夜无码视频在线观看| 性色一区| 国产传媒一区二区三区四区五区| 亚洲人成网站18禁动漫无码| 成人亚洲视频| 国产成人精品综合| 久久综合五月婷婷| 制服丝袜亚洲| 综合社区亚洲熟妇p| 亚洲全网成人资源在线观看| 91久久精品国产| 青青热久免费精品视频6| 久久99国产乱子伦精品免| 亚洲天堂首页| 欧美激情,国产精品| 亚洲人成亚洲精品| 91区国产福利在线观看午夜| 国产欧美高清| 亚洲人成成无码网WWW| 国产视频入口| 日韩在线第三页| 午夜免费视频网站| 国产成人亚洲无吗淙合青草| 特级欧美视频aaaaaa| 欧美成人亚洲综合精品欧美激情| 精品国产香蕉伊思人在线| 国产精品天干天干在线观看| aⅴ免费在线观看| 亚洲欧美色中文字幕| 2021国产精品自产拍在线观看| 国产精品人莉莉成在线播放| 人妻21p大胆| 日韩欧美色综合|