嵌入式視頻網(wǎng)絡(luò)服務(wù)器的開發(fā)及其應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘 要:本文詳細(xì)介紹了一套嵌入式視頻網(wǎng)絡(luò)服務(wù)器系統(tǒng):視頻數(shù)據(jù)壓縮部分由MPEG-X協(xié)議的ASIC芯片完成,嵌入式CPU只負(fù)責(zé)控制。它采用了壓縮與控制分離的方式,提高了系統(tǒng)的靈活性和整體性價(jià)比。最后,本文給出了該視頻服務(wù)器在校園親子監(jiān)控系統(tǒng)中的一個(gè)應(yīng)用實(shí)例。
關(guān)鍵詞:MPEG-X; RISC CPU; 親子監(jiān)控系統(tǒng)
引言
近幾年隨著嵌入式技術(shù)的蓬勃發(fā)展,出現(xiàn)了基于嵌入式視頻服務(wù)器技術(shù)的遠(yuǎn)程網(wǎng)絡(luò)視頻監(jiān)控設(shè)備。嵌入式視頻服務(wù)器的主要工作原理是:模擬視頻信號(hào)經(jīng)A/D后,采用MPEG-2或MPEG-4協(xié)議壓縮,然后將壓縮后的視頻數(shù)據(jù)打包,傳送到網(wǎng)絡(luò)上。用戶可以直接用瀏覽器或者客戶端專用軟件觀看視頻服務(wù)器上的圖像,授權(quán)用戶還可以控制攝像機(jī)云臺(tái)鏡頭的動(dòng)作或?qū)υ撉度胧较到y(tǒng)進(jìn)行配置。壓縮部分可以采用專用的硬件芯片或由嵌入式CPU進(jìn)行軟壓縮實(shí)現(xiàn)。如果采用后者,則要求該CPU有較強(qiáng)的運(yùn)算功能。
嵌入式視頻網(wǎng)絡(luò)服務(wù)器主要可以應(yīng)用于城域教育網(wǎng)、遠(yuǎn)程網(wǎng)上培訓(xùn)、網(wǎng)絡(luò)電視/電臺(tái)、實(shí)時(shí)數(shù)字監(jiān)控、遠(yuǎn)程視頻會(huì)議等領(lǐng)域。
軟壓縮視頻服務(wù)器
已有的視頻服務(wù)器采用CPU軟壓縮方式(見圖1)。4路模擬視頻數(shù)據(jù)接入到視頻解碼器上,然后解碼器將數(shù)字化后的視頻流數(shù)據(jù)傳送給CPU——PNX1300, MPEG壓縮協(xié)議存儲(chǔ)在Flash上,PNX1300將視頻數(shù)據(jù)壓縮后,輸出給以太網(wǎng)控制芯片,然后視頻數(shù)據(jù)通過RJ-45端口上傳到以太網(wǎng)上。
PNX1300是Philips公司專為多媒體應(yīng)用而優(yōu)化設(shè)計(jì)的高性能低功耗芯片,其內(nèi)核為32位通用VLIW結(jié)構(gòu)的DSP 。可以較好地實(shí)現(xiàn)音視頻壓縮和解壓縮算法。
但軟壓縮速度比硬壓縮慢,而且要實(shí)現(xiàn)MPEG-X壓縮協(xié)議,工作量非常大。另外,協(xié)議升級(jí)代價(jià)也很大。
硬壓縮視頻服務(wù)器
針對(duì)軟壓縮視頻服務(wù)器的這些缺點(diǎn),本文設(shè)計(jì)開發(fā)了采用硬壓縮芯片的視頻服務(wù)器,如圖2所示。
多路視頻數(shù)據(jù)的采集、A/D及傳輸格式
攝像機(jī)的模擬視頻信號(hào)輸入到視頻解碼器后,轉(zhuǎn)換為數(shù)字視頻信號(hào)。以Philips的SAA7113為例,說明視頻解碼器解碼后的數(shù)據(jù)格式。
SAA7113支持NTSC/PAL/SECAM制式,A/D精度是9位,并行8位輸出。在PAL制式下每一幀模擬視頻信號(hào)數(shù)字化后的輸出圖像大小是1728×625,實(shí)際有效像素?cái)?shù)是720×576,每一秒為25幀,所以視頻輸出帶為27MHz。每一個(gè)時(shí)鐘周期(1/27MHz)并行輸出一個(gè)字節(jié),每?jī)蓚€(gè)時(shí)鐘周期輸出一個(gè)完整的像素點(diǎn),即每個(gè)像素點(diǎn)占用2個(gè)字節(jié)。輸出的數(shù)據(jù)格式遵循ITU-R656標(biāo)準(zhǔn),即YUV為4:2:2,所以每個(gè)像素點(diǎn)亮度信號(hào)占8位,兩個(gè)色度信號(hào)共占8位。除了輸出數(shù)字像素外,A/D還需傳輸同步時(shí)鐘信號(hào)。CPU可以通過I2C總線設(shè)置SAA7113的相關(guān)寄存器,以對(duì)轉(zhuǎn)化后的數(shù)字圖像進(jìn)行參數(shù)控制。
打包和視頻信號(hào)的本地顯示
ADC將多路模擬視頻圖像數(shù)字化后,為了便于壓縮,需要將多路圖像打包成一路數(shù)據(jù),可以用AT4012來實(shí)現(xiàn)。
多路數(shù)據(jù)打包器將4路數(shù)字視頻信號(hào)整合成1路視頻數(shù)據(jù)流,并在每路視頻數(shù)據(jù)頭上打上ID號(hào),以供壓縮芯片分別壓縮。同一時(shí)間它只能為某一路視頻數(shù)據(jù)打包。例如當(dāng)為第1路數(shù)據(jù)打包時(shí),暫時(shí)還不能處理其他3路數(shù)據(jù),這時(shí)它將其它3路數(shù)據(jù)暫存到SDRAM中。待完成當(dāng)前數(shù)據(jù)的打包后,再將SDRAM中的數(shù)據(jù)取出處理。
除了將多路數(shù)據(jù)打包外, AT4012還有畫面分割功能,即給AT4012接上視頻D/A芯片后,可將1路復(fù)合數(shù)字視頻流轉(zhuǎn)換為模擬圖像, 這樣用戶就可以在本地的1個(gè)監(jiān)視器上看到4路攝像機(jī)攝到的圖像,如果在多路打包器前接9路攝像機(jī),用戶就可以在一個(gè)監(jiān)視器上看到9個(gè)畫面。[!--empirenews.page--]
視頻數(shù)據(jù)的壓縮
多路數(shù)據(jù)打包器將數(shù)據(jù)整合為一路后,輸入給專用硬件壓縮芯片處理。以AT2021(集成MPEG-2協(xié)議)芯片為例,硬件壓縮算法由幾部分構(gòu)成。
視頻輸入接口:提供視頻信號(hào)輸入接口,并進(jìn)行一些壓縮前的預(yù)處理以提高壓縮比。
運(yùn)動(dòng)預(yù)測(cè)補(bǔ)償單元:根據(jù)MPEG推薦的BMA算法進(jìn)行圖像的運(yùn)動(dòng)預(yù)測(cè)補(bǔ)償壓縮。
DCT/量化單元:為每幅圖像的宏塊進(jìn)行DCT和逆DCT變換,然后再依據(jù)試驗(yàn)得到的量化矩陣對(duì)DCT系數(shù)進(jìn)行量化。
VLC和熵編碼單元:對(duì)量化后的DCT直流系數(shù)進(jìn)行DPCM編碼,以及對(duì)量化后的DCT交流系數(shù)進(jìn)行變長(zhǎng)編碼,最后再對(duì)交直流系數(shù)進(jìn)行熵編碼。
系統(tǒng)CPU部分及其它
多路視頻數(shù)據(jù)壓縮以后,需要輸入到CPU中打包,以發(fā)送到網(wǎng)絡(luò)上。
CPU選取三星公司的32位RISC芯片S3C4510, 該芯片是專為嵌入式以太網(wǎng)應(yīng)用開發(fā)的,內(nèi)核為ARM7TDMI,支持高代碼密度的THUMB指令集。通過其外設(shè)I2C總線,可以控制前端的視頻采集、壓縮模塊芯片的工作模式,如可以設(shè)置視頻解碼器解碼時(shí)的亮度、色度、飽和度控制寄存器,S3C4510支持UART,外接上RS-232口后,可以將視頻服務(wù)器與主機(jī)相連以進(jìn)行主機(jī)與服務(wù)器的數(shù)據(jù)交換。
S3C4510支持10M、100M單工和雙工模式的以太網(wǎng)傳輸。在單工模式下,它支持CSMA/CD協(xié)議,在雙工模式下,支持IEEE 802.3的MAC層。因此還需給S3C4510連接上控制網(wǎng)絡(luò)物理層的芯片,如Intel的LXT970A,從而構(gòu)成了以太網(wǎng)從應(yīng)用層到物理層完整的網(wǎng)絡(luò)結(jié)構(gòu)。
圖3中,壓縮芯片以AT2021、CPU以S3C4510為例,給出壓縮芯片與CPU的接口。
S3C4510通過地址總線LA[0..3]尋址AT2021的相關(guān)寄存器,通過數(shù)據(jù)總線LD[0..15]讀寫數(shù)據(jù)以設(shè)置AT2021的工作參數(shù)、監(jiān)控AT2021內(nèi)核的工作狀況,并獲取壓縮后的數(shù)據(jù)。例如可以設(shè)置壓縮后的視頻輸出流的格式為IPP或IBBP。
S3C4510將數(shù)據(jù)取到內(nèi)存后,按照每路視頻數(shù)據(jù)前的ID號(hào),區(qū)分當(dāng)前數(shù)據(jù),然后給數(shù)據(jù)分塊打包,設(shè)置好其IP目的地址,然后傳送到網(wǎng)絡(luò)上,遠(yuǎn)端就可以接收。當(dāng)然打包后的數(shù)據(jù)也可以直接存儲(chǔ)到本地的硬盤中,以供以后查詢,即硬盤錄像機(jī)(DVR)。
視頻服務(wù)器功能擴(kuò)展
由于采用壓縮芯片和CPU分離設(shè)計(jì),極大地提高了系統(tǒng)靈活性。將圖2中的CPU替換為PCI9054總線主控芯片,就變成基于PC的多路實(shí)時(shí)圖像采集壓縮卡,這是基于PC的硬盤錄像機(jī)的關(guān)鍵設(shè)備。
視頻服務(wù)器軟件體系
由于本系統(tǒng)的RISC芯片核是ARM7TDMI,沒有內(nèi)存管理模塊(MMU),所以Linux選用mClinux。它具有強(qiáng)大的網(wǎng)絡(luò)功能,支持PPP、Ethernet等多種網(wǎng)絡(luò)連接方式,包括完整的TCP/IP協(xié)議棧及大量的其他協(xié)議。嵌入式Linux軟件開發(fā)平臺(tái)的系統(tǒng)結(jié)構(gòu)如圖4所示。
在某些實(shí)時(shí)性要求較高的場(chǎng)合,需要加入一些實(shí)時(shí)控制補(bǔ)丁。標(biāo)準(zhǔn)的Linux內(nèi)核沒提供嵌入式應(yīng)用程序所需要的可預(yù)測(cè)響應(yīng)時(shí)間,這主要是過長(zhǎng)的中斷反應(yīng)時(shí)間和任務(wù)切換反應(yīng)時(shí)間造成的。在一個(gè)標(biāo)準(zhǔn)的Linux內(nèi)核里,系統(tǒng)調(diào)用或者運(yùn)行在內(nèi)核里的其他代碼會(huì)不停地運(yùn)行,直到完成或者直到代碼主動(dòng)地對(duì)其他線程發(fā)起控制。在這期間,內(nèi)核不會(huì)在線程之間切換。線程切換時(shí),漫長(zhǎng)的反應(yīng)時(shí)間不能為多線程的實(shí)時(shí)應(yīng)用程序所接受。
搶先任務(wù)補(bǔ)丁改變了這個(gè)狀況:它允許線程幾乎在內(nèi)核里的任何地方以及任何時(shí)間被搶先運(yùn)行。它通過用對(duì)稱多處理(SMP)自旋塊(spinlock)來指示內(nèi)核中關(guān)鍵的非搶先任務(wù)區(qū)域?qū)崿F(xiàn)。內(nèi)核的所有其他區(qū)域都被認(rèn)為是搶先任務(wù)的。
應(yīng)用實(shí)例
在幼兒園或小學(xué)教室里安裝視頻服務(wù)器,學(xué)生家長(zhǎng)就可以通過互聯(lián)網(wǎng)觀看到孩子在校學(xué)習(xí)生活情況。如圖5所示,在每個(gè)教室里安裝一臺(tái)攝像機(jī),在操場(chǎng)上安裝2臺(tái)攝像機(jī),然后將攝像機(jī)連接到視頻服務(wù)器上,視頻服務(wù)器將壓縮后的多路圖像上傳到網(wǎng)絡(luò)。家長(zhǎng)就可以觀看孩子在校情況,同時(shí)也可以通過視頻服務(wù)器外接監(jiān)視器觀看。視頻網(wǎng)絡(luò)服務(wù)器也可以將圖像存儲(chǔ)在本地硬盤中,家長(zhǎng)通過訪問校方的視頻服務(wù)器實(shí)現(xiàn)視頻點(diǎn)播(VOD)。
結(jié)語
采用專用壓縮芯片進(jìn)行數(shù)據(jù)壓縮,既降低了視頻服務(wù)器的開發(fā)難度和成本,也易于壓縮協(xié)議升級(jí)。隨著嵌入式技術(shù)快速發(fā)展和普及,嵌入式設(shè)備將在整個(gè)后PC時(shí)代越來越多地替代傳統(tǒng)PC,滲透到工業(yè)生產(chǎn)和人們的日常生活中去。■