一种基于屏幕共享的视频编码方法和装置与流程

文档序号:11254294阅读:709来源:国知局
一种基于屏幕共享的视频编码方法和装置与流程

本发明涉及计算机技术领域,具体涉及一种基于屏幕共享的视频编码方法和装置。



背景技术:

目前随着即时通讯工具的普及,主要用于文档展示的屏幕共享技术已成视频会议的标配,实现屏幕共享的主要实现方式:1)vnc(virtualnetworkcomputing)技术,使用rfb(remoteframebuffer)协议,如vnc的实现,服务器接收客户端的动作,产生相应的桌面图片,刚开始时传输完整图片给客户端,之后发送屏幕变化部分的增量数据。2)使用视频通话方式,屏幕截图/编码/发送/接收/解码/显示方式,通过点对点或者中转服务传输数据。

在即时通讯工具中,为了简化设计,屏幕流一般被认为和摄像头视频流没有区别,两者共用一套视频通讯框架来传输数据,而不会为屏幕共享功能单独去开发vnc协议的客户端和服务器。屏幕共享虽然和视频通话原理一致,但屏幕共享应用场景有其独特性:屏幕缓冲区内容在无用户干预时一般不会变化,即连续相邻帧内容重复概率非常高,帧静止的场景比变化的场景多数倍;普通视频录像的场景中图像基本都是持续变化的,即便拍摄对象静止不动,但细微的拍摄角度变化,环境光源的变化,采集设备图像噪声等原因,导致很少出现完全重复的画面。而且屏幕共享画质要求比普通视频通话要求高,同等码率情况下,视频图像画质能接受时,往往屏幕共享画面中细节失真程度已让人无法接受。另外,屏幕共享画面延时比视频通话要求稍低,可以在编码前做些帧缓冲和预处理。

而现有的视频通话编码过程用于屏幕共享时,不会事先对大量重复帧做预判,仍采用标准的“编码/加密/传输/解密/解码”流程进行逐帧编码,这会导致:大量重复帧的重复计算和网络资源的浪费,相同码率下,部分码率配额浪费到重复帧上面,导致变化帧画面不够清晰。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种基于屏幕共享的视频编码方法和相应的一种基于屏幕共享的视频编码装置。

依据本发明的一个方面,提供了一种基于屏幕共享的视频编码方法,包括:

以预设频率从原始屏幕获取屏幕截图;

以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量;

根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率;

根据所述编码帧率对所述变化帧进行编码。

可选地,所述以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量的步骤,包括:

以一个预设时间单位内的屏幕截图为一个处理单元,设定所述处理单元中的第一帧屏幕截图为变化帧;

针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,根据各所述屏幕截图的亮度分量确定所述屏幕截图是否为变化帧;

统计所述处理单元中所述变化帧的数量。

可选地,所述针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,根据各所述屏幕截图的亮度分量确定所述屏幕截图是否为变化帧的步骤,包括:

针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,获取各所述屏幕截图的亮度分量;

将当前屏幕截图的亮度分量与前一帧屏幕截图的亮度分量进行比较,统计当前屏幕截图与前一帧屏幕截图中相同像素点处灰度值一致的像素点个数;

判断所述像素点个数是否等于所述屏幕截图的图像分辨率;

如果所述像素点个数不等于所述屏幕截图的图像分辨率,则确认所述当前屏幕截图为变化帧。

可选地,在所述判断所述像素点个数是否等于所述屏幕截图的图像分辨率的步骤之后,还包括:

如果所述像素点个数等于所述屏幕截图的图像分辨率,则确认所述当前屏幕截图为静止帧,并对所述静止帧进行过滤。

可选地,所述根据所述编码帧率对所述变化帧进行编码的步骤,包括:

设定各预设编码区间的第一个变化帧为解码立即刷新帧。

根据本发明的另一方面,提供了一种基于屏幕共享的视频编码装置,包括:

屏幕截图获取模块,用于以预设频率从原始屏幕获取屏幕截图;

变化帧统计模块,用于以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量;

编码帧率设定模块,用于根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率;

编码模块,用于根据所述编码帧率对所述变化帧进行编码。

可选地,所述变化帧统计模块,包括:

第一变化帧设定子模块,用于以一个预设时间单位内的屏幕截图为一个处理单元,设定所述处理单元中的第一帧屏幕截图为变化帧;

第二变化帧设定子模块,用于针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,根据各所述屏幕截图的亮度分量确定所述屏幕截图是否为变化帧

变化帧统计子模块,用于统计所述处理单元中所述变化帧的数量。

可选地,所述第二变化帧设定子模块,包括:

