共享屏幕内容抓屏帧率确定方法、装置、设备和存储介质与流程

文档序号:25538784发布日期:2021-06-18 20:33阅读:94来源:国知局
共享屏幕内容抓屏帧率确定方法、装置、设备和存储介质与流程

本公开的实施例涉及视频处理技术领域,具体涉及共享屏幕内容抓屏帧率确定方法、装置、设备和存储介质。



背景技术:

目前的视频会议类应用或者在线教育类应用中大多提供共享屏幕功能,为了实现将屏幕画面共享给远端其他参会人,共享屏幕的用户终端在共享屏幕场景下,会抓取屏幕图像并生成视频发送给对视频会议类应用或者在线教育类应用提供服务的服务器,以共享给其他参会人终端设备进行呈现。



技术实现要素:

本公开的实施例提出了共享屏幕内容抓屏帧率确定方法、装置、终端设备和存储介质。

第一方面,本公开的实施例提供了一种共享屏幕内容抓屏帧率确定方法,该方法包括:响应于确定屏幕图像变化,确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数;根据上述屏幕变化参数确定与上述当前屏幕图像对应的抓屏帧率系数;根据上一抓屏帧率系数和与上述当前屏幕图像对应的抓屏帧率系数确定当前抓屏帧率系数,其中,上述当前抓屏帧率系数分别与上一抓屏帧率系数和与上述当前屏幕图像对应的抓屏帧率系数正相关;根据预设最大抓屏帧率与上述当前抓屏帧率系数确定当前抓屏帧率,其中,上述当前抓屏帧率分别与上述预设最大抓屏帧率和上述当前抓屏帧率系数正相关。

在一些可选的实施方式中,上述响应于确定屏幕图像变化,包括:响应于检测到预设交互事件,确定屏幕图像变化。

在一些可选的实施方式中,上述根据预设最大抓屏帧率与上述当前抓屏帧率系数确定当前抓屏帧率,包括:将上述预设最大抓屏帧率与上述当前抓屏帧率系数的乘积确定为当前抓屏帧率。

在一些可选的实施方式中,在上述根据预设最大抓屏帧率与上述当前抓屏帧率系数确定当前抓屏帧率之后,上述方法还包括:将上述上一抓屏帧率系数确定为上述当前抓屏帧率系数。

在一些可选的实施方式中,上述屏幕变化参数包括屏幕变化速率参数和屏幕变化比;以及上述确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数,包括:确定当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数和屏幕变化比;以及根据上述屏幕变化参数确定与上述当前屏幕图像对应的抓屏帧率系数,包括:根据上述屏幕变化速率参数和上述屏幕变化比确定与上述当前屏幕图像对应的抓屏帧率系数与上述当前屏幕图像对应的抓屏帧率系数分别与上述屏幕变化速率参数和上述屏幕变化比正相关。

在一些可选的实施方式中,上述确定当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数和屏幕变化比,包括:计算上述当前屏幕图像对应的时间戳和上一屏幕图像对应的时间戳之间的时间戳差值;根据上述时间戳差值确定上述当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数,其中,上述当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数与上述时间差值成反比。

在一些可选的实施方式中,上述确定当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数和屏幕变化比,包括:确定上述当前屏幕图像与上一屏幕图像相比像素值产生变化的变化像素点数量;将上述变化像素点数量与上述当前屏幕图像中像素点总数量的比值确定为上述屏幕变化比。

在一些可选的实施方式中,上述根据上述屏幕变化速率参数和上述屏幕变化比确定与上述当前屏幕图像对应的抓屏帧率系数,包括:分别按照预设变化速率权重和预设变化比权重对上述屏幕变化速率参数和上述屏幕变化比进行加权求和,得到与上述当前屏幕图像对应的抓屏帧率系数。

在一些可选的实施方式中,上述根据上一抓屏帧率系数和与上述当前屏幕图像对应的抓屏帧率系数确定当前抓屏帧率系数,包括:分别按照预设历史帧率系数权重和预设当前帧率系数权重对上述上一抓屏帧率系数和与上述当前屏幕图像对应的抓屏帧率系数进行加权求和,得到上述当前抓屏帧率系数。

在一些可选的实施方式中,上述方法还包括:按照上述当前抓屏帧率抓取屏幕图像生成视频。

在一些可选的实施方式中,上述方法还包括:将所生成的视频发送给目标服务器。

在一些可选的实施方式中,上述方法还包括:按照上述当前抓屏帧率抓取屏幕图像,并将所抓取的屏幕图像发送给目标服务器。

