直播视频处理方法、装置、设备和存储介质转让专利

申请号 : CN202110226833.X

文献号 : CN113038264B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘鑫焦少慧王悦

申请人 : 北京字节跳动网络技术有限公司

摘要 :

本公开实施例提供一种直播视频处理方法、装置、设备和存储介质。该方法包括:根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型;对虚拟对象与所述目标三维模型进行碰撞检测,并渲染碰撞检测结果,其中,所述虚拟对象是在直播过程中所触发的;将渲染结果叠加到所述当前视频帧中,得到合并视频帧,并将所述合并视频帧发送给服务端。该方法能够模拟虚拟对象在真实的直播环境下的运动轨迹,使得直播过程中所触发的互动信息能够与直播视频帧结合紧密,互相融合,从而提高了互动信息与直播视频的结合紧密度。

权利要求 :

1.一种直播视频处理方法,其特征在于,包括:

根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型;

对虚拟对象与所述目标三维模型进行碰撞检测,并渲染碰撞检测结果,其中,所述虚拟对象是在直播过程中由主播端或者观众端所触发的;

将渲染结果叠加到所述当前视频帧中,得到合并视频帧,并将所述合并视频帧发送给服务端。

2.根据权利要求1所述的方法,其特征在于,所述对虚拟对象与所述目标三维模型进行碰撞检测,包括:获取虚拟对象在上一视频帧中的运动信息;

根据所述运动信息,对所述虚拟对象和所述目标三维模型进行碰撞检测。

3.根据权利要求2所述的方法,其特征在于,所述根据所述运动信息,对所述虚拟对象和所述目标三维模型进行碰撞检测,包括:根据所述运动信息,确定所述虚拟对象在所述当前视频帧中的第一目标运动信息,其中,所述第一目标运动信息为没有发生碰撞情况下所述虚拟对象的运动信息;

实时检测所述虚拟对象与所述目标三维模型是否发生碰撞;

若是,则基于碰撞结果所对应的运动改变信息对所述第一目标运动信息进行修正,得到所述虚拟对象在所述当前视频帧中的第二目标运动信息,并将所述第二目标运动信息作为所述虚拟对象和所述目标三维模型的碰撞检测结果;

若否,则将所述第一目标运动信息作为所述虚拟对象和所述目标三维模型的碰撞检测结果。

4.根据权利要求3所述的方法,其特征在于,所述目标三维模型包括目标三维网格和所述目标三维网格对应的透明贴图。

5.根据权利要求4所述的方法,其特征在于,在检测到所述虚拟对象与所述目标三维模型发生碰撞的情况下,所述碰撞检测结果还包括:所述目标三维模型与所述虚拟对象发生碰撞的碰撞位置;

对应地,所述渲染碰撞检测结果,包括:

根据所述虚拟对象的颜料信息,对所述碰撞位置所在的目标三维网格对应的透明贴图进行渲染;

根据所述第二目标运动信息,对所述虚拟对象进行渲染。

6.根据权利要求2所述的方法,其特征在于,在所述根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型之前,所述方法还包括:接收观众端发送的互动指令,其中,所述互动指令中包括虚拟对象的初始运动信息;

将所述初始运动信息作为所述虚拟对象在直播互动过程中首个视频帧中的运动信息。

7.根据权利要求1至6中任一项所述的方法,其特征在于,所述根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型,包括:根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成三维点云;

对所述三维点云进行语义分割,得到主播所处环境的环境点云和所述主播的人体点云;

分别对所述环境点云和所述人体点云进行重建,得到对应的环境三维模型和人体三维模型;

将所述环境三维模型和所述人体三维模型确定为所述当前视频帧对应的目标三维模型。

8.根据权利要求7所述的方法,其特征在于,还包括:将所述人体点云发送给观众端,以使所述观众端基于所述人体点云实现直播特效。

9.一种直播视频处理装置,其特征在于,包括:

生成模块,用于根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型;

碰撞检测模块,用于对虚拟对象与所述目标三维模型进行碰撞检测,其中,所述虚拟对象是在直播过程中由主播端或者观众端所触发的;

渲染模块,用于渲染碰撞检测结果;

叠加模块,用于将渲染结果叠加到所述当前视频帧中,得到合并视频帧;

发送模块,用于将所述合并视频帧发送给服务端。

10.一种直播视频处理设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。

11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述方法的步骤。

说明书 :

直播视频处理方法、装置、设备和存储介质

技术领域

[0001] 本公开实施例涉及互联网应用技术领域,尤其涉及一种直播视频处理方法、装置、设备和存储介质。

背景技术

