一种用于多人视频通话的视频处理方法及服务器与流程

文档序号:12310261阅读:583来源:国知局
一种用于多人视频通话的视频处理方法及服务器与流程

本发明涉及视频通话技术领域,尤其涉及一种用于多人视频通话的视频处理方法及服务器。



背景技术:

近年来,随着电子技术的不断发展,多人视频通话在家庭远程聚会、公司远程会议、远程教育、互动直播等场景中有着广泛的应用。在这些应用中,每个参与通话的终端设备,需要将本机的视频画面传输到mcu(microcontrollerunit,微控制单元)服务器,mcu服务器需要首先对所有终端的视频进行解码,然后按照终端的布局要求对所有的视频流画面进行合成,最后对合成画面进行编码后发送给每个参与通话的视频终端。

对于多人视频通话服务的提供商而言,mcu服务器需要具有非常强的计算能力来编码高分辨率的合成视频,是整个系统的瓶颈所在。假设某个多人通话中有9个参与者,每个参与者上传视频的分辨率为240x240,那么在mcu服务器上需要实时对9路分辨率为240x240的视频进行解码,根据客户终端设备指定的布局,分别合成出9路分辨率为720x720的视频流,然后对9路720x720的视频进行编码,需要极高的计算量。因此,如何有效的降低视频处理的计算量,进而降低mcu服务器的成本,是一项亟待解决的问题。



技术实现要素:

本发明提供了一种用于多人视频通话的视频处理方法,能够有效降低多人视频通话过程中视频处理的计算量,进而降低服务器的成本。

本发明提供了一种用于多人视频通话的视频处理方法,应用于服务器,所述服务器分配有n个逻辑计算单元,其中,n为参与多人视频通话的终端设备数量,所述方法包括:

基于第一逻辑计算单元对当前接收到的第一终端设备上传的每条视频流进行预测,分别生成每条视频流的预测结果;

所述第一逻辑计算单元基于所述第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成所述合成图像中的一个图像子区域;

所述第一逻辑计算单元对所述合成图像中的每个图像子区域进行图像编码后,输出所述合成图像编码后的合成流。

优选地,所述基于第一逻辑计算单元对当前接收到的第一终端设备上传的每条视频流进行预测,分别生成每条视频流的预测结果包括:

对当前接收到的所述第一终端设备上传的每条视频流分别进行解码,得到每条视频流对应的图像块;

对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果。

优选地,所述对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果后还包括:

将所述预测结果存储至共享内存,所述共享内存为n个逻辑计算单元均能访问到的内存。

优选地,所述第一逻辑计算单元基于所述第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像后还包括:

记录所述合成图像中的每个图像子区域与所述第一终端设备上传的每条视频流的对应关系。

优选地,所述第一逻辑计算单元对所述合成图像中的每个图像子区域进行图像编码后,输出所述合成图像编码后的合成流包括:

基于记录的所述合成图像中的每个图像子区域与所述第一终端设备上传的每条视频流的对应关系,确定每个图像子区域对应的所述第一终端设备上传的视频流的编号;

基于所述视频流的编号从所述共享内存中查找出所述视频流的帧内预测结果和帧间预测结果;

基于所述帧内预测结果和帧间预测结果完成图像编码;

输出图像编码后的合成流。

一种用于多人视频通话的服务器,所述服务器分配有n个逻辑计算单元,其中,n为参与多人视频通话的终端设备数量;

所述服务器中的第一逻辑计算单元对当前接收到的第一终端设备上传的每条视频流进行预测,分别生成每条视频的预测结果;

所述第一逻辑计算单元基于所述第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成所述合成图像中的一个图像子区域;

所述第一逻辑计算单元对所述合成图像中的每个图像子区域进行图像编码后,输出所述合成图像编码后的合成流。

优选地,所述第一逻辑计算单元包括:

解码模块,用于对当前接收到的所述第一终端设备上传的每条视频流分别进行解码,得到每条视频流对应的图像块;

帧内预测和帧间预测模块,用于对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果。

优选地,所述第一逻辑计算单元还包括:

