引言:在Internet飛速發展和廣泛普及的今天,信息傳輸從兩方面加強力度:一是多媒體化;二是實時化。在此基礎上,高保真準動態圖像采集、壓縮和遠程傳輸技術成為許多先進國家計算機領域的重要研究課題。本文主要闡述其主要技術及其優化策略。
1.系統總體結構
在物理上,本系統分為發送站點和接收站點兩部分。在邏輯上,本系統分為圖像采集、壓縮和傳輸子系統、性能控制子系統。整個系統包含六個獨立的功能模塊。
2.系統的關鍵技術和優化策略
2.1 視頻采集技術分析和選擇
為了實時視頻采集,需要安裝相應的視頻采集設備。即視頻采集卡和攝像頭等。并需要安裝相應的驅動軟件來支持這些設備的運行。
Windows2000操作系統提供了VFW(Video for Windows SDK)。VFW包含了大量與視頻采集有關的編程接口。這些編程接口通過操作系統提供的VFW-to-WDM Voide Capture Mapper調用設備驅動程序中的相關例程,為系統的圖像采集提供了底層接口編程基礎。
VFW提供了兩種視頻采集模式:Preview(簡稱P模式)和Overlay(簡稱O模式)。本系統設計中采用了Overlay模式?!模式穩定性較好,但也要求電源性能較好,采用Overlay模式進行視頻采集,這一選擇對穩定性起到了較好的優化作用。實際運行過程表明,上述分析是正確的。
2.2 視頻壓縮、解壓縮技術的優先和優化
針對視頻應用中可能遇到的各種情況,本系統的壓縮、解壓縮模塊設計采用三種壓縮方案,使用時可以從中選擇一種,以適應不同環境和不同需求。
通過分析和測試表明,格式轉換、對關鍵幀和非關鍵幀離散余弦變換DCT、對非關鍵幀的幀間壓縮是最重要最耗時的環節。為此,在設計中對這些環節進行了優化。
具體講,在格式轉換、DCT變換中,一是在采集到的RGB色彩空間圖像到壓縮算法視頻輸入格式CIF變換中,用整型算法和移位相結合的優化轉換函數代替速度較慢的浮點運算;二是在關鍵幀和非關鍵幀的DCT變換中,采用零系數預測策略對DCT變換的輸入數據分類,節省了大量無效運算;三是采用多媒體處理指令集MMX實現DCT變換,大幅度提高了運算速度。
筆者在對H.263源程序分析的基礎上進行了優化,采用混合壓縮編碼方案。此方案將上述兩種方式結合起來,從而使系統有效地適用于Internet傳輸。因為遠程站點之間通過Internet進行傳輸時,信道的數據傳輸率不是固定的。所以,系統中通過信道測試反饋信息改變量化時的步長,從而調節視頻信息的數碼率,以便更好地適應信道傳輸率的變化。
優化方案的思想是:通過傳輸模塊反饋回來的信息,得知當前網絡的傳輸速率,以此來調整壓縮算法的各個參數,即壓縮質量、每秒幀數等,獲得當前最好的幀率和質量。
具體從兩方面實施:一是對幀內壓縮方法進行優化;二是對幀間壓縮方法進行優化。
對幀內壓縮方法的優化主要通過改變壓縮質量的參數來調節圖像質量和壓縮比。
對幀間壓縮方法的改進是通過改變頻率、關鍵幀間的距離調節傳輸速率。改變每秒采集和傳輸圖像的數目,以改變傳輸數據的大小。幀間壓縮要用到運動補償,其關鍵在于兩幀之間的差別大小。如果圖像只有微小的變化,那么經過作差后壓縮效果較好;如果圖像變化很大,那么經過作差后壓縮效果較差。為充分利用運行壓縮的特點,根據圖像變化的大小來調節關鍵幀間的距離。在圖像變化不大的情況下,非關鍵幀數據較少,此時拉長關鍵幀間的距離既可以低傳輸率,又不影響圖像的質量;在圖像變化較大的情況下,非關鍵幀數據較多,此時縮短關鍵幀間的距離,以增加運動補償的效果。
2.3 用UDP和RTP實現圖像傳輸并實時優化
采用建立在UDP基礎上的實時傳輸協議RTP。
用UDP協議進行數據傳輸的優點是不需要建立連接,傳輸速度快。缺點是容易丟失數據包,而且數據包的順序容易混亂。
RTP是基于UDP的網絡傳輸協議,編程時通過時間標簽(Time-temping)機制、信息序列編號(Sequence Numbering)機制和有效數據類型標識(Payload Type Identifier)機制的聯合使用,在允許的延遲范圍中保證數據的實時傳輸質量,對于少量信息包的丟失,則采用補償方法解決。時間標簽用來標明實時數據塊生成時間,接收方可據此正確排列數據接收順序,并保證實時數據傳輸同步,一幀圖像數據組成的RTP信息包有相同的時間標簽。序列編號通過配合時間標簽設置,同一幀圖像的RTP信息包有相同的時間標簽,但有不同的序列編號。有效數據類型標識用來定義各種數據壓縮方法,并可通過手動或自動方式動態調整,在信息擁擠時可提高壓縮比。
對實時可靠性進行了優化,具體策略:建立一條以UDP作為傳輸協議的數據通路,在傳輸時把壓縮過的視頻流打包;另建一條以TCP為傳輸協議的控制通路,其作用是反饋一些控制命令給發送方,從而最小限度地防止傳輸中的錯誤。
2.4 視頻傳輸中的自適應技術
自適應機制由檢測模塊、反饋模塊和決策模塊組成。發送端將視頻圖像壓縮后,打成RTP數據包,然后用RTP協議發送。發送站點的自適應檢測模塊檢測并記錄有關的發送信息,包括傳輸率、字節數等。接收站點通過自適應反饋模塊檢測有關的信息,并將其發送到接收站點的檢測模塊。后者將發送和接收時的信息相比較,再將比較結果傳送到自適應決策模塊。為了盡可能節省信息量,接收端自適應反饋模塊向發送端檢測模塊只發送一個信息包序列號。這樣后者可計算出信息包的傳輸時間,并在多次檢測基礎上得到帶寬平均評估值。發送端再根據評估值改變視頻采集頻率和壓縮比,調整視頻數據量,從而實現自適應功能。
2.5 發送和接收的同步技術
本系統采用Client/Server結構。在這種結構中,只有Client端才能連接請求建立連接,而且一個Client端可與多個Server建立連接。因此,將接收站點作為Client,發送站點作為Server。當接收站點需要得到遠端的視頻圖像時,便發出連接請求。這種方式適用于系統視頻采集站點處于惡劣環境中無人看管的情況。
Server端采集視頻數據并進行壓縮后,發送給Client,Client將數據解壓縮后顯示視頻圖像。系統設計中,為了適應不同的網絡環境和圖像要求,對視頻質量配置了雙向調節功能。即一方面,視頻采集站點可直接調節圖像質量,另一方面接收站點也可以調節采集站點的圖像采集和壓縮參數,從而是調節圖像質量。
對圖像質量的雙向調節功能基于如下設計:
將Client端控制面板中的參數(采樣間隔、關鍵幀數、關鍵幀質量、非關鍵幀質量)傳遞給Server端,再由Server端依據這些參數進行視頻采集和壓縮;
Client端和Server端在設置上保持一致,即無論哪一方改變設置,都會使對方的控制面板保持一致。具體實現時,設計了一個用8字節表示的comp_config_packet結構;當在Server端或Client端拖動控制面板上的滾動條時,將改變后的各項數據填充到comp_config_packet結構中,并將此結構發送到Client端或Server端;當Client端或Server端接收到該數據結構后,立即據此改變對應控制面板中的各項數據,并在控制面板上作相應顯示。
(作者單位:河北廣電網絡集團邯鄲有限公司)