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

        ?

        基于嵌入式Linux 的視頻通信系統(tǒng)設(shè)計與實現(xiàn)?

        2019-11-13 08:19:48周錦陽
        艦船電子工程 2019年10期
        關(guān)鍵詞:服務(wù)端內(nèi)核嵌入式

        周錦陽 吳 哲 宋 廣

        (1.92785部隊 葫蘆島 125200)(2.中國電子科技集團(tuán)公司第三十研究所 成都 610000)

        1 引言

        隨著移動互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,WIFI 網(wǎng)絡(luò)覆蓋率不斷增加,4G網(wǎng)絡(luò)已遍布全國各地[1]。信息科技的高速發(fā)展,在豐富人們生活的同時,帶來了前所未有的機(jī)遇與挑戰(zhàn)。視頻通信技術(shù)不斷走向成熟,隨著IP 網(wǎng)絡(luò)帶寬的不斷提高,視頻通信進(jìn)入了一個新的發(fā)展和應(yīng)用時期,其在視頻會議、遠(yuǎn)程視頻醫(yī)療、遠(yuǎn)程視頻教育等方面得到越來越廣泛的應(yīng)用[2~3]。

        嵌入式系統(tǒng)作為一種實用、高效的計算機(jī)系統(tǒng),以其低成本、低能耗、高性能及可配置等優(yōu)點[4],逐漸成為電子產(chǎn)品設(shè)計開發(fā)的研究發(fā)展方向,其廣泛應(yīng)用于信息通信、工業(yè)控制、交通管理和智能家居等領(lǐng)域[5~6]。

        本文以嵌入式ARM 為載體,利用Linux系統(tǒng)的V4L2內(nèi)核驅(qū)動,設(shè)計了一種支持視頻圖像采集、壓縮、傳輸、顯示的移動視頻通信系統(tǒng)。通過系統(tǒng)功能測試,驗證了系統(tǒng)通信的穩(wěn)定性和連續(xù)性,為進(jìn)一步探索和研究相關(guān)內(nèi)容提供有益參考。

        2 總體框架

        視頻通信系統(tǒng)組成包括通信節(jié)點、視頻服務(wù)器和有線網(wǎng)絡(luò)等,總體框架如圖1 所示,視頻通信節(jié)點間可通過無線通信實現(xiàn)節(jié)點間點對點的視頻通信,也可依托已有無線局域網(wǎng)或電信網(wǎng)絡(luò),通過WLAN/4G 基站接入現(xiàn)有有線網(wǎng)絡(luò),利用視頻服務(wù)器的路由、轉(zhuǎn)發(fā)功能,實現(xiàn)節(jié)點間的視頻通信。

        圖1 頻通信系統(tǒng)總體框架

        3 系統(tǒng)組成

        3.1 硬件組成

        系統(tǒng)硬件主要由處理單元、無線通信模塊、視頻采集模塊、LCD和電源模塊等組成。系統(tǒng)硬件組成如圖2所示,節(jié)點實物如圖3所示。

        圖2 節(jié)點硬件組成框圖

        圖3 節(jié)點硬件實物圖

        處理單元主要負(fù)責(zé)視頻信息的視頻的壓縮、處理、傳輸以及自組織網(wǎng)絡(luò)的建立和維護(hù),其硬件采用深圳天漠科技有限公司的Devkit8500D嵌入式開發(fā)系統(tǒng),該系統(tǒng)采用采用DM3730 處理器,集成了高達(dá)1GHz 的ARM Cortex-A8 內(nèi)核以及高達(dá)800MHz 的具有高級數(shù)字信號處理的DSP 內(nèi)核,支持高清720p 視頻編解碼,并提供了豐富的外設(shè)接口,可以有效滿足開發(fā)需求。

        無線通信單元主要負(fù)責(zé)實現(xiàn)單跳節(jié)點間的無線通信,其硬件采用TOTOLINK-N200UP 大功率無線網(wǎng)卡,該網(wǎng)卡采用MIMO 技術(shù),內(nèi)置信號增強芯片,外置1根可拆卸智能天線,支持IEEE 802.11b/g/n協(xié)議標(biāo)準(zhǔn),無線傳輸速率高達(dá)150Mbps。

        視頻采集單元主要負(fù)責(zé)采集節(jié)點周圍視頻圖像信息,進(jìn)行環(huán)境狀態(tài)感知,其硬件采用英蓓特科技有限公司生產(chǎn)的CAM8100-U 數(shù)字?jǐn)z像頭,該攝像頭高達(dá)130W 像素,可支持多種分辨率,該模塊通過高速USB2.0 接口連接到ARM 開發(fā)板,可實現(xiàn)圖像預(yù)覽等功能。

        3.2 軟件組成

        視頻通信過程中,采集端為視頻傳輸?shù)脑垂?jié)點,實現(xiàn)視頻的采集、壓縮、傳輸和顯示;接收端為視頻傳輸?shù)哪康墓?jié)點,實現(xiàn)視頻的接收和顯示。采集端和接收端相互協(xié)作實現(xiàn)源節(jié)點和目的節(jié)點間的視頻通信。如圖4所示。

        圖4 采集端和接收端間的視頻交互流程

        采集端和接收端的相關(guān)功能是通過V4L2、libjpeg 和socket 的相關(guān)編程接口函數(shù)實現(xiàn)的。其中,攝像頭對視頻圖像的采集,是通過V4L2 的相關(guān)接口函數(shù)實現(xiàn)的;視頻圖像的壓縮和本地顯示,是通過jpeg 的相關(guān)編程接口實現(xiàn)的;視頻的發(fā)送和接收,是通過socket的接口函數(shù)實現(xiàn)的。

        4 功能設(shè)計

        4.1 視頻采集

        視頻圖像采集是通過USB 攝像頭完成的[7]。在嵌入式Linux系統(tǒng)中可以通過讀寫設(shè)備文件的方式訪問和控制USB 攝像頭,同時V4L2 模塊為USB攝像頭提供編程接口,通過編程接口函數(shù),實現(xiàn)視頻圖像的采集?;赨SB 攝像頭的視頻圖像采集流程如圖5所示。

        圖5 視頻采集流程

        1)開啟USB攝像頭

        USB 攝像頭作為嵌入式Linux 系統(tǒng)的視頻外設(shè),會在內(nèi)核中自動生成設(shè)備文件名(/dev/video2),并添加到內(nèi)核注冊表中[8],系統(tǒng)通過函數(shù)調(diào)用開啟USB攝像頭。

        2)獲取攝像頭的設(shè)備信息

        獲取攝像頭的設(shè)備信息主要是獲取攝像頭的驅(qū)動名、設(shè)備名、設(shè)備在系統(tǒng)中的位置、驅(qū)動版本號等信息。在嵌入式Linux系統(tǒng)中,V4L2模塊提供結(jié)構(gòu)體“struct v4l2_capability”存放設(shè)備信息。內(nèi)核根據(jù)獲取的攝像頭信息,判斷該設(shè)備是否是V4L2 的視頻采集設(shè)備。

        3)設(shè)置采集圖像的參數(shù)

        視頻圖像采集之前,需要對視頻圖像的采集參數(shù)進(jìn)行設(shè)置,主要包括圖像的大小、格式和來源。在嵌入式Linux 系統(tǒng)中,V4L2 模塊提供結(jié)構(gòu)體“struct v4l2_format”存放所設(shè)置參數(shù)。設(shè)置的參數(shù)包括視頻的來源(V4L2_BUF_TYPE_VIDEO_CAPTURE),視頻的高度(480)、寬度(320)以及視頻的格式(V4L2_PIX_FMT_YUYV)。

        4)內(nèi)存映射

        視頻采集后存儲在內(nèi)核空間,然而應(yīng)用程序不能直接訪問內(nèi)核空間,需要建立內(nèi)核空間和用戶空間的聯(lián)系,以便應(yīng)用程序調(diào)用內(nèi)核空間的視頻數(shù)據(jù)。由于內(nèi)存映射具有速度快、占用內(nèi)存空間小,操作簡單等優(yōu)點,因此本章所設(shè)計的系統(tǒng)采用內(nèi)存映射的方法,建立內(nèi)核空間和用戶空間的地址對應(yīng)關(guān)系,將圖像數(shù)據(jù)從內(nèi)核空間映射到用戶空間中。

        5)視頻數(shù)據(jù)采集

        視頻采集后是以先進(jìn)先出(First in first out,F(xiàn)IFO)存儲在緩存中的。當(dāng)應(yīng)用程序讀取緩存中的視頻數(shù)據(jù)時,視頻數(shù)據(jù)按照先進(jìn)先出的順序從緩存發(fā)出,之后該緩沖區(qū)重新獲取圖像數(shù)據(jù)。

        6)取消內(nèi)存映射和關(guān)閉攝像頭

        解除內(nèi)存映射,釋放內(nèi)存,調(diào)用函數(shù)關(guān)閉設(shè)備,通知程序停止視頻采集。

        4.2 視頻壓縮

        對視頻圖像的壓縮,是從時間、空間兩方面去除圖像的冗余信息的。常用的圖像壓縮方式有無損壓縮和有損壓縮兩種[9]。無損壓縮是指,只去除圖像冗余信息的壓縮,圖像質(zhì)量在壓縮前后基本保持不變,無明顯的失真。有損壓縮是指去除圖像的冗余信息和不相干信息的壓縮,壓縮前后存在一定差異,但是不影響觀看效果[10]。無損壓縮的特點是壓縮后圖像質(zhì)量髙,然而壓縮率很低,不能有效降低圖像所占存儲空間的大小。有損壓縮的特點是壓縮率髙,壓縮后的圖像占用的存儲空間較小,會有一定程度的失真但是不影響圖像的視覺效果。由于無線信道資源的有限性,為實現(xiàn)視頻的有效傳輸,采用有損壓縮的方式對視頻圖像進(jìn)行壓縮。YUV的jpeg壓縮流程如圖6所示。

        圖6 YUV壓縮JPEG流程

        1)初始化壓縮對象,申請存儲空間

        USB 攝像頭采集的視頻格式為YUYV,對采集的YUYV 格式的視頻進(jìn)行初始化,并向內(nèi)存申請一段用于存儲jpeg圖片的空間。

        2)設(shè)置壓縮參數(shù),開始壓縮

        視頻的有損壓縮是依據(jù)所設(shè)定的參數(shù)進(jìn)行的,將壓縮參數(shù)設(shè)置為80%的壓縮率,壓縮后的jpeg圖片像素為320×480。設(shè)置完壓縮參數(shù)后,開始對YUYV格式的視頻圖像進(jìn)行壓縮。

        3)結(jié)束壓縮,釋放jpeg圖片。

        4.3 視頻傳輸

        視頻傳輸采用基于UDP 的socket 視頻通信。socket[11]作為Unix/Linux 系統(tǒng)下實現(xiàn)TCP/IP 通信的接口,是一種用于描述IP 端口和地址的進(jìn)程通信機(jī)制。如圖7 所示,服務(wù)端初始化socket 創(chuàng)建套接字,調(diào)用bind()綁定服務(wù)端端口號;客服端初始化socket創(chuàng)建套接字,并調(diào)用sendto()發(fā)送請求,建立和服務(wù)端的連接。

        圖7 UDP的socket通信流程

        1)創(chuàng)建UDP套接字

        創(chuàng)建UDP 套接字,建立socket 通信。socket()函數(shù)在系統(tǒng)中注冊一個未綁定的套接字,通知系統(tǒng)建立一個通信端點。

        2)設(shè)置IP地址和綁定端口號

        設(shè)置網(wǎng)絡(luò)通信協(xié)議采用IPV4,綁定服務(wù)端和接收端的IP 地址,指定端口號,服務(wù)端調(diào)用函數(shù)bind()綁定端口號。

        3)服務(wù)端接收客戶端的“Hello”數(shù)據(jù)

        服務(wù)端調(diào)用函數(shù)recvfrom(),接受來自客戶端的數(shù)據(jù)請求“Hello”,建立和客戶端的連接。

        4)向客戶端發(fā)送圖像數(shù)據(jù)

        服務(wù)端調(diào)用函數(shù)sendto(),向客戶端發(fā)送視頻圖像,將發(fā)送緩存區(qū)的視頻數(shù)據(jù)發(fā)送到指定客戶端的地址空間。

        5)關(guān)閉套接字,切斷服務(wù)端和客戶端之間的連接

        調(diào)用函數(shù)closesocket()關(guān)閉套接字,調(diào)用函數(shù)close()切斷服務(wù)端和客戶端的連接。

        4.4 視頻顯示

        視頻顯示采用基于FrameBuffer的圖象顯示[12]。FrameBuffer 是運行在Linux 上的優(yōu)秀圖形接口,為所有的硬件提供編程接口,具有硬件無關(guān)性,可直接對顯存操作,實現(xiàn)視頻的顯示?;贔rameBuffer視頻顯示的流程如圖8所示。

        圖8 視頻顯示流程

        1)初始化framebuffer

        打開設(shè)備FrameBuffer,在嵌入式Linux 系統(tǒng)中,F(xiàn)rameBuffer 所對應(yīng)的設(shè)備文件為“/dev/fb0”,調(diào)用函數(shù)開啟。

        2)獲取FrameBuffer的固定信息

        獲取設(shè)備FrameBuffer 的固定信息主要是獲取屏幕緩沖區(qū)的物理地址和屏幕的寬度等的固定信息。

        3)獲取FrameBuffer的可變信息

        獲取設(shè)備FrameBuffer 的可變信息主要是獲取屏幕的分辨率、顏色深度等可變信息。

        4)內(nèi)存映射

        屏幕緩沖區(qū)到用戶地址空間的映射是通過函數(shù)調(diào)用實現(xiàn)的。

        5)視頻顯示

        視頻圖像的顯示是通過函數(shù)“jpeg_read_scanliness()”、“jpeg_to_frambuffer()”和“jpeg_finish_decompress()”實現(xiàn)的。

        5 功能測試

        本文針對視頻通信系統(tǒng),進(jìn)行了平臺間點對點的無線視頻通信測試。兩個視頻通信節(jié)點通過無線網(wǎng)卡實現(xiàn)節(jié)點間的互聯(lián)互通,視頻采集端將數(shù)字?jǐn)z像頭采集的視頻數(shù)據(jù)無線傳輸給視頻接收端,實現(xiàn)視頻信息的異地實時、動態(tài)顯示。視頻采集端視頻采集如圖9(a)所示,視頻接收端視頻顯示如圖9(b)所示。

        圖9 視頻通信測試圖

        6 結(jié)語

        本文采用嵌入式ARM 系統(tǒng),結(jié)合WIFI 無線通信和數(shù)字?jǐn)z像頭視頻感知,設(shè)計并實現(xiàn)了一種支持視頻圖像采集、傳輸、顯示的移動視頻通信系統(tǒng)。測試結(jié)果表明,移動自組織通信系統(tǒng)功能實用可靠、性能良好。隨著嵌入式技術(shù)的發(fā)展和視頻通信的廣泛應(yīng)用,未來還需要對嵌入式Linux 系統(tǒng)的工程應(yīng)用進(jìn)一步研究,使之更廣泛應(yīng)用于人們的生活和工作。

        猜你喜歡
        服務(wù)端內(nèi)核嵌入式
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護(hù)機(jī)制研究
        云存儲中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
        新時期《移動Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
        搭建基于Qt的嵌入式開發(fā)平臺
        在Windows Server 2008上創(chuàng)建應(yīng)用
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        Altera加入嵌入式視覺聯(lián)盟
        人妻熟妇乱又伦精品hd| 亚洲AV秘 片一区二区三区| 日韩激情av不卡在线| 国产精品国产三级国产av中文| 天堂а√在线最新版中文在线| 国产人成午夜免电影观看| 亚洲中文字幕av一区二区三区人| 亚洲自拍偷拍一区二区三区 | 亚洲日韩av一区二区三区中文 | 中文字幕人妻熟在线影院| 日本精品一区二区三区在线视频| 亚洲日产国无码| 中文字幕一二三四五六七区| 波多野42部无码喷潮在线| 中文字幕喷水一区二区| 久久人妻av不卡中文字幕| 久久人妻一区二区三区免费| 午夜毛片不卡免费观看视频 | 性做久久久久久久| 国产优质av一区二区三区| 国产日韩欧美一区二区东京热| 精品国产乱码久久久软件下载 | 强奸乱伦影音先锋| 久无码久无码av无码| 中文字幕乱码人妻无码久久久1 | 亚洲男同志网站| 精品综合久久久久久99| 女女同女同一区二区三区| 夜夜揉揉日日人人青青| 欧美成人免费高清视频| 免费毛片一区二区三区女同| 国产视频自拍一区在线观看| 国产真实夫妇交换视频| 久久久久国产精品片区无码| 青青草好吊色在线观看| 亚洲中文字幕久久无码精品| 国产成人无码精品久久99| 日本女优禁断视频中文字幕| 热re99久久精品国99热| 亚洲Va欧美va国产综合| 亚洲精品99久91在线|