[0002] 随着互联网技术的迅速发展,越来越多的用户可以使用不同类型的终端通过网络观看直播。在网络直播中,观众与主播之间可以进行互动。目前主要的互动方式可以是发送聊天弹幕、红包打赏、投票问卷或者视频连麦等。但是,上述直播互动方式至少存在以下技术问题:互动信息与直播视频的结合紧密度较低。

发明内容

[0003] 针对传统技术中的直播互动方式存在的互动信息与直播视频的结合紧密度较低的技术问题,本公开提供一种直播视频处理方法、装置、设备和存储介质。
[0004] 第一方面,本公开实施例提供一种直播视频处理方法,包括:
[0005] 根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型;
[0006] 对虚拟对象与所述目标三维模型进行碰撞检测,并渲染碰撞检测结果,其中,所述虚拟对象是在直播过程中所触发的;
[0007] 将渲染结果叠加到所述当前视频帧中,得到合并视频帧,并将所述合并视频帧发送给服务端。
[0008] 第二方面,本公开实施例提供一种直播视频处理装置,包括:
[0009] 生成模块,用于根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型;
[0010] 碰撞检测模块,用于对虚拟对象与所述目标三维模型进行碰撞检测,其中,所述虚拟对象是在直播过程中所触发的;
[0011] 渲染模块,用于渲染碰撞检测结果;
[0012] 叠加模块,用于将渲染结果叠加到所述当前视频帧中,得到合并视频帧;
[0013] 发送模块,用于将所述合并视频帧发送给服务端。
[0014] 第三方面,本公开实施例提供一种直播视频处理设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本公开实施例第一方面提供的所述直播视频处理方法的步骤。
[0015] 第四方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本公开实施例第一方面提供的所述直播视频处理方法的步骤。
[0016] 本公开实施例提供的直播视频处理方法、装置、设备和存储介质,根据采集的当前视频帧和当前视频帧对应的深度图像,生成当前视频帧对应的目标三维模型,对虚拟对象与目标三维模型进行碰撞检测,并渲染碰撞检测结果,以及将渲染结果叠加到当前视频帧中,得到合并视频帧,并将合并视频帧发送给观众端。由于直播过程中能够实时生成当前视频帧对应的目标三维模型,且在生成目标三维模型时,结合了当前视频帧对应的深度图像,使得所生成的目标三维模型保持了准确的物理遮挡关系,为直播互动提供了基础信息,同时,能够实时响应直播过程中所发动的虚拟对象,即能够实时对虚拟对象与目标三维模型进行碰撞检测,并将碰撞检测结果经渲染后叠加到当前视频帧中发送给服务端,以模拟虚拟对象在真实的直播环境下的运动轨迹,使得直播过程中所触发的互动信息能够与直播视频帧结合紧密,互相融合,从而提高了互动信息与直播视频的结合紧密度。

附图说明

[0017] 结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
[0018] 图1为本公开实施例提供的直播视频处理系统的一种结构示意图;
[0019] 图2为本公开实施例提供的直播视频处理方法的一种流程示意图;
[0020] 图3为本公开实施例提供的碰撞检测过程的一种流程示意图;
[0021] 图4为本公开实施例提供的直播视频处理装置的一种结构示意图;
[0022] 图5为本公开实施例提供的直播视频处理设备的一种结构示意图。

具体实施方式

