发明内容
为解决现有技术中存在的问题,本申请提供一种视频处理方法、装置及存储介质。
第一方面,本申请实施例提供一种视频处理方法,包括:
获取第一视频;
根据所述第一视频的帧率和总帧数,以及第二视频的帧率,确定所述第一视频中每相邻两帧之间需要插帧的数量,其中,所述第一视频的帧率小于所述第二视频的帧率;
根据所述每相邻两帧之间需要插帧的数量,对所述第一视频进行插帧,获得第三视频;
若所述第三视频的分辨率小于所述第二视频的分辨率,则对所述第三视频中所述第一视频的视频帧进行非插帧超分,并对所述第三视频中除所述第一视频的视频帧外剩余的视频帧进行插帧超分,获得所述第二视频。
在一种可能的实现方式中,所述对所述第三视频中所述第一视频的视频帧进行非插帧超分,并对所述第三视频中除所述第一视频的视频帧外剩余的视频帧进行插帧超分,获得所述第二视频,包括:
基于所述第三视频中所述第一视频的视频帧Ai,以及所述第一视频中与所述视频帧Ai相邻的多个视频帧,进行非插帧超分,并基于所述第三视频中除所述第一视频的视频帧外剩余的视频帧Bi_j,以及所述第一视频中与所述视频帧Bi_j相邻的多个视频帧,进行插帧超分,获得所述第二视频,其中,所述视频帧Ai为所述第一视频中任意一个视频帧,所述视频帧Bi_j为所述第三视频中除所述第一视频的视频帧外剩余的视频帧中任意一个视频帧,i=1,2,……,n,n根据所述第一视频中的视频帧的数量确定,j=1,2,……,ki,ki根据所述第三视频中除所述第一视频的视频帧外剩余的视频帧的数量确定。
在一种可能的实现方式中,所述基于所述第三视频中所述第一视频的视频帧Ai,以及所述第一视频中与所述视频帧Ai相邻的多个视频帧,进行非插帧超分,包括:
将所述视频帧Ai,以及所述第一视频中与所述视频帧Ai最相邻和次相邻的多个视频帧,输入预设非插帧超分模型,进行非插帧超分,所述预设非插帧超分模型用于基于所述第二视频的分辨率对所述第三视频中所述第一视频的视频帧进行超分。
在一种可能的实现方式中,所述基于所述第三视频中除所述第一视频的视频帧外剩余的视频帧Bi_j,以及所述第一视频中与所述视频帧Bi_j相邻的多个视频帧,进行插帧超分,包括:
将所述视频帧Bi_j,以及所述第一视频中与所述视频帧Bi_j最相邻和次相邻的多个视频帧,输入预设插帧超分模型,进行插帧超分,所述预设插帧超分模型用于基于所述第二视频的分辨率对所述第三视频中除所述第一视频的视频帧外剩余视频帧进行超分。
在一种可能的实现方式中,所述根据所述第一视频的帧率和总帧数,以及第二视频的帧率,确定所述第一视频中每相邻两帧之间需要插帧的数量,包括:
根据所述第一视频的帧率和总帧数,以及所述第二视频的帧率,获得所述第一视频对应的拷贝帧序列;
根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及所述每一重复拷贝的视频帧对应的所述第一视频的视频帧的时间戳,确定待插帧区间;
根据所述待插帧区间,确定所述第一视频中每相邻两帧之间需要插帧的数量。
在一种可能的实现方式中,所述根据所述第一视频的帧率和总帧数,以及所述第二视频的帧率,获得所述第一视频对应的拷贝帧序列,包括:
根据所述第一视频的帧率和总帧数,以及所述第二视频的帧率,确定所述第二视频的总帧数;
根据所述第一视频的帧率和总帧数,以及所述第二视频的帧率和总帧数,确定所述第一视频中各个视频帧的时间戳和所述第二视频中各个视频帧的时间戳;
根据所述第一视频中各个视频帧的时间戳、所述第二视频中各个视频帧的时间戳,以及预设时间差范围,对所述第一视频进行拷贝,获得所述第一视频对应的拷贝帧序列。
在一种可能的实现方式中,所述根据所述第一视频中各个视频帧的时间戳、所述第二视频中各个视频帧的时间戳,以及预设时间差范围,对所述第一视频进行拷贝,获得所述第一视频对应的拷贝帧序列,包括:
根据所述第一视频中各个视频帧的时间戳和所述第二视频中各个视频帧的时间戳,确定所述第二视频中各个视频帧与所述第一视频中各个视频帧之间的时间差;
根据所述时间差和所述预设时间差范围,确定所述第二视频中各个视频帧对应的视频帧,并基于所述第二视频中各个视频帧对应的视频帧,对所述第一视频进行拷贝,获得所述第一视频对应的拷贝帧序列。
在一种可能的实现方式中,所述根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及所述每一重复拷贝的视频帧对应的所述第一视频的视频帧的时间戳,确定待插帧区间,包括:
根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及所述每一重复拷贝的视频帧对应的所述第一视频的视频帧的时间戳,确定所述拷贝帧序列的每一重复拷贝的视频帧中的一个视频帧作为应从所述第一视频中拷贝的视频帧;
基于所述拷贝帧序列的每一重复拷贝的视频帧中,除所述一个视频帧外剩余的视频帧,确定所述待插帧区间。
在一种可能的实现方式中,所述根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及所述每一重复拷贝的视频帧对应的所述第一视频的视频帧的时间戳,确定所述拷贝帧序列的每一重复拷贝的视频帧中的一个视频帧作为应从所述第一视频中拷贝的视频帧,包括:
根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及所述每一重复拷贝的视频帧对应的所述第一视频的视频帧的时间戳,判断所述拷贝帧序列的每一重复拷贝的视频帧中是否有时间戳大于对应的所述第一视频的视频帧的时间戳的视频帧;
若所述拷贝帧序列的每一重复拷贝的视频帧中有时间戳大于对应的所述第一视频的视频帧的时间戳的视频帧,则从所述时间戳大于对应的所述第一视频的视频帧的时间戳的视频帧中,确定一个视频帧作为应从所述第一视频中拷贝的视频帧。
在一种可能的实现方式中,在所述判断所述拷贝帧序列的每一重复拷贝的视频帧中是否有时间戳大于对应的所述第一视频的视频帧的时间戳的视频帧之后,还包括:
若所述拷贝帧序列的每一重复拷贝的视频帧中没有时间戳大于对应的所述第一视频的视频帧的时间戳的视频帧,则从所述拷贝帧序列的每一重复拷贝的视频帧中,获得与对应的所述第一视频的视频帧的时间差最小的视频帧作为应从所述第一视频中拷贝的视频帧。
在一种可能的实现方式中,所述根据所述每相邻两帧之间需要插帧的数量,对所述第一视频进行插帧,获得第三视频,包括:
将所述第一视频和所述每相邻两帧之间需要插帧的数量,输入预设插帧模型,所述预设插帧模型用于在所述第一视频的相邻两帧视频帧之间插所述数量的视频帧;
基于所述预设插帧模型的输出,获得所述第三视频。
第二方面,本申请实施例提供一种视频处理装置,包括:
获取模块,用于获取第一视频;
确定模块,用于根据所述第一视频的帧率和总帧数,以及第二视频的帧率,确定所述第一视频中每相邻两帧之间需要插帧的数量,其中,所述第一视频的帧率小于所述第二视频的帧率;
插帧模块,用于根据所述每相邻两帧之间需要插帧的数量,对所述第一视频进行插帧,获得第三视频;
超分模块,用于若所述第三视频的分辨率小于所述第二视频的分辨率,则对所述第三视频中所述第一视频的视频帧进行非插帧超分,并对所述第三视频中除所述第一视频的视频帧外剩余的视频帧进行插帧超分,获得所述第二视频。
在一种可能的实现方式中,所述超分模块,具体用于:
基于所述第三视频中所述第一视频的视频帧Ai,以及所述第一视频中与所述视频帧Ai相邻的多个视频帧,进行非插帧超分,并基于所述第三视频中除所述第一视频的视频帧外剩余的视频帧Bi_j,以及所述第一视频中与所述视频帧Bi_j相邻的多个视频帧,进行插帧超分,获得所述第二视频,其中,所述视频帧Ai为所述第一视频中任意一个视频帧,所述视频帧Bi_j为所述第三视频中除所述第一视频的视频帧外剩余的视频帧中任意一个视频帧,i=1,2,……,n,n根据所述第一视频中的视频帧的数量确定,j=1,2,……,ki,ki根据所述第三视频中除所述第一视频的视频帧外剩余的视频帧的数量确定。
在一种可能的实现方式中,所述超分模块,具体用于:
将所述视频帧Ai,以及所述第一视频中与所述视频帧Ai最相邻和次相邻的多个视频帧,输入预设非插帧超分模型,进行非插帧超分,所述预设非插帧超分模型用于基于所述第二视频的分辨率对所述第三视频中所述第一视频的视频帧进行超分。
在一种可能的实现方式中,所述超分模块,具体用于:
将所述视频帧Bi_j,以及所述第一视频中与所述视频帧Bi_j最相邻和次相邻的多个视频帧,输入预设插帧超分模型,进行插帧超分,所述预设插帧超分模型用于基于所述第二视频的分辨率对所述第三视频中除所述第一视频的视频帧外剩余视频帧进行超分。
在一种可能的实现方式中,所述确定模块,具体用于:
根据所述第一视频的帧率和总帧数,以及所述第二视频的帧率,获得所述第一视频对应的拷贝帧序列;
根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及所述每一重复拷贝的视频帧对应的所述第一视频的视频帧的时间戳,确定待插帧区间;
根据所述待插帧区间,确定所述第一视频中每相邻两帧之间需要插帧的数量。
在一种可能的实现方式中,所述确定模块,具体用于:
根据所述第一视频的帧率和总帧数,以及所述第二视频的帧率,确定所述第二视频的总帧数;
根据所述第一视频的帧率和总帧数,以及所述第二视频的帧率和总帧数,确定所述第一视频中各个视频帧的时间戳和所述第二视频中各个视频帧的时间戳;
根据所述第一视频中各个视频帧的时间戳、所述第二视频中各个视频帧的时间戳,以及预设时间差范围,对所述第一视频进行拷贝,获得所述第一视频对应的拷贝帧序列。
在一种可能的实现方式中,所述确定模块,具体用于:
根据所述第一视频中各个视频帧的时间戳和所述第二视频中各个视频帧的时间戳,确定所述第二视频中各个视频帧与所述第一视频中各个视频帧之间的时间差;
根据所述时间差和所述预设时间差范围,确定所述第二视频中各个视频帧对应的视频帧,并基于所述第二视频中各个视频帧对应的视频帧,对所述第一视频进行拷贝,获得所述第一视频对应的拷贝帧序列。
在一种可能的实现方式中,所述确定模块,具体用于:
根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及所述每一重复拷贝的视频帧对应的所述第一视频的视频帧的时间戳,确定所述拷贝帧序列的每一重复拷贝的视频帧中的一个视频帧作为应从所述第一视频中拷贝的视频帧;
基于所述拷贝帧序列的每一重复拷贝的视频帧中,除所述一个视频帧外剩余的视频帧,确定所述待插帧区间。
在一种可能的实现方式中,所述确定模块,具体用于:
根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及所述每一重复拷贝的视频帧对应的所述第一视频的视频帧的时间戳,判断所述拷贝帧序列的每一重复拷贝的视频帧中是否有时间戳大于对应的所述第一视频的视频帧的时间戳的视频帧;
若所述拷贝帧序列的每一重复拷贝的视频帧中有时间戳大于对应的所述第一视频的视频帧的时间戳的视频帧,则从所述时间戳大于对应的所述第一视频的视频帧的时间戳的视频帧中,确定一个视频帧作为应从所述第一视频中拷贝的视频帧。
在一种可能的实现方式中,所述确定模块,具体用于:
若所述拷贝帧序列的每一重复拷贝的视频帧中没有时间戳大于对应的所述第一视频的视频帧的时间戳的视频帧,则从所述拷贝帧序列的每一重复拷贝的视频帧中,获得与对应的所述第一视频的视频帧的时间差最小的视频帧作为应从所述第一视频中拷贝的视频帧。
在一种可能的实现方式中,所述插帧模块,具体用于:
将所述第一视频和所述每相邻两帧之间需要插帧的数量,输入预设插帧模型,所述预设插帧模型用于在所述第一视频的相邻两帧视频帧之间插所述数量的视频帧;
基于所述预设插帧模型的输出,获得所述第三视频。
第三方面,本申请实施例提供一种服务器,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第一方面所述的方法的指令。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行第一方面所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行第一方面所述的方法。
本申请实施例提供的视频处理方法、装置及存储介质,该方法通过获取第一视频,进而,根据第一视频的帧率和总帧数,以及第二视频的帧率,确定第一视频中每相邻两帧之间需要插帧的数量,其中,第一视频的帧率小于第二视频的帧率,从而,根据该数量,对第一视频进行插帧,获得第三视频,然后在第三视频的分辨率小于第二视频的分辨率时,分别对第三视频中第一视频的视频帧和插出来的视频帧,进行非插帧超分和插帧超分,获得上述第二视频。其中,本申请实施例将插帧、插帧超分和非插帧超分三部分分离,每个部分可以自由设计提升效果,更加灵活,并且上述插帧可以实现任意目标帧率的提升,上述非插帧超分和插帧超分可以实现任意目标分辨率的提升,进一步提高了时空超分的灵活性,获得了较佳的时空超分结果,提升了视频的清晰度和流畅度。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”及“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
时空超分是指给定低分辨低帧率的源视频,通过超分和插帧得到高分辨率高帧率的目标视频,提高视频的清晰度和流畅度,提升用户体验。
现有的时空超分主要有两类:一类是将超分插帧整合在一个模型里,输入低分辨率和低帧率的序列帧,输出高分辨率高帧率的序列帧。另一类是先对低分辨率低帧率的序列帧进行插帧,得到低分辨率高帧率的序列帧,然后再对低分辨率高帧率的序列帧进行超分,得到高分辨率高帧率的序列帧。
然而,上述第一类时空超分方法只能实现固定倍数的插帧和固定倍数的超分,插帧和超分灵活性较低。第二类时空超分方法,在对低分辨率高帧率的序列帧进行超分时,源视频帧和插出来的帧混在一起进行超分,导致超分出来的帧的质量较差,从而,获得较差的时空超分结果。
为了解决上述问题,本申请实施例提出一种视频处理方法,通过计算插帧数,对源视频进行插帧,获得一视频序列,然后对该视频序列中的源视频帧和插出来的视频帧,分别进行非插帧超分和插帧超分,获得目标视频。其中,本申请实施例将插帧、插帧超分和非插帧超分三部分分离,每个部分可以自由设计提升效果,更加灵活,并且上述插帧可以实现任意目标帧率的提升,上述非插帧超分和插帧超分可以实现任意目标分辨率的提升,进一步提高了时空超分的灵活性,获得了较佳的时空超分结果,提升了视频的清晰度和流畅度。
可选地,本申请实施例提供的视频处理方法可以应用于如图1所示的视频处理系统中。在图1中,该视频处理系统架构1000可以包括终端设备1001、1002、1003中的一种或多种,网络1004和服务器1005。网络1004用以在终端设备1001、1002、1003和服务器1005之间提供通信链路的介质。网络1004可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器1005可以是多个服务器组成的服务器集群等。
用户可以使用终端设备1001、1002、1003通过网络1004与服务器1005交互,以接收或发送消息等。终端设备1001、1002、1003可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机和台式计算机等等。另外,服务器1005可以是提供各种服务的服务器。
在基于服务器1005实现本申请视频处理方案的实施例中,首先,服务器1005可以获取由终端设备1001、1002、1003发送的视频,作为第一视频(也可以认为是上述源视频),该第一视频的帧率小于第二视频(也可以认为是上述目标视频)的帧率,并确定第一视频中每相邻两帧之间需要插帧的数量。接下来,服务器1005可以根据该数量,对第一视频进行插帧,获得一视频序列,然后对该视频序列中第一视频的视频帧和插出来的视频帧,分别进行非插帧超分和插帧超分,获得第二视频。随后,服务器1005还可以将第二视频发送给终端设备1001、1002、1003,进行播放或保存。
其中,服务器1005将插帧、插帧超分和非插帧超分三部分分离,每个部分可以自由设计提升效果,更加灵活,并且上述插帧可以实现任意目标帧率的提升,上述非插帧超分和插帧超分可以实现任意目标分辨率的提升,进一步提高了时空超分的灵活性,获得了较佳的时空超分结果。
在基于终端设备1001、1002、1003实现本申请视频处理方案的实施例中,终端设备1001、1002、1003可以确定第一视频中每相邻两帧之间需要插帧的数量,从而,根据该数量,对第一视频进行插帧,然后对视频帧和插出来的帧,分别进行非插帧超分和插帧超分,获得第二视频。
此外,本申请视频处理方案的实现过程还可以由终端设备1001、1002、1003和服务器1005共同实现。例如,终端设备1001、1002、1003可以获取第一视频,并确定第一视频中每相邻两帧之间需要插帧的数量,将该数量发送给服务器1005。服务器1005可以上述数量,对第一视频进行插帧,获得一视频序列,然后对该视频序列中第一视频的视频帧和插出来的视频帧,分别进行非插帧超分和插帧超分,获得第二视频。
虽然下面的描述以服务器1005执行本申请视频处理过程为例进行说明,然而,如上所说明的,本申请对实现视频处理各步骤的设备类型不做限制。
本申请的视频处理方案应用广泛,例如,可以应用于电视、电影的后期制作过程,也可以应用于视频编辑、视频制作的过程。
下面以几个实施例为例对本申请的技术方案进行描述,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本申请实施例提供的一种视频处理方法的流程示意图,本实施例的执行主体可以为图1中的服务器,具体执行主体可以根据实际应用场景确定,本申请实施例对此不做特别限制。如图2所示,本申请实施例提供的视频处理方法可以包括如下步骤:
S201:获取第一视频。
这里,上述服务器可以接收用户的终端设备上传的视频后,从而将给视频作为第一视频,例如该第一视频可以为给定的低帧率低分辨的序列帧:A1,A2,A3,A4,A5,...。
S202:根据上述第一视频的帧率和总帧数,以及第二视频的帧率,确定上述第一视频中每相邻两帧之间需要插帧的数量,其中,第一视频的帧率小于第二视频的帧率。
示例性的,上述服务器可以根据上述第一视频的帧率src_fps和总帧数num_scr_frame,以及第二视频的帧率dst_fps,计算上述第一视频中每相邻两帧之间需要插帧的数量,例如将帧Ai和A{i+1}之间插的帧记为Bi_j(j=1,2,3,4,...,ki,ki是Ai和A{i+1}之间要插的帧的总数)。
S203:根据上述每相邻两帧之间需要插帧的数量,对上述第一视频进行插帧,获得第三视频。
其中,上述服务器可以将上述第一视频和上述每相邻两帧之间需要插帧的数量,输入预设插帧模型,该预设插帧模型用于在上述第一视频的相邻两帧视频帧之间插上述数量的视频帧,进而,基于上述预设插帧模型的输出,获得上述第三视频。
这里,上述插帧模型除用于在上述相邻两帧视频帧之间插上述数量的视频帧外,还可以用于在上述相邻两帧视频帧之间插其它数量的视频帧,即可以用于在相邻两帧视频帧之间插任意数量的帧,满足多种应用需要。其中,上述插帧模型可以是基于光流的插帧模型,如深度感知视频帧插值(Depth-Aware Video Frame Interpolation,DAIN)模型等。
其中,上述插帧模型可以基于上述数量进行均匀插帧。
示例性的,如图3所示,上述服务器根据上述每相邻两帧之间需要插帧的数量进行插帧:通过使用上述预设插帧模型(如DAIN),在每相邻两帧之间之间插相应的帧数,得到插帧后的序列A1,[B1_1,...,B1_k1],A2,[B2_1,...,B2_k2],...,A4,[B4_1,...,B4_k4],A5,...(这里的[]表示的是有可能没有这些帧,这发生在插帧数为0时)
S204:若第三视频的分辨率小于第二视频的分辨率,则对上述第三视频中上述第一视频的视频帧进行非插帧超分,并对上述第三视频中除上述第一视频的视频帧外剩余的视频帧进行插帧超分,获得上述第二视频。
其中,上述服务器在获得上述第三视频后,如果第三视频的分辨率小于第二视频的分辨率,可以基于上述第三视频中第一视频的视频帧Ai,以及第一视频中与视频帧Ai相邻的多个视频帧,进行非插帧超分,并基于上述第三视频中除第一视频的视频帧外剩余的视频帧Bi_j,以及第一视频中与视频帧Bi_j相邻的多个视频帧,进行插帧超分,获得上述第二视频。其中,视频帧Ai为上述第一视频中任意一个视频帧,视频帧Bi_j为上述第三视频中除第一视频的视频帧外剩余的视频帧中任意一个插帧获得的视频帧,i=1,2,……,n,n根据上述第一视频中的视频帧的数量确定,j=1,2,……,ki,ki根据上述第三视频中除第一视频的视频帧外剩余的视频帧的数量确定。
例如,上述服务器可以将视频帧Ai,以及第一视频中与视频帧Ai最相邻和次相邻的多个视频帧,输入预设非插帧超分模型,进行非插帧超分,该预设非插帧超分模型用于基于上述第二视频的分辨率对上述第三视频中第一视频的视频帧进行超分。同样,上述服务器可以将视频帧Bi_j,以及第一视频中与视频帧Bi_j最相邻和次相邻的多个视频帧,输入预设插帧超分模型,进行插帧超分,该预设插帧超分模型用于基于上述第二视频的分辨率对上述第三视频中除第一视频的视频帧外剩余视频帧进行超分。其中,上述非插帧超分模型也可以用插帧模型的输出制作数据集来进行微调,使得非插帧超分模型能够更适应给定的插帧模型的输出。
示例性的,如图3所示,当上述服务器对Ai这种视频帧,进行非插帧超分,可以输入预设非插帧超分模型A{i-2},A{i-1},Ai,A{i+1},A{i+2},参考帧Ai的相邻帧(即A{i-2},A{i-1},A{i+1},A{i+2})都是第一视频的视频帧,输出为对Ai的超分结果S_Ai。当上述服务器对Bi_j这种插出来的帧,进行非插帧超分,输入预设插帧超分模型A{i-1},Ai,Bi_j,A{i+1},A{i+2},参考帧Bi_j的相邻帧(即A{i-1},Ai,A{i+1},A{i+2})也是第一视频的视频帧,输出为对Bi_j的超分结果S_Bi_j。这里,插帧超分和非插帧超分的模型可以基于上述第二视频的分辨率对视频帧进行超分,也可以基于其它视频的分辨率对视频帧进行超分,即可以实现基于任意分辨率对视频帧进行超分,可以是局部隐式图像函数(Local ImplicitImage Function,LIIF)模型。如图3所示,上述服务器在进行视频超分后输出得到第二视频:即最后整合插帧超分结果和非插帧超分结果得到高帧率高分辨序列帧S_A1,[S_B1_1,...,S_B1_k1],S_A2,[S_B2_1,...,S_B2_k2],...,S_A4,[S_B4_1,...,S_B4_k4],S_A5,...
其中,参考帧就是要超分的帧,相邻帧就是与参考帧相邻的帧。
这里,上述服务器分别进行非插帧超分和插帧超分,两个超分的输入中除了参考帧外的相邻帧都来自第一视频的视频帧(也可以认为是上述源视频的视频帧),从而提升输出帧质量。
本申请实施例,通过服务器获取第一视频,进而,根据第一视频的帧率和总帧数,以及第二视频的帧率,确定第一视频中每相邻两帧之间需要插帧的数量,其中,第一视频的帧率小于第二视频的帧率,从而,根据该数量,对第一视频进行插帧,获得第三视频,然后在第三视频的分辨率小于第二视频的分辨率时,对第三视频中第一视频的视频帧和插出来的视频帧,分别进行非插帧超分和插帧超分,获得上述第二视频。其中,本申请实施例将插帧、插帧超分和非插帧超分三部分分离,每个部分可以自由设计提升效果,更加灵活,并且上述插帧可以实现任意目标帧率的提升,上述非插帧超分和插帧超分可以实现任意目标分辨率的提升,进一步提高了时空超分的灵活性,获得了较佳的时空超分结果,提升了视频的清晰度和流畅度。
另外,上述服务器在根据上述第一视频的帧率和总帧数,以及第二视频的帧率,确定上述第一视频中每相邻两帧之间需要插帧的数量时,首先考虑根据上述第一视频的帧率和总帧数,以及上述第二视频的帧率,获得上述第一视频对应的拷贝帧序列,进而,根据该拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及每一重复拷贝的视频帧对应的上述第一视频的视频帧的时间戳,确定待插帧区间,根据该待插帧区间,确定上述第一视频中每相邻两帧之间需要插帧的数量,对所述第一视频进行插帧,获得第三视频,从而,在第三视频的分辨率小于第二视频的分辨率时,对第三视频中第一视频的视频帧和插出来的视频帧,分别进行非插帧超分和插帧超分,获得上述第二视频,解决现有插帧和超分灵活性较低,获得的时空超分结果较差的问题。图4为本申请实施例提出的另一种视频处理方法的流程示意图。如图4所示,该方法包括:
S401:获取第一视频。
其中,步骤S401与上述步骤S201的实现方式相同,此处不再赘述。
S402:根据上述第一视频的帧率和总帧数,以及第二视频的帧率,获得上述第一视频对应的拷贝帧序列,其中,第一视频的帧率小于第二视频的帧率。
示例性的,上述服务器可以根据上述第一视频的帧率和总帧数,以及第二视频的帧率,确定第二视频的总帧数,进而,根据上述第一视频的帧率和总帧数,以及上述第二视频的帧率和总帧数,确定上述第一视频中各个视频帧的时间戳和第二视频中各个视频帧的时间戳,并根据上述第一视频中各个视频帧的时间戳、上述第二视频中各个视频帧的时间戳,以及预设时间差范围,对上述第一视频进行拷贝,获得上述第一视频对应的拷贝帧序列。这里,上述服务器可以基于纯拷贝方法,对上述第一视频进行拷贝,获得上述第一视频对应的拷贝帧序列。
其中,上述服务器可以先根据上述第一视频中各个视频帧的时间戳和上述第二视频中各个视频帧的时间戳,确定第二视频中各个视频帧与上述第一视频中各个视频帧之间的时间差,然后,根据该时间差和上述预设时间差范围,确定第二视频中各个视频帧对应的视频帧,并基于第二视频中各个视频帧对应的视频帧,对上述第一视频进行拷贝,获得上述第一视频对应的拷贝帧序列。
例如,上述服务器给定第一视频的帧率src_fps、第二视频的帧率dst_fps和第一视频的总帧数num_src_frame,设置output_video_copy_idx为空列表,进而,计算第二视频的总帧数num_dst_frame,基于上述第一视频的帧率src_fps、第二视频的帧率dst_fps、第一视频的总帧数num_src_frame和第二视频的总帧数num_dst_frame,确定第一视频中各个视频帧的时间戳ipts_list和第二视频中各个视频帧的时间戳opts_list,其中,ipts_list值可以为[0,dst_fps/src_fps*1,dst_fps/src_fps*2,dst_fps/src_fps*3,...,dst_fps/src_fps*(num_src_frames-1)],而opts_list值可以为[0,1,2,3,...,num_dst_frame-1]。
上述服务器可以预设时间差范围,例如设置阈值thr1为-0.6,阈值thr2为1.6,第一视频当前帧序号i_idx为0。上述服务器遍历第二视频当前帧序号o_idx,计算第一视频当前帧与第二视频当前帧的时间差距,即delta0设置成ipts_list[i_idx]-opts_list[o_idx]。当时间差距delta0小于阈值thr1而且第一视频当前帧序号i_idx小于num_src_frames-1时,重复下面步骤直到条件不满足:
i_idx需要加1,即不拷贝第一视频当前帧或者说需要丢帧;
重新计算时间差距,即delta0为ipts_list[i_idx]-opts_list[o_idx];
记录时间差标志value_mark,value_mark设置成0表示第二视频当前帧时间小于需要拷贝的第一视频当前帧时间,即opts_list[o_idx]小于ipts_list[i_idx],否则value_mark设置成1;
记录第二视频当前帧需要拷贝的视频帧序号i_idx和时间差标志value_mark,即将(i_idx,value_mark)加入到output_video_copy_idx中;
当i_idx还不是第一视频最后一帧时,即其值小于num_src_frames-1;
计算第一视频下一帧的时间与输出视频当前帧的时间差距delta,即delta设置成ipts_list[i_idx+1]-opts_list[o_idx];
当时间差距delta小于等于阈值thr2时,说明第二视频当前帧时间与第一视频下一帧时间差距不大,第一视频当前帧序列i_idx可以加1,否则,第二视频当前帧时间与第一视频下一帧时间差地太远,i_idx不变,即进行补帧操作,使得第二视频下一帧仍然拷贝第一视频当前帧;
输出output_video_copy_idx,output_video_copy_idx[i]是一个二元组(v,mark),表示输出视频的第i帧应该拷贝输入视频的第v帧,mark为0时表示opts_list[i]小于ipts_list[v]。
示例性的,如图5所示,上述第一视频时间点分别为A、B、C、D和E,帧率20fps,总帧数5帧,第二视频的帧率25fps。上述服务器根据上述第一视频的帧率和总帧数,以及第二视频的帧率,获得的上述第一视频对应的拷贝帧序列为A、B、C、C、D和E。其中,第二视频时间点分别为E、F、G、H、I和J。
S403:根据上述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及每一重复拷贝的视频帧对应的上述第一视频的视频帧的时间戳,确定待插帧区间。
这里,上述服务器可以根据上述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及每一重复拷贝的视频帧对应的上述第一视频的视频帧的时间戳,确定上述拷贝帧序列的每一重复拷贝的视频帧中的一个视频帧作为应从上述第一视频中拷贝的视频帧,进而,基于上述拷贝帧序列的每一重复拷贝的视频帧中,除上述一个视频帧外剩余的视频帧,确定上述待插帧区间。
例如,如图5所示,上述拷贝帧序列重复拷贝的视频帧为C和C,对应第一视频的视频帧C帧。上述服务器可以确定上述拷贝帧序列的重复拷贝的视频帧C和C中的一个视频帧,例如第二个C帧,作为应从上述第一视频中拷贝的视频帧,这样,基于上述拷贝帧序列的重复拷贝的视频帧C和C中,除第二个C帧外剩余的视频帧,即第一个C帧,确定应插帧的信息,进而,基于上述应插帧的信息,确定上述待插帧区间。
在本申请实施例中,为了提升第二视频的流畅度,需要对上述第一视频进行插帧,但考虑到第二视频中帧的质量,本申请实施例尽可能利用了上述第一视频中视频帧,即确定上述拷贝帧序列的每一重复拷贝的视频帧中的一个视频帧作为应从第一视频中拷贝的视频帧,剩余的视频帧作为应插帧的视频帧,既提升了第二视频的流畅度,又保证了第二视频中帧的质量。
其中,上述服务器在确定上述拷贝帧序列的每一重复拷贝的视频帧中的一个视频帧作为应从上述第一视频中拷贝的视频帧时,可以根据上述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及每一重复拷贝的视频帧对应的上述第一视频的视频帧的时间戳,判断上述拷贝帧序列的每一重复拷贝的视频帧中是否有时间戳大于对应的视频帧的时间戳的视频帧。如果上述拷贝帧序列的每一重复拷贝的视频帧中有时间戳大于对应的视频帧的时间戳的视频帧,则上述服务器可以从上述时间戳大于对应的视频帧的时间戳的视频帧中,确定一个视频帧作为应从上述第一视频中拷贝的视频帧,例如从上述时间戳大于对应的视频帧的时间戳的视频帧中,获得与对应的视频帧的时间差最小的视频帧,将该视频帧作为从上述第一视频中拷贝的视频帧。
如果上述拷贝帧序列的每一重复拷贝的视频帧中没有时间戳大于对应的视频帧的时间戳的视频帧,则上述服务器可以从上述拷贝帧序列的每一重复拷贝的视频帧中,获得与对应的视频帧的时间差最小的视频帧作为应从上述第一视频中拷贝的视频帧。
示例性的,对应上述图5,获得的第二视频如图6所示,上述服务器判断上述拷贝帧序列的重复拷贝的视频帧C和C中有时间戳大于对应的视频帧C的时间戳的视频帧,即第二个C帧,则将第二个C帧作为应从上述第一视频中拷贝的视频帧,除第二个C帧外剩余的视频帧,即第一个C帧,确定应插帧的信息,进而,基于上述应插帧的信息,确定上述待插帧区间,再根据上述待插帧区间,确定第一视频中每相邻两帧之间需要插帧的数量,对上述第一视频进行插帧,获得第三视频A、B、[B,C]、C、D和E。
例如,上述服务器可以根据output_video_copy_idx中的信息对重复拷贝的帧(进行了补帧操作会产生重复拷贝第一视频的相同帧)分配插帧区间,得到第二视频的每一帧是应该拷贝视频帧还是应该插帧的信息final_info_list,具体步骤如下:
拷贝信息output_video_copy_idx和第二视频总帧数num_dst_frame;
设置final_info_list为空列表;
初始化索引t1为0,索引t2为-1;
当t1小于第二视频总帧数num_dst_frame时,重复以下步骤直至条件不满足:
当t1已经到达第二视频最后一帧或者第二视频在第t1+1帧没有发生补帧操作,即t1等于num_dst_frame-1或者
output_video_copy_idx[t1+1][0]不等于output_video_copy_idx[t1][0]时,将t1加1,保存信息(output_video_copy_idx[t1][0],output_video_copy_idx[t1][0])到final_info_list中;
否则
用t2获取重复帧/补帧所在序列的最后一帧,那么区间[t1,t2]就是补帧区间,即第二视频的第t1到第t2帧都拷贝的是第一视频的第output_video_copy_idx[t1][0]帧;
根据output_video_copy_idx中区间[t1,t2]的时间差标志来重新分配插帧区间,使得第二视频的第t1到第t2帧之间有且仅有一帧是拷贝第一视频的第output_video_copy_idx[t1][0]帧,其余都需要插帧,分配插帧区间的步骤如下:
给定区间[t1,t2]和拷贝信息output_video_copy_idx;
用k遍历[t1,t2];
从output_video_copy_idx[k]中获取第二视频第k帧的拷贝帧v和时间差标志mark;
当时间差标志mark为0时,即第二视频第k帧的时间戳小于拷贝的第一视频第output_video_copy_idx[t1][0]帧时间戳,则需要在第一视频第
output_video_copy_idx[t1][0]-1帧和第
output_video_copy_idx[t1][0]帧之间插帧,保存
(output_video_copy_idx[t1][0]-1,output_video_copy_idx[t1][0])到final_info_list中;
否则,即第二视频第k帧时间大于等于拷贝的第一视频第v帧时间;
如果还没保存过第一视频第
output_video_copy_idx[t1][0]帧,则保存
(output_video_copy_idx[t1][0],
output_video_copy_idx[t1][0])到final_info_list中;
否则,则需要在第一视频第
output_video_copy_idx[t1][0]帧和第
output_video_copy_idx[t1][0]+1帧之间插帧,保存
(output_video_copy_idx[t1][0],
output_video_copy_idx[t1][0]+1)到final_info_list中。
如果一直都没有保存过第一视频第
output_video_copy_idx[t1][0]帧,则上述服务器可以将final_info_list中t2对应的信息改为(output_video_copy_idx[t1][0],output_video_copy_idx[t1][0]),这是为了尽量去使用第一视频的帧。
设置t1为t2+1;
输出final_info_list,final_info_list[i]是一个区间(a,b),当a与b相等时,表示第二视频第i帧是拷贝第一视频第a帧得到,当a与b不相等时,此时b等于a+1,表示第二视频第i帧是在第一视频的第a帧和第a+1帧之间插帧得到;
S404:根据上述待插帧区间,确定上述第一视频中每相邻两帧之间需要插帧的数量。
这里,上述服务器可以整理重分配信息得到插帧数信息:整理final_info_list,对final_info_list中的区间进行计数并按顺序保存,得到计算的插帧数信息final_results,具体步骤如下:
初始化final_results为空列表;
从头开始遍历final_info_list,遍历的索引为k;
当final_results为空时;
直接保存(final_info_list[k][0],final_info_list[0][1],1)到
final_results中;
否则
当(final_info_list[k][0],final_info_list[k][1])和(final_results[-1][0],
final_results[-1][1])表示的是同一个区间时,final_results[-1][2]
加一,这里的final_results[-1]表示的是final_results的最后一个元素;
否则
保存(final_info_list[k][0],final_info_list[0][1],1)到
final_results中;
输出final_results,按顺序处理final_results的每一个元素,就能得到第二视频的序列帧,final_results[i]是一个三元组(a,b,c),当a等于b时,此时c为1,直接拷贝第一视频的第a帧即可,当a不等于b时,此时b等于a+1,c就是需要的插帧数,表示在第一视频的第a帧和第a+1帧之间均匀插c帧。
S405:根据上述每相邻两帧之间需要插帧的数量,对上述第一视频进行插帧,获得第三视频。
S406:若第三视频的分辨率小于第二视频的分辨率,则对上述第三视频中的视频帧进行非插帧超分,并对上述第三视频中插帧获得的视频帧进行插帧超分,获得第二视频。
其中,步骤S405-S406与上述步骤S203-S204的实现方式相同,此处不再赘述。
本申请实施例中上述服务器在根据上述第一视频的帧率和总帧数,以及第二视频的帧率,确定上述第一视频中每相邻两帧之间需要插帧的数量时,首先考虑根据上述第一视频的帧率和总帧数,以及上述第二视频的帧率,获得上述第一视频对应的拷贝帧序列,进而,根据该拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及对应的视频帧的时间戳,确定待插帧区间,根据该待插帧区间,确定上述第一视频中每相邻两帧之间需要插帧的数量,然后对视频帧和插出来的帧,分别进行非插帧超分和插帧超分,获得第二视频,解决现有插帧和超分灵活性较低,获得的时空超分结果较差的问题。另外,本申请实施例将插帧、插帧超分和非插帧超分三部分分离,每个部分可以自由设计提升效果,更加灵活,并且上述插帧可以实现任意目标帧率的提升,上述非插帧超分和插帧超分可以实现任意目标分辨率的提升,进一步提高了时空超分的灵活性,获得了较佳的时空超分结果,提升了视频的清晰度和流畅度。
对应于上文实施例的视频处理方法,图7为本申请实施例提供的视频处理装置的结构示意图。为了便于说明,仅示出了与本申请实施例相关的部分。图7为本申请实施例提供的一种视频处理装置的结构示意图,该视频处理装置70包括:获取模块701、确定模块702、插帧模块703以及超分模块704。这里的视频处理装置可以是上述服务器本身,或者是实现服务器的功能的芯片或者集成电路。这里需要说明的是,获取模块、确定模块、插帧模块以及超分模块的划分只是一种逻辑功能的划分,物理上两者可以是集成的,也可以是独立的。
其中,获取模块701,用于获取第一视频。
确定模块702,用于根据所述第一视频的帧率和总帧数,以及第二视频的帧率,确定所述第一视频中每相邻两帧之间需要插帧的数量,其中,所述第一视频的帧率小于所述第二视频的帧率。
插帧模块703,用于根据所述每相邻两帧之间需要插帧的数量,对所述第一视频进行插帧,获得第三视频。
超分模块704,用于若所述第三视频的分辨率小于所述第二视频的分辨率,则对所述第三视频中的视频帧进行非插帧超分,并对所述第三视频中插帧获得的视频帧进行插帧超分,获得所述第二视频。
在一种可能的实现方式中,所述超分模块704,具体用于:
基于所述第三视频中的视频帧Ai,以及与所述视频帧Ai相邻的多个视频帧,进行非插帧超分,并基于所述第三视频中插帧获得的视频帧Bi_j,以及与所述视频帧Bi_j相邻的多个视频帧,进行插帧超分,获得所述第二视频,其中,所述视频帧Ai为所述第三视频中任意一个视频帧,所述视频帧Bi_j为所述第三视频中任意一个插帧获得的视频帧,i=1,2,……,n,n根据所述第三视频中的视频帧的数量确定,j=1,2,……,ki,ki根据所述每相邻两帧之间需要插帧的数量确定。
在一种可能的实现方式中,所述超分模块704,具体用于:
将所述视频帧Ai,以及与所述视频帧Ai最相邻和次相邻的多个视频帧,输入预设非插帧超分模型,进行非插帧超分,所述预设非插帧超分模型用于基于所述第二视频的分辨率对视频帧进行超分。
在一种可能的实现方式中,所述超分模块704,具体用于:
将所述视频帧Bi_j,以及与所述视频帧Bi_j最相邻和次相邻的多个视频帧,输入预设插帧超分模型,进行插帧超分,所述预设插帧超分模型用于基于所述第二视频的分辨率对视频帧进行超分。
在一种可能的实现方式中,所述确定模块702,具体用于:
根据所述第一视频的帧率和总帧数,以及所述第二视频的帧率,获得所述第一视频对应的拷贝帧序列;
根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及对应的视频帧的时间戳,确定待插帧区间;
根据所述待插帧区间,确定所述第一视频中每相邻两帧之间需要插帧的数量。
在一种可能的实现方式中,所述确定模块702,具体用于:
根据所述第一视频的帧率和总帧数,以及所述第二视频的帧率,确定所述第二视频的总帧数;
根据所述第一视频的帧率和总帧数,以及所述第二视频的帧率和总帧数,确定所述第一视频中各个视频帧的时间戳和所述第二视频中各个视频帧的时间戳;
根据所述第一视频中各个视频帧的时间戳、所述第二视频中各个视频帧的时间戳,以及预设时间差范围,对所述第一视频进行拷贝,获得所述第一视频对应的拷贝帧序列。
在一种可能的实现方式中,所述确定模块702,具体用于:
根据所述第一视频中各个视频帧的时间戳和所述第二视频中各个视频帧的时间戳,确定所述第二视频中各个视频帧与所述第一视频中各个视频帧之间的时间差;
根据所述时间差和所述预设时间差范围,确定所述第二视频中各个视频帧对应的视频帧,并基于确定的视频帧,对所述第一视频进行拷贝,获得所述第一视频对应的拷贝帧序列。
在一种可能的实现方式中,所述确定模块702,具体用于:
根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及对应的视频帧的时间戳,确定所述拷贝帧序列的每一重复拷贝的视频帧中的一个视频帧作为应从所述第一视频中拷贝的视频帧;
基于所述拷贝帧序列的每一重复拷贝的视频帧中,除从所述一个视频帧外剩余的视频帧,确定所述待插帧区间。
在一种可能的实现方式中,所述确定模块702,具体用于:
根据所述拷贝帧序列的每一重复拷贝的视频帧的时间戳,以及对应的视频帧的时间戳,判断所述拷贝帧序列的每一重复拷贝的视频帧中是否有时间戳大于对应的视频帧的时间戳的视频帧;
若所述拷贝帧序列的每一重复拷贝的视频帧中有时间戳大于对应的视频帧的时间戳的视频帧,则从所述时间戳大于对应的视频帧的时间戳的视频帧中,确定一个视频帧作为应从所述第一视频中拷贝的视频帧。
在一种可能的实现方式中,所述确定模块702,具体用于:
若所述拷贝帧序列的每一重复拷贝的视频帧中没有时间戳大于对应的视频帧的时间戳的视频帧,则从所述拷贝帧序列的每一重复拷贝的视频帧中,获得与对应的视频帧的时间差最小的视频帧作为应从所述第一视频中拷贝的视频帧。
在一种可能的实现方式中,所述插帧模块703,具体用于:
将所述第一视频和所述每相邻两帧之间需要插帧的数量,输入预设插帧模型,所述预设插帧模型用于在相邻两帧视频帧之间插所述数量的视频帧;
基于所述预设插帧模型的输出,获得所述第三视频。
本申请实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
可选地,图8示意性地提供本申请所述服务器一种可能的基本硬件架构。
参见图8,服务器800包括至少一个处理器801以及通信接口803。进一步可选的,还可以包括存储器802和总线804。
其中,服务器800中,处理器801的数量可以是一个或多个,图8仅示意了其中一个处理器801。可选地,处理器801,可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或者数字信号处理器(digital signalprocessor,DSP)。如果服务器800具有多个处理器801,多个处理器801的类型可以不同,或者可以相同。可选地,服务器800的多个处理器801还可以集成为多核处理器。
存储器802存储计算机指令和数据;存储器802可以存储实现本申请提供的上述视频处理方法所需的计算机指令和数据,例如,存储器802存储用于实现上述视频处理方法的步骤的指令。存储器802可以是以下存储介质的任一种或任一种组合:非易失性存储器(例如只读存储器(ROKI)、固态硬盘(SSD)、硬盘(HDD)、光盘),易失性存储器。
通信接口803可以为所述至少一个处理器提供信息输入/输出。也可以包括以下器件的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。
可选的,通信接口803还可以用于服务器800与其它计算设备或者终端进行数据通信。
进一步可选的,图8用一条粗线表示总线804。总线804可以将处理器801与存储器802和通信接口803连接。这样,通过总线804,处理器801可以访问存储器802,还可以利用通信接口803与其它计算设备或者终端进行数据交互。
在本申请中,服务器800执行存储器802中的计算机指令,使得服务器800实现本申请提供的上述视频处理方法,或者使得服务器800部署上述的视频处理装置。
从逻辑功能划分来看,示例性的,如图8所示,存储器802中可以包括获取模块701、确定模块702、插帧模块703以及超分模块704。这里的包括仅仅涉及存储器中所存储的指令被执行时可以分别实现获取模块、确定模块、插帧模块以及超分模块的功能,而不限定是物理上的结构。
另外,上述的服务器除了可以像上述图8通过软件实现外,也可以作为硬件模块,或者作为电路单元,通过硬件实现。
本申请提供一种计算机可读存储介质,所述计算机程序产品包括计算机指令,所述计算机指令指示计算设备执行本申请提供的上述视频处理方法。
本申请提供一种芯片,包括至少一个处理器和通信接口,所述通信接口为所述至少一个处理器提供信息输入和/或输出。进一步,所述芯片还可以包含至少一个存储器,所述存储器用于存储计算机指令。所述至少一个处理器用于调用并运行该计算机指令,以执行本申请提供的上述视频处理方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。