第二方面,本公开的实施例提供了一种共享屏幕内容抓屏帧率确定装置,该装置包括:第一确定单元,被配置成响应于确定屏幕图像变化,确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数;第二确定单元,被配置成根据上述屏幕变化参数确定与上述当前屏幕图像对应的抓屏帧率系数;第三确定单元,被配置成根据上一抓屏帧率系数和与上述当前屏幕图像对应的抓屏帧率系数确定当前抓屏帧率系数,其中,上述当前抓屏帧率系数分别与上一抓屏帧率系数和与上述当前屏幕图像对应的抓屏帧率系数正相关;第四确定单元,被配置成根据预设最大抓屏帧率与上述当前抓屏帧率系数确定当前抓屏帧率,其中,上述当前抓屏帧率分别与上述预设最大抓屏帧率和上述当前抓屏帧率系数正相关。

在一些可选的实施方式中,上述响应于确定屏幕图像变化,包括:响应于检测到预设交互事件,确定屏幕图像变化。

在一些可选的实施方式中,上述第四确定单元进一步被配置成:将上述预设最大抓屏帧率与上述当前抓屏帧率系数的乘积确定为当前抓屏帧率。

在一些可选的实施方式中,上述装置还包括:第五确定单元,被配置成:在上述根据预设最大抓屏帧率与上述当前抓屏帧率系数确定当前抓屏帧率之后,将上述上一抓屏帧率系数确定为上述当前抓屏帧率系数。

在一些可选的实施方式中,上述屏幕变化参数包括屏幕变化速率参数和屏幕变化比;以及上述确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数,包括:确定当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数和屏幕变化比;以及上述第二确定单元进一步被配置成:根据上述屏幕变化速率参数和上述屏幕变化比确定与上述当前屏幕图像对应的抓屏帧率系数,其中,与上述当前屏幕图像对应的抓屏帧率系数分别与上述屏幕变化速率参数和上述屏幕变化比正相关。

在一些可选的实施方式中,上述第一确定单元进一步被配置成:计算上述当前屏幕图像对应的时间戳和上一屏幕图像对应的时间戳之间的时间戳差值;根据上述时间戳差值确定上述当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数,其中,上述当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数与上述时间差值成反比。

在一些可选的实施方式中,上述第一确定单元进一步被配置成:确定上述当前屏幕图像与上一屏幕图像相比像素值产生变化的变化像素点数量;将上述变化像素点数量与上述当前屏幕图像中像素点总数量的比值确定为上述屏幕变化比。

在一些可选的实施方式中,上述第二确定单元进一步被配置成:分别按照预设变化速率权重和预设变化比权重对上述屏幕变化速率参数和上述屏幕变化比进行加权求和,得到与上述当前屏幕图像对应的抓屏帧率系数。

在一些可选的实施方式中,上述第三确定单元进一步被配置成:分别按照预设历史帧率系数权重和预设当前帧率系数权重对上述上一抓屏帧率系数和与上述当前屏幕图像对应的抓屏帧率系数进行加权求和,得到上述当前抓屏帧率系数。

在一些可选的实施方式中,上述装置还包括:视频生成单元,被配置成按照上述当前抓屏帧率抓取屏幕图像生成视频。

在一些可选的实施方式中,上述装置还包括:视频发送单元,被配置成将所生成的视频发送给目标服务器。

在一些可选的实施方式中,上述装置还包括:图像抓取及发送单元,被配置成按照上述当前抓屏帧率抓取屏幕图像,并将所抓取的屏幕图像发送给目标服务器。

第三方面,本公开的实施例提供了一种终端设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如第一方面中任一实现方式描述的方法。

第四方面,本公开的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该计算机程序被一个或多个处理器执行时实现如第一方面中任一实现方式描述的方法。

现有的终端设备在共享屏幕场景中,为了抓取屏幕图像以将抓取的屏幕图像或者发送给服务器,或者基于抓取的屏幕图像生成视频发送给服务器,一般会以固定的帧率去抓取屏幕图像,比如按照每秒15帧的固定帧率去抓屏。

由于在共享屏幕场景下,在用户共享文档情况下大多时间屏幕内容变化较少,可能在用户频繁操作(比如,用户滚动屏幕文档内容)才导致屏幕内容变化较大。在用户共享视频情况下,若视频内容变化较快(例如,动作类影视作品)才导致屏幕内容变化较大,若视频内容变化较慢(例如,记录片类影视作业)则屏幕内容变化较少。

