《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于達(dá)芬奇技術(shù)的嵌入式網(wǎng)絡(luò)攝像機(jī)系統(tǒng)研究
基于達(dá)芬奇技術(shù)的嵌入式網(wǎng)絡(luò)攝像機(jī)系統(tǒng)研究
來源:微型機(jī)與應(yīng)用2011年第22期
肖 軍,徐熙平,李沛松
(長春理工大學(xué) 光電工程學(xué)院,吉林 長春130022)
摘要: 達(dá)芬奇技術(shù)是一種專門針對數(shù)字視頻應(yīng)用和信號處理的解決方案,它把算法處理和應(yīng)用層相分離,大大簡化了程序編寫。介紹了一種基于達(dá)芬奇技術(shù)的網(wǎng)絡(luò)攝像機(jī)設(shè)計方案,詳細(xì)闡述了該系統(tǒng)的視頻采集、H.264編碼實現(xiàn)、RTSP服務(wù)器調(diào)度和RTP發(fā)送。
Abstract:
Key words :

摘  要: 達(dá)芬奇技術(shù)是一種專門針對數(shù)字視頻應(yīng)用和信號處理的解決方案,它把算法處理和應(yīng)用層相分離,大大簡化了程序編寫。介紹了一種基于達(dá)芬奇技術(shù)的網(wǎng)絡(luò)攝像機(jī)設(shè)計方案,詳細(xì)闡述了該系統(tǒng)的視頻采集、H.264編碼實現(xiàn)、RTSP服務(wù)器調(diào)度和RTP發(fā)送。
關(guān)鍵詞: 達(dá)芬奇技術(shù);H.264;RTSP服務(wù)器;RTP

    隨著多媒體技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)攝像機(jī)已經(jīng)廣泛運(yùn)用于網(wǎng)絡(luò)監(jiān)控和視頻會議領(lǐng)域中。網(wǎng)絡(luò)攝像機(jī)的發(fā)展趨勢集視頻采集、視頻壓縮、視頻發(fā)送為一體,并且按照需求添加相應(yīng)圖像識別、圖像疊加、運(yùn)動偵測、云臺控制和報警等功能。因此要求處理芯片具有強(qiáng)大的控制能力和數(shù)據(jù)處理能力。TI公司推出了達(dá)芬奇技術(shù),專門應(yīng)用于多媒體系統(tǒng),它把圖像處理的編碼算法封裝成標(biāo)準(zhǔn)API,應(yīng)用程序調(diào)用這些API函數(shù)即可實現(xiàn)圖像的編碼處理。
    TMS320DM368芯片是基于達(dá)芬奇技術(shù)的音視頻數(shù)字媒體片上系統(tǒng)(DMSoC)[1],它以ARM926EJ-STM為內(nèi)核,擁有兩個視頻圖像協(xié)處理器(HDVICP和MJCP),廣泛運(yùn)用于中低端音視頻處理系統(tǒng)。本系統(tǒng)采用DM368來構(gòu)建網(wǎng)絡(luò)攝像機(jī)視頻服務(wù)器,通過訪問服務(wù)器可實時查看監(jiān)控視頻。
1 系統(tǒng)總體方案設(shè)計
    TMS320DM368只有一個ARM內(nèi)核,通過嵌入Linux系統(tǒng)來實現(xiàn)圖像的采集處理和網(wǎng)絡(luò)通信。系統(tǒng)總體框圖如圖1所示,CMOS圖像采集模塊把采集的數(shù)字圖像發(fā)送給TMS320DM368主芯片,然后調(diào)用算法API函數(shù)實現(xiàn)H.264編碼。UDP接收負(fù)責(zé)接收參數(shù)控制命令,經(jīng)過命令解析把參數(shù)傳遞給對應(yīng)模塊。RTSP負(fù)責(zé)等待客戶端訪問,然后創(chuàng)建用于RTP數(shù)據(jù)包發(fā)送的套接字。

    為了實現(xiàn)系統(tǒng)功能,應(yīng)用程序主要分為以下幾個線程:CMOS視頻采集線程、視頻編碼線程、RTSP任務(wù)調(diào)度線程、RTP視頻數(shù)據(jù)發(fā)送線程、UDP命令接收線程和命令解析線程。CMOS視頻采集線程負(fù)責(zé)按要求初始化CMOS芯片,采集視頻圖像;視頻編碼線程調(diào)用算法API接口,實現(xiàn)數(shù)據(jù)圖像的編碼壓縮;RTSP任務(wù)調(diào)度線程創(chuàng)建TCP套接字,等待客戶端的訪問連接,然后把所訪問客戶端的地址信息存放在調(diào)度任務(wù)中;RTP視頻數(shù)據(jù)發(fā)送線程把視頻數(shù)據(jù)通過RTP協(xié)議發(fā)送給指定客戶端;UDP命令接收線程負(fù)責(zé)接收客戶端發(fā)送的控制命令,然后發(fā)送給命令解析線程;命令解析線程把接收到的命令解析處理,把參數(shù)傳遞給對應(yīng)模塊。
