張 碩,楊 婷,李 博
(中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原 030051)
基于DM6467的視頻實(shí)時(shí)壓縮與傳輸系統(tǒng)的設(shè)計(jì)*
張 碩,楊 婷,李 博*
(中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原 030051)
針對(duì)大量視頻數(shù)據(jù)信息傳輸中延時(shí)、卡頓的問(wèn)題,設(shè)計(jì)了一種以TMS320DM6467處理器為硬件核心,Windows操作系統(tǒng)為軟件核心的視頻壓縮與傳輸系統(tǒng)。系統(tǒng)采用CCD攝像頭以及解碼器TVP5150完成視頻的采集。運(yùn)用H.264視頻編碼技術(shù)實(shí)現(xiàn)了視頻的實(shí)時(shí)壓縮,利用RTP協(xié)議將采集、壓縮編碼完成后的視頻數(shù)據(jù)通過(guò)局域網(wǎng)發(fā)送至上位機(jī),對(duì)VLC配置后可接收傳輸?shù)囊曨l流。在保證視頻清晰度的條件下,系統(tǒng)測(cè)試結(jié)果顯示:視頻實(shí)時(shí)性高,網(wǎng)絡(luò)傳輸視頻的速度滿足視頻監(jiān)控的需求,可以獲得大于150的壓縮比。
視頻傳輸;TMS320DM6467;H.264;RTP;Windows
隨著信息技術(shù)及多媒體技術(shù)的飛速發(fā)展,視頻監(jiān)控作為安防的主要手段逐漸進(jìn)入到人們的生活,傳統(tǒng)的本地視頻監(jiān)控已不能滿足人們的需要,人們對(duì)于遠(yuǎn)程視頻通信的需求日益強(qiáng)烈[1]。但未經(jīng)壓縮的視頻數(shù)據(jù)量很大,以分辨率為720X576的視頻為例,幀率為 25幀/s,每個(gè)像素由3 byte即24比特表示的RGB值,1 s的數(shù)據(jù)量就高達(dá)125 Mbit,這對(duì)網(wǎng)絡(luò)傳輸提出了很高的要求。因此,利用視頻壓縮技術(shù)來(lái)降低數(shù)據(jù)傳輸量就顯得十分必要。
目前視頻處理系統(tǒng)大多以 ARM、DSP、FPGA等為控制核心,但軟件開(kāi)發(fā)平臺(tái)多為L(zhǎng)inux系統(tǒng)[2-5]。Linux系統(tǒng)的構(gòu)建十分復(fù)雜,多數(shù)開(kāi)發(fā)軟件無(wú)法兼容,如CCS3.3。程序源代碼雖公開(kāi),但需要專(zhuān)業(yè)的研究人員才可以更改,對(duì)軟件的設(shè)計(jì)、移植帶來(lái)了一定困難。系統(tǒng)以ARM+DSP雙核芯片DM6467為核心進(jìn)行了視頻壓縮和網(wǎng)絡(luò)傳輸系統(tǒng)設(shè)計(jì),并在Windows系統(tǒng)下開(kāi)發(fā)軟件,使系統(tǒng)軟件平臺(tái)的搭建變得更加簡(jiǎn)潔。用戶可根據(jù)自己的需要修改代碼實(shí)現(xiàn)相應(yīng)的功能,軟件的應(yīng)用更加靈活。ARM核負(fù)責(zé)DM6467的外圍設(shè)備的控制及整個(gè)系統(tǒng)芯片的配置,DSP核只負(fù)責(zé)視頻壓縮算法的實(shí)現(xiàn)[6-7]。與單一DSP核芯片相比,該芯片ARM核的引入減輕了DSP核的壓力,提高了視頻處理的速度。另外,引入了新一代視頻編碼標(biāo)準(zhǔn)H.264對(duì)視頻進(jìn)行實(shí)時(shí)壓縮,可以獲得更高壓縮比[8]。系統(tǒng)完成了視頻的采集,并對(duì)采集到的視頻進(jìn)行實(shí)時(shí)壓縮,再將壓縮后的視頻數(shù)據(jù)通過(guò)千兆網(wǎng)實(shí)時(shí)地傳輸?shù)奖O(jiān)控中心[9-10]。
1.1 硬件方案設(shè)計(jì)
系統(tǒng)以DM6467為硬件核心,Windows操作系統(tǒng)為軟件開(kāi)發(fā)平臺(tái)。由CCD攝像頭和TVP5150完成視頻數(shù)據(jù)的連續(xù)采集,并利用H.264編碼對(duì)視頻進(jìn)行壓縮處理,最后采用 RTP協(xié)議將壓縮處理后的視頻數(shù)據(jù)發(fā)送到上位機(jī)。上位機(jī)通過(guò)VLC視頻播放器接收網(wǎng)絡(luò)視頻數(shù)據(jù),并實(shí)時(shí)播放接收到的視頻流。
系統(tǒng)設(shè)計(jì)主要分為視頻信號(hào)采集和上位機(jī)兩部分。上位機(jī)的內(nèi)容在PC機(jī)上完成,主要是VLC播放器的安裝與腳本編寫(xiě)。視頻信號(hào)采集的主控芯片選取的是TI公司的一款專(zhuān)用的高清雙核數(shù)字媒體處理器——TMS320DM6467,同時(shí)還包括256 Mbyte的DDR2存儲(chǔ)器、128 Mbyte的NAND Flash存儲(chǔ)器、TVP5150解碼器、CCD攝像頭以及多種外圍接口。Flash用于系統(tǒng)啟動(dòng),其中存放有文件系統(tǒng)、驅(qū)動(dòng)程序以及應(yīng)用程序等。DDR2作為系統(tǒng)運(yùn)行內(nèi)存,同時(shí)充當(dāng)視頻數(shù)據(jù)緩存的角色。TVP5150完成對(duì)模擬視頻信號(hào)的采集以及數(shù)字化,實(shí)現(xiàn)從RGB色彩空間到Y(jié)CbCr色度空間的轉(zhuǎn)換。外圍接口中,以太網(wǎng)接口完成對(duì)視頻信號(hào)的傳輸;DM6467通過(guò)I2C接口對(duì)TVP5150進(jìn)行參數(shù)配置,同時(shí)通過(guò)VPIF視頻接口接收TVP5150傳回的視頻信號(hào)。
圖1 系統(tǒng)硬件設(shè)計(jì)框圖
系統(tǒng)選用VSC8641作為PHY芯片,與DM6467的EMAC通過(guò)GMⅡ/MⅡ協(xié)議相連,同時(shí)VSC8641輸出直接連接以太網(wǎng)接口RJ-45,該網(wǎng)口能夠自適應(yīng)10/100/1000M。千兆網(wǎng)因具有經(jīng)濟(jì)、可靠性高、擴(kuò)展性好等的優(yōu)點(diǎn),使其成為目前局域網(wǎng)領(lǐng)域主流的解決方案,為系統(tǒng)實(shí)時(shí)的網(wǎng)絡(luò)傳輸提供了較高的理論支持。系統(tǒng)的硬件設(shè)計(jì)框圖如圖1所示。
1.2 軟件方案設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)都是在Windows下,CCS3.3軟件平臺(tái)上開(kāi)發(fā)完成。軟件部分分為多個(gè)子程序,主要包括視頻采集子程序設(shè)計(jì)、視頻壓縮編碼子程序設(shè)計(jì)、網(wǎng)絡(luò)傳輸子程序設(shè)計(jì)以及上位機(jī)腳本程序的編寫(xiě)。如圖2所示為系統(tǒng)軟件設(shè)計(jì)框圖。
圖2 系統(tǒng)軟件設(shè)計(jì)框圖
1.2.1 視頻采集程序設(shè)計(jì)
視頻采集的數(shù)據(jù)格式為BT.656,其主要由CCD攝像頭以及TVP5150解碼器完成。TVP5150將解碼完成的數(shù)字信號(hào)通過(guò)DM6467的VPIF視頻接口接收并將數(shù)據(jù)存儲(chǔ)到緩存區(qū),保證后續(xù)視頻壓縮、傳輸?shù)捻樌M(jìn)行。具體程序的流程圖如圖3所示。
圖3 視頻采集程序流程圖
首先利用Capture_init( )函數(shù)對(duì)視頻采集設(shè)備進(jìn)行初始化。在該函數(shù)中,TVP5150_enable( )函數(shù)實(shí)現(xiàn)對(duì)視頻解碼器使能,通過(guò)TVP5150_setup(mode,1)函數(shù)完成對(duì)解碼器的設(shè)置,TVP5150的控制是由ARM核通過(guò)I2C對(duì)其內(nèi)部寄存器編程實(shí)現(xiàn)。然后利用vpif_capture(void*pvY,void*pvCrCb)函數(shù)完成對(duì)視頻采集的設(shè)置,包括輸入視頻格式的選擇函數(shù)select_sd_video_input( ),VPIF的控制設(shè)置vpif_preinit( )以及通過(guò)對(duì)視頻通道0控制寄存器CH0_CTRL的配置,設(shè)置底場(chǎng)的垂直同步以及Y/C復(fù)用等。為防止視頻數(shù)據(jù)擁堵,系統(tǒng)設(shè)計(jì)中用 #pragma DATA_SECTION(,".ddr2_video")函數(shù)在DDR2中分配兩個(gè)存儲(chǔ)空間,供采集到的視頻的亮度及色度數(shù)據(jù)緩存使用。最后通過(guò)VPIF_enable( )函數(shù)開(kāi)始視頻的采集。除此之外,ARM核的快速中斷函數(shù)c_FIQ( )實(shí)現(xiàn)判斷一幀圖像是否采集完成以及是否存在丟幀、跳幀現(xiàn)象的功能,對(duì)其進(jìn)行初始化后就能進(jìn)入工作狀態(tài)。
1.2.2 視頻壓縮編碼程序設(shè)計(jì)
一幀圖像采集完成后,就會(huì)觸發(fā)ARM核的快速中斷請(qǐng)求,繼而ARM核會(huì)響應(yīng)中斷,并通過(guò)COP_creatH264Enc( )函數(shù)給DSP核發(fā)出創(chuàng)建H264編碼的命令。DSP核程序中switch(pcArmCtl->m_uCmd)語(yǔ)句會(huì)實(shí)時(shí)的檢查ARM核中是否有命令發(fā)出,當(dāng)檢測(cè)到ARM_CMD_H264_CREATE指令時(shí),就會(huì)執(zhí)行H264APP_create( )編碼創(chuàng)建函數(shù)。這是一個(gè)帶參數(shù)的函數(shù),參數(shù)包括高度、寬度、節(jié)距、幀率、碼率以及畫(huà)面組,參數(shù)的尋址由變量指針pcArmCtl逐層訪問(wèn)結(jié)構(gòu)體m_cParam和m_cH264CreateParam完成。該函數(shù)中包含H264APP_initParams( )參數(shù)初始化函數(shù),H264APP_initDynamicparams( )動(dòng)態(tài)參數(shù)初始化函數(shù)等。
編碼方式選擇幀內(nèi)編碼8X8模式,I幀和P幀分開(kāi)編碼。函數(shù)H264APP_encode_Frame( )完成對(duì)視頻的編碼工作,該函數(shù)主要由H264APP_encodeHeader( )函數(shù)及H264APP_encode( )函數(shù)組成。編碼時(shí)首先利用函數(shù)H264APP_encodeHeader( )進(jìn)行動(dòng)態(tài)的參數(shù)設(shè)置,主要是對(duì)亮度、色度及輸出緩存的設(shè)置。然后H264APP_encode( )函數(shù)完成編碼工作,并設(shè)置變量iErrorFlag跟蹤編碼錯(cuò)誤。函數(shù)中首先通過(guò)指針變量pcH264Obj獲取圖像的地址(XDAS_Int8*)pvLum/pvC,然后由H264FHDVENC_encode( )函數(shù)實(shí)現(xiàn)P幀到I幀的轉(zhuǎn)換:編碼完最后一個(gè)P幀后緊接著把I幀標(biāo)志位置0(標(biāo)志下幀開(kāi)始編碼I幀)。每編碼一個(gè)參數(shù)集(I幀),計(jì)數(shù)器加1,編碼完32 000個(gè)I幀后,調(diào)用H264_reast(pcH264Obj)函數(shù)復(fù)位一下,解決長(zhǎng)時(shí)間編碼到65 536個(gè)I幀后出現(xiàn)錯(cuò)誤的問(wèn)題。
在編碼過(guò)程中,為使編碼和接收數(shù)據(jù)同步,防止漏編的現(xiàn)象,在程序中增加了時(shí)間戳函數(shù)TSC( ),保證了編碼的準(zhǔn)確率。同時(shí)為保證編碼的效率,在DSP核中利用#pragma DATA_SECTION( ,".ddr2_share")函數(shù)建立兩個(gè)數(shù)據(jù)段,用于存放未編碼以及編碼完成的視頻數(shù)據(jù),方便DSP核和ARM核之間的數(shù)據(jù)共享。編碼完成后,DSP會(huì)通過(guò)命令DSP_CMD_H264_STREAM通知ARM核已完成H264視頻編碼,ARM核在檢測(cè)到指令后,可對(duì)視頻數(shù)據(jù)進(jìn)行下一步處理。具體流程圖如圖4所示。
圖4 視頻壓縮程序流程圖
1.2.3 網(wǎng)絡(luò)傳輸程序設(shè)計(jì)
實(shí)時(shí)網(wǎng)絡(luò)協(xié)議(RTP)是一種網(wǎng)絡(luò)傳輸協(xié)議,由于其為數(shù)據(jù)提供了具有實(shí)時(shí)特征的端對(duì)端傳送服務(wù),常應(yīng)用于流媒體系統(tǒng)。每一個(gè)RTP數(shù)據(jù)報(bào)都由頭部(Header)和負(fù)載(Payload)兩個(gè)部分組成,并且通常使用UDP來(lái)進(jìn)行多媒體數(shù)據(jù)的傳輸。在進(jìn)行網(wǎng)絡(luò)傳輸之前,要先通過(guò)emac_mii_init( )函數(shù)完成對(duì)以太網(wǎng)協(xié)議的初始化,主要包括emac_poll( )函數(shù)對(duì)以太網(wǎng)控制器的驅(qū)動(dòng)。運(yùn)用mii_phy_getReg( )函數(shù)讀取PHY芯片的寄存器值,同時(shí)利用mii_phy_setReg( )函數(shù)完成對(duì)PHY的設(shè)置,然后由UDPCtrl_init( )、bind( )和socket( )函數(shù)完成數(shù)據(jù)的打包處理。ARM核在接收到編碼完成的數(shù)據(jù)后,先創(chuàng)建時(shí)間戳函數(shù)TSC( ),然后利用RTP_sendH264(uint8_t*pu8Buf,int32_t iLen,int32_t uTime90K,struct udp_pcb*sock,struct ip_addr*pcPeerAddr,uint16_t u16PeerPort)函數(shù)將編碼完成的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳送到目的IP。具體流程圖如圖5所示。
1.2.4 上位機(jī)程序設(shè)計(jì)
上位機(jī)程序的目的是為了在PC機(jī)上,VLC視頻播放器能夠準(zhǔn)確地找到H.264流媒體的來(lái)源,以便網(wǎng)絡(luò)傳輸過(guò)來(lái)的視頻能夠成功顯示。具體腳本程序如下:
m=video 6000 RTP/AVP 96
a=rtpmap:96 H264/90000
a=profile-level-id=42A01E;packetization-mode=1;sprop-parameter-sets=H264
m行為媒體行,video為媒體名表示支持視頻類(lèi)型,6000為socket包發(fā)送方的公網(wǎng)端口號(hào),RTP/AVP指明流媒體傳輸協(xié)議,96指凈荷類(lèi)型編號(hào)。a行為媒體屬性行,編碼類(lèi)型為H264,時(shí)鐘頻率是90 000 MHz,packetization-mode=1說(shuō)明必 須使 用非交錯(cuò)封 包模式,profile-level-id參數(shù)用來(lái)指示H.264流的文件類(lèi)型和級(jí)別,prop-parameter-sets參數(shù)用于傳輸H.264序列參數(shù)集及圖像參數(shù)NAL單元。
圖5 網(wǎng)絡(luò)傳輸程序流程圖
圖6 圖像對(duì)比
將系統(tǒng)硬件連接完成后,啟動(dòng)卡板。在CCS3.3軟件下仿真器配置完成后先將系統(tǒng)控制程序加載到ARM926中,然后再下載視頻壓縮編碼程序至DSP核中。程序運(yùn)行時(shí),截屏獲取VLC視頻播放器查看到的視頻流圖像,并與采集到的原始圖像作對(duì)比,如圖6(a)、圖6(b)所示。通過(guò)圖片的對(duì)比可以發(fā)現(xiàn)編碼后的圖片質(zhì)量較好,在視頻傳輸過(guò)程中雖存在一點(diǎn)延時(shí),但仍能達(dá)到實(shí)時(shí)性的要求,滿足視頻監(jiān)控的需要。
另外,本次實(shí)驗(yàn)視頻采集的時(shí)間為3 min,視頻的輸入格式為PAL,幀率為25幀/s,分辨率為720像素×576像素,沒(méi)有經(jīng)過(guò)壓縮的視頻數(shù)據(jù)率為125 Mbit/s,計(jì)算后可知:未壓縮的數(shù)據(jù)量為2812.5 Mbyte。在編碼完成的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸時(shí),設(shè)置的碼率為800 kbit/s。由碼率的計(jì)算公式[碼率](kbit/s)=[文件大小](字節(jié))X8/[時(shí)間](s)/1 000,可以得到壓縮后的視頻數(shù)據(jù)量?jī)H為18 Mbyte,因此壓縮比為156.25。
本文基于DM6467及Windows設(shè)計(jì)了一套視頻實(shí)時(shí)壓縮與傳輸系統(tǒng)。實(shí)驗(yàn)結(jié)果顯示,視頻實(shí)時(shí)性高、壓縮比達(dá)到了150以上,大大減小了網(wǎng)絡(luò)傳輸?shù)膲毫?。編碼后的數(shù)據(jù)網(wǎng)絡(luò)傳輸時(shí)性能穩(wěn)定,畫(huà)面清晰,滿足視頻數(shù)據(jù)實(shí)時(shí)傳輸?shù)囊?。在Windows軟件平臺(tái)下,系統(tǒng)的搭建、開(kāi)發(fā)更加靈活便捷,根據(jù)個(gè)人的需要可更改碼率獲得不同壓縮率的視頻。鑒于該系統(tǒng)的實(shí)時(shí)性及高壓縮率,其在視頻會(huì)議、智能家居以及視頻監(jiān)控等視頻傳輸領(lǐng)域有著廣闊的發(fā)展。
[1] 劉勇,張忠偉,董文濤,等. 基于DM642的視頻采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用,2013,33(S2):302-304.
[2] 趙德偉,王永超. 基于多DSP與FPGA的視頻處理平臺(tái)硬件設(shè)計(jì)[J]. 電視技術(shù),2014,38(7):75-80.
[3] 施現(xiàn)偉. 基于ARM11的遠(yuǎn)程視頻監(jiān)控系統(tǒng)設(shè)計(jì)[D]. 哈爾濱:哈爾濱理工大學(xué),2013.
[4] 韓文俊,張艷艷,任國(guó)強(qiáng),等. 基于雙DSP的實(shí)時(shí)高清H.264視頻編碼器實(shí)現(xiàn)[J]. 電視技術(shù),2010,34(5):33-36.
[5] 李忠. 基于片上系統(tǒng)的VC-1高清視頻編碼器的實(shí)現(xiàn)研究[D]. 南京:南京郵電大學(xué),2011.
[6] 朱衍明. 基于TMS320DM6467的多格式視頻處理技術(shù)的研究[D]. 南京:南京理工大學(xué),2013:14-21.
[7] Texas Instruments.SPRUTMS320C64x DSP Vi deo Port/VCXO Interpolated Control(VIC)Port Reference Guide[R/OL]. (2007-06)[2013-02-01]. http://www.ti.com/lit/ug/spru629g/sp-ru629g.df.
[8] 郭昕,蘇寒松. 基于TMS320DM6446的X264編碼器的移植和優(yōu)化[J]. 電子器件,2012,35(4):465-469.
[9] 張晶,戴明,孫麗娜,等. 基于DM6467T多路視頻實(shí)時(shí)采集與顯示系統(tǒng)設(shè)計(jì)[J]. 電視技術(shù),2014,38(7):217-220.
[10] 嚴(yán)勝剛,王培培. 基于FPGA的數(shù)字視頻接口轉(zhuǎn)換器設(shè)計(jì)[J]. 計(jì)算機(jī)測(cè)量與控制,2012,21(2):464-465.
Design Real-Time Video Compression and Transmission System Based on DM6467*
ZHANGShuo,YANGTing,LIBo*
(Key Laboratory of Instrumentation Science and Dynamic Measurement,Ministry of Education,North University,Taiyuan 030051,China)
For a large number of video data transmission delay and Caton’s problem,a video compression and transmission system based on a TMS320DM6467 processor as the hardware core,a Windows operating system as the core of software has been designed. System uses a CCD camera and decoder TVP5150 to complete video capture. The H.264 video encoding technology enables real-time to realize video compression using RTP(Real-time Transport Protocol)protocol to transmit the compression-encoded video data to the upper computer via LAN,after the configuration of VLC(Video LAN Creator)the sytem can receive the video transmission streaming. Under conditions to ensure the clarity of the video,the system test results show that,high real-time video,video network transmission speed meet,the needs of the video surveillance. The compression ratio is greater than 150.
video transmission;TMS320DM6467;H.264;RTP;Windows
項(xiàng)目來(lái)源:山西省科學(xué)技術(shù)發(fā)展計(jì)劃項(xiàng)目(20100321057);國(guó)家自然科學(xué)基金項(xiàng)目(61471325)
2016-04-12 修改日期:2016-05-06
TN949.197
A
1005-9490(2017)03-0617-05
C:6140;6430
10.3969/j.issn.1005-9490.2017.03.020