一种回放录制视频的方法及装置
技术领域
本发明涉及虚拟现实技术领域,尤其涉及一种回放录制视频的方法及装置。
背景技术
三维图形技术已经广泛应用在场景制作、虚拟仿真、城市规划、房地产开发、文物展示、虚拟教育、交通设计和3D游戏等各个方面,其中决定着三维图形应用程序质量的是三维图形引擎,它是将三维图形应用程序所需的底层数据结构和算法抽象为一个完整的程序框架,为三维开发人员提供便捷的开发接口。
对于三维开发人员可以实现待录制物体的运行参数信息(例如摄像机位移、旋转和缩放等)的录制和回放功能,当用户需要录制和回放包含待录制物体的运行参数信息对应的视频时,用户需要将上述需求告知三维开发人员,由三维开发人员通过三维图形引擎实现,用户无法在用户侧自行实现上述功能,给用户在录制和回放上述视频的过程中带来诸多不便。
发明内容
针对现有技术存在的问题,本发明实施例提供一种回放录制视频的方法及装置。
本发明实施例提供一种回放录制视频的方法,包括:
加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应;
添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频;所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。
其中,所述三维图形引擎为Unity;相应的,所述添加所述运行参数信息至三维图形引擎中,包括:
添加所述运行参数信息至所述Unity的AnimationCurve中。
其中,在所述添加所述运行参数信息至所述Unity的AnimationCurve中的步骤之后,所述方法还包括:
通过调用预先创建的AnimationClip的SetCurve函数将添加有所述运行参数信息的AnimationCurve添加至所述AnimationClip中。
其中,所述利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频,包括:
通过在所述Unity中预先创建的Timeline表示所述帧图像对应时刻,并根据所述Timeline更新所述运行参数信息,以实现回放录制视频。
其中,所述根据所述Timeline更新所述运行参数信息,包括:
通过所述Timeline的ProcessFrame函数调用AnimatonClip的SampleAnimation函数实现更新所述运行参数信息。
其中,所述待录制物体的运行参数信息的预先录制,包括:
根据所述待录制物体的类型,将所述运行参数信息与所述类型相对应的配置文件进行绑定;
根据各帧图像的时间间隔,存储所述运行参数信息至所述配置文件。
其中,所述方法还包括:
根据所述运行参数信息的通用程度对所述运行参数信息进行分类;
分别存储不同分类的运行参数信息至相应的配置文件。
本发明实施例提供一种回放录制视频的装置,包括:
加载单元,用于加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应;
回放单元,用于添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频;所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。
本发明实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,
所述处理器执行所述计算机程序时实现如下方法步骤:
加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应;
添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频;所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应;
添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。
本发明实施例提供的回放录制视频的方法及装置,通过加载和添加预先录制的待录制物体的运行参数信息至三维图形引擎,并利用三维图形引擎根据帧图像对应时刻的运行参数信息回放录制视频,使得用户方便自主回放包含待录制物体的运行参数信息对应的视频。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明回放录制视频的方法实施例流程图;
图2(a)~图2(b)为本发明基于运行参数信息回放录制视频的示意图;
图3(a)~图3(b)为本发明未使用运行参数信息回放录制视频的示意图;
图4为本发明回放录制视频的装置实施例结构示意图;
图5为本发明实施例提供的电子设备实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明回放录制视频的方法实施例流程图,如图1所示,本发明实施例提供的一种回放录制视频的方法,包括以下步骤:
S101:加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应。
具体的,装置加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应。装置可以是执行上述方法的计算机设备,例如可以是用户使用的笔记本电脑。待录制物体可以包括摄像机和无人机等可运动设备,以摄像机为例,运行参数信息可以包括摄像机位移、旋转和缩放等。
可以理解的是,回放的录制视频是由帧图像组成的,各帧图像的时间间隔的可以根据实际情况自主设置,可选为30ms。
以运行参数信息为摄像机位置(随时间变化的摄像机位置即为上述摄像机位移)为例,例如当前播放时刻为00:00:10,从该时刻开始录制摄像机位置,则此时对应的时刻t1的摄像机位置为C1、30ms后对应的时刻t2的摄像机位置为C2、以此类推,在时刻tn的摄像机位置为Cn。
S102:添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频;所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。
具体的,装置添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频;所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。三维图形引擎可以包括Unity,不做具体限定。
其中,添加所述运行参数信息至三维图形引擎中,具体包括:添加所述运行参数信息至所述Unity的AnimationCurve中。AnimationCurve,即动画曲线信息,通过使用AnimationCurve可以实现一些简单的动画编辑,让物体能够实现规则或者不规则运动,上述物体可以是摄像机拍摄的拍摄对象。
进一步地,在所述添加所述运行参数信息至所述Unity的AnimationCurve中的步骤之后,所述方法还包括:通过调用预先创建的AnimationClip的SetCurve函数将添加有所述运行参数信息的AnimationCurve添加至所述AnimationClip中。AnimationClip即是Unity自定义的动作信息保存结构,SetCurve函数即是设定曲线函数。
其中,利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频,具体包括:通过在所述Unity中预先创建的Timeline表示所述帧图像对应时刻,并根据所述Timeline更新所述运行参数信息,以实现回放录制视频。Timeline即是时间线,在更新运行参数信息之后,可以调用Timeline的Play函数,就可以实现对预先录制的、包含运行参数信息的录制视频进行回放。图2(a)~图2(b)为本发明基于运行参数信息回放录制视频的示意图,图2(a)~图2(b)实现了录制视频的图像内容的展示方式跟随运行参数信息的变化进行实时变化。
图3(a)~图3(b)为本发明未使用运行参数信息回放录制视频的示意图;通过对比图2(a)~图2(b)和图3(a)~图3(b),可以发现,图2(a)~图2(b)的用户侵入感更强,视觉体验更逼真。
进一步地,所述根据所述Timeline更新所述运行参数信息,具体包括:
通过所述Timeline的ProcessFrame函数调用AnimatonClip的SampleAnimation函数实现更新所述运行参数信息。ProcessFrame函数即是帧处理函数,SampleAnimation函数即是动画采样函数。
本发明实施例提供的回放录制视频的方法,通过加载和添加预先录制的待录制物体的运行参数信息至三维图形引擎,并利用三维图形引擎根据帧图像对应时刻的运行参数信息回放录制视频,使得用户方便自主回放包含待录制物体的运行参数信息对应的视频。
在上述实施例的基础上,所述三维图形引擎为Unity;相应的,所述添加所述运行参数信息至三维图形引擎中,包括:
具体的,装置添加所述运行参数信息至所述Unity的AnimationCurve中。可参照上述说明,不再赘述。
本发明实施例提供的回放录制视频的方法,进一步在Unity中使得用户方便自主回放包含待录制物体的运行参数信息对应的视频。
在上述实施例的基础上,在所述添加所述运行参数信息至所述Unity的AnimationCurve中的步骤之后,所述方法还包括:
通过调用预先创建的AnimationClip的SetCurve函数将添加有所述运行参数信息的AnimationCurve添加至所述AnimationClip中。可参照上述说明,不再赘述。
本发明实施例提供的回放录制视频的方法,能够将预先录制的运行参数信息与Unity进行适配。
在上述实施例的基础上,所述利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频,包括:
具体的,装置通过在所述Unity中预先创建的Timeline表示所述帧图像对应时刻,并根据所述Timeline更新所述运行参数信息,以实现回放录制视频。可参照上述说明,不再赘述。
本发明实施例提供的回放录制视频的方法,能够实时更新运行参数信息,进而使得录制视频回放的视觉体验更逼真。
在上述实施例的基础上,所述根据所述Timeline更新所述运行参数信息,包括:
具体的,装置通过所述Timeline的ProcessFrame函数调用AnimatonClip的SampleAnimation函数实现更新所述运行参数信息。可参照上述说明,不再赘述。
本发明实施例提供的回放录制视频的方法,进一步实时更新运行参数信息,进而使得录制视频回放的视觉体验更逼真。
在上述实施例的基础上,所述待录制物体的运行参数信息的预先录制,包括:
具体的,装置根据所述待录制物体的类型,将所述运行参数信息与所述类型相对应的配置文件进行绑定;参照上述说明,待录制物体的类型可以分为摄像机和无人机,将与摄像机对应的运行参数信息与对应摄像机的配置文件C进行绑定;将与无人机对应的运行参数信息与对应无人机的配置文件D进行绑定。
需要说明的是:可以将摄像机对应的若干类运行参数信息都与配置文件C进行绑定;可以将无人机对应的若干类运行参数信息都与配置文件D进行绑定。
具体的,装置根据各帧图像的时间间隔,存储所述运行参数信息至所述配置文件。参照上述关于摄像机的举例说明,每间隔30ms存储一次摄像机位置,对于若干类运行参数信息的情况,每间隔30ms存储一次摄像机位置、旋转角度和缩放比例。
本发明实施例提供的回放录制视频的方法,能够不依赖Unity实现待录制物体的运行参数信息的预先录制,进一步保证用户方便进行运行参数信息录制。
在上述实施例的基础上,所述方法还包括:
具体的,装置根据所述运行参数信息的通用程度对所述运行参数信息进行分类;例如位移、旋转和缩放等为通用程度较高的通用信息,将这类运行参数信息分为一类;灯光的颜色和摄影机的景深等为通用程度较低的独有信息,将这类运行参数信息分为另一类。
具体的,装置分别存储不同分类的运行参数信息至相应的配置文件。即将通用信息存储至一类配置文件,将独有信息存储至另一类配置文件。
本发明实施例提供的回放录制视频的方法,通过分别存储不同分类的运行参数信息至相应的配置文件,便于开发人员维护开发程序,提高后续工作效率。
进一步对本发明实施例作出说明如下:
用户可以先进行录制待录制物体的运行参数信息,再进行回放录制视频。
用户在产品运行时,选中待录制物体,添加到时间线上。开始录制后,每一帧记录一次待录制物体的运行参数信息,在录制完成后,运行参数信息(即位移等)保存成gltf文件,帧图像对应的时刻(即Timeline)保存成yaml文件后,统一压缩成一个文件NationalCadillacArenaCentre.pack。加载时,根据Timeline和运行参数信息创建新的Timeline,然后使用系统的播放功能回放录制视频。
录制步骤具体如下:
1.选中待录制物体,使用Unity中的时间线添加函数,添加到Timeline上,待录制物体可以包括摄像机和无人机。
2.调用自主开发的录制模块AnimationData,先进行数据绑定,把待录制物体的运行参数信息与配置文件进行绑定。以摄像机为例,待录制物体的运行参数信息为视角、位姿信息等。将视角、位姿信息等与配置文件进行绑定,即建立视角、位姿信息等与配置文件gltf文件1的对应关系。不同类型的待录制物体对应不同的配置文件。
3.在开始录制后,每一帧图像对上面绑定的运行参数信息做一次快照,存储待录制物体的运行参数信息,包括位移、旋转和缩放等通用信息,以及灯光的颜色和摄影机的景深等独有信息。
4.在录制完成后,把预先保存的运行参数信息,通过SerizlizeRecordAsGLTF函数,保存成gltf文件,独有信息会通过gltf扩展模块进行单独保存。
录制既可以对单个待录制物体进行录制,也可以针对多个待录制物体一起录制,也可以针对之前录制的一整段信息中的某一部分信息重新录制覆盖形成一段新的信息备份。
5.将上述gltf文件、gltf扩展模块和yaml文件压缩后保存到文件NationalCadillacArenaCentre.pack后,录制行为完成。
回放步骤如下:
1.用户选中之前保存好的NationalCadillacArenaCentre.pack文件,点击打开按钮。
2.加载NationalCadillacArenaCentre.pack文件,文件会被解压缩后,形成时间线的保存文件yaml文件和运行参数信息的保存文件gltf文件,将待录制物体添加到时间线上。
3.添加所述运行参数信息至所述Unity的AnimationCurve中,通过调用预先创建的AnimationClip的SetCurve函数将添加有所述运行参数信息的AnimationCurve添加至所述AnimationClip中。
创建AnimatonClip对象,需要将此对象的legacy属性设置为true。具体通过下述代码实现:
4.通过预先创建的Timeline的ProcessFrame函数调用AnimatonClip的SampleAnimation函数,根据Timeline更新运行参数信息。这样已完成录制的物体就会在场景里面回放之前保存的运行参数信息。具体实现方式可以通过如下代码实现:
5.调用Timeline的Play函数,就可以实现对预先录制的、包含运行参数信息的录制视频进行回放。
图4为本发明回放录制视频的装置实施例结构示意图,如图4所示,本发明实施例提供了一种回放录制视频的装置,包括加载单元401和回放单元402,其中:
加载单元401用于加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应;回放单元402用于添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频;所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。
具体的,加载单元401用于加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应;回放单元402用于添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频;所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。
本发明实施例提供的回放录制视频的装置,通过加载和添加预先录制的待录制物体的运行参数信息至三维图形引擎,并利用三维图形引擎根据帧图像对应时刻的运行参数信息回放录制视频,使得用户方便自主回放包含待录制物体的运行参数信息对应的视频。
本发明实施例提供的回放录制视频的装置具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图5为本发明实施例提供的电子设备实体结构示意图,如图5所示,所述电子设备包括:处理器(processor)501、存储器(memory)502和总线503;
其中,所述处理器501、存储器502通过总线503完成相互间的通信;
所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应;添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频;所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应;添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频;所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:加载预先录制的待录制物体的运行参数信息;所述运行参数信息与帧图像对应的时刻分别对应;添加所述运行参数信息至三维图形引擎中,并利用所述三维图形引擎根据所述帧图像对应时刻的运行参数信息回放录制视频;所述录制视频的图像内容的展示方式跟随所述运行参数信息的变化进行实时变化。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。