投屏控制方法、装置、计算机可读存储介质和计算机设备与流程

文档序号:20837406发布日期:2020-05-22 17:03阅读:180来源:国知局
投屏控制方法、装置、计算机可读存储介质和计算机设备与流程

本申请涉及计算机技术领域,特别是涉及一种投屏控制方法、装置、计算机可读存储介质和计算机设备。



背景技术:

随着计算机技术的发展,个人计算机(pc,personalcomputer)成为人们日常生活和工作中不可或缺的一部分。目前,在许多场景下,比如教学或者会议等,需要将相关内容通过尺寸较大的显示屏进行展示,使得参与者均能够便捷地观看到意图观看的内容。

在传统的投屏技术中,通常是将整个投屏终端屏幕上的画面全部投屏到投屏设备。这样在投屏过程中,投屏终端屏幕上的冗余画面会影响投屏效果,降低投屏质量。



技术实现要素:

基于此,有必要针对目前投屏质量交底的技术问题,提供一种投屏控制方法、装置、计算机可读存储介质和计算机设备。

一种投屏控制方法,包括:

在当前屏幕所对应的窗口集合中定位目标窗口;

调用操作系统接口,获取所述窗口集合中除所述目标窗口之外的各窗口相应的窗口位置;

将所述窗口集合中除所述目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置叠加,得到投屏数据;

发送所述投屏数据,发送的所述投屏数据用于进行投屏显示。

一种投屏控制装置,包括:

定位模块,用于在当前屏幕所对应的窗口集合中定位目标窗口;

调用模块,用于调用操作系统接口,获取所述窗口集合中除所述目标窗口之外的各窗口相应的窗口位置;

叠加模块,用于将所述窗口集合中除所述目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置叠加,得到投屏数据;

发送模块,用于发送所述投屏数据,发送的所述投屏数据用于进行投屏显示。

一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述投屏控制方法的步骤。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述投屏控制方法的步骤。

上述投屏控制方法、装置、计算机可读存储介质和计算机设备,在当前屏幕所对应的窗口集合中定位目标窗口后,自动调用操作系统接口,获取该窗口集合中除目标窗口之外的各窗口相应的窗口位置。这样,即可将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置叠加,得到投屏数据,也就是排除了目标窗口的屏幕图像;再发送该投屏数据进行投屏,不再将整个投屏终端屏幕上的画面全部投屏到投屏设备上,避免了冗余画面影响投屏效果,提高了投屏质量。

附图说明

图1为一个实施例中投屏控制方法的应用环境图;

图2为一个实施例中投屏控制方法的流程示意图;

图3为一个实施例中投屏终端的屏幕界面图;

图4为一个实施例中投屏终端展示投屏控制界面的屏幕界面图;

图5为一个实施例中投屏设备接收到投屏数据后显示的界面示意图;

图6为另一个实施例中投屏设备接收到投屏数据后显示的界面示意图;

图7为一个实施例中不采集目标窗口的屏幕数据的流程图;

图8为另一个实施例中投屏设备接收到投屏数据后显示的界面示意图;

图9为另一个实施例中投屏设备接收到投屏数据后显示的界面示意图;

图10为一个实施例中选择某个窗口的屏幕数据进行采集的流程图;

图11为另一个实施例中投屏设备接收到投屏数据后显示的界面示意图;

图12为一个实施例中投屏控制装置的结构框图;

图13为另一个实施例中投屏控制装置的结构框图;

图14为一个实施例中计算机设备的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中投屏控制方法的应用环境图。参照图1,该投屏控制方法应用于投屏控制系统。该投屏控制系统包括投屏终端110、服务器120、投屏设备130和显示器140。其中,投屏终端110与投屏设备130分别通过网络与服务器120连接,显示器140与投屏设备130连接。投屏终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑或笔记本电脑等中的至少一种。服务器120具体可以是独立的服务器,也可以是多个独立的服务器组成的服务器集群。投屏设备130具体可以是投屏盒子或者投影仪等电子设备。可以理解,图1中所示的硬件设备,仅仅是与本申请方案应用环境相关的部分硬件设备,并不构成对本申请方案所应用于的环境的限定,具体的硬件设备可以包括比图中所示更多或更少的硬件设备,比如,当投屏设备130是投屏盒子时,该应用环境可包括显示器140,当投屏设备130是投影仪时,该应用环境可以不包括显示器140。

图2为一个实施例中投屏控制方法的流程示意图。本实施例主要以该投屏控制方法应用于图1中的投屏终端110来举例说明。参照图2,该投屏控制方法具体包括如下步骤:

s202,在当前屏幕所对应的窗口集合中定位目标窗口。