2 視頻采集和編碼
2.1 視頻采集模塊

    視頻采集選用MT9P031型CMOS數(shù)字圖像傳感器芯片,感光面為1/2.5英寸,最大像素為2592×1944。該芯片利用像素跳躍和像素混合技術(shù),在不改變視場的情況下減少輸出圖像分辨率。它還提供I2C接口,主控器可以通過I2C接口設(shè)置CMOS輸出圖像的屬性,并且還集成了ADC轉(zhuǎn)換器,直接輸出12 bit數(shù)字圖像數(shù)據(jù),在時鐘和行場同步信號作用下輸出每一幀圖像,如圖2所示。每一個場同步信號FV有效(高)表示一幀圖像,每一個場同步信號LV有效(高)表示該幀的一行,在行場同步都有效時每一個像素時鐘脈沖的Dout輸出就是對應(yīng)像素的RGB值。若輸出一幀720 p的圖像,像素大小為1280×720,每一個FV高電平區(qū)間就有720個LV高電平,在每一個LV高電平區(qū)間又有1 280個PCLK時鐘脈沖。

    TMS320DM368有一個ISIF接口,專門用于接收數(shù)字的視頻數(shù)據(jù),芯片內(nèi)部集成了ISIF圖像接收模塊,每接收到一幀完整的數(shù)據(jù),芯片就會產(chǎn)生一個ISIF_INT中斷信號,在中斷響應(yīng)程序里面可以把數(shù)據(jù)存放到指定地址。MT9P031和TMS320DM368的連接如圖3所示。MT9P031芯片的時鐘源由DM368GIO37引腳輸出提供,頻率為24 MHz,GIO91和GIO93引腳分別接復(fù)位和使能端。

2.2 H.264編碼模塊
    對所采集的視頻數(shù)據(jù)進(jìn)行編碼是通過調(diào)用Codec Engine算法包來實現(xiàn)的[2]。Codecs Engine是一組用來調(diào)用xDAIS算法的API,不管是在ARM端還是在DSP端,不管操作系統(tǒng)的差異,調(diào)用的API函數(shù)都是一致的。用戶只需要配置相應(yīng)的*.cfg文件即可指定需要調(diào)用的算法,然后在應(yīng)用程序中即可調(diào)用API函數(shù)進(jìn)行算法編解碼。
    H.264是一種高性能的視頻編解碼標(biāo)準(zhǔn),繼承了H.263和MPEG1/2/4視頻編碼器的優(yōu)點。H.264標(biāo)準(zhǔn)中定義了兩個層次:視頻編碼層(VCL)和網(wǎng)絡(luò)抽象層(NAL),VCL負(fù)責(zé)高效的數(shù)字視頻數(shù)據(jù)壓縮,NAL提供適當(dāng)?shù)慕涌趯?shù)據(jù)進(jìn)行打包和傳送。
    為了得到H.264格式的視頻流,本系統(tǒng)采用的H.264算法為TI發(fā)布的Codec Engine,配置alg_server.cfg文件來實現(xiàn)對已經(jīng)編譯算法的接口聲明,文件配置如下:
    var H264ENC=xdc.useModule
('ti.sdo.codecs.h264enc.ce.H264ENC'); //指定調(diào)用的算法
    var myEngine=Engine.create("alg_server", [{name: "h264enc",
mod: H264ENC, local: true, groupId: 1}]);
    其中,name為調(diào)用算法的名字;mod用來標(biāo)識實際的算法實現(xiàn)模塊;loacl指定算法運(yùn)行在ARM端(true)或者DSP端(false)。
    在應(yīng)用程序中調(diào)用的接口函數(shù)有:VIDENC1_create、VIDENC1_control、VIDENC1_process和VIDENC1_delete。
3 視頻服務(wù)器的建立
3.1 搭建RTSP服務(wù)器

    RTSP(Real Time Streaming Protocol)實時流協(xié)議是為了建立并控制一個或幾個時間同步的連續(xù)流媒體[3],它本身不發(fā)送連續(xù)媒體流,只充當(dāng)多媒體服務(wù)器的網(wǎng)絡(luò)遠(yuǎn)程控制。
    RTSP服務(wù)器需要預(yù)定義的方法有OPTION、DESCRIBE、SETUP、PLAY和TEARDOWN,在OPTION響應(yīng)中需要實現(xiàn)服務(wù)器基本信息描述,DESCRIBE響應(yīng)中需要向客戶端發(fā)送視頻的SDP信息,SETUP響應(yīng)需要根據(jù)客戶端端口信息建立RTP(實時傳輸協(xié)議)視頻發(fā)送套接字,PLAY響應(yīng)實現(xiàn)由RTP向客戶端發(fā)送視頻數(shù)據(jù),TEAREOWN響應(yīng)關(guān)閉對應(yīng)RTP套接字,并且釋放對應(yīng)的系統(tǒng)資源,流程如圖4所示。

 

 

