多方视频混屏方法、装置、网络设备及存储介质与流程

文档序号:20039852发布日期:2020-02-28 11:46阅读:242来源:国知局
多方视频混屏方法、装置、网络设备及存储介质与流程

本发明涉及通信技术领域,特别涉及一种多方视频混屏方法、装置、网络设备及存储介质。



背景技术:

在多种视频通信的场景下,例如进行多方视频会议,需要将进行视频通信的多个视频混在一个屏幕中,以方便进行视频通信用户的观看和互动。

然而,由于进行视频通信的多个终端的类型可能会不同,相应地多个视频的帧率也可能会不一样;而帧率的不同则会导致混屏之后的各个视频不能同步,影响混屏的通信视频的显示效果。



技术实现要素:

本发明实施方式的目的在于提供一种多方视频混屏方法、装置、网络设备及存储介质,可以提高混屏的通信视频的显示效果。

为解决上述技术问题,本发明的实施方式提供了一种多方视频混屏方法,包含以下步骤:获取待混屏的n个视频的编码帧和每个视频的输入帧率,n为大于1的自然数;将输入帧率与预设帧率不同的视频的编码帧进行解码得到解码帧,并获取输入帧率与预设帧率不同的视频的特征参数;将特征参数输入至运动复杂度模型,得到输入帧率与预设帧率不同的视频的运动复杂度;根据预设帧率和运动复杂度对解码帧进行插帧或抛帧处理,得到处理后的解码帧;根据处理后的解码帧合成混屏视频。

本发明的实施方式还提供了一种多方视频混屏装置,包含:编码帧获取模块,用于获取待混屏的n个视频的编码帧和每个视频的输入帧率,n为大于1的自然数;参数获取模块,用于将输入帧率与预设帧率不同的视频的编码帧进行解码得到解码帧,并获取输入帧率与预设帧率不同的视频的特征参数;复杂度获取模块,用于将特征参数输入至运动复杂度模型,得到输入帧率与预设帧率不同的视频的运动复杂度;帧处理模块,用于根据预设帧率和运动复杂度对解码帧进行插帧或抛帧处理,得到处理后的解码帧;视频合成模块,用于根据处理后的解码帧合成混屏视频。

本发明的实施方式还提供了一种网络设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的多方视频混屏方法。

本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的多方视频混屏方法。

本发明实施方式相对于现有技术而言,通过将输入帧率与预设帧率不同的视频进行插帧或抛帧处理,可以使处理后的视频的输入帧率与预设帧率相同或接近,从而使混屏后的各个视频的帧率相同或接近,提高混屏后的视频的同步性;同时通过运动复杂度模型获取视频的运动复杂度,在对视频进行插帧或抛帧处理时,结合视频的运动复杂度进行插帧或抛帧,可以使插入的帧或抛掉的帧更加合理,使混屏后的视频更加符合真实的情况,提高了混屏的通信视频的显示效果。

另外,根据预设帧率和运动复杂度对解码帧进行插帧或抛帧处理,包括:若输入帧率大于预设帧率,则对解码帧进行抛帧处理,其中,抛帧处理优先对运动复杂度小于或等于第一预设值的解码帧进行;若输入帧率小于预设帧率,则对解码帧进行插帧处理,其中,插帧处理优先对运动复杂度大于或等于第二预设值的解码帧进行。

另外,获取输入帧率与预设帧率不同的视频的特征参数,具体为:获取输入帧率与预设帧率不同的视频的宏块运动矢量、宏块编码类型和帧级的全局运动矢量作为特征参数。由于视频的宏块运动矢量、宏块编码类型和帧级的全局运动矢量较能体现视频的运动信息,因此将这些作为特征参数输入至运动复杂度模型,可以得到较准确的运动复杂度。

另外,在将特征参数输入至运动复杂度模型之前,还包括:获取视频训练样本,提取视频训练样本的特征参数;将视频训练样本的特征参数输入至深度学习模型中训练;将训练后的深度学习模型作为运动复杂度模型。通过将视频训练样本输入至深度学习模型中训练,得到运动复杂度模型,从而可以根据运动复杂度模型获取输入帧率与预设帧率不同的视频的运动复杂度,在对视频进行插帧或抛帧处理时,结合视频的运动复杂度来插帧或抛帧,可以使混屏视频更加符合实际的运动情况,提高混屏视频的同步性。

