基于DSP的H264數(shù)字視頻服務器設計
0 引言
本文引用地址:http://cafeforensic.com/article/201609/304161.htm隨著科技的日新月異,視頻監(jiān)控應用得到了飛速發(fā)展。視頻監(jiān)控以其直觀、方便、信息內(nèi)容豐富而廣泛應用于許多場合。近年來,隨著互聯(lián)網(wǎng)的大范圍普及以及計算機網(wǎng)絡和圖像處理、信息傳輸技術的發(fā)展,視頻監(jiān)控技術也有了長足的發(fā)展。視頻監(jiān)控已經(jīng)滲透到教育、政府、娛樂場合、醫(yī)院、酒店、運動場館、城市治安等多種領域。目前安防監(jiān)控的要求對于設備提出了較高的要求:比如對于傳輸?shù)膶崟r性,畫面的質(zhì)量的要求。本文實現(xiàn)一個基于DSP的H264視頻監(jiān)控服務器的(DVS)設計,它具有較高的壓縮比,低誤碼率以及較低的失真對視頻進行編碼,由TCP/IP協(xié)議實現(xiàn)了視頻的網(wǎng)絡輸出,可以達到視頻傳輸?shù)膶崟r性。
1 系統(tǒng)設計
如圖1所示,本系統(tǒng)采用TI的DM6467處理器,DSP架構的硬件平臺系列,具有強大的計算能力,在低功耗的前提下可達到1.2GHz,以及包含了H26x的編解碼庫,可以滿足對視頻算法的需求,此外,此平臺支持多種外設,諸如PCI、LAN、以及各種視屏輸入,廣泛應用于視頻會議、監(jiān)控系統(tǒng)、機頂設備。因此,此平臺可以用來設計H264的視頻服務器。
視頻服務器的系統(tǒng)構架主要包括視頻采集模塊、視屏編碼模塊以及網(wǎng)絡傳輸模塊。
在系統(tǒng)上電之后,加載程序編譯成功的.out文件,初始化DSP/BIOS系統(tǒng),以及視頻編碼庫。視頻采集處理過程如下:攝像機的PAL視頻通過AD轉(zhuǎn)為數(shù)字信號,并且通過內(nèi)部算法轉(zhuǎn)為YUV(4:2:2),然后通過接口EMIF把數(shù)據(jù)傳遞至存儲器EEPROM中,然后DSP采用視頻編碼庫中的H264算法對數(shù)據(jù)進行壓縮,通過TCP協(xié)議將壓縮后的視頻信號通過以太網(wǎng)LAN傳輸出去,從而構成了視頻服務器,而客戶端只需要按照TCP協(xié)議接收數(shù)據(jù)并解碼,就可以實時顯示圖像。
1.1 視頻采集模塊
圖3為視頻采集模塊的原理圖,CVBS為視頻輸入,可以將模擬視頻信號轉(zhuǎn)換為YUV分量,輸出為ITU—R BT.656,其中對該編碼器的配置是通過IIC總線將指令寫入內(nèi)部寄存器,就可以正常采取視頻信號并把數(shù)據(jù)傳給存儲器做進一步的處理。
在此系統(tǒng)中,使用了ROM對視頻信號做緩存以及編碼處理(圖4),芯片通過CS、OE來控制芯片并對其做讀取操作。它和DSP的連接示意圖如圖4所示。
1.2 H264算法
H264具有壓縮率高以及失真率低的優(yōu)點,其實現(xiàn)過程如下:1)把當前的圖像劃分成若干個子模塊,以子模塊作為編碼的基本單元;2)通過當前幀減去預測值經(jīng)過變換、量化、重排、熵編碼,從而加強了壓縮率;3)采用了時域運動補償?shù)姆椒ǎ瑥亩鴾p少了冗余以及增強信道傳輸?shù)娜蒎e性。
DM64xx芯片本身具有H264編碼庫,在開發(fā)的時候只需加載h264enc.lib并調(diào)用函數(shù)int h264.enc即可,參數(shù)聲明如下:
Unsigned char*pic原始圖像首地址
Unsigned char*ostream編碼后輸出數(shù)據(jù)流緩沖地址
int channel對應的編碼通道號,不重疊的正整數(shù)
int *frametype幀類型
1.3 TCP協(xié)議以及IEEE802.3以太網(wǎng)
控制傳輸協(xié)議(TCP)是一種可靠的、基于字節(jié)流的傳輸層通信協(xié)議。高可靠性是通過發(fā)送數(shù)據(jù)前先建立連接,結束數(shù)據(jù)傳輸時關閉連接,在數(shù)據(jù)傳輸過程中進行超時重發(fā)、流量控制和數(shù)據(jù)確認,對亂序數(shù)據(jù)進行重排校驗等機制來實現(xiàn)的。利用協(xié)議網(wǎng)絡通信,通信進程間相互作用的主要模式是服務器,客戶機模式通信的具體編程由套接字來實現(xiàn),套接字是網(wǎng)絡程序設計接口,分為流式套接字和用戶數(shù)據(jù)報,流式套接字提供一種面向連接的、可靠的雙向數(shù)據(jù)傳輸服務,實現(xiàn)數(shù)據(jù)無差錯無重復的發(fā)送,流式套接字內(nèi)設流量控制,被傳輸?shù)臄?shù)據(jù)看做是無記錄邊界的字節(jié)流在協(xié)議族中,使用TCP協(xié)議實現(xiàn)字節(jié)流的傳輸,當要發(fā)送大批量數(shù)據(jù)或者對數(shù)據(jù)傳輸有較高的要求時,使用流套接字。
在本設計中,如圖5所示,首先創(chuàng)建Socket,綁定IP地址和端口值,協(xié)議設置為IPv4同時設定掩碼值,設定最大字節(jié)數(shù)目,然后創(chuàng)建連接請求,若連接成功則從緩存區(qū)讀取若干字節(jié)發(fā)送出去,否則的話將阻塞在該進程中。此外為了保證視頻的流暢性,在網(wǎng)絡情況不好的情況下進行丟幀處理,同時在緩存區(qū)設置標志位,當緩存區(qū)的數(shù)據(jù)全部被套接字處理之后,該標志位設置為有效,從而清理緩存區(qū),從而加載新的視頻數(shù)據(jù)做進一步處理。
該處理器外設的以太網(wǎng)結構如圖6所示。在DSP處理器和EMAC控制器之間用設備總線相連,EMAC控制器可以使用DSP內(nèi)存,并且控制中斷和復位,及內(nèi)存使用的優(yōu)先級。另外EMAC單元還可以提供網(wǎng)絡和處理器內(nèi)核的接口,支持1 0、100Mpbs數(shù)據(jù)傳輸。MDIO可以查詢和控制以太網(wǎng)PHY,它可以配置以太網(wǎng)的參數(shù),從而達到糾錯的目的,同時又可以獲取數(shù)據(jù)傳輸結果。
2 客戶端的實現(xiàn)
客戶端無論是Windows或者Linux系統(tǒng)都具有Socket API,可以實現(xiàn)TCP傳輸協(xié)議,首先創(chuàng)建Socket并連接服務器端,并讀取來buffer的數(shù)據(jù),在接收到數(shù)據(jù)之后,需要通過解碼將視頻顯示出來,通過加載動態(tài)鏈接庫,調(diào)用視頻播放器的API接口函數(shù)即可。Windows程序加載DLL的流程如圖7所示,客戶端工作流程如圖8所示。
評論