視頻會議系統(tǒng)是一個綜合性非常強(qiáng)的實(shí)時系統(tǒng),因此在視頻會議開發(fā)過程中,我們經(jīng)常會遇到很多程序上的瓶頸,瓶頸的產(chǎn)生一般都是因?yàn)檫\(yùn)算量過大,或者傳輸量過大甚至有些是因?yàn)樵O(shè)備輸出量較大引起的瓶頸等,因此這些瓶頸可能產(chǎn)生與運(yùn)算處理當(dāng)中,也可能產(chǎn)生在數(shù)據(jù)傳輸過程中和輸入、輸出過程中。下面我們就列舉一下視頻會議開發(fā)過程中存在的瓶頸的部分及其解決辦法。
1、MCU服務(wù)器的數(shù)據(jù)處理
MCU服務(wù)器是整個視頻會議系統(tǒng)的核心,因此MCU服務(wù)器的傳輸效率直接影響到整個視頻會議系統(tǒng)的效應(yīng)時間和效率。MCU服務(wù)器主要是進(jìn)行轉(zhuǎn)發(fā)數(shù)據(jù),控制數(shù)據(jù)傳輸?shù)较鄳?yīng)的終端上,其傳輸方式一個有兩種,一直是在MCU上進(jìn)行合成,然后再傳輸?shù)狡渌慕K端,另外一種方式是MCU直接轉(zhuǎn)發(fā)數(shù)據(jù),然后再由終端對數(shù)據(jù)進(jìn)行合成。兩種方式各有利弊,在MCU上合成的方式,可以節(jié)省帶寬,不論是視頻還是音頻數(shù)據(jù)都在MCU服務(wù)器上進(jìn)行合成,會使到其傳輸數(shù)據(jù)量減少,但這種方式會占用較大的MCU服務(wù)器的CPU運(yùn)算資源。而另外一種方式,MCU服務(wù)器只是轉(zhuǎn)發(fā)數(shù)據(jù),不參與合成音、視頻,這種方式節(jié)省了MCU服務(wù)器的CPU運(yùn)算時間,但會增加MCU服務(wù)器的帶寬。對于這兩種方式,我們可以把運(yùn)算量小的音頻數(shù)據(jù)在MCU服務(wù)器上進(jìn)行合成,而運(yùn)算量較大的視頻數(shù)據(jù)采用直接轉(zhuǎn)發(fā)的模式,這樣既有效地減少了帶寬,也提高了MCU服務(wù)器的運(yùn)算效率。
2、終端的圖像重畫
視頻會議終端的圖像一般要求達(dá)到20幀以上,因此頻繁的重畫圖像需要終端的CPU運(yùn)算量也是很大,因此我們重畫圖像的時候必須要采用效率更高的方式,傳統(tǒng)的重畫方式是通過解碼后的圖像一幅一幅的進(jìn)行重繪,但其效率較低,我們可以通過底層的DirectDraw技術(shù)來進(jìn)行圖像的重畫,其重繪的方式是直接往顯卡里面輸入數(shù)據(jù),然后通過顯卡直接顯示數(shù)據(jù),該方式可以充分利用顯卡的底層接口,圖像輸出時間更快,大大地提高圖像的重畫效率。
3、圖像數(shù)據(jù)格式轉(zhuǎn)換
由于視頻會議的圖像都是經(jīng)過壓縮才進(jìn)行傳輸,而一般的視頻壓縮算法都不是直接獲取圖像的RGB數(shù)據(jù),它們接收的數(shù)據(jù)都是yuv420格式的數(shù)據(jù),而RGB轉(zhuǎn)yuv420數(shù)據(jù)是通過浮點(diǎn)運(yùn)算進(jìn)行,因此如果數(shù)據(jù)量大的情況下,其會消耗較大的CPU運(yùn)算時間,因此我們可以通過建立轉(zhuǎn)換表的方式來進(jìn)行提前進(jìn)行運(yùn)算設(shè)置,建立轉(zhuǎn)換表的方式也就是把所有可能進(jìn)行運(yùn)算的結(jié)果用表的方式進(jìn)行先加載,然后當(dāng)真正運(yùn)算的時候,查表就可以得到相應(yīng)的數(shù)據(jù)結(jié)果,這種通過空間來換時間的方式,可以大大提高圖像的數(shù)據(jù)格式轉(zhuǎn)換效率。