本公开涉及图像处理技术领域,尤其涉及图像传输方法及装置。
背景技术:
在图像远程投放的过程中,通常需要对待传输图像进行图像编码,然后传输到接收端,接收端解码后播放图像。远程投放的图像可以是操作系统的桌面图像,也可以是视频数据等。虚拟网络控制台(Virtual Network Console,VNC)技术是基于桌面系统开发的,桌面系统的大部分图像都是静止的,图像更新周期较长,图像更新的区域比较有规律,在VNC技术中,利用远程帧缓冲(英文:Remote Frame Buffer,RFB)协议的编码算法对桌面图像进行编码,接收端播放桌面图像较为流畅,鼠标、键盘控制的响应速度也非常快,但是在播放视频数据时效率就非常低,由于视频数据的数据传输量较大,视频数据的传输占用了大量带宽,在低带宽的网络环境下会导致网络堵塞,而且使用TCP重传机制会使得图像帧率降低,在帧率降低到25帧/秒以下时,视觉上就会出现画面延迟,卡顿等现象。
技术实现要素:
本公开实施例提供一种图像传输方法及装置,能够解决利用VNC技术传输视频数据时,接收端容易出现画面延迟、卡顿的问题。所述技术方案如下:
根据本公开实施例的第一方面,提供一种图像传输方法,该方法包括:
获取待传输图像帧;
在确定待传输图像帧中包含视频数据时,利用数字视频压缩格式的编码算法对视频数据进行编码;
利用远程帧缓冲RFB协议中的编码算法对待传输图像帧中除视频数据之外的剩余部分进行编码;
向客户端设备发送编码后的待传输图像帧。
对视频数据使用视频压缩格式的编码算法进行编码,对除视频数据之外的剩余部分利用RFB协议中的编码算法进行编码,保证了视频数据传输的流畅性,也保证了桌面鼠标、键盘控制的响应速度。
在一个实施例中,该方法还包括:
获取图像帧流,图像帧流包含待传输图像帧之前连续的至少一个图像帧;
在至少一个图像帧中,变化的宏块数量大于或等于第一阈值时,确定待传输图像帧包含视频数据,变化的宏块为不同的图像帧中,位置相同,内容不同的宏块。
根据待传输图像帧之前的图像帧流确定待传输图像帧中是否包含视频数据,可以实时对待传输图像帧的编码方式进行调整,使得编码方式适应待传输图像帧,提高传输效率。
在一个实施例中,该方法还包括:
在确定待传输图像帧中目标宏块内有效像素的数量大于或等于第二阈值时,将目标宏块确定为变化的宏块,至少一个图像帧中与有效像素位置相同的像素颜色不同。
如果一个位置的宏块有效像素比较多,说明该位置的宏块一帧和一帧之间的变化比较大,可以确定是视频数据。
在一个实施例中,该方法还包括:
对于至少一个图像帧中位置相同的像素组,若像素组内颜色不同的像素的数量大于或等于预设计数,则将待传输图像帧中与像素组位置相同的像素确定为有效像素。
如果不同图像帧中相同位置的像素,颜色不同的像素数量较大,说明该位置的像素变化较为频繁,很可能是视频数据,可以将其确定为有效像素。
在一个实施例中,该方法还包括:
在图像帧流中目标图像帧的预设位置的像素与上一个图像帧的预设位置的像素颜色不同时,将预设位置的像素计数加1;
在目标图像帧的预设位置的像素与上一个图像帧的预设位置的像素颜色相同时,将预设位置的像素计数减1;
直到图像帧流中所有图像帧的预设位置的像素都判断完毕后,在预设位置的像素计数大于或等于预设计数时,将待传输图像帧中预设位置的像素确定为有效像素。
对图像帧流中每个图像帧的预设位置的像素都进行比较,能够较为准确地确定预设位置像素地变化情况,能够更加准确地判断是否为视频数据。
在一个实施例中,该方法还包括:
接收客户端设备发送的处理器占用率;
在处理器占用率大于或等于第一占用率时,降低向客户端设备发送图像帧的帧率。
图像传输装置根据客户端设备地反馈情况对帧率进行调整,使得图像帧地传输适应客户端设备地处理速度。
在一个实施例中,该方法还包括:
在处理器占用率小于第二占用率时,提高向客户端设备发送图像帧的帧率,第二占用率小于或等于第一占用率。
根据本公开实施例的第二方面,提供一种图像传输装置,包括:获取模块、第一编码模块、第二编码模块、发送模块;
其中,获取模块,用于获取待传输图像帧;
第一编码模块,用于在确定待传输图像帧中包含视频数据时,利用数字视频压缩格式的编码算法对视频数据进行编码;
第二编码模块,用于利用远程帧缓冲RFB协议中的编码算法对待传输图像帧中除视频数据之外的剩余部分进行编码;
发送模块,用于向客户端设备发送编码后的待传输图像帧。
在一个实施例中,图像传输装置还包括视频数据判断模块;
获取模块,还用于获取图像帧流,图像帧流包含待传输图像帧之前连续的至少一个图像帧;
视频数据判断模块,用于在至少一个图像帧中,变化的宏块数量大于或等于第一阈值时,确定待传输图像帧包含视频数据,变化的宏块为不同的图像帧中,位置相同,内容不同的宏块。
在一个实施例中,图像传输装置还包括宏块判断模块;
宏块判断模块,用于在确定待传输图像帧中目标宏块内有效像素的数量大于或等于第二阈值时,将目标宏块确定为变化的宏块,至少一个图像帧中与有效像素位置相同的像素颜色不同。
在一个实施例中,图像传输装置还包括第一像素判断模块;
第一像素判断模块,对于至少一个图像帧中位置相同的像素组,若像素组内颜色不同的像素的数量大于或等于预设计数,则将待传输图像帧中与像素组位置相同的像素确定为有效像素。
在一个实施例中,图像传输装置还包括计数模块和第二像素判断模块;
计数模块,用于在图像帧流中目标图像帧的预设位置的像素与上一个图像帧的预设位置的像素颜色不同时,将预设位置的像素计数加1;在目标图像帧的预设位置的像素与上一个图像帧的预设位置的像素颜色相同时,将预设位置的像素计数减1;
第二像素判断模块,用于图像帧流中所有图像帧的预设位置的像素都判断完毕后,在预设位置的像素计数大于或等于预设计数时,将待传输图像帧中预设位置的像素确定为有效像素。
在一个实施例中,图像传输装置还包括接收模块和设置模块;
接收模块,用于接收客户端设备发送的处理器占用率;
设置模块,用于在处理器占用率大于或等于第一占用率时,降低向客户端设备发送图像帧的帧率。
在一个实施例中,设置模块,还用于在处理器占用率小于第二占用率时,提高向客户端设备发送图像帧的帧率,第二占用率小于或等于第一占用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开实施例提供的一种图像传输方法的流程示意图;
图2是本公开实施例提供的一种待传输图像帧示意图;
图3是本公开实施例提供的一种图像帧流示意图;
图4是本公开实施例提供的一种宏块示意图;
图5是本公开另一实施例提供的一种图像传输方法信息交互示意图;
图6是本公开实施例提供的一种图像传输装置的结构示意图;
图7是本公开实施例提供的一种图像传输装置的结构示意图;
图8是本公开实施例提供的一种图像传输装置的结构示意图;
图9是本公开实施例提供的一种图像传输装置的结构示意图;
图10是本公开实施例提供的一种图像传输装置的结构示意图;
图11是本公开实施例提供的一种图像传输装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开实施例提供一种图像传输方法,如图1所示,该图像传输方法包括以下步骤:
101、获取待传输图像帧。
如图2所示,待传输图像帧可以包含图像数据、视频数据、文字数据等。例如,用户使用小窗口播放视频,对于整个显示界面,小窗口区域包含的即为图像数据,小窗口之外的显示区域包含的图像即为图像数据,小窗口之外的显示区域包含的文字即为文字数据。
需要说明的是,在一种优选的应用场景中,图像传输装置接收客户端设备发送的控制指令,根据控制指令执行指示的操作并生成显示界面,将显示界面发送至客户端设备,客户端设备只需要持续显示图像传输装置发送的显示界面即可,不需要对控制指令进行处理,减少了客户端设备对硬件资源的依赖。
102、在确定待传输图像帧中包含视频数据时,利用数字视频压缩格式的编码算法对视频数据进行编码。
视频压缩格式可以是H264视频压缩格式,当然,也可以使用其他视频压缩格式的编码算法,此处只是示例性说明。
此处对于如何确定待传输图像帧中包含视频数据进行详细说明,当然,此处只是示例性说明,并不代表本公开局限于此:
在一个实施例中,该方法还包括:获取图像帧流,图像帧流包含待传输图像帧之前连续的至少一个图像帧;在至少一个图像帧中,变化的宏块数量大于或等于第一阈值时,确定待传输图像帧包含视频数据,变化的宏块为不同的图像帧中,位置相同,内容不同的宏块。
根据待传输图像帧之前的图像帧流确定待传输图像帧中是否包含视频数据,可以实时对待传输图像帧的编码方式进行调整,使得编码方式适应待传输图像帧,提高传输效率。
一个图像帧可以分为多个宏块,根据图像帧流中每个宏块的变化情况,可以确定对应位置的宏块是否为视频数据。例如,如图3所示,图3是本公开实施例提供的一种图像帧流示意图,图3中示出了n+1个图像帧,n为大于1的整数,这n+1个图像帧按照时间上的播放顺序依次排列,其中第n+1个图像帧是待传输图像帧,前n个图像帧是待传输图像帧之前的图像帧。示例性的,每个图像帧包含32×32个宏块,对相同位置上的宏块进行比较,例如,在前n个图像帧中,将第i个图像帧中第1行第1列的宏块,上一帧(即第i-1个图像帧)中第1行第1列的宏块进行比较,i为[2,n]内的整数,如果前n个图像帧中第1行第1列的宏块是变化的宏块,则将待传输图像帧中第1行第1列的宏块作为视频数据。当然,此处只是示例性说明,前n个图像帧中每个位置的进行判断之后,就可以确定视频数据的区域,例如,如图3所示,前n个图像帧中前4行前4列的宏块均为变化的宏块,则待传输图像帧中包含的视频数据即为待传输图像帧的前4行前4列的宏块,对这16个宏块可以使用数字视频压缩格式的编码算法进行编码。
下面举例说明如何判断一个宏块为变化的宏块,当然,此处只是示例性说明,并不代表本公开局限于此:
在一个实施例中,该方法还包括:在确定待传输图像帧中目标宏块内有效像素的数量大于或等于第二阈值时,将目标宏块确定为变化的宏块,至少一个图像帧中与有效像素位置相同的像素颜色不同。
如果一个位置的宏块有效像素比较多,说明该位置的宏块一帧和一帧之间的变化比较大,可以确定是视频数据。
示例性的,如图4所示,图4是本公开实施例提供的一种宏块示意图,该宏块包括8×8个像素,当然,此处只是举例说明,实际应用中一个宏块包含的像素数量远不止这些。结合图3所示的图像帧流,对于图像帧流中相同位置的宏块,例如第3行第3列的宏块,将n个图像帧中第3行第3列的宏块相同位置的像素进行比较,如果像素颜色变化较大即为有效像素,有效像素越多,说明宏块变化较大,可以确定为变化的宏块。当然,在实际应用中,宏块内包含的像素较多,可以挑选一部分像素作为检测点进行判断,不需要对宏块内每一个像素都进行判断,如图4所示,对于宏块内8×8个像素,可以只判断行数为1,4,8,列数为1,4,8的宏块,这样,只需要判断9个检测点的像素即可。
对于如何确定有效像素,本实施例提供两种具体的实现方式如下:
在第一种实现方式中,该方法还包括:
对于至少一个图像帧中位置相同的像素组,若像素组内颜色不同的像素的数量大于或等于预设计数,则将待传输图像帧中与像素组位置相同的像素确定为有效像素。
如果不同图像帧中相同位置的像素,颜色不同的像素数量较大,说明该位置的像素变化较为频繁,很可能是视频数据,可以将其确定为有效像素。例如,图像帧流中包含的n个图像帧,将每个图像帧中第3行第3列的位置作为检测点,当然,检测点可以有多个,将相同检测点的像素颜色进行统计,例如,选取每个图像帧上某一检测点的像素,一共有n个像素,这n个像素有的像素可能颜色相同,有的像素颜色不同,n个像素包含的颜色数量较多就说明该检测点上像素变化较大,则可以将待传输图像帧种第3行第3列的像素确定为有效像素。例如,预设计数是5,n为10,10个图像帧中,某个检测点上的10个像素包含了6种颜色,大于预设计数5,则将待传输图像帧中该检测点的位置的像素确定为有效像素。
在第二种实现方式中,该方法还包括:
在图像帧流中目标图像帧的预设位置的像素与上一个图像帧的预设位置的像素颜色不同时,将预设位置的像素计数加1;在目标图像帧的预设位置的像素与上一个图像帧的预设位置的像素颜色相同时,将预设位置的像素计数减1;直到图像帧流中所有图像帧的预设位置的像素都判断完毕后,在预设位置的像素计数大于或等于预设计数时,将待传输图像帧中预设位置的像素确定为有效像素。
例如,图像帧流中包含n个图像帧,以第3行第3列的像素作为检测点进行示例性说明,从第2个图像帧开始,将第2个图像帧中第3行第3列的像素与第1个图像帧中第3行第3列的像素进行比较,如果颜色相同,则将该检测点的像素计数加1,例如像素计数初始值为1,如果2个图像帧与第1个图像帧中该检测点的颜色相同,则像素计数变为2,按照这种方式对每个图像帧第3行第3列的像素都与上一帧图像第3行第3列的像素进行比较,直到第n个图像帧,最终得到的像素计数如果大于预设计数,就可以将待传输图像帧中第3行第3列的像素确定为有效像素。
对图像帧流中每个图像帧的预设位置的像素都进行比较,能够较为准确地确定预设位置像素地变化情况,能够更加准确地判断是否为视频数据。
103、利用RFB协议中的编码算法对待传输图像帧中除视频数据之外的剩余部分进行编码。
除视频数据之外的剩余部分可能包括文字数据,图像数据等,这些剩余部分可以看作是静态图像,一帧与一帧之间变化频率较低,改变的内容也不会很多,对这些数据利用RFB协议中的编码算法进行编码,不会占用较多网络资源。
以图2所示的显示界面为例,图2中所示的小窗口包含的视频数据可以采用步骤102中所描述的视频压缩格式的编码算法进行编码,小窗口之外的剩余部分的数据可以采用RFB协议中的编码算法进行编码。
104、向客户端设备发送编码后的待传输图像帧。
本公开实施例提供的图像传输方法,对图像帧中的视频数据使用视频压缩格式的编码算法进行编码,对除视频数据之外的剩余部分利用RFB协议中的编码算法进行编码,保证了视频数据传输的流畅性,也保证了桌面鼠标、键盘控制的响应速度。
基于上述图1对应的实施例所描述的图像传输方法,本公开另一实施例提供一种图像传输方法,应用于图像传输装置和客户端设备,如图5所示,该图像传输方法包括以下步骤:
501、图像传输装置获取待传输图像帧。
502、图像传输装置在确定待传输图像帧中包含视频数据时,利用数字视频压缩格式的编码算法对视频数据进行编码。
503、图像传输装置利用RFB协议中的编码算法对待传输图像帧中除视频数据之外的剩余部分进行编码。
504、图像传输装置向客户端设备发送编码后的待传输图像帧。
505、客户端设备利用数字视频压缩格式的解码算法对待传输图像帧中的视频数据进行解码。
506、客户端设备利用RFB协议中的解码算法对待传输图像帧中除视频数据之外的剩余部分进行解码。
507、客户端设备检测并向图像传输装置发送处理器占用率。
508、图像传输装置根据客户端设备发送的处理器占用率调整向客户端设备发送图像帧的帧率。
示例性的,在一个实施例中,图像传输装置接收客户端设备发送的处理器占用率;在处理器占用率大于或等于第一占用率时,降低向客户端设备发送图像帧的帧率;
在另一个实施例中,图像传输装置在处理器占用率小于第二占用率时,提高向客户端设备发送图像帧的帧率,第二占用率小于或等于第一占用率。
需要说明的是,第一占用率和第二占用率都可以是百分比;图像传输装置根据客户端设备地反馈情况对帧率进行调整,使得图像帧地传输适应客户端设备地处理速度。
本公开实施例提供的图像传输方法,对图像帧中的视频数据使用视频压缩格式的编码算法进行编码,对除视频数据之外的剩余部分利用RFB协议中的编码算法进行编码,保证了视频数据传输的流畅性,也保证了桌面鼠标、键盘控制的响应速度。
基于上述图1和图5对应的实施例提供的图像传输方法,本公开实施例提供一种图像传输装置,如图6所示,该图像传输装置60包括:获取模块601、第一编码模块602、第二编码模块603、发送模块604;
其中,获取模块601,用于获取待传输图像帧;
第一编码模块602,用于在确定待传输图像帧中包含视频数据时,利用数字视频压缩格式的编码算法对视频数据进行编码;
第二编码模块603,用于利用远程帧缓冲RFB协议中的编码算法对待传输图像帧中除视频数据之外的剩余部分进行编码;
发送模块604,用于向客户端设备发送编码后的待传输图像帧。
在一个实施例中,如图7所示,图像传输装置60还包括视频数据判断模块605;
获取模块601,还用于获取图像帧流,图像帧流包含待传输图像帧之前连续的至少一个图像帧;
视频数据判断模块605,用于在至少一个图像帧中,变化的宏块数量大于或等于第一阈值时,确定待传输图像帧包含视频数据,变化的宏块为不同的图像帧中,位置相同,内容不同的宏块。
在一个实施例中,如图8所示,图像传输装置60还包括宏块判断模块606;
宏块判断模块606,用于在确定待传输图像帧中目标宏块内有效像素的数量大于或等于第二阈值时,将目标宏块确定为变化的宏块,至少一个图像帧中与有效像素位置相同的像素颜色不同。
在一个实施例中,如图9所示,图像传输装置60还包括第一像素判断模块607;
第一像素判断模块607,对于至少一个图像帧中位置相同的像素组,若像素组内颜色不同的像素的数量大于或等于预设计数,则将待传输图像帧中与像素组位置相同的像素确定为有效像素。
在一个实施例中,如图10所示,图像传输装置60还包括计数模块608和第二像素判断模块609;
计数模块608,用于在图像帧流中目标图像帧的预设位置的像素与上一个图像帧的预设位置的像素颜色不同时,将预设位置的像素计数加1;在目标图像帧的预设位置的像素与上一个图像帧的预设位置的像素颜色相同时,将预设位置的像素计数减1;
第二像素判断模块609,用于图像帧流中所有图像帧的预设位置的像素都判断完毕后,在预设位置的像素计数大于或等于预设计数时,将待传输图像帧中预设位置的像素确定为有效像素。
在一个实施例中,如图11所示,图像传输装置60还包括接收模块610和设置模块611;
接收模块610,用于接收客户端设备发送的处理器占用率;
设置模块611,用于在处理器占用率大于或等于第一占用率时,降低向客户端设备发送图像帧的帧率。
在一个实施例中,设置模块611,还用于在处理器占用率小于第二占用率时,提高向客户端设备发送图像帧的帧率,第二占用率小于或等于第一占用率。
本公开实施例提供的图像传输装置,对图像帧中的视频数据使用视频压缩格式的编码算法进行编码,对除视频数据之外的剩余部分利用RFB协议中的编码算法进行编码,保证了视频数据传输的流畅性,也保证了桌面鼠标、键盘控制的响应速度。
基于上述图1和图5对应的实施例中所描述的方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:Read Only Memory,ROM)、随机存取存储器(英文:RandomAccess Memory,RAM)、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图1和图5对应的实施例中所描述的方法,此处不再赘述。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。