屏幕共享方法和装置与流程

文档序号:15925543发布日期:2018-11-14 01:06阅读:293来源:国知局

本发明涉及图像传输领域,具体而言,涉及一种屏幕共享方法和装置。

背景技术

屏幕共享是一种将本地终端(比如电脑或者手机)屏幕显示的内容通过网络传输给远程终端的技术,如图1所示为本地终端屏幕显示的内容,如图2所示,为将本地终端屏幕显示的内容通过网络传输给远程终端,从而在远程终端的屏幕上显示本地终端屏幕显示的内容。屏幕共享一般采用和实时视频聊天类似的技术,只是实时视频聊天采集的视频源是摄像头,而屏幕共享采集的视频源是屏幕内容。但是由于复用视频聊天的框架,以及ui显示的一致性,现有技术一般采用把屏幕通过截图然后缩放到统一的分辨率,然后再传输给远端。现有技术实现简单,但是由于硬件技术的发展,终端屏幕分辨率越来越高,普遍达到1080p(1920*1080),甚至4k(4096*2160),如果缩放到统一分辨率,对cpu的消耗非常大。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种屏幕共享方法和装置,以至少解决在屏幕共享的过程中,将屏幕截图缩放到统一的分辨率,对cpu消耗较大的技术问题。

根据本发明实施例的一个方面,提供了一种屏幕共享方法,包括:在将第一终端的屏幕共享给第二终端的过程中,对所述第一终端的屏幕进行截图,得到当前一帧图像;通过所述第一终端的图像处理单元gpu将所述当前一帧图像缩放到第一预定尺寸,得到第一图像;判断所述第一图像与第二图像之间的变化量是否大于第一预定阈值,其中,所述第二图像是通过所述gpu将上一帧图像缩小到所述第一预定尺寸所得到的图像,所述上一帧图像是在所述当前一帧图像之前对所述第一终端的屏幕进行截图所得到的图像;在判断出所述变化量大于所述第一预定阈值的情况下,将所述当前一帧图像经过编码后传输给所述第二终端。

根据本发明实施例的另一方面,还提供了另一种屏幕共享方法,包括:在将第一终端的屏幕共享给第二终端的过程中,对所述第二终端接收到的经过编码后的数据进行解码,得到当前一帧图像,其中,所述当前一帧图像是对所述第一终端的屏幕进行截图所得到的图像;通过所述第二终端的gpu将所述当前一帧图像缩放到预定尺寸,得到目标图像;通过所述第二终端的gpu将所述目标图像渲染显示到所述第二终端的屏幕上。

根据本发明实施例的一个方面,提供了一种屏幕共享装置,包括:截图单元,用于在将第一终端的屏幕共享给第二终端的过程中,对所述第一终端的屏幕进行截图,得到当前一帧图像;第一缩放单元,用于通过所述第一终端的图像处理单元gpu将所述当前一帧图像缩放到第一预定尺寸,得到第一图像;判断单元,用于判断所述第一图像与第二图像之间的变化量是否大于第一预定阈值,其中,所述第二图像是通过所述gpu将上一帧图像缩小到所述第一预定尺寸所得到的图像,所述上一帧图像是在所述当前一帧图像之前对所述第一终端的屏幕进行截图所得到的图像;传输单元,用于在判断出所述变化量大于所述第一预定阈值的情况下,将所述当前一帧图像经过编码后传输给所述第二终端。

根据本发明实施例的一个方面,提供了一种屏幕共享装置,包括:解码单元,用于在将第一终端的屏幕共享给第二终端的过程中,对所述第二终端接收到的经过编码后的数据进行解码,得到当前一帧图像,其中,所述当前一帧图像是对所述第一终端的屏幕进行截图所得到的图像;第二缩放单元,用于通过所述第二终端的gpu将所述当前一帧图像缩放到预定尺寸,得到目标图像;显示单元,用于通过所述第二终端的gpu将所述目标图像渲染显示到所述第二终端的屏幕上。

在本发明实施例中,采用在将第一终端的屏幕共享给第二终端的过程中,对所述第一终端的屏幕进行截图,得到当前一帧图像;通过所述第一终端的图像处理单元gpu将所述当前一帧图像缩放到第一预定尺寸,得到第一图像;判断所述第一图像与第二图像之间的变化量是否大于第一预定阈值,其中,所述第二图像是通过所述gpu将上一帧图像缩小到所述第一预定尺寸所得到的图像,所述上一帧图像是在所述当前一帧图像之前对所述第一终端的屏幕进行截图所得到的图像;在判断出所述变化量大于所述第一预定阈值的情况下,将所述当前一帧图像经过编码后传输给所述第二终端,通过对第一终端的屏幕进行截图得到前一帧图像和当前一帧图像,并通过gpu对前一帧图像进行缩放得到第二图像,对当前一帧图像进行缩放得到第一图像,在第一图像与第二图像之间的变化量大于第一预定阈值时,将当前一帧图像发送给第二终端,达到了第一终端与第二终端屏幕共享的目的,从而实现了降低cpu消耗的技术效果,进而解决了在屏幕共享的过程中,将屏幕截图缩放到统一的分辨率,对cpu消耗较大的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据现有技术的屏幕共享中被共享屏幕的示意图;

