视频处理方法和装置与流程

文档序号:15625547发布日期:2018-10-09 22:53阅读:124来源:国知局

本发明涉及视频处理技术领域,特别是涉及一种视频处理方法和装置。



背景技术:

在目前的视频应用程序中,视频特效功能(例如贴纸,视频主题等)已经是一个常见并且必备的功能了。

但是现在的视频特效功能的开放中,普遍是各自平台做各自平台的效果。具体而言,安卓系统和ios系统作为移动终端的两大系统,在源代码开放上无法兼容,那么在针对这两个平台作视频特效的开放时,就需要每个平台的开发人员需要跟视频特效的设计师去做对接,然后再根据自己平台所提供的api接口看哪一些视频效果可以做,哪一些视频特效效果不可以做,最后再去调整ui效果。也就是说,在开放同一视频特效时,面对两个终端系统,需要动员两组人力和物力来对同一件事情作处理,整个流程下来费时费力;另外,由于两个系统平台的api接口不同,还会造成同一特效在两种系统上展现的效果不统一,造成用户体验的下降。

由此可见,现有技术中在对视频进行增加特效的处理时,普遍存在着开发时间成本较高、人力成本较高以及不同系统平台的视频特效效果不统一的问题。



技术实现要素:

本发明实施例所要解决的技术问题是提供一种视频处理方法和装置,以解决现有技术中在对视频进行增加特效的处理时,所存在的开发时间成本较高、人力成本较高以及不同系统平台的视频特效效果不统一的问题。

为了解决上述问题,根据本发明的一个方面,本发明公开了一种视频处理方法,包括:

根据下载的视频特效的配置文件,构造用于opengles平台的视频特效的特效素材信息以及每个视频特效的配置信息与视频帧的时间戳之间的对应关系;

若opengles平台接收到一个视频帧,则在所述对应关系中查找接收的视频帧的时间戳对应的至少一个目标视频特效的配置信息;

在所述特效素材信息中确定所述至少一个目标视频特效的目标特效素材;

根据所述至少一个目标视频特效的配置信息以及所述目标特效素材,对接收的所述视频帧增加至少一个目标视频特效并进行播放。

根据本发明的另一方面,本发明还公开了一种视频处理装置,包括:

构造模块,用于根据下载的视频特效的配置文件,构造用于opengles平台的视频特效的特效素材信息以及每个视频特效的配置信息与视频帧的时间戳之间的对应关系;

查找模块,用于若opengles平台接收到一个视频帧,则在所述对应关系中查找接收的视频帧的时间戳对应的至少一个目标视频特效的配置信息;

确定素材模块,用于在所述特效素材信息中确定所述至少一个目标视频特效的目标特效素材;

增加特效模块,用于根据所述至少一个目标视频特效的配置信息以及所述目标特效素材,对接收的所述视频帧增加至少一个目标视频特效并进行播放。

与现有技术相比,本发明实施例包括以下优点:

本发明实施例可以利用安卓系统和ios系统都具有的opengles平台来进行视频特效的开发,从而针对两个平台系统仅需开发一套代码,可以由两份代码、两份对接工作变成了一份代码一份对接工作,大大的降低了成本,增加了效率;并且由于针对两个系统平台都是对opengles进行的开发和利用,所用api接口也相同,从而不会出现两个系统平台的视频特效效果不同的问题,提升用户体验。

附图说明

图1是本发明的一种视频处理方法实施例的步骤流程图;

图2是本发明的一种视频处理装置实施例的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

参照图1,示出了本发明的一种视频处理方法实施例的步骤流程图,在介绍本发明实施例的视频处理方法的具体步骤之前,首先,先对本发明使用的opengles(openglforembeddedsystems)平台做出以下介绍:

opengles平台用在嵌入式设备中,是进行图形图像绘制的一套协议;opengles是opengl三维图形api的子集,专门针对手机、pda和游戏主机等嵌入式设备而设计。并且,opengles是跨平台的,功能完善的2d和3d图形应用程序接口api,主要针对多种嵌入式系统专门设计——包括控制台、移动电话、手持设备、家电设备和汽车。它由精心定义的桌面opengl子集组成,创造了软件与图形加速间灵活强大的底层交互接口。opengles包含浮点运算和定点运算系统描述以及egl针对便携设备的本地视窗系统规范。