另外,将视频训练样本的特征参数输入至深度学习模型中训练,具体为:将视频训练样本的特征参数输入至开源深度学习框架中训练。

另外,获取待混屏的n个视频的编码帧和每个视频的输入帧率,包括:采用卡尔曼滤波分别获取每个视频的输入帧率。由于卡尔曼滤波可以获取到视频的输入帧率变化的范围,因此可以根据变化的范围对视频的输入帧率进行微调,从而使视频的输入帧率更加符合实际情况,更有利于提高混屏视频的同步性和流畅性。

另外,根据处理后的解码帧合成混屏视频,包括:根据处理后的解码帧和输入帧率与预设帧率相同的视频的编码帧合成混屏视频。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。

图1是本发明第一实施方式提供的多方视频混屏方法的流程示意图;

图2是本发明第一实施方式提供的多方视频混屏方法中s104细化的流程示意图;

图3是本发明第一实施方式提供的多方视频混屏方法中s103之前的流程示意图;

图4是本发明第二实施方式提供的多方视频混屏装置的模块结构示意图;

图5是本发明第三实施方式提供的网络设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种多方视频混屏方法,通过获取待混屏的n个视频的编码帧和每个视频的输入帧率;将输入帧率与预设帧率不同的视频的编码帧进行解码得到解码帧,并获取输入帧率与预设帧率不同的视频的特征参数;将特征参数输入至运动复杂度模型,得到输入帧率与预设帧率不同的视频的运动复杂度;根据预设帧率和运动复杂度对解码帧进行插帧或抛帧处理,得到处理后的解码帧;根据处理后的解码帧合成混屏视频。通过对与预设帧率不同的解码帧进行插帧和抛帧处理,可以使混屏视频被显示时同步性好;同时通过运动复杂度模型获取视频的运动复杂度,根据视频的运动复杂度来进行插帧或抛帧处理,可以使插入的帧或抛掉的帧更加合理,使混屏视频更加符合真实运动情况,提高显示的流畅性。

应当说明的是,本发明实施方式的实施主体为接收视频的服务端,其中,服务端可以通过独立的服务器或者多个服务器组成的服务器集群来实现,以下以服务端为例进行说明。

本发明实施方式提供的多方视频混屏方法的具体流程如图1所示,包括以下步骤:

s101:获取待混屏的n个视频的编码帧和每个视频的输入帧率,n为大于1的自然数。

其中,输入帧率是指服务端接收到的视频的帧率。可选地,可以使用低通滤波方法对每个视频的输入帧率进行估计。优选地,可以采用卡尔曼滤波分别获取每个视频的输入帧率。其中,卡尔曼滤波(kalmanfilter)是一种高效率的递归滤波器(自回归滤波器),它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。

应当理解的是,由于网络环境的不稳定,视频的输入帧率会受到网络环境的影响而使输入帧率产生变化,采用低通滤波方法的目的是获取视频的输入帧率的一个相对稳定的值。而采用卡尔曼滤波方法,除了可以获取到视频的输入帧率的相对稳定的值外,还可以得到输入帧率受网络环境影响产生的变化范围。当网络环境较不稳定时,例如变得非常卡顿时,应当对视频的输入帧率进行微调。由于卡尔曼滤波可以获取到视频的帧率变化的范围,因此可以根据该变化的范围对该视频的输入帧率进行微调,例如,若某个视频相对稳定的帧率值为25,微调时可根据变化的范围将视频的输入帧率微调成26、27或24等,从而使视频的输入帧率更加符合实际情况,更有利于提高混屏视频被显示时的同步性和流畅性。

具体地,服务端接收待混屏的n个视频的rtp包,对rtp包进行解析,得到视频的编码帧,并采用预设的低通滤波方法对视频的输入帧率进行估计,得到每个视频的输入帧率。例如,服务端在对每个视频的rtp包进行解析得到视频的编码帧后,通过调用卡尔曼滤波方法,即可以得到每个视频的输入帧率。

s102:将输入帧率与预设帧率不同的视频的编码帧进行解码得到解码帧,并获取输入帧率与预设帧率不同的视频的特征参数。