图2是根据现有技术的屏幕共享中显示共享屏幕的示意图;

图3是根据本发明实施例的系统架构的示意图;

图4是根据本发明实施例的一种可选的屏幕共享方法的流程图;

图5根据本发明实施例的用于实现屏幕共享的系统架构图;

图6是根据本发明实施例的又一种可选的共享屏幕方法的流程图;

图7是根据本发明实施例的另一种可选的屏幕共享方法的流程图;

图8是根据本发明实施例的一种可选的屏幕共享装置的示意图;

图9是根据本发明实施例的另一种可选的屏幕共享装置的示意图;

图10是根据本发明实施例的终端的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种可以通过本申请装置实施例执行的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

根据本发明实施例,提供了一种屏幕共享方法。

可选地,在本实施例中,上述屏幕共享方法可以应用于如图3所示的终端302和服务器304所构成的硬件环境中。如图3所示,终端302通过网络与服务器304进行连接,上述网络包括但不限于:移动通信网络、广域网、城域网或局域网,终端302可以是手机终端,也可以是pc终端、笔记本终端或平板电脑终端。

图4是根据本发明实施例的一种可选的屏幕共享方法的流程图,以下结合图4对本发明实施例所提供的屏幕共享方法做具体介绍,如图4所示,该屏幕共享方法主要包括如下步骤s402至步骤s408:

步骤s402,在将第一终端的屏幕共享给第二终端的过程中,对第一终端的屏幕进行截图,得到当前一帧图像。将第一终端的屏幕共享给第二终端就是将第一终端的屏幕内容作为视频源,按照一定的采集频率对第一终端的屏幕内容进行采集,即对第一终端的屏幕进行截图,得到第一终端屏幕的图像帧,并将截图得到的图像帧发送给第二终端,以在第二终端的屏幕上显示第一终端的屏幕内容。其中,采集频率为预设频率,可以根据第一终端的屏幕显示内容的变化情况,或者对第一终端与第二终端的共享的实时性需求进行设置。

步骤s404,通过第一终端的图像处理单元gpu将当前一帧图像缩放到第一预定尺寸,得到第一图像。当对第一终端的屏幕进行截图得到当前一帧的图像之后,由第一终终端的gpu对当前一帧图像进行缩放,得到第一图像,第一图像与当前屏幕的显示内容相同,但大小比例不同,第一图像可以同时显示在第一终端的显示器上,对当前一帧图像进行缩放的比例可以根据第一终端gpu的运行能力设置为预设比例,也可以根据第一图像在第一终端显示器上的显示窗口的大小进行调整。例如:当第一图像的显示窗口较大时,当前一帧图像的缩小比例较小,当第一图像的显示窗口较小时,当前一帧图像的缩小比例较大,第一图像的显示窗口可以根据显示需求进行调整。

步骤s406,判断第一图像与第二图像之间的变化量是否大于第一预定阈值,其中,第二图像是通过gpu将上一帧图像缩小到第一预定尺寸所得到的图像,上一帧图像是在当前一帧图像之前对第一终端的屏幕进行截图所得到的图像。第一图像与第二图像具有相同的尺寸,通过对第一图像与第二图像进行比较可以确定第一图像与第二图像之间的变化量,也就是当前一帧图像与上一帧图像的变化量,并在变化量大于第一预定阈值时,认为当前一帧图像与上一帧的变化较大,在变化量小于等于第一预定阈值时,认为当前一帧图像与上一帧的变化较小,而在变化量为0时,认为当前一帧图像与上一帧图像相比无变化,即当前一帧图像与上一帧图像相同。

步骤s408,在判断出变化量大于第一预定阈值的情况下,将当前一帧图像经过编码后传输给第二终端。变化量大于第一预设阈值,表明当前一帧图像与上一帧图像的变化较大,为了确保第一终端与第二终端屏幕共享时的显示效果,对当前一帧图像进行编码,并将编码后的当前一帧图像发送给第二终端。