3.2 RTP發(fā)送H.264視頻流
    RTP(Real-Time Transport Protocol)實時傳輸協(xié)議是在多點傳送或單點傳送的網(wǎng)絡(luò)服務(wù)上提供端對端的網(wǎng)絡(luò)傳輸功能,適用于實時數(shù)據(jù)傳輸?shù)膱龊蟍4]。RTP固定報頭格式如圖5所示。
    定義報頭的數(shù)據(jù)格式如下:
typedef  struct
{
    unsigned char  u4CSrcLen:4;//CC
    unsigned char  u1Externsion:1;//X
    unsigned char  u1Padding:1;//P
    unsigned char  u2Version:2;//V
    unsigned char  u7Payload:7;//PT
    unsigned char  u1Marker:1;//M
    unsigned short  u16SeqNum;//SN
    unsigned long  u32TimeStamp;//時間戳
    unsigned long  u32SSrc;//SSRC
}RtpHdr;
    經(jīng)編碼模塊輸出的H.264視頻流由一系列NAL單元(NALU)構(gòu)成,每個NALU由起始碼前綴(0x00000001)分隔開來[5],所以RTP發(fā)送線程可以在輸出編碼流中提取出每個NALU,經(jīng)過RTP協(xié)議轉(zhuǎn)換發(fā)送給客戶端。從編碼流中提取NALU單元流程如圖6所示。
    經(jīng)過驗證,對于720 p的H.264編碼輸出NALU負(fù)載長度不一,最大達(dá)到幾十字節(jié),從網(wǎng)絡(luò)性能方面考慮,不宜發(fā)送過大的RTP數(shù)據(jù)包,為此采用RFC3984標(biāo)準(zhǔn)的FU-A方法對NALU進(jìn)行分割,設(shè)置每個RTP包最大長度為1 400 B。于是對于不同負(fù)載長度的NALU,RTP發(fā)送的數(shù)據(jù)包格式如表1所示。

    定義結(jié)構(gòu)體:
typedef  struct
{
    unsigned char  u5Type:5;
    unsigned char  u2Nri:2;
    unsigned char  u1F:1;
}NaluHdr, FuIndic;
typedef  struct
{
    unsigned char  u5Type:5;
    unsigned char  u1R:1;
    unsigned char  u1E:1;
    unsigned char  u1S:1;
}FuHdr;
    其中,參數(shù)NaluHdr和FuIndic由NALU第一個字節(jié)決定,參數(shù)FuHdr用于設(shè)置分片發(fā)送的起始和結(jié)束RTP包。
    本文研究了基于達(dá)芬奇技術(shù)的網(wǎng)絡(luò)攝像機(jī)系統(tǒng),著重介紹了視頻采集、H.264算法的調(diào)用、RTSP視頻服務(wù)器以及利用RTP數(shù)據(jù)報發(fā)送。系統(tǒng)的應(yīng)用程序采用多線程技術(shù),提高了資源利用率和綜合性能。搭建的服務(wù)器專門用于H.264格式的視頻流發(fā)送,執(zhí)行效率高,便于維護(hù),對類似系統(tǒng)有很大的參考價值?;赥MS320DM368的網(wǎng)絡(luò)攝像機(jī)投入成本低,開發(fā)周期短,可以廣泛運(yùn)用于各種監(jiān)控系統(tǒng)。
參考文獻(xiàn)
[1] Texas Instruments Incorporated.TMS320DM368 Digital Media System-on-Chip(DMSoC)[EB/OL].[2011-06-30]. http://www.ti.com/lit/gpn/tms320dm368.
[2] Texas Instruments Incorporated.Codec Engine Application Developer User s Guide[A].http://www.ti.com/lit/ug/sprue67d/sprue67d.pdf.
[3] SCHULZRINNE H,RAO A,LANPHIER R.Real time streaming protocol(RTSP)[S].RFC 2326,1998.
[4] SCHULZRINNE H,CASNER S,F(xiàn)REDERICK R.RTP:A
     transport protocolfor real-time applications[S].RFC 3550,2003.
[5] 張多英.嵌入式視頻監(jiān)控傳輸系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機(jī)工程與設(shè)計,2010,31(4):724-728.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。