在成熟的视频会议软件,屏幕共享的功能是不可缺少的部分,而用户对屏幕共享也越来越高,最基本的要求屏幕共享具有30帧的实时传输,而且能在公网传输,有些视频会议软件虽然能达到30帧的同屏传输,但数据量非常大,不太适合公网上传输,就算在内网上传输也会存在着传输的瓶颈。因此我们这里讨论一下在视频会议软件的屏幕共享技术。屏幕共享技术主要是两个方面,一个方面是屏幕捕捉,一个屏幕编码,两个方面的技术要求是相辅相成的、相互无缝衔接的。

1、屏幕捕捉

最简单屏幕方式是用GDI截图,然后把图片保存到内存,留给下一步进行编码。但该方式效率非常低,经过测试用GDI截图的方式的屏幕共享不能超过25帧,再加上编码的时间,帧数肯定不能超过20帧,因此GDI的截图方式不能作为视频会议软件屏幕捕捉。另外一个方式用Direct3D方式,该方式需要需要Directx 9的支持,效果比GDI截图好,但改善得不高。最后一种方式是DXGI方式,DXGI方式可以一秒超过几千帧,因此DXGI方式最好的视频会议的屏幕捕捉方式,但DXGI必须要Win8或者Win8以上才能支持,因此Win7XP可以使用Direct3D方式。

2、屏幕编码

屏幕编码最简单方式,可以采用H264H265)视频编码直接编码之前的屏幕捕捉的图像,然后再通过H264H265)硬件解码进行解码,最后通过Directx显示出来,但该方式缺点是数据流量太大,一般会超过2Mb/s,这样的话不太适合公网上传输,容易出现丢包。另外一种方式是VNC的屏幕分块模式,分块后采用视频编码的方式,如果分块在两个时间段不存在变化,就不需要传递这个分块的变化,因此该方式极大改善了屏幕共享的数据流量,是开发视频会议软件的屏幕共享功能最好的方式。

总结,视频会议软件的屏幕共享最佳方式是采用DXGI进行屏幕的捕捉,而屏幕数据的编码采用分块的编码技术,从而达到在低码流的30帧传输屏幕的需求。


Powered by PageAdmin CMS