視頻會(huì)議系統(tǒng)多畫(huà)面軟件的分析與設(shè)計(jì)
0 引言
本文引用地址:http://butianyuan.cn/article/153871.htm視頻會(huì)議的發(fā)展經(jīng)歷了一個(gè)從無(wú)到有、從不成熟到基本成熟的過(guò)程。在這個(gè)發(fā)展過(guò)程中,又相繼出現(xiàn)了電視會(huì)議、桌面會(huì)議、多媒體會(huì)議等多種遠(yuǎn)程會(huì)議系統(tǒng)。視頻會(huì)議系統(tǒng)發(fā)展的關(guān)鍵技術(shù)之一是視頻編碼。利用低比特率的視頻編解碼方案H.263 建議,可將視頻圖像最少壓縮到大約20 kbps,以使其能在普通電話(huà)線(xiàn)上通過(guò)28.8 kbps 的V.34Modem 傳送音頻信號(hào)。事實(shí)上,在音視頻編碼協(xié)議不斷改進(jìn)與發(fā)展的同時(shí),視頻會(huì)議本身的協(xié)議也實(shí)現(xiàn)了更新?lián)Q代,目前已出現(xiàn)了基于分組交換網(wǎng)的H.323 建議。視頻會(huì)議向高性能、多功能、協(xié)同性、智能化和集成化方向發(fā)展的另一個(gè)關(guān)鍵技術(shù)是多畫(huà)面合成技術(shù)。
由于傳統(tǒng)采用RGB 格式存儲(chǔ)數(shù)據(jù)流以用于多畫(huà)面合成的方法十分浪費(fèi)資源。因此,為了在有限的頻帶條件下最大限度地提高資源利用率,本文提出了一種在不影響畫(huà)面質(zhì)量的同時(shí)解決其資源利用問(wèn)題的新方案。事實(shí)上。視頻會(huì)議多畫(huà)面軟件已經(jīng)應(yīng)用到生活的諸多領(lǐng)域。而且將會(huì)有更廣泛地使用。
1 數(shù)據(jù)流的捕獲
Windows 下捕獲數(shù)據(jù)包的結(jié)構(gòu)如圖l 所示,其中NDIS 的NDIS (Network Driver Interface Specification)是Microsoft 和3Com 公司聯(lián)合制定的網(wǎng)絡(luò)驅(qū)動(dòng)規(guī)范,該規(guī)范提供有大量的操作函數(shù)。它可為上層的協(xié)議驅(qū)動(dòng)提供服務(wù),從而屏蔽了下層各種網(wǎng)卡的差別。NDIS 向上可支持多種網(wǎng)絡(luò)協(xié)議,例如TCP/IP、NWLink IPX/SPX、NETBEUI 等,向下則可支持不同廠家生產(chǎn)的多種網(wǎng)卡。
利用 winpcap 進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)包的捕獲和過(guò)濾的設(shè)計(jì)步驟如下:
(1)打開(kāi)網(wǎng)卡,設(shè)置網(wǎng)卡為混雜模式;
(2)回調(diào)函數(shù)Network Tap,得到監(jiān)聽(tīng)命令后從網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序處收集數(shù)據(jù)包,并把監(jiān)聽(tīng)到的數(shù)據(jù)包傳送
給過(guò)濾程序;
(3)當(dāng)Packet filter 監(jiān)聽(tīng)到數(shù)據(jù)包到達(dá)時(shí),NDIS 中間驅(qū)動(dòng)程序調(diào)用分組驅(qū)動(dòng)程序,該程序可將數(shù)據(jù)傳遞給每一個(gè)參與進(jìn)程的分組過(guò)濾程序;
(4)由Packet filter過(guò)濾程序決定丟棄或接收數(shù)據(jù)包,并將接收的數(shù)據(jù)拷貝到相應(yīng)的程序;
(5)通過(guò)分組過(guò)濾器后,再將未過(guò)濾掉的數(shù)據(jù)包提交給核心緩沖區(qū),當(dāng)系統(tǒng)緩沖區(qū)滿(mǎn)后,再將數(shù)據(jù)包拷貝到用戶(hù)緩沖區(qū)。監(jiān)聽(tīng)程序可以直接從用戶(hù)緩沖區(qū)中讀取捕獲的數(shù)據(jù)包;
(6)關(guān)閉網(wǎng)卡。
2 視頻數(shù)據(jù)流的解碼
捕獲到的視頻數(shù)據(jù)流。通常在網(wǎng)絡(luò)傳輸中都采用H.263視頻編碼建議,其圖像格式為CIF格式。H.263-CIF格式的數(shù)據(jù)流是一種壓縮編碼圖像格式,這種格式在網(wǎng)絡(luò)傳輸過(guò)程中可節(jié)省頻帶資源,可在有限的帶寬下最大限度地提高資源利用率。但是,CIF格式必須經(jīng)過(guò)處理才能應(yīng)用于多畫(huà)面合成。只有通過(guò)解碼使捕獲到的視頻數(shù)據(jù)流變成YUV(RGB)格式后,此圖像格式才可直接運(yùn)用于多畫(huà)面合成,而且此格式的圖像合成也比較方便、快捷。為了使圖像由H.263格式轉(zhuǎn)變?yōu)閅UV(RGB)格式,應(yīng)運(yùn)用H.263解碼器進(jìn)行解碼。其編解碼算法的概要圖如圖2所示。
3 多畫(huà)面合成
視頻數(shù)據(jù)流經(jīng)過(guò)解碼之后,可將其變成YUV(RGB)格式。下一環(huán)節(jié)即是視頻數(shù)據(jù)流的合成(多畫(huà)面合成),這也是本文的關(guān)鍵技術(shù)。在視頻會(huì)議系統(tǒng)中,參加會(huì)議的與會(huì)者或許不只兩、三個(gè),所有與會(huì)者可能分布全國(guó)乃至世界各地。為了使每個(gè)與會(huì)者都能進(jìn)行面對(duì)面的直接交流,就需要在同一時(shí)間看到所有的與會(huì)者,因此,多畫(huà)面合成技術(shù)必不可少。通過(guò)多畫(huà)面合成能使N個(gè)不同的視頻畫(huà)面實(shí)時(shí)地在同一臺(tái)顯示器上顯示,這樣,每一位與會(huì)者就都可以運(yùn)用該軟件看到其他成員。
YUV主要的采樣格式有YCbCr4:2:O、YCbCr4:2:2、YCbCr4:1:1和YCbCr4:4.:4。其中YCbCr4:1:1比較常用,其含義是每個(gè)點(diǎn)保存一個(gè)8 bit的亮度值(也就是Y值),每2x2個(gè)點(diǎn)保存一個(gè)Cr和Cb值,這樣,圖像在人的視覺(jué)中不會(huì)起太大的變化。RGB (R,G,B都是8 bit unsigned)模型的4個(gè)點(diǎn)需要8×3=24 bits,而現(xiàn)在僅需要8+(8/4)+(8/4)=12 bits,平均每個(gè)點(diǎn)占12 bits。這樣就把圖像的數(shù)據(jù)壓縮至一半。YUV411為每個(gè)像素都提取Y分量,UV分量在水平方向上每4個(gè)像素采樣一次。YUV420并非V分量采樣為0,而只是跟YUV411相比,在水平方向上提高了一倍的色差采樣頻率,并在垂直方向上以U/V間隔的方式減小了一半色差采樣。
經(jīng)過(guò)解碼即可得到Y(jié)UV格式的數(shù)據(jù)流,H.263-CIF的圖像格式亮度取樣像素個(gè)數(shù)、亮度取樣行數(shù)為352x288,圖像是由許多像素點(diǎn)組成的,即一幅H.263-CIF圖像占有352×288個(gè)像素點(diǎn),經(jīng)過(guò)解碼。這些值將不變化,即YUV格式的亮度取樣像素個(gè)數(shù)、亮度取樣行數(shù)也為352×288、也占有352×288個(gè)像素點(diǎn)?,F(xiàn)在假設(shè)視頻數(shù)據(jù)是YUV420格式.它的采樣格式為4:2:0。在對(duì)YUV420格式的視頻數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí),可按照?qǐng)D3所示的存儲(chǔ)格式,先存儲(chǔ)所有的Y,之后存儲(chǔ)U,再存儲(chǔ)V,并且每個(gè)像素點(diǎn)占用一個(gè)Y,平均四個(gè)像素點(diǎn)占用一個(gè)U和V。每個(gè)像素點(diǎn)占用一個(gè)字節(jié),則一幅圖像所占用的字節(jié)數(shù)將是352×288×(1+1,4+1/4)。
評(píng)論