[0023] 下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
[0024] 应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
[0025] 本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
[0026] 需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
[0027] 需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
[0028] 本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
[0029] 本公开实施例提供的直播视频处理方法,可以适用于如图1所示的直播视频处理系统,该系统可以包括主播端10、服务端11和观众端12。其中,主播端10通过摄像头录制视频、拍摄照片、或通过其它方式制作直播画面(即视频帧),然后通过网络发送给服务端11。服务端11用于提供视频直播的后台服务,存储主播端10与各频道之间的对应关系等,当观众端12选择频道后,服务端11可根据各频道与主播端10之间的对应关系,向属于同一频道内的观众端12发送相应的视频数据。这样,主播端11就可以将想要展示的直播画面分享给同一频道内的观众端12。
[0030] 在直播过程中,观众端12可以与主播端10之间进行互动,但是传统的互动方式导致互动信息与直播视频的结合紧密度较低。为此,本公开实施例提供一种直播视频处理的技术方案,旨在解决传统技术中存在的上述技术问题。
[0031] 为使本公开的目的、技术方案和优点更加清楚明白,下文中将结合附图对本公开的实施例进行详细说明。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互任意组合。
[0032] 需要说明的是,下述方法实施例的执行主体可以是直播视频处理装置,该装置可以通过软件、硬件或者软硬件结合的方式实现成为主播端的部分或者全部。可选的,该主播端包括但不限于智能手机、平板电脑、电子书阅读器以及车载终端等。本公开实施例对主播端的具体形式不做限定。下述方法实施例以执行主体是主播端为例进行说明。
[0033] 图2为本公开实施例提供的直播视频处理方法的一种流程示意图。本实施例涉及的是主播端如何对直播视频进行处理的具体过程。如图2所示,该方法可以包括:
[0034] S201、根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型。
[0035] 其中,当前视频帧是指主播端进行直播时在当前时刻所录制的视频帧。通常,当前视频帧为彩色图像,该彩色图像可以是指包括了每个像素点的像素值的图像,在一可选地实施例中,像素值由R(红)、G(绿)、B(蓝)三个分量来表示,每个分量介于(0,255)。上述深度图像是指包括了每个像素点深度信息的图像,这里的深度信息是指采集图像的传感器所在平面与该像素点对应的物体表面之间的距离。上述目标三维模型可以反映主播所在直播场景下的全景空间信息。可选地,目标三维模型可以通过三维点云或者三维网格来表示。
[0036] 在实际应用中,可以利用RGBD相机实时采集主播所在直播场景下的彩色图像和深度图像,且彩色图像和深度图像是经过配准的,因而像素点之间具有一对一的对应关系。可选地,上述RGBD相机可以是主播端中携带的相机,也可以是主播端外接的相机。这样,主播端便可以基于采集的当前视频帧中的颜色信息和深度图像中的深度信息,生成当前视频帧对应的目标三维模型。
[0037] 作为一种可选地实施方式,上述S201的过程可以包括以下步骤:
[0038] S2011、根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成三维点云。
[0039] 其中,在得到当前视频帧和当前视频帧对应的深度图像之后,主播端根据当前视频帧中的颜色信息以及深度图像中对应的深度信息,生成当前视频帧对应的三维点云。
[0040] S2012、对所述三维点云进行语义分割,得到主播所处环境的环境点云和所述主播的人体点云。
[0041] 其中,语义分割可以是指将点云分割为若干个互不重叠的、具有一定语义的点组,同时对这些点组进行语义标注。本质上,语义分割实现的是点级的分类,通过对每个点进行分类,实现整个点云的语义标注。在得到当前视频帧对应的三维点云之后,主播端采用预设的点云分割算法对三维点云进行语义分割,以区分出三维直播场景下哪些点属于环境点云,哪些点属于主播的人体点云。该环境点云可以为三维点云中除了人体点云之外的其它点云,例如,直播场景下构成桌子的点云、构成墙壁的点云或者构成直播货物的点云等。
[0042] 在实际应用中,考虑到直播场景下主播的位置和姿态会随着时间的推移发生变化,而其它一些平面物体(如墙面、地面,桌面等)通常不会随着时间的推移发生变化。因此,为了提高语义分割的效果,可以预先采集空的直播场景的颜色信息和深度信息,基于该空的直播场景的颜色信息和深度信息,确定直播场景中的主要平面信息,并将该主要平面信息作为背景数据。这样,在对当前帧对应的三维点云进行语义分割时,可以结合预采集的背景数据,快速分割出主播的人体点云。其中,上述空的直播场景是指不存在人物的直播场景。
[0043] S2013、分别对所述环境点云和所述人体点云进行重建,得到对应的环境三维模型和人体三维模型。
[0044] 其中,在将三维点云分割为环境点云和人体点云之后,主播端将环境点云连接成面,从而重建出对应的环境三维模型;将人体点云连接成面,从而重建出对应的人体三维模型。
[0045] S2014、将所述环境三维模型和所述人体三维模型确定为所述当前视频帧对应的目标三维模型。
[0046] 对于直播互动的一种场景,在上述实施例的基础上,可选地,主播端可以将当前帧对应的人体点云发送给观众端,以使观众端基于人体点云实现直播特效。
[0047] 其中,在将三维点云分割为环境点云和人体点云之后,主播端将当前帧对应的人体点云通过服务端发送给观众端。观众端对观众场景下的任一平面物体进行扫描,并通过相应的重建算法重建出该平面物体。在观众端接收到人体点云之后,观众端将该人体点云作为直播源放置于该平面物体上,并调整观看角度,使得观众可以自由变换角度观看该直播源,提高了直播互动的趣味性。可选地,观众端可以通过调用增强现实(Augmented Reality,AR)应用来重建所扫描的平面物体。
[0048] S202、对虚拟对象与所述目标三维模型进行碰撞检测,并渲染碰撞检测结果。
[0049] 其中,所述虚拟对象是在直播过程中所触发的,如可以由观众端来触发。虚拟对象是指不属于真实环境中的虚拟的运动物体,观众端可以通过虚拟对象与主播端进行互动。例如,虚拟对象可以为虚拟弹弓、虚拟弓箭、虚拟皮球以及虚拟彩弹等。在直播过程中,观众端可以基于观众的互动操作,触发互动指令,并将该互动指令通过服务端发送给主播端。主播端可以基于互动指令中携带的虚拟对象的信息,和实时生成的目标三维模型的信息,逐帧对处于运动状态的虚拟对象和目标三维模型进行碰撞检测,从而形成具有真实物理感和立体空间感的互动结果。
[0050] 对于当前帧,主播端可以通过预设的碰撞检测算法对虚拟对象与当前视频帧对应的目标三维模型进行碰撞检测,以确定虚拟对象与目标三维模型的碰撞情况,进而可以得到虚拟对象在当前视频帧中的运动信息,如虚拟对象的运动速度、当前位置以及运动方向等。再如,在虚拟对象与目标三维模型发生碰撞后,虚拟对象的运动速度、运动方向以及位置等信息会发生改变,这样,通过对虚拟对象与目标三维模型进行碰撞检测后,主播端能够得到上述信息。在得到碰撞检测结果之后,主播端对碰撞检测结果进行渲染或者绘制,得到渲染结果。可选地,上述碰撞检测算法可以是四维空间交集测试、八叉树空间分割以及层次包围盒等。
[0051] S203、将渲染结果叠加到所述当前视频帧中,得到合并视频帧,并将所述合并视频帧发送给服务端。
[0052] 其中,在得到渲染结果之后,主播端将渲染结果叠加到当前视频帧中,从而形成包含互动结果的合并视频帧,然后将合并视频帧上传至服务端。这样,观众端从服务端中获取直播视频帧,在观众端播放直播视频帧时,便可以形成有物理实感以及空间立体感的画面,提高了直播互动的真实感和用户的沉浸感,即产生比较真实的互动体验。例如,当观众端发动的虚拟对象为虚拟皮球时,该虚拟皮球在碰撞到主播所在直播场景下的墙壁时,该虚拟皮球会发生回弹,从而改变自身的运动状态。
[0053] 这样,在观众端播放直播视频帧时,便可以形成有物理实感以及空间立体感的画面,产生比较真实的互动体验,从而提高了直播互动的趣味性。
[0054] 本公开实施例提供的直播视频处理方法,根据采集的当前视频帧和当前视频帧对应的深度图像,生成当前视频帧对应的目标三维模型,对虚拟对象与目标三维模型进行碰撞检测,并渲染碰撞检测结果,以及将渲染结果叠加到当前视频帧中,得到合并视频帧,并将合并视频帧发送给观众端。由于直播过程中能够实时生成当前视频帧对应的目标三维模型,且在生成目标三维模型时,结合了当前视频帧对应的深度图像,使得所生成的目标三维模型保持了准确的物理遮挡关系,为直播互动提供了基础信息,同时,能够实时响应直播过程中所发动的虚拟对象,即能够实时对虚拟对象与目标三维模型进行碰撞检测,并将碰撞检测结果经渲染后叠加到当前视频帧中发送给服务端,以模拟虚拟对象在真实的直播环境下的运动轨迹,使得直播过程中所触发的互动信息能够与直播视频帧结合紧密,互相融合,从而提高了互动信息与直播视频的结合紧密度。
[0055] 在一个实施例中,还提供了一种对虚拟对象与当前帧对应的目标三维模型进行碰撞检测的具体过程。在上述实施例的基础上,可选地,如图3所示,上述S202中的对虚拟对象与目标三维模型进行碰撞检测的过程可以包括:
[0056] S301、获取虚拟对象在上一视频帧中的运动信息。
[0057] 其中,上述运动信息可以为用于表示该虚拟对象在上一视频帧中的运动状态的信息,其可以包括运动速度以及运动位置等。在直播过程中,主播端实时计算虚拟对象在视频帧中的运动信息并存储计算结果。这样,在对虚拟对象与当前视频帧对应的目标三维模型进行碰撞检测时,主播端直接从存储设备中获取虚拟对象在上一视频帧中的运动信息。
[0058] S302、根据所述运动信息,对所述虚拟对象和所述目标三维模型进行碰撞检测。
[0059] 具体的,在获取到虚拟对象在上一视频帧中的运动信息之后,主播端基于虚拟对象在上一视频帧中的运动信息,通过物理模拟的过程,对处于运动状态的虚拟对象与目标三维模型进行碰撞检测,从而确定该运动的虚拟对象的下一步动向。
[0060] 可选地,上述S302的过程可以包括以下步骤:
[0061] S3021、根据所述运动信息,确定所述虚拟对象在所述当前视频帧中的第一目标运动信息。
[0062] 其中,所述第一目标运动信息为没有发生碰撞情况下所述虚拟对象的运动信息。
[0063] 对于处于运动状态的虚拟对象,虚拟对象的速度改变量可以认为是加速度对时间的积分,虚拟对象的位置改变量可以认为是速度对时间的积分。通常,对于自由运动的虚拟对象来说,其加速度为重力加速度。因此,在获取到虚拟对象在上一视频帧的运动信息之后,主播端可以计算重力加速度对预设时长的积分,从而得到虚拟对象的速度改变量,进而基于速度改变量和虚拟对象在上一视频帧中的运动速度进行求和计算,得到虚拟对象在当前视频帧中的第一运动速度。其中,预设时长为上一视频帧与当前视频帧之间的时间差,第一运动速度是在没有发生碰撞情况下该虚拟对象的运动速度。
[0064] 同时,主播端可以计算虚拟对象在上一视频帧中的运动速度对预设时长的积分,从而得到虚拟对象的位置改变量,进而对位置改变量和虚拟对象在上一视频帧中的运动位置进行求和计算,得到虚拟对象在当前视频帧的第一运动位置。其中,第一运动位置是在没有发生碰撞情况下该虚拟对象的运动位置。
[0065] 在上述实施例的基础上,可选地,在根据当前视频帧和当前视频帧对应的深度图像,生成当前视频帧对应的目标三维模型之前,该方法还包括:主播端接收观众端发送的互动指令,其中,该互动指令中包括虚拟对象的初始运动信息;将初始运动信息作为虚拟对象在直播互动过程中首个视频帧中的运动信息。
[0066] 其中,当上一视频帧为直播互动过程中的首个视频帧时,虚拟对象在上一视频帧中的运动信息为上述初始运动信息。当上一视频帧为直播互动过程中的第二个视频帧时,主播端可以基于初始运动信息,确定虚拟对象在直播互动过程中第二个视频帧中的运动信息。以此类推,主播端可以通过上述过程计算出虚拟对象在上一视频帧中的运动信息。
[0067] S3022、实时检测所述虚拟对象与所述目标三维模型是否发生碰撞。
[0068] 其中,在计算虚拟对象在当前视频帧中的第一运动速度和第一运动位置时,主播端通过预设的碰撞检测算法实时检测虚拟对象与目标三维模型是否发生碰撞。具体的,该碰撞检测过程可以包括粗检测阶段和精细检测阶段,主播端可以通过空间8叉树对虚拟对象和目标三维模型进行粗碰撞检测,以确定虚拟对象与目标三维模型的碰撞概率。当碰撞概率大于预设阈值时,主播端可以通过GJK(Gilbert‑Johnson‑Keerthi Distance Algorithm)算法对虚拟对象和目标三维模型进行精细碰撞检测,从而得到更准确的碰撞检测结果。可以理解的是,这里的碰撞检测包括对虚拟对象与环境三维模型的碰撞检测,也包括对虚拟对象与主播的人体三维模型的碰撞检测。
[0069] 若确定虚拟对象与目标三维模型发生碰撞,则执行S3023,若确定虚拟对象与目标三维模型没有发生碰撞,则执行S3024。
[0070] S3023、基于碰撞结果所对应的运动改变信息对所述第一目标运动信息进行修正,得到所述虚拟对象在所述当前视频帧中的第二目标运动信息,并将所述第二目标运动信息作为所述虚拟对象和所述目标三维模型的碰撞检测结果。
[0071] 其中,运动改变信息可以是指发生碰撞后能够影响虚拟对象运动状态的信息。碰撞问题可以包括碰撞检测和碰撞响应两部分,碰撞检测的目标是发现碰撞并报告,碰撞响应是在碰撞发生后,根据碰撞点和其它参数促使发生碰撞的对象做出正确的动作,以反映真实的动态效果。因此,在确定虚拟对象与目标三维模型发生碰撞后,主播端需要确定虚拟对象所产生的碰撞响应。
[0072] 由于目标三维模型包括环境三维模型和主播的人体三维模型,且上述环境三维模型可以包括多个不同物体的三维模型,如墙面、桌面以及其它物体等。在实际应用中,可以预先为上述每一个三维模型设置对应的运动改变信息,例如,对于墙面三维模型,假设为其所预设的运动改变信息为:以50%的速度回弹、且回弹方向与墙面法线之间的夹角为目标角度。
[0073] 这样,在得到碰撞结果之后,主播端便可以获知虚拟对象与哪个三维模型发生了碰撞,从而可以基于为该三维模型所设置的运动改变信息对第一目标运动信息进行修正,进而得到在发生碰撞情况下虚拟对象在当前视频帧中的第二目标运动信息。其中,该第二目标运行信息可以理解为发生碰撞后虚拟对象所产生的碰撞响应。示例性的,以虚拟对象与墙面三维模型发生碰撞为例,主播端便可以基于为墙面三维模型所设置的速度回弹值和速度回弹方向,以及在没有发生碰撞情况下所确定出的第一目标运动信息,重新确定虚拟对象在当前视频帧中的第二目标运动信息。
[0074] S3024、将所述第一目标运动信息作为所述虚拟对象和所述目标三维模型的碰撞检测结果。
[0075] 在本实施例中,主播端能够结合虚拟对象在上一视频帧中的运动信息,对虚拟对象和当前帧对应的目标三维模型进行碰撞检测,使得碰撞检测符合虚拟对象的物理运动过程,从而保证了所确定的碰撞检测结果的准确性。
[0076] 在实际应用中,为了对碰撞检测结果进行渲染,在上述实施例的基础上,可选地,当前帧对应的目标三维模型包括目标三维网格和目标三维网格对应的透明贴图。通过将目标三维网格对应的贴图设置为透明的,可以确保渲染结果不会影响正常的直播画面。
[0077] 在检测到虚拟对象与目标三维模型发生碰撞的情况下,上述碰撞检测结果还包括:目标三维模型与虚拟对象发生碰撞的碰撞位置。可选地,上述S202中的渲染碰撞检测结果可以包括:根据虚拟对象的颜料信息,对碰撞位置所在的目标三维网格对应的透明贴图进行渲染;根据第二目标运动信息,对虚拟对象进行渲染。
[0078] 其中,观众端可以发动具有颜料信息的虚拟对象,该类虚拟对象在与目标三维模型发生碰撞后,会在目标三维模型上留下碰撞痕迹。为此,主播端接收到的互动指令中还包括虚拟对象的颜料信息。在确定虚拟对象与目标三维模型发生碰撞后,一方面,主播端基于虚拟对象的颜料信息,对碰撞位置所在的目标三维网格对应的透明贴图进行渲染,其它未发生碰撞的网格对应的透明贴图的颜色保持不变,从而将发生碰撞的网格对应的透明贴图的颜色改变为与虚拟对象一致的颜色。另一方面,主播端基于虚拟对象在当前帧中的第二目标运动信息对虚拟对象进行渲染。在得到渲染结果之后,主播端将渲染结果叠加到当前视频帧中。
[0079] 示例性的,假设观众端在直播过程中所发动的虚拟对象为带有颜料的彩弹,这样,观众端向主播端发送的互动指令中包括彩弹的初始运动信息和颜料信息。在接收到互动指令之后,主播端将该初始运动信息作为彩弹在直播互动过程中首个视频帧中的运动信息,并基于该初始运动信息对彩弹进行渲染,将渲染结果叠加到该首个视频帧中,形成首个视频帧对应的合并视频帧并发送给观众端。随着时间的推移,在到达直播互动过程中的第二个视频帧时,主播端基于彩弹在首个视频帧中的运动信息,对彩弹和第二个视频帧对应的目标三维模型进行碰撞检测,从而确定出彩弹在第二个视频帧中的运动信息。在检测到彩弹和第二个视频帧对应的目标三维模型没有发生碰撞时,主播端基于彩弹在第二个视频帧中的运动信息,对彩弹进行渲染,并将渲染结果叠加到该第二个视频帧中,形成第二个视频帧对应的合并视频帧并发送给观众端。在到达直播互动过程中的第三个视频帧时,主播端基于彩弹在第二个视频帧中的运动信息,对彩弹和第三个视频帧对应的目标三维模型进行碰撞检测,从而确定出彩弹在第三个视频帧中的运动信息。在检测到彩弹和第三个视频帧对应的目标三维模型发生碰撞时,主播端基于彩弹在第三个视频帧中的运动信息,对彩弹进行渲染,同时,基于彩弹的颜料信息,对碰撞位置所在目标三维网格对应的透明贴图进行渲染,并将彩弹渲染结果以及透明贴图的渲染结果叠加到第三个视频帧中,形成第三个视频帧对应的合并视频帧并发送给观众端。其中,彩弹渲染结果以及透明贴图的渲染结果位于同一图层。
[0080] 以此类推,主播端便可以模拟出彩弹在直播场景下的运动轨迹。在观众端播放直播视频时,便可以观看到彩弹在直播场景下的运动轨迹,从而提高了直播互动的真实感和用户的沉浸感。
[0081] 在本实施例中,在虚拟对象与目标三维模型发生碰撞后,会对目标三维模型产生碰撞痕迹的情况下,主播端不仅需要对虚拟对象进行渲染,还需要对目标三维模型进行碰撞渲染,使得渲染结果更符合真实情况,提高了渲染结果的准确性。
[0082] 图4为本公开实施例提供的直播视频处理装置的一种结构示意图。如图4所示,该装置可以包括:生成模块401、碰撞检测模块402、渲染模块403、叠加模块404和发送模块405。
[0083] 具体的,生成模块401用于根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型;
[0084] 碰撞检测模块402用于对虚拟对象与所述目标三维模型进行碰撞检测,其中,所述虚拟对象是在直播过程中所触发的;
[0085] 渲染模块403用于渲染碰撞检测结果;
[0086] 叠加模块404用于将渲染结果叠加到所述当前视频帧中,得到合并视频帧;
[0087] 发送模块405用于将所述合并视频帧发送给服务端。
[0088] 本公开实施例提供的直播视频处理装置,根据采集的当前视频帧和当前视频帧对应的深度图像,生成当前视频帧对应的目标三维模型,对虚拟对象与目标三维模型进行碰撞检测,并渲染碰撞检测结果,以及将渲染结果叠加到当前视频帧中,得到合并视频帧,并将合并视频帧发送给观众端。由于直播过程中能够实时生成当前视频帧对应的目标三维模型,且在生成目标三维模型时,结合了当前视频帧对应的深度图像,使得所生成的目标三维模型保持了准确的物理遮挡关系,为直播互动提供了基础信息,同时,能够实时响应直播过程中所发动的虚拟对象,即能够实时对虚拟对象与目标三维模型进行碰撞检测,并将碰撞检测结果经渲染后叠加到当前视频帧中发送给服务端,以模拟虚拟对象在真实的直播环境下的运动轨迹,使得直播过程中所触发的互动信息能够与直播视频帧结合紧密,互相融合,从而提高了互动信息与直播视频的结合紧密度。
[0089] 在上述实施例的基础上,可选地,碰撞检测模块402可以包括获取单元和碰撞检测单元。
[0090] 具体的,获取单元用于获取虚拟对象在上一视频帧中的运动信息;
[0091] 碰撞检测单元用于根据所述运动信息,对所述虚拟对象和所述目标三维模型进行碰撞检测。
[0092] 在上述实施例的基础上,可选地,碰撞检测单元具体用于根据所述运动信息,确定所述虚拟对象在所述当前视频帧中的第一目标运动信息;实时检测所述虚拟对象与所述目标三维模型是否发生碰撞;在检测到虚拟对象与目标三维模型发生碰撞的情况下,基于碰撞结果所对应的运动改变信息对所述第一目标运动信息进行修正,得到所述虚拟对象在所述当前视频帧中的第二目标运动信息,并将所述第二目标运动信息作为所述虚拟对象和所述目标三维模型的碰撞检测结果;在检测到虚拟对象与目标三维模型没有发生碰撞的情况下,则将所述第一目标运动信息作为所述虚拟对象和所述目标三维模型的碰撞检测结果,其中,所述第一目标运动信息为没有发生碰撞情况下所述虚拟对象的运动信息。
[0093] 可选地,所述目标三维模型包括目标三维网格和所述目标三维网格对应的透明贴图。
[0094] 可选地,在检测到所述虚拟对象与所述目标三维模型发生碰撞的情况下,所述碰撞检测结果还包括:所述目标三维模型与所述虚拟对象发生碰撞的碰撞位置;
[0095] 对应地,渲染模块403具体用于根据所述虚拟对象的颜料信息,对所述碰撞位置所在的目标三维网格对应的透明贴图进行渲染;根据所述第二目标运动信息,对所述虚拟对象进行渲染。
[0096] 在上述实施例的基础上,可选地,该装置还包括:接收模块和确定模块。
[0097] 具体的,接收模块用于在生成模块401根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型之前,接收观众端发送的互动指令,其中,所述互动指令中包括虚拟对象的初始运动信息;
[0098] 确定模块用于将所述初始运动信息作为所述虚拟对象在直播互动过程中首个视频帧中的运动信息。
[0099] 在上述实施例的基础上,可选地,生成模块401具体用于根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成三维点云;对所述三维点云进行语义分割,得到主播所处环境的环境点云和所述主播的人体点云;分别对所述环境点云和所述人体点云进行重建,得到对应的环境三维模型和人体三维模型;将所述环境三维模型和所述人体三维模型确定为所述当前视频帧对应的目标三维模型。
[0100] 在上述实施例的基础上,可选地,发送模块405还用于将所述人体点云发送给所述观众端,以使所述观众端基于所述人体点云实现直播特效。
[0101] 下面参考图5,其示出了适于用来实现本公开实施例的电子设备500(即上述实施例中的主播端)的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0102] 如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储装置506加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有电子设备
500操作所需的各种程序和数据。处理装置501、ROM 502以及RAM503通过总线504彼此相连。
输入/输出(I/O)接口505也连接至总线604。
[0103] 通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置509;包括例如磁带、硬盘等的存储装置506;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
[0104] 特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置506被安装,或者从ROM 502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。
[0105] 需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
[0106] 在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText Transfer Protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
[0107] 上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
[0108] 上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。
[0109] 或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。
[0110] 可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0111] 附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0112] 描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
[0113] 本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
[0114] 在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD‑ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0115] 在一个实施例中,还提供一种直播视频处理设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0116] 根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型;
[0117] 对虚拟对象与所述目标三维模型进行碰撞检测,并渲染碰撞检测结果,其中,所述虚拟对象是在直播过程中所触发的;
[0118] 将渲染结果叠加到所述当前视频帧中,得到合并视频帧,并将所述合并视频帧发送给服务端。
[0119] 在一个实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0120] 根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型;
[0121] 对虚拟对象与所述目标三维模型进行碰撞检测,并渲染碰撞检测结果,其中,所述虚拟对象是在直播过程中所触发的;
[0122] 将渲染结果叠加到所述当前视频帧中,得到合并视频帧,并将所述合并视频帧发送给服务端。
[0123] 上述实施例中提供的直播视频处理装置、设备以及存储介质可执行本公开任意实施例所提供的直播视频处理方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本公开任意实施例所提供的直播视频处理方法。
[0124] 根据本公开的一个或多个实施例,提供一种直播视频处理方法,包括:
[0125] 根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成所述当前视频帧对应的目标三维模型;
[0126] 对虚拟对象与所述目标三维模型进行碰撞检测,并渲染碰撞检测结果,其中,所述虚拟对象是在直播过程中所触发的;
[0127] 将渲染结果叠加到所述当前视频帧中,得到合并视频帧,并将所述合并视频帧发送给服务端。
[0128] 根据本公开的一个或多个实施例,提供了如上的直播视频处理方法,还包括:获取虚拟对象在上一视频帧中的运动信息;根据所述运动信息,对所述虚拟对象和所述目标三维模型进行碰撞检测。
[0129] 根据本公开的一个或多个实施例,提供了如上的直播视频处理方法,还包括:根据所述运动信息,确定所述虚拟对象在所述当前视频帧中的第一目标运动信息;实时检测所述虚拟对象与所述目标三维模型是否发生碰撞;若是,则基于碰撞结果所对应的运动改变信息对所述第一目标运动信息进行修正,得到所述虚拟对象在所述当前视频帧中的第二目标运动信息,并将所述第二目标运动信息作为所述虚拟对象和所述目标三维模型的碰撞检测结果;若否,则将所述第一目标运动信息作为所述虚拟对象和所述目标三维模型的碰撞检测结果,其中,所述第一目标运动信息为没有发生碰撞情况下所述虚拟对象的运动信息。
[0130] 可选地,所述目标三维模型包括目标三维网格和所述目标三维网格对应的透明贴图。
[0131] 可选地,在检测到所述虚拟对象与所述目标三维模型发生碰撞的情况下,所述碰撞检测结果还包括:所述目标三维模型与所述虚拟对象发生碰撞的碰撞位置;
[0132] 对应地,所述渲染碰撞检测结果,包括:根据所述虚拟对象的颜料信息,对所述碰撞位置所在的目标三维网格对应的透明贴图进行渲染;根据所述第二目标运动信息,对所述虚拟对象进行渲染。
[0133] 根据本公开的一个或多个实施例,提供了如上的直播视频处理方法,还包括:接收观众端发送的互动指令,其中,所述互动指令中包括虚拟对象的初始运动信息;将所述初始运动信息作为所述虚拟对象在直播互动过程中首个视频帧中的运动信息。
[0134] 根据本公开的一个或多个实施例,提供了如上的直播视频处理方法,还包括:根据采集的当前视频帧和所述当前视频帧对应的深度图像,生成三维点云;对所述三维点云进行语义分割,得到主播所处环境的环境点云和所述主播的人体点云;分别对所述环境点云和所述人体点云进行重建,得到对应的环境三维模型和人体三维模型;将所述环境三维模型和所述人体三维模型确定为所述当前视频帧对应的目标三维模型。
[0135] 根据本公开的一个或多个实施例,提供了如上的直播视频处理方法,还包括:将所述人体点云发送给所述观众端,以使所述观众端基于所述人体点云实现直播特效。
[0136] 以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
[0137] 此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
[0138] 尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。