其中,窗口是计算机设备采用窗口形式在屏幕中进行显示的用户界面。用户可以通过窗口与计算机设备进行人机交互。计算机设备可以根据用户触发的预设操作来改变窗口的大小、窗口在屏幕中的显示状态以及窗口在屏幕中的显示位置。预设操作比如触控操作、鼠标点击或拖拽操作以及快捷键操作等。窗口在屏幕中的显示状态比如最大化状态或者最小化状态等。当然,窗口也可以是固定大小和/或固定显示状态和/或固定显示位置的用户界面,用户无法通过操作改变窗口的大小、窗口在屏幕中的显示状态或窗口在屏幕中的显示位置等。

图3示出了一个实施例中投屏终端的屏幕界面图。参考图3,该界面图中示出了多个窗口,比如窗口301、窗口302以及窗口303。用户可以通过鼠标点击或拖拽操作改变窗口301或者窗口302的大小、在屏幕中的显示状态以及在屏幕中的显示位置。窗口303则是固定大小和固定显示位置的窗口,用户不可通过操作改变。可以理解,图3所示的界面图仅用于举例说明,实际场景中具体使用的界面图可以包括比图3中所示更多或更少的内容,且图中的窗口可以是另外的特性,在本实施例中不作限定。

窗口集合可以包括一个或者多个窗口。当前屏幕所对应的窗口集合,可以是投屏终端当前打开的所有窗口的集合。可以理解,在另外的实施例中,通常情况下计算机设备在开启一个窗口后,即在当前屏幕中以可视形式展示该窗口。计算机设备可根据用户指令对该窗口进行操作。比如移动、最大化或者最小化等。当计算机设备根据用户指令将该窗口最小化后,即不再在当前屏幕中以可视形式展示该窗口中的内容。本申请中的各实施例是应用于投屏场景中的技术方案,而投屏是将投屏终端屏幕(包括虚拟屏幕)上显示的内容传输到投屏设备上显示。那么,在本实施例中当前屏幕所对应的窗口集合,也可以是投屏终端当前打开的、且未被最小化的窗口的集合。

目标窗口是选为目标进行某项操作的窗口。在本申请实施例中,目标窗口可以是需要进行投屏的窗口,也可以是不需要进行投屏的窗口。目标窗口的数量可以为一个或者多个。

具体地,投屏终端根据通过用户触发的指令、通过其他计算机设备传递的指令或者自动启动投屏后,可先确定作为目标处理的窗口,也就是在当前屏幕所对应的窗口集合中定位目标窗口。

在一个实施例中,s202包括:通过投屏控制界面展示当前屏幕所对应的窗口集合中各窗口的窗口标识;接收通过用户操作触发的投屏控制指令;确定通过投屏控制指令所选中的窗口标识;根据确定的窗口标识,在当前屏幕所对应的窗口集合中定位目标窗口。

其中,投屏控制界面是投屏终端提供的、供用户操作以与投屏终端进行交互的界面。投屏控制界面也可以是一个窗口。窗口标识用于唯一标识一个窗口。窗口标识比如窗口句柄等。投屏控制指令是用于触发投屏控制的计算机程序。

具体地,投屏终端在开启投屏应用或者运行投屏代码后,可展示投屏控制界面,并在投屏控制界面中展示当前屏幕所对应的窗口集合中各窗口的窗口标识。投屏终端继而可以检测预定义的用户操作触发,在检测到该用户触发操作时触发相应的投屏控制指令。用户触发操作可以是作用于窗口标识的触发操作,比如对窗口标识的触控操作或者光标点击操作等。投屏终端从而可以根据投屏控制指令所选中的窗口标识,在当前屏幕所对应的窗口集合中定位目标窗口。

图4示出了一个实施例中投屏终端展示投屏控制界面的屏幕界面图。参考图4,该界面图中包括投屏控制界面410,投屏控制界面410中展示有窗口标识411。用户可通过触控操作或者光标点击操作选中意图作为目标窗口的窗口标识。可以理解,图4所示的界面图仅用于举例说明,实际场景中具体使用的界面图可以包括比图4中所示更多或更少的内容

在另外的实施例中,投屏控制界面中也可包括输入框,用户可在该输入框中输入目标窗口的窗口标识。当然,投屏设备也可在投屏控制界面外检测预定义的触发操作,比如对预定义的物理按钮的点击,语音指令,或者在轮流显示当前屏幕所对应的窗口集合中各窗口时触发的晃动操作等。

在本实施例中,提供了用户自定义选择目标窗口的途径,这样在实际投屏过程中,用户即可根据自己的意愿自主选择目标窗口进行投屏或者投屏,提高了投屏控制的灵活性。

在一个实施例中,s202包括:读取投屏控制配置信息;根据投屏控制配置信息,在当前屏幕所对应的窗口集合中定位目标窗口。

其中,投屏控制配置信息是预先配置的对投屏过程进行控制的数据。投屏控制配置信息中可包括目标窗口的窗口标识。