而发明人在实现本发明的过程中发现,无论是android系统还是ios系统,它们系统的底层都支持opengles。因此为了避免对两个系统平台分别进行视频特效的开发所存在的开发时间成本较高、人力成本较高以及不同系统平台的视频特效效果不统一的问题。这里,本发明实施例基于c和c++语言,利用opengl技术,从而设计并实现出了一套视频特效框架可以运行在android和ios两个系统平台上,实现给视频增加特效(例如贴纸、视频主题等)的功能。在开发过程中,只需要开发opengles的开发人员去和视频特效的设计师、ui设计师、以及后期的ui细节调整工作去做接口人,这样,在系统的不同层面的沟通都统一到一个开发人员,节省了工作量和成本并增加了开发效率。

而利用上述opengles平台进行视频处理方法实施例的步骤具体如下:

步骤101,根据下载的视频特效的配置文件,构造用于opengles平台的视频特效的特效素材信息以及每个视频特效的配置信息与视频帧的时间戳之间的对应关系;

其中,用户可以从视频特效应用商店手动下载热更新的视频特效的配置文件,那么在下载了配置文件的压缩包后,经过解压缩可以得到解压缩后的配置文件(即多个文件目录以及文件目录内的信息);

然后,本发明实施例就可以依据解压后的配置文件来构造用于opengles平台的视频特效的特效素材信息(可以涉及多个特效)以及每个视频特效的配置信息与视频帧的时间戳之间的对应关系。

例如:片头特效有一个片头特效的配置信息与视频帧的时间戳之间的对应关系;片中特效有一个片中特效的配置信息与视频帧的时间戳之间的对应关系;片尾特效有一个片尾特效的配置信息与视频帧的时间戳之间的对应关系。

步骤102,若opengles平台接收到一个视频帧,则在所述对应关系中查找接收的视频帧的时间戳对应的至少一个目标视频特效的配置信息;

那么,当opengles平台接收到一个视频帧时,就可以在构造的上述对应关系中查找是否存在对应于所接收到的视频帧的时间戳的视频特效的配置信息;如果存在对应的配置信息,则确定接收的该视频帧需要作特效处理,可以增加相应的特效。

步骤103,在所述特效素材信息中确定所述至少一个目标视频特效的目标特效素材;

而在对该视频帧增加特效时,不仅需要视频特效的配置信息,还需要该视频特效所用的素材,例如静态图、动态图等素材。其中,上述构造的特效素材信息包含所下载的视频特效压缩包中所有可用的素材,以及该素材对应于哪个特效的信息,因此,可以在特效素材信息中确定上述至少一个目标视频特效所对应的目标特效素材。

步骤104,根据所述至少一个目标视频特效的配置信息以及所述目标特效素材,对接收的所述视频帧增加至少一个目标视频特效并进行播放。

最后,就可以根据至少一个目标视频特效的配置信息以及目标特效素材来对接收的视频帧进行至少一个目标视频特效的绘制,从对绘制了视频特效的视频帧进行播放。

借助于本发明上述实施例的技术方案,本发明实施例可以利用安卓系统和ios系统都具有的opengles平台来进行视频特效的开发,从而针对两个平台系统仅需开发一套代码,可以由两份代码、两份对接工作变成了一份代码一份对接工作,大大的降低了成本,增加了效率;并且由于针对两个系统平台都是对opengles进行的开发和利用,所用api接口也相同,从而不会出现两个系统平台的视频特效效果不同的问题,提升用户体验。

在上述实施例的基础上,本实施例进一步论述本发明实施例的视频处理方法,具体步骤如下:

首先,创建帧缓存对象(fbo,framebufferobject);

其中,fbo类似于一块存储区域。

然后,将所述fbo绑定至所述opengles平台中;

接着,根据下载的视频特效的配置文件,构造用于所述opengles平台的特效素材信息以及过滤器(filter)集合;

其中,每个filter包含一个视频特效的配置信息与视频帧的时间戳之间的对应关系,且不同的filter对应不同的视频特效。

具体而言,当用户在视频特效商店下载了热更新的视频特效压缩包(例如包括n个特效)到例如移动终端后,本发明实施例可以对该视频特效压缩包进行自动解压缩,从而得到配置文件的文件目录以及目录中的具体配置信息和素材信息;