本公开的实施例提供的共享屏幕内容抓屏帧率确定方法、装置、终端设备和存储介质,通过在确定屏幕图像变化的情况下,确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数;再根据屏幕变化参数确定与当前屏幕图像对应的抓屏帧率系数;随后,根据上一抓屏帧率系数和与当前屏幕图像对应的抓屏帧率系数确定当前抓屏帧率系数,其中,当前抓屏帧率系数分别与上一抓屏帧率系数和与当前屏幕图像对应的抓屏帧率系数正相关;最后,根据预设最大抓屏帧率与当前抓屏帧率系数确定当前抓屏帧率,其中,当前抓屏帧率分别与上述预设最大抓屏帧率和上述当前抓屏帧率系数正相关。即,在确定共享屏幕图像内容发生变化的情况下,根据当前屏幕图像变化参数动态确定当前抓屏帧率:若当前屏幕图像与上一屏幕图像变化较大则提高抓屏帧率以使得接收共享屏幕内容的终端尽可能多地还原共享屏幕内容;若当前屏幕图像与上一屏幕图像变化较少则降低抓屏帧率以实现兼顾接收共享屏幕内容的终端接收到的共享屏幕内容以及不浪费抓屏计算操作所需计算资源。在共享屏幕场景下,相对于传统地采用固定抓屏帧率而言,在屏幕图像内容变化较少时,采用了更低的抓屏帧率,继而抓屏的计算频次也相应减少,相应地也减少了基于抓屏图像进行视频编码生成视频的计算频次,进一步还可以降低终端设备向服务器发送抓屏图像或视频的网络带宽成本。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显。附图仅用于示出具体实施方式的目的,而并不认为是对本发明的限制。在附图中:

图1是本公开的一个实施例可以应用于其中的示例性系统架构图;

图2是根据本公开的共享屏幕内容抓屏帧率确定方法的一个实施例的流程图;

图3a到图3d是采用根据本公开的一个实施例的共享屏幕内容抓屏帧率确定方法在共享不同类型内容过程中的实时动态抓屏帧率折线图;

图4是根据本公开的共享屏幕内容抓屏帧率确定方法的又一个实施例的流程图;

图5是根据本公开的共享屏幕内容抓屏帧率确定装置的一个实施例的结构示意图;

图6是适于用来实现本公开的实施例的终端设备的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。

图1示出了可以应用本公开的共享屏幕内容抓屏帧率确定方法和装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如视频会议类应用、在线教育类应用、短视频社交类应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。

终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是具有声音采集设备(例如麦克风)、视频采集设备(例如摄像头)和显示屏的各种终端设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的终端设备中。其可以实现成多个软件或软件模块(例如用来提供共享屏幕内容抓屏帧率确定服务),也可以实现成单个软件或软件模块。在此不做具体限定。

服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的视频会议类应用或者在线教育类应用提供支持的后台服务器。后台服务器可以对接收到的共享屏幕请求等数据进行分析等处理,并将处理结果(例如共享屏幕视频数据)反馈给终端设备。

需要说明的是,本公开所提供的共享屏幕内容抓屏帧率确定方法一般由终端设备101、102、103执行,相应地,共享屏幕内容抓屏帧率确定装置一般设置于终端设备101、102、103中。

需要说明的是,服务器105可以是硬件,也可以是软件。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

继续参考图2,其示出了根据本公开的共享屏幕内容抓屏帧率确定方法的一个实施例的流程200,该共享屏幕内容抓屏帧率确定方法包括以下步骤:

步骤201,响应于确定屏幕图像变化,确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数。

在本实施例中,共享屏幕内容抓屏帧率确定方法的执行主体(例如图1所示的终端设备101、102、103)可以在确定当前所共享的屏幕图像发生变化的情况下,采用各种实现方式确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数。

实践中,例如,上述执行主体可以实时利用操作系统提供的回调函数(即,callback函数)监听屏幕图像内容是否发生变化,并在监听到屏幕图像内容发生变化的情况下确定屏幕图像变化。

在一些可选的实施方式中,上述执行主体还可以通过检测预设交互事件,并在检测到预设交互事件的情况下,确定屏幕图像变化。

这里,预设交互事件可以是各种可能影响屏幕显示内容的交互事件,也可以理解为用户使用各种交互设备与终端设备进行交互所产生的可能影响屏幕显示内容的事件。例如,预设交互事件可以是用户滚动、移动、单击、双击鼠标操作所导致的鼠标滚动、移动、单击、双击事件,预设交互事件也可以是用户使用键盘输入键盘中的字符操作所导致的键盘输入事件。预设交互事件还可以是用户使用手写板或触控屏等屏幕输入设备执行了例如单击、双击、移动、输入字符等操作所导致的相应交互事件。由于预设交互事件可能影响屏幕显示内容,因此,可以在检测到预设交互事件的情况下,确定屏幕图像变化。