具体地,开发人员在设置投屏控制配置信息时,可在投屏控制配置信息中配置目标窗口的窗口标识。比如,在投屏控制配置信息中配置目标窗口的窗口句柄。这样,计算机设备在投屏时,即可读取投屏控制配置信息,从中提取目标窗口的窗口句柄,以在当前屏幕所对应的窗口集合中定位目标窗口。

在本实施例中,事先通过投屏控制配置信息来设置目标窗口,这样在实际投屏中即可快速根据投屏控制配置信息在当前屏幕所对应的窗口集合中定位目标窗口,提高投屏效率。

s204,调用操作系统接口,获取窗口集合中除目标窗口之外的各窗口相应的窗口位置。

其中,操作系统接口,是计算机设备操作系统提供给用户使用的应用程序编程接口(applicationprogramminginterface,api)。本领域技术人员可以理解,不同的操作系统所提供的、用于获取窗口位置的接口可能各不相同,而且接口的数量可以为一个或者多个。窗口相应的窗口位置,是窗口在当前屏幕区域的显示区域位置。窗口位置可以是绝对位置,也可以是相对位置。

举例说明,操作系统可以是视窗(windows)操作系统。基于windows操作系统的投屏终端,可调用操作系统接口遍历当前屏幕中的各窗口,获取各窗口的窗口句柄。比如,投屏终端上安装有投屏应用,当投屏终端运行投屏应用准备投屏时,投屏应用可调用enumwindows函数,该函数枚举当前屏幕上所有的窗口,并将窗口句柄传送给投屏应用的回调函数。投屏终端在遍历各窗口后,可继续调用操作系统接口获取各窗口相应的窗口位置。比如,投屏应用可再调用createcompatiblebitmap函数获取各窗口相应的窗口位置。

再举例说明,操作系统可以是macos(苹果操作系统)操作系统。基于macos操作系统的投屏终端,可调用操作系统接口遍历当前屏幕中的各窗口,获取各窗口的窗口句柄,以及各窗口相应的窗口位置。比如,macos操作系统下,通过调用系统api:cfarrayrefwindowsref=cgwindowlistcreate(kcgwindowlistoptiononscreenabovewindow,((cgwindowid)kcgnullwindowid));遍历窗口获取各窗口的窗口句柄并获取各窗口相应的窗口位置。

s206,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置叠加,得到投屏数据。

其中,窗口集合中除目标窗口之外的窗口,是需要进行投屏操作的窗口。窗口集合中除目标窗口之外的窗口的数量可以是一个或者多个。

窗口所对应的屏幕数据是屏幕中该窗口所在区域内的数据。投屏,顾名思义,是将一台设备屏幕上显示的数据在另一台或多台设备上进行显示,以使这些设备屏幕上显示的数据一致。投屏数据是投屏过程中在设备间传递的数据,也就是用于进行投屏显示的数据。

在一个实施例中,窗口集合中除目标窗口之外的窗口的数量为一个,那么此时投屏终端可直接获取该窗口集合中除目标窗口之外的唯一窗口的屏幕数据,得到投屏数据。具体地,投屏终端可将该窗口集合中除目标窗口之外的唯一窗口所对应的屏幕数据按照相应的窗口位置绘制到画布上。这样投屏设备可直接获得画布数据作为投屏数据;或者将画布数据进行编码,再得到与当前网络环境适配的投屏数据。

再参考图3,假设当前屏幕所对应的窗口集合中包括窗口301、窗口302和窗口303,投屏终端根据用户触发操作选取窗口301和窗口303为目标窗口。此时,窗口集合中除目标窗口之外的窗口的数量为一个,该唯一的窗口即窗口302。

图5示出了在该实施例中投屏设备接收到投屏数据后显示的界面示意图。对比图3和图5,可以看出,图5中的屏幕画面相比于图3中的屏幕画面,排除了窗口301和窗口303的内容。

在一个实施例中,s206包括:当窗口集合中除目标窗口之外的窗口的数量超过一个时,则确定窗口集合中除目标窗口之外的窗口在当前屏幕中的堆叠顺序;根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加,得到投屏数据。

其中,窗口的堆叠顺序是堆叠的多个窗口的排列顺序。计算机设备的屏幕区域有限,计算机设备在开启一个新的窗口后,该新的窗口可能会部分覆盖已经开启的窗口。那么可以理解,窗口相应的窗口位置中除了屏幕的两个维度相应的位置信息外,在垂直于屏幕的维度也存在一个位置信息,通过该位置信息来反映各窗口之间在垂直于屏幕的维度的位置关系。比如,通过窗口的z次序表明堆叠的多个窗口中各窗口之间的位置关系。这多个窗口是按一个假想的从屏幕向外伸展的z轴定位的。z次序最上面的窗口覆盖所有其它的窗口,z次序最底层的窗口被所有其它的窗口覆盖。计算机设备在新开启一个窗口时,设置该窗口在z次序中的位置可以是通过把它放在一个给定窗口的后面,或是放在窗口堆的顶部或底部等。