亮度分量获取单元,用于针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,获取各所述屏幕截图的亮度分量;

像素点统计单元,用于将当前屏幕截图的亮度分量与前一帧屏幕截图的亮度分量进行比较,统计当前屏幕截图与前一帧屏幕截图中相同像素点处灰度值一致的像素点个数;

像素点判断单元,用于判断所述像素点个数是否等于所述屏幕截图的图像分辨率;

变化帧确定单元,用于如果所述像素点个数不等于所述屏幕截图的图像分辨率,则确认所述当前屏幕截图为变化帧。

可选地,在所述像素点判断单元之后,还包括:

静止帧确定过滤单元,用于如果所述像素点个数等于所述屏幕截图的图像分辨率,则确认所述当前屏幕截图为静止帧,并对所述静止帧进行过滤。

可选地,所述编码模块还用于设定各预设编码区间的第一个变化帧为解码立即刷新帧。

根据本发明的一种基于屏幕共享的视频编码方法和装置,可以以预设频率从原始屏幕获取屏幕截图;以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量;根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率;根据所述编码帧率对所述变化帧进行编码。由此解决了现有的视频通话编码过程用于屏幕共享时,不会事先对大量重复帧做预判,导致大量重复帧的重复计算和网络资源的浪费,相同码率下,部分码率配额浪费到重复帧上面,导致变化帧画面不够清晰的技术问题。取得了减少对重复帧的计算以及网络资源的浪费,提高变化帧清晰度的有益效果。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的一种基于屏幕共享的视频编码方法的步骤流程图;

图1a示出了根据本发明一个实施例的一种屏幕共享的系统架构图。

图2示出了根据本发明一个实施例的一种基于屏幕共享的视频编码方法的步骤流程图;以及

图3示出了根据本发明一个实施例的一种基于屏幕共享的视频编码装置的结构示意图;以及

图4示出了根据本发明一个实施例的一种基于屏幕共享的视频编码装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

实施例一

详细介绍本发明实施例提供的一种基于屏幕共享的视频编码方法。

参照图1,示出了本发明实施例中一种基于屏幕共享的视频编码方法的步骤流程图。

步骤110,以预设频率从原始屏幕获取屏幕截图。

如前述,随着即时通讯工具的普及,主要用于文档展示的屏幕共享技术已成视频会议的标配,实现屏幕共享的主要实现方式:1)vnc(virtualnetworkcomputing)技术,使用rfb(remoteframebuffer)协议,如vnc的实现,服务器接收客户端的动作,产生相应的桌面图片,刚开始时传输完整图片给客户端,之后发送屏幕变化部分的增量数据。2)使用视频通话方式,屏幕截图/编码/发送/接收/解码/显示方式,通过点对点或者中转服务传输数据。而且在即时通讯工具中,为了简化设计,屏幕流一般被认为和摄像头视频流没有区别,两者共用一套视频通讯框架来传输数据,而不会为屏幕共享功能单独去开发vnc协议的客户端和服务器。那么在手机、电脑等移动终端中大多采用上述的第二种方式进行屏幕共享。而本申请是相对于上述的第二种实现方式,存在进一步的优化。

在本发明实施例中,为了进行屏幕共享,首先也需要对进行屏幕共享的原始屏幕进行截图,即获取原始屏幕的屏幕截图,具体的可以预设频率从原始屏幕获取屏幕截图。其中的预设频率可以根据需求在本步骤之前,或者是本步骤之前的任一步骤之前进行设定,对此本发明实施例不加以限定。其中的原始屏幕可以电脑、笔记本、手机等移动终端的屏幕,也可以为投影仪屏幕等等任何可以展示数字视频或者是数字图片等内容的屏幕。

如图1a为一种屏幕共享的系统架构图。其中,中间的电脑即为进行屏幕共享的原始设备,其屏幕即为原始屏幕,四周的四个设备即为接收从原始设备发送的数据进行展示的共享设备,那么该四个设备的屏幕即为共享屏幕。

而且,在本发明实施例中,可以利用任何可用方法或设备从原始屏幕获取屏幕截图,对此本发明实施例不加以限定。

例如,当前需要将屏幕1中显示的内容共享给其他的屏幕2、屏幕3,那么此时屏幕1即为原始屏幕,而屏幕2和屏幕3则为共享屏幕。那么在本步骤中则会以预设频率获取屏幕1的屏幕截图。

步骤120,以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量。