在本发明实施例中,采用在将第一终端的屏幕共享给第二终端的过程中,对第一终端的屏幕进行截图,得到当前一帧图像;通过第一终端的图像处理单元gpu将当前一帧图像缩放到第一预定尺寸,得到第一图像;判断第一图像与第二图像之间的变化量是否大于第一预定阈值,其中,第二图像是通过gpu将上一帧图像缩小到第一预定尺寸所得到的图像,上一帧图像是在当前一帧图像之前对第一终端的屏幕进行截图所得到的图像;在判断出变化量大于第一预定阈值的情况下,将当前一帧图像经过编码后传输给第二终端,通过对第一终端的屏幕进行截图得到前一帧图像和当前一帧图像,并通过gpu对前一帧图像进行缩放得到第二图像,对当前一帧图像进行缩放得到第一图像,在第一图像与第二图像之间的变化量大于第一预定阈值时,将当前一帧图像发送给第二终端,达到了第一终端与第二终端屏幕共享的目的,从而实现了降低cpu消耗的技术效果,进而解决了在屏幕共享的过程中,将屏幕截图缩放到统一的分辨率,对cpu消耗较大的技术问题。

作为本发明实施例的一种可选的实施方式,在判断出变化量大于第一预定阈值的情况下,将当前一帧图像经过编码后传输给第二终端包括:在判断出变化量大于第一预定阈值的情况下,按照第一帧率将当前一帧图像经过编码后传输给第二终端;在判断第一图像与第二图像之间的变化量是否大于第一预定阈值之后,方法还包括:在判断出变化量小于或等于第一预定阈值的情况下,按照第二帧率将当前一帧图像经过编码后传输给第二终端,或者,取消将当前一帧图像传输给第二终端,其中,第二帧率小于第一帧率。

当变化量大于第一预定阈值时,表明第一终端的当前一帧图像与上一帧图像的变化较大,也就说明了第一终端的屏幕上显示的内容变化较快,因此,需要将当前一帧图像传输给第二终端,以确保屏幕共享时的显示效果,在本发明实施例中,当变化量大于第一预定阈值时,按照第一帧率对当前一帧图像进行编码后传输给第二终端。如果对第一图像与第二图像进行比较,判断出变化量小于或者等于第一预定阈值时,表明第一终端的当前一帧图像与上一帧图像的变化不大,即第一终端的屏幕上显示的内容变化较快,则可以按照第二帧率对当前一帧图像进行编码后传输给第二终端,其中,第二帧率要小于第一帧率,即采用较低的帧率对当前一帧图像进行编码并传输给第二终端。

可选地,在判断出变化量小于或等于第一预定阈值的情况下,按照第二帧率将当前一帧图像经过编码后传输给第二终端,或者,取消将当前一帧图像传输给第二终端包括:在判断出变化量为0的情况下,取消将当前一帧图像传输给第二终端;在判断出变化量不为0、且小于或等于第一预定阈值的情况下,按照第二帧率将当前一帧图像经过编码后传输给第二终端。

在本发明实施例中,变化量小于或者等于第一预定阈值可分为两种情况,第一种情况:通过第一图像和第二图像的比较发现,变量化为0,则可以将帧率下降为0,以取消将当前一帧图像传输给第二终端。第二种情况:通过第一图像和第二图像的比较发现,变化量小于或者等于第一预定阈值,且变化量大于0,则按照小于第一帧率的第二帧率对当前一帧图像进行编码后传输给第二终端。

在本发明实施例中,cpu对图像的编码及传输需要占用一定的资源,根据第一终端屏幕显示内容的变化情况,调整当前一帧的帧率,在屏幕显示内容变化较快时,按照较大的帧率对当前一帧图像进行编码并传输给第二终端,并在屏幕显示内容变化较慢时,按照较小的帧率对当前一帧图像进行编码并传输给第二终端,而在屏幕显示内容无变化时,将帧率下降为0,从而节省cpu的资源消耗。

作为本发明实施例的一种可选的实施方式,通过第一终端的gpu将当前一帧图像缩放到第一预定尺寸,得到第一图像包括:通过调用opengl接口来控制gpu将当前一帧图像缩放到第一预定尺寸。在本发明实施例中,还可以通过调用opengl接口来控制gpu将第一图像渲染到第一终端的显示屏上。

图5是根据本发明实施例的用于实现屏幕共享的系统架构图,第一终端可以采用图5所示的系统架构,其中,屏幕录制工具和opengl渲染层组成屏幕分享组件,其中,屏幕录制工具将第一终端的屏幕作为视频采集源,通过对第一屏幕进行截图,实现对第一终端的屏幕视频的采集;opengl渲染层实现了对当前一帧图像的缩放得到第一图像,还可将第一图像渲染到第一终端的显示屏幕上;视频编解码器、视频流控和网络传输组件组成寮时视频引擎,实现了对当前一帧图像的编码,视频流控以及将编码后的图像传输给第二终端。