具体地,投屏终端可根据各窗口相应的窗口位置中垂直于屏幕的维度的位置信息,确定窗口集合中除目标窗口之外的窗口在当前屏幕中的堆叠顺序。在确定堆叠顺序后,投屏终端即可根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加,得到投屏数据。

再参考图3,假设当前屏幕所对应的窗口集合中包括窗口301、窗口302和窗口303,投屏终端根据用户触发操作选取窗口303为目标窗口。此时,窗口集合中除目标窗口之外的窗口的数量为多个,即窗口301和窗口302。图6示出了在该实施例中投屏设备接收到投屏数据后显示的界面示意图。对比图3和图6,可以看出,图6中的屏幕画面相比于图3中的屏幕画面,排除了窗口303的内容,且窗口301和窗口302的堆叠顺序与投屏终端中的堆叠顺序一致,也就是说除了排除了窗口303的内容,其他与投屏终端屏幕界面一致。

参考上述图3、5和6,可以明显看出,本申请实施例中的投屏不再是将整个投屏终端屏幕上的画面全部投屏到投屏设备上,而是有选择性地排除某些窗口的内容不进行投屏,实现了自定义控制投屏内容。

可以理解,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加,是为了还原投屏终端的屏幕画面中除目标窗口中内容后的屏幕画面中各窗口的内容的位置关系。

在另外的实施例中,当窗口集合中除目标窗口之外的窗口之间没有相互重叠的区域时,投屏终端则可无需确定窗口集合中除目标窗口之外的窗口在当前屏幕中的堆叠顺序,直接将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置进行叠加,得到投屏数据。

s208,发送投屏数据,发送的投屏数据用于进行投屏显示。

具体地,投屏终端在获取到投屏数据后,可直接将该投屏数据上传至服务器,服务器再将该投屏数据转发至与投屏终端建立投屏连接的投屏设备,以进行投屏。当然,投屏终端在获取到投屏数据后,也可直接将该投屏数据发送至建立投屏连接的投屏设备。

投屏设备接收到投屏数据后,则通过图像处理器根据投屏数据渲染得到可显示的画面后,传输到显示器进行显示。投屏设备也可以根据投屏数据渲染得到可显示的画面后,通过物理光学方式形成的光学投影。

上述投屏控制方法,在当前屏幕所对应的窗口集合中定位目标窗口后,自动调用操作系统接口,获取该窗口集合中除目标窗口之外的各窗口相应的窗口位置。这样,即可将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置叠加,得到投屏数据,也就是排除了目标窗口的屏幕图像;再发送该投屏数据进行投屏,不再将整个投屏终端屏幕上的画面全部投屏到投屏设备上,避免了冗余画面影响投屏效果,提高了投屏质量。

在一个实施例中,s206包括:确定窗口集合中各窗口在当前屏幕中的堆叠顺序;根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加,得到投屏数据。

具体地,投屏终端可根据窗口集合中各窗口相应的窗口位置中垂直于屏幕的维度的位置信息,确定窗口集合中各窗口在当前屏幕中的堆叠顺序。此时,堆叠顺序涉及窗口集合中包括的全部窗口。

在一个实施例中,根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加,得到投屏数据,包括:根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加绘制到画布上,得到中间图像数据;对中间图像数据进行编码,得到与当前网络环境适配的投屏数据。

其中,画布(canvas)可以理解为图形容器。投屏终端或者投屏终端上运行的应用程序可通过调用绘图接口在画布上进行绘制,比如绘制文本、线条、矩形以及圆形等图形。在本申请各实施例中,投屏终端上运行的投屏应用可通过调用绘图接口将窗口对应的屏幕数据绘制在画布上。投屏终端上运行的投屏代码也可通过调用绘图接口将窗口对应的屏幕数据绘制在画布上。

图像编码也称图像压缩,是指在满足一定质量(信噪比的要求或主观评价得分)的条件下,以较少比特数表示图像或图像中所包含信息。

在一个实施例中,根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加绘制到画布上,得到中间图像数据,包括:初始化画布;按照堆叠顺序遍历窗口集合中的各窗口;当遍历至的窗口不是目标窗口时,则将遍历至的窗口所对应的屏幕数据按照相应的窗口位置叠加绘制到画布上,并继续遍历;当遍历至的窗口是目标窗口时,则跳过目标窗口继续遍历。

具体地,投屏终端可初始化画布,然后按照堆叠顺序遍历窗口集合中的各窗口,将当前遍历至的窗口相应的窗口句柄与目标窗口的窗口句柄进行比较。

