视频会议的屏幕共享功能在众多的功能里面使用是较为频繁的功能,不论是远程培训和日常会议,屏幕共享都经常需要使用。但屏幕共享的传输效率一直是视频会议软件系统需要提高的,屏幕共享需要传输的数据一般比较大,特别是文档翻页或者屏幕发生较大改变的时候,其传输的数据是相当大的,因此怎样有效的减少屏幕共享的数据而保持屏幕图像的质量,成为视频会议开发当中最急需解决的问题。在视频会议的屏幕共享的开发当中,可以有三种实现的方式:
1、图片压缩方式
图片压缩方式是把屏幕图像截图,然后把图片进行压缩,压缩的格式通常是jpg或者gif的格式,其压缩比一般可以达到1:20~1:40,因此该方式比直接传屏幕的图像更为节省带宽,但这种方式实现的屏幕共享的所需要的带宽还是非常大,原因是因为我们需要每时每刻都进行截取图像,然后压缩图像,最后传输图像,传输图像的冗余性非常大,如我们屏幕不变的时候,这种方式还是传输了数据,不能有效节省带宽。
2、改进的图片压缩方式
该方式对屏幕的图片进行了检测,如遇到屏幕图像不改变的时候,不进行数据传输,当屏幕图像改变后,只传输改变的地方,那具体我们怎样只传改变的地方呢?我们可以把桌面图片分成若个个方格,如果方格内的图片出现了变动,就把整个方格进行传输,这样可以通过局部的传输来实现节省带宽的目的。这种方式的缺点是方格的大小决定了屏幕传输的效率,方格越多传输的数据结构就越多,但图像的冗余性就越低。
3、通过图像压缩方式
另外一种方式是直接通过图像压缩编码的方式(如H.264编码)对屏幕图像进行压缩和传输,这种方式和第二种方式原理上大体一致,都是去除图像帧与帧之间的冗余,但通过图像压缩方式的流量比直接用图像压缩的方式会少一些,原因主要是我们采用的图像压缩算法都是经过图片的帧内、帧外的压缩,其效率比直接压缩图片然后传相差的部分要高。
4、通过Hook进行检测方式
前面的几种方式都涉及到需要检测桌面图像是否和之前的图像有区别,但其检测的方式并不是最优,如图像压缩方式其分的格子相对较小,传输的数据结构会较多,而改进的图片压缩方式,其格子相对较大,传输的冗余也较多。Hook方式是通过底层的驱动来获取桌面的图像,并能对前后的图像差别进行检测,使之传输更小的数据。
综上所述,在视频会议的屏幕共享开发当中,我们可以采用Hook方式对图像进行检测,判断桌面图像的变化范围,然后利用图片压缩进行压缩传输,另外我们还可以使用直接用图像压缩算法进行传输,但两种方式,推荐还是用前者,其效果更高,传输的带宽更低,较适合于公网进行传输。