这里,当前屏幕图像为当前所共享的屏幕图像。而上一屏幕图像是共享屏幕过程中对应的抓屏时间早于当前屏幕图像的抓屏时间的共享屏幕图像。例如,上一屏幕图像可以是早于当前时间点抓屏的、最新的上一帧抓屏屏幕图像。上一屏幕图像也可以是当前时间点之前预设时长(例如,1秒)内抓屏的指定帧(例如,最早一帧或者最新一帧)对应的抓屏屏幕图像等。

当前屏幕图像与上一屏幕图像相比的屏幕变化参数可以包括用于表征当前屏幕图像与上一屏幕图像相比的屏幕图像产生变化的各种相关参数。例如,屏幕变化参数可以包括当前屏幕图像与上一屏幕图像相比有多少个像素点发生像素值的改变等。又例如,屏幕变化参数还可以包括当前屏幕图像内容与上一屏幕图像内容相比的变化程度等,这里变化程度可以采用各种实现方式确定得到。比如,可以计算当前屏幕图像的平均灰度值与上一屏幕图像的平均灰度值的差值,再计算上述差值与上一屏幕图像的平均灰度值的比值,而上述计算得到的比值可以作为当前屏幕图像内容与上一屏幕图像内容相比的变化程度值。

在一些可选的实施方式中,屏幕变化参数可以包括屏幕变化速率参数和屏幕变化比。

这里,屏幕变化速率参数用于表征屏幕图像产生变化的速度,即单位时间内屏幕内容变化的次数。而当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数,可以理解为在上一屏幕图像对应的抓屏时间t1与当前屏幕图像对应的抓屏时间t2之间的时间长度(t2-t1)内,屏幕图像变化了一次,进而可以如下计算得到当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数:1/(t2-t1),而这里(t2-t1)可以具体采用不同的时间单位以计算当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数。

在一些可选的实施方式中,可以按照如下方式确定当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数:

首先,可以计算当前屏幕图像对应的时间戳和上一屏幕图像对应的时间戳之间的时间戳差值。

然后,可以根据时间戳差值确定当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数,其中,当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数与时间差值成反比。

例如,可以按照如下公式1计算当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数:

updaterate=knspersec/(deltans×kmaxupdaterate)(公式1)

其中,updaterate为计算所得到的屏幕变化速率参数,knspersec为常数—10的9次方,即一秒内所包括的纳秒数为10的9次方。deltans为当前屏幕图像对应的时间戳和上一屏幕图像对应的时间戳之间的时间戳差值。kmaxupdaterate为人工设置的用于表征最大屏幕刷新率的常数,例如kmaxupdaterate可以设置为50,即一般而言屏幕最大刷新率为1秒内刷新50次。

按照上述可选实施方式确定的屏幕变化速率参数,由于以纳秒为单位,因此相对精度较高,可以更加精确确定屏幕变化速率参数。

这里,屏幕变化比用于表征当前屏幕图像与上一屏幕图像相比屏幕图像产生变化的程度。例如,可以首先当前屏幕图像的各像素点的像素值均值与上一屏幕图像的各像素点的像素值均值之间的像素点均值差值,再将所得到的像素点均值差值与上一屏幕图像的各像素点的像素值均值的比值,确定为当前屏幕图像与上一屏幕图像相比的屏幕变化比。

在一些可选的实施方式中,可以按照如下方式确定当前屏幕图像与上一屏幕图像相比的屏幕变化比:

首先,可以确定当前屏幕图像与上一屏幕图像相比像素值产生变化的变化像素点数量。

然后,将变化像素点数量与当前屏幕图像中像素点总数量的比值确定为当前屏幕图像与上一屏幕图像相比的屏幕变化比。

具体而言,可以用如下公式2计算当前屏幕图像与上一屏幕图像相比的屏幕变化比:

updateratio=updatearea/displayarea(公式2)

其中,updateratio为计算所得到的屏幕变化比,updatearea当前屏幕图像与上一屏幕图像相比像素值产生变化的变化像素点数量,displayarea为当前屏幕图像中像素点总数量。

按照上述可选实施方式确定的屏幕变化比,由于精确到每个像素点,因此相对精度较高,可以更加精确确定屏幕变化比,即,可以精确到每个像素点。

步骤202,根据屏幕变化参数确定与当前屏幕图像对应的抓屏帧率系数。

这里,当前屏幕图像对应的抓屏帧率系数用于表征在不考虑之前抓取的各帧屏幕图像对应的抓屏频率系数的情况下,仅根据当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数和屏幕变化比所确定的、与当前屏幕图像对应的抓屏帧率系数。