在当前遍历至的窗口相应的窗口句柄与目标窗口的窗口句柄不一致时,判定当前遍历至的窗口不是需要被排除的窗口,则将当前遍历至的窗口所对应的屏幕数据,按照当前遍历至的窗口相应的窗口位置叠加绘制到画布,再继续遍历,直至最后一个窗口。

在当前遍历至的窗口相应的窗口句柄与目标窗口的窗口句柄一致时,则判定当前遍历至的窗口是需要被排除的窗口,则跳过该窗口,也就是无需将该窗口所对应的屏幕数据绘制到画布上,再继续遍历,直至最后一个窗口。

这样,画布上的图像内容则是当前屏幕内容中排除目标窗口的屏幕数据之后的屏幕内容,也就是意图投屏的屏幕内容。

其中,当遍历至的窗口处于最小化状态时,该窗口所对应的屏幕数据为空。投屏终端在绘制进行画布绘制时,可以如目标窗口一样跳过不绘制,也可以进行一次透明度为完全透明的图层绘制。

可以理解,初始化的画布中背景图像即为投屏终端当前屏幕的屏幕背景。

在本实施例中,通过按窗口集合中各窗口在当前屏幕中的堆叠顺序,将除目标窗口以外的窗口的屏幕数据依次绘制到画布上,以得到排除了目标窗口的屏幕数据的屏幕内容,这样再进行投屏时,便不再将整个投屏终端屏幕上的画面全部投屏到投屏设备上,避免了冗余画面影响投屏效果,提高了投屏质量。

可以理解,通常情况下,在画布上绘制得到的屏幕图像的文件通常较大,也就是图像文件的字节数较大,通常超过10m。在图像文件较大时,传输过程中占用的带宽较宽,且对网络质量的要求较高。而且在投屏过程中,图像精度也不需要这么高。因此,投屏设备通常会对通过画布得到的中间图像数据进行编码,在满足一定质量(信噪比的要求或主观评价得分)、以及与当前网络环境匹配的条件下,以较少比特数表示图像或图像中所包含信息,得到投屏数据。

图7示出了一个实施例中不采集目标窗口的屏幕数据的流程图。参考图7,投屏终端在确定目标窗口后,可先获取各窗口所对应的屏幕数据,再按照窗口的堆叠顺序,也就是窗口集合中各窗口在当前屏幕中的堆叠顺序遍历窗口,判断遍历至的窗口是否为目标窗口。当遍历至的窗口不是目标窗口时,则将遍历至的窗口所对应的屏幕数据按照遍历至的窗口相应的窗口位置叠加绘制到画布上。投屏终端可在绘制完成后,判断是否遍历结束。若是,则得到输出画布图像得到中间图像数据,编码为投屏数据;若否,则继续按照窗口的堆叠顺序遍历窗口。当遍历至的窗口是目标窗口时,则继续按照窗口的堆叠顺序遍历窗口。当然,投屏终端也可在遍历窗口时,且判断遍历至的窗口不是目标窗口时,再获取遍历至的窗口所对应的屏幕数据。

上述实施例中,对通过画布得到的中间图像数据编码得到投屏数据后,再传输以进行投屏,减少了传输的数据量,提高了投屏效率,而且受网络环境的影响也较小。

在另外的实施例中,根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加,得到投屏数据的步骤可以是由投屏终端中运行的投屏代码或者投屏应用完成的,也可以是由投屏终端中运行的投屏代码或者投屏应用调用操作系统提供的接口完成的。当然,也可以仅是根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加绘制到画布上,得到中间图像数据的步骤是由投屏终端中运行的投屏代码或者投屏应用调用操作系统提供的接口完成的。

举例说明,基于macos操作系统的投屏终端,可调用操作系统接口根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加绘制到画布上,得到中间图像数据。

比如,macos操作系统下,通过调用系统api:cgimagerefimgref=cgwindowlistcreateimagefromarray(rect,mutwindowsids,kcgwindowimagenominalresolution),进行图层合并,也就是叠加绘制各窗口的屏幕数据。

在一个实施例中,该投屏控制方法还包括:按照大于或者等于预设频率的频率确定当前屏幕所对应的窗口集合;在每次确定当前屏幕所对应的窗口集合后,重新执行调用操作系统接口,获取窗口集合中除目标窗口之外的各窗口相应的窗口位置的步骤。

可以理解,在本申请中,通过控制确定当前屏幕所对应的窗口集合的频率,来控制获得投屏数据的频率,从而控制投屏终端进行投屏数据传输的帧率。由于人类眼睛的特殊生理结构,如果所看画面的帧率高于一定帧率的时候,就会认为是连贯的,此现象称为视觉停留。本申请中通过控制投屏终端进行投屏数据传输的帧率,来使得投屏设备上的内容显示在人眼视觉上流畅。