如前述,在实际应用中,现有的屏幕共享技术会对从原始屏幕获取的屏幕截图全部进行编码等处理以发送至各个共享屏幕,但是在屏幕共享过程中,可能会出现在一段时间之内原始屏幕显示的内容并未发生任何改变的情况,那么在该段时间之内获取的屏幕截图是一致的,也即在当前获取的屏幕截图与前一次获取的屏幕截图是一致的,那么在本发明实施例中,可以定义当前获取的屏幕截图为静止帧;而如果当前获取的屏幕截图与前一次获取的屏幕截图不一致,那么在本发明实施例中,可以定义当前获取的屏幕截图为变化帧。

对于静止帧,如果将其发送至各个共享屏幕,那么各共享屏幕接收到该静止帧之后的展示内容和接收到该静止帧之前的展示内容并不会发生变化,因此在本发明实施例中,可以只将变化帧发送至各个共享屏幕。

那么,在本发明实施例中,在获取原始屏幕的屏幕截图之后,在对屏幕截图进行进一步处理之后,首先可以一个预设时间单位内的屏幕截图为一个处理单元,分别统计各个处理单元中变化帧的数量。其中的预设时间单位可以根据需求在本步骤之前,或者是本步骤之前的任一步骤之前进行设定,对此本发明实施例不加以限定。

例如,可以设定预设时间单位为1秒(s),预设频率为10次每秒,那么可以从开始屏幕共享开始,以每秒10次的频率获取原始屏幕的屏幕截图,而且,可以周期性的将每1秒的屏幕截图作为一个处理单元,分别统计各处理单元中的变化帧,具体的为了保证屏幕共享的时间顺序,需要按照各处理单元中的屏幕截图的获取时间顺序依次统计各处理单元中的变化帧。例如,从屏幕共享开始时刻到第1秒,获取的屏幕截图依次为a1、a2、a3、a4、a5、a6、a7、a8、a9、a10,从第1秒到第2秒,获取的屏幕截图依次为b1、b2、b3、b4、b5、b6、b7、b8、b9、b10,那么可以a1、a2、a3、a4、a5、a6、a7、a8、a9、a10作为第一个处理单元,以b1、b2、b3、b4、b5、b6、b7、b8、b9、b10作为第二个处理单元,并且在每个处理单元确定之后,确定该处理单元中的变化帧。那么则可以在获取屏幕截图a10之后,即可确定第一个处理单元中的变化帧,在获取屏幕截图b10之后,即可确定第二个处理单元中的变化帧。

步骤130,根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率。

在实际应用中,在将屏幕截图发送至共享屏幕之前,还需要对各屏幕截图进行编码,对于每个处理单元,最终确定的变化帧的数量并不固定,那么对于不同的处理单元,对其中的变化帧进行编码的编码帧率也需要进行相应调整。在本发明实施例中,可以根据处理单元中变化帧的数量以及预设时间单位设定编码帧率。具体的可以将处理单元中的变化帧数量与预设时间单位的比值作为针对该处理单元的编码帧率。

例如,对于前述的a1、a2、a3、a4、a5、a6、a7、a8、a9、a10组成的处理单元,假设确定的变化帧为a1、a3、a7、a10,预设时间单位为1s,那么可以针对该处理单元中的变化帧进行编码的编码帧率为4变化帧/秒,即每秒完成对四个变化帧的编码。

步骤140,根据所述编码帧率对所述变化帧进行编码。

在确定了针对当前处理单元的编码帧率之后,则可以根据该编码帧率对当前处理单元中的变化帧进行编码。

其中的编码包括视频编码,所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频流传输中最为重要的编解码标准有国际电联的h.26x系列,具体可以包括h.261、h.262、h.263、h.263+、h.263++、h.264,运动静止图像专家组的m-jpeg和国际标准化组织运动图像专家组的mpeg(movingpictureexpertsgroup)系列标准,此外在互联网上被广泛应用的还有realvideo(一种高压缩比的视频格式)、wmv(windowsmediavideo)以及quicktime(一种音频和视频文件格式)等等。

在本发明实施例中可以利用任何可用编码方式对变化帧进行编码,具体的可以在本步骤之前,或者是本步骤之前的任一步骤之前根据需求设定编码方式,对此本发明实施例不加以限定。

在对变化帧进行编码的过程中,为了保证屏幕共享的顺序不会错乱,同样需要按照各变化帧的获取时间的先后顺序依次对各变化帧进行编码。例如,对于上述的同一处理单元中的变化帧a1、a3、a7、a10,假设各变化帧的获取先后顺序为a1、a3、a7、a10,那么则可以按照获取的先后顺序依次分别对变化帧a1、a3、a7、a10进行编码。