可以理解的是,如果根据步骤201中确定的屏幕变化参数确定屏幕图像变化面积较多、变化程度较高或者变化较快,为了使得屏幕共享的被共享方及时获知共享方所共享的屏幕内容的变化,需要提高抓屏帧率,即相应地需提高与当前屏幕图像对应的抓屏帧率系数。反之,如果根据步骤201中确定的屏幕变化参数确定屏幕图像变化面积较小、变化程度较低或者变化较慢,为了兼顾呈现屏幕图像内容和节省计算资源,可以相应降低抓屏帧率,即相应地需降低与当前屏幕图像对应的抓屏帧率系数。

相应地可以理解的是,如果当前屏幕图像对应的屏幕变化速率较快,或者当前屏幕图像对应的屏幕变化比较大,即当前共享屏幕的屏幕内容变化程度较大,则表明当前屏幕图像中涉及较多不同于之前的信息呈现,需提高抓屏帧率。反之,如果当前屏幕图像对应的屏幕变化速率较慢,或者当前屏幕图像对应的屏幕变化比较小,即当前共享屏幕的屏幕内容变化程度较小,则表明当前屏幕图像中涉及较少不同于之前的信息呈现,需降低抓屏帧率。综上,当前屏幕图像对应的抓屏帧率系数应分别与当前屏幕图像对应的屏幕变化速率参数和屏幕变化比正相关。即,当前屏幕图像与上一屏幕图像相比的屏幕变化速率越高,与当前屏幕图像对应的抓屏帧率系数也越高。当前屏幕图像与上一屏幕图像相比的屏幕变化比越高,与当前屏幕图像对应的抓屏帧率系数也越高。

在一些可选的实施方式中,步骤202可以如下进行:

分别按照预设变化速率权重和预设变化比权重对屏幕变化速率参数和屏幕变化比进行加权求和,得到与当前屏幕图像对应的抓屏帧率系数。

具体而言,可以用如下公式3根据屏幕变化速率参数和屏幕变化比确定与当前屏幕图像对应的抓屏帧率系数:

curcoefficient=krateweight×updaterate+kratioweight×updateratio

(公式3)

其中,curcoefficient为计算所得到的与当前屏幕图像对应的抓屏帧率系数,krateweight为预设变化速率权重,kratioweight为预设变化比权重,updaterate为前面计算得到的屏幕变化速率参数,updateratio为前面计算得到的屏幕变化比。

按照该可选实施方式,可以通过设定不同的预设变化速率权重和预设变化比权重,调整屏幕变化速率参数和屏幕变化比在与当前屏幕图像对应的抓屏帧率系数中的占比情况,并可以根据实践效果进行相应调整以达到兼顾视频生成质量和抓屏计算量。可选地,预设变化速率权重和预设变化比权重可以均为0到1之间的值,且二者之和为1。

步骤203,根据上一抓屏帧率系数和与当前屏幕图像对应的抓屏帧率系数确定当前抓屏帧率系数。

由于用户在共享屏幕场景下,用户对共享屏幕内容的交互在时间上存在一定连续性,相应地共享屏幕图像内容变化在时间上也会存在一定连续性。虽然,步骤202中确定了与当前屏幕图像对应的抓屏帧率系数,但若仅仅按照与当前屏幕图像对应的抓屏帧率系数确定当前抓屏帧率,将可能导致抓屏帧率产生跳跃,继而共享屏幕的被共享方所看到的共享屏幕内容画面质量将产生跳跃,不利于共享屏幕的被共享方获取共享屏幕内容。因此,为提高用户对共享屏幕视频内容的感受,抓屏帧率不应变动幅度太大,即抓屏帧率应变化比较平滑,以避免共享屏幕被共享方获取到的共享屏幕画面质量出现跳跃现象。为此,这里在确定当前抓屏帧率系数时,除了考虑与当前屏幕图像对应的抓屏帧率系数外,还应将上一抓屏帧率系数考虑进来,而上一抓屏帧率系数中还包括了上一抓屏屏幕图像对应的当前抓屏帧率系数以及上上个抓屏帧率系数,继而可以理解的是,当前抓屏帧率系数中除了包括当前屏幕图像对应的抓屏帧率系数,还包括了多个历史抓屏帧率系数,进而可以实现抓屏帧率的平滑过渡,进而实现共享屏幕图像画面质量的连续性。

这里,上一抓屏帧率系数是上一次确定的抓屏帧率系数。

在本实施例中,上述执行主体可以采用各种实施方式根据上一抓屏帧率系数和与当前屏幕图像对应的抓屏帧率系数确定当前抓屏帧率系数。其中,当前抓屏帧率系数分别与上一抓屏帧率系数和与当前屏幕图像对应的抓屏帧率系数正相关。

在一些可选的实施方式中,步骤203可以如下进行:

分别按照预设历史帧率系数权重和预设当前帧率系数权重对上一抓屏帧率系数和与当前屏幕图像对应的抓屏帧率系数进行加权求和,得到当前抓屏帧率系数。其中,预设历史帧率系数权重和预设当前帧率系数权重之和为1。

具体而言,可以用如下公式4表示如下:

coefficient=khistoryweight×prevcoefficient+(1–khistoryweight)×curcoefficient(公式4)

其中,coefficient为计算所得到的当前抓屏帧率系数,khistoryweight为预设历史帧率系数权重,prevcoefficient为上一抓屏帧率系数,(1–khistoryweight)为预设当前帧率系数权重,curcoefficient为前面计算得到的与当前屏幕图像对应的抓屏帧率系数。

按照该可选实施方式,可以通过设定不同的预设历史帧率系数权重和预设当前帧率系数权重,调整历史帧率系数和与当前屏幕图像对应的抓屏帧率系数中在计算得到的当前帧率系数中的占比情况,并可以根据实践效果进行相应调整以达到兼顾视频生成质量和抓屏计算量。例如,预设历史帧率系数权重khistoryweight可以设置为0.5,则相应地预设当前帧率系数权重也可以为0.5。

步骤204,根据预设最大抓屏帧率与当前抓屏帧率系数确定当前抓屏帧率。

在本实施例中,上述执行主体可以采用各种实现方式根据预设最大抓屏帧率和步骤203计算得到的当前抓屏帧率系数确定当前抓屏帧率。其中,当前抓屏帧率分别与预设最大抓屏帧率和当前抓屏帧率系数正相关。

在一些可选的实施方式中,步骤204可以如下进行:

将预设最大抓屏帧率与当前抓屏帧率系数的乘积确定为当前抓屏帧率。

具体而言,可以用如下公式5表示如下:

fps=kmaxfps×coefficient(公式5)

fps为计算所得到的当前抓屏帧率,kmaxfps为预设最大抓屏帧率,coefficient为前面计算得到的当前抓屏帧率系数。

按照该可选实施方式,可以直接通过实时动态确定的当前抓屏帧率系数对当前抓屏帧率进行实时确定。

综合公式3到公式5,可知当前抓屏帧率系数可以按照如下公式6计算得到:

fps=kmaxfps×(khistoryweight×prevcoefficient+(1–khistoryweight)×(krateweight×updaterate+kratioweight×updateratio))(公式6)

在一些可选的实施方式中,上述执行主体还可以在执行完步骤204以后,执行以下步骤205:

步骤205,将上一抓屏帧率系数确定为当前抓屏帧率系数。

即,用步骤204中所确定的当前抓屏帧率系数对上一抓屏帧率系数进行更新。进而在下一次检测到屏幕图像变化,并执行步骤201到步骤204的过程中使用更新后的上一抓屏帧率系数。

在本实施例的一些可选的实施方式中,上述执行主体还可以在执行完步骤205后,执行以下步骤206:

步骤206,按照当前抓屏帧率抓取屏幕图像,并将所抓取的屏幕图像发送给目标服务器。

这里,目标服务器可以是对视频会议应用或者对在线教育应用等提供共享屏幕功能的网络视频应用提供支持的服务器。

这样,目标服务器可以在收到上述执行主体发送的屏幕图像后,基于从上述执行主体接收的屏幕图像生成相应视频流并转发给当前共享屏幕图像对应的被共享方终端设备。继而实现目标服务器实时根据共享屏幕内容生成相应帧率的视频流,相对于目标服务器按照固定帧率生成视频率,可以在当前抓屏帧率低于固定帧率时,减少目标服务器生成视频流所需的计算量。

继续参见图3a到图3d,图3a到图3d是采用本实施例的共享屏幕内容抓屏帧率确定方法的在共享不同类型内容过程中的实时动态抓屏帧率折线图。图3a到图3d中,横坐标均为时间,纵坐标为相应时间对应的抓屏帧率值。

其中:

图3a为共享静态文档场景下的实时动态抓屏帧率折线图。从图3a中可以看出,大部分情况下实时动态抓屏帧率为0,即不抓屏,少部分情况下实时动态抓屏帧率会达到每秒2-5帧,从而大大减少了抓屏产生的计算量。

图3b为共享时滚动文档以及操作屏幕场景下的实时动态抓屏帧率折线图。从图3b中可以看出,在该场景下,实时动态抓屏帧率波动幅度比较大,较大部分位于每秒5-13帧之间,部分情况下为0。即在用户滚动共享文档时,如果用户滚动屏幕速度较快,则相应地抓屏帧率较大,比如可以达到13帧;而如果用户滚动屏幕速度较慢,则相应地抓屏帧率较小,比如可以达到5帧;如果用户未滚动文档的情况下,则相应抓屏帧率为0,比较符合实际情况。