具体地,开发人员可设置预设频率,这样投屏设备即可按照大于或者等于该预设频率的频率确定当前屏幕所对应的窗口集合,在每次确定当前屏幕所对应的窗口集合后,均会调用操作系统接口,获取窗口集合中除目标窗口之外的各窗口相应的窗口位置;确定窗口集合中各窗口在当前屏幕中的堆叠顺序;根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加,得到投屏数据;发送投屏数据,发送的投屏数据用于进行投屏显示。这样即可将投屏终端进行投屏数据传输的帧率控制在大于或者等于预设频率的水平。

举例说明,预设频率具体可以是15次每秒,即投屏终端可每66ms执行一次上述s202至s208的步骤,以实现15fps的排除特定窗口的屏幕画面采集。

在本实施例中,通过控制获得投屏数据的频率,来控制投屏终端进行投屏数据传输的帧率,来使得投屏设备上的内容显示在人眼视觉上流畅,提高投屏质量。

在一个实施例中,该投屏控制方法还包括:当目标窗口为需要进行投屏的窗口时,则直接根据目标窗口的屏幕数据得到投屏数据;当目标窗口为无需进行投屏的窗口时,则继续执行调用操作系统接口,获取窗口集合中除目标窗口之外的各窗口相应的窗口位置的步骤。

具体地,如前述实施例中所描述的,本申请中的目标窗口可以是需要进行投屏的窗口,也可以是不需要进行投屏的窗口。那么,投屏终端在确定目标窗口时,可判定该目标窗口是需要进行投屏的窗口,还是无需进行投屏的窗口。

投屏终端在目标窗口是不需要进行投屏的窗口时,则继续执行前述实施例中s204至s208的步骤。投屏终端在目标窗口是需要进行投屏的窗口时,则直接根据目标窗口的屏幕数据得到投屏数据。

在一个实施例中,当目标窗口的数量为一个时,投屏设备可直接将目标窗口所对应的屏幕数据绘制到画布上,得到中间图像数据;对中间图像数据进行编码,得到与当前网络环境适配的投屏数据后直接或间接传递给投屏设备。

再参考图3,假设当前屏幕所对应的窗口集合中包括窗口301、窗口302和窗口303,投屏终端根据用户触发操作选取窗口302为目标窗口。此时,目标窗口的数量为一个,即窗口302。图8示出了在该实施例中投屏设备接收到投屏数据后显示的界面示意图。对比图3和图8,可以看出,图8中的屏幕画面相比于图3中的屏幕画面,选择性投屏了窗口302的内容。

当然,在目标窗口的数量仅为一个时,投屏终端可以仅将目标窗口的屏幕数据作为投屏数据进行投屏,如图9所示。对比图3和图9,此时投屏设备显示画面仅包括目标窗口的屏幕数据,不在包括投屏终端的背景数据。

在一个实施例中,当目标窗口的数量为多个时,投屏设备则可根据窗口集合中各窗口在当前屏幕中的堆叠顺序,将这多个目标窗口所对应的屏幕数据按照相应的窗口位置依次叠加绘制到画布上,得到中间图像数据;再对中间图像数据进行编码,得到与当前网络环境适配的投屏数据。

图10示出了一个实施例中选择某个窗口的屏幕数据进行采集的流程图。参考图10,投屏终端在确定目标窗口、且该目标窗口为需要进行投屏的窗口后,即可遍历窗口,判断遍历至的窗口是否为目标窗口。当遍历至的窗口不是目标窗口时,则继续遍历窗口;当遍历至的窗口是目标窗口时,则将遍历至的窗口所对应的屏幕数据绘制到画布上。投屏终端可在绘制完成后,判断是否遍历结束。若是,则得到输出画布图像得到中间图像数据,编码为投屏数据;若否,则继续遍历窗口。其中,当目标窗口为一个时,不对遍历窗口的遍历顺序进行限定;当目标窗口为多个时,可按照窗口集合中各窗口在当前屏幕中的堆叠顺序进行遍历,在将目标窗口所对应的屏幕数据绘制到画布上时,也可以是按照相应的窗口位置叠加绘制。

再参考图3,假设当前屏幕所对应的窗口集合中包括窗口301、窗口302和窗口303,投屏终端根据用户触发操作选取窗口301和窗口302为目标窗口。此时,目标窗口的数量为多个,即窗口301和窗口302。图11示出了在该实施例中投屏设备接收到投屏数据后显示的界面示意图。对比图3和图11,可以看出,图11中的屏幕画面相比于图3中的屏幕画面,选择性投屏了窗口301和窗口302的内容。

参考上述图3、9和11,可以明显看出,本申请实施例中的投屏不再是将整个投屏终端屏幕上的画面全部投屏到投屏设备上,而是有选择性地对某些窗口的内容进行投屏,实现了自定义控制投屏内容。