存储模块,用于将所述预测结果存储至共享内存,所述共享内存为n个逻辑计算单元均能访问到的内存。

优选地,所述第一逻辑计算单元还包括:

记录模块,用于记录所述合成图像中的每个图像子区域与所述第一终端设备上传的每条视频流的对应关系。

优选地,所述第一逻辑计算单元包括:

确定模块,用于基于记录的所述合成图像中的每个图像子区域与所述第一终端设备上传的每条视频流的对应关系,确定每个图像子区域对应的所述第一终端设备上传的视频流的编号;

查找模块,用于基于所述视频流的编号从所述共享内存中查找出所述视频流的帧内预测结果和帧间预测结果;

编码模块,用于基于所述帧内预测结果和帧间预测结果完成图像编码;

输出模块,用于输出图像编码后的合成流。

由上述方案可知,本发明提供的一种用于多人视频通话的视频处理方法,应用于服务器,服务器分配有n个逻辑计算单元,其中,n为参与多人视频通话的终端设备数量,当需要对多人视频通话的视频进行处理时,首先基于第一逻辑计算单元对当前接收到的第一终端设备上传的每条视频流进行预测,分别生成每条视频流的预测结果,然后第一逻辑计算单元基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中每条视频流构成合成图像中的一个图像子区域;然后第一逻辑计算单元对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。本发明对合成和编码流水线进行了优化,将视频编码中的预测阶段提前,每个逻辑计算单元分别计算一路原始视频流的帧内/帧间预测任务,在编码合成流时,每路合成流的编码器直接利用所有图像子区域的预测结果,完成剩余的编码操作,显著降低了整个系统的计算量。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明公开的一种用于多人视频通话的视频处理方法实施例1的方法流程图;

图2为本发明公开的一种用于多人视频通话的视频处理方法实施例2的方法流程图;

图3为本发明公开的一种用于多人视频通话的视频处理方法实施例3的方法流程图;

图4为本发明公开的一种用于多人视频通话的视频处理方法实施例4的方法流程图;

图5为本发明公开的一种用于多人视频通话的视频处理方法实施例5的方法流程图;

图6为本发明公开的一种用于多人视频通话的服务器实施例1的结构示意图;

图7为本发明公开的一种用于多人视频通话的服务器实施例2的结构示意图;

图8为本发明公开的一种用于多人视频通话的服务器实施例3的结构示意图;

图9为本发明公开的一种用于多人视频通话的服务器实施例4的结构示意图;

图10为本发明公开的一种用于多人视频通话的服务器实施例5的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

对于mcu服务器而言,解码n路视频流的计算量记为cd,合成n路视频流的计算量记为cc,而编码n路视频的计算量记为ce。三者之间关系大致为:cc≈0.5cd和ce>10cd。由此可知,编码n路视频流的计算任务是整个系统的计算瓶颈,约占90%左右的计算量。

在现有技术中,每一路合成图像都包含n路上传图像的内容,只是n路图像在不同合成图像中的排列位置不同。比如参与者a的合成流中a的本地视频(即原视频)被显示到终端设备m的左上角,而在参与者b的合成流中b的本地视频(即原视频)被显示到终端设备n的左上角。

如果能在编码输出合成流的过程中,利用到合成流各图像块之间的相关性,在编码过程中共享计算的中间结果,那么就可能有效降低整个系统的所需计算资源。

因此,本发明基于上述思路,如图1所示,提供了一种用于多人视频通话的视频处理方法实施例1的方法流程图,该方法应用于服务器,其中,服务器分配有n个逻辑计算单元,标记为c1、c2、…cn,其中,n为参与多人视频通话的终端设备数量,所述方法可以包括以下步骤:

s101、基于第一逻辑计算单元对当前接收到的第一终端设备上传的每条视频流进行预测,分别生成每条视频流的预测结果;

对于编号为i(i=1,2,…,n)的逻辑计算单元ci(即处理器中包含的任意一个逻辑计算单元),对当前接收到的第i路用户终端设备(即任意一个终端设备)上传的每条视频流进行预测,并分别生成每条视频流的预测结果。为了描述更加清楚,将处理器中的任意一个逻辑计算单元定义为第一逻辑单元,将任意一个终端设备定义为第一终端设备。