作为本发明实施例的一种可选的实施方式,判断第一图像与第二图像之间的变化量是否大于第一预定阈值包括:在第一图像中获取第一目标像素点的数量,其中,第一目标像素点的像素值与第二图像中的第二目标像素点的像素值之间的差值大于第二预定阈值,第一目标像素点在第一图像中的位置与第二目标像素点在第二图像中的位置相同;在第一目标像素点的数量大于第一预定阈值的情况下,判断出第一图像与第二图像之间的变化量大于第一预定阈值,或者,在第一目标像素点的数量与第一图像中的像素点的数量之间的比值大于第一预定阈值的情况下,判断出第一图像与第二图像之间的变化量大于第一预定阈值。

图像是由像素点构成的,可以通过比较第一图像中和像素点和第二图像中的像素点来实现对第一图像和第二图像的比较,本发明实施例中,第一图像与第二图像的尺寸相同,则可以对在第一图像和第二图像中位于相同位置的两个像素点进行比较,并在两个素像点的差值大于第二预定阈值时,认为两个像素点不相同,在两不相的两个像素点中,第一图像中的像素点为第一像素点,第二图像中的像素点为第二目标像素点,在本发明实施例中,可以通过不同的方式判断第一图像与第二图像之间的变化量:一种方式,当第一像素点的数量大于第一预定阈值时,即认为第一图像与第二图像之间的变化量大于第一预定阈值;另一种方式,可以在第一像素点的数量与第一图像中的全部像素点的数量之间的比值大于第一预设阈值时,认为第一图像与第二图像之间的变化量大于第一预定阈值。

在本发明实施例中,在将当前一帧图像经过编码后传输给第二终端之后,方法还包括:对第二终端接收到的经过编码后的数据进行解码,得到当前一帧图像;通过第二终端的gpu将当前一帧图像缩放到第二预定尺寸,得到第三图像;通过第二终端的gpu将第三图像渲染显示到第二终端的屏幕上。第二终端在接收到第一终端发送的编码后的前一帧图像之后,对其进行解码以得到该前一帧图像,第二终端可以根据显示窗口的尺寸确定第二预定尺寸,并通过gpu将该前一帧图像缩放到第二预定尺寸,得到第三图像,最后通过gpu将第三图像渲染到第二终端的屏幕上。可选地,第二终端也可以采用图5所示的系统架构。

图6是根据本发明实施例的又一种可选的共享屏幕方法的流程图,其中,本地相当于第一终端,远端相当于第二终端,由第一终端向第二终端共享第一张端的屏幕,如图6所示,该方法包括如下步骤:

步骤1,初始化。第一终端和第二终端完成屏幕共享所必要的初始化工作,例如初始化视频流编解码器,分配内存,启动截图定时器,设置opengl渲染参数等。

步骤2,屏幕截图。当本地向远端发起屏幕共享之后,本地开始对屏幕进行截图,得到当前的屏幕图像,并暂时存放于内存中,作为一帧视频图像的原始数据(相当于当前一帧图像)。

步骤3,opengl缩放。本地调用opengl接口将步骤2中保存的原如数据传递给显卡,通过gpu缩放到预设尺寸,得到缩放后的图像(相当于第一图像)。

步骤4,opengl渲染。通过调用opengl接口将缩放完的图像渲染到本地屏幕上。

步骤5和步骤6,视频流编码。对上述原始数据的缩放完的图像和上一帧视频图像的缩放完的图像进行比较,从而检测屏幕内容的变化情况,在检测到屏幕内容未变化时(相当于变化量为0)帧率降为0,在检测到屏幕内容的变化量小于或者等于预设阈值时,将帧率下降到一个较小的值,在检测到屏幕内容的变化量大于预设阈值时,将帧率保持在一个较大的值。按照上述的帧率对原始数据进行视频流编码,完成数据的压缩。

步骤7,网络传输及视频流解码。将编码后的数据通过网络发送给远端,远端在接收到数据之后,对其进行解码操作,得到上述原始数据。

步骤8,opengl缩放。远端通过调用opengl接口将原始数据缩放到显示所需的尺寸。

步骤9,opengl渲染。远端通过调用opengl接口将缩放后的原始数据渲染到屏幕上。从而完成对本地屏幕当前屏幕图像的一次共享。

