CN111193876A - 视频中添加特效的方法及装置 - Google Patents

视频中添加特效的方法及装置 Download PDF

Info

Publication number
CN111193876A
CN111193876A CN202010019167.8A CN202010019167A CN111193876A CN 111193876 A CN111193876 A CN 111193876A CN 202010019167 A CN202010019167 A CN 202010019167A CN 111193876 A CN111193876 A CN 111193876A
Authority
CN
China
Prior art keywords
video
frame
animation
file
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010019167.8A
Other languages
English (en)
Other versions
CN111193876B (zh
Inventor
齐国鹏
陈仁健
傅彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010019167.8A priority Critical patent/CN111193876B/zh
Publication of CN111193876A publication Critical patent/CN111193876A/zh
Application granted granted Critical
Publication of CN111193876B publication Critical patent/CN111193876B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/2621Cameras specially adapted for the electronic generation of special effects during image pickup, e.g. digital cameras, camcorders, video cameras having integrated special effects capability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明提供了一种视频中添加特效的方法及装置;方法包括:获取视频文件、及用于为所述视频文件添加至少一个特效的动画文件;对所述视频文件进行解码,得到所述视频文件的多个视频帧的帧数据,并对所述动画文件进行解码,得到所述动画文件的多个动画帧的帧数据,所述视频帧与所述动画帧存在一一对应关系;模拟图形处理器,并运行模拟的所述图形处理器;分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,通过模拟的所述图形处理器进行动画渲染,以得到多个目标视频帧;基于所述多个目标视频帧进行视频合成,得到添加有所述至少一个特效的目标视频文件。通过本发明,能够解决低端手机进行动画渲染存在卡顿的问题,实现批量生产特效视频。

Description

视频中添加特效的方法及装置
技术领域
本发明涉及视频处理技术,尤其涉及一种视频中添加特效的方法及装置。
背景技术
随着短视频行业的蓬勃发展,对于批量、大规模地生产特效视频的需求变得越来越强烈。
相关技术中,Airbnb开源的Lottie方案能够实现动画设计到终端呈现的工作流,即设计师通过图形视频处理软件设计动画,如通过AE(Adobe After Effects)设计动画,设计的动画通过导出插件导出,并在终端通过软件开发工具包(SDK,Software DevelopmentKit)加载渲染,然而,由于一些用户使用的手机性能相对较弱,若视频的动画渲染,即在视频中添加特效的操作在终端执行,会存在卡顿等问题。
发明内容
本发明实施例提供一种视频中添加特效的方法及装置,能够避免由终端进行动画渲染导致的卡顿。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种视频中添加特效的方法,包括:
获取视频文件、及用于为所述视频文件添加至少一个特效的动画文件;
对所述视频文件进行解码,得到所述视频文件的多个视频帧的帧数据,并对所述动画文件进行解码,得到所述动画文件的多个动画帧的帧数据,所述视频帧与所述动画帧存在一一对应关系;
模拟图形处理器,并运行模拟的所述图形处理器;
分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,通过模拟的所述图形处理器进行动画渲染,以得到多个目标视频帧;
基于所述多个目标视频帧进行视频合成,得到添加有所述至少一个特效的目标视频文件。
本发明实施例提供一种视频中添加特效的装置,包括:
获取模块,用于获取视频文件、及用于为所述视频文件添加至少一个特效的动画文件;
解码模块,用于对所述视频文件进行解码,得到所述视频文件的多个视频帧的帧数据,并对所述动画文件进行解码,得到所述动画文件的多个动画帧的帧数据,所述视频帧与所述动画帧存在一一对应关系;
模拟模块,用于模拟图形处理器,并运行模拟的所述图形处理器;
渲染模块,用于分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,通过模拟的所述图形处理器进行动画渲染,以得到多个目标视频帧;
合成模块,用于基于所述多个目标视频帧进行视频合成,得到添加有所述至少一个特效的目标视频文件。
上述方案中,所述解码模块,还用于对所述视频文件进行解封装,得到视频文件中的视频流数据;
对所述视频流数据进行解码,得到多个视频帧的帧数据;
对所述多个视频帧的帧数据进行格式转换,得到可渲染的数据格式的帧数据。
上述方案中,所述解码模块,还用于将所述多个视频帧的帧数据的数据格式,从亮度-色度YUV数据格式转换为红-绿-蓝-透明度RGBA数据格式。
上述方案中,所述解码模块,还用于对所述动画文件进行解码,得到动画文件的关键帧的帧数据及多个非关键帧的帧数据;
其中,所述关键帧的帧数据为位图数据,所述非关键帧的帧数据为相对于所述关键帧的差异位图数据。
上述方案中,所述渲染模块,还用于模拟开放式图形库的环境;
基于模拟的开放式图形库的环境,创建二维图形库的环境;
基于所述二维图形库的环境,通过模拟的所述图形处理器,调用图形绘制接口,分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,进行动画渲染,以得到渲染后的多个目标视频帧。
上述方案中,所述渲染模块,还用于对每个视频帧的帧数据及相应的动画帧的帧数据执行以下操作:
基于所述视频帧的帧数据,通过模拟的所述图形处理器,在空白画布中绘制对应所述视频帧的第一图形;
获取所述视频帧对应的动画帧的第一位置信息;
基于所述动画帧的帧数据,通过模拟的所述图形处理器,在绘制有所述第一图形的画布上对应所述第一位置信息的位置,绘制对应所述动画帧的第二图形,得到承载有对应所述目标视频帧的图形的画布。
上述方案中,所述渲染模块,还用于对每个视频帧的帧数据及相应的动画帧的帧数据分别执行以下操作:
基于所述动画帧的帧数据,通过模拟的所述图形处理器,在空白画布中绘制对应所述动画帧的第三图形;
获取所述动画帧对应的视频帧的第二位置信息;
基于所述视频帧的帧数据,通过模拟的所述图形处理器,在绘制有所述第三图形的画布上对应所述第二位置信息的位置,绘制对应所述视频帧的第四图形,得到承载有对应所述目标视频帧的图形的画布。
上述方案中,所述装置还包括:
截屏模块,用于对渲染得到的多个画布进行截屏处理,得到所述多个目标视频帧;
对所述多个目标视频帧进行格式转换,得到目标数据格式的多个目标视频帧。
上述方案中,所述合成模块,还用于对所述多个目标视频帧进行编码及封装,得到添加有所述至少一个特效的目标视频文件。
本发明实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的视频中添加特效的方法。
本发明实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供的视频中添加特效的方法。
本发明实施例具有以下有益效果:
本发明实施例中,服务器通过模拟图形处理器,并运行模拟的图形处理器,分别根据各视频帧的帧数据及相应的动画帧的帧数据,通过模拟的图形处理器进行动画渲染,以得到渲染后的多个目标视频帧,如此,能够实现在服务器端完成针对视频的动画渲染,得到添加有特效的目标视频文件,以供终端直接解码播放,避免由终端进行动画渲染导致的卡顿;同时,服务器可从动画设计端直接获取动画文件,自动实现针对视频的特效添加,提高了视频中添加特效的处理效率,进而能够实现批量生产特效视频。
附图说明
图1是本发明实施例提供的视频中添加特效的***100的架构示意图;
图2是本发明实施例提供的电子设备的结构示意图;
图3是本发明实施例提供的视频中添加特效的方法的流程示意图;
图4是本发明实施例提供的渲染结果的示意图;
图5是本发明实施例提供的渲染结果的示意图;
图6是本发明实施例提供的播放目标视频文件的界面示意图;
图7是本发明实施例提供的视频中添加特效的方法的流程示意图;
图8是本发明实施例提供的视频中添加特效的方法的流程示意图;
图9是本发明实施例提供的渲染过程的流程示意图;
图10是本发明实施例提供的视频中添加特效的装置的组成结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)AE,Adobe After Effect的简称,一款强大的图形视频处理软件。
2)动画文件,设计师通过图形视频处理软件设计动画后,通过导出插件导出的动画格式的文件,如设计师通过AE设计动画后,将AE工程文件导出为动画格式的文件。
3)图形处理器,又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。
4)YUV,是一种颜色编码方法,“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
5)RGBA,代表红色(Red)、绿色(Green)、蓝色(Blue)和Alpha的色彩空间,也就是透明度/不透明度。
6)位图,亦称为点阵图像或栅格图像,是由称作像素(图片元素)的单个点组成的,这些点可以进行不同的排列和染色以构成图样。
参见图1,图1是本发明实施例提供的视频中添加特效的***100的架构示意图,为实现支撑一个示例性应用,终端400通过网络300连接服务器200(包括服务器200-1和服务器200-2),网络300可以是广域网或者局域网,又或者是二者的组合。
终端400,用于发送在视频中添加特效的请求,其中,请求中包括有待添加特效的视频文件;
服务器200-1,用于从请求中获取视频文件,并基于请求,从服务器200-2中获取为视频文件添加至少一个特效的动画文件;对视频文件进行解码,得到视频文件的多个视频帧的帧数据,并对动画文件进行解码,得到动画文件的多个动画帧的帧数据,视频帧与动画帧存在一一对应关系;模拟图形处理器,并运行模拟的图形处理器;分别根据各视频帧的帧数据及相应的动画帧的帧数据,通过模拟的图形处理器进行动画渲染,以得到多个目标视频帧;基于多个目标视频帧进行视频合成,得到添加有至少一个特效的目标视频文件;并将目标视频文件发送给终端400;
终端400,还用于播放目标视频文件;
服务器200-2,用于存储动画文件。
在实际实施时,设计师通过AE设计包含至少一个特效的动画后,AE工程文件导出为动画文件,并存储至服务器200-2中。
在实际应用中,服务器既可以为单独配置的支持各种业务的一个服务器,亦可以配置为一个服务器集群;终端可以为智能手机、平板电脑、笔记本电脑等各种类型的用户终端,还可以为可穿戴计算设备、个人数字助理(PDA)、台式计算机、蜂窝电话、媒体播放器、导航设备、游戏机、电视机、或者这些数据处理设备或其他数据处理设备中任意两个或多个的组合。
接下来对实施本发明实施例的视频中添加特效的方法的电子设备进行说明。参见图2,图2是本发明实施例提供的电子设备的结构示意图,图2所述的电子设备包括:处理器210、存储器250、网络接口220和用户接口230。电子设备中的各个组件通过总线***240耦合在一起。可理解,总线***240用于实现这些组件之间的连接通信。总线***240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线***240。
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。
存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本发明实施例描述的存储器250旨在包括任意适合类型的存储器。
在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作***251,包括用于处理各种基本***服务和执行硬件相关任务的***程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他计算设备,示例性的网络接口220包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
显示模块253,用于经由一个或多个与用户接口230相关联的输出装置231(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作***设备和显示内容和信息的用户接口);
输入处理模块254,用于对一个或多个来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本发明实施例提供的视频中添加特效的装置可以采用软件方式实现,图2示出了存储在存储器250中的视频中添加特效的装置255,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块2551、解码模块2552、模拟模块2553、渲染模块2554及合成模块2555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。
在另一些实施例中,本发明实施例提供的视频中添加特效的装置可以采用硬件方式实现,作为示例,本发明实施例提供的视频中添加特效的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的视频中添加特效的方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,ApplicationSpecific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable LogicDevice)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
基于上述对本发明实施例的视频中添加特效的***及电子设备的说明,接下来对本发明实施例提供的视频中添加特效的方法进行说明,图3为本发明实施例提供的视频中添加特效的方法的流程示意图,在一些实施例中,该视频中添加特效的方法由服务器实施,如通过图1中的服务器200-1实施,结合图1及图3,对本发明实施例提供的视频中添加特效的方法进行说明。
步骤301:获取视频文件、及用于为视频文件添加至少一个特效的动画文件。
这里,视频文件为呈现的主体内容,动画文件是设计师通过图形视频处理软件设计动画后,导出的动画格式文件,用于为主体内容添加至少一个特效。例如,视频文件可以是用户在一局游戏中的高光时刻视频片段,动画文件用于为高光时刻视频片段添加文字特效或贴图特效;或者,视频文件还可以是用户在一周游戏中的高光时刻视频片段,动画文件用于为高光时刻视频片段添加文字特效或贴图特效。
在实际应用中,视频文件可以是由终端发送给服务器的,即终端向服务器发送为视频文件添加特效的请求,请求中携带有视频文件,服务器中请求中获取视频文件。例如,终端在游戏过程中录制视频,当游戏结束后,终端将录制得到的视频文件发送给服务器,以使服务器为视频文件添加特效。视频文件也可以是预先存储在服务器的数据库中的,当接收到添加特效的指令时,服务器从数据库中获取视频文件。
相应的,动画文件可以存储在对应图形视频处理软件的服务器中,也即设计师在通过图形视频软件设计动画后,将导出的动画格式文件存储至对应图形视频处理软件的服务器中。用于添加特效的服务器在接收到添加特效的指令后,从对应图形视频处理软件的服务器中获取为视频文件添加至少一个特效的动画文件。动画文件可以存储在添加特效的服务器中,那么,服务器在接收到添加特效的指令时,直接从自身数据库中获取对应的动画特效。
步骤302:对视频文件进行解码,得到视频文件的多个视频帧的帧数据,并对动画文件进行解码,得到动画文件的多个动画帧的帧数据。
这里,视频帧与动画帧为一一对应的关系。
在实际实施时,服务器可以基于FFmpeg来实现对视频文件的解码。这里,FFmpeg是一套用来记录、转换数字音视、视频,并能将其转化为流的开源计算机程序,可以运行于Linux、Windows、Mac OS X、Android、iOS等平台。
在一些实施例中,服务器可以通过以下方式对视频文件进行解码:对视频文件进行解封装,得到视频文件中的视频流数据;对视频流数据进行解码,得到多个视频帧的帧数据;对多个视频帧的帧数据进行格式转换,得到可渲染的数据格式的帧数据。
在实际实施时,服务器可以通过FFmpeg实现对视频文件进行解封装,FFmpeg提供的av_seek_frame可以精确获取特性时间的视频数据或特性时间的音频数据。通过FFmpeg可以将视频文件中的视频数据解封装出来,得到数据类型为AVPacket的视频数据。
在一些实施例中,当视频文件中包括音频文件时,对视频文件进行解封装还会得到音频流数据。那么,通过FFmpeg可以将视频文件中的音频数据解封装出来,得到数据类型为AVPacket的音频数据。
在另一些实施例中,服务器可以另外获取音频文件,然后对获取到的音频文件进行解封装,得到音频流数据。在实际实施时,也可以通过FFmpeg将音频文件中的音频数据解封装出来,得到数据类型为AVPacket的音频数据。
需要说明的是,无论是音频文件中的音频流数据,还是视频文件中的音频流数据,均可以在目标视频文件生成时,添加至目标视频文件。
在一些实施例中,服务器可以通过以下方式对多个视频帧的帧数据进行格式转换:将所述多个视频帧的帧数据的数据格式,从YUV数据格式转换为RGBA数据格式。
这里,解码得到的视频帧的帧数据是YUV格式的,由于帧数据YUV格式为视频未压缩编码的裸数据,无法直接进行绘制渲染,在实际实施时,需要将YUV格式的数据转换为RGBA格式的数据。
在一些实施例中,动画文件可以为PAG动画文件,PAG动画文件是一种自研二进制文件格式的动画文件。在实际实施时,将PAG二进制文件反序列化为服务器可以操作的数据对象,解码出的数据结构可以参照PAG数据结构。
在实际应用中,设计师在通过图形视频处理软件设计动画后,将动画工程文件导出为PAG动画文件,其中,PAG动画文件有三种导出方式,包括:矢量导出、位图序列帧导出、视频序列帧导出,不同导出方式导出的文件所对应的数据格式不同。
需要说明的是,矢量导出是对动画图层结构的还原,包括各个图层的信息;位图序列帧导出是将动画的每一帧截取成一张图片,存储对应各图片的位图数据;视频序列帧是对位图序列帧的优化,即将截取的图片进行视频格式压缩。
在一些实施例中,当PAG动画文件是以位图序列帧导出方式导出时,服务器可以通过以下方式对动画文件进行解码:对动画文件进行解码,得到动画文件的关键帧的帧数据及多个非关键帧的帧数据;其中,关键帧的帧数据为位图数据,所述多个非关键帧的帧数据为相对于关键帧的差异位图数据。
这里,由于大部分动画具有连贯性、帧间差异小的特点,选取某一帧作为关键帧,后面的每帧数据与之进行对比,获取到差异位图的位置信息、宽高数据,并截取差异位图信息进行存储,能够降低文件大小。在进行动画渲染时,可以基于已经渲染过的对应关键帧的图形,通过区域渲染得到对应非关键帧的图形。
步骤303:模拟图形处理器,并运行模拟的图形处理器。
这里,由于动画渲染部分实现都会涉及到图形处理器(GPU,Graphics ProcessingUnit)渲染,而目前绝大部分服务器端都不含有GPU,因此需要在中央处理器(CPU,centralprocessing unit)上构建软件模拟GPU环境。
在实际实施时,可以采用Mesa方案或Google推出的SwiftShader方案。其中,Swiftshader模拟GPU的性能优于Mesa。
步骤304:分别根据各视频帧的帧数据及相应的动画帧的帧数据,通过模拟的图形处理器进行动画渲染,以得到多个目标视频帧。
由于相关技术中的Lottie方案的渲染是基于平台渲染API实现的,如Android平台基于Canvas,iOS平台基于CoreGraphics,因此其不支持服务器端渲染。在实际实施时,基于Skia提供的SkSurface类提供的接口实现动画渲染。其中,Skia是个2D向量图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现,可以实现平台无关性的绘制。
在一些实施例中,服务器模拟开放式图形库的环境;基于模拟的开放式图形库的环境,创建二维图形库的环境;基于二维图形库的环境,通过模拟的图形处理器,调用图形绘制接口,分别根据各视频帧的帧数据及相应的动画帧的帧数据,进行动画渲染,以得到渲染后的多个目标视频帧。
在实际实施时,开放式图形库可以是OpenGL,OpenGL是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口;二维图形库为Skia。
由于相关技术中的Lottie方案的渲染是基于平台渲染API实现的,如Android平台基于Canvas,iOS平台基于CoreGraphics,因此其不支持服务器端渲染。在实际实施时,基于Skia提供的SkSurface类提供的接口实现动画渲染。
在实际实施时,服务器通过SwiftShader模拟OpenGL环境,即通过SwiftShader的源码编译出libEGL.so和libGLESv2.so两个动态库,其API接口和OpenGL接口类似,可以参考OpenGL的初始化方式构建离屏渲染的OpenGL环境。
然后,创建Skia的GPU上下文环境。根据Skia提供的API接口创建Skia的sk_sp<const GrGLInterface>glInterface,然后创建Skia的GPU上下文环境:sk_sp<GrContext>terContext=GrContext::MakeGL(glInterface.get())。
由于Skia的相关绘制是在SkSurface中进行的,需要在创建Skia的GPU上下文环境后,根据Skia提供的接口创建SkSurface。接着,通过SkSurface获取对应的SkCanvas;通过SkCanvas,根据当前视频帧的帧数据和对应的动画帧的帧数据,进行动画渲染。
这里,依次根据各视频帧的帧数据及相应的动画帧的帧数据,进行动画渲染,直至完成全部数据的渲染。
在实际实施时,可以通过以下方式创建SkSurface:
static sk_sp<SkSurface>MakeFromBackendTexture(GrContext*context,
const GrBackendTexture&backendTexture,
GrSurfaceOrigin origin,int sampleCnt,
SkColorType colorType,
sk_sp<SkColorSpace>colorSpace,
const SkSurfaceProps*surfaceProps);
在一些实施例中,对每个视频帧的帧数据及相应的动画帧的帧数据执行以下操作:基于视频帧的帧数据,通过模拟的图形处理器,在空白画布中绘制对应视频帧的第一图形;获取视频帧对应的动画帧的第一位置信息;基于动画帧的帧数据,通过模拟的图形处理器,在绘制有第一图形的画布上对应第一位置信息的位置,绘制对应动画帧的第二图形,得到承载有对应目标视频帧的图形的画布。
在实际实施时,可以先对视频帧的帧数据进行渲染,再对动画帧的帧数据进行渲染,以将动画帧对应的图形覆盖在视频帧对应的图形之上。例如,图5为本发明实施例提供的渲染结果的示意图,参见图4,动画帧对应的图形为一个卡通人物,将动画帧对应的图形覆盖在视频帧对应的图形之上。
在一些实施例中,对每个视频帧的帧数据及相应的动画帧的帧数据执行以下操作:基于动画帧的帧数据,通过模拟的图形处理器,在空白画布中绘制对应动画帧的第三图形;获取动画帧对应的视频帧的第二位置信息;基于视频帧的帧数据,通过模拟的所述图形处理器,在绘制有第三图形的画布上对应第二位置信息的位置,绘制对应视频帧的第四图形,得到承载有对应目标视频帧的图形的画布。
在实际实施时,可以先对动画帧的帧数据进行渲染,再对视频帧的帧数据进行渲染,以将动画帧对应的图形覆盖在视频帧对应的图形之上。例如,图5本发明实施例提供的渲染结果的示意图,参见图5,动画帧对应的图形为一个边框,将视频帧对应的图形覆盖在动画帧对应的图形之上。
在一些实施例中,当渲染后的结果为承载有对应所述目标视频帧的图形的画布时,服务器还会对渲染得到的多个画布进行截屏处理,得到多个目标视频帧;对多个目标视频帧进行格式转换,得到目标数据格式的多个目标视频帧。
这里,在渲染后,对渲染的内容进行截屏处理,以得到多个目标视频帧;然后将目标视频帧的数据格式转换为位图,再根据位图,得到RGBA格式的目标视频帧。
在实际实施时,可以通过Skia中的以下接口实现截屏处理:sk_sp<SkImage>makeImageSnapshot();
然后,通过以下方式将目标视频帧的数据格式转换为位图(SkBitmap):
SkBitmap bitmap;
bitmap.allocN32Pixels(skImage->width(),skImage->height(),false);
skImage->readPixels(bitmap.info(),bitmap.getPixels(),bitmap.rowBytes(),0,0);
bitmap.setImmutable();
步骤305:基于多个目标视频帧进行视频合成,得到添加有至少一个特效的目标视频文件。
在一些实施例中,服务器可以通过以下方式进行视频合成:对多个目标视频帧进行编码及封装,得到添加有至少一个特效的目标视频文件。
在一些实施例中,服务器可以通过以下方式对多个目标视频帧进行编码及封装:将多个目标视频帧从RGBA格式转换为YUV格式;对YUV格式的多个目标视频帧进行编码,得到视频流数据;对视频流数据进行封装,得到目标视频文件。
在实际实施时,服务器通过FFmpeg提供的libswscale模块将目标视频帧从RGBA格式转换为YUV格式,转换后的数据结构可以为FFmpeg的AVFrame类;基于FFmpeg的libcodec模块,将YUV格式的多个目标视频帧压缩为x264、MPEG4等视频流数据;对视频流数据进行容器封装,封装为MP4、MOV、AVI等视频格式的视频文件。
需要说明的是,若视频文件中包括音频流数据,或另外获取了音频流数据,从视频文件或音频文件中解封装出音频流数据,在进行封装时,需要将视频流数据与音频流数据一起进行容器封装。
在一些实施例中,在得到目标视频文件之后,服务器可以将目标视频输出至终端,以使终端对目标视频文件进行播放。
例如,图6为本发明实施例提供的播放目标视频文件的界面示意图,参见图6,在游戏高光视频中添加了人物贴图特效以及文字特效,在合成视频时,在目标视频文件中添加了音频文件“XXX原声”中的音频流数据。
本发明实施例,通过模拟图形处理器,并运行模拟的图形处理器,分别根据各视频帧的帧数据及相应的动画帧的帧数据,通过模拟的图形处理器进行动画渲染,以得到渲染后的多个目标视频帧,如此,能够实现在服务器端实现动画的渲染,一方面,能够破解决终端进行动画渲染会存在卡顿等问题;另一方面,能够实现批量生产特效视频。
下面以在用户的游戏视频中添加相关特效为例,说明本发明实施例的视频中添加特效的方法。图7为本发明实施例提供的视频中添加特效的方法的流程示意图,参见图7,本发明实施例的视频中添加特效的方法包括:
步骤401:客户端录制游戏视频,生成游戏视频文件。
在实际实施时,游戏客户端接收到用户的录制操作,在游戏过程中,录制游戏视频,并生成游戏视频文件。
步骤402:客户端发送携带有游戏视频文件的特效添加请求至第一服务器。
步骤403:第一服务器基于特效添加请求,获取游戏视频文件,并发送相应的动画文件的获取请求至第一服务器。
这里,动画文件用于为主体内容添加至少一个特效。
步骤404:第二服务器发送动画文件至第一服务器。
这里,动画文件是设计师通过AE设计动画后,以位图序列帧导出方式导出的PAG动画文件。
步骤405:第一服务器通过Ffmpeg,对游戏视频文件进行解封装,得到视频流数据及音频流数据。
在实际实施时,FFmpeg提供的av_seek_frame可以精确获取特性时间的视频数据和特性时间的音频数据,通过FFmpeg可以将视频文件中的视频数据和音频数据解封装出来,得到数据类型为AVPacket的视频流数据和音频流数据。
步骤406:第一服务器对视频流数据进行解码,得到YUV数据格式的多个视频帧的帧数据。
步骤407:第一服务器对多个视频帧的帧数据进行格式转换,得到RGBA数据格式的多个视频帧的帧数据。
这里,解码得到的视频帧的帧数据是YUV格式的,由于帧数据YUV格式为视频未压缩编码的裸数据,无法直接进行绘制渲染,在实际实施时,需要将YUV格式的数据转换为RGBA格式的数据。
步骤408:第一服务器对动画文件进行解码,得到对应多个动画帧的帧数据。
在实际实施时,对动画文件进行解码,得到动画文件的关键帧的帧数据及多个非关键帧的帧数据;其中,关键帧的帧数据为位图数据,所述多个非关键帧的帧数据为相对于关键帧的差异位图数据。
步骤409:第一服务器模拟图形处理器,并运行模拟的图形处理器。
步骤410:第一服务器针对每个视频帧的帧数据,基于视频帧的帧数据,通过模拟的图形处理器,在空白画布中绘制对应视频帧的第一图形。
在实际实施时,可以通过Skia提供的SkSurface类提供的接口实现动画渲染。
步骤411:第一服务器获取视频帧对应的动画帧的位置信息。
步骤412:第一服务器基于动画帧的帧数据,通过模拟的图形处理器,在绘制有第一图形的画布上对应位置信息的位置,绘制动画帧的第二图形,得到承载有对应目标视频帧的图形的画布。
步骤413:第一服务器对渲染得到的多个画布进行截屏处理,得到多个目标视频帧。
步骤414:第一服务器对多个目标视频帧进行格式转换,得到YUV格式的多个目标视频帧。
步骤415:第一服务器将多个目标视频帧编码成目标视频流数据。
步骤416:第一服务器将目标视频流数据及音频流数据封装成MP4格式的目标视频文件。
步骤417:第一服务器输出目标视频文件至游戏客户端。
步骤418:客户端播放目标视频文件。
下面,将说明本发明实施例在一个实际的应用场景中的示例性应用。图8为本发明实施例提供的视频中添加特效的方法的流程示意图,参见图8,本发明实施例的视频中添加特效的方法包括:
步骤501:服务器获取视频文件及PAG动画文件。
需要说明的是,视频文件为呈现的主体内容,PAG动画文件用于为视频文件添加至少一个特效,该PAG动画文件是由设计师通过AE设计动画,然后导出为动画格式的文件。在一些实施例中,该PAG动画文件也可以是由设计师通过其他图形视频处理软件设计动画后导出得到的。
例如,视频文件可以是用户在一局游戏中的高光时刻视频片段,PAG动画文件用于为高光时刻视频片段添加文字特效或贴图特效;或者,视频文件还可以是用户在一周游戏中的高光时刻视频片段,PAG动画文件用于为高光时刻视频片段添加文字特效或贴图特效。
在一些实施例中,服务器还可以获取音频文件,音频文件用于为视频文件添加音频。
步骤502:对视频文件进行解码,得到多个视频帧的帧数据。
在实际实施时,服务器可以基于FFmpeg来实现对视频文件的解码。这里,FFmpeg是一套用来记录、转换数字音视、视频,并能将其转化为流的开源计算机程序,可以运行于Linux、Windows、Mac OS X、Android、iOS等平台。
其中,步骤502可以通过步骤5021至步骤5023实现,将结合各步骤进行说明。
步骤5021:对视频文件进行解封装,得到视频流数据。
需要说明的是,当视频文件中不包括音频文件时,对视频文件进行解封装仅得到视频流数据;当视频文件中包括音频文件时,对视频文件进行解封装得到音频流数据及视频流数据。
在一些实施例中,若服务器另外获取了音频文件,则需要对音频文件进行解封装,得到音频流数据。
在实际实施时,可以通过FFmpeg实现对视频文件或音频文件进行解封装,FFmpeg提供的av_seek_frame可以精确获取特性时间的视频数据或特性时间的音频数据。通过FFmpeg可以将视频文件或音频文件中的音频数据解封装出来,得到数据类型为AVPacket的音频数据;通过FFmpeg也可以将视频文件中的视频数据解封装出来,得到数据类型为AVPacket的视频数据。
步骤5022:对视频数据进行解码,得到多个视频帧的帧数据,帧数据的格式为YUV格式。
这里,YUV格式的帧数据为视频未压缩编码的裸数据。
步骤5023:将多个视频帧的帧数据的数据格式从YUV格式转换为RGBA格式。
这里,由于YUV格式的数据无法直接进行绘制渲染,需要通过转换模块将数据转换为RGBA格式的数据。
步骤503:对PAG动画文件进行解码,得到多个动画帧的帧数据。
这里,对PAG动画文件进行解码,解码出的数据结构可以为矢量、位图序列帧或视频序列帧。以位图序列帧为例,对PAG动画文件进行解码,得到动画的关键帧及多个非关键帧的位图数据。
步骤504:通过PAG SDK,分别根据多个视频帧的帧数据及其对应的动画帧的帧数据,进行动画渲染,以得到多个目标视频帧。
其中,步骤504可以通过步骤5041至步骤5042实现,将结合各步骤进行说明。
步骤5041:在CPU上构建软件模拟GPU环境。
这里,由于动画渲染部分实现都会涉及到GPU渲染,而目前绝大部分服务器端都不含有GPU,因此需要在CPU上构建软件模拟GPU环境。目前业界常用的方案有两种:Mesa和Google推出的SwiftShader方案。
表1为SwiftShader与Mesa性能对比表,参见表1,Swiftshader方案渲染单帧的平均耗时明显低于Mesa,可知,Swiftshader模拟GPU的性能远好于Mesa。
表1
Figure BDA0002360066480000191
步骤5042:通过Skia的接口,根据多个视频帧的帧数据及其对应的动画帧的帧数据,进行动画渲染。
由于相关技术中的Lottie方案的渲染是基于平台渲染API实现的,如Android平台基于Canvas,iOS平台基于CoreGraphics,因此其不支持服务器端渲染。本发明提供的PAGSDK的渲染方案是基于Skia的,Skia是个2D向量图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现,可以实现平台无关性的绘制。
在实际实施时,在服务器可以通过Skia提供的SkSurface类提供的接口,根据多个视频帧的帧数据及其对应的动画帧的帧数据,来进行图形绘制。
在一些实施例中,对每个视频帧的帧数据及相应的动画帧的帧数据分别执行以下操作:基于视频帧的帧数据,在空白画布中绘制对应视频帧的图形,然后,基于动画帧的帧数据,在绘制有对应视频帧的图形的画布上的预设位置,绘制对应动画帧的图形。如此,使得对应动画的图像覆盖在对应视频帧的图形之上。
在另一些实施例中,对每个视频帧的帧数据及相应的动画帧的帧数据分别执行以下操作:基于动画帧的帧数据,在空白画布中绘制对应动画帧的图形;然后,基于视频帧的帧数据,在绘制有对应动画帧的图形的画布上的预设位置,绘制对应视频帧的图形。如此,使得对应视频帧的图形覆盖在对应动画的图形之上。
步骤505:对多个目标视频帧进行编码,得到目标视频文件。
这里,在渲染后,对渲染的内容进行截屏处理,以得到多个目标视频帧(SkImage),然后将目标视频帧的数据格式转换为位图(SkBitmap),并根据位图,得到RGBA格式的目标视频帧。
在实际实施时,可以通过以下接口实现截屏处理:sk_sp<SkImage>makeImageSnapshot();
可以通过以下方式将目标视频帧的数据格式转换为位图(SkBitmap):
SkBitmap bitmap;
bitmap.allocN32Pixels(skImage->width(),skImage->height(),false);
skImage->readPixels(bitmap.info(),bitmap.getPixels(),bitmap.rowBytes(),0,0);
bitmap.setImmutable();
在实际实施时,其中,步骤505可以通过步骤5051至步骤5053实现,将结合各步骤进行说明。
步骤5051:将目标视频帧从RGBA格式转换为YUV格式。
这里,通过FFmpeg提供的libswscale模块将目标视频帧从RGBA格式转换为YUV格式,转换后的数据结构可以为FFmpeg的AVFrame类。
步骤5052:对YUV格式的多个目标视频帧进行编码,得到视频流数据。
这里,基于FFmpeg的libcodec模块,将YUV格式的多个目标视频帧压缩为x264、MPEG4等视频流数据。
步骤5053:对视频流数据进行封装,得到目标视频文件。
这里,对视频流数据进行容器封装,封装为MP4、MOV、AVI等视频格式的视频文件。
需要说明的是,若视频文件中包括音频流数据,或另外获取了音频流数据,从视频文件或音频文件中解封装出音频流数据,在进行封装时,需要将视频流数据与音频流数据一起进行容器封装。
步骤506:输出目标视频文件。
这里,将目标视频文件输出至终端,以使终端对目标视频文件进行播放。
下面对本发明实施例中的渲染过程进一步说明。图9为本发明实施例提供的渲染过程的流程示意图,参见图9,渲染过程包括:
步骤601:通过SwiftShader模拟OpenGL环境。
这里,通过SwiftShader的源码编译出libEGL.so和libGLESv2.so两个动态库,其API接口和OpenGL接口类似,可以参考OpenGL的初始化方式构建离屏渲染的OpenGL环境。
步骤602:创建Skia的GPU上下文环境。
这里,根据Skia提供的API接口创建Skia的sk_sp<const GrGLInterface>glInterface,然后创建Skia的GPU上下文环境:sk_sp<GrContext>terContext=GrContext::MakeGL(glInterface.get())。
步骤603:根据Skia提供的接口创建SkSurface。
这里,由于Skia的相关绘制是在SkSurface中进行的,需要在创建Skia的GPU上下文环境后,创建SkSurface。在实际实施时,可以通过以下方式创建SkSurface:
static sk_sp<SkSurface>MakeFromBackendTexture(GrContext*context,
const GrBackendTexture&backendTexture,
GrSurfaceOrigin origin,int sampleCnt,
SkColorType colorType,
sk_sp<SkColorSpace>colorSpace,
const SkSurfaceProps*surfaceProps);
步骤604:通过SkSurface获取对应的SkCanvas。
步骤605:通过SkCanvas,根据当前视频帧的帧数据和对应的动画帧的帧数据,进行动画渲染。
步骤606:通过SkSurface提供的API接口进行截屏处理,以得到目标视频帧。
步骤607:判断是否完成全部视频帧及其对应动画帧的帧数据的渲染,若是,结束流程;否则;返回步骤605。
这里,每次对一帧数据进行渲染,直至完成全部数据的渲染。
本发明,打通了AE动画设计到服务器端渲染的工作流,可以方面快捷的批量化生产特效动画视频,同时可以有效地解决低端机型动画渲染能力弱的问题。
下面继续说明本发明实施例提供的视频中添加特效的装置255的实施为软件模块的示例性结构,图10为本发明实施例提供的视频中添加特效的装置的组成结构示意图,参见图10,在一些实施例中,本发明实施例提供的视频中添加特效的装置包括:
获取模块2551,用于获取视频文件、及用于为所述视频文件添加至少一个特效的动画文件;
解码模块2552,用于对所述视频文件进行解码,得到所述视频文件的多个视频帧的帧数据,并对所述动画文件进行解码,得到所述动画文件的多个动画帧的帧数据,所述视频帧与所述动画帧存在一一对应关系;
模拟模块2553,用于模拟图形处理器,并运行模拟的所述图形处理器;
渲染模块2554,用于分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,通过模拟的所述图形处理器进行动画渲染,以得到多个目标视频帧;
合成模块2555,用于基于所述多个目标视频帧进行视频合成,得到添加有所述至少一个特效的目标视频文件。
在一些实施例中,所述解码模块2552,还用于对所述视频文件进行解封装,得到视频文件中的视频流数据;
对所述视频流数据进行解码,得到多个视频帧的帧数据;
对所述多个视频帧的帧数据进行格式转换,得到可渲染的数据格式的帧数据。
在一些实施例中,所述解码模块2552,还用于将所述多个视频帧的帧数据的数据格式,从YUV数据格式转换为RGBA数据格式。
在一些实施例中,所述解码模块2552,还用于对所述动画文件进行解码,得到动画文件的关键帧的帧数据及多个非关键帧的帧数据;
其中,所述关键帧的帧数据为位图数据,所述多个非关键帧的帧数据为相对于所述关键帧的差异位图数据。
在一些实施例中,所述渲染模块2554,还用于模拟开放式图形库的环境;
基于模拟的开放式图形库的环境,创建二维图形库的环境;
基于所述二维图形库的环境,通过模拟的所述图形处理器,调用图形绘制接口,分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,进行动画渲染,以得到渲染后的多个目标视频帧。
在一些实施例中,所述渲染模块2554,还用于对每个视频帧的帧数据及相应的动画帧的帧数据执行以下操作:
基于所述视频帧的帧数据,通过模拟的所述图形处理器,在空白画布中绘制对应所述视频帧的第一图形;
获取所述视频帧对应的动画帧的第一位置信息;
基于所述动画帧的帧数据,通过模拟的所述图形处理器,在绘制有所述第一图形的画布上对应所述第一位置信息的位置,绘制对应所述动画帧的第二图形,得到承载有对应所述目标视频帧的图形的画布。
在一些实施例中,所述渲染模块2554,还用于对每个视频帧的帧数据及相应的动画帧的帧数据分别执行以下操作:
基于所述动画帧的帧数据,通过模拟的所述图形处理器,在空白画布中绘制对应所述动画帧的第三图形;
获取所述动画帧对应的视频帧的第二位置信息;
基于所述视频帧的帧数据,通过模拟的所述图形处理器,在绘制有所述第三图形的画布上对应所述第二位置信息的位置,绘制对应所述视频帧的第四图形,得到承载有对应所述目标视频帧的图形的画布。
在一些实施例中,所述装置还包括:
截屏模块,用于对渲染得到的多个画布进行截屏处理,得到所述多个目标视频帧;
对所述多个目标视频帧进行格式转换,得到目标数据格式的多个目标视频帧。
在一些实施例中,所述合成模块2555,还用于对所述多个目标视频帧进行编码及封装,得到添加有所述至少一个特效的目标视频文件。
本发明实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本发明实施例提供的视频中添加特效的方法,例如,如图3示出的方法。
在一些实施例中,存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件***中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

