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

        ?

        基于嵌入式系統(tǒng)的視頻壓縮編碼研究

        2019-12-05 02:49:36周斌李和
        無(wú)線(xiàn)互聯(lián)科技 2019年18期
        關(guān)鍵詞:嵌入式系統(tǒng)

        周斌 李和

        摘 ? 要:文章主要研究了視頻信號(hào)的采集與壓縮編碼,在分析了現(xiàn)有的視頻傳輸格式后,利用ARM Cortex A8為核心的嵌入式Linux系統(tǒng)對(duì)所采集的視頻信號(hào)以硬件編碼的方式實(shí)現(xiàn)H.264壓縮編碼,在保證視頻清晰度的同時(shí)完成視頻的壓縮并編碼,同時(shí),通過(guò)串口發(fā)送壓縮后視頻信息流。最后經(jīng)測(cè)試,壓縮編碼后的視頻傳輸穩(wěn)定,畫(huà)面清晰流暢。

        關(guān)鍵詞:Linux;H.264;編碼

        1 ? ?關(guān)鍵技術(shù)分析與選擇

        1.1 ?嵌入式操作系統(tǒng)的選擇

        一個(gè)合格的嵌入式操作系統(tǒng)選取應(yīng)該包含以下幾點(diǎn)要求:(1)穩(wěn)定性,在嵌入式運(yùn)行過(guò)程中需要滿(mǎn)足全天候不間斷工作,這就對(duì)系統(tǒng)的穩(wěn)定性提出了較高的要求。作為運(yùn)行軟件的基礎(chǔ)平臺(tái),系統(tǒng)的穩(wěn)定運(yùn)行是第一要?jiǎng)?wù)。(2)可移植性,在現(xiàn)代社會(huì),市場(chǎng)上有大量的嵌入式設(shè)備可供選擇,有著完全不同的體系結(jié)構(gòu),為了降低程序的二次開(kāi)發(fā)難度,本次研究所選的操作系統(tǒng)應(yīng)該具備良好的代碼可移植性。

        1.2 ?處理器的選擇

        芯片集成度是否滿(mǎn)足要求,即處理器應(yīng)集成的控制器是否有適合項(xiàng)目的接口與控制設(shè)備,通常會(huì)選擇在完成任務(wù)的情況下選擇耗能較少的處理器。硬件成本合適,價(jià)格低廉性能優(yōu)良的處理器較為合適。

        1.3 ?圖像壓縮編碼選擇的標(biāo)準(zhǔn)

        常用的編碼格式有MPEG4,H.263,H.264,H.265,都能滿(mǎn)足要求。H.265是新的視頻編碼標(biāo)準(zhǔn),目前使用度并不高,主要因?yàn)樵谑褂秒y度上它的需求高。考慮到項(xiàng)目研究需求以及使用場(chǎng)合,主要是使用視頻壓縮編碼技術(shù),傳輸帶寬有一定的要求,綜上所述,MPEG4和H.264較為符合要求[1]。嵌入式系統(tǒng)CPU中包含使用硬件編碼的MFC模塊。但在同等的傳輸帶寬下,相比較下H.264比MPEG4有著更好的數(shù)字傳輸特性。

        2 ? ?軟件設(shè)計(jì)與實(shí)現(xiàn)

        2.1 ?系統(tǒng)軟件總體結(jié)構(gòu)

        一個(gè)完整的嵌入式系統(tǒng)軟件需要滿(mǎn)足:含有應(yīng)用程序庫(kù)、操作系統(tǒng)、以及驅(qū)動(dòng)系統(tǒng)。(1)內(nèi)核版本,本次研究考慮到系統(tǒng)的完整性、穩(wěn)定性等一系列要求,認(rèn)為3.0.8內(nèi)核版本較為合適。由于系統(tǒng)需要更小的體積以及更高的傳輸效率,所以在操作過(guò)程中盡量降低內(nèi)核體積,在通過(guò)使用嵌入式開(kāi)發(fā)環(huán)境進(jìn)行編譯,在生成最新的內(nèi)核映像文件后,使用SD卡燒寫(xiě)用于操作系統(tǒng)內(nèi)核的安裝。(2)設(shè)備驅(qū)動(dòng),Linux操作系統(tǒng)作為驅(qū)動(dòng)以及硬件的操作系統(tǒng),系統(tǒng)驅(qū)動(dòng)程序上需要檢查主要包括USB/UART芯片CH340驅(qū)動(dòng)、硬件編碼器MFC驅(qū)動(dòng)等。(3)應(yīng)用程序,系統(tǒng)應(yīng)用程序中含有視頻采集模塊以及視頻壓縮轉(zhuǎn)換模塊,USB/UART模塊。(4)庫(kù)在嵌入式系統(tǒng),其使用編譯代表了資源的多少,在這個(gè)過(guò)程中會(huì)需要使用到很多的庫(kù)用于進(jìn)行編譯碼的運(yùn)行處理[2]。系統(tǒng)框架如圖1所示。

        2.2 ?視頻采集模塊

        在嵌入式視頻采集方案中最通用的協(xié)議是V4L2,它是V4L的改進(jìn)版,在Linux2.5.x中就被加入到Linux內(nèi)核中。另外,V4L2支持UVC免驅(qū)設(shè)備,省去了USB攝像頭驅(qū)動(dòng)移植的困難,極大地方便了視頻采集模塊的開(kāi)發(fā)。在研究中采用羅技C270攝像頭來(lái)開(kāi)發(fā)視頻采集應(yīng)用,開(kāi)發(fā)板Tiny210,當(dāng)USB攝像頭連接后,Linux會(huì)在/dev目錄下創(chuàng)建USB攝像頭操作接口Video3。使用V4L2的視頻采集后,就能通過(guò)使用內(nèi)存映射的方式將USB攝像頭采集到的數(shù)據(jù)映射到可操作的用戶(hù)空間。這里調(diào)用線(xiàn)程實(shí)現(xiàn)重復(fù)采集數(shù)據(jù)并保存在mmap映射內(nèi)存中,方便下一步調(diào)用顯示函數(shù)和H.264編碼函數(shù)[3]。在視頻采集中的重要步驟如下:

        使用open(“/dev/video3”,O_RDWR | O_NONBLOCK)函數(shù)通過(guò)非阻塞的方式打開(kāi)USB攝像頭/dev下的video3驅(qū)動(dòng)。使用ioctl(cam_fd,VIDIOC_ENUM_FMT,&fmt)枚舉視頻設(shè)置支持的格式,ioctl(cam_fd,VIDIOC_QUERYCAP,&cap)查詢(xún)視頻設(shè)備支持的功能。這里將攝像頭參數(shù)打印出來(lái),可知USB攝像頭支持的視頻采集格式為YUYV。設(shè)置攝像頭采集參數(shù)ioctl(cam_fd,VIDIOC_S_FMT,&stream_fmt)。結(jié)構(gòu)體stream_fmt參數(shù)如下:

        stream_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

        stream_fmt.fmt.pix.width =320;

        stream_fmt.fmt.pix.height =240;

        stream_fmt.fmt.pix.pixelformat = PIXELFMT;

        stream_fmt.fmt.pix.field= V4L2_FIELD_INTERLACED;

        初始化完成后用ioctl(cam_fd,VIDIOC_QUERYBUF,&buf)將申請(qǐng)到的buf地址放入視頻采集緩存中使用,用于存儲(chǔ)視頻數(shù)據(jù)。調(diào)用ioctl(cam_fd,VIDIOC_STREAMON,&type)函數(shù),開(kāi)始進(jìn)行采集圖像工作。

        從buf地址中獲取圖像并復(fù)制給新的存儲(chǔ)地址,把buf重新歸隊(duì)繼續(xù)采集圖像數(shù)據(jù)形成循環(huán)采集獲取到視頻流。當(dāng)需要停止時(shí)使用ioctl(cam_fd,VIDIOC_STREAMOFF,&type)停止視頻采集。并且使用unmap()函數(shù)釋放被占用的視頻緩存區(qū)buf。再關(guān)閉驅(qū)動(dòng)文件close(cam_fd)就可以停止視頻采集。

        2.3 ?視頻壓縮程序設(shè)計(jì)

        (1)通過(guò)函數(shù)打開(kāi)MFC硬件編碼設(shè)備:

        SsbSipMfcEncOpen(&buf_type)。

        (2)初始化編碼器對(duì)編碼結(jié)構(gòu)體SSBSIP_MFC_ENC_H264_PARAM進(jìn)行必要的參數(shù)設(shè)置。如采用什么編碼類(lèi)型、編碼圖像的高度和寬度、比特率、量化參數(shù)和幀率等選項(xiàng)進(jìn)行設(shè)置。主要地配置如下:

        err=SsbSipMfcEncInit(openHandle, param);

        param->codecType = H264_ENC;

        param->SourceWidth = CapWidth;

        param->SourceHeight = CapHeight;

        param->Bitrate = 30000;

        param->FrameQp = 30;

        param->FrameRate = 30。

        (3)建立和獲取數(shù)據(jù)輸入的緩存地址:

        err = SsbSipMfcEncGetInBuf(openHandle,&iinfo);

        err = SsbSipMfcEncSetInBuf(openHandle,&iinfo)。

        (4)調(diào)用編碼函數(shù)進(jìn)行H.264視頻壓縮編碼:

        err = SsbSipMfcEncExe(openHandle)。

        (5)建立和獲取編碼輸出的緩存地址:

        SSBSIP_MFC_ENC_OUTPUT_INFO oinfo;

        err=SsbSipMfcEncSetOutBuf(openHandle,phyOutbuf,virOutbuf,outbufSize);

        err = SsbSipMfcEncGetOutBuf(openHandle,&oinfo)。

        (6)編碼完成后,硬件編解碼器設(shè)備MFC:

        err = SsbSipMfcEncClose(openHandle)。

        3 ? ?系統(tǒng)嵌入式硬件平臺(tái)測(cè)試

        采用“友善之臂”提供的Tiny210方案,可以外接7寸的液晶屏。開(kāi)機(jī)后正常運(yùn)行,進(jìn)入系統(tǒng)后運(yùn)行“友善之臂”提供的檢測(cè)軟件測(cè)試各種功能是否正常使用。使用串口轉(zhuǎn)USB模塊連接電腦后,可以通過(guò)PC機(jī)上的SecureCRT查看目錄文件是否被成功掛載。最后對(duì)硬件接口進(jìn)行功能測(cè)試,如進(jìn)到/dev下,觀察是否有ttyUSB0串口設(shè)備接口文件,如果沒(méi)有說(shuō)明串口接口電路有問(wèn)題,需重新檢查串口模塊是否能正常使用。

        3.1 ?圖像采集和顯示功能驗(yàn)證

        在驗(yàn)證初期,通過(guò)使用代碼編寫(xiě)圖片的采集截取一幀使視頻通過(guò)BMP格式保存圖片信息,驗(yàn)證V4L2可操作USB攝像頭。后續(xù)實(shí)現(xiàn)連續(xù)的圖像采集形成視頻流文件,通過(guò)fwrite保存視頻文件來(lái)實(shí)現(xiàn)在PC機(jī)上使用PotPlayer播放器播放視頻文件,分析播放效果,一步步完善代碼實(shí)現(xiàn)視頻的采集與播放功能。圖2為所采集圖像在7寸LCD液晶屏播放的效果,圖像清晰、畫(huà)面流暢、運(yùn)行穩(wěn)定。

        3.2 ?圖像壓縮功能驗(yàn)證

        圖像壓縮主要就是對(duì)視頻信號(hào)進(jìn)行H.264壓縮編碼[4],觀察壓縮后數(shù)據(jù)量與壓縮前數(shù)據(jù)量大小是否變化,將編碼后的H.264文件通過(guò)SD卡復(fù)制到電腦上,就能用具有解碼工具的軟件進(jìn)行播放,如H.264文件可以用PotPlayer軟件進(jìn)行播放,觀察播放效果,判斷是否編碼成功,并進(jìn)一步改善代碼,使得視頻壓縮比例可調(diào),以應(yīng)對(duì)不同帶寬需求的場(chǎng)景。圖2上方是未壓縮前的視頻圖像,下方是經(jīng)壓縮處理過(guò)的視頻圖像,對(duì)比兩張圖像可以看出經(jīng)壓縮處理的視頻圖像質(zhì)量很好,盡管清晰度有所下降但不影響觀看。

        4 ? ?結(jié)語(yǔ)

        通過(guò)研究基于ARM-Cortex A8的嵌入式Linux開(kāi)發(fā)平臺(tái)中關(guān)于視頻編碼設(shè)計(jì),主要完成了有關(guān)V4L2協(xié)議下的USB攝像頭的視頻采集,采用S5PV210上的MFC硬件編碼對(duì)視頻數(shù)據(jù)進(jìn)行H.264格式編碼,并使用串口進(jìn)行數(shù)據(jù)流發(fā)送,對(duì)后期無(wú)線(xiàn)數(shù)字調(diào)制傳輸具有較高的參考價(jià)值。

        [參考文獻(xiàn)]

        [1]李毓強(qiáng).基于H_264和流媒體的嵌入式多路網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京郵電大學(xué),2016.

        [2]姚莉,鄧丹君.基于A8的嵌入式Linux遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2016(5):24-26.

        [3]楊建國(guó),蔡立志,鄭紅.基于ARM的嵌入式視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2018(10):31-33.

        [4]吳大中,胡江浪.基于ARM的移動(dòng)視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2016(4):123-127.

        猜你喜歡
        嵌入式系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無(wú)人機(jī)系統(tǒng)
        ZC系列無(wú)人機(jī)遙感系統(tǒng)
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
        電子制作(2019年7期)2019-04-25 13:17:14
        嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
        電子制作(2018年18期)2018-11-14 01:48:16
        搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        亚洲成a人片在线观看无码| 男女上床视频免费网站| 人片在线观看无码| 亚洲视频在线中文字幕乱码| 亚洲国产精品久久无人区| 99精品国产在热久久无码| 狠狠色噜噜狠狠狠狠米奇777| 人妻妺妺窝人体色www聚色窝| 欧美日本亚洲国产一区二区| 色欲AV成人无码精品无码| 日韩亚洲国产中文字幕| 色和尚色视频在线看网站| 韩国av一区二区三区不卡| 熟女无套内射线观56| 亚洲尺码电影av久久| AV无码专区亚洲AVL在线观看| 黄片一级二级三级四级| 蜜桃视频在线免费视频| 精品久久久久久无码人妻蜜桃| 开心五月激情综合婷婷| 国产精品久免费的黄网站| 国产高清精品在线二区| 国产日产韩国级片网站| 亚洲 欧美 国产 制服 动漫| 最近中文字幕视频完整版在线看 | 色综合久久中文娱乐网| 精品久久久久久中文字幕大豆网 | 国产激情对白一区二区三区四| 亚洲成av在线免费不卡 | 精品88久久久久88久久久| 久久中文字幕亚洲精品最新| 亚洲一区二区三区综合网| 中文字幕人妻饥渴浪妇| 好男人社区影院www| 在线观看国产高清免费不卡黄| 亚洲春色视频在线观看| 一本色综合网久久| 少妇饥渴xxhd麻豆xxhd骆驼| 97久久成人国产精品免费| 日本一区二区三区视频免费观看| 一色桃子中文字幕人妻熟女作品 |