根据本发明实施例,提供了另一种屏幕共享方法。图7是根据本发明实施例的另一种可选的屏幕共享方法的流程图,如图7所示,该屏幕共享方法主要包括如下步骤s702至步骤s706:

步骤s702,在将第一终端的屏幕共享给第二终端的过程中,对第二终端接收到的经过编码后的数据进行解码,得到当前一帧图像,其中,当前一帧图像是对第一终端的屏幕进行截图所得到的图像。第一终端的作为屏幕共享过程中的视频源,按照一定的采集频率对第一终端的屏幕内容进行采集,即对第一终端的屏幕进行截图,得到第一终端屏幕的,并将截图得到的当前一帧图像进行编码后发送给第二终端,以在第二终端的屏幕上显示第一终端的屏幕内容。第二终端接收到的数据为编码后的图像,通过该数据进行解码得到第一屏幕当前一帧图像。

步骤s704,通过第二终端的gpu将当前一帧图像缩放到预定尺寸,得到目标图像。第二终端可以根据显示窗口的尺寸确定预定尺寸,并通过gpu将该前一帧图像缩放到预定尺寸,得到目标图像。

步骤s706,通过第二终端的gpu将目标图像渲染显示到第二终端的屏幕上。

在本发明实施例中,通过对第一终端的屏幕进行截图得到前一帧图像进行编码并发送给第二终端,第二终端对其进行解码并通过gpu将当前一帧图像缩放到预定尺寸,得到目标图像,最后通过gpu将目标图像渲染显示到第二终端的屏幕上,达到了第一终端与第二终端屏幕共享的目的,从而实现了降低cpu消耗的技术效果,进而解决了在屏幕共享的过程中,将屏幕截图缩放到统一的分辨率,对cpu消耗较大的技术问题。

作为本发明实施例的一种可选的实施方式,通过第二终端的gpu将当前一帧图像缩放到预定尺寸,得到目标图像包括:通过调用opengl接口来控制gpu将当前一帧图像缩放到预定尺寸。在本发明实施例中,第二终端还可以通过调用opengl接口来控制gpu将目标图像渲染到第二终端的显示屏上。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述屏幕共享方法的屏幕共享装置,该屏幕共享装置主要用于执行本发明实施例上述内容所提供的屏幕共享方法,以下对本发明实施例所提供的屏幕共享装置做具体介绍:

图8是根据本发明实施例的一种可选的屏幕共享装置的示意图,如图8所示,该屏幕共享装置主要包括:

截图单元810,用于在将第一终端的屏幕共享给第二终端的过程中,对第一终端的屏幕进行截图,得到当前一帧图像。将第一终端的屏幕共享给第二终端就是将第一终端的屏幕内容作为视频源,按照一定的采集频率对第一终端的屏幕内容进行采集,即对第一终端的屏幕进行截图,得到第一终端屏幕的图像帧,并将截图得到的图像帧发送给第二终端,以在第二终端的屏幕上显示第一终端的屏幕内容。其中,采集频率为预设频率,可以根据第一终端的屏幕显示内容的变化情况,或者对第一终端与第二终端的共享的实时性需求进行设置。

第一缩放单元820,用于通过第一终端的图像处理单元gpu将当前一帧图像缩放到第一预定尺寸,得到第一图像。当对第一终端的屏幕进行截图得到当前一帧的图像之后,由第一终终端的gpu对当前一帧图像进行缩放,得到第一图像,第一图像与当前屏幕的显示内容相同,但大小比例不同,第一图像可以同时显示在第一终端的显示器上,对当前一帧图像进行缩放的比例可以根据第一终端gpu的运行能力设置为预设比例,也可以根据第一图像在第一终端显示器上的显示窗口的大小进行调整。例如:当第一图像的显示窗口较大时,当前一帧图像的缩小比例较小,当第一图像的显示窗口较小时,当前一帧图像的缩小比例较大,第一图像的显示窗口可以根据显示需求进行调整。

判断单元830,用于判断第一图像与第二图像之间的变化量是否大于第一预定阈值,其中,第二图像是通过gpu将上一帧图像缩小到第一预定尺寸所得到的图像,上一帧图像是在当前一帧图像之前对第一终端的屏幕进行截图所得到的图像。第一图像与第二图像具有相同的尺寸,通过对第一图像与第二图像进行比较可以确定第一图像与第二图像之间的变化量,也就是当前一帧图像与上一帧图像的变化量,并在变化量大于第一预定阈值时,认为当前一帧图像与上一帧的变化较大,在变化量小于等于第一预定阈值时,认为当前一帧图像与上一帧的变化较小,而在变化量为0时,认为当前一帧图像与上一帧图像相比无变化,即当前一帧图像与上一帧图像相同。

