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