視頻會議系統多畫面軟件的分析與設計
0 引言
本文引用地址:http://www.j9360.com/article/153871.htm視頻會議的發展經歷了一個從無到有、從不成熟到基本成熟的過程。在這個發展過程中,又相繼出現了電視會議、桌面會議、多媒體會議等多種遠程會議系統。視頻會議系統發展的關鍵技術之一是視頻編碼。利用低比特率的視頻編解碼方案H.263 建議,可將視頻圖像最少壓縮到大約20 kbps,以使其能在普通電話線上通過28.8 kbps 的V.34Modem 傳送音頻信號。事實上,在音視頻編碼協議不斷改進與發展的同時,視頻會議本身的協議也實現了更新換代,目前已出現了基于分組交換網的H.323 建議。視頻會議向高性能、多功能、協同性、智能化和集成化方向發展的另一個關鍵技術是多畫面合成技術。
由于傳統采用RGB 格式存儲數據流以用于多畫面合成的方法十分浪費資源。因此,為了在有限的頻帶條件下最大限度地提高資源利用率,本文提出了一種在不影響畫面質量的同時解決其資源利用問題的新方案。事實上。視頻會議多畫面軟件已經應用到生活的諸多領域。而且將會有更廣泛地使用。
1 數據流的捕獲
Windows 下捕獲數據包的結構如圖l 所示,其中NDIS 的NDIS (Network Driver Interface Specification)是Microsoft 和3Com 公司聯合制定的網絡驅動規范,該規范提供有大量的操作函數。它可為上層的協議驅動提供服務,從而屏蔽了下層各種網卡的差別。NDIS 向上可支持多種網絡協議,例如TCP/IP、NWLink IPX/SPX、NETBEUI 等,向下則可支持不同廠家生產的多種網卡。

利用 winpcap 進行網絡數據包的捕獲和過濾的設計步驟如下:
(1)打開網卡,設置網卡為混雜模式;
(2)回調函數Network Tap,得到監聽命令后從網絡設備驅動程序處收集數據包,并把監聽到的數據包傳送
給過濾程序;
(3)當Packet filter 監聽到數據包到達時,NDIS 中間驅動程序調用分組驅動程序,該程序可將數據傳遞給每一個參與進程的分組過濾程序;
(4)由Packet filter過濾程序決定丟棄或接收數據包,并將接收的數據拷貝到相應的程序;
(5)通過分組過濾器后,再將未過濾掉的數據包提交給核心緩沖區,當系統緩沖區滿后,再將數據包拷貝到用戶緩沖區。監聽程序可以直接從用戶緩沖區中讀取捕獲的數據包;
(6)關閉網卡。
2 視頻數據流的解碼
捕獲到的視頻數據流。通常在網絡傳輸中都采用H.263視頻編碼建議,其圖像格式為CIF格式。H.263-CIF格式的數據流是一種壓縮編碼圖像格式,這種格式在網絡傳輸過程中可節省頻帶資源,可在有限的帶寬下最大限度地提高資源利用率。但是,CIF格式必須經過處理才能應用于多畫面合成。只有通過解碼使捕獲到的視頻數據流變成YUV(RGB)格式后,此圖像格式才可直接運用于多畫面合成,而且此格式的圖像合成也比較方便、快捷。為了使圖像由H.263格式轉變為YUV(RGB)格式,應運用H.263解碼器進行解碼。其編解碼算法的概要圖如圖2所示。

3 多畫面合成
視頻數據流經過解碼之后,可將其變成YUV(RGB)格式。下一環節即是視頻數據流的合成(多畫面合成),這也是本文的關鍵技術。在視頻會議系統中,參加會議的與會者或許不只兩、三個,所有與會者可能分布全國乃至世界各地。為了使每個與會者都能進行面對面的直接交流,就需要在同一時間看到所有的與會者,因此,多畫面合成技術必不可少。通過多畫面合成能使N個不同的視頻畫面實時地在同一臺顯示器上顯示,這樣,每一位與會者就都可以運用該軟件看到其他成員。
YUV主要的采樣格式有YCbCr4:2:O、YCbCr4:2:2、YCbCr4:1:1和YCbCr4:4.:4。其中YCbCr4:1:1比較常用,其含義是每個點保存一個8 bit的亮度值(也就是Y值),每2x2個點保存一個Cr和Cb值,這樣,圖像在人的視覺中不會起太大的變化。RGB (R,G,B都是8 bit unsigned)模型的4個點需要8×3=24 bits,而現在僅需要8+(8/4)+(8/4)=12 bits,平均每個點占12 bits。這樣就把圖像的數據壓縮至一半。YUV411為每個像素都提取Y分量,UV分量在水平方向上每4個像素采樣一次。YUV420并非V分量采樣為0,而只是跟YUV411相比,在水平方向上提高了一倍的色差采樣頻率,并在垂直方向上以U/V間隔的方式減小了一半色差采樣。
經過解碼即可得到YUV格式的數據流,H.263-CIF的圖像格式亮度取樣像素個數、亮度取樣行數為352x288,圖像是由許多像素點組成的,即一幅H.263-CIF圖像占有352×288個像素點,經過解碼。這些值將不變化,即YUV格式的亮度取樣像素個數、亮度取樣行數也為352×288、也占有352×288個像素點。現在假設視頻數據是YUV420格式.它的采樣格式為4:2:0。在對YUV420格式的視頻數據進行存儲時,可按照圖3所示的存儲格式,先存儲所有的Y,之后存儲U,再存儲V,并且每個像素點占用一個Y,平均四個像素點占用一個U和V。每個像素點占用一個字節,則一幅圖像所占用的字節數將是352×288×(1+1,4+1/4)。

評論