s102、第一逻辑计算单元基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成合成图像中的一个图像子区域;

每个逻辑计算单元ci根据个性化的布局,即将n路终端设备上传的视频流按照预设的顺序进行排列,对视频流进行合成,生成合成图像cii。

s103、第一逻辑计算单元对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。

每个逻辑计算单元ci对合成流cii中的每个图像子区域进行图像编码,每个逻辑计算单元ci输出编码后的合成流。

综上所述,在上述实施例中,当需要对多人视频通话的视频进行处理时,首先基于第一逻辑计算单元对当前接收到的第一终端设备上传的每条视频流进行预测,分别生成每条视频流的预测结果,然后第一逻辑计算单元基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像;然后第一逻辑计算单元对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。本发明对合成和编码流水线进行了优化,将视频编码中的预测阶段提前,每个逻辑计算单元分别计算一路原始视频流的帧内/帧间预测任务,在编码合成流时,每路合成流的编码器直接利用所有图像子区域的预测结果,完成剩余的编码操作,显著降低了整个系统的计算量。

如图2所示,为本发明提供的一种用于多人视频通话的视频处理方法实施例2的方法流程图,该方法应用于服务器,其中,服务器分配有n个逻辑计算单元,标记为c1、c2、…cn,其中,n为参与多人视频通话的终端设备数量,所述方法可以包括以下步骤:

s201、对当前接收到的第一终端设备上传的每条视频流进行解码,得到每条视频流对应的图像块;

对于编号为i(i=1,2,…,n)的逻辑计算单元ci,首先对当前接收到的第i路用户终端设备上传的任意一条视频流进行解码,将解码后得到的每条视频流对应的图像块标记为ii。

s202、对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果;

逻辑计算单元ci对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果,其中,预测结果可包含分块模式、运动矢量等。

s203、第一逻辑计算单元基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成合成图像中的一个图像子区域;

每个逻辑计算单元ci根据个性化的布局,即将终端设备上传的视频流按照预设的顺序进行排列,对视频流进行合成,生成合成图像cii。

s204、第一逻辑计算单元对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。

每个逻辑计算单元ci对合成流cii中的每个图像子区域进行图像编码,每个逻辑计算单元ci输出编码后的合成流。

综上所述,在实施例1的基础上具体通过对当前接收到的第一终端设备上传的每条视频流分别进行解码,得到每条视频流对应的图像块,并对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果。将视频编码中的预测阶段提前,每个逻辑计算单元分别计算一路原始视频流的帧内/帧间预测任务。

如图3所示,为本发明提供的一种用于多人视频通话的视频处理方法实施例3的方法流程图,该方法应用于服务器,其中,服务器分配有n个逻辑计算单元,标记为c1、c2、…cn,其中,n为参与多人视频通话的终端设备数量,所述方法可以包括以下步骤:

s301、对当前接收到的第一终端设备上传的每条视频流进行解码,得到每条视频流对应的图像块;

对于编号为i(i=1,2,…,n)的逻辑计算单元ci,首先对当前接收到的第i路用户终端设备上传的任意一条视频流进行解码,将解码后得到的每条视频流对应的图像块标记为ii。

s302、对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果;

逻辑计算单元ci对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果pi,其中,预测结果可包含分块模式、运动矢量等。

s303、将预测结果存储至共享内存,共享内存为n个逻辑计算单元均能访问到的内存;

将预测结果pi存储到所有逻辑计算单元都可以访问到的共享内存中。

s304、第一逻辑计算单元基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成所述合成图像中的一个图像子区域;

每个逻辑计算单元ci根据个性化的布局,即将n路终端设备上传的视频流按照预设的顺序进行排列,对视频流进行合成,生成合成图像cii。

s305、第一逻辑计算单元对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。

每个逻辑计算单元ci对合成流cii中的每个图像子区域进行图像编码,每个逻辑计算单元ci输出编码后的合成流。