在本发明实施例中,可以以预设频率从原始屏幕获取屏幕截图;以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量;根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率;根据所述编码帧率对所述变化帧进行编码。由此解决了现有的视频通话编码过程用于屏幕共享时,不会事先对大量重复帧做预判,导致大量重复帧的重复计算和网络资源的浪费,相同码率下,部分码率配额浪费到重复帧上面,导致变化帧画面不够清晰的技术问题。取得了减少对重复帧的计算以及网络资源的浪费,提高变化帧清晰度的有益效果。

实施例二

详细介绍本发明实施例提供的一种基于屏幕共享的视频编码方法。

参照图1,示出了本发明实施例中一种基于屏幕共享的视频编码方法的步骤流程图。

步骤210,以预设频率从原始屏幕获取屏幕截图。

步骤220,以一个预设时间单位内的屏幕截图为一个处理单元,设定所述处理单元中的第一帧屏幕截图为变化帧。

在本发明实施例中,为了避免如果连续多个处理单元中的屏幕截图都完全一致,导致各共享屏幕长时间接收不到新的变化帧,容易导致各共享计算机误判屏幕共享发生故障导致重启或黑屏等情况。因此,在本发明实施例中,在确定各处理单元的变化帧时,可以强制设定每个处理单元的第一帧屏幕截图为变化帧。

例如,对于上述第一个处理单元,其中包含的各屏幕截图按照获取时间先后顺序为a1、a2、a3、a4、a5、a6、a7、a8、a9、a10,那么则可以设定其中第一帧屏幕截图,也即最先获取的一帧屏幕截图a1为变化帧。

步骤230,针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,根据各所述屏幕截图的亮度分量确定所述屏幕截图是否为变化帧。

那么针对处理单元中的除第一帧屏幕截图之外的其他屏幕截图,即第二帧屏幕截图到最后一帧屏幕截图,也即处理单元中第二获取的屏幕截图到最后一次获取的屏幕截图,可以分别确定各屏幕截图是否为变化帧。

