在成熟的視頻會(huì)議軟件,屏幕共享的功能是不可缺少的部分,而用戶(hù)對(duì)屏幕共享也越來(lái)越高,最基本的要求屏幕共享具有30幀的實(shí)時(shí)傳輸,而且能在公網(wǎng)傳輸,有些視頻會(huì)議軟件雖然能達(dá)到30幀的同屏傳輸,但數(shù)據(jù)量非常大,不太適合公網(wǎng)上傳輸,就算在內(nèi)網(wǎng)上傳輸也會(huì)存在著傳輸?shù)钠款i。因此我們這里討論一下在視頻會(huì)議軟件的屏幕共享技術(shù)。屏幕共享技術(shù)主要是兩個(gè)方面,一個(gè)方面是屏幕捕捉,一個(gè)屏幕編碼,兩個(gè)方面的技術(shù)要求是相輔相成的、相互無(wú)縫銜接的。
1、屏幕捕捉
最簡(jiǎn)單屏幕方式是用GDI截圖,然后把圖片保存到內(nèi)存,留給下一步進(jìn)行編碼。但該方式效率非常低,經(jīng)過(guò)測(cè)試用GDI截圖的方式的屏幕共享不能超過(guò)25幀,再加上編碼的時(shí)間,幀數(shù)肯定不能超過(guò)20幀,因此GDI的截圖方式不能作為視頻會(huì)議軟件屏幕捕捉。另外一個(gè)方式用Direct3D方式,該方式需要需要Directx 9的支持,效果比GDI截圖好,但改善得不高。最后一種方式是DXGI方式,DXGI方式可以一秒超過(guò)幾千幀,因此DXGI方式最好的視頻會(huì)議的屏幕捕捉方式,但DXGI必須要Win8或者Win8以上才能支持,因此Win7和XP可以使用Direct3D方式。
2、屏幕編碼
屏幕編碼最簡(jiǎn)單方式,可以采用H264(H265)視頻編碼直接編碼之前的屏幕捕捉的圖像,然后再通過(guò)H264(H265)硬件解碼進(jìn)行解碼,最后通過(guò)Directx顯示出來(lái),但該方式缺點(diǎn)是數(shù)據(jù)流量太大,一般會(huì)超過(guò)2Mb/s,這樣的話(huà)不太適合公網(wǎng)上傳輸,容易出現(xiàn)丟包。另外一種方式是VNC的屏幕分塊模式,分塊后采用視頻編碼的方式,如果分塊在兩個(gè)時(shí)間段不存在變化,就不需要傳遞這個(gè)分塊的變化,因此該方式極大改善了屏幕共享的數(shù)據(jù)流量,是開(kāi)發(fā)視頻會(huì)議軟件的屏幕共享功能最好的方式。
總結(jié),視頻會(huì)議軟件的屏幕共享最佳方式是采用DXGI進(jìn)行屏幕的捕捉,而屏幕數(shù)據(jù)的編碼采用分塊的編碼技術(shù),從而達(dá)到在低碼流的30幀傳輸屏幕的需求。