第一传输单元840,用于在判断出变化量大于第一预定阈值的情况下,将当前一帧图像经过编码后传输给第二终端。变化量大于第一预设阈值,表明当前一帧图像与上一帧图像的变化较大,为了确保第一终端与第二终端屏幕共享时的显示效果,对当前一帧图像进行编码,并将编码后的当前一帧图像发送给第二终端。

在本发明实施例中,通过对第一终端的屏幕进行截图得到前一帧图像和当前一帧图像,并通过gpu对前一帧图像进行缩放得到第二图像,对当前一帧图像进行缩放得到第一图像,在第一图像与第二图像之间的变化量大于第一预定阈值时,将当前一帧图像发送给第二终端,达到了第一终端与第二终端屏幕共享的目的,从而实现了降低cpu消耗的技术效果,进而解决了在屏幕共享的过程中,将屏幕截图缩放到统一的分辨率,对cpu消耗较大的技术问题。

可选地,第一传输单元包括:第一传输模块,用于在判断出变化量大于第一预定阈值的情况下,按照第一帧率将当前一帧图像经过编码后传输给第二终端;装置还包括:第二传输单元,用于在判断第一图像与第二图像之间的变化量是否大于第一预定阈值之后,在判断出变化量小于或等于第一预定阈值的情况下,按照第二帧率将当前一帧图像经过编码后传输给第二终端,或者,取消将当前一帧图像传输给第二终端,其中,第二帧率小于第一帧率。

当变化量大于第一预定阈值时,表明第一终端的当前一帧图像与上一帧图像的变化较大,也就说明了第一终端的屏幕上显示的内容变化较快,因此,需要将当前一帧图像传输给第二终端,以确保屏幕共享时的显示效果,在本发明实施例中,当变化量大于第一预定阈值时,按照第一帧率对当前一帧图像进行编码后传输给第二终端。如果对第一图像与第二图像进行比较,判断出变化量小于或者等于第一预定阈值时,表明第一终端的当前一帧图像与上一帧图像的变化不大,即第一终端的屏幕上显示的内容变化较快,则可以按照第二帧率对当前一帧图像进行编码后传输给第二终端,其中,第二帧率要小于第一帧率,即采用较低的帧率对当前一帧图像进行编码并传输给第二终端。

可选地,第二传输单元包括:取消模块,用于在判断出变化量为0的情况下,取消将当前一帧图像传输给第二终端;第二传输模块,用于在判断出变化量不为0、且小于或等于第一预定阈值的情况下,按照第二帧率将当前一帧图像经过编码后传输给第二终端。

在本发明实施例中,变化量小于或者等于第一预定阈值可分为两种情况,第一种情况:通过第一图像和第二图像的比较发现,变量化为0,则可以将帧率下降为0,以取消将当前一帧图像传输给第二终端。第二种情况:通过第一图像和第二图像的比较发现,变化量小于或者等于第一预定阈值,且变化量大于0,则按照小于第一帧率的第二帧率对当前一帧图像进行编码后传输给第二终端。

在本发明实施例中,cpu对图像的编码及传输需要占用一定的资源,根据第一终端屏幕显示内容的变化情况,调整当前一帧的帧率,在屏幕显示内容变化较快时,按照较大的帧率对当前一帧图像进行编码并传输给第二终端,并在屏幕显示内容变化较慢时,按照较小的帧率对当前一帧图像进行编码并传输给第二终端,而在屏幕显示内容无变化时,将帧率下降为0,从而节省cpu的资源消耗。

可选地,第一缩放单元包括:第一控制模块,用于通过调用opengl接口来控制gpu将当前一帧图像缩放到第一预定尺寸。在本发明实施例中,还可以通过调用opengl接口来控制gpu将第一图像渲染到第一终端的显示屏上。

图5是根据本发明实施例的用于实现屏幕共享的系统架构图,第一终端可以采用图5所示的系统架构,其中,屏幕录制工具和opengl渲染层组成屏幕分享组件,其中,屏幕录制工具将第一终端的屏幕作为视频采集源,通过对第一屏幕进行截图,实现对第一终端的屏幕视频的采集;opengl渲染层实现了对当前一帧图像的缩放得到第一图像,还可将第一图像渲染到第一终端的显示屏幕上;视频编解码器、视频流控和网络传输组件组成寮时视频引擎,实现了对当前一帧图像的编码,视频流控以及将编码后的图像传输给第二终端。