Claims (10)

1.一种视频中添加特效的方法,其特征在于,所述方法包括:
获取视频文件、及用于为所述视频文件添加至少一个特效的动画文件;
对所述视频文件进行解码,得到所述视频文件的多个视频帧的帧数据,并对所述动画文件进行解码,得到所述动画文件的多个动画帧的帧数据,所述视频帧与所述动画帧存在一一对应关系;
模拟图形处理器,并运行模拟的所述图形处理器;
分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,通过模拟的所述图形处理器进行动画渲染,以得到多个目标视频帧;
基于所述多个目标视频帧进行视频合成,得到添加有所述至少一个特效的目标视频文件。
2.如权利要求1所述的方法,其特征在于,所述对所述视频文件进行解码,得到所述视频文件的多个视频帧的帧数据,包括:
对所述视频文件进行解封装,得到视频文件中的视频流数据;
对所述视频流数据进行解码,得到多个视频帧的帧数据;
对所述多个视频帧的帧数据进行格式转换,得到可渲染的数据格式的帧数据。
3.如权利要求2所述的方法,其特征在于,所述对所述多个视频帧的帧数据进行格式转换,得到可渲染的数据格式的帧数据,包括:
将所述多个视频帧的帧数据的数据格式,从亮度-色度YUV数据格式转换为红-绿-蓝-透明度RGBA数据格式。
4.如权利要求1所述的方法,其特征在于,所述对所述动画文件进行解码,得到所述动画文件的多个动画帧的帧数据,包括:
对所述动画文件进行解码,得到动画文件的关键帧的帧数据及多个非关键帧的帧数据;
其中,所述关键帧的帧数据为位图数据,所述非关键帧的帧数据为相对于所述关键帧的差异位图数据。
5.如权利要求1所述的方法,其特征在于,所述分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,通过模拟的所述图形处理器进行动画渲染,以得到渲染后的多个目标视频帧,包括:
模拟开放式图形库的环境;
基于模拟的开放式图形库的环境,创建二维图形库的环境;
基于所述二维图形库的环境,通过模拟的所述图形处理器,调用图形绘制接口,分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,进行动画渲染,以得到渲染后的多个目标视频帧。
6.如权利要求1所述的方法,其特征在于,所述分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,通过模拟的所述图形处理器进行动画渲染,包括:
对每个视频帧的帧数据及相应的动画帧的帧数据执行以下操作:
基于所述视频帧的帧数据,通过模拟的所述图形处理器,在空白画布中绘制对应所述视频帧的第一图形;
获取所述视频帧对应的动画帧的第一位置信息;
基于所述动画帧的帧数据,通过模拟的所述图形处理器,在绘制有所述第一图形的画布上对应所述第一位置信息的位置,绘制对应所述动画帧的第二图形,得到承载有对应所述目标视频帧的图形的画布。
7.如权利要求1所述的方法,其特征在于,所述分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,通过模拟的所述图形处理器进行动画渲染,包括:
对每个视频帧的帧数据及相应的动画帧的帧数据分别执行以下操作:
基于所述动画帧的帧数据,通过模拟的所述图形处理器,在空白画布中绘制对应所述动画帧的第三图形;
获取所述动画帧对应的视频帧的第二位置信息;
基于所述视频帧的帧数据,通过模拟的所述图形处理器,在绘制有所述第三图形的画布上对应所述第二位置信息的位置,绘制对应所述视频帧的第四图形,得到承载有对应所述目标视频帧的图形的画布。
8.如权利要求1所述的方法,其特征在于,所述动画渲染的结果为承载有对应所述目标视频帧的图形的画布,所述方法还包括:
对渲染得到的多个画布进行截屏处理,得到所述多个目标视频帧;
对所述多个目标视频帧进行格式转换,得到目标数据格式的多个目标视频帧。
9.如权利要求1所述的方法,其特征在于,所述基于所述多个目标视频帧进行视频合成,得到添加有所述至少一个特效的目标视频文件,包括:
对所述多个目标视频帧进行视频编码及封装,得到添加有所述至少一个特效的目标视频文件。
10.一种视频中添加特效的装置,其特征在于,所述装置包括:
获取模块,用于获取视频文件、及用于为所述视频文件添加至少一个特效的动画文件;
解码模块,用于对所述视频文件进行解码,得到所述视频文件的多个视频帧的帧数据,并对所述动画文件进行解码,得到所述动画文件的多个动画帧的帧数据,所述视频帧与所述动画帧存在一一对应关系;
模拟模块,用于模拟图形处理器,并运行模拟的所述图形处理器;
渲染模块,用于分别根据各所述视频帧的帧数据及相应的动画帧的帧数据,通过模拟的所述图形处理器进行动画渲染,以得到多个目标视频帧;
合成模块,用于基于所述多个目标视频帧进行视频合成,得到添加有所述至少一个特效的目标视频文件。
CN202010019167.8A 2020-01-08 2020-01-08 视频中添加特效的方法及装置 Active CN111193876B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010019167.8A CN111193876B (zh) 2020-01-08 2020-01-08 视频中添加特效的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010019167.8A CN111193876B (zh) 2020-01-08 2020-01-08 视频中添加特效的方法及装置