这里,本发明实施例就可以利用解压缩后的配置文件来构造用于opengles平台(即能够在opengles上使用)的特效素材信息(例如各种图片、各种装饰等)以及filter集合,这里的filter集合称为model,其中,每个filter对应一个视频特效,并且,不同的filter对应的视频特效不同。例如filter1对应特效1,filter2对应特效2;而每个filter都包含着这样的一种定制信息:即,这个特效应该在哪一帧的视频帧上显示、以及如何显示的定制信息。具体而言,filter1包含特效1的配置信息与0s~3s之间的对应关系,即特效1应用到时间戳为0s~3s的视频帧;filter2包含特效2的配置信息与0s~5s之间的对应关系,即特效2应用到时间戳为0s~5s的视频帧。

在完成上述构造步骤,如果所述opengles平台接收到一个视频帧,则将上述每个视频特效的配置信息与视频帧的时间戳之间的对应关系分别转换为所述opengles平台能够识别的顶点坐标。

即,将filter集合中的每个filter都转换为opengles平台能够识别的顶点坐标。

需要注意的是,opengles平台所接收到的视频帧可以是采集自摄像头的视频帧也可以是来自视频解码器的,即本发明对于视频帧的来源并不作具体限制。

并且,在所述opengles平台接收到一个视频帧时,则获取所述视频帧的纹理id,并将所述纹理id绘制于所述fbo上。

其中,纹理id表示的也是该接收的该视频帧,只是在opengles平台中,以纹理id来对视频帧作分辨。

那么在将纹理id绘制于fbo上后,就可以在所述对应关系中查找对应于接收的视频帧的时间戳的至少一个目标视频特效的配置信息;

即,首先确定接收的该视频帧的时间戳,例如为2s,那么就可以在filter集合中遍历来查找时间戳包含2s的filter,这里,filter1和filter2都包含2s,因此,filter1和filter2对应的两个特效都可以应用到该接收的视频帧上。

然后,再在所述特效素材信息中确定所述至少一个目标视频特效的目标特效素材;

即,这里的目标视频特效包括特效1和特效2,再在特效素材信息中查找特效1和特效2所用的特效素材。

最后,根据所述至少一个目标视频特效的配置信息以及所述目标特效素材,对接收的所述视频帧增加至少一个目标视频特效并进行播放。

在一个实施例中,在实现该步骤时,opengles会将所述fbo上的所述纹理id切换至一个空纹理id;根据所述至少一个目标视频特效的配置信息以及所述目标特效素材,将所述至少一个目标视频特效绘制于所述fbo的所述空纹理id上,得到处理后的空纹理id;解除所述fbo与所述opengles平台的绑定关系;将所述处理后的空纹理id输出至接收的所述视频帧上进行播放。

具体而言,opengles会创建effect对象,并将所述fbo上的所述纹理id切换至一个空纹理id;然后控制effect对象来执行根据所述至少一个目标视频特效的配置信息以及所述目标特效素材,将所述至少一个目标视频特效绘制于所述fbo的所述空纹理id上,得到处理后的空纹理id的步骤;

其中,在effect对象的具体执行过程中,effect对象会根据遍历到的filter1和filter2的信息(这里为转换后的顶点坐标)以及特效1和特效2所用的特效素材来对fbo上的空纹理id进行特效的绘制,从而得到具有特效1和特效2的空纹理id。

需要注意的是,由于创建一个effect对象需要编译两个shader,这样比较耗时,因此,本发明实施例设计了一个用于缓存已经建立的effect对象的cache缓冲区,而在完成所有帧视频的特效处理后,最终会将cache清空。

这样,在接收到下一帧的视频时,在利用effect来绘制该视频帧的特效时,无需重复创建effect对象,而只需从cache取出已经创建好的effect对象即可,减少视频特效的处理时间。

然后,opengles平台解除该fbo与自己的绑定关系;

最后,opengles平台将绘制了特效1和特效2的空纹理id输出至所接收的那个视频帧上进行播放,从而实现对这一视频帧增加特效的方案。

而本发明实施例会持续不断的接收下一视频帧,处理方法和上述技术方案类似,如此循环,在此不再赘述。