综上所述,在实施例2的基础上,进一步将预测结果存储至每个逻辑计算单元均能访问到的内存,通过将每条视频流的预测结果存储至所有逻辑计算单元均能访问到的内存,使得每个逻辑计算单元在输出合成流时能够共享每条视频流的预测结果,进而减少了在输出合成流时的计算量。

如图4所示,为本发明提供的一种用于多人视频通话的视频处理方法实施例4的方法流程图,该方法应用于服务器,其中,服务器分配有n个逻辑计算单元,标记为c1、c2、…cn,其中,n为参与多人视频通话的终端设备数量,所述方法可以包括以下步骤:

s401、对当前接收到的第一终端设备上传的每条视频流进行解码,得到每条视频流对应的图像块;

对于编号为i(i=1,2,…,n)的逻辑计算单元ci,首先对当前接收到的第i路用户终端设备上传的任意一条视频流进行解码,将解码后得到的每条视频流对应的图像块标记为ii。

s402、对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果;

逻辑计算单元ci对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果pi,其中,预测结果可包含分块模式、运动矢量等。

s403、将预测结果存储至共享内存,共享内存为n个逻辑计算单元均能访问到的内存;

将预测结果pi存储到所有逻辑计算单元都可以访问到的共享内存中。

s404、第一逻辑计算单元基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成所述合成图像中的一个图像子区域;

每个逻辑计算单元ci根据个性化的布局,即将n路终端设备上传的视频流按照预设的顺序进行排列,对视频流进行合成,生成合成图像cii。

s405、记录合成图像中的每个图像子区域与第一终端设备上传的每条视频流的对应关系;

得到合成图像cii后,同时需要记录每个图像子区域(每个图像子区域对应于一条原始视频流)与各原始视频流,即终端设备上传的视频流的对应关系。

s406、第一逻辑计算单元对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。

每个逻辑计算单元ci对合成流cii中的每个图像子区域进行图像编码,每个逻辑计算单元ci输出编码后的合成流。

综上所述,在上述实施例的基础上,本实施例进一步对合成图像中的每个图像子区域和第一终端设备上传的每条视频流的对应关系进行记录,通过对对应关系进行记录能够建立合成图像中的每个图像子区域与第一终端设备上传的每条视频流的联系。

如图5所示,为本发明提供的一种用于多人视频通话的视频处理方法实施例5的方法流程图,该方法应用于服务器,其中,服务器分配有n个逻辑计算单元,标记为c1、c2、…cn,其中,n为参与多人视频通话的终端设备数量,所述方法可以包括以下步骤:

s501、对当前接收到的第一终端设备上传的每条视频流进行解码,得到每条视频流对应的图像块;

对于编号为i(i=1,2,…,n)的逻辑计算单元ci,首先对当前接收到的第i路用户终端设备上传的任意一条视频流进行解码,将解码后得到的每条视频流对应的图像块标记为ii。

s502、对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果;

逻辑计算单元ci对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果pi,其中,预测结果可包含分块模式、运动矢量等。

s503、将预测结果存储至共享内存,共享内存为n个逻辑计算单元均能访问到的内存;

将预测结果pi存储到所有逻辑计算单元都可以访问到的共享内存中。

s504、第一逻辑计算单元基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成所述合成图像中的一个图像子区域;

每个逻辑计算单元ci根据个性化的布局,即将n路终端设备上传的视频流按照预设的顺序进行排列,对视频流进行合成,生成合成图像cii。

s505、记录合成图像中的每个图像子区域与第一终端设备上传的每条视频流的对应关系;

得到合成图像cii后,同时需要记录每个图像子区域(每个图像子区域对应于一路原始视频流)与各原始视频流,即终端设备上传的视频流的对应关系。

s506、基于记录的合成图像中的每个图像子区域与第一终端设备上传的每条视频流的对应关系,确定每个图像子区域对应的第一终端设备上传的视频流的编号;

对于每个图像子区域,首先根据记录的合成图像中每个图像子区域与终端设备上传的视频流的对应关系,找到对应的终端设备上传的视频流的编号。