上述实施例中,在当前屏幕所对应的窗口集合中定位目标窗口后,且该目标窗口为需要进行投屏的窗口时,直接根据目标窗口所对应的屏幕数据得到投屏数据,也就是有选择性地选择某个或多个目标窗口的屏幕图像;再发送该投屏数据进行投屏,不再将整个投屏终端屏幕上的画面全部投屏到投屏设备上,避免了冗余画面影响投屏效果,提高了投屏质量。

可以理解,在本申请的各实施例中,投屏数据可以包括计算机设备的屏幕背景数据,也可以不包括计算机设备的屏幕背景数据。计算机设备的屏幕背景数据包括背景画面、桌面图标以及任务栏等。当投屏数据包括计算机设备的屏幕背景数据时,画布的背景数据即为计算机设备的屏幕背景数据;当投屏数据不包括计算机设备的屏幕背景数据时,画布的背景数据可以为空。

在一个实施例中,该投屏控制方法还包括:获取投屏码与本地的终端标识;将投屏码与终端标识发送至服务器;发送的投屏码与终端标识,用于指示服务器在查找到与投屏码关联的投屏设备标识后,建立终端标识所对应终端与投屏设备标识所对应投屏设备间的无线投屏连接。发送投屏数据,包括:将投屏数据上传至服务器;上传的投屏数据,用于指示服务器根据无线投屏连接将投屏数据转发至投屏设备。

其中,投屏码是用于进行投屏的凭证,可以是包括数字、字母或者符号中的至少一种字符的字符串。投屏码比如“123456”或者“abg12d”等。当然,投屏码也可包括中文字符等其他语种字符。终端标识用于唯一标识一个终端,也可以是包括数字、字母或者符号中的至少一种字符的字符串。终端标识具体可以是终端序列号或者当前登录的用户标识等。当前登录的用户标识可以是当前登录的终端系统账号或当前登录的应用账号等。

具体地,投屏终端可接收用户在投屏终端界面输入的投屏码,或接收其他终端或者投屏设备发送的投屏码,以获取到投屏码。在本实施例中,投屏终端的终端代码中可集成有投屏代码,使得本终端具有投屏功能。投屏代码是投屏终端运行后用以执行投屏操作的计算机可读指令。其中,投屏终端或投屏设备可通过声波传播投屏码。

在一个实施例中,投屏终端上也可安装有投屏应用,或者,安装有集成了投屏代码的非投屏应用。投屏应用是专用于投屏的应用程序,集成了投屏代码的非投屏应用不是专用于投屏但具有投屏功能的应用程序,如微信应用等。

具体地,投屏终端可根据用户指令启动该投屏应用或者集成了投屏代码的非投屏应用,并继续获取用户在该投屏应用或者集成了投屏代码的非投屏应用中输入的投屏码。此后,投屏终端可继续在接收到投屏指令后,获取本地的终端标识。

进一步地,投屏终端在获取到投屏码与本地的终端标识后,将该投屏码与终端标识对应上传至服务器。服务器在接收到投屏码与终端标识后,即查找到与该投屏码关联的投屏设备标识,判定投屏终端意图与查找到的投屏设备标识所对应的投屏设备进行投屏,即建立投屏终端与投屏设备标识所对应投屏设备间的投屏连接。

在一个实施例中,服务器在建立投屏终端与投屏设备标识所对应投屏设备间的投屏连接后,可向投屏终端反馈投屏连接成功的通知,这样投屏终端即可执行后续的操作。服务器在未查找到与该投屏码关联的投屏设备标识时,也可向投屏终端反馈未查询到与该投屏码关联的投屏设备标识的通知,投屏终端从而根据该通知展示投屏码错误的提示信息,以提醒用户重新输入投屏码。

在一个实施例中,投屏终端可在将投屏码与终端标识发送至服务器后开始计时,在计时时长达到等待时长还未接收到服务器反馈的通知时,可判定与服务器断开连接,展示网络异常的提示信息,以提醒用户更换网络或者稍后再试。

在投屏终端与投屏设备成功建立投屏连接后,投屏终端可在获取到投屏数据后,可直接将该投屏数据上传至服务器,服务器再将该投屏数据转发至与投屏终端建立投屏连接的投屏设备,以进行投屏。

当然,投屏终端也可在向将该投屏码与终端标识对应上传至服务器时,便获取投屏数据并上传,服务器再在确定投屏终端意图投屏的投屏设备后,将投屏数据传递给该投屏设备。

上述实施例中,在获取到投屏码与本地的终端标识后,将投屏码和终端标识发送至服务器,服务器就可以在查找到与该投屏码关联的投屏设备标识后,建立本地与该投屏设备标识所对应投屏设备间的投屏连接。这样本地即可在投屏连接成功后,获取本地的屏幕数据发送给服务器,再由服务器转发到投屏设备进行显示,从而完成了从本地到投屏设备的投屏。这样本地既不需要与投屏设备有线连接,也不需要与投屏设备连接至同一无线局域网即可完成投屏,极大地拓宽了投屏适用范围。