Publications (2)

Publication Number Publication Date
CN111193876A true CN111193876A (zh) 2020-05-22
CN111193876B CN111193876B (zh) 2021-09-07

Family

ID=70709939

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010019167.8A Active CN111193876B (zh) 2020-01-08 2020-01-08 视频中添加特效的方法及装置

Country Status (1)

Country Link
CN (1) CN111193876B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111669623A (zh) * 2020-06-28 2020-09-15 腾讯科技(深圳)有限公司 视频特效的处理方法、装置以及电子设备
CN111726545A (zh) * 2020-06-22 2020-09-29 广州市百果园信息技术有限公司 素材文件处理方法、装置、计算机设备及存储介质
CN111899322A (zh) * 2020-06-29 2020-11-06 腾讯科技(深圳)有限公司 视频处理方法、动画渲染sdk和设备及计算机存储介质
CN111957039A (zh) * 2020-09-04 2020-11-20 Oppo(重庆)智能科技有限公司 一种游戏特效实现方法、装置及计算机可读存储介质
CN112738624A (zh) * 2020-12-23 2021-04-30 北京达佳互联信息技术有限公司 用于视频的特效渲染的方法和装置
CN113111035A (zh) * 2021-04-09 2021-07-13 上海掌门科技有限公司 特效视频生成方法和设备
CN113422912A (zh) * 2021-05-25 2021-09-21 深圳市大头兄弟科技有限公司 短视频的交互生成方法、装置、设备及存储介质
CN114173192A (zh) * 2021-12-09 2022-03-11 广州阿凡提电子科技有限公司 一种基于导出视频添加动态特效的方法及***
WO2022088783A1 (zh) * 2020-10-28 2022-05-05 北京达佳互联信息技术有限公司 视频制作方法及装置
CN114501079A (zh) * 2022-01-29 2022-05-13 京东方科技集团股份有限公司 用于对多媒体数据进行处理的方法及相关设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7100192B1 (en) * 1997-09-05 2006-08-29 Hitachi, Ltd. Method of and an apparatus for controlling a web server, a web server control program, and a storage medium on which the web server control program is stored
CN102447873A (zh) * 2010-10-13 2012-05-09 张明 哈哈视频网络视频聊天娱乐辅助***
CN104954848A (zh) * 2015-05-12 2015-09-30 乐视致新电子科技(天津)有限公司 智能终端的显示图形用户界面的控制方法及装置
CN105933724A (zh) * 2016-05-23 2016-09-07 福建星网视易信息***有限公司 视频制作方法、装置及***
CN108495174A (zh) * 2018-04-09 2018-09-04 深圳格莱珉文化传播有限公司 一种h5页面效果生成视频文件的方法及***
US10133705B1 (en) * 2015-01-19 2018-11-20 Snap Inc. Multichannel system
CN110266971A (zh) * 2019-05-31 2019-09-20 上海萌鱼网络科技有限公司 一种短视频制作方法和***

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7100192B1 (en) * 1997-09-05 2006-08-29 Hitachi, Ltd. Method of and an apparatus for controlling a web server, a web server control program, and a storage medium on which the web server control program is stored
CN102447873A (zh) * 2010-10-13 2012-05-09 张明 哈哈视频网络视频聊天娱乐辅助***
US10133705B1 (en) * 2015-01-19 2018-11-20 Snap Inc. Multichannel system
CN104954848A (zh) * 2015-05-12 2015-09-30 乐视致新电子科技(天津)有限公司 智能终端的显示图形用户界面的控制方法及装置
CN105933724A (zh) * 2016-05-23 2016-09-07 福建星网视易信息***有限公司 视频制作方法、装置及***
CN108495174A (zh) * 2018-04-09 2018-09-04 深圳格莱珉文化传播有限公司 一种h5页面效果生成视频文件的方法及***
CN110266971A (zh) * 2019-05-31 2019-09-20 上海萌鱼网络科技有限公司 一种短视频制作方法和***

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111726545A (zh) * 2020-06-22 2020-09-29 广州市百果园信息技术有限公司 素材文件处理方法、装置、计算机设备及存储介质
CN111669623A (zh) * 2020-06-28 2020-09-15 腾讯科技(深圳)有限公司 视频特效的处理方法、装置以及电子设备
CN111899322A (zh) * 2020-06-29 2020-11-06 腾讯科技(深圳)有限公司 视频处理方法、动画渲染sdk和设备及计算机存储介质
CN111899322B (zh) * 2020-06-29 2023-12-12 腾讯科技(深圳)有限公司 视频处理方法、动画渲染sdk和设备及计算机存储介质
CN111957039A (zh) * 2020-09-04 2020-11-20 Oppo(重庆)智能科技有限公司 一种游戏特效实现方法、装置及计算机可读存储介质
WO2022088783A1 (zh) * 2020-10-28 2022-05-05 北京达佳互联信息技术有限公司 视频制作方法及装置
CN112738624A (zh) * 2020-12-23 2021-04-30 北京达佳互联信息技术有限公司 用于视频的特效渲染的方法和装置
CN112738624B (zh) * 2020-12-23 2022-10-25 北京达佳互联信息技术有限公司 用于视频的特效渲染的方法和装置
CN113111035A (zh) * 2021-04-09 2021-07-13 上海掌门科技有限公司 特效视频生成方法和设备
CN113422912A (zh) * 2021-05-25 2021-09-21 深圳市大头兄弟科技有限公司 短视频的交互生成方法、装置、设备及存储介质
CN114173192A (zh) * 2021-12-09 2022-03-11 广州阿凡提电子科技有限公司 一种基于导出视频添加动态特效的方法及***
CN114501079A (zh) * 2022-01-29 2022-05-13 京东方科技集团股份有限公司 用于对多媒体数据进行处理的方法及相关设备

