桌面分享编码技术的演变



由于最近几年的工作分别在“在线教育”和“视频会议”领域,在这两个领域对用户而言最重要的功能除了语音就是桌面分享,恰巧这也是我所擅长的领域。


桌面分享从功能上可以拆分为屏幕抓取与数据编码两个大的方面。其中屏幕抓取,主要获取数据源,在当前的机器的运算能下,该功能已不再是瓶颈,所以我们下面主要聊聊数据编码的技术演变。





桌面分享编码技术的演变


早期的图形界面的分辨率比较低(800*600),颜色数比较少(以16位色居多,24位真彩色很少见)。然而就算这样,屏幕数据量(937KB)对于当时的宽带网络(ADSL拨号上网,上传带宽512kb~1Mb)也是个沉重的负担,理论上以当时的网络,传递一帧未压缩的屏幕数据需要用时8~16秒,这显然无法接受。为了能更快的将桌面图形快速的通过网络传递到终端,桌面数据的压缩编码就应运而生了。


桌面数据压缩之初,主要被用来解决帧数据过大这个问题。所以首先被应用的就是当时很流行的图片数据有损压缩方法(JPG),该压缩算法在图片质量下降不是很明显的情况下,压缩后的图片仅为原大小的10%。在使用了JPG压缩算法后,对于观看远端静态文档暂时勉强够用。

          

为了能进一步减少传输间隔,在没办法减少每一帧数据大小的情况下,我们问自己,每一次都传输完整的帧数据,就是是否必须?经过分析,我们发现桌面发生完全变化的概率很少,绝大部分都是局部变化,如:按钮获取焦点,某个控件数据获得更新等。




(图1)


在实际使用中发现,对于纯文本展示(文本文件、PPT、静态网页等),使用JPG方法压缩后字体的背景不是很干净。放大图片后发现文本显示的边缘与背景融合处使用了渐变色过渡。


而JPG压缩会丢失这部分信息的细节。对于纯文本展示(文本文件、PPT、静态网页等)的桌面数据观察发现,大部分为少数颜色的文本加大面积单色的背景。对于这种类型数据恰巧可以使用基于调色盘的无损压缩。我们又再次改进了之前的编码策略。在已经判定块需要编码的情况下,再分析块中使用的颜色数,依据颜色数的不同选择不同的编码方式。



随着机器性能的持续提升,显示器的分辨率越来越高,1080P全高清成为主流,4K屏也不鲜见,并且越来越多。用户在使用PPT等展示数据时,复杂背景、植入的图表(视频),翻页的动画效果,全都越来越多。网络带宽虽然也有提升,但完全跟不上机器性能提升的速度。上述的编码方案在桌面短时间发生剧烈改变时,产生了大量的爆发数据。





从2007年以来,视频流媒体技术得到了长足的进步。从早期H261、H263到现在的H264,以及为了应对目前越来越普及的超高清(4k分辨率)视频而出现的H265和VP9、VP10编码。


而用户对桌面共享的流畅性的期望越来越向视频的流畅度靠拢,这使得我们不得不考虑,桌面数据的压缩方式是否能使用视频的压缩方法。我们发现,桌面数据走视频流的模式对于持续变化的桌面分享有显著的削峰填谷效果。


桌面分享编码技术的演变




桌面分享编码技术的演变


桌面分享编码技术的演变