一种屏幕共享丢帧优化算法的制作方法

文档序号:13516611阅读:1130来源:国知局
一种屏幕共享丢帧优化算法的制作方法

本发明涉及计算机屏幕共享技术领域,尤其涉及一种采用截屏图像逐帧传输方法实现的局域网屏幕共享方案的丢帧优化方法。



背景技术:

局域网内屏幕共享目前最简单有效地实现方法是通过共享发起端建立服务器;服务器通过抓取屏幕图像,图像按照jpg格式编码,然后压缩图像,最后将屏幕图像数据分成多个数据报文通过组播的方式发送到共享客户端;共享客户端负责接收数据报文后,重新将数据报文解析后组装成截屏图像,然后显示出来。为了减少带宽负载,通常采用组播的方式传输数据报文。这种方法是很多论文中的实现方法;参照《成都信息工程学院学报》2004年03期李鹏付永庆“一种实现局域网内屏幕共享的新方法”,《计算机与现代化》2011年09期汪彦黄雪华涂立“一种改进的应用于机房教学的屏幕共享方案”。

采用截屏图像逐帧传输方法实现屏幕共享的方法具有实现方法简单,可操作性强的特点,但是这种方法对局域网内的网络交换机的性能有比较高的要求;而且当今pc屏幕尺寸越来越大,分辨率越来越高,这种方法让局域网内网络承载更高的网络带宽要求,随之带来的网络报文丢包桌面共享丢帧的问题。



技术实现要素:

本发明针对上述现有技术存在的不足,提供一种采用截屏图像逐帧传输方法实现的局域网屏幕共享方案的丢帧优化方法,解决了以往网络数据丢包导致的无法拼接完成图像帧导致丢帧的问题。

本发明解决上述技术问题的技术方案如下:一种屏幕共享丢帧优化算法,包括如下步骤:

s1、截屏服务器对截屏产生的图像帧进行分块处理,将其划分为n个区域子图像,缓存起来;

s2、截屏开始后,保持一个发送队列,待此队列缓存超过m帧图像数据后,才进行图像帧的数据报文发送;

s3、每一帧屏幕截屏图像帧产生后,先跟队列中原有的图像帧进行区域一对一地比对,产生一个相同区域关联映射列表信息;

s4、将帧图像的n个区域子图像以jpg格式编码压缩后产生的数据流进行分段、打包成数据报文,然后将数据报文发送出去;同时把该帧图像对应的相同区域关联映射列表信息打包成控制报文发送出去;

s5、屏幕共享客户端在接收数据报文后,依次将分包数据组装起来,形成区域子图像,再组装成完整的帧图像;然后将该帧图像的区域子图像缓存起来,同样缓存m帧的区域子图像队列和m帧的帧图像队列;同时接收保存控制报文中帧图像的相同区域关联映射列表信息;

s6、当屏幕共享客户端帧图像队列超过m帧时将队首图像播放出来,并记下当前播放的帧数fp;

s7、对于帧数少于fp+a帧图像帧,其中,a为一个丢帧判断阈值,如果未接收完成,认为该图像帧已经丢失,则利用帧图像的相同区域关联映射列表信息和相邻帧区域子图像将丢帧图像丢失的子区域用其他帧的相同子区域进行修补,尝试生成一张完整图像;如果pn-1帧和pn帧相同区域较多,则可以利用pn-1帧子区域修复p帧;

s8、将修复帧图像放入帧图像队列等待显示。

在上述技术方案的基础上,本发明还可以做如下改进。

优选地,步骤s3中的所述比对为:对于拿来比对的两帧图像pn和pn-1,取出帧图像pn和pn-1内部的n个区域的子图像对其进行一一比较;新产生帧图像pn的第1个区域的子图像跟对比帧图像pn-1第1个区域的子图像进行比较,如果比较相同那么就把这两个子图像的序号1和pn,pn-1的帧数pn和pn-1分包保存到pn帧区域序号1的相同帧序号列表中和pn-1帧区域序号1的相同帧序号列表中。

优选地,所述优化算法中截屏服务器的逻辑流程包含如下步骤:

s101、开始;

s102、轮询截取屏幕图像;

s103、判断是否“有新帧图像”,若是,则进入s104;若否,则返回s103,再次进行判断;

s104、帧图像划分图像区域;

s105、将每一区域图像与之前m帧同一区域进行比较;

s106、产生帧图像相同区域映射关联列表;

s107、将帧图像子区域放入待发送队列;

s108、发送队列超过一定阈值开始发送列首帧图像;

s109、将帧图像区域子图像按jpg编码压缩后分包发送;

s110、将该图像帧相同区域映射关系列表信息打包发送;

s111、判断是否需要“程序退出”,若是,则进入s112;若否,则返回s103;

s112、结束。

优选地,所述优化算法中屏幕共享客户端的逻辑流程包含如下步骤:

s201、开始;

s202、轮询接收数据报文;

s203、判断是否“有数据包”,若是,则进入s204;若否,则返回s203,再次进行判断;

s204、将数据报文解析后,尝试生成一个区域子图像;

s205、判断是否“生成子图像帧”,若是,则进入s206;若否,则返回s203;

s206、将子图像缓存,并利用已有缓存图像子区域形成完整图像;

s207、将生成图像帧放入显示队列;

s208、判断是否“显示队列帧数超过阈值”,若是,则进入s209;若否,则返回s203;

s209、取出图像帧播放图像;

s210、判断是否“在播放阈值内存在丢帧”,若是,则进入s211;若否,则返回s203;

s211、根据图像帧相同区域映射关联信息,利用已经接收子区域修复丢帧图像;