在实际应用中,可以利用yuv(亦称ycrcb)视频信号传输进行视频共享。其中的yuv进行主要用于优化彩色视频信号的传输。与r(red,红色)g(green,绿色)b(blue,蓝色)视频信号传输相比,它最大的优点在于只需占用极少的频宽(rgb要求三个独立的视频信号同时传输)。其中y为亮度分量,表示明亮度(luminance或luma),也就是灰阶值;而u和v表示的则是色度(chrominance或chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。亮度是透过rgb输入信号来建立的,方法是将rgb信号的特定部分叠加到一起。"色度"则定义了颜色的两个方面,即色调与饱和度,分别用cr和cb来表示。其中,cr反映了rgb输入信号红色部分与rgb信号亮度值之间的差异。而cb反映的是rgb输入信号蓝色部分与rgb信号亮度值之间的差异。采用yuv色彩空间的重要性是它的亮度信号y和色度信号u、v是分离的。如果只有y分量而没有u、v分量,那么这样表示的图像就是黑白灰度图像。

在本发明实施例中,可以根据各屏幕截图中的y分量确定屏幕截图是否为变化帧。那么此时如果对于同一处理单元中的第二帧屏幕截图到最后一帧屏幕截图,如果当前屏幕截图的y分量和其前一帧屏幕截图的y分量完全一致,那么则可以确认当前屏幕截图为静止帧;而如果当前屏幕截图的y分量和其前一帧屏幕截图的y分量不完全一致,那么则可以确认当前屏幕截图为变化帧。

在本申请实施例中,还可以利用其他任何可用方法针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,确定各屏幕截图是否为变化帧。对此本申请实施例不加以限定。

例如,针对同一处理单元中的第二帧屏幕截图到最后一帧屏幕截图,可以分别比较当前屏幕截图是否与前一屏幕截图,也即前一次获取的屏幕截图是否完全一致,如果当前屏幕截图与前一屏幕截图完全一致,那么则可以确定当前屏幕截图为静止帧;而如果当前屏幕截图与前一屏幕截图不完全一致,那么则可以确定当前屏幕截图为变化帧。在本发明实施例中,可以利用任何可用方法判断两个屏幕截图是否完全一致,对此本发明实施例不加以限定。在实际应用中,一次屏幕共享过程中的原始屏幕是固定的,那么在一次屏幕过程中的各处理单元中的屏幕截图的尺寸都是一致的,那么则可以依次比较当前屏幕截图中的各像素点与前一屏幕截图中相应位置处的像素点是否对应一致,如果当前屏幕截图中的各像素点与前一屏幕截图中相应位置处的像素点均对应一致,则表明当前屏幕截图与前一屏幕截图完全一致;而如果当前屏幕截图中的各像素点与前一屏幕截图中相应位置处的像素点没有完全对应一致,那么表明当前屏幕截图与前一屏幕截图不完全一致。

在本发明实施例中,也可以利用任何可用方法针对各处理单元的第二帧屏幕截图到最后一帧屏幕截图,确定各屏幕截图是否为变化帧,对此本发明实施例也不加以限定。

可选地,在本发明实施例中,所述步骤230进一步可以包括:

子步骤231,针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,获取各所述屏幕截图的亮度分量。

在本发明实施例中,为了根据屏幕截图的亮度分量确定屏幕截图是否为变化帧。那么首先需要针对各处理单元的第二帧屏幕截图到最后一帧屏幕截图,获取各屏幕截图的亮度分量。在本发明实施例中,可以利用任何可用方法或设备获取屏幕截图的亮度分量,对此本发明实施例不加以限定。

子步骤232,将当前屏幕截图的亮度分量与前一帧屏幕截图的亮度分量进行比较,统计当前屏幕截图与前一帧屏幕截图中相同像素点处灰度值一致的像素点个数。

如前述,在一次屏幕共享过程中原始屏幕的屏幕截图尺寸都是一致的,那么各屏幕截图的y分量尺寸必然也是一致的,而且和屏幕截图的尺寸一致。

那么将当前屏幕截图的亮度与前一帧屏幕截图的亮度分量进行比较时,具体的可以按照像素点进行比较,也即依次分别比较当前屏幕截图中各像素点对应的亮度分量与前一帧屏幕截图中相应位置处的像素点的亮度分量进行比较。例如,将当前屏幕截图中的1*1处的像素点的亮度分量与前一帧屏幕截图中1*1处的像素点的亮度分量进行比较,将当前屏幕截图中的1*2处的像素点的亮度分量与前一帧屏幕截图中1*2处的像素点的亮度分量进行比较,当前屏幕截图中的2*1处的像素点的亮度分量与前一帧屏幕截图中2*1处的像素点的亮度分量进行比较,以此类推。统计当前屏幕截图与前一帧屏幕截图中相同像素点处亮度分量一致的像素点个数。

另外,在本发明实施例中,各个像素点的亮度分量也可以理解为灰度值,那么此时也可以将当前屏幕截图的亮度分量与前一帧屏幕截图的亮度分量进行比较,具体的可以分别比较当前屏幕截图中各像素点对应的灰度值与前一帧屏幕截图中相应位置处的像素点的灰度值。统计当前屏幕截图与前一帧屏幕截图中相同像素点处灰度值一致的像素点个数。

子步骤233,判断所述像素点个数是否等于所述屏幕截图的图像分辨率。

在实际应用中,屏幕截图中的图像分辨率即表示该屏幕截图中包含的像素点的数量,例如,假设某一屏幕截图的图像分辨率为100p(pixel,像素点)*50p,那么该屏幕截图中包含的像素点个数为100*50,即5000个。

那么,在本发明实施例中,在统计得到当前屏幕截图与前一帧屏幕截图中相同像素点处灰度值一致的像素点个数,或者是统计得到当前屏幕截图与前一帧屏幕截图中相同像素点处亮度分量一致的像素点个数之后,则可以判断统计得到的像素点个数是否等于屏幕截图的图像分辨率。

子步骤234,如果所述像素点个数不等于所述屏幕截图的图像分辨率,则确认所述当前屏幕截图为变化帧。

很明显,如果针对当前屏幕截图统计得到的像素点个数不等于对应当前屏幕截图的图像分辨率,那么则说明在当前屏幕截图中存在像素点的亮度分量或者是灰度值与其前一帧的屏幕截图中相应位置处的像素点的亮度分量或者是灰度值不一致,那么且可以确认当前屏幕截图为变化帧。

可选地,在本发明实施例中,在所述子步骤233之后,还可以包括:

如果所述像素点个数等于所述屏幕截图的图像分辨率,则确认所述当前屏幕截图为静止帧,并对所述静止帧进行过滤。

而如果针对当前屏幕截图统计得到的像素点个数等于对应当前屏幕截图的图像分辨率,那么则可以确认当前屏幕截图为静止帧,对于静止帧不需要将其传输至各共享屏幕,那么在本发明实施例中,为了避免静止帧占用存储空间,可以将静止帧过滤掉。当然可以不对静止帧执行任何操作,对此本发明实施例不加以限定。

需要说明是,在本发明实施例中,还可以将当前屏幕截图的亮度分量与前一帧屏幕截图的亮度分量进行比较,统计当前屏幕截图与前一帧屏幕截图中相同像素点处灰度值不一致的像素点个数,或者是统计当前屏幕截图与前一帧屏幕截图中相同像素点处亮度分量不一致的像素点个数。然后判断所述像素点个数是否为零。那么如果所述像素点个数为零,则确认所述当前屏幕截图为变化帧;而如果所述像素点个数不为零,则可以确认所述当前屏幕截图为静止帧。对此本发明实施例也不加以限定。

步骤240,统计所述处理单元中所述变化帧的数量。

步骤250,根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率。

步骤260,根据所述编码帧率对所述变化帧进行编码。

可选地,在本发明实施例中,所述步骤260进一步可以包括:

子步骤261,设定各预设编码区间的第一个变化帧为解码立即刷新帧。

i(帧内编码帧)帧是一种自带全部信息的独立帧,无需参考其它图像便可独立进行解码,视频序列中的第一个帧始终都是i帧。

idr(instantaneousdecodingrefresh,解码立即刷新帧)帧属于i(帧内编码帧)帧,i和idr帧都是使用帧内预测的。idr帧的作用是立刻刷新,使错误不致传播,从idr帧开始,重新算一个新的序列开始编码。而i帧不具有随机访问的能力,这个功能是由idr承担。idr会导致dpb((decodedpicturebuffer,解码图片缓冲)参考帧列表——这是关键所在)清空,而i不会。idr图像一定是i图像,但i图像不一定是idr图像。一个序列中可以有很多的i图像,i图像之后的图像可以引用i图像之间的图像做运动参考。一个序列中可以有很多的i图像,i图像之后的图象可以引用i图像之间的图像做运动参考。

对于idr帧来说,在idr帧之后的所有帧都不能引用任何idr帧之前的帧的内容,与此相反,对于普通的i帧来说,位于其之后的b(双向预测内插编码帧/双向差别帧)帧和p(前向预测编码帧)帧可以引用位于普通i帧之前的i帧。从随机存取的视频流中,播放器永远可以从一个idr帧播放,因为在它之后没有任何帧引用之前的帧。但是,不能在一个没有idr帧的视频中从任意点开始播放,因为后面的帧总是会引用前面的帧。

收到idr帧时,解码器另外需要做的工作就是:把所有的pps(pictureparameterset,图像参数集)和sps(sequenceparameterset,序列参数集)参数进行更新。

对idr帧的处理(与i帧的处理相同):(1)进行帧内预测,决定所采用的帧内预测模式。(2)像素值减去预测值,得到残差。(3)对残差进行变换和量化。(4)变长编码和算术编码。(5)重构图像并滤波,得到的图像作为其它帧的参考帧。

因此,在本发明实施例中,为了防止在解码端出现丢帧等错误时,导致解码错误传递到下一个区间,进而导致视频长期错误,可以将每个预设编码区间的第一帧强制为idr帧。其中的预设编码区间的时间长度可以等于前述的处理单元的时间长度,当然也可以不等于前述的处理单元的时间长度,对此本发明实施例不加以限定。具体的可以根据需求在本步骤之前,或者是本步骤之前的任一步骤之前设定预设编码区间的时间长度,对此本发明实施例不加以限定。

而且,在本发明实施例中,为了保证屏幕共享的时间顺序不会混乱,任何可以按照各变化帧的获取先后顺序对各变化帧进行编码。也即先获取的先编码。

可选地,在本发明实施例中,在步骤260之后还可以包括:

步骤270,对编码后的变化帧进行压缩处理。

在本发明实施例中,为了方便将各变化帧发送至各个共享移动终端的共享屏幕,还需要在发送之前对编码后的各变化帧进行压缩处理。在本发明实施例中,可以利用任何可用设备或方法对变化帧进行压缩处理,对此本发明实施例不加以限定。而且,在本发明实施例中,为了保证屏幕共享的时间顺序不会混乱,任何可以按照各变化帧的获取先后顺序对各变化帧进行压缩。也即先获取的先压缩。

可选地,在本发明实施例中,所述步骤270进一步可以包括:

子步骤271,利用h.264压缩格式对编码后的变化帧进行压缩处理。

h.264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。所以对于一段变化不大图像画面,我们可以先编码出一个完整的图像帧a,随后的b帧就不编码全部图像,只写入与a帧的差别,这样b帧的大小就只有完整帧的1/10或更小。b帧之后的c帧如果变化不大,我们可以继续以参考b的方式编码c帧,这样循环下去。这段图像我们称为一个序列(序列就是有相同特点的一段数据),当某个图像与之前的图像变化很大,无法参考前面的帧来生成,那我们就结束上一个序列,开始下一段序列,也就是对这个图像生成一个完整帧a1,随后的图像就参考a1生成,只写入与a1的差别内容。

在h.264协议里定义了三种帧,完整编码的帧叫i帧,参考之前的i帧生成的只包含差异部分编码的帧叫p帧,还有一种参考前后的帧编码的帧叫b帧。另外,为了解码的重同步,h.264又引入了idr帧。因此可以看出idr帧是与h.264匹配的。那么在本发明实施例中,如果在前述步骤250中设定各预设编码区间的第一个变化帧为解码立即刷新帧,那么在本步骤中则需要利用h.264压缩格式对编码后的变化帧进行压缩处理。

h.264采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成i帧的算法,帧间压缩是生成b帧和p帧的算法。

h.264的压缩方法过程如下:

1、分组:把几帧变化帧分为一组gop(groupofpictures,画面组),为防止运动变化,每组的帧数不宜取多;

2、定义帧:将每组内各变化帧定义为三种类型,即i帧、b帧和p帧,其中可以将每组中的第一个变化帧定义为idr帧;

3、预测帧:以i帧做为基础帧,以i帧预测p帧,再由i帧和p帧预测b帧;

4、数据传输:最后将i帧数据与预测的差值信息进行存储和传输。

帧内(intraframe)压缩也称为空间压缩(spatialcompression)。当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,这实际上与静态图像压缩类似。帧内一般采用有损压缩算法,由于帧内压缩是编码一个完整的图像,所以可以独立的解码、显示。帧内压缩一般达不到很高的压缩,跟编码jpeg差不多。

帧间(interframe)压缩的原理是:相邻几帧的数据有很大的相关性,或者说前后两帧信息变化很小的特点。也即连续的视频其相邻帧之间具有冗余信息,根据这一特性,压缩相邻帧之间的冗余量就可以进一步提高压缩量,减小压缩比。帧间压缩也称为时间压缩(temporalcompression),它通过比较时间轴上不同帧之间的数据进行压缩。帧间压缩一般是无损的。帧差值(framedifferencing)算法是一种典型的时间压缩法,它通过比较本帧与相邻帧之间的差异,仅记录本帧与其相邻帧的差值,这样可以大大减少数据量。

步骤280,将压缩处理后的变化帧发送至各共享屏幕。

将编码压缩处理后的变化帧即可以发送至各个共享屏幕以供各个共享屏幕进行展示。在本发明实施例中,可以利用任何可用方法或设备将编码压缩处理后的变化帧发送至各共享屏幕,对此本发明实施例不加以限定。

在本发明实施例中,可以以预设频率从原始屏幕获取屏幕截图;以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量;根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率;根据所述编码帧率对所述变化帧进行编码。由此解决了现有的视频通话编码过程用于屏幕共享时,不会事先对大量重复帧做预判,导致大量重复帧的重复计算和网络资源的浪费,相同码率下,部分码率配额浪费到重复帧上面,导致变化帧画面不够清晰的技术问题。取得了减少对重复帧的计算以及网络资源的浪费,提高变化帧清晰度的有益效果。

而且,在本发明实施例中,还可以一个预设时间单位内的屏幕截图为一个处理单元,设定所述处理单元中的第一帧屏幕截图为变化帧;针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,确定所述屏幕截图是否为变化帧。并且进一步地,针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,获取各所述屏幕截图的亮度分量;将当前屏幕截图的亮度分量与前一帧屏幕截图的亮度分量进行比较,统计当前屏幕截图与前一帧屏幕截图中相同像素点处灰度值一致的像素点个数;判断所述像素点个数是否等于所述屏幕截图的图像分辨率;如果所述像素点个数不等于所述屏幕截图的图像分辨率,则确认所述当前屏幕截图为变化帧。从而提高了变化帧的准确性。

另外,在本发明实施例中,还可以设定各预设编码区间的第一个变化帧为解码立即刷新帧。然后利用h.264压缩格式对编码后的变化帧进行压缩处理。从而可以防止在解码端出现丢帧时,解码错误传递到下一个区间,导致视频长期错误。

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

实施例三

详细介绍本发明实施例提供的一种基于屏幕共享的视频编码装置。

参照图3,示出了本发明实施例中一种基于屏幕共享的视频编码装置的结构示意图。

屏幕截图获取模块310,用于以预设频率从原始屏幕获取屏幕截图。

变化帧统计模块320,用于以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量。

编码帧率设定模块330,用于根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率。

编码模块340,用于根据所述编码帧率对所述变化帧进行编码。

在本发明实施例中,可以以预设频率从原始屏幕获取屏幕截图;以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量;根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率;根据所述编码帧率对所述变化帧进行编码。由此解决了现有的视频通话编码过程用于屏幕共享时,不会事先对大量重复帧做预判,导致大量重复帧的重复计算和网络资源的浪费,相同码率下,部分码率配额浪费到重复帧上面,导致变化帧画面不够清晰的技术问题。取得了减少对重复帧的计算以及网络资源的浪费,提高变化帧清晰度的有益效果。

实施例四

详细介绍本发明实施例提供的一种基于屏幕共享的视频编码装置。

参照图4,示出了本发明实施例中一种基于屏幕共享的视频编码装置的结构示意图。

屏幕截图获取模块410,用于以预设频率从原始屏幕获取屏幕截图。

变化帧统计模块420,用于以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量。

可选地,在本发明实施例中,所述变化帧统计模块420,进一步可以包括:

第一变化帧设定子模块421,用于以一个预设时间单位内的屏幕截图为一个处理单元,设定所述处理单元中的第一帧屏幕截图为变化帧。

第二变化帧设定子模块422,用于针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,根据各所述屏幕截图的亮度分量确定所述屏幕截图是否为变化帧。

变化帧统计子模块423,用于统计所述处理单元中所述变化帧的数量。

可选地,在本发明实施例中,所述第二变化帧设定子模块422,进一步可以包括:

亮度分量获取单元,用于针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,获取各所述屏幕截图的亮度分量。

像素点统计单元,用于将当前屏幕截图的亮度分量与前一帧屏幕截图的亮度分量进行比较,统计当前屏幕截图与前一帧屏幕截图中相同像素点处灰度值一致的像素点个数。

像素点判断单元,用于判断所述像素点个数是否等于所述屏幕截图的图像分辨率。

变化帧确定单元,用于如果所述像素点个数不等于所述屏幕截图的图像分辨率,则确认所述当前屏幕截图为变化帧。

可选地,在本发明实施例中,在所述像素点判断单元之后,还包括:

静止帧确定过滤单元,用于如果所述像素点个数等于所述屏幕截图的图像分辨率,则确认所述当前屏幕截图为静止帧,并对所述静止帧进行过滤。

编码帧率设定模块430,用于根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率。

编码模块440,用于根据所述编码帧率对所述变化帧进行编码。

可选地,在本发明实施例中,所述编码模块440,还用于设定各预设编码区间的第一个变化帧为解码立即刷新帧。

可选地,在本发明实施例中,在所述编码模块440之后,还可以包括:

压缩处理模块,用于对编码后的变化帧进行压缩处理。

可选地,在本发明实施例中,所述压缩处理模块,还用于利用h.264压缩格式对编码后的变化帧进行压缩处理。

发送模块,用于将压缩处理后的变化帧发送至各共享屏幕。

在本发明实施例中,可以以预设频率从原始屏幕获取屏幕截图;以一个预设时间单位内的屏幕截图为一个处理单元,分别统计所述处理单元中变化帧的数量;根据所述处理单元中变化帧的数量以及预设时间单位设定编码帧率;根据所述编码帧率对所述变化帧进行编码。由此解决了现有的视频通话编码过程用于屏幕共享时,不会事先对大量重复帧做预判,导致大量重复帧的重复计算和网络资源的浪费,相同码率下,部分码率配额浪费到重复帧上面,导致变化帧画面不够清晰的技术问题。取得了减少对重复帧的计算以及网络资源的浪费,提高变化帧清晰度的有益效果。

而且,在本发明实施例中,还可以一个预设时间单位内的屏幕截图为一个处理单元,设定所述处理单元中的第一帧屏幕截图为变化帧;针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,确定所述屏幕截图是否为变化帧。并且进一步地,针对所述处理单元的第二帧屏幕截图到最后一帧屏幕截图,获取各所述屏幕截图的亮度分量;将当前屏幕截图的亮度分量与前一帧屏幕截图的亮度分量进行比较,统计当前屏幕截图与前一帧屏幕截图中相同像素点处灰度值一致的像素点个数;判断所述像素点个数是否等于所述屏幕截图的图像分辨率;如果所述像素点个数不等于所述屏幕截图的图像分辨率,则确认所述当前屏幕截图为变化帧。从而提高了变化帧的准确性。

另外,在本发明实施例中,还可以设定各预设编码区间的第一个变化帧为解码立即刷新帧。然后利用h.264压缩格式对编码后的变化帧进行压缩处理。从而可以防止在解码端出现丢帧时,解码错误传递到下一个区间,导致视频长期错误。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的屏幕共享设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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