s507、基于所述视频流的编号从共享内存中查找出视频流的帧内预测结果和帧间预测结果;

然后根据视频流的编号从共享内存中找到已经计算好的与编号对应的视频流的帧内预测结果和帧间预测结果。

s508、基于帧内预测结果和帧间预测结果完成图像编码;

根据、帧内预测结果和帧间预测结果,通过计算预测值、对残差进行变换、量化、熵编码等完成图像编码。

s509、输出图像编码后的合成流。

每个逻辑计算单元ci对合成流cii中的每个图像子区域进行图像编码,每个逻辑计算单元ci输出编码后的合成流。

本文方法与原有方法的计算量比较如下,解码n路视频流的计算量记为cd,合成n路视频流的计算量记为cc,而编码n路视频的计算量记为ce。原有方法的计算量大致如下:cold=n×(cd+cc+ce)≈n×ce;

根据业界公认的标准,帧内预测和帧间预测部分计算大致为整个图像编码任务的1/2。

而通过本发明的方法的计算量大致为:

两者的计算量比值:

当n=3时,r值约为2/3;当n=4时,r值约为5/8;当n越大时,该值越接近1/2,即本文算法将计算量降低到原来的1/2左右。

综上所述,本发明对合成和编码流水线进行了优化,将视频编码中的预测阶段提前,每个逻辑计算单元分别计算1路原始视频流的帧内/帧间预测任务,在编码合成流时,每路合成流的编码器直接利用所有图像子区域的预测结果,完成剩余的编码操作,显著降低了整个系统的计算量。

如图6所示,提供了一种用于多人视频通话的服务器实施例1的结构示意图,服务器分配有n个逻辑计算单元601,标记为c1、c2、…cn,其中,n为参与多人视频通话的终端设备数量,其中:

第一逻辑计算单元601对当前接收到的第一终端设备上传的每条视频流进行预测,分别生成每条视频流的预测结果;

对于编号为i(i=1,2,…,n)的逻辑计算单元ci(即处理器中包含的任意一个逻辑计算单元),对当前接收到的第i路用户终端设备(即任意一个终端设备)上传的每条视频流进行预测,并分别生成每条视频流的预测结果。为了描述更加清楚,将处理器中的任意一个逻辑计算单元定义为第一逻辑单元,将任意一个终端设备定义为第一终端设备。

第一逻辑计算单元601基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成合成图像中的一个图像子区域;

每个逻辑计算单元ci根据个性化的布局,即将n路终端设备上传的视频流按照预设的顺序进行排列,对视频流进行合成,生成合成图像cii。

第一逻辑计算单元601对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。

每个逻辑计算单元ci对合成流cii中的每个图像子区域进行图像编码,每个逻辑计算单元ci输出编码后的合成流。

综上所述,在上述实施例中,当需要对多人视频通话的视频进行处理时,首先基于第一逻辑计算单元对当前接收到的第一终端设备上传的每条视频流进行预测,分别生成每条视频流的预测结果,然后第一逻辑计算单元基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像;然后第一逻辑计算单元对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。本发明对合成和编码流水线进行了优化,将视频编码中的预测阶段提前,每个逻辑计算单元分别计算一路原始视频流的帧内/帧间预测任务,在编码合成流时,每路合成流的编码器直接利用所有图像子区域的预测结果,完成剩余的编码操作,显著降低了整个系统的计算量。

如图7所示,为本发明提供的一种用于多人视频通话的服务器实施例2的结构示意图,服务器分配有n个逻辑计算单元701,标记为c1、c2、…cn,其中,n为参与多人视频通话的终端设备数量,其中:

解码模块7011,用于对当前接收到的第一终端设备上传的每条视频流进行解码,得到每条视频流对应的图像块;

对于编号为i(i=1,2,…,n)的逻辑计算单元ci,首先对当前接收到的第i路用户终端设备上传的任意一条视频流进行解码,将解码后得到的每条视频流对应的图像块标记为ii。

帧内预测和帧间预测模块7012,用于对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果;

逻辑计算单元ci对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果,其中,预测结果可包含分块模式、运动矢量等。

