国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2019-12-05 02:49:36周斌李和
無線互聯(lián)科技 2019年18期
關(guān)鍵詞:內(nèi)核串口嵌入式

周斌 李和

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

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

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

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

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

1.2 ?處理器的選擇

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

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

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

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

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

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

2.2 ?視頻采集模塊

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

使用open(“/dev/video3”,O_RDWR | O_NONBLOCK)函數(shù)通過非阻塞的方式打開USB攝像頭/dev下的video3驅(qū)動。使用ioctl(cam_fd,VIDIOC_ENUM_FMT,&fmt)枚舉視頻設(shè)置支持的格式,ioctl(cam_fd,VIDIOC_QUERYCAP,&cap)查詢視頻設(shè)備支持的功能。這里將攝像頭參數(shù)打印出來,可知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)將申請到的buf地址放入視頻采集緩存中使用,用于存儲視頻數(shù)據(jù)。調(diào)用ioctl(cam_fd,VIDIOC_STREAMON,&type)函數(shù),開始進(jìn)行采集圖像工作。

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

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

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

SsbSipMfcEncOpen(&buf_type)。

(2)初始化編碼器對編碼結(jié)構(gòu)體SSBSIP_MFC_ENC_H264_PARAM進(jìn)行必要的參數(shù)設(shè)置。如采用什么編碼類型、編碼圖像的高度和寬度、比特率、量化參數(shù)和幀率等選項進(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)嵌入式硬件平臺測試

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

3.1 ?圖像采集和顯示功能驗證

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

3.2 ?圖像壓縮功能驗證

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

4 ? ?結(jié)語

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

[參考文獻(xiàn)]

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

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

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

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

猜你喜歡
內(nèi)核串口嵌入式
萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
群眾路線是百年大黨成功之內(nèi)核性制度因素的外在表達(dá)
強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
Linux內(nèi)核mmap保護(hù)機制研究
搭建基于Qt的嵌入式開發(fā)平臺
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
USB接口的多串口數(shù)據(jù)并行接收方法探索
基于藍(lán)牙串口適配器的GPS接收機與AutoCAD的實時無線通信
地礦測繪(2015年3期)2015-12-22 06:27:26
Altera加入嵌入式視覺聯(lián)盟
仙桃市| 焉耆| 濉溪县| 罗江县| 罗甸县| 裕民县| 浠水县| 彭泽县| 循化| 甘泉县| 太康县| 广西| 绥宁县| 岚皋县| 抚宁县| 浦东新区| 高雄市| 太仓市| 连江县| 独山县| 略阳县| 乌兰县| 鄂托克前旗| 南丰县| 延寿县| 崇阳县| 兰溪市| 辽宁省| 时尚| 安陆市| 德化县| 乐平市| 吉木乃县| 台南市| 平湖市| 云南省| 鄂伦春自治旗| 东乡族自治县| 秭归县| 凯里市| 铜川市|