本发明涉及图片合成视频技术领域,尤其是涉及一种多张照片合成视频的方法和装置。
背景技术:
随着移动互联网以及移动手机的快速发展,手机用户拍摄、编辑、制作个性化视频以及在社交平台上分享视频的需求越来越多样化,各种基于使用多张照片合成视频的应用也越来越多。但是,目前的现有技术,合成视频的方法和算法单调,仅仅是把简单的用户一维静态图展示在视频中,视频中缺少必要的图片动画以及图片彼此之间的转化切换。如果在现有的技术方案上,在视频中添加图片动画以及转化切换,会导致繁琐,算法重复,用户合成的视频风格不仅单调,场景单一,图片之间的契合不流畅,且适用性较低,针对不同内容的照片,效果较差。
技术实现要素:
针对现有的技术缺陷,本发明的实施例提供一种多张照片合成视频的方法和装置,可以批量的创造不同视频动画和转换的效果,适用性强,满足用户个性化和多样化的需求。
本发明提供一种多张照片合成视频的方法,该方法包括:
解析素材视频的序列帧,读取数据配置文件,按照播放速度逐帧读取视频帧,得到每一帧动画的图片,分别提取rgb通道和alpha通道得到两张png图片;
所述每一帧图片对应的两张png图片,左右拼接在一起,生成新的序列帧,所述新的序列帧生成的模板视频;
读取所述模板视频,获得预留的图片底层的转换动画信息,得到xml配置文件数据。
进一步的,所述动画包括,图片出现以及消失的时间,每个时间节点图片的旋转与缩放信息,图片的动画路径和贝塞尔控制点,通过配置关键帧的信息,使用贝塞尔曲线插值获得中间帧的信息。
基于opengl处理得到视频帧的纹理,得到模板视频帧纹理。
用户上传需要合成的照片,获取带合成照片纹理,并按照顺序排列,将照片纹理与模板视频帧纹理合成根据所述动画信息和xml配置文件数据,进行常规混合处理,生成视频帧纹理,并根据解码序号,进行编码合成视频。
进一步的,每一帧合成画面由两个图层混合,顶层图层对应的是模板视频帧纹理,底层图层对应的图像是用户选择的照片纹理
优选的,本发明公布一种多张照片合成视频的装置,该装置包括:
解析模块:解析素材视频的序列帧,读取数据配置文件,按照播放速度逐帧读取视频帧,得到每一帧动画的图片,分别提取rgb通道和alpha通道得到两张png图片。
合并模块:用于所述每一帧图片对应的两张png图片,左右拼接在一起,生成新的序列帧,所述新的序列帧生成的模板视频。
数据采集模块:用于读取所述模板视频,获得预留的图片底层的转换动画信息,得到xml配置文件数据。
进一步的,所述动画包括,图片出现以及消失的时间,每个时间节点图片的旋转与缩放信息,图片的动画路径和贝塞尔控制点,通过配置关键帧的信息,使用贝塞尔曲线插值获得中间帧的信息。
纹理采集模块:基于opengl处理得到视频帧的纹理,得到模板视频帧纹理。
合成视频模块:用户上传需要合成的图片,获取带合成图片纹理,并按照顺序排列,将图片纹理与模板视频帧纹理合成根据所述动画信息和xml配置文件数据,进行常规混合处理,生成视频帧纹理,并根据解码序号,进行编码合成视频。
本发明公开一种多张照片合成视频的方法和装置,引入了模板配置文件和模板视频,模板配置文件与模板视频一一对应。模板配置文件中定义了生成照片视频中对应帧应该选取哪一张用户选择的照片作为生成视频的底层图层,还定义了这张底图的摆放位置、缩放比率、透明度等渲染这张照片所需的信息。模板视频包含了生成照片视频需要的所有顶层图层。通过模板配置文件渲染出底层图层,模板视频获取顶层图层,合成底层图层和顶层图片最终渲染出照片视频中的每一帧图像。该方案节省内存空间,可以批量创造不同视频动画和转换效果的视频。
附图说明
图1示出了本发明的一种多张照片合成视频的方法流程图;
图2示出了本发明的一种多张照片合成视频的装置流程图。
具体实施方式
本发明提供一种多张照片合成视频的方法,参照图1,对本发明实施方法做详细说明。
步骤s1:解析素材视频的序列帧,读取数据配置文件,按照播放速度逐帧读取视频帧,得到每一帧动画的图片,分别提取rgb通道和alpha通道得到两张png图片。
步骤s2:所述每一帧图片对应的两张png图片,左右拼接在一起,生成新的序列帧,所述新的序列帧生成的模板视频。
上述解码图片的拼接,是为了保留用户素材视频中的alpha通道。
步骤s3:读取所述模板视频,获得预留的图片底层的转换动画信息,得到xml配置文件数据。
步骤s4:基于opengl处理得到视频帧的纹理,得到模板视频帧纹理。
步骤s5:用户上传需要合成的照片,获取带合成照片纹理,并按照顺序排列,将照片纹理与模板视频帧纹理合成根据所述动画信息和xml配置文件数据,进行常规混合处理,生成视频帧纹理,并根据解码序号,进行编码合成视频。
进一步的,每一帧画面由两个图层合成,顶层图层对应的是模板视频帧纹理,底层图层对应的图像是用户选择的照片纹理。
如步骤s3所述动画包括,图片出现以及消失的时间,每个时间节点图片的旋转与缩放信息,图片的动画路径和贝塞尔控制点,通过配置关键帧的信息,使用贝塞尔曲线插值获得中间帧的信息。
通过视频序列帧以及aftereffect软件bodymovin插件导出的json文件,确定视频中的预留图片层的转换动画信息,包括图片出现以及消失的时间,每个时间点图片的旋转与缩放信息。
优选的,如图2所示,本发明公布一种多张照片合成视频的装置,该装置包括:
解析模块:用于解析素材视频的序列帧,读取数据配置文件,按照播放速度逐帧读取视频帧,得到每一帧动画的图片,分别提取rgb通道和alpha通道得到两张png图片。
合并模块:用于所述每一帧图片对应的两张png图片,左右拼接在一起,生成新的序列帧,所述新的序列帧生成的模板视频。
数据采集模块:用于读取所述模板视频,获得预留的图片底层的转换动画信息,得到xml配置文件数据。
进一步的,所述动画包括,图片出现以及消失的时间,每个时间节点图片的旋转与缩放信息,图片的动画路径和贝塞尔控制点,通过配置关键帧的信息,使用贝塞尔曲线插值获得中间帧的信息。
纹理采集模块:基于opengl处理得到视频帧的纹理,得到模板视频帧纹理。
合成视频模块:用户上传需要合成的照片,获取带合成照片纹理,并按照顺序排列,将照片纹理与模板视频帧纹理合成根据所述动画信息和xml配置文件数据,进行常规混合处理,生成视频帧纹理,并根据解码序号,进行编码合成视频。
将上述视频渲染到屏幕或通过移动平台的视频写入到api保存视频到用户设备中。
本视频合成技术中,模板视频,模板配置文件和上述装置框架,把生成的视频的每一帧画面由两个图层合成,顶层图层对应的图像就是模板视频帧,底层图层对应的图像是用户选择的照片。
本发明公开一种多张照片合成视频的方法和装置,引入了模板配置文件和模板视频,模板配置文件与模板视频一一对应。模板配置文件中定义了生成照片视频中对应帧应该选取哪一张用户选择的照片作为生成视频的底层图层,还定义了这张底图的摆放位置、缩放比率、透明度等渲染这张照片所需的信息。模板视频包含了生成照片视频需要的所有顶层图层。通过模板配置文件渲染出底层图层,模板视频获取顶层图层,合成底层图层和顶层图片最终渲染出照片视频中的每一帧图像。该方案节省内存空间,可以批量创造不同视频动画和转换效果的视频。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
1.一种多张照片合成视频的方法,该方法包括:
解析素材视频的序列帧,读取数据配置文件,按照播放速度逐帧读取视频帧,得到每一帧动画的图片,分别提取rgb通道和alpha通道得到两张png图片;
所述每一帧图片对应的两张png图片,左右拼接在一起,生成新的序列帧,所述新的序列帧生成的模板视频;
读取所述模板视频,获得预留的图片底层的转换动画信息,得到xml配置文件数据;
基于opengl处理得到视频帧的纹理,得到模板视频帧纹理;
用户上传需要合成的照片,获取带合成照片纹理,并按照顺序排列,将照片纹理与模板视频帧纹理合成根据所述动画信息和xml配置文件数据,进行常规混合处理,生成视频帧纹理,并根据解码序号,进行编码合成视频。
2.如权利要求1所述一种多张照片合成视频的方法,其特征在于,所述动画包括,图片出现以及消失的时间,每个时间节点图片的旋转与缩放信息,图片的动画路径和贝塞尔控制点,通过配置关键帧的信息,使用贝塞尔曲线插值获得中间帧的信息。
3.如权利要求1所述一种多张照片合成视频的方法,其特征在于,所述合成视频中,每一帧的画面由两个图层合成,顶层图层对应的是模板视频帧纹理,底层图层对应的图像是用户选择的照片纹理。
4.一种多张照片合成视频的装置,该装置包括:
解析模块:用于解析素材视频的序列帧,读取数据配置文件,按照播放速度逐帧读取视频帧,得到每一帧动画的图片,分别提取rgb通道和alpha通道得到两张png图片;
合并模块:用于所述每一帧图片对应的两张png图片,左右拼接在一起,生成新的序列帧,所述新的序列帧生成的模板视频;
数据采集模块:用于读取所述模板视频,获得预留的图片底层的转换动画信息,得到xml配置文件数据;
纹理采集模块:基于opengl处理得到视频帧的纹理,得到模板视频帧纹理。
合成视频模块:用户上传需要合成的图片,获取带合成图片纹理,并按照顺序排列,将图片纹理与模板视频帧纹理合成根据所述动画信息和xml配置文件数据,进行常规混合处理,生成视频帧纹理,并根据解码序号,进行编码合成视频。
技术总结