图3c为共享半屏播放视频场景下的实时动态抓屏帧率折线图。从图3c中可以看出,在共享半屏播放视频场景下,实时动态抓屏帧率主要集中在每秒10-14帧范围内,波动幅度相对图3b的场景波动幅度较小,满足用户对于共享视频场景时需要稳定高帧率的需求。这是由于,在共享半屏播放视频场景下,只有一半屏幕被共享,且该被共享的屏幕在播放视频。共享视频的屏幕图像变化速率参数和屏幕变化比一般会大于共享文档对应的屏幕图像变化速率参数和屏幕变化比,因此,该场景下的抓屏帧率一般要高于共享文档时滚动屏幕对应5-13帧的抓屏帧率,但由于是半个屏幕被共享,因此会存在10-14帧的抓屏帧率。另外,在共享半屏播放视频的情况下,视频内容一般也具有连续性,不会跳跃太多,因此相应的抓屏帧率变动范围也不大,在10-14帧之间。

图3d为共享全屏播放视频场景下的实时动态抓屏帧率折线图。从图3d中可以看出,在共享全屏播放视频场景下,由于视频内容往往也具有连续性,因此实时动态抓屏帧率变化幅度比较小且相对稳定,实时动态抓屏帧率大部分为每秒11-14帧之间。另外,由于是整个屏幕被共享来播放视频,屏幕变化比相对于半屏被共享播放视频而言,整体实时动态抓屏帧率11-14帧比半屏播放视频的10-14帧时要稍高一些,也符合用户对于共享全屏播放视频场景的需求。

本公开的上述实施例提供的共享屏幕内容抓屏帧率确定方法,通过基于共享屏幕内容变化而相应实时动态调整抓屏帧率,在不同共享场景下选择合适的抓屏帧率,减少了终端设备抓屏计算量和视频编码计算量,进而可以降低终端设备与服务器之间的网络带宽成本。

继续参考图4,其示出了根据本公开的共享屏幕内容抓屏帧率确定方法的又一个实施例的流程400。该共享屏幕内容抓屏帧率确定方法,包括以下步骤:

步骤401,响应于确定屏幕图像变化,确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数。

步骤402,根据屏幕变化参数确定与当前屏幕图像对应的抓屏帧率系数。

步骤403,根据上一抓屏帧率系数和与当前屏幕图像对应的抓屏帧率系数确定当前抓屏帧率系数。

步骤404,根据预设最大抓屏帧率与当前抓屏帧率系数确定当前抓屏帧率。

步骤405,将上一抓屏帧率系数确定为当前抓屏帧率系数。

在本实施例中,步骤401、步骤402、步骤403、步骤404和步骤405的具体操作与图2所示的实施例中步骤201、步骤202、步骤203、步骤204和步骤205的操作基本相同,在此不再赘述。

步骤406,按照当前抓屏帧率抓取屏幕图像生成视频。

在本实施例中,共享屏幕内容抓屏帧率确定方法的执行主体(例如图1所示的终端设备101、102、103)可以按照步骤404所确定的当前抓屏帧率抓取屏幕图像生成视频。

步骤407,将所生成的视频发送给目标服务器。

这里,目标服务器可以是对视频会议应用或者对在线教育应用等提供共享屏幕功能的网络视频应用提供支持的服务器。

从图4中可以看出,与图2对应的实施例相比,本实施例中的共享屏幕内容抓屏帧率确定方法的流程400多出了生成视频以及发送视频给目标服务器的步骤,即步骤401到步骤404中根据共享屏幕内容实时动态确定了抓屏帧率,在步骤406中按照实时动态确定的抓屏帧率抓取屏幕图像生成视频,再在步骤407中发送给服务器以供其他参会人观看共享屏幕图像。进而,可以减小终端设备生成视频的计算量,以及可以减少终端设备与目标服务器之间的带宽资源占用。

进一步参考图5,作为对上述各图所示方法的实现,本公开提供了一种共享屏幕内容抓屏帧率确定装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种终端设备中。

如图5所示,本实施例的共享屏幕内容抓屏帧率确定装置500包括:第一确定单元501、第二确定单元502、第三确定单元503和第四确定单元504。其中,第一确定单元501,被配置成响应于确定屏幕图像变化,确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数;第二确定单元502,被配置成根据上述屏幕变化参数确定与上述当前屏幕图像对应的抓屏帧率系数;第三确定单元503,被配置成根据上一抓屏帧率系数和与上述当前屏幕图像对应的抓屏帧率系数确定当前抓屏帧率系数,其中,上述当前抓屏帧率系数分别与上一抓屏帧率系数和与上述当前屏幕图像对应的抓屏帧率系数正相关;第四确定单元504,被配置成根据预设最大抓屏帧率与上述当前抓屏帧率系数确定当前抓屏帧率,其中,上述当前抓屏帧率分别与上述预设最大抓屏帧率和上述当前抓屏帧率系数正相关。