s212、判断“是否结束”,若是,则进入s213;若否,则返回s203;

s213、结束。

本发明的有益效果在于:

在不显著增加新的带宽的情况下,利用屏幕截图产生的图像帧之间的关联关系在接收端修复因为丢包无法完整成像的图像帧,由此,降低了丢帧率,提供了屏幕共享的流畅性。

附图说明

图1为本发明的屏幕共享丢帧优化算法的帧图像区域划分示意图;

图2为本发明的屏幕共享丢帧优化算法的帧图像区域比较示意图;

图3为本发明的屏幕共享丢帧优化算法的帧图像相同区域映射关联列表;

图4为本发明的屏幕共享丢帧优化算法的帧图像子区域接收情况示意图;

图5为本发明的屏幕共享丢帧优化算法的截屏服务器逻辑流程图;

图6为本发明的屏幕共享丢帧优化算法的屏幕共享客户端逻辑流程图;

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

对于屏幕共享截屏产生的图像帧,相邻帧的图像有很高的相似性。本发明利用所处理的桌面截屏图像相邻帧图像的相似性的原理,来修补因为数据报文丢失而缺失部分图像数据的图像帧,以实现提升屏幕共享流畅性的目的。

本发明的屏幕共享丢帧优化算法包括如下步骤:

s1、对截屏产生的图像帧进行分块处理,即,对于一张图片,本发明将其划分为n个区域子图像,请参见图1所示,然后将其缓存起来。

s2、截屏开始后,保持一个发送队列,待此队列缓存超过m帧图像数据后,才进行图像帧的数据报文发送。

s3、每一帧屏幕截屏图像帧产生后,先跟队列中原有的图像帧进行区域一对一地比对,产生一个相同区域关联映射列表信息;

具体的比对为:对于拿来比对的两帧图像pn和pn-1,取出帧图像pn和pn-1内部的n个区域的子图像对其进行一一比较,举例来讲,新产生帧图像pn的第1个区域的子图像跟对比帧图像pn-1第1个区域的子图像进行比较,如果比较相同那么就把这两个子图像的序号1和pn,pn-1的帧数pn和pn-1分包保存到pn帧区域序号1的相同帧序号列表中和pn-1帧区域序号1的相同帧序号列表中,参见图2和图3。

s4、将帧图像的n个区域子图像以jpg格式编码压缩后产生的数据流进行分段、打包成数据报文,然后将数据报文发送出去;同时把该帧图像对应的相同区域关联映射列表信息打包成控制报文发送出去。

s5、屏幕共享客户端在接收数据报文后,依次将分包数据组装起来,形成区域子图像,再组装成完整的帧图像;然后将该帧图像的区域子图像缓存起来,同样缓存m帧的区域子图像队列和m帧的帧图像队列;同时接收保存控制报文中帧图像的相同区域关联映射列表信息。

s6、当屏幕共享客户端帧图像队列超过m帧时将队首图像播放出来,并记下当前播放的帧数fp。

s7、对于帧数少于fp+a帧(a为一个丢帧判断阈值)图像帧,如果未接收完成,本发明认为该图像帧已经丢失;这时本发明利用帧图像的相同区域关联映射列表信息和相邻帧区域子图像将丢帧图像丢失的子区域用其他帧的相同子区域进行修补,尝试生成一张完整图像,请参见图4所示,图中带o方块代表该区域接收完成,图中带x方块代表该区域数据丢失;如果pn-1帧和pn帧相同区域较多,则可以利用pn-1帧子区域修复p帧。

s8、将修复帧图像放入帧图像队列等待显示。

下面将结合步骤流程图进行详细的说明——

请先参照图5所示,其为本发明的屏幕共享丢帧优化算法的截屏服务器逻辑流程图;所述逻辑流程包含如下步骤:

s101、开始;

s102、轮询截取屏幕图像;

s103、判断是否“有新帧图像”,若是(y),则进入s104;若否(n),则返回s103,再次进行判断;

s104、帧图像划分图像区域;

s105、将每一区域图像与之前m帧同一区域进行比较;

s106、产生帧图像相同区域映射关联列表;

s107、将帧图像子区域放入待发送队列;

s108、发送队列超过一定阈值开始发送列首帧图像;

s109、将帧图像区域子图像按jpg编码压缩后分包发送;

s110、将该图像帧相同区域映射关系列表信息打包发送;

s111、判断是否需要“程序退出”,若是(y),则进入s112;若否(n),则返回s103;

s112、结束。

由此,截屏服务器结束工作,而后,进入到屏幕共享客户端;请再参照图6所示,其为本发明的屏幕共享丢帧优化算法的屏幕共享客户端逻辑流程图;所述逻辑流程包含如下步骤:

s201、开始;

s202、轮询接收数据报文;

s203、判断是否“有数据包”,若是(y),则进入s204;若否(n),则返回s203,再次进行判断;

s204、将数据报文解析后,尝试生成一个区域子图像;

s205、判断是否“生成子图像帧”,若是(y),则进入s206;若否(n),则返回s203;

s206、将子图像缓存,并利用已有缓存图像子区域形成完整图像;

s207、将生成图像帧放入显示队列;

s208、判断是否“显示队列帧数超过阈值”,若是(y),则进入s209;若否(n),则返回s203;

s209、取出图像帧播放图像;

s210、判断是否“在播放阈值内存在丢帧”,若是(y),则进入s211;若否(n),则返回s203;

s211、根据图像帧相同区域映射关联信息,利用已经接收子区域修复丢帧图像;

s212、判断“是否结束”,若是(y),则进入s213;若否(n),则返回s203;

s213、结束。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1