Also Published As

Publication number Publication date
CN111193876B (zh) 2021-09-07

Similar Documents

Publication Publication Date Title
CN111193876B (zh) 视频中添加特效的方法及装置
CN106611435B (zh) 动画处理方法和装置
CN109600666B (zh) 游戏场景中的视频播放方法、装置、介质以及电子设备
CN111899322B (zh) 视频处理方法、动画渲染sdk和设备及计算机存储介质
CN105354872B (zh) 一种基于3d网页游戏的渲染引擎、实现方法及制作工具
CN111899155B (zh) 视频处理方法、装置、计算机设备及存储介质
CN105468353B (zh) 一种界面动画的实现方法及装置、移动终端和电脑终端
US9077970B2 (en) Independent layered content for hardware-accelerated media playback
US20220132147A1 (en) Image Rendering and Coding Method and Related Apparatus
CN110782387B (zh) 图像处理方法、装置、图像处理器及电子设备
CN109327698A (zh) 动态预览图的生成方法、***、介质和电子设备
KR102292789B1 (ko) 디스플레이장치 및 그 제어방법
CN110853121B (zh) 基于ae的跨平台数据处理的方法及装置
CN110213640B (zh) 虚拟物品的生成方法、装置及设备
CN109993817A (zh) 一种动画的实现方法和终端
CN114598937A (zh) 动画视频生成、播放方法及装置
CN112700519A (zh) 动画展示方法、装置、电子设备及计算机可读存储介质
CN104008565A (zh) 一种利用cocos2d-x以及HGE引擎播放Flash位图动画的***和方法
CN114222185B (zh) 视频播放方法、终端设备及存储介质
CN117065357A (zh) 媒体数据处理方法、装置、计算机设备和存储介质
WO2014024255A1 (ja) 端末および動画再生プログラム
CN114307143A (zh) 图像处理方法及装置、存储介质、计算机设备
WO2024051394A1 (zh) 视频处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品
CN115250335A (zh) 视频处理方法、装置、设备及存储介质
CN106331834B (zh) 一种多媒体数据处理方法及其设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant