在Internet飛速發(fā)展和廣泛普及的今天,信息傳輸從兩方面加強(qiáng)力度:一是多媒體化;二是實(shí)時(shí)化。在此基礎(chǔ)上,高保真準(zhǔn)動(dòng)態(tài)圖像采集、壓縮和遠(yuǎn)程傳輸技術(shù)成為許多先進(jìn)國(guó)家計(jì)算機(jī)領(lǐng)域的重要研究課題。
一、系統(tǒng)總體結(jié)構(gòu)
在物理上,本系統(tǒng)分為發(fā)送站點(diǎn)和接收站點(diǎn)兩部分。在邏輯上,本系統(tǒng)分為圖像采集、壓縮和傳輸子系統(tǒng)、性能控制子系統(tǒng)。整個(gè)系統(tǒng)包含如下六個(gè)獨(dú)立的功能模塊。
(1)圖像采集、壓縮和傳輸子系統(tǒng) 圖像采集模塊,發(fā)送站點(diǎn)從攝像機(jī)讀原始視頻流,按一定的格式存儲(chǔ)為視頻數(shù)據(jù)。
圖像壓縮模塊,發(fā)送站點(diǎn)將視頻數(shù)據(jù)壓縮,為網(wǎng)絡(luò)傳輸作準(zhǔn)備。
視頻傳輸模塊,利用RTP和UDP協(xié)議將壓縮后的視頻數(shù)據(jù)發(fā)送到遠(yuǎn)程站點(diǎn)。
視頻解壓縮模塊,接收站點(diǎn)將接收到的壓縮數(shù)據(jù)用解壓縮算法還原成視頻數(shù)據(jù)。
(2)性能控制子系統(tǒng) 客戶/服務(wù)器同步模塊,使發(fā)送站點(diǎn)和遠(yuǎn)程接收站點(diǎn)在視頻格式和設(shè)置方面保持一致。
自適應(yīng)模塊,在信道傳輸率較差時(shí),能自動(dòng)啟動(dòng)自適應(yīng)功能,使系統(tǒng)的視頻傳輸適應(yīng)復(fù)雜的網(wǎng)絡(luò)情況。
二、系統(tǒng)設(shè)計(jì)中的關(guān)鍵技術(shù)和優(yōu)化策略
1、視頻采集技術(shù)分析和選擇 為了實(shí)時(shí)視頻采集,需要安裝相應(yīng)的視頻采集設(shè)備。即視頻采集卡和攝像頭等。并需要安裝相應(yīng)的驅(qū)動(dòng)軟件來支持這些設(shè)備的運(yùn)行。
操作系統(tǒng)提供了VFW(Video for Windows SDK)。VFW包含了大量與視頻采集有關(guān)的編程接口。這些編程接口通過操作系統(tǒng)提供的VFW-to-WDM Voide Capture Mapper調(diào)用設(shè)備驅(qū)動(dòng)程序中的相關(guān)例程,為系統(tǒng)的圖像采集提供了底層接口編程基礎(chǔ)。
VFW提供了兩種視頻采集模式:Preview(簡(jiǎn)稱P模式)和Overlay(簡(jiǎn)稱O模式)。筆者在系統(tǒng)設(shè)計(jì)中通過實(shí)驗(yàn)和測(cè)試比較了這兩種模式。
P模式占用較多的系統(tǒng)資源。在這種模式中,硬件將采集的視頻幀傳送到系統(tǒng)內(nèi)存中,然后在視頻采集窗口用Windows GDI函數(shù)進(jìn)行顯示;而O模式下,視頻采集子系統(tǒng)直接通過硬件方法顯示視頻,相對(duì)來說節(jié)省內(nèi)存,且速度較快。
O模式穩(wěn)定性較好,但也要求電源性能較好。在直流電源性能較好情況下,采用Overlay模式進(jìn)行視頻采集。
實(shí)際運(yùn)行過程表明,上述分析是正確的。本系統(tǒng)設(shè)計(jì)中采用了Overlay模式。這一選擇對(duì)穩(wěn)定性起到了較好的優(yōu)化作用。
2、視頻壓縮、解壓縮技術(shù)的優(yōu)先和優(yōu)化 針對(duì)視頻應(yīng)用中可能遇到的各種情況,本系統(tǒng)的壓縮、解壓縮模塊設(shè)計(jì)采用三種壓縮方案,使用時(shí)可以從中選擇一種,以適應(yīng)不同環(huán)境和不同需求。
一是國(guó)際通用的高壓縮進(jìn)比方案H.263,該方案壓縮比高,但圖像質(zhì)量較差,適用于網(wǎng)絡(luò)傳輸性能較差的情況,該方案大體符合現(xiàn)場(chǎng)圖像的處理要求。二是圖像壓縮質(zhì)量最好、算法最先進(jìn)的MPEG-4方案,該方案圖像質(zhì)量好,便壓縮比較低,適用于網(wǎng)絡(luò)傳輸性能良好的情況。三是在H.263的基礎(chǔ)上作為較大幅度修改和優(yōu)化的TH.263方案,該方案在壓縮比與H.263相近的情況下,圖像質(zhì)量有明顯改善。
圖像解壓縮與壓縮過程正好相反,即先將壓縮的函數(shù)數(shù)據(jù)作行程解碼和哈夫曼解碼,然后進(jìn)行反量化,并據(jù)此進(jìn)行IDCT變換。如果此幀是關(guān)鍵帖,,則直接將這個(gè)宏塊重組即得出還原后的圖像;否則,根據(jù)運(yùn)行矢量將各宏塊的數(shù)據(jù)與上一幀進(jìn)行組合才得出不定期原后的圖像。由于解壓縮不需要分析圖像和網(wǎng)絡(luò)的情況,也不需要考慮壓縮比和壓縮質(zhì)量,只是簡(jiǎn)單地將圖像還原,所以程序比較簡(jiǎn)單。
通過分析和測(cè)試表明,格式轉(zhuǎn)換、對(duì)關(guān)鍵幀和非關(guān)鍵幀離散余弦變換DCT、對(duì)非關(guān)鍵幀的幀間壓縮是最重要最耗時(shí)的環(huán)節(jié)。為此,在設(shè)計(jì)中對(duì)這些環(huán)節(jié)進(jìn)行了優(yōu)化。
優(yōu)化方案的思想是:通過傳輸模塊反饋回來的信息,得知當(dāng)前網(wǎng)絡(luò)的傳輸速率,以此來調(diào)整壓縮算法的各個(gè)參數(shù),即壓縮質(zhì)量、每秒幀數(shù)等,獲得當(dāng)前最好的幀率和質(zhì)量。
具體從兩方面實(shí)施:一是對(duì)幀內(nèi)壓縮方法進(jìn)行優(yōu)化;二是對(duì)幀間壓縮方法進(jìn)行優(yōu)化。
對(duì)幀內(nèi)壓縮方法的優(yōu)化主要通過改變壓縮質(zhì)量的參數(shù)來調(diào)節(jié)圖像質(zhì)量和壓縮比。
3、用UDP和RTP實(shí)現(xiàn)圖像傳輸并進(jìn)行實(shí)時(shí)優(yōu)化 視頻圖像的實(shí)時(shí)傳輸有如下特征:
數(shù)據(jù)量大,尤其是高保真活動(dòng)圖像的數(shù)據(jù)量更大,從而帶寬要求高;實(shí)時(shí)性要求高。
上述特點(diǎn)使視頻圖像傳輸對(duì)傳輸環(huán)境提出很高的要求。但另一方面,圖像數(shù)據(jù)包在少量丟失情況下不影響還原質(zhì)量。為此,采用建立在UDP基礎(chǔ)上的實(shí)時(shí)傳輸協(xié)議RTP。
用UDP協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)膬?yōu)點(diǎn)是不需要建立連接,傳輸速度快。缺點(diǎn)是容易丟失數(shù)據(jù)包,而且數(shù)據(jù)包的順序容易混亂。
本設(shè)計(jì)中,對(duì)實(shí)時(shí)可靠性進(jìn)行了優(yōu)化,具體程序設(shè)計(jì)中,采用了如下策略:
建立一條以UDP作為傳輸協(xié)議的數(shù)據(jù)通路,在傳輸時(shí)把壓縮過的視頻流打包,打包時(shí)考慮到兩個(gè)因素:第一,某些壓縮的關(guān)鍵幀會(huì)很大;第二,關(guān)鍵幀與非關(guān)鍵幀數(shù)據(jù)量相差很遠(yuǎn)。這兩個(gè)因素可能導(dǎo)致數(shù)據(jù)包亂序,為此,不能簡(jiǎn)單地將視頻幀作為打包單位,而是將數(shù)據(jù)流劃分成等量的小包,并在包頭標(biāo)上序號(hào)進(jìn)行順序傳輸。
4、視頻傳輸中的自適應(yīng)技術(shù) 由于網(wǎng)絡(luò)帶寬有限且隨機(jī)變化,因此視頻傳輸?shù)膶?shí)時(shí)性會(huì)受到嚴(yán)重影響,甚至?xí)菇邮盏降囊曨l出現(xiàn)不連續(xù)或停頓現(xiàn)象。為此,在系統(tǒng)設(shè)計(jì)中,引入了視頻傳輸?shù)淖赃m應(yīng)機(jī)制。具體實(shí)現(xiàn)的,系統(tǒng)一邊傳輸一邊檢測(cè)網(wǎng)絡(luò)狀態(tài),并據(jù)此調(diào)整發(fā)送策略以適應(yīng)網(wǎng)絡(luò)變化。圖2表示了在遠(yuǎn)程控制系統(tǒng)中加入自適應(yīng)機(jī)制后的結(jié)構(gòu)。
自適應(yīng)機(jī)制由檢測(cè)模塊、反饋模塊和決策模塊組成。發(fā)送端將視頻圖像壓縮后,打成RTP數(shù)據(jù)包,然后用RTP協(xié)議發(fā)送。發(fā)送站點(diǎn)的自適應(yīng)檢測(cè)模塊檢測(cè)并記錄有關(guān)的發(fā)送信息,包括傳輸率、字節(jié)數(shù)等。接收站點(diǎn)通過自適應(yīng)反饋模塊檢測(cè)有關(guān)的信息,并將其發(fā)送到接收站點(diǎn)的檢測(cè)模塊。后者將發(fā)送和接收時(shí)的信息相比較,再將比較結(jié)果傳送到自適應(yīng)決策模塊。為了盡可能節(jié)省信息量,接收端自適應(yīng)反饋模塊向發(fā)送端檢測(cè)模塊只發(fā)送一個(gè)信息包序列號(hào)。這樣后者可計(jì)算出信息包的傳輸時(shí)間,并在多次檢測(cè)基礎(chǔ)上得到帶寬平均評(píng)估值。發(fā)送端再根據(jù)評(píng)估值改變視頻采集頻率和壓縮比,調(diào)整視頻數(shù)據(jù)量,從而實(shí)現(xiàn)自適應(yīng)功能。
5、發(fā)送和接收的同步技術(shù) 本系統(tǒng)采用Client/Server結(jié)構(gòu)。在這種結(jié)構(gòu)中,只有Client端才能連接請(qǐng)求建立連接,而且一個(gè)Client端可與多個(gè)Server建立連接。因此,將接收站點(diǎn)作為Client,發(fā)送站點(diǎn)作為Server。當(dāng)接收站點(diǎn)需要得到遠(yuǎn)端的視頻圖像時(shí),便發(fā)出連接請(qǐng)求。這種方式適用于系統(tǒng)視頻采集站點(diǎn)處于惡劣環(huán)境中無人看管的情況。
Server端采集視頻數(shù)據(jù)并進(jìn)行壓縮后,發(fā)送給Client,Client將數(shù)據(jù)解壓縮后顯示視頻圖像。系統(tǒng)設(shè)計(jì)中,為了適應(yīng)不同的網(wǎng)絡(luò)環(huán)境和圖像要求,對(duì)視頻質(zhì)量配置了雙向調(diào)節(jié)功能。即一方面,視頻采集站點(diǎn)可直接調(diào)節(jié)圖像質(zhì)量,另一方面接收站點(diǎn)也可以調(diào)節(jié)采集站點(diǎn)的圖像采集和壓縮參數(shù),從而是調(diào)節(jié)圖像質(zhì)量。
具體實(shí)現(xiàn)時(shí),設(shè)計(jì)了一個(gè)用8字節(jié)表示的comp_config_packet結(jié)構(gòu);當(dāng)在Server端或Client端拖動(dòng)控制面板上的滾動(dòng)條時(shí),將改變后的各項(xiàng)數(shù)據(jù)填充到comp_config_packet結(jié)構(gòu)中,并將此結(jié)構(gòu)發(fā)送到Client端或Server端;當(dāng)Client端或Server端接收到該數(shù)據(jù)結(jié)構(gòu)后,立即據(jù)此改變對(duì)應(yīng)控制面板中的各項(xiàng)數(shù)據(jù),并在控制面板上作相應(yīng)顯示。