可选地,判断单元包括:获取模块,用于在第一图像中获取第一目标像素点的数量,其中,第一目标像素点的像素值与第二图像中的第二目标像素点的像素值之间的差值大于第二预定阈值,第一目标像素点在第一图像中的位置与第二目标像素点在第二图像中的位置相同;判断模块,用于在第一目标像素点的数量大于第一预定阈值的情况下,判断出第一图像与第二图像之间的变化量大于第一预定阈值,或者,在第一目标像素点的数量与第一图像中的像素点的数量之间的比值大于第一预定阈值的情况下,判断出第一图像与第二图像之间的变化量大于第一预定阈值。

图像是由像素点构成的,可以通过比较第一图像中和像素点和第二图像中的像素点来实现对第一图像和第二图像的比较,本发明实施例中,第一图像与第二图像的尺寸相同,则可以对在第一图像和第二图像中位于相同位置的两个像素点进行比较,并在两个素像点的差值大于第二预定阈值时,认为两个像素点不相同,在两不相的两个像素点中,第一图像中的像素点为第一像素点,第二图像中的像素点为第二目标像素点,在本发明实施例中,可以通过不同的方式判断第一图像与第二图像之间的变化量:一种方式,当第一像素点的数量大于第一预定阈值时,即认为第一图像与第二图像之间的变化量大于第一预定阈值;另一种方式,可以在第一像素点的数量与第一图像中的全部像素点的数量之间的比值大于第一预设阈值时,认为第一图像与第二图像之间的变化量大于第一预定阈值。

可选地,装置还包括:第一解码单元,用于在将当前一帧图像经过编码后传输给第二终端之后,对第二终端接收到的经过编码后的数据进行解码,得到当前一帧图像;第二缩放单元,用于通过第二终端的gpu将当前一帧图像缩放到第二预定尺寸,得到第三图像;渲染单元,用于通过第二终端的gpu将第三图像渲染显示到第二终端的屏幕上。第二终端在接收到第一终端发送的编码后的前一帧图像之后,对其进行解码以得到该前一帧图像,第二终端可以根据显示窗口的尺寸确定第二预定尺寸,并通过gpu将该前一帧图像缩放到第二预定尺寸,得到第三图像,最后通过gpu将第三图像渲染到第二终端的屏幕上。可选地,第二终端也可以采用图5所示的系统架构。

根据本发明实施例,提供了另一种屏幕共享装置。图9是根据本发明实施例的另一种可选的屏幕共享装置的示意图,如图9所示,该屏幕共享装置主要包括:

第二解码单元910,用于在将第一终端的屏幕共享给第二终端的过程中,对第二终端接收到的经过编码后的数据进行解码,得到当前一帧图像,其中,当前一帧图像是对第一终端的屏幕进行截图所得到的图像。第一终端的作为屏幕共享过程中的视频源,按照一定的采集频率对第一终端的屏幕内容进行采集,即对第一终端的屏幕进行截图,得到第一终端屏幕的,并将截图得到的当前一帧图像进行编码后发送给第二终端,以在第二终端的屏幕上显示第一终端的屏幕内容。第二终端接收到的数据为编码后的图像,通过该数据进行解码得到第一屏幕当前一帧图像。

第三缩放单元920,用于通过第二终端的gpu将当前一帧图像缩放到预定尺寸,得到目标图像。第二终端可以根据显示窗口的尺寸确定预定尺寸,并通过gpu将该前一帧图像缩放到预定尺寸,得到目标图像。

显示单元930,用于通过第二终端的gpu将目标图像渲染显示到第二终端的屏幕上。

在本发明实施例中,通过对第一终端的屏幕进行截图得到前一帧图像进行编码并发送给第二终端,第二终端对其进行解码并通过gpu将当前一帧图像缩放到预定尺寸,得到目标图像,最后通过gpu将目标图像渲染显示到第二终端的屏幕上,达到了第一终端与第二终端屏幕共享的目的,从而实现了降低cpu消耗的技术效果,进而解决了在屏幕共享的过程中,将屏幕截图缩放到统一的分辨率,对cpu消耗较大的技术问题。

可选地,第三缩放单元包括:第二控制模块,用于通过调用opengl接口来控制gpu将当前一帧图像缩放到预定尺寸。在本发明实施例中,第二终端还可以通过调用opengl接口来控制gpu将目标图像渲染到第二终端的显示屏上。

实施例3

根据本发明实施例,还提供了一种用于实施上述屏幕共享方法的终端,如图10所示,该终端主要包括处理器1001、显示器1002、存储器1003和网络接口1004,其中:

存储器1003主要用于存储对第一终端的屏幕进行截图得到的图像。

网络接口1004主要用于第二终端进行通信,当前一帧图像经过编码后传输给第二终端。

显示器1002主要用于显示第一终端的屏幕进行截图得到的当前一帧图像以及将当前一帧图像缩放到第一预定尺寸得到的第一图像。

