亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ARM-Linux平臺下的觸發(fā)式視頻監(jiān)控系統(tǒng)

        2013-01-31 05:22:48南春輝
        電視技術(shù) 2013年9期
        關(guān)鍵詞:調(diào)用內(nèi)存嵌入式

        武 穎,李 博,南春輝

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

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

        1 系統(tǒng)設(shè)計

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

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

        2)系統(tǒng)根據(jù)服務(wù)器命令驅(qū)動攝像頭采集視頻,并將數(shù)據(jù)傳遞至服務(wù)器。

        系統(tǒng)設(shè)計與流程如圖1所示。

        圖1 系統(tǒng)設(shè)計與流程示意圖

        2 硬件平臺設(shè)計

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

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

        客戶服務(wù)器采用聯(lián)想PC機:酷睿2雙核,CPU主頻2.93 GHz,內(nèi)存3 Gbyte,操作系統(tǒng)為Microsoft Windows XP Professional SP3。

        硬件平臺設(shè)計如圖2所示。

        圖2 硬件平臺結(jié)構(gòu)圖

        3 軟件平臺設(shè)計

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

        3.1 紅外監(jiān)控模塊

        紅外監(jiān)控模塊由紅外信號采集模塊和報警模塊組成。

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

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

        if(keyval==128)

        {printf(”Invalid coming! ”);

        keyval=0;

        if(devsta==ON)

        alarming();}

        報警模塊采用順序結(jié)構(gòu),流程圖見圖4。

        3.2 視頻采集模塊

        3.2.1 加載攝像頭驅(qū)動

        本系統(tǒng)使用的攝像頭采用2.6.36內(nèi)核支持的zc301芯片(中星微公司生產(chǎn))。直接在內(nèi)核配置中啟用zc301驅(qū)動即可。

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

        3.2.2 視頻采集程序設(shè)計

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

        1)設(shè)備的初始化

        首先打開攝像頭設(shè)備。攝像頭在系統(tǒng)中對應(yīng)的設(shè)備文件為/dev/video0,采用系統(tǒng)調(diào)用函數(shù)打開。打開攝像頭使用open函數(shù):vd→fd=open(dev,O_RDWR)。接著利用I/O控制函數(shù)ioctl讀取攝像頭的相關(guān)信息,攝像頭的結(jié)構(gòu)體為stuct video_capability。

        圖5 視頻采集流程圖

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

        2)視頻的截取

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

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

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

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

        3)視頻數(shù)據(jù)的采集

        Video4Linux一次可以進行最多32幀的采集,因此,需要設(shè)置采集的幀數(shù)和數(shù)據(jù)緩沖區(qū)的大小,然后調(diào)用ioctl函數(shù)連續(xù)采集數(shù)據(jù),當(dāng)緩沖區(qū)的剩余空間不足,不能保存一個完整的數(shù)據(jù)幀時,停止操作。實現(xiàn)連續(xù)采集的程序如下:

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

        {

        mapbuf.f=f;

        if(ioctl(cam,VIDEOCMCAPTURE,

        &c_mbuf)<0)

        {

        perror(“VIDEOCMCAPTURE”);

        exit(-1);

        }

        }

        3.2.3 視頻編碼程序設(shè)計

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

        1)初始化avcodec_init(),在使用avcodec庫之前調(diào)用,初始化靜態(tài)數(shù)據(jù)。

        2)注冊編碼器:

        register_avcodec(&mpeg4_encoder)

        3)編碼過程:

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

        codec=avcodec_find_encoder(CODEC_ID_MPEG4);

        cod=avcodec_alloc_context();

        picture=avcodec_alloc_frame();

        (2)初始化編碼參數(shù):

        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)調(diào)用MPV_encode_picture[4]:

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

        3.3 視頻數(shù)據(jù)網(wǎng)絡(luò)傳輸模塊

        網(wǎng)絡(luò)傳輸程序的設(shè)計過程實際上是嵌入式流媒體服務(wù)器的搭建過程,是觸發(fā)式視頻監(jiān)控系統(tǒng)的數(shù)據(jù)傳輸部分。它以TCP/IP協(xié)議為基礎(chǔ)構(gòu)建,需要實現(xiàn)RTP、HTTP、TCP和UDP等協(xié)議,擁有IP地址,將設(shè)備接入Internet,通過RTP或者HTTP協(xié)議,客戶服務(wù)器與嵌入式監(jiān)控終端建立連接,用流媒體播放軟件播放實時圖像數(shù)據(jù)。視頻數(shù)據(jù)網(wǎng)絡(luò)傳輸原理圖如圖6所示。

        圖6 視頻數(shù)據(jù)網(wǎng)絡(luò)傳輸原理圖

        通過兩個線程實現(xiàn)視頻數(shù)據(jù)傳輸:首先是不斷循環(huán)的主線程,申請服務(wù)器套接字后監(jiān)聽指定端口,創(chuàng)建第二個線程;另一個線程專門處理用戶連接,接收用戶請求并返回適當(dāng)?shù)腗PEG圖像數(shù)據(jù)[5]。流程圖如圖7所示。

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

        相關(guān)的核心函數(shù)主要有:

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

        static void init_rtp_packet(struct rtp_packet*ep)

        static void init_rtp_packet(struct rtcp_packet*ep)

        2)刪除已發(fā)送的RTP包:

        void del_rtp_endpoint(struct rtp_stream*ep)

        3)更新時間戳:

        void update_rtp_timestamp(struct rtp_stream*rtp,int time_increment)

        4)讀取接收反饋的數(shù)據(jù)包:

        static void udp_rtcp_read(void*d)

        4 結(jié)論

        本文設(shè)計了一種以ARM11為核心芯片的觸發(fā)式視頻監(jiān)控系統(tǒng),在中北大學(xué)圖像處理與智能控制實驗室中進行了實地測試。結(jié)果顯示,從紅外觸發(fā)到視頻采集的延遲不超過1 s,視頻的網(wǎng)絡(luò)傳輸延時在5 h內(nèi)不超過1.5 s,達到了設(shè)計預(yù)期。

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

        [2]李峰,秦嘉凱.基于嵌入式Linux的實時網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)[J].電視技術(shù),2011,35(23):145-148.

        [3]楊水清,張劍,施云飛.ARM嵌入式Linux系統(tǒng)開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.

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

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

        猜你喜歡
        調(diào)用內(nèi)存嵌入式
        核電項目物項調(diào)用管理的應(yīng)用研究
        “春夏秋冬”的內(nèi)存
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        搭建基于Qt的嵌入式開發(fā)平臺
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        Altera加入嵌入式視覺聯(lián)盟
        倍福 CX8091嵌入式控制器
        自動化博覽(2014年4期)2014-02-28 22:31:15
        基于內(nèi)存的地理信息訪問技術(shù)
        利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
        亚洲精品在线观看自拍| 欧美日韩国产码高清综合人成| 国产精品久久久久久婷婷| 大地资源中文在线观看官网第二页 | 开心五月激动心情五月| 激情在线一区二区三区视频| 色综合久久中文娱乐网 | 欧美黑人疯狂性受xxxxx喷水| 国产在线天堂av| 丰满少妇av一区二区三区 | 亚洲精华国产精华液的福利| 精品视频专区| 亚洲精品女优中文字幕| 女同同志熟女人妻二区| 中文字幕日本人妻久久久免费| 亚洲av无码一区二区二三区| 91网红福利精品区一区二| 人妻丰满熟妇一二三区| 不卡的av网站在线观看| 免费国产黄网站在线观看可以下载| 日韩一线无码av毛片免费| 国产一区二区三区高清视频| 黄色精品一区二区三区| 狠狠色噜噜狠狠狠777米奇| 少妇高潮尖叫黑人激情在线| 亚洲三区二区一区视频| 午夜视频手机在线免费观看| 91中文人妻熟女乱又乱| 国产精品成人久久电影| 亚洲AV无码乱码1区久久| 大岛优香中文av在线字幕| 中国人在线观看免费的视频播放| 久久久久久无码av成人影院| 亚洲熟妇av乱码在线观看| 一区二区久久精品66国产精品| 国产一区二区三区视频地址| 性色av免费网站| 精品国产国产AV一区二区| 久久人妻内射无码一区三区| 亚洲黄色尤物视频| 三级黄片一区二区三区|