在本实施例中,共享屏幕内容抓屏帧率确定装置500的第一确定单元501、第二确定单元502、第三确定单元503和第四确定单元504的具体处理及其所带来的技术效果可分别参考图2对应实施例中步骤201、步骤202、步骤203和步骤204的相关说明,在此不再赘述。

在一些可选的实施方式中,上述响应于确定屏幕图像变化,包括:响应于检测到预设交互事件,确定屏幕图像变化。

在一些可选的实施方式中,上述第四确定单元504可以进一步被配置成:将上述预设最大抓屏帧率与上述当前抓屏帧率系数的乘积确定为当前抓屏帧率。

在一些可选的实施方式中,上述装置500还可以包括:第五确定单元505,被配置成:在上述根据预设最大抓屏帧率与上述当前抓屏帧率系数确定当前抓屏帧率之后,将上述上一抓屏帧率系数确定为上述当前抓屏帧率系数。

在一些可选的实施方式中,上述屏幕变化参数包括屏幕变化速率参数和屏幕变化比;以及上述确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数,包括:确定当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数和屏幕变化比;以及上述第二确定单元进一步被配置成:根据上述屏幕变化速率参数和上述屏幕变化比确定与上述当前屏幕图像对应的抓屏帧率系数,其中,与上述当前屏幕图像对应的抓屏帧率系数分别与上述屏幕变化速率参数和上述屏幕变化比正相关。

在一些可选的实施方式中,上述第一确定单元501可以进一步被配置成:计算上述当前屏幕图像对应的时间戳和上一屏幕图像对应的时间戳之间的时间戳差值;根据上述时间戳差值确定上述当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数,其中,上述当前屏幕图像与上一屏幕图像相比的屏幕变化速率参数与上述时间差值成反比。

在一些可选的实施方式中,上述第一确定单元501可以进一步被配置成:确定上述当前屏幕图像与上一屏幕图像相比像素值产生变化的变化像素点数量;将上述变化像素点数量与上述当前屏幕图像中像素点总数量的比值确定为上述屏幕变化比。

在一些可选的实施方式中,上述第二确定单元502可以进一步被配置成:分别按照预设变化速率权重和预设变化比权重对上述屏幕变化速率参数和上述屏幕变化比进行加权求和,得到与上述当前屏幕图像对应的抓屏帧率系数。

在一些可选的实施方式中,上述第三确定单元503可以进一步被配置成:分别按照预设历史帧率系数权重和预设当前帧率系数权重对上述上一抓屏帧率系数和与上述当前屏幕图像对应的抓屏帧率系数进行加权求和,得到上述当前抓屏帧率系数。

在一些可选的实施方式中,上述装置500还可以包括:视频生成单元506,被配置成按照上述当前抓屏帧率抓取屏幕图像生成视频。

在一些可选的实施方式中,上述装置还可以包括:视频发送单元507,被配置成将所生成的视频发送给目标服务器。

在一些可选的实施方式中,上述装置还可以包括:图像抓取及发送单元508,被配置成按照上述当前抓屏帧率抓取屏幕图像,并将所抓取的屏幕图像发送给目标服务器。

需要说明的是,本公开的实施例提供的共享屏幕内容抓屏帧率确定装置中各单元的实现细节和技术效果可以参考本公开中其它实施例的说明,在此不再赘述。

下面参考图6,其示出了适于用来实现本公开的终端设备的计算机系统600的结构示意图。图6示出的计算机系统600仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。

如图6所示,计算机系统600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储装置608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有计算机系统600操作所需的各种程序和数据。处理装置601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。

通常,以下装置可以连接至i/o接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风等的输入装置606;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许计算机系统600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的终端设备的计算机系统600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从rom602被安装。在该计算机程序被处理装置601执行时,执行本公开的实施例的方法中限定的上述功能。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述终端设备中所包含的;也可以是单独存在,而未装配入该终端设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该终端设备执行时,使得该终端设备实现如图2所示的实施例及其可选实施方式示出的共享屏幕内容抓屏帧率确定方法,和/或,如图4所示的实施例及其可选实施方式示出的共享屏幕内容抓屏帧率确定方法。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开的实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一确定单元还可以被描述为“响应于确定屏幕图像变化,确定当前屏幕图像与上一屏幕图像相比的屏幕变化参数的单元”。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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