第一逻辑计算单元701基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成合成图像中的一个图像子区域;

每个逻辑计算单元ci根据个性化的布局,即将n路终端设备上传的视频流按照预设的顺序进行排列,对视频流进行合成,生成合成图像cii。

第一逻辑计算单元701对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。

每个逻辑计算单元ci对合成流cii中的每个图像子区域进行图像编码,每个逻辑计算单元ci输出编码后的合成流。

综上所述,在实施例1的基础上具体通过对当前接收到的第一终端设备上传的每条视频流分别进行解码,得到每条视频流对应的图像块,并对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果。将视频编码中的预测阶段提前,每个逻辑计算单元分别计算一路原始视频流的帧内/帧间预测任务。

如图8所示,为本发明提供的一种用于多人视频通话的服务器实施例3的结构示意图,服务器分配有n个逻辑计算单元801,标记为c1、c2、…cn,其中,n为参与多人视频通话的终端设备数量,其中:

解码模块8011,用于对当前接收到的第一终端设备上传的每条视频流进行解码,得到每条视频流对应的图像块;

对于编号为i(i=1,2,…,n)的逻辑计算单元ci,首先对当前接收到的第i路用户终端设备上传的任意一条视频流进行解码,将解码后得到的每条视频流对应的图像块标记为ii。

帧内预测和帧间预测模块8012,用于对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果;

逻辑计算单元ci对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果pi,其中,预测结果可包含分块模式、运动矢量等。

存储模块8013,用于将预测结果存储至共享内存,共享内存为n个逻辑计算单元均能访问到的内存;

将预测结果pi存储到逻辑计算单元c1-cn都可以访问到的共享内存中。

第一逻辑计算单元801基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成所述合成图像中的一个图像子区域;

每个逻辑计算单元ci根据个性化的布局,即将n路终端设备上传的视频流按照预设的顺序进行排列,对视频流进行合成,生成合成图像cii。

第一逻辑计算单元801对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。

每个逻辑计算单元ci对合成流cii中的每个图像子区域进行图像编码,每个逻辑计算单元ci输出编码后的合成流。

综上所述,在实施例2的基础上,进一步将预测结果存储至每个逻辑计算单元均能访问到的内存,通过将每条视频流的预测结果存储至所有逻辑计算单元均能访问到的内存,使得每个逻辑计算单元在输出合成流时能够共享每条视频流的预测结果,进而减少了在输出合成流时的计算量。

如图9所示,为本发明提供的一种用于多人视频通话的服务器实施例4的结构示意图,服务器分配有n个逻辑计算单元901,标记为c1、c2、…cn,其中,n为参与多人视频通话的终端设备数量,其中:

解码模块9011,用于对当前接收到的第一终端设备上传的每条视频流进行解码,得到每条视频流对应的图像块;

对于编号为i(i=1,2,…,n)的逻辑计算单元ci,首先对当前接收到的第i路用户终端设备上传的任意一条视频流进行解码,将解码后得到的每条视频流对应的图像块标记为ii。

帧内预测和帧间预测模块9012,用于对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果;

逻辑计算单元ci对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果pi,其中,预测结果可包含分块模式、运动矢量等。

存储模块9013,用于将预测结果存储至共享内存,共享内存为n个逻辑计算单元均能访问到的内存;

将预测结果pi存储到逻辑计算单元c1-cn都可以访问到的共享内存中。

第一逻辑计算单元901基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成所述合成图像中的一个图像子区域;

每个逻辑计算单元ci根据个性化的布局,即将n路终端设备上传的视频流按照预设的顺序进行排列,对视频流进行合成,生成合成图像cii。

记录模块9014,用于记录合成图像中的每个图像子区域与第一终端设备上传的每条视频流的对应关系;

得到合成图像cii后,同时需要记录每个图像子区域每个图像子区域对应于一条原始视频流)与各原始视频流,即终端设备上传的视频流的对应关系。

第一逻辑计算单元901对合成图像中的每个图像子区域进行图像编码后,输出合成图像编码后的合成流。

每个逻辑计算单元ci对合成流cii中的每个图像子区域进行图像编码,每个逻辑计算单元ci输出编码后的合成流。

综上所述,在上述实施例的基础上,本实施例进一步对合成图像中的每个图像子区域和第一终端设备上传的每条视频流的对应关系进行记录,通过对对应关系进行记录能够建立合成图像中的每个图像子区域与第一终端设备上传的每条视频流的联系。

如图10所示,为本发明提供的一种用于多人视频通话的服务器实施例5的结构示意图,服务器分配有n个逻辑计算单元1001,标记为c1、c2、…cn,其中,n为参与多人视频通话的终端设备数量,其中:

解码模块10011,用于对当前接收到的第一终端设备上传的每条视频流进行解码,得到每条视频流对应的图像块;

对于编号为i(i=1,2,…,n)的逻辑计算单元ci,首先对当前接收到的第i路用户终端设备上传的任意一条视频流进行解码,将解码后得到的每条视频流对应的图像块标记为ii。

帧内预测和帧间预测模块10012,用于对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果;

逻辑计算单元ci对解码后得到的图像块进行帧内预测和帧间预测,生成预测结果pi,其中,预测结果可包含分块模式、运动矢量等。

存储模块10013,用于将预测结果存储至共享内存,共享内存为n个逻辑计算单元均能访问到的内存;

将预测结果pi存储到所有逻辑计算单元都可以访问到的共享内存中。

第一逻辑计算单元1001基于第一终端设备上传的每条视频流的顺序,对接收到的所有视频流进行合成,生成合成图像,其中,每条视频流构成所述合成图像中的一个图像子区域;

每个逻辑计算单元ci根据个性化的布局,即将n路终端设备上传的视频流按照预设的顺序进行排列,对视频流进行合成,生成合成图像cii。

记录模块10014,用于记录合成图像中的每个图像子区域与第一终端设备上传的每条视频流的对应关系;

得到合成图像cii后,同时需要记录每个图像子区域(每个图像子区域对应于一路原始视频流)与各原始视频流,即终端设备上传的视频流的对应关系。

确定模块10015,用于基于记录的合成图像中的每个图像子区域与第一终端设备上传的每条视频流的对应关系,确定每个图像子区域对应的第一终端设备上传的视频流的编号;

对于每个图像子区域,首先根据记录的合成图像中每个图像子区域与终端设备上传的视频流的对应关系,找到对应的终端设备上传的视频流编号。

查找模块10016,用于基于视频流的编号从共享内存中查找出视频流的帧内预测结果和帧间预测结果;

然后根据视频流的编号从共享内存中找到已经计算好的与编号对应的视频流的帧内预测结果和帧间预测结果。

编码模块10017,用于基于帧内预测结果和帧间预测结果完成图像编码;

根据视频流编号、帧内预测和帧间预测结果,通过计算预测值、对残差进行变换、量化、熵编码等完成图像编码。

输出模块10018,用于输出图像编码后的合成流。

每个逻辑计算单元ci对合成流cii中的每个图像子区域进行图像编码,每个逻辑计算单元ci输出编码后的合成流。

本文方法与原有方法的计算量比较如下,解码n路视频流的计算量记为cd,合成n路视频流的计算量记为cc,而编码n路视频的计算量记为ce。原有方法的计算量大致如下:cold=n×(cd+cc+ce)≈n×ce;

根据业界公认的标准,帧内预测和帧间预测部分计算大致为整个图像编码任务的1/2。

而通过本发明的方法的计算量大致为:

两者的计算量比值:

当n=3时,r值约为2/3;当n=4时,r值约为5/8;当n越大时,该值越接近1/2,即本文算法将计算量降低到原来的1/2左右。

综上所述,本发明对合成和编码流水线进行了优化,将视频编码中的预测阶段提前,每个逻辑计算单元分别计算1路原始视频流的帧内/帧间预测任务,在编码合成流时,每路合成流的编码器直接利用所有图像子区域的预测结果,完成剩余的编码操作,显著降低了整个系统的计算量。

本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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