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

        ?

        基于ARM的視頻數(shù)據(jù)采集傳輸系統(tǒng)的設計與實現(xiàn)

        2014-08-08 23:54:44欒博悅張鎣趙慧元
        計算技術(shù)與自動化 2014年2期
        關(guān)鍵詞:視頻數(shù)據(jù)采集嵌入式

        欒博悅+張鎣+趙慧元

        收稿日期:2013-05-27

        作者簡介:欒博悅(1990—),男,山東牟平人,學士生,研究方向:電子科學與技術(shù)。

        文章編號:1003-6199(2014)02-0101-04

        摘 要:對基于ARM的視頻數(shù)據(jù)采集傳輸系統(tǒng)進行研究及設計,通過ARM新一代嵌入式開發(fā)平臺,與現(xiàn)在流行的互聯(lián)網(wǎng)及無線傳輸技術(shù)相結(jié)合,實現(xiàn)視頻數(shù)據(jù)的采集和遠程數(shù)據(jù)的傳輸。設計中采用嵌入式Linux系統(tǒng)通過USB攝像頭進行視頻數(shù)據(jù)的采集,解決圖像的格式轉(zhuǎn)換和MJPEG編碼壓縮的數(shù)據(jù)處理,以及通過軟件的設計實現(xiàn)MJPEG格式文件到流媒體輸出等問題,最終實現(xiàn)視頻數(shù)據(jù)采集和傳輸。本系統(tǒng)有以下幾個方面的應用:家庭環(huán)境的實時監(jiān)測、家居的智能化控制、高危車間廠房無線監(jiān)控與控制、中長距離的家庭視頻通訊、企業(yè)實時視頻監(jiān)控等。

        關(guān)鍵詞:嵌入式;視頻;數(shù)據(jù)采集;傳輸

        中圖分類號:TP368文獻標識碼:A

        

        Design and Implementation of Video Data Acquisition and Transmission Based on ARM

        

        LUAN Boyue,ZHANG Ying,ZHAO Huiyuan

        (Beijing Institute ofTechnologu,Zhuhai,Guangdong 519085,China)

        Abstract:The video data acquisition and transmission based on ARM is discussed in this paper. through a new generation of ARM embedded development plaform,and combined with internet and wireless transmission technology,implementation of video data acquisition and remote data transmission.Usingembedded Linux system through the USB camera for video data collection,solve the image format conversion and MJPEG encoding date processing,designed and implemented through software MJPEG format output files to streaming media,finally achieved of video date acquisition and transmission.This system can be used for real-time monitoring of family environment and home intelligent control,in some highrisk factory workshop wireless monitoring and control ,can also be used in longdistance home video communications and realtime video surveillance in enterprise.

        Key words:embedded system;video; data acquisition;transmission

        1 引 言

        隨著人們?nèi)粘I罟ぷ鞯木W(wǎng)絡化,各種系統(tǒng)的無線化,以及多媒體技術(shù)、寬帶網(wǎng)絡傳輸技術(shù)的不斷發(fā)展,視頻數(shù)據(jù)的采集和傳輸已成為遠程監(jiān)控和工業(yè)自動化控制領(lǐng)域的一項核心技術(shù)。在日益成熟的ARM嵌入式開發(fā)平臺下,其穩(wěn)定性也大大提高,通過CMOS攝像頭將視頻信號數(shù)字化后再將視頻數(shù)據(jù)進行壓縮,經(jīng)由網(wǎng)絡模塊上傳至局域網(wǎng)或互聯(lián)網(wǎng),實現(xiàn)了視頻數(shù)據(jù)采集傳輸。

        2 系統(tǒng)總體設計

        整個系統(tǒng)的設計分為三個部分:USB攝像頭、ARM嵌入式開發(fā)平臺、網(wǎng)絡模塊。系統(tǒng)整體結(jié)構(gòu)如圖1所示。

        系統(tǒng)中所采用的攝像頭是中星微公司生產(chǎn)的ZC301芯片的攝像頭,該攝像頭將CMOS圖像傳感器所產(chǎn)生的圖像信號送到微處理器,處理后再轉(zhuǎn)換為數(shù)字信號輸出到外部設備。ARM嵌入式開發(fā)平臺使用了三星公司S3C2440微處理器[1],其最高時鐘頻率為533MHZ,并且平臺包括了256M的NAND Flash、4M NOR Flash、64M SDRAM 和一個USB host接口。USB host接口用于和攝像頭相接。網(wǎng)絡模塊采用DAVICOM公司的以太網(wǎng)控制芯片DM9000CEP [2],該芯片裝配有標準10M/100M自適應收發(fā)器,16K大容量FIFO,支持以太網(wǎng)接口協(xié)議,當從內(nèi)存中接收到的壓縮后的碼流數(shù)據(jù)后,通過TCP/IP網(wǎng)絡通信協(xié)議對數(shù)據(jù)進行打包,如果接收到瀏覽器向服務器的數(shù)據(jù)訪問請求,則將數(shù)據(jù)發(fā)送至瀏覽器[3]。以太網(wǎng)芯片與嵌入式微處理器S3C2440接口電路如圖2所示。

        圖1 系統(tǒng)整體結(jié)構(gòu)

        圖2 以太網(wǎng)接口電路

        計算技術(shù)與自動化2014年6月

        第33卷第2期欒博悅等:基于ARM的視頻數(shù)據(jù)采集傳輸系統(tǒng)的設計與實現(xiàn)

        3 系統(tǒng)軟件結(jié)構(gòu)設計

        系統(tǒng)的軟件設計主要包括:視頻設備的掛載,視頻數(shù)據(jù)的采集,數(shù)據(jù)格式轉(zhuǎn)換、編碼壓縮,視頻數(shù)據(jù)傳輸?shù)?。本系統(tǒng)的視頻圖像顯示涉及到了顏色空間轉(zhuǎn)換問題,即對于現(xiàn)代數(shù)字圖像傳感器的數(shù)據(jù)輸出格式一般為YUV/YCbCr 顏色格式對RGB顏色格式的一種轉(zhuǎn)換。RGB色彩空間,其顏色在三維空間模型的3個軸分別對應著紅(Red)、綠(Green)、藍(Blue),模型內(nèi)部的點對應不同顏色。YUV空間中顏色的三個分量為亮度Y(Luminance),色度U、V(Chrominance),其中YCbCr也是由YUV經(jīng)過偏移縮放形成的。具體的轉(zhuǎn)換關(guān)系如下所示[4]:

        R = 1.164*(Y-16)+1.596*(Cr-128)

        G = 1.164*(Y-16)-0.392*(Cb-128)-0.813*(Cr-128)

        B = 1.164*(Y-16)+2.017*(Cb-128) (1)

        視頻數(shù)據(jù)的傳輸離不開網(wǎng)絡,但是只有遵循一定的協(xié)議才能在網(wǎng)絡中正確的實現(xiàn)數(shù)據(jù)的傳送。其中TCP/IP(網(wǎng)絡通訊協(xié)議)是因特網(wǎng)最基本的協(xié)議,也是互聯(lián)網(wǎng)絡的基礎。TCP/IP通訊協(xié)議采用了4層的層次結(jié)構(gòu),分別是應用層、傳輸層、網(wǎng)絡層、網(wǎng)絡接口層,每一層都呼叫它的下一層所提供的網(wǎng)絡來完成自己的需求。傳輸層協(xié)議主要是傳輸控制協(xié)議TCP和用戶數(shù)據(jù)報協(xié)議UDP。應用層協(xié)議主要有:FTP、TELNET、HTTP(超文本傳輸協(xié)議)等,本系統(tǒng)所用的傳輸層協(xié)議是TCP協(xié)議,應用層協(xié)議為HTTP協(xié)議。

        3.1 視頻數(shù)據(jù)采集

        系統(tǒng)實現(xiàn)視頻數(shù)據(jù)采集主要是利用Linux操作系統(tǒng)中通用的Vedio 4 Linux 2接口[5]。Vedio 4 Linux是Linux操作系統(tǒng)中音視頻設備統(tǒng)一的API,同時也可以提供無線電通信、文字電視廣播解碼和垂直消隱的數(shù)據(jù)接口。通過該接口就可以很方便的將視頻數(shù)據(jù)進行采集。利用以下程序代碼,可以任意按用戶需要進行配置。

        memset(&vd->cap,0,sizeof(struct v4l2_capability));

        ret=ioctl(vd>fd,VIDIOC_QUERYCAP, &vd->cap);

        獲取攝像頭基本參數(shù)

        vd->fmt.fmt.pix.width =vd>width; 

        捕獲視頻寬度像素

        vd->fmt.fmt.pix.height=vd>height;

        捕獲視頻高度像素

        Struct v4l2_streamparm*setfps;

        etfps=(struct v4l2_streamparm*)

        calloc(1,sizeof(structv4l2_stre-amparm));

        設置視頻幀頻率

        memset(&vd->rb, 0, sizeof(struct v4l2_requestbuffers));

        vd->rb.count = NB_BUFFER;

        設置視頻幀緩沖區(qū)個數(shù)

        for (i = 0; i < NB_BUFFER; i++) {memset(&vd->buf,0,sizeof(struc-t v4l2_buffer));

        將幀緩沖區(qū)數(shù)據(jù)映射到內(nèi)存

        int uvcGrab(struct vdIn *vd);

        獲取一幀視頻信號的圖像。

        視頻數(shù)據(jù)采集具體流程如圖3所示。

        圖3 視頻采集流程圖

        3.2 格式轉(zhuǎn)換和MJPEG編碼壓縮

        由于不同的攝像頭都有不同的輸出格式,所以進行合適的格式轉(zhuǎn)換是非常有必要的,由攝像頭所采集到的原始數(shù)據(jù)并不適合用于傳輸,為了減少傳輸視頻數(shù)據(jù)的碼流大小還需要對圖像進行壓縮。本系統(tǒng)所用的攝像頭輸出YUV 4:2:2格式的圖像數(shù)據(jù),將圖像數(shù)據(jù)轉(zhuǎn)換為RGB格式,再通過調(diào)用Linux下的Libjpeg庫對圖像進行壓縮。

        格式轉(zhuǎn)換以及壓縮處理過程和基本代碼函數(shù)名如下:

        1)上鎖全局變量的圖像緩沖區(qū)(pthread_mutex_Lock)。 

        2)判斷圖像顏色編碼格式,如果是YUV格式的顏色編碼(以YUV4:2:2為例,調(diào)用compress_yuyv_o_jpeg函數(shù))將一行YUV轉(zhuǎn)換RGB,并將一行RGB壓縮成JPEG格式[6],行加一,判斷圖像是否壓縮到最后一行。如果是MJPEG編碼格式輸出的圖像(調(diào)用int memcpy_picture函數(shù)),查找起始幀標志位,并插入Huffman數(shù)據(jù)表。

        3)通知所有線程有一幀數(shù)據(jù)已經(jīng)處理為JPEG格式。

        4)解鎖全局變量的圖像緩沖區(qū)。

        3.3 視頻數(shù)據(jù)的傳輸

        為了實現(xiàn)能將采集到的視頻數(shù)據(jù)通過網(wǎng)絡進行傳輸,本系統(tǒng)使用了在Linux下TCP協(xié)議的Socket編程[7]。Socket接口是一個在不同進程間的通訊端點,Socket在Linux系統(tǒng)中被看做是一個文件,當客戶端和服務器端的Socket被創(chuàng)建時,服務器端會調(diào)用accept()函數(shù),并以阻塞方式等待響應客戶端的連接請求,連接成功后,雙方就可以進行正常的數(shù)據(jù)通信,通訊結(jié)束后,釋放Socket結(jié)構(gòu)。其編程結(jié)構(gòu)如圖4所示。

        當有多個客戶端提出請求時還需要建立多線程并發(fā)服務器[8],當客戶端提出連接請求時,會建立一個新的線程,這樣每一個客戶端都會有一個獨立的線程,實現(xiàn)多個線程數(shù)據(jù)的并發(fā)。線程可以對進程的內(nèi)存空間和資源進行訪問,并與同一進程中的其他線程共享數(shù)據(jù)區(qū)。因此,并發(fā)服務器線程的增加并不會讓服務器進程隨著客戶端的增加而線性增長,這樣就降低了服務器進程壓力,提高了其性能。代碼如下:

        pthread_t client;struct addrinfo*aip,*aip2; 

        struct addrinfo hints; 

        struct sockaddr_storageclient_a-

        ddr;

        服務器監(jiān)聽IP

        socklen_taddr_len=sizeof(structsockaddr_storage); 

        阻塞方式等待客戶端連接

        pcfd->fd = accept(pcontext->sd, (struct sockaddr *)&client_addr, &addr_len);

        新客戶端申請結(jié)構(gòu) 

        while(!pglobal->stop) cfd *pcfd = malloc(sizeof(cfd));

        客戶端線程創(chuàng)建

        if(pthread_create(&client, NULL, &client_thread, pcfd) != 0) 

        pthread_detach(client);

        圖4 Linux下TCP協(xié)議的Socket編程結(jié)構(gòu)

        4 系統(tǒng)運行與實現(xiàn)

        由于視頻傳輸數(shù)據(jù)量大、實時要求高,完成視頻傳輸,鏈路的數(shù)據(jù)吞吐量必須大于視頻數(shù)據(jù)流量。測試結(jié)果表明,本系統(tǒng)能夠達到穩(wěn)定的傳輸效果,圖像清晰,視頻無卡頓現(xiàn)象,并支持多個客戶端同時瀏覽頁面,最終實現(xiàn)了視頻數(shù)據(jù)采集傳輸。系統(tǒng)運行效果如圖5所示。在移動設備和網(wǎng)絡飛速發(fā)展的今天,將本系統(tǒng)網(wǎng)絡進行拓展,手機等移動設備也可作為客戶端,隨時隨地的進行遠程監(jiān)控,這樣也為以后的智能化控制提供了基礎。本設計主要有以下幾個特點:

        1)實現(xiàn)了多方式無線局域網(wǎng)視頻數(shù)據(jù)采集傳輸,可以利用各種無線移動設備對視頻數(shù)據(jù)實時監(jiān)控,例如手機、平板電腦等。

        2)應用范圍廣、效果好,穩(wěn)定性高。

        3)硬件結(jié)構(gòu)簡單,成本低,體積小,可運用于飛機航拍等一些特殊環(huán)境場所。

        圖5 系統(tǒng)運行效果圖

        參考文獻

        [1] SamsungElectronics S3C24 10X 32- BIT RISC MIC R O P R E SSO R SRSMANA L . Revision 1.2.Pu blication Number:21.2-S3-C 24 10-052003 ,May 2005. 

        [2] 韓超,王可人.基于DM9000的嵌入式系統(tǒng)的網(wǎng)絡接口的設計與實現(xiàn) [J].工業(yè)控制計算機 ,2005,20(4):17-18.

        [3] BATCHAEVSS.Computer assisted monitoring systems use of computer network sandinter nettechnologies[J].BiomediealEngineering,2005,9(4):161-166.

        [4] GENESIS MICROCHIP. gm6015 Preliminary Data Sheet[M]. California US: Genesis Microchip Company, 2001:33-34.

        [5] 李珊珊,王緒國.基于V4L2的遠程視頻采集系統(tǒng)設計與實現(xiàn)[D].武漢:武漢理工大學,2011.

        [6] JTC 1/SC29/WG 1.ISO/IEC CD29199-2: 2010 JPEG XR image coding Specification[S]. ISO/IEC:2010.

        [7] GUHA S,FRANCIS P.Characterization and Measurement of TCP Traversal Through NATs and FireWalls[C] //Proc of Internet Measurement Conference,2005-10. 

        [8] GYU SANG CHOI,J inHaKim,Deniz Ersoz,SO.A multithreaded P IPEL lNED Web server architecture for SMP/SoC machines[C].Proceedings of the 14 th internationaleonference onWorldWideWeb,ACM Press 2005:730-739.

        memset(&vd->cap,0,sizeof(struct v4l2_capability));

        ret=ioctl(vd>fd,VIDIOC_QUERYCAP, &vd->cap);

        獲取攝像頭基本參數(shù)

        vd->fmt.fmt.pix.width =vd>width; 

        捕獲視頻寬度像素

        vd->fmt.fmt.pix.height=vd>height;

        捕獲視頻高度像素

        Struct v4l2_streamparm*setfps;

        etfps=(struct v4l2_streamparm*)

        calloc(1,sizeof(structv4l2_stre-amparm));

        設置視頻幀頻率

        memset(&vd->rb, 0, sizeof(struct v4l2_requestbuffers));

        vd->rb.count = NB_BUFFER;

        設置視頻幀緩沖區(qū)個數(shù)

        for (i = 0; i < NB_BUFFER; i++) {memset(&vd->buf,0,sizeof(struc-t v4l2_buffer));

        將幀緩沖區(qū)數(shù)據(jù)映射到內(nèi)存

        int uvcGrab(struct vdIn *vd);

        獲取一幀視頻信號的圖像。

        視頻數(shù)據(jù)采集具體流程如圖3所示。

        圖3 視頻采集流程圖

        3.2 格式轉(zhuǎn)換和MJPEG編碼壓縮

        由于不同的攝像頭都有不同的輸出格式,所以進行合適的格式轉(zhuǎn)換是非常有必要的,由攝像頭所采集到的原始數(shù)據(jù)并不適合用于傳輸,為了減少傳輸視頻數(shù)據(jù)的碼流大小還需要對圖像進行壓縮。本系統(tǒng)所用的攝像頭輸出YUV 4:2:2格式的圖像數(shù)據(jù),將圖像數(shù)據(jù)轉(zhuǎn)換為RGB格式,再通過調(diào)用Linux下的Libjpeg庫對圖像進行壓縮。

        格式轉(zhuǎn)換以及壓縮處理過程和基本代碼函數(shù)名如下:

        1)上鎖全局變量的圖像緩沖區(qū)(pthread_mutex_Lock)。 

        2)判斷圖像顏色編碼格式,如果是YUV格式的顏色編碼(以YUV4:2:2為例,調(diào)用compress_yuyv_o_jpeg函數(shù))將一行YUV轉(zhuǎn)換RGB,并將一行RGB壓縮成JPEG格式[6],行加一,判斷圖像是否壓縮到最后一行。如果是MJPEG編碼格式輸出的圖像(調(diào)用int memcpy_picture函數(shù)),查找起始幀標志位,并插入Huffman數(shù)據(jù)表。

        3)通知所有線程有一幀數(shù)據(jù)已經(jīng)處理為JPEG格式。

        4)解鎖全局變量的圖像緩沖區(qū)。

        3.3 視頻數(shù)據(jù)的傳輸

        為了實現(xiàn)能將采集到的視頻數(shù)據(jù)通過網(wǎng)絡進行傳輸,本系統(tǒng)使用了在Linux下TCP協(xié)議的Socket編程[7]。Socket接口是一個在不同進程間的通訊端點,Socket在Linux系統(tǒng)中被看做是一個文件,當客戶端和服務器端的Socket被創(chuàng)建時,服務器端會調(diào)用accept()函數(shù),并以阻塞方式等待響應客戶端的連接請求,連接成功后,雙方就可以進行正常的數(shù)據(jù)通信,通訊結(jié)束后,釋放Socket結(jié)構(gòu)。其編程結(jié)構(gòu)如圖4所示。

        當有多個客戶端提出請求時還需要建立多線程并發(fā)服務器[8],當客戶端提出連接請求時,會建立一個新的線程,這樣每一個客戶端都會有一個獨立的線程,實現(xiàn)多個線程數(shù)據(jù)的并發(fā)。線程可以對進程的內(nèi)存空間和資源進行訪問,并與同一進程中的其他線程共享數(shù)據(jù)區(qū)。因此,并發(fā)服務器線程的增加并不會讓服務器進程隨著客戶端的增加而線性增長,這樣就降低了服務器進程壓力,提高了其性能。代碼如下:

        pthread_t client;struct addrinfo*aip,*aip2; 

        struct addrinfo hints; 

        struct sockaddr_storageclient_a-

        ddr;

        服務器監(jiān)聽IP

        socklen_taddr_len=sizeof(structsockaddr_storage); 

        阻塞方式等待客戶端連接

        pcfd->fd = accept(pcontext->sd, (struct sockaddr *)&client_addr, &addr_len);

        新客戶端申請結(jié)構(gòu) 

        while(!pglobal->stop) cfd *pcfd = malloc(sizeof(cfd));

        客戶端線程創(chuàng)建

        if(pthread_create(&client, NULL, &client_thread, pcfd) != 0) 

        pthread_detach(client);

        圖4 Linux下TCP協(xié)議的Socket編程結(jié)構(gòu)

        4 系統(tǒng)運行與實現(xiàn)

        由于視頻傳輸數(shù)據(jù)量大、實時要求高,完成視頻傳輸,鏈路的數(shù)據(jù)吞吐量必須大于視頻數(shù)據(jù)流量。測試結(jié)果表明,本系統(tǒng)能夠達到穩(wěn)定的傳輸效果,圖像清晰,視頻無卡頓現(xiàn)象,并支持多個客戶端同時瀏覽頁面,最終實現(xiàn)了視頻數(shù)據(jù)采集傳輸。系統(tǒng)運行效果如圖5所示。在移動設備和網(wǎng)絡飛速發(fā)展的今天,將本系統(tǒng)網(wǎng)絡進行拓展,手機等移動設備也可作為客戶端,隨時隨地的進行遠程監(jiān)控,這樣也為以后的智能化控制提供了基礎。本設計主要有以下幾個特點:

        1)實現(xiàn)了多方式無線局域網(wǎng)視頻數(shù)據(jù)采集傳輸,可以利用各種無線移動設備對視頻數(shù)據(jù)實時監(jiān)控,例如手機、平板電腦等。

        2)應用范圍廣、效果好,穩(wěn)定性高。

        3)硬件結(jié)構(gòu)簡單,成本低,體積小,可運用于飛機航拍等一些特殊環(huán)境場所。

        圖5 系統(tǒng)運行效果圖

        參考文獻

        [1] SamsungElectronics S3C24 10X 32- BIT RISC MIC R O P R E SSO R SRSMANA L . Revision 1.2.Pu blication Number:21.2-S3-C 24 10-052003 ,May 2005. 

        [2] 韓超,王可人.基于DM9000的嵌入式系統(tǒng)的網(wǎng)絡接口的設計與實現(xiàn) [J].工業(yè)控制計算機 ,2005,20(4):17-18.

        [3] BATCHAEVSS.Computer assisted monitoring systems use of computer network sandinter nettechnologies[J].BiomediealEngineering,2005,9(4):161-166.

        [4] GENESIS MICROCHIP. gm6015 Preliminary Data Sheet[M]. California US: Genesis Microchip Company, 2001:33-34.

        [5] 李珊珊,王緒國.基于V4L2的遠程視頻采集系統(tǒng)設計與實現(xiàn)[D].武漢:武漢理工大學,2011.

        [6] JTC 1/SC29/WG 1.ISO/IEC CD29199-2: 2010 JPEG XR image coding Specification[S]. ISO/IEC:2010.

        [7] GUHA S,FRANCIS P.Characterization and Measurement of TCP Traversal Through NATs and FireWalls[C] //Proc of Internet Measurement Conference,2005-10. 

        [8] GYU SANG CHOI,J inHaKim,Deniz Ersoz,SO.A multithreaded P IPEL lNED Web server architecture for SMP/SoC machines[C].Proceedings of the 14 th internationaleonference onWorldWideWeb,ACM Press 2005:730-739.

        memset(&vd->cap,0,sizeof(struct v4l2_capability));

        ret=ioctl(vd>fd,VIDIOC_QUERYCAP, &vd->cap);

        獲取攝像頭基本參數(shù)

        vd->fmt.fmt.pix.width =vd>width; 

        捕獲視頻寬度像素

        vd->fmt.fmt.pix.height=vd>height;

        捕獲視頻高度像素

        Struct v4l2_streamparm*setfps;

        etfps=(struct v4l2_streamparm*)

        calloc(1,sizeof(structv4l2_stre-amparm));

        設置視頻幀頻率

        memset(&vd->rb, 0, sizeof(struct v4l2_requestbuffers));

        vd->rb.count = NB_BUFFER;

        設置視頻幀緩沖區(qū)個數(shù)

        for (i = 0; i < NB_BUFFER; i++) {memset(&vd->buf,0,sizeof(struc-t v4l2_buffer));

        將幀緩沖區(qū)數(shù)據(jù)映射到內(nèi)存

        int uvcGrab(struct vdIn *vd);

        獲取一幀視頻信號的圖像。

        視頻數(shù)據(jù)采集具體流程如圖3所示。

        圖3 視頻采集流程圖

        3.2 格式轉(zhuǎn)換和MJPEG編碼壓縮

        由于不同的攝像頭都有不同的輸出格式,所以進行合適的格式轉(zhuǎn)換是非常有必要的,由攝像頭所采集到的原始數(shù)據(jù)并不適合用于傳輸,為了減少傳輸視頻數(shù)據(jù)的碼流大小還需要對圖像進行壓縮。本系統(tǒng)所用的攝像頭輸出YUV 4:2:2格式的圖像數(shù)據(jù),將圖像數(shù)據(jù)轉(zhuǎn)換為RGB格式,再通過調(diào)用Linux下的Libjpeg庫對圖像進行壓縮。

        格式轉(zhuǎn)換以及壓縮處理過程和基本代碼函數(shù)名如下:

        1)上鎖全局變量的圖像緩沖區(qū)(pthread_mutex_Lock)。 

        2)判斷圖像顏色編碼格式,如果是YUV格式的顏色編碼(以YUV4:2:2為例,調(diào)用compress_yuyv_o_jpeg函數(shù))將一行YUV轉(zhuǎn)換RGB,并將一行RGB壓縮成JPEG格式[6],行加一,判斷圖像是否壓縮到最后一行。如果是MJPEG編碼格式輸出的圖像(調(diào)用int memcpy_picture函數(shù)),查找起始幀標志位,并插入Huffman數(shù)據(jù)表。

        3)通知所有線程有一幀數(shù)據(jù)已經(jīng)處理為JPEG格式。

        4)解鎖全局變量的圖像緩沖區(qū)。

        3.3 視頻數(shù)據(jù)的傳輸

        為了實現(xiàn)能將采集到的視頻數(shù)據(jù)通過網(wǎng)絡進行傳輸,本系統(tǒng)使用了在Linux下TCP協(xié)議的Socket編程[7]。Socket接口是一個在不同進程間的通訊端點,Socket在Linux系統(tǒng)中被看做是一個文件,當客戶端和服務器端的Socket被創(chuàng)建時,服務器端會調(diào)用accept()函數(shù),并以阻塞方式等待響應客戶端的連接請求,連接成功后,雙方就可以進行正常的數(shù)據(jù)通信,通訊結(jié)束后,釋放Socket結(jié)構(gòu)。其編程結(jié)構(gòu)如圖4所示。

        當有多個客戶端提出請求時還需要建立多線程并發(fā)服務器[8],當客戶端提出連接請求時,會建立一個新的線程,這樣每一個客戶端都會有一個獨立的線程,實現(xiàn)多個線程數(shù)據(jù)的并發(fā)。線程可以對進程的內(nèi)存空間和資源進行訪問,并與同一進程中的其他線程共享數(shù)據(jù)區(qū)。因此,并發(fā)服務器線程的增加并不會讓服務器進程隨著客戶端的增加而線性增長,這樣就降低了服務器進程壓力,提高了其性能。代碼如下:

        pthread_t client;struct addrinfo*aip,*aip2; 

        struct addrinfo hints; 

        struct sockaddr_storageclient_a-

        ddr;

        服務器監(jiān)聽IP

        socklen_taddr_len=sizeof(structsockaddr_storage); 

        阻塞方式等待客戶端連接

        pcfd->fd = accept(pcontext->sd, (struct sockaddr *)&client_addr, &addr_len);

        新客戶端申請結(jié)構(gòu) 

        while(!pglobal->stop) cfd *pcfd = malloc(sizeof(cfd));

        客戶端線程創(chuàng)建

        if(pthread_create(&client, NULL, &client_thread, pcfd) != 0) 

        pthread_detach(client);

        圖4 Linux下TCP協(xié)議的Socket編程結(jié)構(gòu)

        4 系統(tǒng)運行與實現(xiàn)

        由于視頻傳輸數(shù)據(jù)量大、實時要求高,完成視頻傳輸,鏈路的數(shù)據(jù)吞吐量必須大于視頻數(shù)據(jù)流量。測試結(jié)果表明,本系統(tǒng)能夠達到穩(wěn)定的傳輸效果,圖像清晰,視頻無卡頓現(xiàn)象,并支持多個客戶端同時瀏覽頁面,最終實現(xiàn)了視頻數(shù)據(jù)采集傳輸。系統(tǒng)運行效果如圖5所示。在移動設備和網(wǎng)絡飛速發(fā)展的今天,將本系統(tǒng)網(wǎng)絡進行拓展,手機等移動設備也可作為客戶端,隨時隨地的進行遠程監(jiān)控,這樣也為以后的智能化控制提供了基礎。本設計主要有以下幾個特點:

        1)實現(xiàn)了多方式無線局域網(wǎng)視頻數(shù)據(jù)采集傳輸,可以利用各種無線移動設備對視頻數(shù)據(jù)實時監(jiān)控,例如手機、平板電腦等。

        2)應用范圍廣、效果好,穩(wěn)定性高。

        3)硬件結(jié)構(gòu)簡單,成本低,體積小,可運用于飛機航拍等一些特殊環(huán)境場所。

        圖5 系統(tǒng)運行效果圖

        參考文獻

        [1] SamsungElectronics S3C24 10X 32- BIT RISC MIC R O P R E SSO R SRSMANA L . Revision 1.2.Pu blication Number:21.2-S3-C 24 10-052003 ,May 2005. 

        [2] 韓超,王可人.基于DM9000的嵌入式系統(tǒng)的網(wǎng)絡接口的設計與實現(xiàn) [J].工業(yè)控制計算機 ,2005,20(4):17-18.

        [3] BATCHAEVSS.Computer assisted monitoring systems use of computer network sandinter nettechnologies[J].BiomediealEngineering,2005,9(4):161-166.

        [4] GENESIS MICROCHIP. gm6015 Preliminary Data Sheet[M]. California US: Genesis Microchip Company, 2001:33-34.

        [5] 李珊珊,王緒國.基于V4L2的遠程視頻采集系統(tǒng)設計與實現(xiàn)[D].武漢:武漢理工大學,2011.

        [6] JTC 1/SC29/WG 1.ISO/IEC CD29199-2: 2010 JPEG XR image coding Specification[S]. ISO/IEC:2010.

        [7] GUHA S,FRANCIS P.Characterization and Measurement of TCP Traversal Through NATs and FireWalls[C] //Proc of Internet Measurement Conference,2005-10. 

        [8] GYU SANG CHOI,J inHaKim,Deniz Ersoz,SO.A multithreaded P IPEL lNED Web server architecture for SMP/SoC machines[C].Proceedings of the 14 th internationaleonference onWorldWideWeb,ACM Press 2005:730-739.

        猜你喜歡
        視頻數(shù)據(jù)采集嵌入式
        搭建基于Qt的嵌入式開發(fā)平臺
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應用
        網(wǎng)絡視頻廣告的傳播策略探討
        基于IPv6組播技術(shù)校園網(wǎng)絡視頻服務設計
        怎樣提高中小學日常教學視頻資源拍攝的整體質(zhì)量
        遠程視頻監(jiān)控圖像自動標注優(yōu)化方法
        鐵路客流時空分布研究綜述
        基于廣播模式的數(shù)據(jù)實時采集與處理系統(tǒng)
        軟件工程(2016年8期)2016-10-25 15:54:18
        通用Web表單數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn)
        軟件工程(2016年8期)2016-10-25 15:52:53
        基于開源系統(tǒng)的綜合業(yè)務數(shù)據(jù)采集系統(tǒng)的開發(fā)研究
        日本va欧美va精品发布| 日本大肚子孕妇交xxx| 日韩人妻少妇一区二区三区| 久久久久久九九99精品| 熟女精品视频一区二区三区| 亚洲精品久久国产高清情趣图文| 91久久精品国产91久久| 日本公妇在线观看中文版 | 亚洲精品偷拍自综合网| 在线免费看91免费版.| 精品国产三级a∨在线欧美| 波多野结衣的av一区二区三区| 色八a级在线观看| 亚洲AV综合久久九九| 成人国产在线播放自拍| 久久综合九色综合久久久| 阴唇两边有点白是怎么回事| 久久精品成人一区二区三区| 国语对白嫖老妇胖老太| 国语少妇高潮对白在线| 热久久网站| 极品粉嫩小仙女高潮喷水视频| 91桃色在线播放国产| 午夜精品免费视频一区二区三区| 好紧好爽免费午夜视频| 少妇太爽了在线观看| 狠狠色噜噜狠狠狠97影音先锋| 免费视频成人 国产精品网站| 中文字幕丰满人妻有码专区| 人妖国产视频一区二区| 欧美老妇交乱视频在线观看| 三年在线观看免费大全下载| 青春草国产视频| 日韩精品有码中文字幕在线| 国产精品伦理久久一区| 无码熟妇人妻av在线网站| 把女邻居弄到潮喷的性经历 | 国产麻豆一区二区三区在线播放| av网站免费在线浏览| 色天使综合婷婷国产日韩av| 日韩成人无码一区二区三区|