应该理解的是,虽然上述各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

如图12所示,在一个实施例中,提供了一种投屏控制装置1200。参照图12,该投屏控制装置1200包括:定位模块1201、调用模块1202、叠加模块1203和发送模块1204。

定位模块1201,用于在当前屏幕所对应的窗口集合中定位目标窗口。

调用模块1202,用于调用操作系统接口,获取窗口集合中除目标窗口之外的各窗口相应的窗口位置。

12叠加模块1204,用于将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置叠加,得到投屏数据。

发送模块1205,用于发送投屏数据,发送的投屏数据用于进行投屏显示。

上述投屏控制装置1200,在当前屏幕所对应的窗口集合中定位目标窗口后,自动调用操作系统接口,获取该窗口集合中除目标窗口之外的各窗口相应的窗口位置。这样,即可将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置进行叠加,得到投屏数据,也就是排除了目标窗口的屏幕图像;再发送该投屏数据进行投屏,不再将整个投屏终端屏幕上的画面全部投屏到投屏设备上,避免了冗余画面影响投屏效果,提高了投屏质量。

在一个实施例中,定位模块1201还用于通过投屏控制界面展示当前屏幕所对应的窗口集合中各窗口的窗口标识;接收通过用户操作触发的投屏控制指令;确定通过投屏控制指令所选中的窗口标识;根据确定的窗口标识,在当前屏幕所对应的窗口集合中定位目标窗口。

在一个实施例中,叠加模块1204还用于确定窗口集合中各窗口在当前屏幕中的堆叠顺序;根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加,得到投屏数据。

在一个实施例中,叠加模块1204还用于根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加绘制到画布上,得到中间图像数据;对中间图像数据进行编码,得到与当前网络环境适配的投屏数据。

在一个实施例中,叠加模块1204还用于初始化画布;按照堆叠顺序遍历窗口集合中的各窗口;当遍历至的窗口不是目标窗口时,则将遍历至的窗口所对应的屏幕数据按照相应的窗口位置叠加绘制到画布上,并继续遍历;当遍历至的窗口是目标窗口时,则跳过目标窗口继续遍历。

在一个实施例中,叠加模块1204还用于当窗口集合中除目标窗口之外的窗口的数量超过一个时,则确定窗口集合中除目标窗口之外的窗口在当前屏幕中的堆叠顺序;根据堆叠顺序,将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置依次叠加,得到投屏数据。

在一个实施例中,定位模块1201还用于按照大于或者等于预设频率的频率确定当前屏幕所对应的窗口集合;在每次确定当前屏幕所对应的窗口集合后,重新执行调用操作系统接口,获取窗口集合中除目标窗口之外的各窗口相应的窗口位置的步骤。

在一个实施例中,当目标窗口为需要进行投屏的窗口时,则叠加模块1204还用于直接根据目标窗口的屏幕数据得到投屏数据。

如图13所示,在一个实施例中,投屏控制装置1200还包括:连接模块1205。

连接模块1205,用于获取投屏码与本地的终端标识;将投屏码与终端标识发送至服务器;发送的投屏码与终端标识,用于指示服务器在查找到与投屏码关联的投屏设备标识后,建立终端标识所对应终端与投屏设备标识所对应投屏设备间的无线投屏连接。

发送模块1204还用于将投屏数据上传至服务器;上传的投屏数据,用于指示服务器根据无线投屏连接将投屏数据转发至投屏设备。

图14示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的投屏终端110。如图14所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现投屏控制方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行投屏控制方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的投屏控制装置可以实现为一种计算机程序的形式,计算机程序可在如图14所示的计算机设备上运行。计算机设备的存储器中可存储组成该投屏控制装置的各个程序模块,比如,图12所示的定位模块1201、调用模块1202、叠加模块1203和发送模块1204。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的投屏控制方法中的步骤。

例如,图14所示的计算机设备可以通过如图12所示的投屏控制装置1200中的定位模块1201在当前屏幕所对应的窗口集合中定位目标窗口。通过调用模块1202调用操作系统接口,获取窗口集合中除目标窗口之外的各窗口相应的窗口位置。通过叠加模块1203将窗口集合中除目标窗口之外的窗口所对应的屏幕数据按照相应的窗口位置叠加,得到投屏数据。通过发送模块1204发送投屏数据,发送的投屏数据用于进行投屏显示。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述投屏控制方法的步骤。此处投屏控制方法的步骤可以是上述各个实施例的投屏控制方法中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述投屏控制方法的步骤。此处投屏控制方法的步骤可以是上述各个实施例的投屏控制方法中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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