处理器1001主要用于执行如下操作:

在将第一终端的屏幕共享给第二终端的过程中,对第一终端的屏幕进行截图,得到当前一帧图像;通过第一终端的图像处理单元gpu将当前一帧图像缩放到第一预定尺寸,得到第一图像;判断第一图像与第二图像之间的变化量是否大于第一预定阈值,其中,第二图像是通过gpu将上一帧图像缩小到第一预定尺寸所得到的图像,上一帧图像是在当前一帧图像之前对第一终端的屏幕进行截图所得到的图像;在判断出变化量大于第一预定阈值的情况下,将当前一帧图像经过编码后传输给第二终端。

处理器1001还用于在判断出变化量大于第一预定阈值的情况下,按照第一帧率将当前一帧图像经过编码后传输给第二终端;在判断出变化量小于或等于第一预定阈值的情况下,按照第二帧率将当前一帧图像经过编码后传输给第二终端,或者,取消将当前一帧图像传输给第二终端,其中,第二帧率小于第一帧率。

处理器1001还用于在判断出变化量为0的情况下,取消将当前一帧图像传输给第二终端;在判断出变化量不为0、且小于或等于第一预定阈值的情况下,按照第二帧率将当前一帧图像经过编码后传输给第二终端。

处理器1001还用于通过调用opengl接口来控制gpu将当前一帧图像缩放到第一预定尺寸。

处理器1001还用于在第一图像中获取第一目标像素点的数量,其中,第一目标像素点的像素值与第二图像中的第二目标像素点的像素值之间的差值大于第二预定阈值,第一目标像素点在第一图像中的位置与第二目标像素点在第二图像中的位置相同;在第一目标像素点的数量大于第一预定阈值的情况下,判断出第一图像与第二图像之间的变化量大于第一预定阈值,或者,在第一目标像素点的数量与第一图像中的像素点的数量之间的比值大于第一预定阈值的情况下,判断出第一图像与第二图像之间的变化量大于第一预定阈值。

处理器1001还用于对第二终端接收到的经过编码后的数据进行解码,得到当前一帧图像;通过第二终端的gpu将当前一帧图像缩放到第二预定尺寸,得到第三图像;通过第二终端的gpu将第三图像渲染显示到第二终端的屏幕上。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例的屏幕共享方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于移动通信网络、广域网、城域网或局域网的网络中的多个网络设备中的至少一个网络设备。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

s1,在将第一终端的屏幕共享给第二终端的过程中,对第一终端的屏幕进行截图,得到当前一帧图像;

s2,通过第一终端的图像处理单元gpu将当前一帧图像缩放到第一预定尺寸,得到第一图像;

s3,判断第一图像与第二图像之间的变化量是否大于第一预定阈值,其中,第二图像是通过gpu将上一帧图像缩小到第一预定尺寸所得到的图像,上一帧图像是在当前一帧图像之前对第一终端的屏幕进行截图所得到的图像;

s4,在判断出变化量大于第一预定阈值的情况下,将当前一帧图像经过编码后传输给第二终端。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行在判断出变化量大于第一预定阈值的情况下,按照第一帧率将当前一帧图像经过编码后传输给第二终端;在判断出变化量小于或等于第一预定阈值的情况下,按照第二帧率将当前一帧图像经过编码后传输给第二终端,或者,取消将当前一帧图像传输给第二终端,其中,第二帧率小于第一帧率。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行在判断出变化量为0的情况下,取消将当前一帧图像传输给第二终端;在判断出变化量不为0、且小于或等于第一预定阈值的情况下,按照第二帧率将当前一帧图像经过编码后传输给第二终端。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行通过调用opengl接口来控制gpu将当前一帧图像缩放到第一预定尺寸。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行在第一图像中获取第一目标像素点的数量,其中,第一目标像素点的像素值与第二图像中的第二目标像素点的像素值之间的差值大于第二预定阈值,第一目标像素点在第一图像中的位置与第二目标像素点在第二图像中的位置相同;在第一目标像素点的数量大于第一预定阈值的情况下,判断出第一图像与第二图像之间的变化量大于第一预定阈值,或者,在第一目标像素点的数量与第一图像中的像素点的数量之间的比值大于第一预定阈值的情况下,判断出第一图像与第二图像之间的变化量大于第一预定阈值。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行对第二终端接收到的经过编码后的数据进行解码,得到当前一帧图像;通过第二终端的gpu将当前一帧图像缩放到第二预定尺寸,得到第三图像;通过第二终端的gpu将第三图像渲染显示到第二终端的屏幕上。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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