另外,需要注意的是,在本发明实施例中,如果opengles平台又收到了另一帧的视频帧,本发明实施例不会不断的切换fbo,而是利用预先创建的同一个fbo,循环切换所接收的视频帧的纹理id而已。

即,在所述opengles平台接收到不同的视频帧时,则将绘制于所述fbo的纹理id切换至所接收的视频帧的纹理id。

这样,可以减小不同视频帧的处理间隙,使各个视频帧的特效增加处理得到无缝链接,提升用户的观看体验。

本发明实施例的视频处理方法可以跨平台(android、ios)的运行在两个平台上,大大的降低了开发的时间成本与人力成本,提高了整个开发的效率;并且可以支持视频特效的热更新(当开发出新的特效之后,用户可以在进行下载,无需升级客户端就可以使用到最新的特效)。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

与上述本发明实施例所提供的方法相对应,参照图2,示出了本发明一种视频处理装置实施例的结构框图,具体可以包括如下模块:

构造模块21,用于根据下载的视频特效的配置文件,构造用于opengles平台的视频特效的特效素材信息以及每个视频特效的配置信息与视频帧的时间戳之间的对应关系;

查找模块22,用于若opengles平台接收到一个视频帧,则在所述对应关系中查找接收的视频帧的时间戳对应的至少一个目标视频特效的配置信息;

确定素材模块23,用于在所述特效素材信息中确定所述至少一个目标视频特效的目标特效素材;

增加特效模块24,用于根据所述至少一个目标视频特效的配置信息以及所述目标特效素材,对接收的所述视频帧增加至少一个目标视频特效并进行播放。

借助于本发明上述实施例的技术方案,本发明实施例可以利用安卓系统和ios系统都具有的opengles平台来进行视频特效的开发,从而针对两个平台系统仅需开发一套代码,可以由两份代码、两份对接工作变成了一份代码一份对接工作,大大的降低了成本,增加了效率;并且由于针对两个系统平台都是对opengles进行的开发和利用,所用api接口也相同,从而不会出现两个系统平台的视频特效效果不同的问题,提升用户体验。

其中,在一个实施例中,所述构造模块21包括:

构造子模块(未示出),用于根据下载的视频特效的配置文件,构造用于所述opengles平台的特效素材信息以及过滤器filter集合,其中,每个filter包含一个视频特效的配置信息与视频帧的时间戳之间的对应关系,且不同的filter对应不同的视频特效。

可选地,在一个实施例中,所述装置还包括如下未示出的模块:

转换模块,用于若所述opengles平台接收到一个视频帧,则将所述每个视频特效的配置信息与视频帧的时间戳之间的对应关系转换为所述opengles平台能够识别的顶点坐标。

可选地,在一个实施例中,所述装置还包括如下未示出的模块:

创建模块,用于创建fbo;

绑定模块,用于将所述fbo绑定至所述opengles平台中。

可选地,在一个实施例中,所述装置还包括如下未示出的模块:

获取纹理模块,用于若所述opengles平台接收到一个视频帧,则获取所述视频帧的纹理id;

绘制模块,用于将所述纹理id绘制于所述fbo上。

可选地,在一个实施例中,所述增加特效模块包括如下未示出的子模块:

切换纹理子模块,用于将所述fbo上的所述纹理id切换至一个空纹理id;

绘制子模块,用于根据所述至少一个目标视频特效的特效素材,在所述fbo的所述空纹理id上绘制至少一个目标视频特效,得到处理后的空纹理id;

解除绑定子模块,用于解除所述fbo与所述opengles平台的绑定关系;

播放子模块,用于将所述处理后的空纹理id输出至接收的所述视频帧上进行播放。

可选地,所述切换纹理子模块,还用于在所述opengles平台接收到不同的视频帧时,则将绘制于所述fbo的纹理id切换至所接收的视频帧的纹理id。

本发明实施例的视频处理方法可以跨平台(android、ios)的运行在两个平台上,大大的降低了开发的时间成本与人力成本,提高了整个开发的效率;并且可以支持视频特效的热更新(当开发出新的特效之后,用户可以在进行下载,无需升级客户端就可以使用到最新的特效)。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种视频处理方法和一种视频处理装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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