其中,预设帧率可以根据实际情况进行具体设置,这里不做限制。例如,可以对n个视频的输入帧率求平均值,将该平均值作为预设帧率;又或者获取n个视频中相同个数最多的输入帧率作为预设帧率,等等。视频的特征参数是指表征视频运动复杂度的参数,可选地,获取输入帧率与预设帧率不同的视频的特征参数是指获取该视频的宏块运动矢量、宏块编码类型和帧级的全局运动矢量,因为视频的宏块运动矢量、宏块编码类型和帧级的全局运动矢量较能体现视频的运动复杂度,也可以是该视频的其它特征参数,这里不做具体限制。

可选地,服务端先对n个视频的输入帧率进行判断,若其中的视频的输入帧率与预设帧率相同,则不进行处理;若其中的视频的输入帧率与预设帧率不同,则将该输入帧率与预设帧率不同的视频的编码帧进行解码得到解码帧。由于输入帧率与预设帧率相同的视频不用进行后续的插帧或抛帧处理,因此服务端只需获取输入帧率与预设帧率不同的视频的特征参数。

具体地,服务端可以采用通用视频编解码开源库对输入帧率与预设帧率不同的视频进行解码得到解码帧。其中,通用视频编码解码开源库例如是ffmpeg、xvid、x264或ffdshow等。可选地,服务端也可以采用其它视频编解码工具对视频进行解码,这里不做具体限制。在对视频进行解码时,服务端可以获取到视频的各种运动信息作为该视频的特征参数。

s103:将特征参数输入至运动复杂度模型,得到输入帧率与预设帧率不同的视频的运动复杂度。

其中,运动复杂度模型可以通过先获取多个视频样本的特征参数,再将多个视频样本的特征参数输入预先构建的神经网络进行训练后得到。神经网络例如可以为深度神经网络、卷积神经网络和深度置信网络和递归神经网络等。

具体地,服务端将获取的输入帧率与预设帧率不同的视频的特征参数,输入至运动复杂度模型中,即可得到输入帧率与预设帧率不同的视频的运动复杂度。

s104:根据预设帧率和运动复杂度对解码帧进行插帧或抛帧处理,得到处理后的解码帧。

其中,插帧处理是指插入解码帧使视频的输入帧率增大,抛帧处理是指抛掉解码帧使视频的输入帧率减小。

具体地,服务端将视频的输入帧率与预设帧率进行比较,若视频的输入帧率大于预设帧率,则需要对视频进行抛帧处理,使抛帧处理后的视频的输入帧率等于或接近于预设帧率;若视频的输入帧率小于预设帧率,则需要对视频进行插帧处理,使插帧处理后的视频的输入帧率等于或接近于预设帧率。

当对视频的解码帧进行插帧或抛帧处理时,服务端结合视频的运动复杂度来进行插帧或抛帧处理。

在一个具体的例子中,s104中的根据预设帧率和运动复杂度对解码帧进行插帧或抛帧处理,如图2所示,具体包括以下步骤:

s1041:若输入帧率大于预设帧率,则对解码帧进行抛帧处理,其中,抛帧处理优先对运动复杂度小于或等于第一预设值的解码帧进行。

s1042:若输入帧率小于预设帧率,则对解码帧进行插帧处理,其中,插帧处理优先对运动复杂度大于或等于第二预设值的解码帧进行。

可选地,可以用归一化的数值来表示运动复杂度,例如将运动复杂度用0至1之间的数值进行表示,再根据数值的不同将运动复杂度分为不同的类别,例如,[0,0.1]代表运动静止,(0.1,0.5]代表运动平缓,(0.5,0.8]代表运动较复杂,(0.8,1.0]代表运动非常复杂,可以根据实际需要设置不同数值对应的类别,这里不做具体限制。

s1041中,第一预设值可以根据实际情况进行设置,例如可以设置为0.5,这里不做具体限制。

具体地,服务端将视频的输入帧率与预设帧率进行比较,若视频的输入帧率大于预设帧率,则对视频的解码帧进行抛帧处理,在进行抛帧处理时,优先抛掉运动复杂度小于或等于第一预设值的解码帧。应当理解的是,优先抛掉运动复杂度小于或等于第一预设值的解码帧,是指抛掉至少部分运动复杂度小于或等于第一预设值的解码帧,使视频的输入帧率与预设帧率相同或接近;若已全部抛掉小于或等于第一预设值的解码帧,仍未使视频的输入帧率与预设帧率相同或接近,则继续对运动复杂度大于或等于第一预设值的解码帧进行抛帧处理。可选地,在对运动复杂度小于或等于第一预设值的解码帧进行抛帧处理时,可以根据解码帧的运动复杂度作进一步细分,使运动复杂度越低的解码帧,越优先进行抛帧处理;也可以不作进一步细分,而按照解码帧的先后顺序来进行抛帧处理,具体可以根据实际需要进行设置,这里不做限制。可选地,在继续对运动复杂度大于或等于第一预设值的解码帧进行抛帧处理时,还可以设置第三预设值,尽量保留运动复杂度大于或等于第三预设值的帧,而优先抛掉运动复杂度小于或等于第三预设值的帧。其中,第三预设值可以根据实际需要进行设置,例如设置为0.8,这里不做具体限制。

s1042中,第二预设值可以根据实际需要进行设置,例如设置为0.1,这里不做具体限制。

具体地,服务端将视频的输入帧率与预设帧率进行比较,若视频的输入帧率小于预设帧率,则对解码帧进行插帧处理。在进行插帧处理时,优先对运动复杂度大于或等于第二预设值的解码帧进行插帧。应当理解的是,优先对运动复杂度大于或等于第二预设值的解码帧进行插帧处理,是指至少对部分运动复杂度大于或等于第二预设值的解码帧进行插帧处理,使视频的输入帧率与预设帧率相同或接近;若已对运动复杂度大于或等于第二预设值的解码帧进行插帧处理,仍未使视频的输入帧率与预设帧率相同或接近,则继续对运动复杂度小于第二预设值的解码帧进行插帧处理。可选地,在对运动复杂度大于或等于第二预设值的解码帧进行插帧处理时,可以根据解码帧的运动复杂度作进一步细分,使运动复度越高的解码帧,越优先进行插帧处理,也可以不作进一步细分,根据解码帧的先后顺序来进行插帧处理,具体可以根据实际需要进行设置,这里不做限制。应当说明的是,在对运动复杂度大于或等于第二预设值的解码帧进行插帧处理时,是根据运动复杂度大于或等于第二预设值的解码帧的前一帧或后一帧计算得到插入它们之间的插入帧,再将插入帧插入。在计算插入帧时,可以根据视频其中一些特征参数(如宏块运动矢量)来计算得到,从而使插入帧插入后视频的显示效果更加流畅。可选地,在继续对运动复杂度小于第二预设值的解码帧进行插帧处理时,可以对运动复杂度小于第二预设值的解码帧进行简单的拷贝,减少计算量,也可以用上述的计算方法得到,这里不做具体限制。

应当说明的是,在对输入帧率与预设帧率不同的视频进行抛帧或插帧处理,使视频的输入帧率与预设帧率相同或接近时,可以根据视频的输入帧率与预设帧率的差值来确定应当抛掉或插入的帧数。例如若视频的输入帧率为27,预设帧率为25,则应当抛掉的帧数为27-25=2帧。

s105:根据处理后的解码帧合成混屏视频。

其中,混屏是指将待混屏的视频合成在一个屏幕中。

具体地,服务端将进行抛帧或插帧处理后的解码帧进行混屏,合成混屏视频后进行编码后输出。应当理解的是,由于可能存在视频的输入帧率与预设帧率相同,而该视频不需要进行抛帧或插帧处理,因此若存在输入帧率与预设帧率相同的视频时,服务端将处理后的解码帧和该视频一起进行混屏,合成混屏视频后再输出。

与现有技术相比,本发明实施方式提供的多方视频混屏方法,通过将输入帧率与预设帧率不同的视频进行插帧或抛帧处理,可以使处理后的视频的输入帧率与预设帧率相同或接近,从而使混屏后的各个视频的帧率相同或接近,提高混屏后的视频的同步性;同时通过运动复杂度模型获取视频的运动复杂度,在对视频进行插帧或抛帧处理时,结合视频的运动复杂度进行插帧或抛帧,可以使插入的帧或抛掉的帧更加合理,使混屏后的视频更加符合真实的情况,提高了混屏的通信视频的显示效果。

在一个具体的例子中,在s103之前,即在将特征参数输入至运动复杂度模型之前,如图3所示,还包括以下步骤:

s201:获取视频训练样本,提取视频训练样本的特征参数。

s202:将视频训练样本的特征参数输入至深度学习模型中训练。

s203:将训练后的深度学习模型作为运动复杂度模型。

s201中,视频训练样本可以采集各种场景下的实际通话过程中的视频数据源组成,也可以为根据训练需求专门录制的视频,这里不做限制。

s202中,深度学习模型是指基于深度神经网络构建的学习模型,用于学习视频的运行信息,从而得到视频的运动复杂度。可选地,深度学习模型可以为通用的开源深度学习框架,例如tensorflow、torch或caffe等,即将视频训练本的特征参数输入至开源深度学习框架中训练。

具体地,服务端获取视频训练样本,对视频训练样本进行编解码操作,提取视频训练样本的特征参数,再将视频训练样本的特征参数输入至深度学习模型中训练,当深度学习模型训练到预设精度后,将训练后的深度学习模型作为运动复杂度模型。

通过将视频训练样本输入至深度学习模型中训练,得到运动复杂度模型,从而可以根据运动复杂度模型获取输入帧率与预设帧率不同的视频的运动复杂度,在对视频进行插帧或抛帧处理时,结合视频的运动复杂度来插帧或抛帧,可以使混屏视频更加符合实际的运动情况,提高混屏视频的显示的同步性和流畅度。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第二实施方式涉及一种多方视频混屏装置,如图4所示,包含:编码帧获取模块301、参数获取模块302、复杂度获取模块303、帧处理模块304和视频合成模块305。

编码帧获取模块301,用于获取待混屏的n个视频的编码帧和每个所述视频的输入帧率,所述n为大于1的自然数;

参数获取模块302,用于将所述输入帧率与预设帧率不同的所述视频的编码帧进行解码得到解码帧,并获取输入帧率与预设帧率不同的视频的特征参数;

复杂度获取模块303,用于将所述特征参数输入至运动复杂度模型,得到所述输入帧率与预设帧率不同的视频的运动复杂度;

帧处理模块304,用于根据所述预设帧率和所述运动复杂度对所述解码帧进行插帧或抛帧处理,得到处理后的解码帧;

视频合成模块305,用于根据所述处理后的解码帧合成混屏视频。

进一步地,帧处理模块304还用于:

若所述输入帧率大于所述预设帧率,则对所述解码帧进行抛帧处理,其中,所述抛帧处理优先对运动复杂度小于或等于第一预设值的解码帧进行;

若所述输入帧率小于所述预设帧率,则对所述解码帧进行插帧处理,其中,所述插帧处理优先对运动复杂度大于或等于第二预设值的解码帧进行。

进一步地,参数获取模块302还用于:获取输入帧率与预设帧率不同的视频的宏块运动矢量、宏块编码类型和帧级的全局运动矢量作为特征参数。

进一步地,本发明实施方式提供的多方视频混屏装置还包括模型确定模块,其中,模型确定模块用于:

获取视频训练样本,提取所述视频训练样本的特征参数;

将所述视频训练样本的特征参数输入至深度学习模型中训练;

将训练后的深度学习模型作为所述运动复杂度模型。

进一步地,模型确定模块还用于:将所述视频训练样本的特征参数输入至开源深度学习框架中训练。

进一步地,编码帧获取模块301还用于:采用卡尔曼滤波分别获取每个所述视频的输入帧率。

进一步地,视频合成模块305还用于:根据所述处理后的解码帧和输入帧率与所述预设帧率相同的视频的编码帧合成混屏视频。

不难发现,本实施方式为与第一实施方式相对应的装置实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本发明第三实施方式涉及一种网络设备,如图5所示,包括至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402;其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行上述的多方视频混屏方法。

其中,存储器402和处理器401采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器401和存储器402的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器401处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器401。

处理器401负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器402可以被用于存储处理器401在执行操作时所使用的数据。

本发明第四实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

即,本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

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